summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/lib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perl5/lib')
-rw-r--r--contrib/perl5/lib/AnyDBM_File.pm92
-rw-r--r--contrib/perl5/lib/AutoLoader.pm325
-rw-r--r--contrib/perl5/lib/AutoSplit.pm487
-rw-r--r--contrib/perl5/lib/Benchmark.pm798
-rw-r--r--contrib/perl5/lib/CPAN.pm6992
-rw-r--r--contrib/perl5/lib/CPAN/FirstTime.pm671
-rw-r--r--contrib/perl5/lib/CPAN/Nox.pm44
-rw-r--r--contrib/perl5/lib/Carp.pm124
-rw-r--r--contrib/perl5/lib/Carp/Heavy.pm247
-rw-r--r--contrib/perl5/lib/Class/Struct.pm602
-rw-r--r--contrib/perl5/lib/Cwd.pm457
-rw-r--r--contrib/perl5/lib/DB.pm802
-rw-r--r--contrib/perl5/lib/Devel/SelfStubber.pm139
-rw-r--r--contrib/perl5/lib/DirHandle.pm72
-rw-r--r--contrib/perl5/lib/Dumpvalue.pm626
-rw-r--r--contrib/perl5/lib/English.pm194
-rw-r--r--contrib/perl5/lib/Env.pm233
-rw-r--r--contrib/perl5/lib/Exporter.pm313
-rw-r--r--contrib/perl5/lib/Exporter/Heavy.pm225
-rw-r--r--contrib/perl5/lib/ExtUtils/Command.pm213
-rw-r--r--contrib/perl5/lib/ExtUtils/Embed.pm490
-rw-r--r--contrib/perl5/lib/ExtUtils/Install.pm437
-rw-r--r--contrib/perl5/lib/ExtUtils/Installed.pm273
-rw-r--r--contrib/perl5/lib/ExtUtils/Liblist.pm787
-rw-r--r--contrib/perl5/lib/ExtUtils/MM_Cygwin.pm123
-rw-r--r--contrib/perl5/lib/ExtUtils/MM_OS2.pm134
-rw-r--r--contrib/perl5/lib/ExtUtils/MM_Unix.pm3858
-rw-r--r--contrib/perl5/lib/ExtUtils/MM_VMS.pm2309
-rw-r--r--contrib/perl5/lib/ExtUtils/MM_Win32.pm957
-rw-r--r--contrib/perl5/lib/ExtUtils/MakeMaker.pm2096
-rw-r--r--contrib/perl5/lib/ExtUtils/Manifest.pm463
-rw-r--r--contrib/perl5/lib/ExtUtils/Mkbootstrap.pm103
-rw-r--r--contrib/perl5/lib/ExtUtils/Mksymlists.pm302
-rw-r--r--contrib/perl5/lib/ExtUtils/Packlist.pm289
-rwxr-xr-xcontrib/perl5/lib/ExtUtils/inst139
-rw-r--r--contrib/perl5/lib/ExtUtils/testlib.pm26
-rw-r--r--contrib/perl5/lib/ExtUtils/typemap294
-rwxr-xr-xcontrib/perl5/lib/ExtUtils/xsubpp1763
-rw-r--r--contrib/perl5/lib/Fatal.pm186
-rw-r--r--contrib/perl5/lib/File/Basename.pm283
-rw-r--r--contrib/perl5/lib/File/CheckTree.pm151
-rw-r--r--contrib/perl5/lib/File/Compare.pm182
-rw-r--r--contrib/perl5/lib/File/Copy.pm378
-rw-r--r--contrib/perl5/lib/File/DosGlob.pm254
-rw-r--r--contrib/perl5/lib/File/Find.pm773
-rw-r--r--contrib/perl5/lib/File/Path.pm251
-rw-r--r--contrib/perl5/lib/File/Spec.pm93
-rw-r--r--contrib/perl5/lib/File/Spec/Epoc.pm378
-rw-r--r--contrib/perl5/lib/File/Spec/Functions.pm97
-rw-r--r--contrib/perl5/lib/File/Spec/Mac.pm394
-rw-r--r--contrib/perl5/lib/File/Spec/OS2.pm62
-rw-r--r--contrib/perl5/lib/File/Spec/Unix.pm458
-rw-r--r--contrib/perl5/lib/File/Spec/VMS.pm505
-rw-r--r--contrib/perl5/lib/File/Spec/Win32.pm355
-rw-r--r--contrib/perl5/lib/File/Temp.pm1863
-rw-r--r--contrib/perl5/lib/File/stat.pm115
-rw-r--r--contrib/perl5/lib/FileCache.pm78
-rw-r--r--contrib/perl5/lib/FileHandle.pm262
-rw-r--r--contrib/perl5/lib/FindBin.pm169
-rw-r--r--contrib/perl5/lib/Getopt/Long.pm1890
-rw-r--r--contrib/perl5/lib/Getopt/Std.pm176
-rw-r--r--contrib/perl5/lib/I18N/Collate.pm190
-rw-r--r--contrib/perl5/lib/IPC/Open2.pm118
-rw-r--r--contrib/perl5/lib/IPC/Open3.pm333
-rw-r--r--contrib/perl5/lib/Math/BigFloat.pm398
-rw-r--r--contrib/perl5/lib/Math/BigInt.pm519
-rw-r--r--contrib/perl5/lib/Math/Complex.pm1889
-rw-r--r--contrib/perl5/lib/Math/Trig.pm456
-rw-r--r--contrib/perl5/lib/Net/Ping.pm559
-rw-r--r--contrib/perl5/lib/Net/hostent.pm150
-rw-r--r--contrib/perl5/lib/Net/netent.pm168
-rw-r--r--contrib/perl5/lib/Net/protoent.pm96
-rw-r--r--contrib/perl5/lib/Net/servent.pm112
-rw-r--r--contrib/perl5/lib/Pod/Checker.pm1242
-rw-r--r--contrib/perl5/lib/Pod/Find.pm445
-rw-r--r--contrib/perl5/lib/Pod/Functions.pm302
-rw-r--r--contrib/perl5/lib/Pod/Html.pm2025
-rw-r--r--contrib/perl5/lib/Pod/InputObjects.pm933
-rw-r--r--contrib/perl5/lib/Pod/LaTeX.pm1591
-rw-r--r--contrib/perl5/lib/Pod/Man.pm1387
-rw-r--r--contrib/perl5/lib/Pod/ParseUtils.pm851
-rw-r--r--contrib/perl5/lib/Pod/Parser.pm1768
-rw-r--r--contrib/perl5/lib/Pod/Plainer.pm69
-rw-r--r--contrib/perl5/lib/Pod/Select.pm751
-rw-r--r--contrib/perl5/lib/Pod/Text.pm827
-rw-r--r--contrib/perl5/lib/Pod/Text/Color.pm128
-rw-r--r--contrib/perl5/lib/Pod/Text/Overstrike.pm160
-rw-r--r--contrib/perl5/lib/Pod/Text/Termcap.pm145
-rw-r--r--contrib/perl5/lib/Pod/Usage.pm559
-rw-r--r--contrib/perl5/lib/Search/Dict.pm75
-rw-r--r--contrib/perl5/lib/SelectSaver.pm52
-rw-r--r--contrib/perl5/lib/SelfLoader.pm307
-rw-r--r--contrib/perl5/lib/Shell.pm201
-rw-r--r--contrib/perl5/lib/Symbol.pm146
-rw-r--r--contrib/perl5/lib/Term/ANSIColor.pm351
-rw-r--r--contrib/perl5/lib/Term/Cap.pm410
-rw-r--r--contrib/perl5/lib/Term/Complete.pm154
-rw-r--r--contrib/perl5/lib/Term/ReadLine.pm369
-rw-r--r--contrib/perl5/lib/Test.pm262
-rw-r--r--contrib/perl5/lib/Test/Harness.pm571
-rw-r--r--contrib/perl5/lib/Text/Abbrev.pm81
-rw-r--r--contrib/perl5/lib/Text/ParseWords.pm262
-rw-r--r--contrib/perl5/lib/Text/Soundex.pm150
-rw-r--r--contrib/perl5/lib/Text/Tabs.pm97
-rw-r--r--contrib/perl5/lib/Text/Wrap.pm175
-rw-r--r--contrib/perl5/lib/Tie/Array.pm288
-rw-r--r--contrib/perl5/lib/Tie/Handle.pm234
-rw-r--r--contrib/perl5/lib/Tie/Hash.pm160
-rw-r--r--contrib/perl5/lib/Tie/RefHash.pm162
-rw-r--r--contrib/perl5/lib/Tie/Scalar.pm138
-rw-r--r--contrib/perl5/lib/Tie/SubstrHash.pm213
-rw-r--r--contrib/perl5/lib/Time/Local.pm246
-rw-r--r--contrib/perl5/lib/Time/gmtime.pm89
-rw-r--r--contrib/perl5/lib/Time/localtime.pm85
-rw-r--r--contrib/perl5/lib/Time/tm.pm31
-rw-r--r--contrib/perl5/lib/UNIVERSAL.pm101
-rw-r--r--contrib/perl5/lib/User/grent.pm94
-rw-r--r--contrib/perl5/lib/User/pwent.pm297
-rw-r--r--contrib/perl5/lib/Win32.pod287
-rw-r--r--contrib/perl5/lib/abbrev.pl43
-rw-r--r--contrib/perl5/lib/assert.pl55
-rw-r--r--contrib/perl5/lib/attributes.pm399
-rw-r--r--contrib/perl5/lib/autouse.pm157
-rw-r--r--contrib/perl5/lib/base.pm92
-rw-r--r--contrib/perl5/lib/bigfloat.pl254
-rw-r--r--contrib/perl5/lib/bigint.pl320
-rw-r--r--contrib/perl5/lib/bigrat.pl155
-rw-r--r--contrib/perl5/lib/blib.pm72
-rw-r--r--contrib/perl5/lib/bytes.pm69
-rw-r--r--contrib/perl5/lib/bytes_heavy.pl8
-rw-r--r--contrib/perl5/lib/cacheout.pl55
-rw-r--r--contrib/perl5/lib/charnames.pm146
-rw-r--r--contrib/perl5/lib/chat2.pl379
-rw-r--r--contrib/perl5/lib/complete.pl120
-rw-r--r--contrib/perl5/lib/constant.pm278
-rw-r--r--contrib/perl5/lib/ctime.pl59
-rwxr-xr-xcontrib/perl5/lib/diagnostics.pm559
-rw-r--r--contrib/perl5/lib/dotsh.pl76
-rw-r--r--contrib/perl5/lib/dumpvar.pl443
-rw-r--r--contrib/perl5/lib/exceptions.pl61
-rw-r--r--contrib/perl5/lib/fastcwd.pl43
-rw-r--r--contrib/perl5/lib/fields.pm285
-rw-r--r--contrib/perl5/lib/filetest.pm68
-rw-r--r--contrib/perl5/lib/find.pl47
-rw-r--r--contrib/perl5/lib/finddepth.pl46
-rw-r--r--contrib/perl5/lib/flush.pl32
-rw-r--r--contrib/perl5/lib/ftp.pl1086
-rw-r--r--contrib/perl5/lib/getcwd.pl71
-rw-r--r--contrib/perl5/lib/getopt.pl49
-rw-r--r--contrib/perl5/lib/getopts.pl66
-rw-r--r--contrib/perl5/lib/hostname.pl31
-rw-r--r--contrib/perl5/lib/importenv.pl16
-rw-r--r--contrib/perl5/lib/integer.pm91
-rw-r--r--contrib/perl5/lib/less.pm23
-rw-r--r--contrib/perl5/lib/lib.pm136
-rw-r--r--contrib/perl5/lib/locale.pm38
-rw-r--r--contrib/perl5/lib/look.pl50
-rw-r--r--contrib/perl5/lib/newgetopt.pl68
-rw-r--r--contrib/perl5/lib/open.pm76
-rw-r--r--contrib/perl5/lib/open2.pl12
-rw-r--r--contrib/perl5/lib/open3.pl12
-rw-r--r--contrib/perl5/lib/overload.pm1422
-rw-r--r--contrib/perl5/lib/perl5db.pl2708
-rw-r--r--contrib/perl5/lib/pwd.pl67
-rw-r--r--contrib/perl5/lib/shellwords.pl48
-rw-r--r--contrib/perl5/lib/sigtrap.pm289
-rw-r--r--contrib/perl5/lib/stat.pl31
-rw-r--r--contrib/perl5/lib/strict.pm117
-rw-r--r--contrib/perl5/lib/subs.pm38
-rw-r--r--contrib/perl5/lib/syslog.pl199
-rw-r--r--contrib/perl5/lib/tainted.pl9
-rw-r--r--contrib/perl5/lib/termcap.pl178
-rw-r--r--contrib/perl5/lib/timelocal.pl18
-rw-r--r--contrib/perl5/lib/unicode/ArabLink.pl45
-rw-r--r--contrib/perl5/lib/unicode/ArabLnkGrp.pl93
-rw-r--r--contrib/perl5/lib/unicode/ArabShap.txt199
-rw-r--r--contrib/perl5/lib/unicode/BidiMirr.txt238
-rw-r--r--contrib/perl5/lib/unicode/Bidirectional.pl640
-rw-r--r--contrib/perl5/lib/unicode/Block.pl93
-rw-r--r--contrib/perl5/lib/unicode/Blocks.txt90
-rw-r--r--contrib/perl5/lib/unicode/CaseFold.txt821
-rw-r--r--contrib/perl5/lib/unicode/Category.pl1508
-rw-r--r--contrib/perl5/lib/unicode/CombiningClass.pl152
-rw-r--r--contrib/perl5/lib/unicode/CompExcl.txt145
-rw-r--r--contrib/perl5/lib/unicode/Decomposition.pl3470
-rw-r--r--contrib/perl5/lib/unicode/EAWidth.txt10636
-rw-r--r--contrib/perl5/lib/unicode/In/AlphabeticPresentationForms.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Arabic.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/ArabicPresentationForms-A.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/ArabicPresentationForms-B.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Armenian.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Arrows.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/BasicLatin.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Bengali.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/BlockElements.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Bopomofo.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/BopomofoExtended.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/BoxDrawing.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/BraillePatterns.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKCompatibility.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKCompatibilityForms.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKCompatibilityIdeographs.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKRadicalsSupplement.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKSymbolsandPunctuation.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKUnifiedIdeographs.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Cherokee.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CombiningDiacriticalMarks.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CombiningHalfMarks.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CombiningMarksforSymbols.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/ControlPictures.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/CurrencySymbols.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Cyrillic.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Devanagari.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Dingbats.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/EnclosedAlphanumerics.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/EnclosedCJKLettersandMonths.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Ethiopic.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/GeneralPunctuation.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/GeometricShapes.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Georgian.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Greek.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/GreekExtended.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Gujarati.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Gurmukhi.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HalfwidthandFullwidthForms.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HangulCompatibilityJamo.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HangulJamo.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HangulSyllables.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Hebrew.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HighPrivateUseSurrogates.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/HighSurrogates.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Hiragana.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/IPAExtensions.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/IdeographicDescriptionCharacters.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Kanbun.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/KangxiRadicals.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Kannada.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Katakana.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Khmer.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Lao.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Latin-1Supplement.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/LatinExtended-A.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/LatinExtended-B.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/LatinExtendedAdditional.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/LetterlikeSymbols.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/LowSurrogates.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Malayalam.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/MathematicalOperators.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/MiscellaneousSymbols.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/MiscellaneousTechnical.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Mongolian.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Myanmar.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/NumberForms.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Ogham.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/OpticalCharacterRecognition.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Oriya.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/PrivateUse.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Runic.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Sinhala.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/SmallFormVariants.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/SpacingModifierLetters.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Specials.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/SuperscriptsandSubscripts.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Syriac.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Tamil.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Telugu.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Thaana.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Thai.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/Tibetan.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/YiRadicals.pl6
-rw-r--r--contrib/perl5/lib/unicode/In/YiSyllables.pl6
-rw-r--r--contrib/perl5/lib/unicode/Index.txt3055
-rw-r--r--contrib/perl5/lib/unicode/Is/ASCII.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/Alnum.pl358
-rw-r--r--contrib/perl5/lib/unicode/Is/Alpha.pl327
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiAL.pl25
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiAN.pl7
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiB.pl10
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiBN.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiCS.pl16
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiEN.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiES.pl7
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiET.pl29
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiL.pl325
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiLRE.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiLRO.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiNSM.pl97
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiON.pl115
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiPDF.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiR.pl19
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiRLE.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiRLO.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiS.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/BidiWS.pl12
-rw-r--r--contrib/perl5/lib/unicode/Is/Blank.pl12
-rw-r--r--contrib/perl5/lib/unicode/Is/C.pl20
-rw-r--r--contrib/perl5/lib/unicode/Is/Cc.pl7
-rw-r--r--contrib/perl5/lib/unicode/Is/Cf.pl12
-rw-r--r--contrib/perl5/lib/unicode/Is/Cn.pl373
-rw-r--r--contrib/perl5/lib/unicode/Is/Cntrl.pl20
-rw-r--r--contrib/perl5/lib/unicode/Is/Co.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/Cs.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/DCcircle.pl10
-rw-r--r--contrib/perl5/lib/unicode/Is/DCcompat.pl69
-rw-r--r--contrib/perl5/lib/unicode/Is/DCfinal.pl118
-rw-r--r--contrib/perl5/lib/unicode/Is/DCfont.pl16
-rw-r--r--contrib/perl5/lib/unicode/Is/DCfraction.pl7
-rw-r--r--contrib/perl5/lib/unicode/Is/DCinitial.pl80
-rw-r--r--contrib/perl5/lib/unicode/Is/DCisolated.pl103
-rw-r--r--contrib/perl5/lib/unicode/Is/DCmedial.pl59
-rw-r--r--contrib/perl5/lib/unicode/Is/DCnarrow.pl11
-rw-r--r--contrib/perl5/lib/unicode/Is/DCnoBreak.pl10
-rw-r--r--contrib/perl5/lib/unicode/Is/DCsmall.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/DCsquare.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/DCsub.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/DCsuper.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/DCvertical.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/DCwide.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/DecoCanon.pl212
-rw-r--r--contrib/perl5/lib/unicode/Is/DecoCompat.pl107
-rw-r--r--contrib/perl5/lib/unicode/Is/Digit.pl25
-rw-r--r--contrib/perl5/lib/unicode/Is/Graph.pl364
-rw-r--r--contrib/perl5/lib/unicode/Is/L.pl260
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkAI.pl139
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkAL.pl387
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkB2.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkBA.pl19
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkBB.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkBK.pl7
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkCB.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkCL.pl47
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkCM.pl117
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkCR.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkEX.pl10
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkGL.pl11
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkHY.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkID.pl81
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkIN.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkIS.pl9
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkLF.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkNS.pl41
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkNU.pl24
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkOP.pl43
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkPO.pl16
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkPR.pl21
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkQU.pl13
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkSA.pl30
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkSG.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkSP.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkSY.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkXX.pl5
-rw-r--r--contrib/perl5/lib/unicode/Is/LbrkZW.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/Ll.pl379
-rw-r--r--contrib/perl5/lib/unicode/Is/Lm.pl23
-rw-r--r--contrib/perl5/lib/unicode/Is/Lo.pl191
-rw-r--r--contrib/perl5/lib/unicode/Is/Lower.pl379
-rw-r--r--contrib/perl5/lib/unicode/Is/Lt.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/Lu.pl376
-rw-r--r--contrib/perl5/lib/unicode/Is/M.pl105
-rw-r--r--contrib/perl5/lib/unicode/Is/Mc.pl56
-rw-r--r--contrib/perl5/lib/unicode/Is/Me.pl9
-rw-r--r--contrib/perl5/lib/unicode/Is/Mirrored.pl48
-rw-r--r--contrib/perl5/lib/unicode/Is/Mn.pl98
-rw-r--r--contrib/perl5/lib/unicode/Is/N.pl43
-rw-r--r--contrib/perl5/lib/unicode/Is/Nd.pl25
-rw-r--r--contrib/perl5/lib/unicode/Is/Nl.pl9
-rw-r--r--contrib/perl5/lib/unicode/Is/No.pl23
-rw-r--r--contrib/perl5/lib/unicode/Is/P.pl80
-rw-r--r--contrib/perl5/lib/unicode/Is/Pc.pl12
-rw-r--r--contrib/perl5/lib/unicode/Is/Pd.pl16
-rw-r--r--contrib/perl5/lib/unicode/Is/Pe.pl41
-rw-r--r--contrib/perl5/lib/unicode/Is/Pf.pl9
-rw-r--r--contrib/perl5/lib/unicode/Is/Pi.pl10
-rw-r--r--contrib/perl5/lib/unicode/Is/Po.pl70
-rw-r--r--contrib/perl5/lib/unicode/Is/Print.pl365
-rw-r--r--contrib/perl5/lib/unicode/Is/Ps.pl43
-rw-r--r--contrib/perl5/lib/unicode/Is/Punct.pl80
-rw-r--r--contrib/perl5/lib/unicode/Is/S.pl131
-rw-r--r--contrib/perl5/lib/unicode/Is/Sc.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/Sk.pl27
-rw-r--r--contrib/perl5/lib/unicode/Is/Sm.pl40
-rw-r--r--contrib/perl5/lib/unicode/Is/So.pl103
-rw-r--r--contrib/perl5/lib/unicode/Is/Space.pl13
-rw-r--r--contrib/perl5/lib/unicode/Is/SpacePerl.pl14
-rw-r--r--contrib/perl5/lib/unicode/Is/SylA.pl158
-rw-r--r--contrib/perl5/lib/unicode/Is/SylAA.pl25
-rw-r--r--contrib/perl5/lib/unicode/Is/SylAAI.pl19
-rw-r--r--contrib/perl5/lib/unicode/Is/SylAI.pl7
-rw-r--r--contrib/perl5/lib/unicode/Is/SylC.pl70
-rw-r--r--contrib/perl5/lib/unicode/Is/SylE.pl147
-rw-r--r--contrib/perl5/lib/unicode/Is/SylEE.pl34
-rw-r--r--contrib/perl5/lib/unicode/Is/SylI.pl154
-rw-r--r--contrib/perl5/lib/unicode/Is/SylII.pl25
-rw-r--r--contrib/perl5/lib/unicode/Is/SylN.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/SylO.pl157
-rw-r--r--contrib/perl5/lib/unicode/Is/SylOO.pl25
-rw-r--r--contrib/perl5/lib/unicode/Is/SylU.pl122
-rw-r--r--contrib/perl5/lib/unicode/Is/SylV.pl54
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWA.pl49
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWAA.pl19
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWC.pl13
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWE.pl23
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWEE.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWI.pl22
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWII.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWO.pl16
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWOO.pl15
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWU.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/SylWV.pl11
-rw-r--r--contrib/perl5/lib/unicode/Is/Syllable.pl4
-rw-r--r--contrib/perl5/lib/unicode/Is/Upper.pl379
-rw-r--r--contrib/perl5/lib/unicode/Is/Word.pl359
-rw-r--r--contrib/perl5/lib/unicode/Is/XDigit.pl8
-rw-r--r--contrib/perl5/lib/unicode/Is/Z.pl12
-rw-r--r--contrib/perl5/lib/unicode/Is/Zl.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/Zp.pl6
-rw-r--r--contrib/perl5/lib/unicode/Is/Zs.pl11
-rw-r--r--contrib/perl5/lib/unicode/Jamo.txt91
-rw-r--r--contrib/perl5/lib/unicode/JamoShort.pl72
-rw-r--r--contrib/perl5/lib/unicode/LineBrk.txt10643
-rw-r--r--contrib/perl5/lib/unicode/Makefile5
-rw-r--r--contrib/perl5/lib/unicode/Name.pl10554
-rw-r--r--contrib/perl5/lib/unicode/Names.txt17271
-rw-r--r--contrib/perl5/lib/unicode/NamesList.html226
-rw-r--r--contrib/perl5/lib/unicode/Number.pl432
-rw-r--r--contrib/perl5/lib/unicode/PropList.txt3592
-rw-r--r--contrib/perl5/lib/unicode/README.Ethiopic18
-rw-r--r--contrib/perl5/lib/unicode/README.perl37
-rw-r--r--contrib/perl5/lib/unicode/ReadMe.txt13
-rw-r--r--contrib/perl5/lib/unicode/SpecCase.txt230
-rw-r--r--contrib/perl5/lib/unicode/To/Digit.pl30
-rw-r--r--contrib/perl5/lib/unicode/To/Lower.pl401
-rw-r--r--contrib/perl5/lib/unicode/To/Title.pl411
-rw-r--r--contrib/perl5/lib/unicode/To/Upper.pl411
-rw-r--r--contrib/perl5/lib/unicode/UCD301.html201
-rw-r--r--contrib/perl5/lib/unicode/UCDFF301.html1025
-rw-r--r--contrib/perl5/lib/unicode/Unicode.30110621
-rwxr-xr-xcontrib/perl5/lib/unicode/mktables.PL447
-rw-r--r--contrib/perl5/lib/unicode/syllables.txt1329
-rw-r--r--contrib/perl5/lib/utf8.pm84
-rw-r--r--contrib/perl5/lib/utf8_heavy.pl221
-rw-r--r--contrib/perl5/lib/validate.pl104
-rw-r--r--contrib/perl5/lib/vars.pm83
-rw-r--r--contrib/perl5/lib/warnings.pm419
-rw-r--r--contrib/perl5/lib/warnings/register.pm38
447 files changed, 0 insertions, 163401 deletions
diff --git a/contrib/perl5/lib/AnyDBM_File.pm b/contrib/perl5/lib/AnyDBM_File.pm
deleted file mode 100644
index 58ffda7..0000000
--- a/contrib/perl5/lib/AnyDBM_File.pm
+++ /dev/null
@@ -1,92 +0,0 @@
-package AnyDBM_File;
-
-use 5.005_64;
-our @ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA;
-
-my $mod;
-for $mod (@ISA) {
- if (eval "require $mod") {
- @ISA = ($mod); # if we leave @ISA alone, warnings abound
- return 1;
- }
-}
-
-die "No DBM package was successfully found or installed";
-#return 0;
-
-=head1 NAME
-
-AnyDBM_File - provide framework for multiple DBMs
-
-NDBM_File, DB_File, GDBM_File, SDBM_File, ODBM_File - various DBM implementations
-
-=head1 SYNOPSIS
-
- use AnyDBM_File;
-
-=head1 DESCRIPTION
-
-This module is a "pure virtual base class"--it has nothing of its own.
-It's just there to inherit from one of the various DBM packages. It
-prefers ndbm for compatibility reasons with Perl 4, then Berkeley DB (See
-L<DB_File>), GDBM, SDBM (which is always there--it comes with Perl), and
-finally ODBM. This way old programs that used to use NDBM via dbmopen()
-can still do so, but new ones can reorder @ISA:
-
- BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File) }
- use AnyDBM_File;
-
-Having multiple DBM implementations makes it trivial to copy database formats:
-
- use POSIX; use NDBM_File; use DB_File;
- tie %newhash, 'DB_File', $new_filename, O_CREAT|O_RDWR;
- tie %oldhash, 'NDBM_File', $old_filename, 1, 0;
- %newhash = %oldhash;
-
-=head2 DBM Comparisons
-
-Here's a partial table of features the different packages offer:
-
- odbm ndbm sdbm gdbm bsd-db
- ---- ---- ---- ---- ------
- Linkage comes w/ perl yes yes yes yes yes
- Src comes w/ perl no no yes no no
- Comes w/ many unix os yes yes[0] no no no
- Builds ok on !unix ? ? yes yes ?
- Code Size ? ? small big big
- Database Size ? ? small big? ok[1]
- Speed ? ? slow ok fast
- FTPable no no yes yes yes
- Easy to build N/A N/A yes yes ok[2]
- Size limits 1k 4k 1k[3] none none
- Byte-order independent no no no no yes
- Licensing restrictions ? ? no yes no
-
-
-=over 4
-
-=item [0]
-
-on mixed universe machines, may be in the bsd compat library,
-which is often shunned.
-
-=item [1]
-
-Can be trimmed if you compile for one access method.
-
-=item [2]
-
-See L<DB_File>.
-Requires symbolic links.
-
-=item [3]
-
-By default, but can be redefined.
-
-=back
-
-=head1 SEE ALSO
-
-dbm(3), ndbm(3), DB_File(3), L<perldbmfilter>
-
-=cut
diff --git a/contrib/perl5/lib/AutoLoader.pm b/contrib/perl5/lib/AutoLoader.pm
deleted file mode 100644
index ad6bc40..0000000
--- a/contrib/perl5/lib/AutoLoader.pm
+++ /dev/null
@@ -1,325 +0,0 @@
-package AutoLoader;
-
-use 5.005_64;
-our(@EXPORT, @EXPORT_OK, $VERSION);
-
-my $is_dosish;
-my $is_epoc;
-my $is_vms;
-my $is_macos;
-
-BEGIN {
- require Exporter;
- @EXPORT = @EXPORT = ();
- @EXPORT_OK = @EXPORT_OK = qw(AUTOLOAD);
- $is_dosish = $^O eq 'dos' || $^O eq 'os2' || $^O eq 'MSWin32';
- $is_epoc = $^O eq 'epoc';
- $is_vms = $^O eq 'VMS';
- $is_macos = $^O eq 'MacOS';
- $VERSION = '5.58';
-}
-
-AUTOLOAD {
- my $sub = $AUTOLOAD;
- my $filename;
- # Braces used to preserve $1 et al.
- {
- # Try to find the autoloaded file from the package-qualified
- # name of the sub. e.g., if the sub needed is
- # Getopt::Long::GetOptions(), then $INC{Getopt/Long.pm} is
- # something like '/usr/lib/perl5/Getopt/Long.pm', and the
- # autoload file is '/usr/lib/perl5/auto/Getopt/Long/GetOptions.al'.
- #
- # However, if @INC is a relative path, this might not work. If,
- # for example, @INC = ('lib'), then $INC{Getopt/Long.pm} is
- # 'lib/Getopt/Long.pm', and we want to require
- # 'auto/Getopt/Long/GetOptions.al' (without the leading 'lib').
- # In this case, we simple prepend the 'auto/' and let the
- # C<require> take care of the searching for us.
-
- my ($pkg,$func) = ($sub =~ /(.*)::([^:]+)$/);
- $pkg =~ s#::#/#g;
- if (defined($filename = $INC{"$pkg.pm"})) {
- if ($is_macos) {
- $pkg =~ tr#/#:#;
- $filename =~ s#^(.*)$pkg\.pm\z#$1auto:$pkg:$func.al#s;
- } else {
- $filename =~ s#^(.*)$pkg\.pm\z#$1auto/$pkg/$func.al#s;
- }
-
- # if the file exists, then make sure that it is a
- # a fully anchored path (i.e either '/usr/lib/auto/foo/bar.al',
- # or './lib/auto/foo/bar.al'. This avoids C<require> searching
- # (and failing) to find the 'lib/auto/foo/bar.al' because it
- # looked for 'lib/lib/auto/foo/bar.al', given @INC = ('lib').
-
- if (-r $filename) {
- unless ($filename =~ m|^/|s) {
- if ($is_dosish) {
- unless ($filename =~ m{^([a-z]:)?[\\/]}is) {
- $filename = "./$filename";
- }
- }
- elsif ($is_epoc) {
- unless ($filename =~ m{^([a-z?]:)?[\\/]}is) {
- $filename = "./$filename";
- }
- }elsif ($is_vms) {
- # XXX todo by VMSmiths
- $filename = "./$filename";
- }
- elsif (!$is_macos) {
- $filename = "./$filename";
- }
- }
- }
- else {
- $filename = undef;
- }
- }
- unless (defined $filename) {
- # let C<require> do the searching
- $filename = "auto/$sub.al";
- $filename =~ s#::#/#g;
- }
- }
- my $save = $@;
- eval { local $SIG{__DIE__}; require $filename };
- if ($@) {
- if (substr($sub,-9) eq '::DESTROY') {
- *$sub = sub {};
- } else {
- # The load might just have failed because the filename was too
- # long for some old SVR3 systems which treat long names as errors.
- # If we can succesfully truncate a long name then it's worth a go.
- # There is a slight risk that we could pick up the wrong file here
- # but autosplit should have warned about that when splitting.
- if ($filename =~ s/(\w{12,})\.al$/substr($1,0,11).".al"/e){
- eval { local $SIG{__DIE__}; require $filename };
- }
- if ($@){
- $@ =~ s/ at .*\n//;
- my $error = $@;
- require Carp;
- Carp::croak($error);
- }
- }
- }
- $@ = $save;
- goto &$sub;
-}
-
-sub import {
- my $pkg = shift;
- my $callpkg = caller;
-
- #
- # Export symbols, but not by accident of inheritance.
- #
-
- if ($pkg eq 'AutoLoader') {
- local $Exporter::ExportLevel = 1;
- Exporter::import $pkg, @_;
- }
-
- #
- # Try to find the autosplit index file. Eg., if the call package
- # is POSIX, then $INC{POSIX.pm} is something like
- # '/usr/local/lib/perl5/POSIX.pm', and the autosplit index file is in
- # '/usr/local/lib/perl5/auto/POSIX/autosplit.ix', so we require that.
- #
- # However, if @INC is a relative path, this might not work. If,
- # for example, @INC = ('lib'), then
- # $INC{POSIX.pm} is 'lib/POSIX.pm', and we want to require
- # 'auto/POSIX/autosplit.ix' (without the leading 'lib').
- #
-
- (my $calldir = $callpkg) =~ s#::#/#g;
- my $path = $INC{$calldir . '.pm'};
- if (defined($path)) {
- # Try absolute path name.
- $path =~ s#^(.*)$calldir\.pm$#$1auto/$calldir/autosplit.ix#;
- eval { require $path; };
- # If that failed, try relative path with normal @INC searching.
- if ($@) {
- $path ="auto/$calldir/autosplit.ix";
- eval { require $path; };
- }
- if ($@) {
- my $error = $@;
- require Carp;
- Carp::carp($error);
- }
- }
-}
-
-sub unimport {
- my $callpkg = caller;
- eval "package $callpkg; sub AUTOLOAD;";
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-AutoLoader - load subroutines only on demand
-
-=head1 SYNOPSIS
-
- package Foo;
- use AutoLoader 'AUTOLOAD'; # import the default AUTOLOAD subroutine
-
- package Bar;
- use AutoLoader; # don't import AUTOLOAD, define our own
- sub AUTOLOAD {
- ...
- $AutoLoader::AUTOLOAD = "...";
- goto &AutoLoader::AUTOLOAD;
- }
-
-=head1 DESCRIPTION
-
-The B<AutoLoader> module works with the B<AutoSplit> module and the
-C<__END__> token to defer the loading of some subroutines until they are
-used rather than loading them all at once.
-
-To use B<AutoLoader>, the author of a module has to place the
-definitions of subroutines to be autoloaded after an C<__END__> token.
-(See L<perldata>.) The B<AutoSplit> module can then be run manually to
-extract the definitions into individual files F<auto/funcname.al>.
-
-B<AutoLoader> implements an AUTOLOAD subroutine. When an undefined
-subroutine in is called in a client module of B<AutoLoader>,
-B<AutoLoader>'s AUTOLOAD subroutine attempts to locate the subroutine in a
-file with a name related to the location of the file from which the
-client module was read. As an example, if F<POSIX.pm> is located in
-F</usr/local/lib/perl5/POSIX.pm>, B<AutoLoader> will look for perl
-subroutines B<POSIX> in F</usr/local/lib/perl5/auto/POSIX/*.al>, where
-the C<.al> file has the same name as the subroutine, sans package. If
-such a file exists, AUTOLOAD will read and evaluate it,
-thus (presumably) defining the needed subroutine. AUTOLOAD will then
-C<goto> the newly defined subroutine.
-
-Once this process completes for a given function, it is defined, so
-future calls to the subroutine will bypass the AUTOLOAD mechanism.
-
-=head2 Subroutine Stubs
-
-In order for object method lookup and/or prototype checking to operate
-correctly even when methods have not yet been defined it is necessary to
-"forward declare" each subroutine (as in C<sub NAME;>). See
-L<perlsub/"SYNOPSIS">. Such forward declaration creates "subroutine
-stubs", which are place holders with no code.
-
-The AutoSplit and B<AutoLoader> modules automate the creation of forward
-declarations. The AutoSplit module creates an 'index' file containing
-forward declarations of all the AutoSplit subroutines. When the
-AutoLoader module is 'use'd it loads these declarations into its callers
-package.
-
-Because of this mechanism it is important that B<AutoLoader> is always
-C<use>d and not C<require>d.
-
-=head2 Using B<AutoLoader>'s AUTOLOAD Subroutine
-
-In order to use B<AutoLoader>'s AUTOLOAD subroutine you I<must>
-explicitly import it:
-
- use AutoLoader 'AUTOLOAD';
-
-=head2 Overriding B<AutoLoader>'s AUTOLOAD Subroutine
-
-Some modules, mainly extensions, provide their own AUTOLOAD subroutines.
-They typically need to check for some special cases (such as constants)
-and then fallback to B<AutoLoader>'s AUTOLOAD for the rest.
-
-Such modules should I<not> import B<AutoLoader>'s AUTOLOAD subroutine.
-Instead, they should define their own AUTOLOAD subroutines along these
-lines:
-
- use AutoLoader;
- use Carp;
-
- sub AUTOLOAD {
- my $sub = $AUTOLOAD;
- (my $constname = $sub) =~ s/.*:://;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
- if ($! =~ /Invalid/ || $!{EINVAL}) {
- $AutoLoader::AUTOLOAD = $sub;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- croak "Your vendor has not defined constant $constname";
- }
- }
- *$sub = sub { $val }; # same as: eval "sub $sub { $val }";
- goto &$sub;
- }
-
-If any module's own AUTOLOAD subroutine has no need to fallback to the
-AutoLoader's AUTOLOAD subroutine (because it doesn't have any AutoSplit
-subroutines), then that module should not use B<AutoLoader> at all.
-
-=head2 Package Lexicals
-
-Package lexicals declared with C<my> in the main block of a package
-using B<AutoLoader> will not be visible to auto-loaded subroutines, due to
-the fact that the given scope ends at the C<__END__> marker. A module
-using such variables as package globals will not work properly under the
-B<AutoLoader>.
-
-The C<vars> pragma (see L<perlmod/"vars">) may be used in such
-situations as an alternative to explicitly qualifying all globals with
-the package namespace. Variables pre-declared with this pragma will be
-visible to any autoloaded routines (but will not be invisible outside
-the package, unfortunately).
-
-=head2 Not Using AutoLoader
-
-You can stop using AutoLoader by simply
-
- no AutoLoader;
-
-=head2 B<AutoLoader> vs. B<SelfLoader>
-
-The B<AutoLoader> is similar in purpose to B<SelfLoader>: both delay the
-loading of subroutines.
-
-B<SelfLoader> uses the C<__DATA__> marker rather than C<__END__>.
-While this avoids the use of a hierarchy of disk files and the
-associated open/close for each routine loaded, B<SelfLoader> suffers a
-startup speed disadvantage in the one-time parsing of the lines after
-C<__DATA__>, after which routines are cached. B<SelfLoader> can also
-handle multiple packages in a file.
-
-B<AutoLoader> only reads code as it is requested, and in many cases
-should be faster, but requires a mechanism like B<AutoSplit> be used to
-create the individual files. L<ExtUtils::MakeMaker> will invoke
-B<AutoSplit> automatically if B<AutoLoader> is used in a module source
-file.
-
-=head1 CAVEATS
-
-AutoLoaders prior to Perl 5.002 had a slightly different interface. Any
-old modules which use B<AutoLoader> should be changed to the new calling
-style. Typically this just means changing a require to a use, adding
-the explicit C<'AUTOLOAD'> import if needed, and removing B<AutoLoader>
-from C<@ISA>.
-
-On systems with restrictions on file name length, the file corresponding
-to a subroutine may have a shorter name that the routine itself. This
-can lead to conflicting file names. The I<AutoSplit> package warns of
-these potential conflicts when used to split a module.
-
-AutoLoader may fail to find the autosplit files (or even find the wrong
-ones) in cases where C<@INC> contains relative paths, B<and> the program
-does C<chdir>.
-
-=head1 SEE ALSO
-
-L<SelfLoader> - an autoloader that doesn't use external files.
-
-=cut
diff --git a/contrib/perl5/lib/AutoSplit.pm b/contrib/perl5/lib/AutoSplit.pm
deleted file mode 100644
index 8fcf528..0000000
--- a/contrib/perl5/lib/AutoSplit.pm
+++ /dev/null
@@ -1,487 +0,0 @@
-package AutoSplit;
-
-use 5.005_64;
-use Exporter ();
-use Config qw(%Config);
-use Carp qw(carp);
-use File::Basename ();
-use File::Path qw(mkpath);
-use File::Spec::Functions qw(curdir catfile);
-use strict;
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Verbose, $Keep, $Maxlen,
- $CheckForAutoloader, $CheckModTime);
-
-$VERSION = "1.0305";
-@ISA = qw(Exporter);
-@EXPORT = qw(&autosplit &autosplit_lib_modules);
-@EXPORT_OK = qw($Verbose $Keep $Maxlen $CheckForAutoloader $CheckModTime);
-
-=head1 NAME
-
-AutoSplit - split a package for autoloading
-
-=head1 SYNOPSIS
-
- autosplit($file, $dir, $keep, $check, $modtime);
-
- autosplit_lib_modules(@modules);
-
-=head1 DESCRIPTION
-
-This function will split up your program into files that the AutoLoader
-module can handle. It is used by both the standard perl libraries and by
-the MakeMaker utility, to automatically configure libraries for autoloading.
-
-The C<autosplit> interface splits the specified file into a hierarchy
-rooted at the directory C<$dir>. It creates directories as needed to reflect
-class hierarchy, and creates the file F<autosplit.ix>. This file acts as
-both forward declaration of all package routines, and as timestamp for the
-last update of the hierarchy.
-
-The remaining three arguments to C<autosplit> govern other options to
-the autosplitter.
-
-=over 2
-
-=item $keep
-
-If the third argument, I<$keep>, is false, then any
-pre-existing C<*.al> files in the autoload directory are removed if
-they are no longer part of the module (obsoleted functions).
-$keep defaults to 0.
-
-=item $check
-
-The
-fourth argument, I<$check>, instructs C<autosplit> to check the module
-currently being split to ensure that it does include a C<use>
-specification for the AutoLoader module, and skips the module if
-AutoLoader is not detected.
-$check defaults to 1.
-
-=item $modtime
-
-Lastly, the I<$modtime> argument specifies
-that C<autosplit> is to check the modification time of the module
-against that of the C<autosplit.ix> file, and only split the module if
-it is newer.
-$modtime defaults to 1.
-
-=back
-
-Typical use of AutoSplit in the perl MakeMaker utility is via the command-line
-with:
-
- perl -e 'use AutoSplit; autosplit($ARGV[0], $ARGV[1], 0, 1, 1)'
-
-Defined as a Make macro, it is invoked with file and directory arguments;
-C<autosplit> will split the specified file into the specified directory and
-delete obsolete C<.al> files, after checking first that the module does use
-the AutoLoader, and ensuring that the module is not already currently split
-in its current form (the modtime test).
-
-The C<autosplit_lib_modules> form is used in the building of perl. It takes
-as input a list of files (modules) that are assumed to reside in a directory
-B<lib> relative to the current directory. Each file is sent to the
-autosplitter one at a time, to be split into the directory B<lib/auto>.
-
-In both usages of the autosplitter, only subroutines defined following the
-perl I<__END__> token are split out into separate files. Some
-routines may be placed prior to this marker to force their immediate loading
-and parsing.
-
-=head2 Multiple packages
-
-As of version 1.01 of the AutoSplit module it is possible to have
-multiple packages within a single file. Both of the following cases
-are supported:
-
- package NAME;
- __END__
- sub AAA { ... }
- package NAME::option1;
- sub BBB { ... }
- package NAME::option2;
- sub BBB { ... }
-
- package NAME;
- __END__
- sub AAA { ... }
- sub NAME::option1::BBB { ... }
- sub NAME::option2::BBB { ... }
-
-=head1 DIAGNOSTICS
-
-C<AutoSplit> will inform the user if it is necessary to create the
-top-level directory specified in the invocation. It is preferred that
-the script or installation process that invokes C<AutoSplit> have
-created the full directory path ahead of time. This warning may
-indicate that the module is being split into an incorrect path.
-
-C<AutoSplit> will warn the user of all subroutines whose name causes
-potential file naming conflicts on machines with drastically limited
-(8 characters or less) file name length. Since the subroutine name is
-used as the file name, these warnings can aid in portability to such
-systems.
-
-Warnings are issued and the file skipped if C<AutoSplit> cannot locate
-either the I<__END__> marker or a "package Name;"-style specification.
-
-C<AutoSplit> will also emit general diagnostics for inability to
-create directories or files.
-
-=cut
-
-# for portability warn about names longer than $maxlen
-$Maxlen = 8; # 8 for dos, 11 (14-".al") for SYSVR3
-$Verbose = 1; # 0=none, 1=minimal, 2=list .al files
-$Keep = 0;
-$CheckForAutoloader = 1;
-$CheckModTime = 1;
-
-my $IndexFile = "autosplit.ix"; # file also serves as timestamp
-my $maxflen = 255;
-$maxflen = 14 if $Config{'d_flexfnam'} ne 'define';
-if (defined (&Dos::UseLFN)) {
- $maxflen = Dos::UseLFN() ? 255 : 11;
-}
-my $Is_VMS = ($^O eq 'VMS');
-
-# allow checking for valid ': attrlist' attachments
-my $nested;
-$nested = qr{ \( (?: (?> [^()]+ ) | (??{ $nested }) )* \) }x;
-my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) (?:\s*\:\s*|\s+(?!\:)) }x;
-my $attr_list = qr{ \s* : \s* (?: $one_attr )* }x;
-
-
-
-sub autosplit{
- my($file, $autodir, $keep, $ckal, $ckmt) = @_;
- # $file - the perl source file to be split (after __END__)
- # $autodir - the ".../auto" dir below which to write split subs
- # Handle optional flags:
- $keep = $Keep unless defined $keep;
- $ckal = $CheckForAutoloader unless defined $ckal;
- $ckmt = $CheckModTime unless defined $ckmt;
- autosplit_file($file, $autodir, $keep, $ckal, $ckmt);
-}
-
-
-# This function is used during perl building/installation
-# ./miniperl -e 'use AutoSplit; autosplit_lib_modules(@ARGV)' ...
-
-sub autosplit_lib_modules{
- my(@modules) = @_; # list of Module names
-
- while(defined($_ = shift @modules)){
- while (m#(.*?[^:])::([^:].*)#) { # in case specified as ABC::XYZ
- $_ = catfile($1, $2);
- }
- s|\\|/|g; # bug in ksh OS/2
- s#^lib/##s; # incase specified as lib/*.pm
- my($lib) = catfile(curdir(), "lib");
- if ($Is_VMS) { # may need to convert VMS-style filespecs
- $lib =~ s#^\[\]#.\/#;
- }
- s#^$lib\W+##s; # incase specified as ./lib/*.pm
- if ($Is_VMS && /[:>\]]/) { # may need to convert VMS-style filespecs
- my ($dir,$name) = (/(.*])(.*)/s);
- $dir =~ s/.*lib[\.\]]//s;
- $dir =~ s#[\.\]]#/#g;
- $_ = $dir . $name;
- }
- autosplit_file(catfile($lib, $_), catfile($lib, "auto"),
- $Keep, $CheckForAutoloader, $CheckModTime);
- }
- 0;
-}
-
-
-# private functions
-
-sub autosplit_file {
- my($filename, $autodir, $keep, $check_for_autoloader, $check_mod_time)
- = @_;
- my(@outfiles);
- local($_);
- local($/) = "\n";
-
- # where to write output files
- $autodir ||= catfile(curdir(), "lib", "auto");
- if ($Is_VMS) {
- ($autodir = VMS::Filespec::unixpath($autodir)) =~ s|/\z||;
- $filename = VMS::Filespec::unixify($filename); # may have dirs
- }
- unless (-d $autodir){
- mkpath($autodir,0,0755);
- # We should never need to create the auto dir
- # here. installperl (or similar) should have done
- # it. Expecting it to exist is a valuable sanity check against
- # autosplitting into some random directory by mistake.
- print "Warning: AutoSplit had to create top-level " .
- "$autodir unexpectedly.\n";
- }
-
- # allow just a package name to be used
- $filename .= ".pm" unless ($filename =~ m/\.pm\z/);
-
- open(IN, "<$filename") or die "AutoSplit: Can't open $filename: $!\n";
- my($pm_mod_time) = (stat($filename))[9];
- my($autoloader_seen) = 0;
- my($in_pod) = 0;
- my($def_package,$last_package,$this_package,$fnr);
- while (<IN>) {
- # Skip pod text.
- $fnr++;
- $in_pod = 1 if /^=\w/;
- $in_pod = 0 if /^=cut/;
- next if ($in_pod || /^=cut/);
-
- # record last package name seen
- $def_package = $1 if (m/^\s*package\s+([\w:]+)\s*;/);
- ++$autoloader_seen if m/^\s*(use|require)\s+AutoLoader\b/;
- ++$autoloader_seen if m/\bISA\s*=.*\bAutoLoader\b/;
- last if /^__END__/;
- }
- if ($check_for_autoloader && !$autoloader_seen){
- print "AutoSplit skipped $filename: no AutoLoader used\n"
- if ($Verbose>=2);
- return 0;
- }
- $_ or die "Can't find __END__ in $filename\n";
-
- $def_package or die "Can't find 'package Name;' in $filename\n";
-
- my($modpname) = _modpname($def_package);
- if ($Is_VMS) {
- $modpname = VMS::Filespec::unixify($modpname); # may have dirs
- }
-
- # this _has_ to match so we have a reasonable timestamp file
- die "Package $def_package ($modpname.pm) does not ".
- "match filename $filename"
- unless ($filename =~ m/\Q$modpname.pm\E$/ or
- ($^O eq 'dos') or ($^O eq 'MSWin32') or
- $Is_VMS && $filename =~ m/$modpname.pm/i);
-
- my($al_idx_file) = catfile($autodir, $modpname, $IndexFile);
-
- if ($check_mod_time){
- my($al_ts_time) = (stat("$al_idx_file"))[9] || 1;
- if ($al_ts_time >= $pm_mod_time){
- print "AutoSplit skipped ($al_idx_file newer than $filename)\n"
- if ($Verbose >= 2);
- return undef; # one undef, not a list
- }
- }
-
- my($modnamedir) = catfile($autodir, $modpname);
- print "AutoSplitting $filename ($modnamedir)\n"
- if $Verbose;
-
- unless (-d $modnamedir){
- mkpath($modnamedir,0,0777);
- }
-
- # We must try to deal with some SVR3 systems with a limit of 14
- # characters for file names. Sadly we *cannot* simply truncate all
- # file names to 14 characters on these systems because we *must*
- # create filenames which exactly match the names used by AutoLoader.pm.
- # This is a problem because some systems silently truncate the file
- # names while others treat long file names as an error.
-
- my $Is83 = $maxflen==11; # plain, case INSENSITIVE dos filenames
-
- my(@subnames, $subname, %proto, %package);
- my @cache = ();
- my $caching = 1;
- $last_package = '';
- while (<IN>) {
- $fnr++;
- $in_pod = 1 if /^=\w/;
- $in_pod = 0 if /^=cut/;
- next if ($in_pod || /^=cut/);
- # the following (tempting) old coding gives big troubles if a
- # cut is forgotten at EOF:
- # next if /^=\w/ .. /^=cut/;
- if (/^package\s+([\w:]+)\s*;/) {
- $this_package = $def_package = $1;
- }
- if (/^sub\s+([\w:]+)(\s*(?:\(.*?\))?(?:$attr_list)?)/) {
- print OUT "# end of $last_package\::$subname\n1;\n"
- if $last_package;
- $subname = $1;
- my $proto = $2 || '';
- if ($subname =~ s/(.*):://){
- $this_package = $1;
- } else {
- $this_package = $def_package;
- }
- my $fq_subname = "$this_package\::$subname";
- $package{$fq_subname} = $this_package;
- $proto{$fq_subname} = $proto;
- push(@subnames, $fq_subname);
- my($lname, $sname) = ($subname, substr($subname,0,$maxflen-3));
- $modpname = _modpname($this_package);
- my($modnamedir) = catfile($autodir, $modpname);
- mkpath($modnamedir,0,0777);
- my($lpath) = catfile($modnamedir, "$lname.al");
- my($spath) = catfile($modnamedir, "$sname.al");
- my $path;
- if (!$Is83 and open(OUT, ">$lpath")){
- $path=$lpath;
- print " writing $lpath\n" if ($Verbose>=2);
- } else {
- open(OUT, ">$spath") or die "Can't create $spath: $!\n";
- $path=$spath;
- print " writing $spath (with truncated name)\n"
- if ($Verbose>=1);
- }
- push(@outfiles, $path);
- print OUT <<EOT;
-# NOTE: Derived from $filename.
-# Changes made here will be lost when autosplit again.
-# See AutoSplit.pm.
-package $this_package;
-
-#line $fnr "$filename (autosplit into $path)"
-EOT
- print OUT @cache;
- @cache = ();
- $caching = 0;
- }
- if($caching) {
- push(@cache, $_) if @cache || /\S/;
- } else {
- print OUT $_;
- }
- if(/^\}/) {
- if($caching) {
- print OUT @cache;
- @cache = ();
- }
- print OUT "\n";
- $caching = 1;
- }
- $last_package = $this_package if defined $this_package;
- }
- if ($subname) {
- print OUT @cache,"1;\n# end of $last_package\::$subname\n";
- close(OUT);
- }
- close(IN);
-
- if (!$keep){ # don't keep any obsolete *.al files in the directory
- my(%outfiles);
- # @outfiles{@outfiles} = @outfiles;
- # perl downcases all filenames on VMS (which upcases all filenames) so
- # we'd better downcase the sub name list too, or subs with upper case
- # letters in them will get their .al files deleted right after they're
- # created. (The mixed case sub name won't match the all-lowercase
- # filename, and so be cleaned up as a scrap file)
- if ($Is_VMS or $Is83) {
- %outfiles = map {lc($_) => lc($_) } @outfiles;
- } else {
- @outfiles{@outfiles} = @outfiles;
- }
- my(%outdirs,@outdirs);
- for (@outfiles) {
- $outdirs{File::Basename::dirname($_)}||=1;
- }
- for my $dir (keys %outdirs) {
- opendir(OUTDIR,$dir);
- foreach (sort readdir(OUTDIR)){
- next unless /\.al\z/;
- my($file) = catfile($dir, $_);
- $file = lc $file if $Is83 or $Is_VMS;
- next if $outfiles{$file};
- print " deleting $file\n" if ($Verbose>=2);
- my($deleted,$thistime); # catch all versions on VMS
- do { $deleted += ($thistime = unlink $file) } while ($thistime);
- carp "Unable to delete $file: $!" unless $deleted;
- }
- closedir(OUTDIR);
- }
- }
-
- open(TS,">$al_idx_file") or
- carp "AutoSplit: unable to create timestamp file ($al_idx_file): $!";
- print TS "# Index created by AutoSplit for $filename\n";
- print TS "# (file acts as timestamp)\n";
- $last_package = '';
- for my $fqs (@subnames) {
- my($subname) = $fqs;
- $subname =~ s/.*:://;
- print TS "package $package{$fqs};\n"
- unless $last_package eq $package{$fqs};
- print TS "sub $subname $proto{$fqs};\n";
- $last_package = $package{$fqs};
- }
- print TS "1;\n";
- close(TS);
-
- _check_unique($filename, $Maxlen, 1, @outfiles);
-
- @outfiles;
-}
-
-sub _modpname ($) {
- my($package) = @_;
- my $modpname = $package;
- if ($^O eq 'MSWin32') {
- $modpname =~ s#::#\\#g;
- } else {
- while ($modpname =~ m#(.*?[^:])::([^:].*)#) {
- $modpname = catfile($1, $2);
- }
- }
- $modpname;
-}
-
-sub _check_unique {
- my($filename, $maxlen, $warn, @outfiles) = @_;
- my(%notuniq) = ();
- my(%shorts) = ();
- my(@toolong) = grep(
- length(File::Basename::basename($_))
- > $maxlen,
- @outfiles
- );
-
- foreach (@toolong){
- my($dir) = File::Basename::dirname($_);
- my($file) = File::Basename::basename($_);
- my($trunc) = substr($file,0,$maxlen);
- $notuniq{$dir}{$trunc} = 1 if $shorts{$dir}{$trunc};
- $shorts{$dir}{$trunc} = $shorts{$dir}{$trunc} ?
- "$shorts{$dir}{$trunc}, $file" : $file;
- }
- if (%notuniq && $warn){
- print "$filename: some names are not unique when " .
- "truncated to $maxlen characters:\n";
- foreach my $dir (sort keys %notuniq){
- print " directory $dir:\n";
- foreach my $trunc (sort keys %{$notuniq{$dir}}) {
- print " $shorts{$dir}{$trunc} truncate to $trunc\n";
- }
- }
- }
-}
-
-1;
-__END__
-
-# test functions so AutoSplit.pm can be applied to itself:
-sub test1 ($) { "test 1\n"; }
-sub test2 ($$) { "test 2\n"; }
-sub test3 ($$$) { "test 3\n"; }
-sub testtesttesttest4_1 { "test 4\n"; }
-sub testtesttesttest4_2 { "duplicate test 4\n"; }
-sub Just::Another::test5 { "another test 5\n"; }
-sub test6 { return join ":", __FILE__,__LINE__; }
-package Yet::Another::AutoSplit;
-sub testtesttesttest4_1 ($) { "another test 4\n"; }
-sub testtesttesttest4_2 ($$) { "another duplicate test 4\n"; }
-package Yet::More::Attributes;
-sub test_a1 ($) : locked :locked { 1; }
-sub test_a2 : locked { 1; }
diff --git a/contrib/perl5/lib/Benchmark.pm b/contrib/perl5/lib/Benchmark.pm
deleted file mode 100644
index b557be3..0000000
--- a/contrib/perl5/lib/Benchmark.pm
+++ /dev/null
@@ -1,798 +0,0 @@
-package Benchmark;
-
-=head1 NAME
-
-Benchmark - benchmark running times of Perl code
-
-=head1 SYNOPSIS
-
- timethis ($count, "code");
-
- # Use Perl code in strings...
- timethese($count, {
- 'Name1' => '...code1...',
- 'Name2' => '...code2...',
- });
-
- # ... or use subroutine references.
- timethese($count, {
- 'Name1' => sub { ...code1... },
- 'Name2' => sub { ...code2... },
- });
-
- # cmpthese can be used both ways as well
- cmpthese($count, {
- 'Name1' => '...code1...',
- 'Name2' => '...code2...',
- });
-
- cmpthese($count, {
- 'Name1' => sub { ...code1... },
- 'Name2' => sub { ...code2... },
- });
-
- # ...or in two stages
- $results = timethese($count,
- {
- 'Name1' => sub { ...code1... },
- 'Name2' => sub { ...code2... },
- },
- 'none'
- );
- cmpthese( $results ) ;
-
- $t = timeit($count, '...other code...')
- print "$count loops of other code took:",timestr($t),"\n";
-
- $t = countit($time, '...other code...')
- $count = $t->iters ;
- print "$count loops of other code took:",timestr($t),"\n";
-
-=head1 DESCRIPTION
-
-The Benchmark module encapsulates a number of routines to help you
-figure out how long it takes to execute some code.
-
-timethis - run a chunk of code several times
-
-timethese - run several chunks of code several times
-
-cmpthese - print results of timethese as a comparison chart
-
-timeit - run a chunk of code and see how long it goes
-
-countit - see how many times a chunk of code runs in a given time
-
-
-=head2 Methods
-
-=over 10
-
-=item new
-
-Returns the current time. Example:
-
- use Benchmark;
- $t0 = new Benchmark;
- # ... your code here ...
- $t1 = new Benchmark;
- $td = timediff($t1, $t0);
- print "the code took:",timestr($td),"\n";
-
-=item debug
-
-Enables or disable debugging by setting the C<$Benchmark::Debug> flag:
-
- debug Benchmark 1;
- $t = timeit(10, ' 5 ** $Global ');
- debug Benchmark 0;
-
-=item iters
-
-Returns the number of iterations.
-
-=back
-
-=head2 Standard Exports
-
-The following routines will be exported into your namespace
-if you use the Benchmark module:
-
-=over 10
-
-=item timeit(COUNT, CODE)
-
-Arguments: COUNT is the number of times to run the loop, and CODE is
-the code to run. CODE may be either a code reference or a string to
-be eval'd; either way it will be run in the caller's package.
-
-Returns: a Benchmark object.
-
-=item timethis ( COUNT, CODE, [ TITLE, [ STYLE ]] )
-
-Time COUNT iterations of CODE. CODE may be a string to eval or a
-code reference; either way the CODE will run in the caller's package.
-Results will be printed to STDOUT as TITLE followed by the times.
-TITLE defaults to "timethis COUNT" if none is provided. STYLE
-determines the format of the output, as described for timestr() below.
-
-The COUNT can be zero or negative: this means the I<minimum number of
-CPU seconds> to run. A zero signifies the default of 3 seconds. For
-example to run at least for 10 seconds:
-
- timethis(-10, $code)
-
-or to run two pieces of code tests for at least 3 seconds:
-
- timethese(0, { test1 => '...', test2 => '...'})
-
-CPU seconds is, in UNIX terms, the user time plus the system time of
-the process itself, as opposed to the real (wallclock) time and the
-time spent by the child processes. Less than 0.1 seconds is not
-accepted (-0.01 as the count, for example, will cause a fatal runtime
-exception).
-
-Note that the CPU seconds is the B<minimum> time: CPU scheduling and
-other operating system factors may complicate the attempt so that a
-little bit more time is spent. The benchmark output will, however,
-also tell the number of C<$code> runs/second, which should be a more
-interesting number than the actually spent seconds.
-
-Returns a Benchmark object.
-
-=item timethese ( COUNT, CODEHASHREF, [ STYLE ] )
-
-The CODEHASHREF is a reference to a hash containing names as keys
-and either a string to eval or a code reference for each value.
-For each (KEY, VALUE) pair in the CODEHASHREF, this routine will
-call
-
- timethis(COUNT, VALUE, KEY, STYLE)
-
-The routines are called in string comparison order of KEY.
-
-The COUNT can be zero or negative, see timethis().
-
-Returns a hash of Benchmark objects, keyed by name.
-
-=item timediff ( T1, T2 )
-
-Returns the difference between two Benchmark times as a Benchmark
-object suitable for passing to timestr().
-
-=item timestr ( TIMEDIFF, [ STYLE, [ FORMAT ] ] )
-
-Returns a string that formats the times in the TIMEDIFF object in
-the requested STYLE. TIMEDIFF is expected to be a Benchmark object
-similar to that returned by timediff().
-
-STYLE can be any of 'all', 'none', 'noc', 'nop' or 'auto'. 'all' shows
-each of the 5 times available ('wallclock' time, user time, system time,
-user time of children, and system time of children). 'noc' shows all
-except the two children times. 'nop' shows only wallclock and the
-two children times. 'auto' (the default) will act as 'all' unless
-the children times are both zero, in which case it acts as 'noc'.
-'none' prevents output.
-
-FORMAT is the L<printf(3)>-style format specifier (without the
-leading '%') to use to print the times. It defaults to '5.2f'.
-
-=back
-
-=head2 Optional Exports
-
-The following routines will be exported into your namespace
-if you specifically ask that they be imported:
-
-=over 10
-
-=item clearcache ( COUNT )
-
-Clear the cached time for COUNT rounds of the null loop.
-
-=item clearallcache ( )
-
-Clear all cached times.
-
-=item cmpthese ( COUT, CODEHASHREF, [ STYLE ] )
-
-=item cmpthese ( RESULTSHASHREF )
-
-Optionally calls timethese(), then outputs comparison chart. This
-chart is sorted from slowest to fastest, and shows the percent
-speed difference between each pair of tests. Can also be passed
-the data structure that timethese() returns:
-
- $results = timethese( .... );
- cmpthese( $results );
-
-Returns the data structure returned by timethese() (or passed in).
-
-=item countit(TIME, CODE)
-
-Arguments: TIME is the minimum length of time to run CODE for, and CODE is
-the code to run. CODE may be either a code reference or a string to
-be eval'd; either way it will be run in the caller's package.
-
-TIME is I<not> negative. countit() will run the loop many times to
-calculate the speed of CODE before running it for TIME. The actual
-time run for will usually be greater than TIME due to system clock
-resolution, so it's best to look at the number of iterations divided
-by the times that you are concerned with, not just the iterations.
-
-Returns: a Benchmark object.
-
-=item disablecache ( )
-
-Disable caching of timings for the null loop. This will force Benchmark
-to recalculate these timings for each new piece of code timed.
-
-=item enablecache ( )
-
-Enable caching of timings for the null loop. The time taken for COUNT
-rounds of the null loop will be calculated only once for each
-different COUNT used.
-
-=item timesum ( T1, T2 )
-
-Returns the sum of two Benchmark times as a Benchmark object suitable
-for passing to timestr().
-
-=back
-
-=head1 NOTES
-
-The data is stored as a list of values from the time and times
-functions:
-
- ($real, $user, $system, $children_user, $children_system, $iters)
-
-in seconds for the whole loop (not divided by the number of rounds).
-
-The timing is done using time(3) and times(3).
-
-Code is executed in the caller's package.
-
-The time of the null loop (a loop with the same
-number of rounds but empty loop body) is subtracted
-from the time of the real loop.
-
-The null loop times can be cached, the key being the
-number of rounds. The caching can be controlled using
-calls like these:
-
- clearcache($key);
- clearallcache();
-
- disablecache();
- enablecache();
-
-Caching is off by default, as it can (usually slightly) decrease
-accuracy and does not usually noticably affect runtimes.
-
-=head1 EXAMPLES
-
-For example,
-
- use Benchmark;$x=3;cmpthese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})
-
-outputs something like this:
-
- Benchmark: running a, b, each for at least 5 CPU seconds...
- a: 10 wallclock secs ( 5.14 usr + 0.13 sys = 5.27 CPU) @ 3835055.60/s (n=20210743)
- b: 5 wallclock secs ( 5.41 usr + 0.00 sys = 5.41 CPU) @ 1574944.92/s (n=8520452)
- Rate b a
- b 1574945/s -- -59%
- a 3835056/s 144% --
-
-while
-
- use Benchmark;
- $x=3;
- $r=timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}},'none');
- cmpthese($r);
-
-outputs something like this:
-
- Rate b a
- b 1559428/s -- -62%
- a 4152037/s 166% --
-
-
-=head1 INHERITANCE
-
-Benchmark inherits from no other class, except of course
-for Exporter.
-
-=head1 CAVEATS
-
-Comparing eval'd strings with code references will give you
-inaccurate results: a code reference will show a slightly slower
-execution time than the equivalent eval'd string.
-
-The real time timing is done using time(2) and
-the granularity is therefore only one second.
-
-Short tests may produce negative figures because perl
-can appear to take longer to execute the empty loop
-than a short test; try:
-
- timethis(100,'1');
-
-The system time of the null loop might be slightly
-more than the system time of the loop with the actual
-code and therefore the difference might end up being E<lt> 0.
-
-=head1 SEE ALSO
-
-L<Devel::DProf> - a Perl code profiler
-
-=head1 AUTHORS
-
-Jarkko Hietaniemi <F<jhi@iki.fi>>, Tim Bunce <F<Tim.Bunce@ig.co.uk>>
-
-=head1 MODIFICATION HISTORY
-
-September 8th, 1994; by Tim Bunce.
-
-March 28th, 1997; by Hugo van der Sanden: added support for code
-references and the already documented 'debug' method; revamped
-documentation.
-
-April 04-07th, 1997: by Jarkko Hietaniemi, added the run-for-some-time
-functionality.
-
-September, 1999; by Barrie Slaymaker: math fixes and accuracy and
-efficiency tweaks. Added cmpthese(). A result is now returned from
-timethese(). Exposed countit() (was runfor()).
-
-=cut
-
-# evaluate something in a clean lexical environment
-sub _doeval { eval shift }
-
-#
-# put any lexicals at file scope AFTER here
-#
-
-use Carp;
-use Exporter;
-@ISA=(Exporter);
-@EXPORT=qw(timeit timethis timethese timediff timestr);
-@EXPORT_OK=qw(timesum cmpthese countit
- clearcache clearallcache disablecache enablecache);
-
-$VERSION = 1.00;
-
-&init;
-
-sub init {
- $debug = 0;
- $min_count = 4;
- $min_cpu = 0.4;
- $defaultfmt = '5.2f';
- $defaultstyle = 'auto';
- # The cache can cause a slight loss of sys time accuracy. If a
- # user does many tests (>10) with *very* large counts (>10000)
- # or works on a very slow machine the cache may be useful.
- &disablecache;
- &clearallcache;
-}
-
-sub debug { $debug = ($_[1] != 0); }
-
-# The cache needs two branches: 's' for strings and 'c' for code. The
-# emtpy loop is different in these two cases.
-sub clearcache { delete $cache{"$_[0]c"}; delete $cache{"$_[0]s"}; }
-sub clearallcache { %cache = (); }
-sub enablecache { $cache = 1; }
-sub disablecache { $cache = 0; }
-
-# --- Functions to process the 'time' data type
-
-sub new { my @t = (time, times, @_ == 2 ? $_[1] : 0);
- print "new=@t\n" if $debug;
- bless \@t; }
-
-sub cpu_p { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $pu+$ps ; }
-sub cpu_c { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $cu+$cs ; }
-sub cpu_a { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $pu+$ps+$cu+$cs ; }
-sub real { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $r ; }
-sub iters { $_[0]->[5] ; }
-
-sub timediff {
- my($a, $b) = @_;
- my @r;
- for (my $i=0; $i < @$a; ++$i) {
- push(@r, $a->[$i] - $b->[$i]);
- }
- bless \@r;
-}
-
-sub timesum {
- my($a, $b) = @_;
- my @r;
- for (my $i=0; $i < @$a; ++$i) {
- push(@r, $a->[$i] + $b->[$i]);
- }
- bless \@r;
-}
-
-sub timestr {
- my($tr, $style, $f) = @_;
- my @t = @$tr;
- warn "bad time value (@t)" unless @t==6;
- my($r, $pu, $ps, $cu, $cs, $n) = @t;
- my($pt, $ct, $tt) = ($tr->cpu_p, $tr->cpu_c, $tr->cpu_a);
- $f = $defaultfmt unless defined $f;
- # format a time in the required style, other formats may be added here
- $style ||= $defaultstyle;
- $style = ($ct>0) ? 'all' : 'noc' if $style eq 'auto';
- my $s = "@t $style"; # default for unknown style
- $s=sprintf("%2d wallclock secs (%$f usr %$f sys + %$f cusr %$f csys = %$f CPU)",
- $r,$pu,$ps,$cu,$cs,$tt) if $style eq 'all';
- $s=sprintf("%2d wallclock secs (%$f usr + %$f sys = %$f CPU)",
- $r,$pu,$ps,$pt) if $style eq 'noc';
- $s=sprintf("%2d wallclock secs (%$f cusr + %$f csys = %$f CPU)",
- $r,$cu,$cs,$ct) if $style eq 'nop';
- $s .= sprintf(" @ %$f/s (n=$n)", $n / ( $pu + $ps )) if $n && $pu+$ps;
- $s;
-}
-
-sub timedebug {
- my($msg, $t) = @_;
- print STDERR "$msg",timestr($t),"\n" if $debug;
-}
-
-# --- Functions implementing low-level support for timing loops
-
-sub runloop {
- my($n, $c) = @_;
-
- $n+=0; # force numeric now, so garbage won't creep into the eval
- croak "negative loopcount $n" if $n<0;
- confess "Usage: runloop(number, [string | coderef])" unless defined $c;
- my($t0, $t1, $td); # before, after, difference
-
- # find package of caller so we can execute code there
- my($curpack) = caller(0);
- my($i, $pack)= 0;
- while (($pack) = caller(++$i)) {
- last if $pack ne $curpack;
- }
-
- my ($subcode, $subref);
- if (ref $c eq 'CODE') {
- $subcode = "sub { for (1 .. $n) { local \$_; package $pack; &\$c; } }";
- $subref = eval $subcode;
- }
- else {
- $subcode = "sub { for (1 .. $n) { local \$_; package $pack; $c;} }";
- $subref = _doeval($subcode);
- }
- croak "runloop unable to compile '$c': $@\ncode: $subcode\n" if $@;
- print STDERR "runloop $n '$subcode'\n" if $debug;
-
- # Wait for the user timer to tick. This makes the error range more like
- # -0.01, +0. If we don't wait, then it's more like -0.01, +0.01. This
- # may not seem important, but it significantly reduces the chances of
- # getting a too low initial $n in the initial, 'find the minimum' loop
- # in &countit. This, in turn, can reduce the number of calls to
- # &runloop a lot, and thus reduce additive errors.
- my $tbase = Benchmark->new(0)->[1];
- while ( ( $t0 = Benchmark->new(0) )->[1] == $tbase ) {} ;
- &$subref;
- $t1 = Benchmark->new($n);
- $td = &timediff($t1, $t0);
- timedebug("runloop:",$td);
- $td;
-}
-
-
-sub timeit {
- my($n, $code) = @_;
- my($wn, $wc, $wd);
-
- printf STDERR "timeit $n $code\n" if $debug;
- my $cache_key = $n . ( ref( $code ) ? 'c' : 's' );
- if ($cache && exists $cache{$cache_key} ) {
- $wn = $cache{$cache_key};
- } else {
- $wn = &runloop($n, ref( $code ) ? sub { undef } : '' );
- # Can't let our baseline have any iterations, or they get subtracted
- # out of the result.
- $wn->[5] = 0;
- $cache{$cache_key} = $wn;
- }
-
- $wc = &runloop($n, $code);
-
- $wd = timediff($wc, $wn);
- timedebug("timeit: ",$wc);
- timedebug(" - ",$wn);
- timedebug(" = ",$wd);
-
- $wd;
-}
-
-
-my $default_for = 3;
-my $min_for = 0.1;
-
-
-sub countit {
- my ( $tmax, $code ) = @_;
-
- if ( not defined $tmax or $tmax == 0 ) {
- $tmax = $default_for;
- } elsif ( $tmax < 0 ) {
- $tmax = -$tmax;
- }
-
- die "countit($tmax, ...): timelimit cannot be less than $min_for.\n"
- if $tmax < $min_for;
-
- my ($n, $tc);
-
- # First find the minimum $n that gives a significant timing.
- for ($n = 1; ; $n *= 2 ) {
- my $td = timeit($n, $code);
- $tc = $td->[1] + $td->[2];
- last if $tc > 0.1;
- }
-
- my $nmin = $n;
-
- # Get $n high enough that we can guess the final $n with some accuracy.
- my $tpra = 0.1 * $tmax; # Target/time practice.
- while ( $tc < $tpra ) {
- # The 5% fudge is to keep us from iterating again all
- # that often (this speeds overall responsiveness when $tmax is big
- # and we guess a little low). This does not noticably affect
- # accuracy since we're not couting these times.
- $n = int( $tpra * 1.05 * $n / $tc ); # Linear approximation.
- my $td = timeit($n, $code);
- my $new_tc = $td->[1] + $td->[2];
- # Make sure we are making progress.
- $tc = $new_tc > 1.2 * $tc ? $new_tc : 1.2 * $tc;
- }
-
- # Now, do the 'for real' timing(s), repeating until we exceed
- # the max.
- my $ntot = 0;
- my $rtot = 0;
- my $utot = 0.0;
- my $stot = 0.0;
- my $cutot = 0.0;
- my $cstot = 0.0;
- my $ttot = 0.0;
-
- # The 5% fudge is because $n is often a few % low even for routines
- # with stable times and avoiding extra timeit()s is nice for
- # accuracy's sake.
- $n = int( $n * ( 1.05 * $tmax / $tc ) );
-
- while () {
- my $td = timeit($n, $code);
- $ntot += $n;
- $rtot += $td->[0];
- $utot += $td->[1];
- $stot += $td->[2];
- $cutot += $td->[3];
- $cstot += $td->[4];
- $ttot = $utot + $stot;
- last if $ttot >= $tmax;
-
- $ttot = 0.01 if $ttot < 0.01;
- my $r = $tmax / $ttot - 1; # Linear approximation.
- $n = int( $r * $ntot );
- $n = $nmin if $n < $nmin;
- }
-
- return bless [ $rtot, $utot, $stot, $cutot, $cstot, $ntot ];
-}
-
-# --- Functions implementing high-level time-then-print utilities
-
-sub n_to_for {
- my $n = shift;
- return $n == 0 ? $default_for : $n < 0 ? -$n : undef;
-}
-
-sub timethis{
- my($n, $code, $title, $style) = @_;
- my($t, $for, $forn);
-
- if ( $n > 0 ) {
- croak "non-integer loopcount $n, stopped" if int($n)<$n;
- $t = timeit($n, $code);
- $title = "timethis $n" unless defined $title;
- } else {
- $fort = n_to_for( $n );
- $t = countit( $fort, $code );
- $title = "timethis for $fort" unless defined $title;
- $forn = $t->[-1];
- }
- local $| = 1;
- $style = "" unless defined $style;
- printf("%10s: ", $title) unless $style eq 'none';
- print timestr($t, $style, $defaultfmt),"\n" unless $style eq 'none';
-
- $n = $forn if defined $forn;
-
- # A conservative warning to spot very silly tests.
- # Don't assume that your benchmark is ok simply because
- # you don't get this warning!
- print " (warning: too few iterations for a reliable count)\n"
- if $n < $min_count
- || ($t->real < 1 && $n < 1000)
- || $t->cpu_a < $min_cpu;
- $t;
-}
-
-sub timethese{
- my($n, $alt, $style) = @_;
- die "usage: timethese(count, { 'Name1'=>'code1', ... }\n"
- unless ref $alt eq HASH;
- my @names = sort keys %$alt;
- $style = "" unless defined $style;
- print "Benchmark: " unless $style eq 'none';
- if ( $n > 0 ) {
- croak "non-integer loopcount $n, stopped" if int($n)<$n;
- print "timing $n iterations of" unless $style eq 'none';
- } else {
- print "running" unless $style eq 'none';
- }
- print " ", join(', ',@names) unless $style eq 'none';
- unless ( $n > 0 ) {
- my $for = n_to_for( $n );
- print ", each for at least $for CPU seconds" unless $style eq 'none';
- }
- print "...\n" unless $style eq 'none';
-
- # we could save the results in an array and produce a summary here
- # sum, min, max, avg etc etc
- my %results;
- foreach my $name (@names) {
- $results{$name} = timethis ($n, $alt -> {$name}, $name, $style);
- }
-
- return \%results;
-}
-
-sub cmpthese{
- my $results = ref $_[0] ? $_[0] : timethese( @_ );
-
- return $results
- if defined $_[2] && $_[2] eq 'none';
-
- # Flatten in to an array of arrays with the name as the first field
- my @vals = map{ [ $_, @{$results->{$_}} ] } keys %$results;
-
- for (@vals) {
- # The epsilon fudge here is to prevent div by 0. Since clock
- # resolutions are much larger, it's below the noise floor.
- my $rate = $_->[6] / ( $_->[2] + $_->[3] + 0.000000000000001 );
- $_->[7] = $rate;
- }
-
- # Sort by rate
- @vals = sort { $a->[7] <=> $b->[7] } @vals;
-
- # If more than half of the rates are greater than one...
- my $display_as_rate = $vals[$#vals>>1]->[7] > 1;
-
- my @rows;
- my @col_widths;
-
- my @top_row = (
- '',
- $display_as_rate ? 'Rate' : 's/iter',
- map { $_->[0] } @vals
- );
-
- push @rows, \@top_row;
- @col_widths = map { length( $_ ) } @top_row;
-
- # Build the data rows
- # We leave the last column in even though it never has any data. Perhaps
- # it should go away. Also, perhaps a style for a single column of
- # percentages might be nice.
- for my $row_val ( @vals ) {
- my @row;
-
- # Column 0 = test name
- push @row, $row_val->[0];
- $col_widths[0] = length( $row_val->[0] )
- if length( $row_val->[0] ) > $col_widths[0];
-
- # Column 1 = performance
- my $row_rate = $row_val->[7];
-
- # We assume that we'll never get a 0 rate.
- my $a = $display_as_rate ? $row_rate : 1 / $row_rate;
-
- # Only give a few decimal places before switching to sci. notation,
- # since the results aren't usually that accurate anyway.
- my $format =
- $a >= 100 ?
- "%0.0f" :
- $a >= 10 ?
- "%0.1f" :
- $a >= 1 ?
- "%0.2f" :
- $a >= 0.1 ?
- "%0.3f" :
- "%0.2e";
-
- $format .= "/s"
- if $display_as_rate;
- # Using $b here due to optimizing bug in _58 through _61
- my $b = sprintf( $format, $a );
- push @row, $b;
- $col_widths[1] = length( $b )
- if length( $b ) > $col_widths[1];
-
- # Columns 2..N = performance ratios
- my $skip_rest = 0;
- for ( my $col_num = 0 ; $col_num < @vals ; ++$col_num ) {
- my $col_val = $vals[$col_num];
- my $out;
- if ( $skip_rest ) {
- $out = '';
- }
- elsif ( $col_val->[0] eq $row_val->[0] ) {
- $out = "--";
- # $skip_rest = 1;
- }
- else {
- my $col_rate = $col_val->[7];
- $out = sprintf( "%.0f%%", 100*$row_rate/$col_rate - 100 );
- }
- push @row, $out;
- $col_widths[$col_num+2] = length( $out )
- if length( $out ) > $col_widths[$col_num+2];
-
- # A little wierdness to set the first column width properly
- $col_widths[$col_num+2] = length( $col_val->[0] )
- if length( $col_val->[0] ) > $col_widths[$col_num+2];
- }
- push @rows, \@row;
- }
-
- # Equalize column widths in the chart as much as possible without
- # exceeding 80 characters. This does not use or affect cols 0 or 1.
- my @sorted_width_refs =
- sort { $$a <=> $$b } map { \$_ } @col_widths[2..$#col_widths];
- my $max_width = ${$sorted_width_refs[-1]};
-
- my $total = @col_widths - 1 ;
- for ( @col_widths ) { $total += $_ }
-
- STRETCHER:
- while ( $total < 80 ) {
- my $min_width = ${$sorted_width_refs[0]};
- last
- if $min_width == $max_width;
- for ( @sorted_width_refs ) {
- last
- if $$_ > $min_width;
- ++$$_;
- ++$total;
- last STRETCHER
- if $total >= 80;
- }
- }
-
- # Dump the output
- my $format = join( ' ', map { "%${_}s" } @col_widths ) . "\n";
- substr( $format, 1, 0 ) = '-';
- for ( @rows ) {
- printf $format, @$_;
- }
-
- return $results;
-}
-
-
-1;
diff --git a/contrib/perl5/lib/CPAN.pm b/contrib/perl5/lib/CPAN.pm
deleted file mode 100644
index fdaadb3..0000000
--- a/contrib/perl5/lib/CPAN.pm
+++ /dev/null
@@ -1,6992 +0,0 @@
-# -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*-
-package CPAN;
-$VERSION = '1.59_54';
-# $Id: CPAN.pm,v 1.385 2001/02/09 21:37:57 k Exp $
-
-# only used during development:
-$Revision = "";
-# $Revision = "[".substr(q$Revision: 1.385 $, 10)."]";
-
-use Carp ();
-use Config ();
-use Cwd ();
-use DirHandle;
-use Exporter ();
-use ExtUtils::MakeMaker (); # $SelfLoader::DEBUG=1;
-use File::Basename ();
-use File::Copy ();
-use File::Find;
-use File::Path ();
-use FileHandle ();
-use Safe ();
-use Text::ParseWords ();
-use Text::Wrap;
-use File::Spec;
-no lib "."; # we need to run chdir all over and we would get at wrong
- # libraries there
-
-END { $End++; &cleanup; }
-
-%CPAN::DEBUG = qw[
- CPAN 1
- Index 2
- InfoObj 4
- Author 8
- Distribution 16
- Bundle 32
- Module 64
- CacheMgr 128
- Complete 256
- FTP 512
- Shell 1024
- Eval 2048
- Config 4096
- Tarzip 8192
- Version 16384
- Queue 32768
-];
-
-$CPAN::DEBUG ||= 0;
-$CPAN::Signal ||= 0;
-$CPAN::Frontend ||= "CPAN::Shell";
-$CPAN::Defaultsite ||= "ftp://ftp.perl.org/pub/CPAN";
-
-package CPAN;
-use strict qw(vars);
-
-use vars qw($VERSION @EXPORT $AUTOLOAD $DEBUG $META $HAS_USABLE $term
- $Revision $Signal $End $Suppress_readline $Frontend
- $Defaultsite $Have_warned);
-
-@CPAN::ISA = qw(CPAN::Debug Exporter);
-
-@EXPORT = qw(
- autobundle bundle expand force get cvs_import
- install make readme recompile shell test clean
- );
-
-#-> sub CPAN::AUTOLOAD ;
-sub AUTOLOAD {
- my($l) = $AUTOLOAD;
- $l =~ s/.*:://;
- my(%EXPORT);
- @EXPORT{@EXPORT} = '';
- CPAN::Config->load unless $CPAN::Config_loaded++;
- if (exists $EXPORT{$l}){
- CPAN::Shell->$l(@_);
- } else {
- $CPAN::Frontend->mywarn(qq{Unknown command "$AUTOLOAD". }.
- qq{Type ? for help.
-});
- }
-}
-
-#-> sub CPAN::shell ;
-sub shell {
- my($self) = @_;
- $Suppress_readline = ! -t STDIN unless defined $Suppress_readline;
- CPAN::Config->load unless $CPAN::Config_loaded++;
-
- my $oprompt = shift || "cpan> ";
- my $prompt = $oprompt;
- my $commandline = shift || "";
-
- local($^W) = 1;
- unless ($Suppress_readline) {
- require Term::ReadLine;
- if (! $term
- or
- $term->ReadLine eq "Term::ReadLine::Stub"
- ) {
- $term = Term::ReadLine->new('CPAN Monitor');
- }
- if ($term->ReadLine eq "Term::ReadLine::Gnu") {
- my $attribs = $term->Attribs;
- $attribs->{attempted_completion_function} = sub {
- &CPAN::Complete::gnu_cpl;
- }
- } else {
- $readline::rl_completion_function =
- $readline::rl_completion_function = 'CPAN::Complete::cpl';
- }
- # $term->OUT is autoflushed anyway
- my $odef = select STDERR;
- $| = 1;
- select STDOUT;
- $| = 1;
- select $odef;
- }
-
- # no strict; # I do not recall why no strict was here (2000-09-03)
- $META->checklock();
- my $cwd = CPAN::anycwd();
- my $try_detect_readline;
- $try_detect_readline = $term->ReadLine eq "Term::ReadLine::Stub" if $term;
- my $rl_avail = $Suppress_readline ? "suppressed" :
- ($term->ReadLine ne "Term::ReadLine::Stub") ? "enabled" :
- "available (try 'install Bundle::CPAN')";
-
- $CPAN::Frontend->myprint(
- sprintf qq{
-cpan shell -- CPAN exploration and modules installation (v%s%s)
-ReadLine support %s
-
-},
- $CPAN::VERSION,
- $CPAN::Revision,
- $rl_avail
- )
- unless $CPAN::Config->{'inhibit_startup_message'} ;
- my($continuation) = "";
- SHELLCOMMAND: while () {
- if ($Suppress_readline) {
- print $prompt;
- last SHELLCOMMAND unless defined ($_ = <> );
- chomp;
- } else {
- last SHELLCOMMAND unless
- defined ($_ = $term->readline($prompt, $commandline));
- }
- $_ = "$continuation$_" if $continuation;
- s/^\s+//;
- next SHELLCOMMAND if /^$/;
- $_ = 'h' if /^\s*\?/;
- if (/^(?:q(?:uit)?|bye|exit)$/i) {
- last SHELLCOMMAND;
- } elsif (s/\\$//s) {
- chomp;
- $continuation = $_;
- $prompt = " > ";
- } elsif (/^\!/) {
- s/^\!//;
- my($eval) = $_;
- package CPAN::Eval;
- use vars qw($import_done);
- CPAN->import(':DEFAULT') unless $import_done++;
- CPAN->debug("eval[$eval]") if $CPAN::DEBUG;
- eval($eval);
- warn $@ if $@;
- $continuation = "";
- $prompt = $oprompt;
- } elsif (/./) {
- my(@line);
- if ($] < 5.00322) { # parsewords had a bug until recently
- @line = split;
- } else {
- eval { @line = Text::ParseWords::shellwords($_) };
- warn($@), next SHELLCOMMAND if $@;
- warn("Text::Parsewords could not parse the line [$_]"),
- next SHELLCOMMAND unless @line;
- }
- $CPAN::META->debug("line[".join("|",@line)."]") if $CPAN::DEBUG;
- my $command = shift @line;
- eval { CPAN::Shell->$command(@line) };
- warn $@ if $@;
- chdir $cwd or $CPAN::Frontend->mydie(qq{Could not chdir to "$cwd": $!});
- $CPAN::Frontend->myprint("\n");
- $continuation = "";
- $prompt = $oprompt;
- }
- } continue {
- $commandline = ""; # I do want to be able to pass a default to
- # shell, but on the second command I see no
- # use in that
- $Signal=0;
- CPAN::Queue->nullify_queue;
- if ($try_detect_readline) {
- if ($CPAN::META->has_inst("Term::ReadLine::Gnu")
- ||
- $CPAN::META->has_inst("Term::ReadLine::Perl")
- ) {
- delete $INC{"Term/ReadLine.pm"};
- my $redef = 0;
- local($SIG{__WARN__}) = CPAN::Shell::paintdots_onreload(\$redef);
- require Term::ReadLine;
- $CPAN::Frontend->myprint("\n$redef subroutines in ".
- "Term::ReadLine redefined\n");
- @_ = ($oprompt,"");
- goto &shell;
- }
- }
- }
- chdir $cwd or $CPAN::Frontend->mydie(qq{Could not chdir to "$cwd": $!});
-}
-
-package CPAN::CacheMgr;
-@CPAN::CacheMgr::ISA = qw(CPAN::InfoObj CPAN);
-use File::Find;
-
-package CPAN::Config;
-use vars qw(%can $dot_cpan);
-
-%can = (
- 'commit' => "Commit changes to disk",
- 'defaults' => "Reload defaults from disk",
- 'init' => "Interactive setting of all options",
-);
-
-package CPAN::FTP;
-use vars qw($Ua $Thesite $Themethod);
-@CPAN::FTP::ISA = qw(CPAN::Debug);
-
-package CPAN::LWP::UserAgent;
-use vars qw(@ISA $USER $PASSWD $SETUPDONE);
-# we delay requiring LWP::UserAgent and setting up inheritence until we need it
-
-package CPAN::Complete;
-@CPAN::Complete::ISA = qw(CPAN::Debug);
-@CPAN::Complete::COMMANDS = sort qw(
- ! a b d h i m o q r u autobundle clean dump
- make test install force readme reload look
- cvs_import ls
-) unless @CPAN::Complete::COMMANDS;
-
-package CPAN::Index;
-use vars qw($LAST_TIME $DATE_OF_02 $DATE_OF_03);
-@CPAN::Index::ISA = qw(CPAN::Debug);
-$LAST_TIME ||= 0;
-$DATE_OF_03 ||= 0;
-# use constant PROTOCOL => "2.0"; # outcommented to avoid warning on upgrade from 1.57
-sub PROTOCOL { 2.0 }
-
-package CPAN::InfoObj;
-@CPAN::InfoObj::ISA = qw(CPAN::Debug);
-
-package CPAN::Author;
-@CPAN::Author::ISA = qw(CPAN::InfoObj);
-
-package CPAN::Distribution;
-@CPAN::Distribution::ISA = qw(CPAN::InfoObj);
-
-package CPAN::Bundle;
-@CPAN::Bundle::ISA = qw(CPAN::Module);
-
-package CPAN::Module;
-@CPAN::Module::ISA = qw(CPAN::InfoObj);
-
-package CPAN::Shell;
-use vars qw($AUTOLOAD @ISA $COLOR_REGISTERED $ADVANCED_QUERY $PRINT_ORNAMENTING);
-@CPAN::Shell::ISA = qw(CPAN::Debug);
-$COLOR_REGISTERED ||= 0;
-$PRINT_ORNAMENTING ||= 0;
-
-#-> sub CPAN::Shell::AUTOLOAD ;
-sub AUTOLOAD {
- my($autoload) = $AUTOLOAD;
- my $class = shift(@_);
- # warn "autoload[$autoload] class[$class]";
- $autoload =~ s/.*:://;
- if ($autoload =~ /^w/) {
- if ($CPAN::META->has_inst('CPAN::WAIT')) {
- CPAN::WAIT->$autoload(@_);
- } else {
- $CPAN::Frontend->mywarn(qq{
-Commands starting with "w" require CPAN::WAIT to be installed.
-Please consider installing CPAN::WAIT to use the fulltext index.
-For this you just need to type
- install CPAN::WAIT
-});
- }
- } else {
- $CPAN::Frontend->mywarn(qq{Unknown command '$autoload'. }.
- qq{Type ? for help.
-});
- }
-}
-
-package CPAN::Tarzip;
-use vars qw($AUTOLOAD @ISA $BUGHUNTING);
-@CPAN::Tarzip::ISA = qw(CPAN::Debug);
-$BUGHUNTING = 0; # released code must have turned off
-
-package CPAN::Queue;
-
-# One use of the queue is to determine if we should or shouldn't
-# announce the availability of a new CPAN module
-
-# Now we try to use it for dependency tracking. For that to happen
-# we need to draw a dependency tree and do the leaves first. This can
-# easily be reached by running CPAN.pm recursively, but we don't want
-# to waste memory and run into deep recursion. So what we can do is
-# this:
-
-# CPAN::Queue is the package where the queue is maintained. Dependencies
-# often have high priority and must be brought to the head of the queue,
-# possibly by jumping the queue if they are already there. My first code
-# attempt tried to be extremely correct. Whenever a module needed
-# immediate treatment, I either unshifted it to the front of the queue,
-# or, if it was already in the queue, I spliced and let it bypass the
-# others. This became a too correct model that made it impossible to put
-# an item more than once into the queue. Why would you need that? Well,
-# you need temporary duplicates as the manager of the queue is a loop
-# that
-#
-# (1) looks at the first item in the queue without shifting it off
-#
-# (2) cares for the item
-#
-# (3) removes the item from the queue, *even if its agenda failed and
-# even if the item isn't the first in the queue anymore* (that way
-# protecting against never ending queues)
-#
-# So if an item has prerequisites, the installation fails now, but we
-# want to retry later. That's easy if we have it twice in the queue.
-#
-# I also expect insane dependency situations where an item gets more
-# than two lives in the queue. Simplest example is triggered by 'install
-# Foo Foo Foo'. People make this kind of mistakes and I don't want to
-# get in the way. I wanted the queue manager to be a dumb servant, not
-# one that knows everything.
-#
-# Who would I tell in this model that the user wants to be asked before
-# processing? I can't attach that information to the module object,
-# because not modules are installed but distributions. So I'd have to
-# tell the distribution object that it should ask the user before
-# processing. Where would the question be triggered then? Most probably
-# in CPAN::Distribution::rematein.
-# Hope that makes sense, my head is a bit off:-) -- AK
-
-use vars qw{ @All };
-
-# CPAN::Queue::new ;
-sub new {
- my($class,$s) = @_;
- my $self = bless { qmod => $s }, $class;
- push @All, $self;
- return $self;
-}
-
-# CPAN::Queue::first ;
-sub first {
- my $obj = $All[0];
- $obj->{qmod};
-}
-
-# CPAN::Queue::delete_first ;
-sub delete_first {
- my($class,$what) = @_;
- my $i;
- for my $i (0..$#All) {
- if ( $All[$i]->{qmod} eq $what ) {
- splice @All, $i, 1;
- return;
- }
- }
-}
-
-# CPAN::Queue::jumpqueue ;
-sub jumpqueue {
- my $class = shift;
- my @what = @_;
- CPAN->debug(sprintf("before jumpqueue All[%s] what[%s]",
- join(",",map {$_->{qmod}} @All),
- join(",",@what)
- )) if $CPAN::DEBUG;
- WHAT: for my $what (reverse @what) {
- my $jumped = 0;
- for (my $i=0; $i<$#All;$i++) { #prevent deep recursion
- CPAN->debug("i[$All[$i]]what[$what]") if $CPAN::DEBUG;
- if ($All[$i]->{qmod} eq $what){
- $jumped++;
- if ($jumped > 100) { # one's OK if e.g. just
- # processing now; more are OK if
- # user typed it several times
- $CPAN::Frontend->mywarn(
-qq{Object [$what] queued more than 100 times, ignoring}
- );
- next WHAT;
- }
- }
- }
- my $obj = bless { qmod => $what }, $class;
- unshift @All, $obj;
- }
- CPAN->debug(sprintf("after jumpqueue All[%s] what[%s]",
- join(",",map {$_->{qmod}} @All),
- join(",",@what)
- )) if $CPAN::DEBUG;
-}
-
-# CPAN::Queue::exists ;
-sub exists {
- my($self,$what) = @_;
- my @all = map { $_->{qmod} } @All;
- my $exists = grep { $_->{qmod} eq $what } @All;
- # warn "in exists what[$what] all[@all] exists[$exists]";
- $exists;
-}
-
-# CPAN::Queue::delete ;
-sub delete {
- my($self,$mod) = @_;
- @All = grep { $_->{qmod} ne $mod } @All;
-}
-
-# CPAN::Queue::nullify_queue ;
-sub nullify_queue {
- @All = ();
-}
-
-
-
-package CPAN;
-
-$META ||= CPAN->new; # In case we re-eval ourselves we need the ||
-
-# from here on only subs.
-################################################################################
-
-#-> sub CPAN::all_objects ;
-sub all_objects {
- my($mgr,$class) = @_;
- CPAN::Config->load unless $CPAN::Config_loaded++;
- CPAN->debug("mgr[$mgr] class[$class]") if $CPAN::DEBUG;
- CPAN::Index->reload;
- values %{ $META->{readwrite}{$class} }; # unsafe meta access, ok
-}
-*all = \&all_objects;
-
-# Called by shell, not in batch mode. In batch mode I see no risk in
-# having many processes updating something as installations are
-# continually checked at runtime. In shell mode I suspect it is
-# unintentional to open more than one shell at a time
-
-#-> sub CPAN::checklock ;
-sub checklock {
- my($self) = @_;
- my $lockfile = MM->catfile($CPAN::Config->{cpan_home},".lock");
- if (-f $lockfile && -M _ > 0) {
- my $fh = FileHandle->new($lockfile) or
- $CPAN::Frontend->mydie("Could not open $lockfile: $!");
- my $other = <$fh>;
- $fh->close;
- if (defined $other && $other) {
- chomp $other;
- return if $$==$other; # should never happen
- $CPAN::Frontend->mywarn(
- qq{
-There seems to be running another CPAN process ($other). Contacting...
-});
- if (kill 0, $other) {
- $CPAN::Frontend->mydie(qq{Other job is running.
-You may want to kill it and delete the lockfile, maybe. On UNIX try:
- kill $other
- rm $lockfile
-});
- } elsif (-w $lockfile) {
- my($ans) =
- ExtUtils::MakeMaker::prompt
- (qq{Other job not responding. Shall I overwrite }.
- qq{the lockfile? (Y/N)},"y");
- $CPAN::Frontend->myexit("Ok, bye\n")
- unless $ans =~ /^y/i;
- } else {
- Carp::croak(
- qq{Lockfile $lockfile not writeable by you. }.
- qq{Cannot proceed.\n}.
- qq{ On UNIX try:\n}.
- qq{ rm $lockfile\n}.
- qq{ and then rerun us.\n}
- );
- }
- } else {
- $CPAN::Frontend->mydie(sprintf("CPAN.pm panic: Lockfile $lockfile ".
- "reports other process with ID ".
- "$other. Cannot proceed.\n"));
- }
- }
- my $dotcpan = $CPAN::Config->{cpan_home};
- eval { File::Path::mkpath($dotcpan);};
- if ($@) {
- # A special case at least for Jarkko.
- my $firsterror = $@;
- my $seconderror;
- my $symlinkcpan;
- if (-l $dotcpan) {
- $symlinkcpan = readlink $dotcpan;
- die "readlink $dotcpan failed: $!" unless defined $symlinkcpan;
- eval { File::Path::mkpath($symlinkcpan); };
- if ($@) {
- $seconderror = $@;
- } else {
- $CPAN::Frontend->mywarn(qq{
-Working directory $symlinkcpan created.
-});
- }
- }
- unless (-d $dotcpan) {
- my $diemess = qq{
-Your configuration suggests "$dotcpan" as your
-CPAN.pm working directory. I could not create this directory due
-to this error: $firsterror\n};
- $diemess .= qq{
-As "$dotcpan" is a symlink to "$symlinkcpan",
-I tried to create that, but I failed with this error: $seconderror
-} if $seconderror;
- $diemess .= qq{
-Please make sure the directory exists and is writable.
-};
- $CPAN::Frontend->mydie($diemess);
- }
- }
- my $fh;
- unless ($fh = FileHandle->new(">$lockfile")) {
- if ($! =~ /Permission/) {
- my $incc = $INC{'CPAN/Config.pm'};
- my $myincc = MM->catfile($ENV{HOME},'.cpan','CPAN','MyConfig.pm');
- $CPAN::Frontend->myprint(qq{
-
-Your configuration suggests that CPAN.pm should use a working
-directory of
- $CPAN::Config->{cpan_home}
-Unfortunately we could not create the lock file
- $lockfile
-due to permission problems.
-
-Please make sure that the configuration variable
- \$CPAN::Config->{cpan_home}
-points to a directory where you can write a .lock file. You can set
-this variable in either
- $incc
-or
- $myincc
-
-});
- }
- $CPAN::Frontend->mydie("Could not open >$lockfile: $!");
- }
- $fh->print($$, "\n");
- $self->{LOCK} = $lockfile;
- $fh->close;
- $SIG{TERM} = sub {
- &cleanup;
- $CPAN::Frontend->mydie("Got SIGTERM, leaving");
- };
- $SIG{INT} = sub {
- # no blocks!!!
- &cleanup if $Signal;
- $CPAN::Frontend->mydie("Got another SIGINT") if $Signal;
- print "Caught SIGINT\n";
- $Signal++;
- };
-
-# From: Larry Wall <larry@wall.org>
-# Subject: Re: deprecating SIGDIE
-# To: perl5-porters@perl.org
-# Date: Thu, 30 Sep 1999 14:58:40 -0700 (PDT)
-#
-# The original intent of __DIE__ was only to allow you to substitute one
-# kind of death for another on an application-wide basis without respect
-# to whether you were in an eval or not. As a global backstop, it should
-# not be used any more lightly (or any more heavily :-) than class
-# UNIVERSAL. Any attempt to build a general exception model on it should
-# be politely squashed. Any bug that causes every eval {} to have to be
-# modified should be not so politely squashed.
-#
-# Those are my current opinions. It is also my optinion that polite
-# arguments degenerate to personal arguments far too frequently, and that
-# when they do, it's because both people wanted it to, or at least didn't
-# sufficiently want it not to.
-#
-# Larry
-
- # global backstop to cleanup if we should really die
- $SIG{__DIE__} = \&cleanup;
- $self->debug("Signal handler set.") if $CPAN::DEBUG;
-}
-
-#-> sub CPAN::DESTROY ;
-sub DESTROY {
- &cleanup; # need an eval?
-}
-
-#-> sub CPAN::anycwd ;
-sub anycwd () {
- my $getcwd;
- $getcwd = $CPAN::Config->{'getcwd'} || 'cwd';
- CPAN->$getcwd();
-}
-
-#-> sub CPAN::cwd ;
-sub cwd {Cwd::cwd();}
-
-#-> sub CPAN::getcwd ;
-sub getcwd {Cwd::getcwd();}
-
-#-> sub CPAN::exists ;
-sub exists {
- my($mgr,$class,$id) = @_;
- CPAN::Config->load unless $CPAN::Config_loaded++;
- CPAN::Index->reload;
- ### Carp::croak "exists called without class argument" unless $class;
- $id ||= "";
- exists $META->{readonly}{$class}{$id} or
- exists $META->{readwrite}{$class}{$id}; # unsafe meta access, ok
-}
-
-#-> sub CPAN::delete ;
-sub delete {
- my($mgr,$class,$id) = @_;
- delete $META->{readonly}{$class}{$id}; # unsafe meta access, ok
- delete $META->{readwrite}{$class}{$id}; # unsafe meta access, ok
-}
-
-#-> sub CPAN::has_usable
-# has_inst is sometimes too optimistic, we should replace it with this
-# has_usable whenever a case is given
-sub has_usable {
- my($self,$mod,$message) = @_;
- return 1 if $HAS_USABLE->{$mod};
- my $has_inst = $self->has_inst($mod,$message);
- return unless $has_inst;
- my $usable;
- $usable = {
- LWP => [ # we frequently had "Can't locate object
- # method "new" via package "LWP::UserAgent" at
- # (eval 69) line 2006
- sub {require LWP},
- sub {require LWP::UserAgent},
- sub {require HTTP::Request},
- sub {require URI::URL},
- ],
- Net::FTP => [
- sub {require Net::FTP},
- sub {require Net::Config},
- ]
- };
- if ($usable->{$mod}) {
- for my $c (0..$#{$usable->{$mod}}) {
- my $code = $usable->{$mod}[$c];
- my $ret = eval { &$code() };
- if ($@) {
- warn "DEBUG: c[$c]\$\@[$@]ret[$ret]";
- return;
- }
- }
- }
- return $HAS_USABLE->{$mod} = 1;
-}
-
-#-> sub CPAN::has_inst
-sub has_inst {
- my($self,$mod,$message) = @_;
- Carp::croak("CPAN->has_inst() called without an argument")
- unless defined $mod;
- if (defined $message && $message eq "no"
- ||
- exists $CPAN::META->{dontload_hash}{$mod} # unsafe meta access, ok
- ||
- exists $CPAN::Config->{dontload_hash}{$mod}
- ) {
- $CPAN::META->{dontload_hash}{$mod}||=1; # unsafe meta access, ok
- return 0;
- }
- my $file = $mod;
- my $obj;
- $file =~ s|::|/|g;
- $file =~ s|/|\\|g if $^O eq 'MSWin32';
- $file .= ".pm";
- if ($INC{$file}) {
- # checking %INC is wrong, because $INC{LWP} may be true
- # although $INC{"URI/URL.pm"} may have failed. But as
- # I really want to say "bla loaded OK", I have to somehow
- # cache results.
- ### warn "$file in %INC"; #debug
- return 1;
- } elsif (eval { require $file }) {
- # eval is good: if we haven't yet read the database it's
- # perfect and if we have installed the module in the meantime,
- # it tries again. The second require is only a NOOP returning
- # 1 if we had success, otherwise it's retrying
-
- $CPAN::Frontend->myprint("CPAN: $mod loaded ok\n");
- if ($mod eq "CPAN::WAIT") {
- push @CPAN::Shell::ISA, CPAN::WAIT;
- }
- return 1;
- } elsif ($mod eq "Net::FTP") {
- $CPAN::Frontend->mywarn(qq{
- Please, install Net::FTP as soon as possible. CPAN.pm installs it for you
- if you just type
- install Bundle::libnet
-
-}) unless $Have_warned->{"Net::FTP"}++;
- sleep 3;
- } elsif ($mod eq "MD5"){
- $CPAN::Frontend->myprint(qq{
- CPAN: MD5 security checks disabled because MD5 not installed.
- Please consider installing the MD5 module.
-
-});
- sleep 2;
- } else {
- delete $INC{$file}; # if it inc'd LWP but failed during, say, URI
- }
- return 0;
-}
-
-#-> sub CPAN::instance ;
-sub instance {
- my($mgr,$class,$id) = @_;
- CPAN::Index->reload;
- $id ||= "";
- # unsafe meta access, ok?
- return $META->{readwrite}{$class}{$id} if exists $META->{readwrite}{$class}{$id};
- $META->{readwrite}{$class}{$id} ||= $class->new(ID => $id);
-}
-
-#-> sub CPAN::new ;
-sub new {
- bless {}, shift;
-}
-
-#-> sub CPAN::cleanup ;
-sub cleanup {
- # warn "cleanup called with arg[@_] End[$End] Signal[$Signal]";
- local $SIG{__DIE__} = '';
- my($message) = @_;
- my $i = 0;
- my $ineval = 0;
- if (
- 0 && # disabled, try reload cpan with it
- $] > 5.004_60 # thereabouts
- ) {
- $ineval = $^S;
- } else {
- my($subroutine);
- while ((undef,undef,undef,$subroutine) = caller(++$i)) {
- $ineval = 1, last if
- $subroutine eq '(eval)';
- }
- }
- return if $ineval && !$End;
- return unless defined $META->{LOCK}; # unsafe meta access, ok
- return unless -f $META->{LOCK}; # unsafe meta access, ok
- unlink $META->{LOCK}; # unsafe meta access, ok
- # require Carp;
- # Carp::cluck("DEBUGGING");
- $CPAN::Frontend->mywarn("Lockfile removed.\n");
-}
-
-package CPAN::CacheMgr;
-
-#-> sub CPAN::CacheMgr::as_string ;
-sub as_string {
- eval { require Data::Dumper };
- if ($@) {
- return shift->SUPER::as_string;
- } else {
- return Data::Dumper::Dumper(shift);
- }
-}
-
-#-> sub CPAN::CacheMgr::cachesize ;
-sub cachesize {
- shift->{DU};
-}
-
-#-> sub CPAN::CacheMgr::tidyup ;
-sub tidyup {
- my($self) = @_;
- return unless -d $self->{ID};
- while ($self->{DU} > $self->{'MAX'} ) {
- my($toremove) = shift @{$self->{FIFO}};
- $CPAN::Frontend->myprint(sprintf(
- "Deleting from cache".
- ": $toremove (%.1f>%.1f MB)\n",
- $self->{DU}, $self->{'MAX'})
- );
- return if $CPAN::Signal;
- $self->force_clean_cache($toremove);
- return if $CPAN::Signal;
- }
-}
-
-#-> sub CPAN::CacheMgr::dir ;
-sub dir {
- shift->{ID};
-}
-
-#-> sub CPAN::CacheMgr::entries ;
-sub entries {
- my($self,$dir) = @_;
- return unless defined $dir;
- $self->debug("reading dir[$dir]") if $CPAN::DEBUG;
- $dir ||= $self->{ID};
- my($cwd) = CPAN::anycwd();
- chdir $dir or Carp::croak("Can't chdir to $dir: $!");
- my $dh = DirHandle->new(File::Spec->curdir)
- or Carp::croak("Couldn't opendir $dir: $!");
- my(@entries);
- for ($dh->read) {
- next if $_ eq "." || $_ eq "..";
- if (-f $_) {
- push @entries, MM->catfile($dir,$_);
- } elsif (-d _) {
- push @entries, MM->catdir($dir,$_);
- } else {
- $CPAN::Frontend->mywarn("Warning: weird direntry in $dir: $_\n");
- }
- }
- chdir $cwd or Carp::croak("Can't chdir to $cwd: $!");
- sort { -M $b <=> -M $a} @entries;
-}
-
-#-> sub CPAN::CacheMgr::disk_usage ;
-sub disk_usage {
- my($self,$dir) = @_;
- return if exists $self->{SIZE}{$dir};
- return if $CPAN::Signal;
- my($Du) = 0;
- find(
- sub {
- $File::Find::prune++ if $CPAN::Signal;
- return if -l $_;
- if ($^O eq 'MacOS') {
- require Mac::Files;
- my $cat = Mac::Files::FSpGetCatInfo($_);
- $Du += $cat->ioFlLgLen() + $cat->ioFlRLgLen() if $cat;
- } else {
- $Du += (-s _);
- }
- },
- $dir
- );
- return if $CPAN::Signal;
- $self->{SIZE}{$dir} = $Du/1024/1024;
- push @{$self->{FIFO}}, $dir;
- $self->debug("measured $dir is $Du") if $CPAN::DEBUG;
- $self->{DU} += $Du/1024/1024;
- $self->{DU};
-}
-
-#-> sub CPAN::CacheMgr::force_clean_cache ;
-sub force_clean_cache {
- my($self,$dir) = @_;
- return unless -e $dir;
- $self->debug("have to rmtree $dir, will free $self->{SIZE}{$dir}")
- if $CPAN::DEBUG;
- File::Path::rmtree($dir);
- $self->{DU} -= $self->{SIZE}{$dir};
- delete $self->{SIZE}{$dir};
-}
-
-#-> sub CPAN::CacheMgr::new ;
-sub new {
- my $class = shift;
- my $time = time;
- my($debug,$t2);
- $debug = "";
- my $self = {
- ID => $CPAN::Config->{'build_dir'},
- MAX => $CPAN::Config->{'build_cache'},
- SCAN => $CPAN::Config->{'scan_cache'} || 'atstart',
- DU => 0
- };
- File::Path::mkpath($self->{ID});
- my $dh = DirHandle->new($self->{ID});
- bless $self, $class;
- $self->scan_cache;
- $t2 = time;
- $debug .= "timing of CacheMgr->new: ".($t2 - $time);
- $time = $t2;
- CPAN->debug($debug) if $CPAN::DEBUG;
- $self;
-}
-
-#-> sub CPAN::CacheMgr::scan_cache ;
-sub scan_cache {
- my $self = shift;
- return if $self->{SCAN} eq 'never';
- $CPAN::Frontend->mydie("Unknown scan_cache argument: $self->{SCAN}")
- unless $self->{SCAN} eq 'atstart';
- $CPAN::Frontend->myprint(
- sprintf("Scanning cache %s for sizes\n",
- $self->{ID}));
- my $e;
- for $e ($self->entries($self->{ID})) {
- next if $e eq ".." || $e eq ".";
- $self->disk_usage($e);
- return if $CPAN::Signal;
- }
- $self->tidyup;
-}
-
-package CPAN::Debug;
-
-#-> sub CPAN::Debug::debug ;
-sub debug {
- my($self,$arg) = @_;
- my($caller,$func,$line,@rest) = caller(1); # caller(0) eg
- # Complete, caller(1)
- # eg readline
- ($caller) = caller(0);
- $caller =~ s/.*:://;
- $arg = "" unless defined $arg;
- my $rest = join "|", map { defined $_ ? $_ : "UNDEF" } @rest;
- if ($CPAN::DEBUG{$caller} & $CPAN::DEBUG){
- if ($arg and ref $arg) {
- eval { require Data::Dumper };
- if ($@) {
- $CPAN::Frontend->myprint($arg->as_string);
- } else {
- $CPAN::Frontend->myprint(Data::Dumper::Dumper($arg));
- }
- } else {
- $CPAN::Frontend->myprint("Debug($caller:$func,$line,[$rest]): $arg\n");
- }
- }
-}
-
-package CPAN::Config;
-
-#-> sub CPAN::Config::edit ;
-# returns true on successful action
-sub edit {
- my($self,@args) = @_;
- return unless @args;
- CPAN->debug("self[$self]args[".join(" | ",@args)."]");
- my($o,$str,$func,$args,$key_exists);
- $o = shift @args;
- if($can{$o}) {
- $self->$o(@args);
- return 1;
- } else {
- CPAN->debug("o[$o]") if $CPAN::DEBUG;
- if ($o =~ /list$/) {
- $func = shift @args;
- $func ||= "";
- CPAN->debug("func[$func]") if $CPAN::DEBUG;
- my $changed;
- # Let's avoid eval, it's easier to comprehend without.
- if ($func eq "push") {
- push @{$CPAN::Config->{$o}}, @args;
- $changed = 1;
- } elsif ($func eq "pop") {
- pop @{$CPAN::Config->{$o}};
- $changed = 1;
- } elsif ($func eq "shift") {
- shift @{$CPAN::Config->{$o}};
- $changed = 1;
- } elsif ($func eq "unshift") {
- unshift @{$CPAN::Config->{$o}}, @args;
- $changed = 1;
- } elsif ($func eq "splice") {
- splice @{$CPAN::Config->{$o}}, @args;
- $changed = 1;
- } elsif (@args) {
- $CPAN::Config->{$o} = [@args];
- $changed = 1;
- } else {
- $self->prettyprint($o);
- }
- if ($o eq "urllist" && $changed) {
- # reset the cached values
- undef $CPAN::FTP::Thesite;
- undef $CPAN::FTP::Themethod;
- }
- return $changed;
- } else {
- $CPAN::Config->{$o} = $args[0] if defined $args[0];
- $self->prettyprint($o);
- }
- }
-}
-
-sub prettyprint {
- my($self,$k) = @_;
- my $v = $CPAN::Config->{$k};
- if (ref $v) {
- my(@report) = ref $v eq "ARRAY" ?
- @$v :
- map { sprintf(" %-18s => %s\n",
- $_,
- defined $v->{$_} ? $v->{$_} : "UNDEFINED"
- )} keys %$v;
- $CPAN::Frontend->myprint(
- join(
- "",
- sprintf(
- " %-18s\n",
- $k
- ),
- map {"\t$_\n"} @report
- )
- );
- } elsif (defined $v) {
- $CPAN::Frontend->myprint(sprintf " %-18s %s\n", $k, $v);
- } else {
- $CPAN::Frontend->myprint(sprintf " %-18s %s\n", $k, "UNDEFINED");
- }
-}
-
-#-> sub CPAN::Config::commit ;
-sub commit {
- my($self,$configpm) = @_;
- unless (defined $configpm){
- $configpm ||= $INC{"CPAN/MyConfig.pm"};
- $configpm ||= $INC{"CPAN/Config.pm"};
- $configpm || Carp::confess(q{
-CPAN::Config::commit called without an argument.
-Please specify a filename where to save the configuration or try
-"o conf init" to have an interactive course through configing.
-});
- }
- my($mode);
- if (-f $configpm) {
- $mode = (stat $configpm)[2];
- if ($mode && ! -w _) {
- Carp::confess("$configpm is not writable");
- }
- }
-
- my $msg;
- $msg = <<EOF unless $configpm =~ /MyConfig/;
-
-# This is CPAN.pm's systemwide configuration file. This file provides
-# defaults for users, and the values can be changed in a per-user
-# configuration file. The user-config file is being looked for as
-# ~/.cpan/CPAN/MyConfig.pm.
-
-EOF
- $msg ||= "\n";
- my($fh) = FileHandle->new;
- rename $configpm, "$configpm~" if -f $configpm;
- open $fh, ">$configpm" or
- $CPAN::Frontend->mydie("Couldn't open >$configpm: $!");
- $fh->print(qq[$msg\$CPAN::Config = \{\n]);
- foreach (sort keys %$CPAN::Config) {
- $fh->print(
- " '$_' => ",
- ExtUtils::MakeMaker::neatvalue($CPAN::Config->{$_}),
- ",\n"
- );
- }
-
- $fh->print("};\n1;\n__END__\n");
- close $fh;
-
- #$mode = 0444 | ( $mode & 0111 ? 0111 : 0 );
- #chmod $mode, $configpm;
-###why was that so? $self->defaults;
- $CPAN::Frontend->myprint("commit: wrote $configpm\n");
- 1;
-}
-
-*default = \&defaults;
-#-> sub CPAN::Config::defaults ;
-sub defaults {
- my($self) = @_;
- $self->unload;
- $self->load;
- 1;
-}
-
-sub init {
- my($self) = @_;
- undef $CPAN::Config->{'inhibit_startup_message'}; # lazy trick to
- # have the least
- # important
- # variable
- # undefined
- $self->load;
- 1;
-}
-
-#-> sub CPAN::Config::load ;
-sub load {
- my($self) = shift;
- my(@miss);
- use Carp;
- eval {require CPAN::Config;}; # We eval because of some
- # MakeMaker problems
- unless ($dot_cpan++){
- unshift @INC, MM->catdir($ENV{HOME},".cpan");
- eval {require CPAN::MyConfig;}; # where you can override
- # system wide settings
- shift @INC;
- }
- return unless @miss = $self->missing_config_data;
-
- require CPAN::FirstTime;
- my($configpm,$fh,$redo,$theycalled);
- $redo ||= "";
- $theycalled++ if @miss==1 && $miss[0] eq 'inhibit_startup_message';
- if (defined $INC{"CPAN/Config.pm"} && -w $INC{"CPAN/Config.pm"}) {
- $configpm = $INC{"CPAN/Config.pm"};
- $redo++;
- } elsif (defined $INC{"CPAN/MyConfig.pm"} && -w $INC{"CPAN/MyConfig.pm"}) {
- $configpm = $INC{"CPAN/MyConfig.pm"};
- $redo++;
- } else {
- my($path_to_cpan) = File::Basename::dirname($INC{"CPAN.pm"});
- my($configpmdir) = MM->catdir($path_to_cpan,"CPAN");
- my($configpmtest) = MM->catfile($configpmdir,"Config.pm");
- if (-d $configpmdir or File::Path::mkpath($configpmdir)) {
- if (-w $configpmtest) {
- $configpm = $configpmtest;
- } elsif (-w $configpmdir) {
- #_#_# following code dumped core on me with 5.003_11, a.k.
- unlink "$configpmtest.bak" if -f "$configpmtest.bak";
- rename $configpmtest, "$configpmtest.bak" if -f $configpmtest;
- my $fh = FileHandle->new;
- if ($fh->open(">$configpmtest")) {
- $fh->print("1;\n");
- $configpm = $configpmtest;
- } else {
- # Should never happen
- Carp::confess("Cannot open >$configpmtest");
- }
- }
- }
- unless ($configpm) {
- $configpmdir = MM->catdir($ENV{HOME},".cpan","CPAN");
- File::Path::mkpath($configpmdir);
- $configpmtest = MM->catfile($configpmdir,"MyConfig.pm");
- if (-w $configpmtest) {
- $configpm = $configpmtest;
- } elsif (-w $configpmdir) {
- #_#_# following code dumped core on me with 5.003_11, a.k.
- my $fh = FileHandle->new;
- if ($fh->open(">$configpmtest")) {
- $fh->print("1;\n");
- $configpm = $configpmtest;
- } else {
- # Should never happen
- Carp::confess("Cannot open >$configpmtest");
- }
- } else {
- Carp::confess(qq{WARNING: CPAN.pm is unable to }.
- qq{create a configuration file.});
- }
- }
- }
- local($") = ", ";
- $CPAN::Frontend->myprint(<<END) if $redo && ! $theycalled;
-We have to reconfigure CPAN.pm due to following uninitialized parameters:
-
-@miss
-END
- $CPAN::Frontend->myprint(qq{
-$configpm initialized.
-});
- sleep 2;
- CPAN::FirstTime::init($configpm);
-}
-
-#-> sub CPAN::Config::missing_config_data ;
-sub missing_config_data {
- my(@miss);
- for (
- "cpan_home", "keep_source_where", "build_dir", "build_cache",
- "scan_cache", "index_expire", "gzip", "tar", "unzip", "make",
- "pager",
- "makepl_arg", "make_arg", "make_install_arg", "urllist",
- "inhibit_startup_message", "ftp_proxy", "http_proxy", "no_proxy",
- "prerequisites_policy",
- "cache_metadata",
- ) {
- push @miss, $_ unless defined $CPAN::Config->{$_};
- }
- return @miss;
-}
-
-#-> sub CPAN::Config::unload ;
-sub unload {
- delete $INC{'CPAN/MyConfig.pm'};
- delete $INC{'CPAN/Config.pm'};
-}
-
-#-> sub CPAN::Config::help ;
-sub help {
- $CPAN::Frontend->myprint(q[
-Known options:
- defaults reload default config values from disk
- commit commit session changes to disk
- init go through a dialog to set all parameters
-
-You may edit key values in the follow fashion (the "o" is a literal
-letter o):
-
- o conf build_cache 15
-
- o conf build_dir "/foo/bar"
-
- o conf urllist shift
-
- o conf urllist unshift ftp://ftp.foo.bar/
-
-]);
- undef; #don't reprint CPAN::Config
-}
-
-#-> sub CPAN::Config::cpl ;
-sub cpl {
- my($word,$line,$pos) = @_;
- $word ||= "";
- CPAN->debug("word[$word] line[$line] pos[$pos]") if $CPAN::DEBUG;
- my(@words) = split " ", substr($line,0,$pos+1);
- if (
- defined($words[2])
- and
- (
- $words[2] =~ /list$/ && @words == 3
- ||
- $words[2] =~ /list$/ && @words == 4 && length($word)
- )
- ) {
- return grep /^\Q$word\E/, qw(splice shift unshift pop push);
- } elsif (@words >= 4) {
- return ();
- }
- my(@o_conf) = (keys %CPAN::Config::can, keys %$CPAN::Config);
- return grep /^\Q$word\E/, @o_conf;
-}
-
-package CPAN::Shell;
-
-#-> sub CPAN::Shell::h ;
-sub h {
- my($class,$about) = @_;
- if (defined $about) {
- $CPAN::Frontend->myprint("Detailed help not yet implemented\n");
- } else {
- $CPAN::Frontend->myprint(q{
-Display Information
- command argument description
- a,b,d,m WORD or /REGEXP/ about authors, bundles, distributions, modules
- i WORD or /REGEXP/ about anything of above
- r NONE reinstall recommendations
- ls AUTHOR about files in the author's directory
-
-Download, Test, Make, Install...
- get download
- make make (implies get)
- test MODULES, make test (implies make)
- install DISTS, BUNDLES make install (implies test)
- clean make clean
- look open subshell in these dists' directories
- readme display these dists' README files
-
-Other
- h,? display this menu ! perl-code eval a perl command
- o conf [opt] set and query options q quit the cpan shell
- reload cpan load CPAN.pm again reload index load newer indices
- autobundle Snapshot force cmd unconditionally do cmd});
- }
-}
-
-*help = \&h;
-
-#-> sub CPAN::Shell::a ;
-sub a {
- my($self,@arg) = @_;
- # authors are always UPPERCASE
- for (@arg) {
- $_ = uc $_ unless /=/;
- }
- $CPAN::Frontend->myprint($self->format_result('Author',@arg));
-}
-
-#-> sub CPAN::Shell::ls ;
-sub ls {
- my($self,@arg) = @_;
- my @accept;
- for (@arg) {
- unless (/^[A-Z\-]+$/i) {
- $CPAN::Frontend->mywarn("ls command rejects argument $_: not an author");
- next;
- }
- push @accept, uc $_;
- }
- for my $a (@accept){
- my $author = $self->expand('Author',$a) or die "No author found for $a";
- $author->ls;
- }
-}
-
-#-> sub CPAN::Shell::local_bundles ;
-sub local_bundles {
- my($self,@which) = @_;
- my($incdir,$bdir,$dh);
- foreach $incdir ($CPAN::Config->{'cpan_home'},@INC) {
- my @bbase = "Bundle";
- while (my $bbase = shift @bbase) {
- $bdir = MM->catdir($incdir,split /::/, $bbase);
- CPAN->debug("bdir[$bdir]\@bbase[@bbase]") if $CPAN::DEBUG;
- if ($dh = DirHandle->new($bdir)) { # may fail
- my($entry);
- for $entry ($dh->read) {
- next if $entry =~ /^\./;
- if (-d MM->catdir($bdir,$entry)){
- push @bbase, "$bbase\::$entry";
- } else {
- next unless $entry =~ s/\.pm(?!\n)\Z//;
- $CPAN::META->instance('CPAN::Bundle',"$bbase\::$entry");
- }
- }
- }
- }
- }
-}
-
-#-> sub CPAN::Shell::b ;
-sub b {
- my($self,@which) = @_;
- CPAN->debug("which[@which]") if $CPAN::DEBUG;
- $self->local_bundles;
- $CPAN::Frontend->myprint($self->format_result('Bundle',@which));
-}
-
-#-> sub CPAN::Shell::d ;
-sub d { $CPAN::Frontend->myprint(shift->format_result('Distribution',@_));}
-
-#-> sub CPAN::Shell::m ;
-sub m { # emacs confused here }; sub mimimimimi { # emacs in sync here
- $CPAN::Frontend->myprint(shift->format_result('Module',@_));
-}
-
-#-> sub CPAN::Shell::i ;
-sub i {
- my($self) = shift;
- my(@args) = @_;
- my(@type,$type,@m);
- @type = qw/Author Bundle Distribution Module/;
- @args = '/./' unless @args;
- my(@result);
- for $type (@type) {
- push @result, $self->expand($type,@args);
- }
- my $result = @result == 1 ?
- $result[0]->as_string :
- @result == 0 ?
- "No objects found of any type for argument @args\n" :
- join("",
- (map {$_->as_glimpse} @result),
- scalar @result, " items found\n",
- );
- $CPAN::Frontend->myprint($result);
-}
-
-#-> sub CPAN::Shell::o ;
-
-# CPAN::Shell::o and CPAN::Config::edit are closely related. 'o conf'
-# should have been called set and 'o debug' maybe 'set debug'
-sub o {
- my($self,$o_type,@o_what) = @_;
- $o_type ||= "";
- CPAN->debug("o_type[$o_type] o_what[".join(" | ",@o_what)."]\n");
- if ($o_type eq 'conf') {
- shift @o_what if @o_what && $o_what[0] eq 'help';
- if (!@o_what) { # print all things, "o conf"
- my($k,$v);
- $CPAN::Frontend->myprint("CPAN::Config options");
- if (exists $INC{'CPAN/Config.pm'}) {
- $CPAN::Frontend->myprint(" from $INC{'CPAN/Config.pm'}");
- }
- if (exists $INC{'CPAN/MyConfig.pm'}) {
- $CPAN::Frontend->myprint(" and $INC{'CPAN/MyConfig.pm'}");
- }
- $CPAN::Frontend->myprint(":\n");
- for $k (sort keys %CPAN::Config::can) {
- $v = $CPAN::Config::can{$k};
- $CPAN::Frontend->myprint(sprintf " %-18s %s\n", $k, $v);
- }
- $CPAN::Frontend->myprint("\n");
- for $k (sort keys %$CPAN::Config) {
- CPAN::Config->prettyprint($k);
- }
- $CPAN::Frontend->myprint("\n");
- } elsif (!CPAN::Config->edit(@o_what)) {
- $CPAN::Frontend->myprint(qq{Type 'o conf' to view configuration }.
- qq{edit options\n\n});
- }
- } elsif ($o_type eq 'debug') {
- my(%valid);
- @o_what = () if defined $o_what[0] && $o_what[0] =~ /help/i;
- if (@o_what) {
- while (@o_what) {
- my($what) = shift @o_what;
- if ($what =~ s/^-// && exists $CPAN::DEBUG{$what}) {
- $CPAN::DEBUG &= $CPAN::DEBUG ^ $CPAN::DEBUG{$what};
- next;
- }
- if ( exists $CPAN::DEBUG{$what} ) {
- $CPAN::DEBUG |= $CPAN::DEBUG{$what};
- } elsif ($what =~ /^\d/) {
- $CPAN::DEBUG = $what;
- } elsif (lc $what eq 'all') {
- my($max) = 0;
- for (values %CPAN::DEBUG) {
- $max += $_;
- }
- $CPAN::DEBUG = $max;
- } else {
- my($known) = 0;
- for (keys %CPAN::DEBUG) {
- next unless lc($_) eq lc($what);
- $CPAN::DEBUG |= $CPAN::DEBUG{$_};
- $known = 1;
- }
- $CPAN::Frontend->myprint("unknown argument [$what]\n")
- unless $known;
- }
- }
- } else {
- my $raw = "Valid options for debug are ".
- join(", ",sort(keys %CPAN::DEBUG), 'all').
- qq{ or a number. Completion works on the options. }.
- qq{Case is ignored.};
- require Text::Wrap;
- $CPAN::Frontend->myprint(Text::Wrap::fill("","",$raw));
- $CPAN::Frontend->myprint("\n\n");
- }
- if ($CPAN::DEBUG) {
- $CPAN::Frontend->myprint("Options set for debugging:\n");
- my($k,$v);
- for $k (sort {$CPAN::DEBUG{$a} <=> $CPAN::DEBUG{$b}} keys %CPAN::DEBUG) {
- $v = $CPAN::DEBUG{$k};
- $CPAN::Frontend->myprint(sprintf " %-14s(%s)\n", $k, $v)
- if $v & $CPAN::DEBUG;
- }
- } else {
- $CPAN::Frontend->myprint("Debugging turned off completely.\n");
- }
- } else {
- $CPAN::Frontend->myprint(qq{
-Known options:
- conf set or get configuration variables
- debug set or get debugging options
-});
- }
-}
-
-sub paintdots_onreload {
- my($ref) = shift;
- sub {
- if ( $_[0] =~ /[Ss]ubroutine (\w+) redefined/ ) {
- my($subr) = $1;
- ++$$ref;
- local($|) = 1;
- # $CPAN::Frontend->myprint(".($subr)");
- $CPAN::Frontend->myprint(".");
- return;
- }
- warn @_;
- };
-}
-
-#-> sub CPAN::Shell::reload ;
-sub reload {
- my($self,$command,@arg) = @_;
- $command ||= "";
- $self->debug("self[$self]command[$command]arg[@arg]") if $CPAN::DEBUG;
- if ($command =~ /cpan/i) {
- CPAN->debug("reloading the whole CPAN.pm") if $CPAN::DEBUG;
- my $fh = FileHandle->new($INC{'CPAN.pm'});
- local($/);
- my $redef = 0;
- local($SIG{__WARN__}) = paintdots_onreload(\$redef);
- eval <$fh>;
- warn $@ if $@;
- $CPAN::Frontend->myprint("\n$redef subroutines redefined\n");
- } elsif ($command =~ /index/) {
- CPAN::Index->force_reload;
- } else {
- $CPAN::Frontend->myprint(qq{cpan re-evals the CPAN.pm file
-index re-reads the index files\n});
- }
-}
-
-#-> sub CPAN::Shell::_binary_extensions ;
-sub _binary_extensions {
- my($self) = shift @_;
- my(@result,$module,%seen,%need,$headerdone);
- for $module ($self->expand('Module','/./')) {
- my $file = $module->cpan_file;
- next if $file eq "N/A";
- next if $file =~ /^Contact Author/;
- my $dist = $CPAN::META->instance('CPAN::Distribution',$file);
- next if $dist->isa_perl;
- next unless $module->xs_file;
- local($|) = 1;
- $CPAN::Frontend->myprint(".");
- push @result, $module;
- }
-# print join " | ", @result;
- $CPAN::Frontend->myprint("\n");
- return @result;
-}
-
-#-> sub CPAN::Shell::recompile ;
-sub recompile {
- my($self) = shift @_;
- my($module,@module,$cpan_file,%dist);
- @module = $self->_binary_extensions();
- for $module (@module){ # we force now and compile later, so we
- # don't do it twice
- $cpan_file = $module->cpan_file;
- my $pack = $CPAN::META->instance('CPAN::Distribution',$cpan_file);
- $pack->force;
- $dist{$cpan_file}++;
- }
- for $cpan_file (sort keys %dist) {
- $CPAN::Frontend->myprint(" CPAN: Recompiling $cpan_file\n\n");
- my $pack = $CPAN::META->instance('CPAN::Distribution',$cpan_file);
- $pack->install;
- $CPAN::Signal = 0; # it's tempting to reset Signal, so we can
- # stop a package from recompiling,
- # e.g. IO-1.12 when we have perl5.003_10
- }
-}
-
-#-> sub CPAN::Shell::_u_r_common ;
-sub _u_r_common {
- my($self) = shift @_;
- my($what) = shift @_;
- CPAN->debug("self[$self] what[$what] args[@_]") if $CPAN::DEBUG;
- Carp::croak "Usage: \$obj->_u_r_common(a|r|u)" unless
- $what && $what =~ /^[aru]$/;
- my(@args) = @_;
- @args = '/./' unless @args;
- my(@result,$module,%seen,%need,$headerdone,
- $version_undefs,$version_zeroes);
- $version_undefs = $version_zeroes = 0;
- my $sprintf = "%s%-25s%s %9s %9s %s\n";
- my @expand = $self->expand('Module',@args);
- my $expand = scalar @expand;
- if (0) { # Looks like noise to me, was very useful for debugging
- # for metadata cache
- $CPAN::Frontend->myprint(sprintf "%d matches in the database\n", $expand);
- }
- for $module (@expand) {
- my $file = $module->cpan_file;
- next unless defined $file; # ??
- my($latest) = $module->cpan_version;
- my($inst_file) = $module->inst_file;
- my($have);
- return if $CPAN::Signal;
- if ($inst_file){
- if ($what eq "a") {
- $have = $module->inst_version;
- } elsif ($what eq "r") {
- $have = $module->inst_version;
- local($^W) = 0;
- if ($have eq "undef"){
- $version_undefs++;
- } elsif ($have == 0){
- $version_zeroes++;
- }
- next unless CPAN::Version->vgt($latest, $have);
-# to be pedantic we should probably say:
-# && !($have eq "undef" && $latest ne "undef" && $latest gt "");
-# to catch the case where CPAN has a version 0 and we have a version undef
- } elsif ($what eq "u") {
- next;
- }
- } else {
- if ($what eq "a") {
- next;
- } elsif ($what eq "r") {
- next;
- } elsif ($what eq "u") {
- $have = "-";
- }
- }
- return if $CPAN::Signal; # this is sometimes lengthy
- $seen{$file} ||= 0;
- if ($what eq "a") {
- push @result, sprintf "%s %s\n", $module->id, $have;
- } elsif ($what eq "r") {
- push @result, $module->id;
- next if $seen{$file}++;
- } elsif ($what eq "u") {
- push @result, $module->id;
- next if $seen{$file}++;
- next if $file =~ /^Contact/;
- }
- unless ($headerdone++){
- $CPAN::Frontend->myprint("\n");
- $CPAN::Frontend->myprint(sprintf(
- $sprintf,
- "",
- "Package namespace",
- "",
- "installed",
- "latest",
- "in CPAN file"
- ));
- }
- my $color_on = "";
- my $color_off = "";
- if (
- $COLOR_REGISTERED
- &&
- $CPAN::META->has_inst("Term::ANSIColor")
- &&
- $module->{RO}{description}
- ) {
- $color_on = Term::ANSIColor::color("green");
- $color_off = Term::ANSIColor::color("reset");
- }
- $CPAN::Frontend->myprint(sprintf $sprintf,
- $color_on,
- $module->id,
- $color_off,
- $have,
- $latest,
- $file);
- $need{$module->id}++;
- }
- unless (%need) {
- if ($what eq "u") {
- $CPAN::Frontend->myprint("No modules found for @args\n");
- } elsif ($what eq "r") {
- $CPAN::Frontend->myprint("All modules are up to date for @args\n");
- }
- }
- if ($what eq "r") {
- if ($version_zeroes) {
- my $s_has = $version_zeroes > 1 ? "s have" : " has";
- $CPAN::Frontend->myprint(qq{$version_zeroes installed module$s_has }.
- qq{a version number of 0\n});
- }
- if ($version_undefs) {
- my $s_has = $version_undefs > 1 ? "s have" : " has";
- $CPAN::Frontend->myprint(qq{$version_undefs installed module$s_has no }.
- qq{parseable version number\n});
- }
- }
- @result;
-}
-
-#-> sub CPAN::Shell::r ;
-sub r {
- shift->_u_r_common("r",@_);
-}
-
-#-> sub CPAN::Shell::u ;
-sub u {
- shift->_u_r_common("u",@_);
-}
-
-#-> sub CPAN::Shell::autobundle ;
-sub autobundle {
- my($self) = shift;
- CPAN::Config->load unless $CPAN::Config_loaded++;
- my(@bundle) = $self->_u_r_common("a",@_);
- my($todir) = MM->catdir($CPAN::Config->{'cpan_home'},"Bundle");
- File::Path::mkpath($todir);
- unless (-d $todir) {
- $CPAN::Frontend->myprint("Couldn't mkdir $todir for some reason\n");
- return;
- }
- my($y,$m,$d) = (localtime)[5,4,3];
- $y+=1900;
- $m++;
- my($c) = 0;
- my($me) = sprintf "Snapshot_%04d_%02d_%02d_%02d", $y, $m, $d, $c;
- my($to) = MM->catfile($todir,"$me.pm");
- while (-f $to) {
- $me = sprintf "Snapshot_%04d_%02d_%02d_%02d", $y, $m, $d, ++$c;
- $to = MM->catfile($todir,"$me.pm");
- }
- my($fh) = FileHandle->new(">$to") or Carp::croak "Can't open >$to: $!";
- $fh->print(
- "package Bundle::$me;\n\n",
- "\$VERSION = '0.01';\n\n",
- "1;\n\n",
- "__END__\n\n",
- "=head1 NAME\n\n",
- "Bundle::$me - Snapshot of installation on ",
- $Config::Config{'myhostname'},
- " on ",
- scalar(localtime),
- "\n\n=head1 SYNOPSIS\n\n",
- "perl -MCPAN -e 'install Bundle::$me'\n\n",
- "=head1 CONTENTS\n\n",
- join("\n", @bundle),
- "\n\n=head1 CONFIGURATION\n\n",
- Config->myconfig,
- "\n\n=head1 AUTHOR\n\n",
- "This Bundle has been generated automatically ",
- "by the autobundle routine in CPAN.pm.\n",
- );
- $fh->close;
- $CPAN::Frontend->myprint("\nWrote bundle file
- $to\n\n");
-}
-
-#-> sub CPAN::Shell::expandany ;
-sub expandany {
- my($self,$s) = @_;
- CPAN->debug("s[$s]") if $CPAN::DEBUG;
- if ($s =~ m|/|) { # looks like a file
- $s = CPAN::Distribution->normalize($s);
- return $CPAN::META->instance('CPAN::Distribution',$s);
- # Distributions spring into existence, not expand
- } elsif ($s =~ m|^Bundle::|) {
- $self->local_bundles; # scanning so late for bundles seems
- # both attractive and crumpy: always
- # current state but easy to forget
- # somewhere
- return $self->expand('Bundle',$s);
- } else {
- return $self->expand('Module',$s)
- if $CPAN::META->exists('CPAN::Module',$s);
- }
- return;
-}
-
-#-> sub CPAN::Shell::expand ;
-sub expand {
- shift;
- my($type,@args) = @_;
- my($arg,@m);
- CPAN->debug("type[$type]args[@args]") if $CPAN::DEBUG;
- for $arg (@args) {
- my($regex,$command);
- if ($arg =~ m|^/(.*)/$|) {
- $regex = $1;
- } elsif ($arg =~ m/=/) {
- $command = 1;
- }
- my $class = "CPAN::$type";
- my $obj;
- CPAN->debug(sprintf "class[%s]regex[%s]command[%s]",
- $class,
- defined $regex ? $regex : "UNDEFINED",
- $command || "UNDEFINED",
- ) if $CPAN::DEBUG;
- if (defined $regex) {
- for $obj (
- sort
- {$a->id cmp $b->id}
- $CPAN::META->all_objects($class)
- ) {
- unless ($obj->id){
- # BUG, we got an empty object somewhere
- require Data::Dumper;
- CPAN->debug(sprintf(
- "Bug in CPAN: Empty id on obj[%s][%s]",
- $obj,
- Data::Dumper::Dumper($obj)
- )) if $CPAN::DEBUG;
- next;
- }
- push @m, $obj
- if $obj->id =~ /$regex/i
- or
- (
- (
- $] < 5.00303 ### provide sort of
- ### compatibility with 5.003
- ||
- $obj->can('name')
- )
- &&
- $obj->name =~ /$regex/i
- );
- }
- } elsif ($command) {
- die "equal sign in command disabled (immature interface), ".
- "you can set
- ! \$CPAN::Shell::ADVANCED_QUERY=1
-to enable it. But please note, this is HIGHLY EXPERIMENTAL code
-that may go away anytime.\n"
- unless $ADVANCED_QUERY;
- my($method,$criterion) = $arg =~ /(.+?)=(.+)/;
- my($matchcrit) = $criterion =~ m/^~(.+)/;
- for my $self (
- sort
- {$a->id cmp $b->id}
- $CPAN::META->all_objects($class)
- ) {
- my $lhs = $self->$method() or next; # () for 5.00503
- if ($matchcrit) {
- push @m, $self if $lhs =~ m/$matchcrit/;
- } else {
- push @m, $self if $lhs eq $criterion;
- }
- }
- } else {
- my($xarg) = $arg;
- if ( $type eq 'Bundle' ) {
- $xarg =~ s/^(Bundle::)?(.*)/Bundle::$2/;
- } elsif ($type eq "Distribution") {
- $xarg = CPAN::Distribution->normalize($arg);
- }
- if ($CPAN::META->exists($class,$xarg)) {
- $obj = $CPAN::META->instance($class,$xarg);
- } elsif ($CPAN::META->exists($class,$arg)) {
- $obj = $CPAN::META->instance($class,$arg);
- } else {
- next;
- }
- push @m, $obj;
- }
- }
- return wantarray ? @m : $m[0];
-}
-
-#-> sub CPAN::Shell::format_result ;
-sub format_result {
- my($self) = shift;
- my($type,@args) = @_;
- @args = '/./' unless @args;
- my(@result) = $self->expand($type,@args);
- my $result = @result == 1 ?
- $result[0]->as_string :
- @result == 0 ?
- "No objects of type $type found for argument @args\n" :
- join("",
- (map {$_->as_glimpse} @result),
- scalar @result, " items found\n",
- );
- $result;
-}
-
-# The only reason for this method is currently to have a reliable
-# debugging utility that reveals which output is going through which
-# channel. No, I don't like the colors ;-)
-
-#-> sub CPAN::Shell::print_ornameted ;
-sub print_ornamented {
- my($self,$what,$ornament) = @_;
- my $longest = 0;
- return unless defined $what;
-
- if ($CPAN::Config->{term_is_latin}){
- # courtesy jhi:
- $what
- =~ s{([\xC0-\xDF])([\x80-\xBF])}{chr(ord($1)<<6&0xC0|ord($2)&0x3F)}eg; #};
- }
- if ($PRINT_ORNAMENTING) {
- unless (defined &color) {
- if ($CPAN::META->has_inst("Term::ANSIColor")) {
- import Term::ANSIColor "color";
- } else {
- *color = sub { return "" };
- }
- }
- my $line;
- for $line (split /\n/, $what) {
- $longest = length($line) if length($line) > $longest;
- }
- my $sprintf = "%-" . $longest . "s";
- while ($what){
- $what =~ s/(.*\n?)//m;
- my $line = $1;
- last unless $line;
- my($nl) = chomp $line ? "\n" : "";
- # print "line[$line]ornament[$ornament]sprintf[$sprintf]\n";
- print color($ornament), sprintf($sprintf,$line), color("reset"), $nl;
- }
- } else {
- print $what;
- }
-}
-
-sub myprint {
- my($self,$what) = @_;
-
- $self->print_ornamented($what, 'bold blue on_yellow');
-}
-
-sub myexit {
- my($self,$what) = @_;
- $self->myprint($what);
- exit;
-}
-
-sub mywarn {
- my($self,$what) = @_;
- $self->print_ornamented($what, 'bold red on_yellow');
-}
-
-sub myconfess {
- my($self,$what) = @_;
- $self->print_ornamented($what, 'bold red on_white');
- Carp::confess "died";
-}
-
-sub mydie {
- my($self,$what) = @_;
- $self->print_ornamented($what, 'bold red on_white');
- die "\n";
-}
-
-sub setup_output {
- return if -t STDOUT;
- my $odef = select STDERR;
- $| = 1;
- select STDOUT;
- $| = 1;
- select $odef;
-}
-
-#-> sub CPAN::Shell::rematein ;
-# RE-adme||MA-ke||TE-st||IN-stall
-sub rematein {
- shift;
- my($meth,@some) = @_;
- my $pragma = "";
- if ($meth eq 'force') {
- $pragma = $meth;
- $meth = shift @some;
- }
- setup_output();
- CPAN->debug("pragma[$pragma]meth[$meth] some[@some]") if $CPAN::DEBUG;
-
- # Here is the place to set "test_count" on all involved parties to
- # 0. We then can pass this counter on to the involved
- # distributions and those can refuse to test if test_count > X. In
- # the first stab at it we could use a 1 for "X".
-
- # But when do I reset the distributions to start with 0 again?
- # Jost suggested to have a random or cycling interaction ID that
- # we pass through. But the ID is something that is just left lying
- # around in addition to the counter, so I'd prefer to set the
- # counter to 0 now, and repeat at the end of the loop. But what
- # about dependencies? They appear later and are not reset, they
- # enter the queue but not its copy. How do they get a sensible
- # test_count?
-
- # construct the queue
- my($s,@s,@qcopy);
- foreach $s (@some) {
- my $obj;
- if (ref $s) {
- CPAN->debug("s is an object[$s]") if $CPAN::DEBUG;
- $obj = $s;
- } elsif ($s =~ m|^/|) { # looks like a regexp
- $CPAN::Frontend->mywarn("Sorry, $meth with a regular expression is ".
- "not supported\n");
- sleep 2;
- next;
- } else {
- CPAN->debug("calling expandany [$s]") if $CPAN::DEBUG;
- $obj = CPAN::Shell->expandany($s);
- }
- if (ref $obj) {
- $obj->color_cmd_tmps(0,1);
- CPAN::Queue->new($obj->id);
- push @qcopy, $obj;
- } elsif ($CPAN::META->exists('CPAN::Author',$s)) {
- $obj = $CPAN::META->instance('CPAN::Author',$s);
- if ($meth eq "dump") {
- $obj->dump;
- } else {
- $CPAN::Frontend->myprint(
- join "",
- "Don't be silly, you can't $meth ",
- $obj->fullname,
- " ;-)\n"
- );
- sleep 2;
- }
- } else {
- $CPAN::Frontend
- ->myprint(qq{Warning: Cannot $meth $s, }.
- qq{don\'t know what it is.
-Try the command
-
- i /$s/
-
-to find objects with matching identifiers.
-});
- sleep 2;
- }
- }
-
- # queuerunner (please be warned: when I started to change the
- # queue to hold objects instead of names, I made one or two
- # mistakes and never found which. I reverted back instead)
- while ($s = CPAN::Queue->first) {
- my $obj;
- if (ref $s) {
- $obj = $s; # I do not believe, we would survive if this happened
- } else {
- $obj = CPAN::Shell->expandany($s);
- }
- if ($pragma
- &&
- ($] < 5.00303 || $obj->can($pragma))){
- ### compatibility with 5.003
- $obj->$pragma($meth); # the pragma "force" in
- # "CPAN::Distribution" must know
- # what we are intending
- }
- if ($]>=5.00303 && $obj->can('called_for')) {
- $obj->called_for($s);
- }
- CPAN->debug(
- qq{pragma[$pragma]meth[$meth]obj[$obj]as_string\[}.
- $obj->as_string.
- qq{\]}
- ) if $CPAN::DEBUG;
-
- if ($obj->$meth()){
- CPAN::Queue->delete($s);
- } else {
- CPAN->debug("failed");
- }
-
- $obj->undelay;
- CPAN::Queue->delete_first($s);
- }
- for my $obj (@qcopy) {
- $obj->color_cmd_tmps(0,0);
- }
-}
-
-#-> sub CPAN::Shell::dump ;
-sub dump { shift->rematein('dump',@_); }
-#-> sub CPAN::Shell::force ;
-sub force { shift->rematein('force',@_); }
-#-> sub CPAN::Shell::get ;
-sub get { shift->rematein('get',@_); }
-#-> sub CPAN::Shell::readme ;
-sub readme { shift->rematein('readme',@_); }
-#-> sub CPAN::Shell::make ;
-sub make { shift->rematein('make',@_); }
-#-> sub CPAN::Shell::test ;
-sub test { shift->rematein('test',@_); }
-#-> sub CPAN::Shell::install ;
-sub install { shift->rematein('install',@_); }
-#-> sub CPAN::Shell::clean ;
-sub clean { shift->rematein('clean',@_); }
-#-> sub CPAN::Shell::look ;
-sub look { shift->rematein('look',@_); }
-#-> sub CPAN::Shell::cvs_import ;
-sub cvs_import { shift->rematein('cvs_import',@_); }
-
-package CPAN::LWP::UserAgent;
-
-sub config {
- return if $SETUPDONE;
- if ($CPAN::META->has_usable('LWP::UserAgent')) {
- require LWP::UserAgent;
- @ISA = qw(Exporter LWP::UserAgent);
- $SETUPDONE++;
- } else {
- $CPAN::Frontent->mywarn("LWP::UserAgent not available\n");
- }
-}
-
-sub get_basic_credentials {
- my($self, $realm, $uri, $proxy) = @_;
- return unless $proxy;
- if ($USER && $PASSWD) {
- } elsif (defined $CPAN::Config->{proxy_user} &&
- defined $CPAN::Config->{proxy_pass}) {
- $USER = $CPAN::Config->{proxy_user};
- $PASSWD = $CPAN::Config->{proxy_pass};
- } else {
- require ExtUtils::MakeMaker;
- ExtUtils::MakeMaker->import(qw(prompt));
- $USER = prompt("Proxy authentication needed!
- (Note: to permanently configure username and password run
- o conf proxy_user your_username
- o conf proxy_pass your_password
- )\nUsername:");
- if ($CPAN::META->has_inst("Term::ReadKey")) {
- Term::ReadKey::ReadMode("noecho");
- } else {
- $CPAN::Frontend->mywarn("Warning: Term::ReadKey seems not to be available, your password will be echoed to the terminal!\n");
- }
- $PASSWD = prompt("Password:");
- if ($CPAN::META->has_inst("Term::ReadKey")) {
- Term::ReadKey::ReadMode("restore");
- }
- $CPAN::Frontend->myprint("\n\n");
- }
- return($USER,$PASSWD);
-}
-
-sub mirror {
- my($self,$url,$aslocal) = @_;
- my $result = $self->SUPER::mirror($url,$aslocal);
- if ($result->code == 407) {
- undef $USER;
- undef $PASSWD;
- $result = $self->SUPER::mirror($url,$aslocal);
- }
- $result;
-}
-
-package CPAN::FTP;
-
-#-> sub CPAN::FTP::ftp_get ;
-sub ftp_get {
- my($class,$host,$dir,$file,$target) = @_;
- $class->debug(
- qq[Going to fetch file [$file] from dir [$dir]
- on host [$host] as local [$target]\n]
- ) if $CPAN::DEBUG;
- my $ftp = Net::FTP->new($host);
- return 0 unless defined $ftp;
- $ftp->debug(1) if $CPAN::DEBUG{'FTP'} & $CPAN::DEBUG;
- $class->debug(qq[Going to login("anonymous","$Config::Config{cf_email}")]);
- unless ( $ftp->login("anonymous",$Config::Config{'cf_email'}) ){
- warn "Couldn't login on $host";
- return;
- }
- unless ( $ftp->cwd($dir) ){
- warn "Couldn't cwd $dir";
- return;
- }
- $ftp->binary;
- $class->debug(qq[Going to ->get("$file","$target")\n]) if $CPAN::DEBUG;
- unless ( $ftp->get($file,$target) ){
- warn "Couldn't fetch $file from $host\n";
- return;
- }
- $ftp->quit; # it's ok if this fails
- return 1;
-}
-
-# If more accuracy is wanted/needed, Chris Leach sent me this patch...
-
- # > *** /install/perl/live/lib/CPAN.pm- Wed Sep 24 13:08:48 1997
- # > --- /tmp/cp Wed Sep 24 13:26:40 1997
- # > ***************
- # > *** 1562,1567 ****
- # > --- 1562,1580 ----
- # > return 1 if substr($url,0,4) eq "file";
- # > return 1 unless $url =~ m|://([^/]+)|;
- # > my $host = $1;
- # > + my $proxy = $CPAN::Config->{'http_proxy'} || $ENV{'http_proxy'};
- # > + if ($proxy) {
- # > + $proxy =~ m|://([^/:]+)|;
- # > + $proxy = $1;
- # > + my $noproxy = $CPAN::Config->{'no_proxy'} || $ENV{'no_proxy'};
- # > + if ($noproxy) {
- # > + if ($host !~ /$noproxy$/) {
- # > + $host = $proxy;
- # > + }
- # > + } else {
- # > + $host = $proxy;
- # > + }
- # > + }
- # > require Net::Ping;
- # > return 1 unless $Net::Ping::VERSION >= 2;
- # > my $p;
-
-
-#-> sub CPAN::FTP::localize ;
-sub localize {
- my($self,$file,$aslocal,$force) = @_;
- $force ||= 0;
- Carp::croak "Usage: ->localize(cpan_file,as_local_file[,$force])"
- unless defined $aslocal;
- $self->debug("file[$file] aslocal[$aslocal] force[$force]")
- if $CPAN::DEBUG;
-
- if ($^O eq 'MacOS') {
- # Comment by AK on 2000-09-03: Uniq short filenames would be
- # available in CHECKSUMS file
- my($name, $path) = File::Basename::fileparse($aslocal, '');
- if (length($name) > 31) {
- $name =~ s/(
- \.(
- readme(\.(gz|Z))? |
- (tar\.)?(gz|Z) |
- tgz |
- zip |
- pm\.(gz|Z)
- )
- )$//x;
- my $suf = $1;
- my $size = 31 - length($suf);
- while (length($name) > $size) {
- chop $name;
- }
- $name .= $suf;
- $aslocal = File::Spec->catfile($path, $name);
- }
- }
-
- return $aslocal if -f $aslocal && -r _ && !($force & 1);
- my($restore) = 0;
- if (-f $aslocal){
- rename $aslocal, "$aslocal.bak";
- $restore++;
- }
-
- my($aslocal_dir) = File::Basename::dirname($aslocal);
- File::Path::mkpath($aslocal_dir);
- $CPAN::Frontend->mywarn(qq{Warning: You are not allowed to write into }.
- qq{directory "$aslocal_dir".
- I\'ll continue, but if you encounter problems, they may be due
- to insufficient permissions.\n}) unless -w $aslocal_dir;
-
- # Inheritance is not easier to manage than a few if/else branches
- if ($CPAN::META->has_usable('LWP::UserAgent')) {
- unless ($Ua) {
- CPAN::LWP::UserAgent->config;
- eval {$Ua = CPAN::LWP::UserAgent->new;}; # Why is has_usable still not fit enough?
- if ($@) {
- $CPAN::Frontent->mywarn("CPAN::LWP::UserAgent->new dies with $@")
- if $CPAN::DEBUG;
- } else {
- my($var);
- $Ua->proxy('ftp', $var)
- if $var = $CPAN::Config->{ftp_proxy} || $ENV{ftp_proxy};
- $Ua->proxy('http', $var)
- if $var = $CPAN::Config->{http_proxy} || $ENV{http_proxy};
-
-
-# >>>>> On Wed, 13 Dec 2000 09:21:34 -0500, "Robison, Jonathon (J.M.)" <jrobiso2@visteon.com> said:
-#
-# > I note that although CPAN.pm can use proxies, it doesn't seem equipped to
-# > use ones that require basic autorization.
-#
-# > Example of when I use it manually in my own stuff:
-#
-# > $ua->proxy(['http','ftp'], http://my.proxy.server:83');
-# > $req->proxy_authorization_basic("username","password");
-# > $res = $ua->request($req);
-#
-
- $Ua->no_proxy($var)
- if $var = $CPAN::Config->{no_proxy} || $ENV{no_proxy};
- }
- }
- }
- $ENV{ftp_proxy} = $CPAN::Config->{ftp_proxy} if $CPAN::Config->{ftp_proxy};
- $ENV{http_proxy} = $CPAN::Config->{http_proxy}
- if $CPAN::Config->{http_proxy};
- $ENV{no_proxy} = $CPAN::Config->{no_proxy} if $CPAN::Config->{no_proxy};
-
- # Try the list of urls for each single object. We keep a record
- # where we did get a file from
- my(@reordered,$last);
- $CPAN::Config->{urllist} ||= [];
- $last = $#{$CPAN::Config->{urllist}};
- if ($force & 2) { # local cpans probably out of date, don't reorder
- @reordered = (0..$last);
- } else {
- @reordered =
- sort {
- (substr($CPAN::Config->{urllist}[$b],0,4) eq "file")
- <=>
- (substr($CPAN::Config->{urllist}[$a],0,4) eq "file")
- or
- defined($Thesite)
- and
- ($b == $Thesite)
- <=>
- ($a == $Thesite)
- } 0..$last;
- }
- my(@levels);
- if ($Themethod) {
- @levels = ($Themethod, grep {$_ ne $Themethod} qw/easy hard hardest/);
- } else {
- @levels = qw/easy hard hardest/;
- }
- @levels = qw/easy/ if $^O eq 'MacOS';
- my($levelno);
- for $levelno (0..$#levels) {
- my $level = $levels[$levelno];
- my $method = "host$level";
- my @host_seq = $level eq "easy" ?
- @reordered : 0..$last; # reordered has CDROM up front
- @host_seq = (0) unless @host_seq;
- my $ret = $self->$method(\@host_seq,$file,$aslocal);
- if ($ret) {
- $Themethod = $level;
- my $now = time;
- # utime $now, $now, $aslocal; # too bad, if we do that, we
- # might alter a local mirror
- $self->debug("level[$level]") if $CPAN::DEBUG;
- return $ret;
- } else {
- unlink $aslocal;
- last if $CPAN::Signal; # need to cleanup
- }
- }
- unless ($CPAN::Signal) {
- my(@mess);
- push @mess,
- qq{Please check, if the URLs I found in your configuration file \(}.
- join(", ", @{$CPAN::Config->{urllist}}).
- qq{\) are valid. The urllist can be edited.},
- qq{E.g. with 'o conf urllist push ftp://myurl/'};
- $CPAN::Frontend->myprint(Text::Wrap::wrap("","",@mess). "\n\n");
- sleep 2;
- $CPAN::Frontend->myprint("Could not fetch $file\n");
- }
- if ($restore) {
- rename "$aslocal.bak", $aslocal;
- $CPAN::Frontend->myprint("Trying to get away with old file:\n" .
- $self->ls($aslocal));
- return $aslocal;
- }
- return;
-}
-
-sub hosteasy {
- my($self,$host_seq,$file,$aslocal) = @_;
- my($i);
- HOSTEASY: for $i (@$host_seq) {
- my $url = $CPAN::Config->{urllist}[$i] || $CPAN::Defaultsite;
- $url .= "/" unless substr($url,-1) eq "/";
- $url .= $file;
- $self->debug("localizing perlish[$url]") if $CPAN::DEBUG;
- if ($url =~ /^file:/) {
- my $l;
- if ($CPAN::META->has_inst('URI::URL')) {
- my $u = URI::URL->new($url);
- $l = $u->path;
- } else { # works only on Unix, is poorly constructed, but
- # hopefully better than nothing.
- # RFC 1738 says fileurl BNF is
- # fileurl = "file://" [ host | "localhost" ] "/" fpath
- # Thanks to "Mark D. Baushke" <mdb@cisco.com> for
- # the code
- ($l = $url) =~ s|^file://[^/]*/|/|; # discard the host part
- $l =~ s|^file:||; # assume they
- # meant
- # file://localhost
- $l =~ s|^/||s unless -f $l; # e.g. /P:
- $self->debug("without URI::URL we try local file $l") if $CPAN::DEBUG;
- }
- if ( -f $l && -r _) {
- $Thesite = $i;
- return $l;
- }
- # Maybe mirror has compressed it?
- if (-f "$l.gz") {
- $self->debug("found compressed $l.gz") if $CPAN::DEBUG;
- CPAN::Tarzip->gunzip("$l.gz", $aslocal);
- if ( -f $aslocal) {
- $Thesite = $i;
- return $aslocal;
- }
- }
- }
- if ($CPAN::META->has_usable('LWP')) {
- $CPAN::Frontend->myprint("Fetching with LWP:
- $url
-");
- unless ($Ua) {
- CPAN::LWP::UserAgent->config;
- eval { $Ua = CPAN::LWP::UserAgent->new; };
- if ($@) {
- $CPAN::Frontent->mywarn("CPAN::LWP::UserAgent->new dies with $@");
- }
- }
- my $res = $Ua->mirror($url, $aslocal);
- if ($res->is_success) {
- $Thesite = $i;
- my $now = time;
- utime $now, $now, $aslocal; # download time is more
- # important than upload time
- return $aslocal;
- } elsif ($url !~ /\.gz(?!\n)\Z/) {
- my $gzurl = "$url.gz";
- $CPAN::Frontend->myprint("Fetching with LWP:
- $gzurl
-");
- $res = $Ua->mirror($gzurl, "$aslocal.gz");
- if ($res->is_success &&
- CPAN::Tarzip->gunzip("$aslocal.gz",$aslocal)
- ) {
- $Thesite = $i;
- return $aslocal;
- }
- } else {
- $CPAN::Frontend->myprint(sprintf(
- "LWP failed with code[%s] message[%s]\n",
- $res->code,
- $res->message,
- ));
- # Alan Burlison informed me that in firewall environments
- # Net::FTP can still succeed where LWP fails. So we do not
- # skip Net::FTP anymore when LWP is available.
- }
- } else {
- $CPAN::Frontend->myprint("LWP not available\n");
- }
- return if $CPAN::Signal;
- if ($url =~ m|^ftp://(.*?)/(.*)/(.*)|) {
- # that's the nice and easy way thanks to Graham
- my($host,$dir,$getfile) = ($1,$2,$3);
- if ($CPAN::META->has_usable('Net::FTP')) {
- $dir =~ s|/+|/|g;
- $CPAN::Frontend->myprint("Fetching with Net::FTP:
- $url
-");
- $self->debug("getfile[$getfile]dir[$dir]host[$host]" .
- "aslocal[$aslocal]") if $CPAN::DEBUG;
- if (CPAN::FTP->ftp_get($host,$dir,$getfile,$aslocal)) {
- $Thesite = $i;
- return $aslocal;
- }
- if ($aslocal !~ /\.gz(?!\n)\Z/) {
- my $gz = "$aslocal.gz";
- $CPAN::Frontend->myprint("Fetching with Net::FTP
- $url.gz
-");
- if (CPAN::FTP->ftp_get($host,
- $dir,
- "$getfile.gz",
- $gz) &&
- CPAN::Tarzip->gunzip($gz,$aslocal)
- ){
- $Thesite = $i;
- return $aslocal;
- }
- }
- # next HOSTEASY;
- }
- }
- return if $CPAN::Signal;
- }
-}
-
-sub hosthard {
- my($self,$host_seq,$file,$aslocal) = @_;
-
- # Came back if Net::FTP couldn't establish connection (or
- # failed otherwise) Maybe they are behind a firewall, but they
- # gave us a socksified (or other) ftp program...
-
- my($i);
- my($devnull) = $CPAN::Config->{devnull} || "";
- # < /dev/null ";
- my($aslocal_dir) = File::Basename::dirname($aslocal);
- File::Path::mkpath($aslocal_dir);
- HOSTHARD: for $i (@$host_seq) {
- my $url = $CPAN::Config->{urllist}[$i] || $CPAN::Defaultsite;
- $url .= "/" unless substr($url,-1) eq "/";
- $url .= $file;
- my($proto,$host,$dir,$getfile);
-
- # Courtesy Mark Conty mark_conty@cargill.com change from
- # if ($url =~ m|^ftp://(.*?)/(.*)/(.*)|) {
- # to
- if ($url =~ m|^([^:]+)://(.*?)/(.*)/(.*)|) {
- # proto not yet used
- ($proto,$host,$dir,$getfile) = ($1,$2,$3,$4);
- } else {
- next HOSTHARD; # who said, we could ftp anything except ftp?
- }
- next HOSTHARD if $proto eq "file"; # file URLs would have had
- # success above. Likely a bogus URL
-
- $self->debug("localizing funkyftpwise[$url]") if $CPAN::DEBUG;
- my($f,$funkyftp);
- for $f ('lynx','ncftpget','ncftp','wget') {
- next unless exists $CPAN::Config->{$f};
- $funkyftp = $CPAN::Config->{$f};
- next unless defined $funkyftp;
- next if $funkyftp =~ /^\s*$/;
- my($asl_ungz, $asl_gz);
- ($asl_ungz = $aslocal) =~ s/\.gz//;
- $asl_gz = "$asl_ungz.gz";
- my($src_switch) = "";
- if ($f eq "lynx"){
- $src_switch = " -source";
- } elsif ($f eq "ncftp"){
- $src_switch = " -c";
- } elsif ($f eq "wget"){
- $src_switch = " -O -";
- }
- my($chdir) = "";
- my($stdout_redir) = " > $asl_ungz";
- if ($f eq "ncftpget"){
- $chdir = "cd $aslocal_dir && ";
- $stdout_redir = "";
- }
- $CPAN::Frontend->myprint(
- qq[
-Trying with "$funkyftp$src_switch" to get
- $url
-]);
- my($system) =
- "$chdir$funkyftp$src_switch '$url' $devnull$stdout_redir";
- $self->debug("system[$system]") if $CPAN::DEBUG;
- my($wstatus);
- if (($wstatus = system($system)) == 0
- &&
- ($f eq "lynx" ?
- -s $asl_ungz # lynx returns 0 when it fails somewhere
- : 1
- )
- ) {
- if (-s $aslocal) {
- # Looks good
- } elsif ($asl_ungz ne $aslocal) {
- # test gzip integrity
- if (CPAN::Tarzip->gtest($asl_ungz)) {
- # e.g. foo.tar is gzipped --> foo.tar.gz
- rename $asl_ungz, $aslocal;
- } else {
- CPAN::Tarzip->gzip($asl_ungz,$asl_gz);
- }
- }
- $Thesite = $i;
- return $aslocal;
- } elsif ($url !~ /\.gz(?!\n)\Z/) {
- unlink $asl_ungz if
- -f $asl_ungz && -s _ == 0;
- my $gz = "$aslocal.gz";
- my $gzurl = "$url.gz";
- $CPAN::Frontend->myprint(
- qq[
-Trying with "$funkyftp$src_switch" to get
- $url.gz
-]);
- my($system) = "$funkyftp$src_switch '$url.gz' $devnull > $asl_gz";
- $self->debug("system[$system]") if $CPAN::DEBUG;
- my($wstatus);
- if (($wstatus = system($system)) == 0
- &&
- -s $asl_gz
- ) {
- # test gzip integrity
- if (CPAN::Tarzip->gtest($asl_gz)) {
- CPAN::Tarzip->gunzip($asl_gz,$aslocal);
- } else {
- # somebody uncompressed file for us?
- rename $asl_ungz, $aslocal;
- }
- $Thesite = $i;
- return $aslocal;
- } else {
- unlink $asl_gz if -f $asl_gz;
- }
- } else {
- my $estatus = $wstatus >> 8;
- my $size = -f $aslocal ?
- ", left\n$aslocal with size ".-s _ :
- "\nWarning: expected file [$aslocal] doesn't exist";
- $CPAN::Frontend->myprint(qq{
-System call "$system"
-returned status $estatus (wstat $wstatus)$size
-});
- }
- return if $CPAN::Signal;
- } # lynx,ncftpget,ncftp
- } # host
-}
-
-sub hosthardest {
- my($self,$host_seq,$file,$aslocal) = @_;
-
- my($i);
- my($aslocal_dir) = File::Basename::dirname($aslocal);
- File::Path::mkpath($aslocal_dir);
- HOSTHARDEST: for $i (@$host_seq) {
- unless (length $CPAN::Config->{'ftp'}) {
- $CPAN::Frontend->myprint("No external ftp command available\n\n");
- last HOSTHARDEST;
- }
- my $url = $CPAN::Config->{urllist}[$i] || $CPAN::Defaultsite;
- $url .= "/" unless substr($url,-1) eq "/";
- $url .= $file;
- $self->debug("localizing ftpwise[$url]") if $CPAN::DEBUG;
- unless ($url =~ m|^ftp://(.*?)/(.*)/(.*)|) {
- next;
- }
- my($host,$dir,$getfile) = ($1,$2,$3);
- my $timestamp = 0;
- my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,
- $ctime,$blksize,$blocks) = stat($aslocal);
- $timestamp = $mtime ||= 0;
- my($netrc) = CPAN::FTP::netrc->new;
- my($netrcfile) = $netrc->netrc;
- my($verbose) = $CPAN::DEBUG{'FTP'} & $CPAN::DEBUG ? " -v" : "";
- my $targetfile = File::Basename::basename($aslocal);
- my(@dialog);
- push(
- @dialog,
- "lcd $aslocal_dir",
- "cd /",
- map("cd $_", split "/", $dir), # RFC 1738
- "bin",
- "get $getfile $targetfile",
- "quit"
- );
- if (! $netrcfile) {
- CPAN->debug("No ~/.netrc file found") if $CPAN::DEBUG;
- } elsif ($netrc->hasdefault || $netrc->contains($host)) {
- CPAN->debug(sprintf("hasdef[%d]cont($host)[%d]",
- $netrc->hasdefault,
- $netrc->contains($host))) if $CPAN::DEBUG;
- if ($netrc->protected) {
- $CPAN::Frontend->myprint(qq{
- Trying with external ftp to get
- $url
- As this requires some features that are not thoroughly tested, we\'re
- not sure, that we get it right....
-
-}
- );
- $self->talk_ftp("$CPAN::Config->{'ftp'}$verbose $host",
- @dialog);
- ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
- $atime,$mtime,$ctime,$blksize,$blocks) = stat($aslocal);
- $mtime ||= 0;
- if ($mtime > $timestamp) {
- $CPAN::Frontend->myprint("GOT $aslocal\n");
- $Thesite = $i;
- return $aslocal;
- } else {
- $CPAN::Frontend->myprint("Hmm... Still failed!\n");
- }
- return if $CPAN::Signal;
- } else {
- $CPAN::Frontend->mywarn(qq{Your $netrcfile is not }.
- qq{correctly protected.\n});
- }
- } else {
- $CPAN::Frontend->mywarn("Your ~/.netrc neither contains $host
- nor does it have a default entry\n");
- }
-
- # OK, they don't have a valid ~/.netrc. Use 'ftp -n'
- # then and login manually to host, using e-mail as
- # password.
- $CPAN::Frontend->myprint(qq{Issuing "$CPAN::Config->{'ftp'}$verbose -n"\n});
- unshift(
- @dialog,
- "open $host",
- "user anonymous $Config::Config{'cf_email'}"
- );
- $self->talk_ftp("$CPAN::Config->{'ftp'}$verbose -n", @dialog);
- ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
- $atime,$mtime,$ctime,$blksize,$blocks) = stat($aslocal);
- $mtime ||= 0;
- if ($mtime > $timestamp) {
- $CPAN::Frontend->myprint("GOT $aslocal\n");
- $Thesite = $i;
- return $aslocal;
- } else {
- $CPAN::Frontend->myprint("Bad luck... Still failed!\n");
- }
- return if $CPAN::Signal;
- $CPAN::Frontend->myprint("Can't access URL $url.\n\n");
- sleep 2;
- } # host
-}
-
-sub talk_ftp {
- my($self,$command,@dialog) = @_;
- my $fh = FileHandle->new;
- $fh->open("|$command") or die "Couldn't open ftp: $!";
- foreach (@dialog) { $fh->print("$_\n") }
- $fh->close; # Wait for process to complete
- my $wstatus = $?;
- my $estatus = $wstatus >> 8;
- $CPAN::Frontend->myprint(qq{
-Subprocess "|$command"
- returned status $estatus (wstat $wstatus)
-}) if $wstatus;
-}
-
-# find2perl needs modularization, too, all the following is stolen
-# from there
-# CPAN::FTP::ls
-sub ls {
- my($self,$name) = @_;
- my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$sizemm,
- $atime,$mtime,$ctime,$blksize,$blocks) = lstat($name);
-
- my($perms,%user,%group);
- my $pname = $name;
-
- if ($blocks) {
- $blocks = int(($blocks + 1) / 2);
- }
- else {
- $blocks = int(($sizemm + 1023) / 1024);
- }
-
- if (-f _) { $perms = '-'; }
- elsif (-d _) { $perms = 'd'; }
- elsif (-c _) { $perms = 'c'; $sizemm = &sizemm; }
- elsif (-b _) { $perms = 'b'; $sizemm = &sizemm; }
- elsif (-p _) { $perms = 'p'; }
- elsif (-S _) { $perms = 's'; }
- else { $perms = 'l'; $pname .= ' -> ' . readlink($_); }
-
- my(@rwx) = ('---','--x','-w-','-wx','r--','r-x','rw-','rwx');
- my(@moname) = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
- my $tmpmode = $mode;
- my $tmp = $rwx[$tmpmode & 7];
- $tmpmode >>= 3;
- $tmp = $rwx[$tmpmode & 7] . $tmp;
- $tmpmode >>= 3;
- $tmp = $rwx[$tmpmode & 7] . $tmp;
- substr($tmp,2,1) =~ tr/-x/Ss/ if -u _;
- substr($tmp,5,1) =~ tr/-x/Ss/ if -g _;
- substr($tmp,8,1) =~ tr/-x/Tt/ if -k _;
- $perms .= $tmp;
-
- my $user = $user{$uid} || $uid; # too lazy to implement lookup
- my $group = $group{$gid} || $gid;
-
- my($sec,$min,$hour,$mday,$mon,$year) = localtime($mtime);
- my($timeyear);
- my($moname) = $moname[$mon];
- if (-M _ > 365.25 / 2) {
- $timeyear = $year + 1900;
- }
- else {
- $timeyear = sprintf("%02d:%02d", $hour, $min);
- }
-
- sprintf "%5lu %4ld %-10s %2d %-8s %-8s %8s %s %2d %5s %s\n",
- $ino,
- $blocks,
- $perms,
- $nlink,
- $user,
- $group,
- $sizemm,
- $moname,
- $mday,
- $timeyear,
- $pname;
-}
-
-package CPAN::FTP::netrc;
-
-sub new {
- my($class) = @_;
- my $file = MM->catfile($ENV{HOME},".netrc");
-
- my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
- $atime,$mtime,$ctime,$blksize,$blocks)
- = stat($file);
- $mode ||= 0;
- my $protected = 0;
-
- my($fh,@machines,$hasdefault);
- $hasdefault = 0;
- $fh = FileHandle->new or die "Could not create a filehandle";
-
- if($fh->open($file)){
- $protected = ($mode & 077) == 0;
- local($/) = "";
- NETRC: while (<$fh>) {
- my(@tokens) = split " ", $_;
- TOKEN: while (@tokens) {
- my($t) = shift @tokens;
- if ($t eq "default"){
- $hasdefault++;
- last NETRC;
- }
- last TOKEN if $t eq "macdef";
- if ($t eq "machine") {
- push @machines, shift @tokens;
- }
- }
- }
- } else {
- $file = $hasdefault = $protected = "";
- }
-
- bless {
- 'mach' => [@machines],
- 'netrc' => $file,
- 'hasdefault' => $hasdefault,
- 'protected' => $protected,
- }, $class;
-}
-
-# CPAN::FTP::hasdefault;
-sub hasdefault { shift->{'hasdefault'} }
-sub netrc { shift->{'netrc'} }
-sub protected { shift->{'protected'} }
-sub contains {
- my($self,$mach) = @_;
- for ( @{$self->{'mach'}} ) {
- return 1 if $_ eq $mach;
- }
- return 0;
-}
-
-package CPAN::Complete;
-
-sub gnu_cpl {
- my($text, $line, $start, $end) = @_;
- my(@perlret) = cpl($text, $line, $start);
- # find longest common match. Can anybody show me how to peruse
- # T::R::Gnu to have this done automatically? Seems expensive.
- return () unless @perlret;
- my($newtext) = $text;
- for (my $i = length($text)+1;;$i++) {
- last unless length($perlret[0]) && length($perlret[0]) >= $i;
- my $try = substr($perlret[0],0,$i);
- my @tries = grep {substr($_,0,$i) eq $try} @perlret;
- # warn "try[$try]tries[@tries]";
- if (@tries == @perlret) {
- $newtext = $try;
- } else {
- last;
- }
- }
- ($newtext,@perlret);
-}
-
-#-> sub CPAN::Complete::cpl ;
-sub cpl {
- my($word,$line,$pos) = @_;
- $word ||= "";
- $line ||= "";
- $pos ||= 0;
- CPAN->debug("word [$word] line[$line] pos[$pos]") if $CPAN::DEBUG;
- $line =~ s/^\s*//;
- if ($line =~ s/^(force\s*)//) {
- $pos -= length($1);
- }
- my @return;
- if ($pos == 0) {
- @return = grep /^$word/, @CPAN::Complete::COMMANDS;
- } elsif ( $line !~ /^[\!abcdghimorutl]/ ) {
- @return = ();
- } elsif ($line =~ /^(a|ls)\s/) {
- @return = cplx('CPAN::Author',uc($word));
- } elsif ($line =~ /^b\s/) {
- CPAN::Shell->local_bundles;
- @return = cplx('CPAN::Bundle',$word);
- } elsif ($line =~ /^d\s/) {
- @return = cplx('CPAN::Distribution',$word);
- } elsif ($line =~ m/^(
- [mru]|make|clean|dump|get|test|install|readme|look|cvs_import
- )\s/x ) {
- if ($word =~ /^Bundle::/) {
- CPAN::Shell->local_bundles;
- }
- @return = (cplx('CPAN::Module',$word),cplx('CPAN::Bundle',$word));
- } elsif ($line =~ /^i\s/) {
- @return = cpl_any($word);
- } elsif ($line =~ /^reload\s/) {
- @return = cpl_reload($word,$line,$pos);
- } elsif ($line =~ /^o\s/) {
- @return = cpl_option($word,$line,$pos);
- } elsif ($line =~ m/^\S+\s/ ) {
- # fallback for future commands and what we have forgotten above
- @return = (cplx('CPAN::Module',$word),cplx('CPAN::Bundle',$word));
- } else {
- @return = ();
- }
- return @return;
-}
-
-#-> sub CPAN::Complete::cplx ;
-sub cplx {
- my($class, $word) = @_;
- # I believed for many years that this was sorted, today I
- # realized, it wasn't sorted anymore. Now (rev 1.301 / v 1.55) I
- # make it sorted again. Maybe sort was dropped when GNU-readline
- # support came in? The RCS file is difficult to read on that:-(
- sort grep /^\Q$word\E/, map { $_->id } $CPAN::META->all_objects($class);
-}
-
-#-> sub CPAN::Complete::cpl_any ;
-sub cpl_any {
- my($word) = shift;
- return (
- cplx('CPAN::Author',$word),
- cplx('CPAN::Bundle',$word),
- cplx('CPAN::Distribution',$word),
- cplx('CPAN::Module',$word),
- );
-}
-
-#-> sub CPAN::Complete::cpl_reload ;
-sub cpl_reload {
- my($word,$line,$pos) = @_;
- $word ||= "";
- my(@words) = split " ", $line;
- CPAN->debug("word[$word] line[$line] pos[$pos]") if $CPAN::DEBUG;
- my(@ok) = qw(cpan index);
- return @ok if @words == 1;
- return grep /^\Q$word\E/, @ok if @words == 2 && $word;
-}
-
-#-> sub CPAN::Complete::cpl_option ;
-sub cpl_option {
- my($word,$line,$pos) = @_;
- $word ||= "";
- my(@words) = split " ", $line;
- CPAN->debug("word[$word] line[$line] pos[$pos]") if $CPAN::DEBUG;
- my(@ok) = qw(conf debug);
- return @ok if @words == 1;
- return grep /^\Q$word\E/, @ok if @words == 2 && length($word);
- if (0) {
- } elsif ($words[1] eq 'index') {
- return ();
- } elsif ($words[1] eq 'conf') {
- return CPAN::Config::cpl(@_);
- } elsif ($words[1] eq 'debug') {
- return sort grep /^\Q$word\E/, sort keys %CPAN::DEBUG, 'all';
- }
-}
-
-package CPAN::Index;
-
-#-> sub CPAN::Index::force_reload ;
-sub force_reload {
- my($class) = @_;
- $CPAN::Index::LAST_TIME = 0;
- $class->reload(1);
-}
-
-#-> sub CPAN::Index::reload ;
-sub reload {
- my($cl,$force) = @_;
- my $time = time;
-
- # XXX check if a newer one is available. (We currently read it
- # from time to time)
- for ($CPAN::Config->{index_expire}) {
- $_ = 0.001 unless $_ && $_ > 0.001;
- }
- unless (1 || $CPAN::Have_warned->{readmetadatacache}++) {
- # debug here when CPAN doesn't seem to read the Metadata
- require Carp;
- Carp::cluck("META-PROTOCOL[$CPAN::META->{PROTOCOL}]");
- }
- unless ($CPAN::META->{PROTOCOL}) {
- $cl->read_metadata_cache;
- $CPAN::META->{PROTOCOL} ||= "1.0";
- }
- if ( $CPAN::META->{PROTOCOL} < PROTOCOL ) {
- # warn "Setting last_time to 0";
- $LAST_TIME = 0; # No warning necessary
- }
- return if $LAST_TIME + $CPAN::Config->{index_expire}*86400 > $time
- and ! $force;
- if (0) {
- # IFF we are developing, it helps to wipe out the memory
- # between reloads, otherwise it is not what a user expects.
- undef $CPAN::META; # Neue Gruendlichkeit since v1.52(r1.274)
- $CPAN::META = CPAN->new;
- }
- {
- my($debug,$t2);
- local $LAST_TIME = $time;
- local $CPAN::META->{PROTOCOL} = PROTOCOL;
-
- my $needshort = $^O eq "dos";
-
- $cl->rd_authindex($cl
- ->reload_x(
- "authors/01mailrc.txt.gz",
- $needshort ?
- File::Spec->catfile('authors', '01mailrc.gz') :
- File::Spec->catfile('authors', '01mailrc.txt.gz'),
- $force));
- $t2 = time;
- $debug = "timing reading 01[".($t2 - $time)."]";
- $time = $t2;
- return if $CPAN::Signal; # this is sometimes lengthy
- $cl->rd_modpacks($cl
- ->reload_x(
- "modules/02packages.details.txt.gz",
- $needshort ?
- File::Spec->catfile('modules', '02packag.gz') :
- File::Spec->catfile('modules', '02packages.details.txt.gz'),
- $force));
- $t2 = time;
- $debug .= "02[".($t2 - $time)."]";
- $time = $t2;
- return if $CPAN::Signal; # this is sometimes lengthy
- $cl->rd_modlist($cl
- ->reload_x(
- "modules/03modlist.data.gz",
- $needshort ?
- File::Spec->catfile('modules', '03mlist.gz') :
- File::Spec->catfile('modules', '03modlist.data.gz'),
- $force));
- $cl->write_metadata_cache;
- $t2 = time;
- $debug .= "03[".($t2 - $time)."]";
- $time = $t2;
- CPAN->debug($debug) if $CPAN::DEBUG;
- }
- $LAST_TIME = $time;
- $CPAN::META->{PROTOCOL} = PROTOCOL;
-}
-
-#-> sub CPAN::Index::reload_x ;
-sub reload_x {
- my($cl,$wanted,$localname,$force) = @_;
- $force |= 2; # means we're dealing with an index here
- CPAN::Config->load; # we should guarantee loading wherever we rely
- # on Config XXX
- $localname ||= $wanted;
- my $abs_wanted = MM->catfile($CPAN::Config->{'keep_source_where'},
- $localname);
- if (
- -f $abs_wanted &&
- -M $abs_wanted < $CPAN::Config->{'index_expire'} &&
- !($force & 1)
- ) {
- my $s = $CPAN::Config->{'index_expire'} == 1 ? "" : "s";
- $cl->debug(qq{$abs_wanted younger than $CPAN::Config->{'index_expire'} }.
- qq{day$s. I\'ll use that.});
- return $abs_wanted;
- } else {
- $force |= 1; # means we're quite serious about it.
- }
- return CPAN::FTP->localize($wanted,$abs_wanted,$force);
-}
-
-#-> sub CPAN::Index::rd_authindex ;
-sub rd_authindex {
- my($cl, $index_target) = @_;
- my @lines;
- return unless defined $index_target;
- $CPAN::Frontend->myprint("Going to read $index_target\n");
- local(*FH);
- tie *FH, CPAN::Tarzip, $index_target;
- local($/) = "\n";
- push @lines, split /\012/ while <FH>;
- foreach (@lines) {
- my($userid,$fullname,$email) =
- m/alias\s+(\S+)\s+\"([^\"\<]+)\s+\<([^\>]+)\>\"/;
- next unless $userid && $fullname && $email;
-
- # instantiate an author object
- my $userobj = $CPAN::META->instance('CPAN::Author',$userid);
- $userobj->set('FULLNAME' => $fullname, 'EMAIL' => $email);
- return if $CPAN::Signal;
- }
-}
-
-sub userid {
- my($self,$dist) = @_;
- $dist = $self->{'id'} unless defined $dist;
- my($ret) = $dist =~ m|(?:\w/\w\w/)?([^/]+)/|;
- $ret;
-}
-
-#-> sub CPAN::Index::rd_modpacks ;
-sub rd_modpacks {
- my($self, $index_target) = @_;
- my @lines;
- return unless defined $index_target;
- $CPAN::Frontend->myprint("Going to read $index_target\n");
- my $fh = CPAN::Tarzip->TIEHANDLE($index_target);
- local($/) = "\n";
- while ($_ = $fh->READLINE) {
- s/\012/\n/g;
- my @ls = map {"$_\n"} split /\n/, $_;
- unshift @ls, "\n" x length($1) if /^(\n+)/;
- push @lines, @ls;
- }
- # read header
- my($line_count,$last_updated);
- while (@lines) {
- my $shift = shift(@lines);
- last if $shift =~ /^\s*$/;
- $shift =~ /^Line-Count:\s+(\d+)/ and $line_count = $1;
- $shift =~ /^Last-Updated:\s+(.+)/ and $last_updated = $1;
- }
- if (not defined $line_count) {
-
- warn qq{Warning: Your $index_target does not contain a Line-Count header.
-Please check the validity of the index file by comparing it to more
-than one CPAN mirror. I'll continue but problems seem likely to
-happen.\a
-};
-
- sleep 5;
- } elsif ($line_count != scalar @lines) {
-
- warn sprintf qq{Warning: Your %s
-contains a Line-Count header of %d but I see %d lines there. Please
-check the validity of the index file by comparing it to more than one
-CPAN mirror. I'll continue but problems seem likely to happen.\a\n},
-$index_target, $line_count, scalar(@lines);
-
- }
- if (not defined $last_updated) {
-
- warn qq{Warning: Your $index_target does not contain a Last-Updated header.
-Please check the validity of the index file by comparing it to more
-than one CPAN mirror. I'll continue but problems seem likely to
-happen.\a
-};
-
- sleep 5;
- } else {
-
- $CPAN::Frontend
- ->myprint(sprintf qq{ Database was generated on %s\n},
- $last_updated);
- $DATE_OF_02 = $last_updated;
-
- if ($CPAN::META->has_inst(HTTP::Date)) {
- require HTTP::Date;
- my($age) = (time - HTTP::Date::str2time($last_updated))/3600/24;
- if ($age > 30) {
-
- $CPAN::Frontend
- ->mywarn(sprintf
- qq{Warning: This index file is %d days old.
- Please check the host you chose as your CPAN mirror for staleness.
- I'll continue but problems seem likely to happen.\a\n},
- $age);
-
- }
- } else {
- $CPAN::Frontend->myprint(" HTTP::Date not available\n");
- }
- }
-
-
- # A necessity since we have metadata_cache: delete what isn't
- # there anymore
- my $secondtime = $CPAN::META->exists("CPAN::Module","CPAN");
- CPAN->debug("secondtime[$secondtime]") if $CPAN::DEBUG;
- my(%exists);
- foreach (@lines) {
- chomp;
- # before 1.56 we split into 3 and discarded the rest. From
- # 1.57 we assign remaining text to $comment thus allowing to
- # influence isa_perl
- my($mod,$version,$dist,$comment) = split " ", $_, 4;
- my($bundle,$id,$userid);
-
- if ($mod eq 'CPAN' &&
- ! (
- CPAN::Queue->exists('Bundle::CPAN') ||
- CPAN::Queue->exists('CPAN')
- )
- ) {
- local($^W)= 0;
- if ($version > $CPAN::VERSION){
- $CPAN::Frontend->myprint(qq{
- There's a new CPAN.pm version (v$version) available!
- [Current version is v$CPAN::VERSION]
- You might want to try
- install Bundle::CPAN
- reload cpan
- without quitting the current session. It should be a seamless upgrade
- while we are running...
-}); #});
- sleep 2;
- $CPAN::Frontend->myprint(qq{\n});
- }
- last if $CPAN::Signal;
- } elsif ($mod =~ /^Bundle::(.*)/) {
- $bundle = $1;
- }
-
- if ($bundle){
- $id = $CPAN::META->instance('CPAN::Bundle',$mod);
- # Let's make it a module too, because bundles have so much
- # in common with modules.
-
- # Changed in 1.57_63: seems like memory bloat now without
- # any value, so commented out
-
- # $CPAN::META->instance('CPAN::Module',$mod);
-
- } else {
-
- # instantiate a module object
- $id = $CPAN::META->instance('CPAN::Module',$mod);
-
- }
-
- if ($id->cpan_file ne $dist){ # update only if file is
- # different. CPAN prohibits same
- # name with different version
- $userid = $self->userid($dist);
- $id->set(
- 'CPAN_USERID' => $userid,
- 'CPAN_VERSION' => $version,
- 'CPAN_FILE' => $dist,
- );
- }
-
- # instantiate a distribution object
- if ($CPAN::META->exists('CPAN::Distribution',$dist)) {
- # we do not need CONTAINSMODS unless we do something with
- # this dist, so we better produce it on demand.
-
- ## my $obj = $CPAN::META->instance(
- ## 'CPAN::Distribution' => $dist
- ## );
- ## $obj->{CONTAINSMODS}{$mod} = undef; # experimental
- } else {
- $CPAN::META->instance(
- 'CPAN::Distribution' => $dist
- )->set(
- 'CPAN_USERID' => $userid,
- 'CPAN_COMMENT' => $comment,
- );
- }
- if ($secondtime) {
- for my $name ($mod,$dist) {
- CPAN->debug("exists name[$name]") if $CPAN::DEBUG;
- $exists{$name} = undef;
- }
- }
- return if $CPAN::Signal;
- }
- undef $fh;
- if ($secondtime) {
- for my $class (qw(CPAN::Module CPAN::Bundle CPAN::Distribution)) {
- for my $o ($CPAN::META->all_objects($class)) {
- next if exists $exists{$o->{ID}};
- $CPAN::META->delete($class,$o->{ID});
- CPAN->debug("deleting ID[$o->{ID}] in class[$class]")
- if $CPAN::DEBUG;
- }
- }
- }
-}
-
-#-> sub CPAN::Index::rd_modlist ;
-sub rd_modlist {
- my($cl,$index_target) = @_;
- return unless defined $index_target;
- $CPAN::Frontend->myprint("Going to read $index_target\n");
- my $fh = CPAN::Tarzip->TIEHANDLE($index_target);
- my @eval;
- local($/) = "\n";
- while ($_ = $fh->READLINE) {
- s/\012/\n/g;
- my @ls = map {"$_\n"} split /\n/, $_;
- unshift @ls, "\n" x length($1) if /^(\n+)/;
- push @eval, @ls;
- }
- while (@eval) {
- my $shift = shift(@eval);
- if ($shift =~ /^Date:\s+(.*)/){
- return if $DATE_OF_03 eq $1;
- ($DATE_OF_03) = $1;
- }
- last if $shift =~ /^\s*$/;
- }
- undef $fh;
- push @eval, q{CPAN::Modulelist->data;};
- local($^W) = 0;
- my($comp) = Safe->new("CPAN::Safe1");
- my($eval) = join("", @eval);
- my $ret = $comp->reval($eval);
- Carp::confess($@) if $@;
- return if $CPAN::Signal;
- for (keys %$ret) {
- my $obj = $CPAN::META->instance("CPAN::Module",$_);
- delete $ret->{$_}{modid}; # not needed here, maybe elsewhere
- $obj->set(%{$ret->{$_}});
- return if $CPAN::Signal;
- }
-}
-
-#-> sub CPAN::Index::write_metadata_cache ;
-sub write_metadata_cache {
- my($self) = @_;
- return unless $CPAN::Config->{'cache_metadata'};
- return unless $CPAN::META->has_usable("Storable");
- my $cache;
- foreach my $k (qw(CPAN::Bundle CPAN::Author CPAN::Module
- CPAN::Distribution)) {
- $cache->{$k} = $CPAN::META->{readonly}{$k}; # unsafe meta access, ok
- }
- my $metadata_file = MM->catfile($CPAN::Config->{cpan_home},"Metadata");
- $cache->{last_time} = $LAST_TIME;
- $cache->{DATE_OF_02} = $DATE_OF_02;
- $cache->{PROTOCOL} = PROTOCOL;
- $CPAN::Frontend->myprint("Going to write $metadata_file\n");
- eval { Storable::nstore($cache, $metadata_file) };
- $CPAN::Frontend->mywarn($@) if $@;
-}
-
-#-> sub CPAN::Index::read_metadata_cache ;
-sub read_metadata_cache {
- my($self) = @_;
- return unless $CPAN::Config->{'cache_metadata'};
- return unless $CPAN::META->has_usable("Storable");
- my $metadata_file = MM->catfile($CPAN::Config->{cpan_home},"Metadata");
- return unless -r $metadata_file and -f $metadata_file;
- $CPAN::Frontend->myprint("Going to read $metadata_file\n");
- my $cache;
- eval { $cache = Storable::retrieve($metadata_file) };
- $CPAN::Frontend->mywarn($@) if $@;
- if (!$cache || ref $cache ne 'HASH'){
- $LAST_TIME = 0;
- return;
- }
- if (exists $cache->{PROTOCOL}) {
- if (PROTOCOL > $cache->{PROTOCOL}) {
- $CPAN::Frontend->mywarn(sprintf("Ignoring Metadata cache written ".
- "with protocol v%s, requiring v%s",
- $cache->{PROTOCOL},
- PROTOCOL)
- );
- return;
- }
- } else {
- $CPAN::Frontend->mywarn("Ignoring Metadata cache written ".
- "with protocol v1.0");
- return;
- }
- my $clcnt = 0;
- my $idcnt = 0;
- while(my($class,$v) = each %$cache) {
- next unless $class =~ /^CPAN::/;
- $CPAN::META->{readonly}{$class} = $v; # unsafe meta access, ok
- while (my($id,$ro) = each %$v) {
- $CPAN::META->{readwrite}{$class}{$id} ||=
- $class->new(ID=>$id, RO=>$ro);
- $idcnt++;
- }
- $clcnt++;
- }
- unless ($clcnt) { # sanity check
- $CPAN::Frontend->myprint("Warning: Found no data in $metadata_file\n");
- return;
- }
- if ($idcnt < 1000) {
- $CPAN::Frontend->myprint("Warning: Found only $idcnt objects ".
- "in $metadata_file\n");
- return;
- }
- $CPAN::META->{PROTOCOL} ||=
- $cache->{PROTOCOL}; # reading does not up or downgrade, but it
- # does initialize to some protocol
- $LAST_TIME = $cache->{last_time};
- $DATE_OF_02 = $cache->{DATE_OF_02};
- $CPAN::Frontend->myprint(" Database was generated on $DATE_OF_02\n");
- return;
-}
-
-package CPAN::InfoObj;
-
-# Accessors
-sub cpan_userid { shift->{RO}{CPAN_USERID} }
-sub id { shift->{ID}; }
-
-#-> sub CPAN::InfoObj::new ;
-sub new {
- my $this = bless {}, shift;
- %$this = @_;
- $this
-}
-
-# The set method may only be used by code that reads index data or
-# otherwise "objective" data from the outside world. All session
-# related material may do anything else with instance variables but
-# must not touch the hash under the RO attribute. The reason is that
-# the RO hash gets written to Metadata file and is thus persistent.
-
-#-> sub CPAN::InfoObj::set ;
-sub set {
- my($self,%att) = @_;
- my $class = ref $self;
-
- # This must be ||=, not ||, because only if we write an empty
- # reference, only then the set method will write into the readonly
- # area. But for Distributions that spring into existence, maybe
- # because of a typo, we do not like it that they are written into
- # the readonly area and made permanent (at least for a while) and
- # that is why we do not "allow" other places to call ->set.
- unless ($self->id) {
- CPAN->debug("Bug? Empty ID, rejecting");
- return;
- }
- my $ro = $self->{RO} =
- $CPAN::META->{readonly}{$class}{$self->id} ||= {};
-
- while (my($k,$v) = each %att) {
- $ro->{$k} = $v;
- }
-}
-
-#-> sub CPAN::InfoObj::as_glimpse ;
-sub as_glimpse {
- my($self) = @_;
- my(@m);
- my $class = ref($self);
- $class =~ s/^CPAN:://;
- push @m, sprintf "%-15s %s\n", $class, $self->{ID};
- join "", @m;
-}
-
-#-> sub CPAN::InfoObj::as_string ;
-sub as_string {
- my($self) = @_;
- my(@m);
- my $class = ref($self);
- $class =~ s/^CPAN:://;
- push @m, $class, " id = $self->{ID}\n";
- for (sort keys %{$self->{RO}}) {
- # next if m/^(ID|RO)$/;
- my $extra = "";
- if ($_ eq "CPAN_USERID") {
- $extra .= " (".$self->author;
- my $email; # old perls!
- if ($email = $CPAN::META->instance("CPAN::Author",
- $self->cpan_userid
- )->email) {
- $extra .= " <$email>";
- } else {
- $extra .= " <no email>";
- }
- $extra .= ")";
- } elsif ($_ eq "FULLNAME") { # potential UTF-8 conversion
- push @m, sprintf " %-12s %s\n", $_, $self->fullname;
- next;
- }
- next unless defined $self->{RO}{$_};
- push @m, sprintf " %-12s %s%s\n", $_, $self->{RO}{$_}, $extra;
- }
- for (sort keys %$self) {
- next if m/^(ID|RO)$/;
- if (ref($self->{$_}) eq "ARRAY") {
- push @m, sprintf " %-12s %s\n", $_, "@{$self->{$_}}";
- } elsif (ref($self->{$_}) eq "HASH") {
- push @m, sprintf(
- " %-12s %s\n",
- $_,
- join(" ",keys %{$self->{$_}}),
- );
- } else {
- push @m, sprintf " %-12s %s\n", $_, $self->{$_};
- }
- }
- join "", @m, "\n";
-}
-
-#-> sub CPAN::InfoObj::author ;
-sub author {
- my($self) = @_;
- $CPAN::META->instance("CPAN::Author",$self->cpan_userid)->fullname;
-}
-
-#-> sub CPAN::InfoObj::dump ;
-sub dump {
- my($self) = @_;
- require Data::Dumper;
- print Data::Dumper::Dumper($self);
-}
-
-package CPAN::Author;
-
-#-> sub CPAN::Author::id
-sub id {
- my $self = shift;
- my $id = $self->{ID};
- $CPAN::Frontend->mydie("Illegal author id[$id]") unless $id =~ /^[A-Z]/;
- $id;
-}
-
-#-> sub CPAN::Author::as_glimpse ;
-sub as_glimpse {
- my($self) = @_;
- my(@m);
- my $class = ref($self);
- $class =~ s/^CPAN:://;
- push @m, sprintf(qq{%-15s %s ("%s" <%s>)\n},
- $class,
- $self->{ID},
- $self->fullname,
- $self->email);
- join "", @m;
-}
-
-#-> sub CPAN::Author::fullname ;
-sub fullname {
- shift->{RO}{FULLNAME};
-}
-*name = \&fullname;
-
-#-> sub CPAN::Author::email ;
-sub email { shift->{RO}{EMAIL}; }
-
-#-> sub CPAN::Author::ls ;
-sub ls {
- my $self = shift;
- my $id = $self->id;
-
- # adapted from CPAN::Distribution::verifyMD5 ;
- my(@csf); # chksumfile
- @csf = $self->id =~ /(.)(.)(.*)/;
- $csf[1] = join "", @csf[0,1];
- $csf[2] = join "", @csf[1,2];
- my(@dl);
- @dl = $self->dir_listing([$csf[0],"CHECKSUMS"], 0);
- unless (grep {$_->[2] eq $csf[1]} @dl) {
- $CPAN::Frontend->myprint("No files in the directory of $id\n");
- return;
- }
- @dl = $self->dir_listing([@csf[0,1],"CHECKSUMS"], 0);
- unless (grep {$_->[2] eq $csf[2]} @dl) {
- $CPAN::Frontend->myprint("No files in the directory of $id\n");
- return;
- }
- @dl = $self->dir_listing([@csf,"CHECKSUMS"], 1);
- $CPAN::Frontend->myprint(join "", map {
- sprintf("%8d %10s %s/%s\n", $_->[0], $_->[1], $id, $_->[2])
- } sort { $a->[2] cmp $b->[2] } @dl);
-}
-
-# returns an array of arrays, the latter contain (size,mtime,filename)
-#-> sub CPAN::Author::dir_listing ;
-sub dir_listing {
- my $self = shift;
- my $chksumfile = shift;
- my $recursive = shift;
- my $lc_want =
- MM->catfile($CPAN::Config->{keep_source_where},
- "authors", "id", @$chksumfile);
- local($") = "/";
- # connect "force" argument with "index_expire".
- my $force = 0;
- if (my @stat = stat $lc_want) {
- $force = $stat[9] + $CPAN::Config->{index_expire}*86400 <= time;
- }
- my $lc_file = CPAN::FTP->localize("authors/id/@$chksumfile",
- $lc_want,$force);
- unless ($lc_file) {
- $CPAN::Frontend->myprint("Trying $lc_want.gz\n");
- $chksumfile->[-1] .= ".gz";
- $lc_file = CPAN::FTP->localize("authors/id/@$chksumfile",
- "$lc_want.gz",1);
- if ($lc_file) {
- $lc_file =~ s{\.gz(?!\n)\Z}{}; #};
- CPAN::Tarzip->gunzip("$lc_file.gz",$lc_file);
- } else {
- return;
- }
- }
-
- # adapted from CPAN::Distribution::MD5_check_file ;
- my $fh = FileHandle->new;
- my($cksum);
- if (open $fh, $lc_file){
- local($/);
- my $eval = <$fh>;
- $eval =~ s/\015?\012/\n/g;
- close $fh;
- my($comp) = Safe->new();
- $cksum = $comp->reval($eval);
- if ($@) {
- rename $lc_file, "$lc_file.bad";
- Carp::confess($@) if $@;
- }
- } else {
- Carp::carp "Could not open $lc_file for reading";
- }
- my(@result,$f);
- for $f (sort keys %$cksum) {
- if (exists $cksum->{$f}{isdir}) {
- if ($recursive) {
- my(@dir) = @$chksumfile;
- pop @dir;
- push @dir, $f, "CHECKSUMS";
- push @result, map {
- [$_->[0], $_->[1], "$f/$_->[2]"]
- } $self->dir_listing(\@dir,1);
- } else {
- push @result, [ 0, "-", $f ];
- }
- } else {
- push @result, [
- ($cksum->{$f}{"size"}||0),
- $cksum->{$f}{"mtime"}||"---",
- $f
- ];
- }
- }
- @result;
-}
-
-package CPAN::Distribution;
-
-# Accessors
-sub cpan_comment { shift->{RO}{CPAN_COMMENT} }
-
-sub undelay {
- my $self = shift;
- delete $self->{later};
-}
-
-# CPAN::Distribution::normalize
-sub normalize {
- my($self,$s) = @_;
- $s = $self->id unless defined $s;
- if (
- $s =~ tr|/|| == 1
- or
- $s !~ m|[A-Z]/[A-Z-]{2}/[A-Z-]{2,}/|
- ) {
- return $s if $s =~ m:^N/A|^Contact Author: ;
- $s =~ s|^(.)(.)([^/]*/)(.+)$|$1/$1$2/$1$2$3$4| or
- $CPAN::Frontend->mywarn("Strange distribution name [$s]");
- CPAN->debug("s[$s]") if $CPAN::DEBUG;
- }
- $s;
-}
-
-#-> sub CPAN::Distribution::color_cmd_tmps ;
-sub color_cmd_tmps {
- my($self) = shift;
- my($depth) = shift || 0;
- my($color) = shift || 0;
- # a distribution needs to recurse into its prereq_pms
-
- return if exists $self->{incommandcolor}
- && $self->{incommandcolor}==$color;
- $CPAN::Frontend->mydie(sprintf("CPAN.pm panic: deep recursion in ".
- "color_cmd_tmps depth[%s] self[%s] id[%s]",
- $depth,
- $self,
- $self->id
- )) if $depth>=100;
- ##### warn "color_cmd_tmps $depth $color " . $self->id; # sleep 1;
- my $prereq_pm = $self->prereq_pm;
- if (defined $prereq_pm) {
- for my $pre (keys %$prereq_pm) {
- my $premo = CPAN::Shell->expand("Module",$pre);
- $premo->color_cmd_tmps($depth+1,$color);
- }
- }
- if ($color==0) {
- delete $self->{sponsored_mods};
- delete $self->{badtestcnt};
- }
- $self->{incommandcolor} = $color;
-}
-
-#-> sub CPAN::Distribution::as_string ;
-sub as_string {
- my $self = shift;
- $self->containsmods;
- $self->SUPER::as_string(@_);
-}
-
-#-> sub CPAN::Distribution::containsmods ;
-sub containsmods {
- my $self = shift;
- return keys %{$self->{CONTAINSMODS}} if exists $self->{CONTAINSMODS};
- my $dist_id = $self->{ID};
- for my $mod ($CPAN::META->all_objects("CPAN::Module")) {
- my $mod_file = $mod->cpan_file or next;
- my $mod_id = $mod->{ID} or next;
- # warn "mod_file[$mod_file] dist_id[$dist_id] mod_id[$mod_id]";
- # sleep 1;
- $self->{CONTAINSMODS}{$mod_id} = undef if $mod_file eq $dist_id;
- }
- keys %{$self->{CONTAINSMODS}};
-}
-
-#-> sub CPAN::Distribution::uptodate ;
-sub uptodate {
- my($self) = @_;
- my $c;
- foreach $c ($self->containsmods) {
- my $obj = CPAN::Shell->expandany($c);
- return 0 unless $obj->uptodate;
- }
- return 1;
-}
-
-#-> sub CPAN::Distribution::called_for ;
-sub called_for {
- my($self,$id) = @_;
- $self->{CALLED_FOR} = $id if defined $id;
- return $self->{CALLED_FOR};
-}
-
-#-> sub CPAN::Distribution::safe_chdir ;
-sub safe_chdir {
- my($self,$todir) = @_;
- # we die if we cannot chdir and we are debuggable
- Carp::confess("safe_chdir called without todir argument")
- unless defined $todir and length $todir;
- if (chdir $todir) {
- $self->debug(sprintf "changed directory to %s", CPAN::anycwd())
- if $CPAN::DEBUG;
- } else {
- my $cwd = CPAN::anycwd();
- $CPAN::Frontend->mydie(qq{Could not chdir from cwd[$cwd] }.
- qq{to todir[$todir]: $!});
- }
-}
-
-#-> sub CPAN::Distribution::get ;
-sub get {
- my($self) = @_;
- EXCUSE: {
- my @e;
- exists $self->{'build_dir'} and push @e,
- "Is already unwrapped into directory $self->{'build_dir'}";
- $CPAN::Frontend->myprint(join "", map {" $_\n"} @e) and return if @e;
- }
- my $sub_wd = CPAN::anycwd(); # for cleaning up as good as possible
-
- #
- # Get the file on local disk
- #
-
- my($local_file);
- my($local_wanted) =
- MM->catfile(
- $CPAN::Config->{keep_source_where},
- "authors",
- "id",
- split("/",$self->id)
- );
-
- $self->debug("Doing localize") if $CPAN::DEBUG;
- unless ($local_file =
- CPAN::FTP->localize("authors/id/$self->{ID}",
- $local_wanted)) {
- my $note = "";
- if ($CPAN::Index::DATE_OF_02) {
- $note = "Note: Current database in memory was generated ".
- "on $CPAN::Index::DATE_OF_02\n";
- }
- $CPAN::Frontend->mydie("Giving up on '$local_wanted'\n$note");
- }
- $self->debug("local_file[$local_file]") if $CPAN::DEBUG;
- $self->{localfile} = $local_file;
- return if $CPAN::Signal;
-
- #
- # Check integrity
- #
- if ($CPAN::META->has_inst("MD5")) {
- $self->debug("MD5 is installed, verifying");
- $self->verifyMD5;
- } else {
- $self->debug("MD5 is NOT installed");
- }
- return if $CPAN::Signal;
-
- #
- # Create a clean room and go there
- #
- $CPAN::META->{cachemgr} ||= CPAN::CacheMgr->new(); # unsafe meta access, ok
- my $builddir = $CPAN::META->{cachemgr}->dir; # unsafe meta access, ok
- $self->safe_chdir($builddir);
- $self->debug("Removing tmp") if $CPAN::DEBUG;
- File::Path::rmtree("tmp");
- mkdir "tmp", 0755 or Carp::croak "Couldn't mkdir tmp: $!";
- if ($CPAN::Signal){
- $self->safe_chdir($sub_wd);
- return;
- }
- $self->safe_chdir("tmp");
-
- #
- # Unpack the goods
- #
- if ($local_file =~ /(\.tar\.(gz|Z)|\.tgz)(?!\n)\Z/i){
- $self->{was_uncompressed}++ unless CPAN::Tarzip->gtest($local_file);
- $self->untar_me($local_file);
- } elsif ( $local_file =~ /\.zip(?!\n)\Z/i ) {
- $self->unzip_me($local_file);
- } elsif ( $local_file =~ /\.pm\.(gz|Z)(?!\n)\Z/) {
- $self->{was_uncompressed}++ unless CPAN::Tarzip->gtest($local_file);
- $self->pm2dir_me($local_file);
- } else {
- $self->{archived} = "NO";
- $self->safe_chdir($sub_wd);
- return;
- }
-
- # we are still in the tmp directory!
- # Let's check if the package has its own directory.
- my $dh = DirHandle->new(File::Spec->curdir)
- or Carp::croak("Couldn't opendir .: $!");
- my @readdir = grep $_ !~ /^\.\.?(?!\n)\Z/s, $dh->read; ### MAC??
- $dh->close;
- my ($distdir,$packagedir);
- if (@readdir == 1 && -d $readdir[0]) {
- $distdir = $readdir[0];
- $packagedir = MM->catdir($builddir,$distdir);
- $self->debug("packagedir[$packagedir]builddir[$builddir]distdir[$distdir]")
- if $CPAN::DEBUG;
- -d $packagedir and $CPAN::Frontend->myprint("Removing previously used ".
- "$packagedir\n");
- File::Path::rmtree($packagedir);
- rename($distdir,$packagedir) or
- Carp::confess("Couldn't rename $distdir to $packagedir: $!");
- $self->debug(sprintf("renamed distdir[%s] to packagedir[%s] -e[%s]-d[%s]",
- $distdir,
- $packagedir,
- -e $packagedir,
- -d $packagedir,
- )) if $CPAN::DEBUG;
- } else {
- my $userid = $self->cpan_userid;
- unless ($userid) {
- CPAN->debug("no userid? self[$self]");
- $userid = "anon";
- }
- my $pragmatic_dir = $userid . '000';
- $pragmatic_dir =~ s/\W_//g;
- $pragmatic_dir++ while -d "../$pragmatic_dir";
- $packagedir = MM->catdir($builddir,$pragmatic_dir);
- $self->debug("packagedir[$packagedir]") if $CPAN::DEBUG;
- File::Path::mkpath($packagedir);
- my($f);
- for $f (@readdir) { # is already without "." and ".."
- my $to = MM->catdir($packagedir,$f);
- rename($f,$to) or Carp::confess("Couldn't rename $f to $to: $!");
- }
- }
- if ($CPAN::Signal){
- $self->safe_chdir($sub_wd);
- return;
- }
-
- $self->{'build_dir'} = $packagedir;
- $self->safe_chdir(File::Spec->updir);
- File::Path::rmtree("tmp");
-
- my($mpl) = MM->catfile($packagedir,"Makefile.PL");
- my($mpl_exists) = -f $mpl;
- unless ($mpl_exists) {
- # NFS has been reported to have racing problems after the
- # renaming of a directory in some environments.
- # This trick helps.
- sleep 1;
- my $mpldh = DirHandle->new($packagedir)
- or Carp::croak("Couldn't opendir $packagedir: $!");
- $mpl_exists = grep /^Makefile\.PL$/, $mpldh->read;
- $mpldh->close;
- }
- unless ($mpl_exists) {
- $self->debug(sprintf("makefilepl[%s]anycwd[%s]",
- $mpl,
- CPAN::anycwd(),
- )) if $CPAN::DEBUG;
- my($configure) = MM->catfile($packagedir,"Configure");
- if (-f $configure) {
- # do we have anything to do?
- $self->{'configure'} = $configure;
- } elsif (-f MM->catfile($packagedir,"Makefile")) {
- $CPAN::Frontend->myprint(qq{
-Package comes with a Makefile and without a Makefile.PL.
-We\'ll try to build it with that Makefile then.
-});
- $self->{writemakefile} = "YES";
- sleep 2;
- } else {
- my $cf = $self->called_for || "unknown";
- if ($cf =~ m|/|) {
- $cf =~ s|.*/||;
- $cf =~ s|\W.*||;
- }
- $cf =~ s|[/\\:]||g; # risk of filesystem damage
- $cf = "unknown" unless length($cf);
- $CPAN::Frontend->myprint(qq{Package seems to come without Makefile.PL.
- (The test -f "$mpl" returned false.)
- Writing one on our own (setting NAME to $cf)\a\n});
- $self->{had_no_makefile_pl}++;
- sleep 3;
-
- # Writing our own Makefile.PL
-
- my $fh = FileHandle->new;
- $fh->open(">$mpl")
- or Carp::croak("Could not open >$mpl: $!");
- $fh->print(
-qq{# This Makefile.PL has been autogenerated by the module CPAN.pm
-# because there was no Makefile.PL supplied.
-# Autogenerated on: }.scalar localtime().qq{
-
-use ExtUtils::MakeMaker;
-WriteMakefile(NAME => q[$cf]);
-
-});
- $fh->close;
- }
- }
-
- return $self;
-}
-
-# CPAN::Distribution::untar_me ;
-sub untar_me {
- my($self,$local_file) = @_;
- $self->{archived} = "tar";
- if (CPAN::Tarzip->untar($local_file)) {
- $self->{unwrapped} = "YES";
- } else {
- $self->{unwrapped} = "NO";
- }
-}
-
-# CPAN::Distribution::unzip_me ;
-sub unzip_me {
- my($self,$local_file) = @_;
- $self->{archived} = "zip";
- if (CPAN::Tarzip->unzip($local_file)) {
- $self->{unwrapped} = "YES";
- } else {
- $self->{unwrapped} = "NO";
- }
- return;
-}
-
-sub pm2dir_me {
- my($self,$local_file) = @_;
- $self->{archived} = "pm";
- my $to = File::Basename::basename($local_file);
- $to =~ s/\.(gz|Z)(?!\n)\Z//;
- if (CPAN::Tarzip->gunzip($local_file,$to)) {
- $self->{unwrapped} = "YES";
- } else {
- $self->{unwrapped} = "NO";
- }
-}
-
-#-> sub CPAN::Distribution::new ;
-sub new {
- my($class,%att) = @_;
-
- # $CPAN::META->{cachemgr} ||= CPAN::CacheMgr->new();
-
- my $this = { %att };
- return bless $this, $class;
-}
-
-#-> sub CPAN::Distribution::look ;
-sub look {
- my($self) = @_;
-
- if ($^O eq 'MacOS') {
- $self->ExtUtils::MM_MacOS::look;
- return;
- }
-
- if ( $CPAN::Config->{'shell'} ) {
- $CPAN::Frontend->myprint(qq{
-Trying to open a subshell in the build directory...
-});
- } else {
- $CPAN::Frontend->myprint(qq{
-Your configuration does not define a value for subshells.
-Please define it with "o conf shell <your shell>"
-});
- return;
- }
- my $dist = $self->id;
- my $dir;
- unless ($dir = $self->dir) {
- $self->get;
- }
- unless ($dir ||= $self->dir) {
- $CPAN::Frontend->mywarn(qq{
-Could not determine which directory to use for looking at $dist.
-});
- return;
- }
- my $pwd = CPAN::anycwd();
- $self->safe_chdir($dir);
- $CPAN::Frontend->myprint(qq{Working directory is $dir\n});
- system($CPAN::Config->{'shell'}) == 0
- or $CPAN::Frontend->mydie("Subprocess shell error");
- $self->safe_chdir($pwd);
-}
-
-# CPAN::Distribution::cvs_import ;
-sub cvs_import {
- my($self) = @_;
- $self->get;
- my $dir = $self->dir;
-
- my $package = $self->called_for;
- my $module = $CPAN::META->instance('CPAN::Module', $package);
- my $version = $module->cpan_version;
-
- my $userid = $self->cpan_userid;
-
- my $cvs_dir = (split '/', $dir)[-1];
- $cvs_dir =~ s/-\d+[^-]+(?!\n)\Z//;
- my $cvs_root =
- $CPAN::Config->{cvsroot} || $ENV{CVSROOT};
- my $cvs_site_perl =
- $CPAN::Config->{cvs_site_perl} || $ENV{CVS_SITE_PERL};
- if ($cvs_site_perl) {
- $cvs_dir = "$cvs_site_perl/$cvs_dir";
- }
- my $cvs_log = qq{"imported $package $version sources"};
- $version =~ s/\./_/g;
- my @cmd = ('cvs', '-d', $cvs_root, 'import', '-m', $cvs_log,
- "$cvs_dir", $userid, "v$version");
-
- my $pwd = CPAN::anycwd();
- chdir($dir) or $CPAN::Frontend->mydie(qq{Could not chdir to "$dir": $!});
-
- $CPAN::Frontend->myprint(qq{Working directory is $dir\n});
-
- $CPAN::Frontend->myprint(qq{@cmd\n});
- system(@cmd) == 0 or
- $CPAN::Frontend->mydie("cvs import failed");
- chdir($pwd) or $CPAN::Frontend->mydie(qq{Could not chdir to "$pwd": $!});
-}
-
-#-> sub CPAN::Distribution::readme ;
-sub readme {
- my($self) = @_;
- my($dist) = $self->id;
- my($sans,$suffix) = $dist =~ /(.+)\.(tgz|tar[\._-]gz|tar\.Z|zip)$/;
- $self->debug("sans[$sans] suffix[$suffix]\n") if $CPAN::DEBUG;
- my($local_file);
- my($local_wanted) =
- MM->catfile(
- $CPAN::Config->{keep_source_where},
- "authors",
- "id",
- split("/","$sans.readme"),
- );
- $self->debug("Doing localize") if $CPAN::DEBUG;
- $local_file = CPAN::FTP->localize("authors/id/$sans.readme",
- $local_wanted)
- or $CPAN::Frontend->mydie(qq{No $sans.readme found});;
-
- if ($^O eq 'MacOS') {
- ExtUtils::MM_MacOS::launch_file($local_file);
- return;
- }
-
- my $fh_pager = FileHandle->new;
- local($SIG{PIPE}) = "IGNORE";
- $fh_pager->open("|$CPAN::Config->{'pager'}")
- or die "Could not open pager $CPAN::Config->{'pager'}: $!";
- my $fh_readme = FileHandle->new;
- $fh_readme->open($local_file)
- or $CPAN::Frontend->mydie(qq{Could not open "$local_file": $!});
- $CPAN::Frontend->myprint(qq{
-Displaying file
- $local_file
-with pager "$CPAN::Config->{'pager'}"
-});
- sleep 2;
- $fh_pager->print(<$fh_readme>);
-}
-
-#-> sub CPAN::Distribution::verifyMD5 ;
-sub verifyMD5 {
- my($self) = @_;
- EXCUSE: {
- my @e;
- $self->{MD5_STATUS} ||= "";
- $self->{MD5_STATUS} eq "OK" and push @e, "MD5 Checksum was ok";
- $CPAN::Frontend->myprint(join "", map {" $_\n"} @e) and return if @e;
- }
- my($lc_want,$lc_file,@local,$basename);
- @local = split("/",$self->id);
- pop @local;
- push @local, "CHECKSUMS";
- $lc_want =
- MM->catfile($CPAN::Config->{keep_source_where},
- "authors", "id", @local);
- local($") = "/";
- if (
- -s $lc_want
- &&
- $self->MD5_check_file($lc_want)
- ) {
- return $self->{MD5_STATUS} = "OK";
- }
- $lc_file = CPAN::FTP->localize("authors/id/@local",
- $lc_want,1);
- unless ($lc_file) {
- $CPAN::Frontend->myprint("Trying $lc_want.gz\n");
- $local[-1] .= ".gz";
- $lc_file = CPAN::FTP->localize("authors/id/@local",
- "$lc_want.gz",1);
- if ($lc_file) {
- $lc_file =~ s/\.gz(?!\n)\Z//;
- CPAN::Tarzip->gunzip("$lc_file.gz",$lc_file);
- } else {
- return;
- }
- }
- $self->MD5_check_file($lc_file);
-}
-
-#-> sub CPAN::Distribution::MD5_check_file ;
-sub MD5_check_file {
- my($self,$chk_file) = @_;
- my($cksum,$file,$basename);
- $file = $self->{localfile};
- $basename = File::Basename::basename($file);
- my $fh = FileHandle->new;
- if (open $fh, $chk_file){
- local($/);
- my $eval = <$fh>;
- $eval =~ s/\015?\012/\n/g;
- close $fh;
- my($comp) = Safe->new();
- $cksum = $comp->reval($eval);
- if ($@) {
- rename $chk_file, "$chk_file.bad";
- Carp::confess($@) if $@;
- }
- } else {
- Carp::carp "Could not open $chk_file for reading";
- }
-
- if (exists $cksum->{$basename}{md5}) {
- $self->debug("Found checksum for $basename:" .
- "$cksum->{$basename}{md5}\n") if $CPAN::DEBUG;
-
- open($fh, $file);
- binmode $fh;
- my $eq = $self->eq_MD5($fh,$cksum->{$basename}{'md5'});
- $fh->close;
- $fh = CPAN::Tarzip->TIEHANDLE($file);
-
- unless ($eq) {
- # had to inline it, when I tied it, the tiedness got lost on
- # the call to eq_MD5. (Jan 1998)
- my $md5 = MD5->new;
- my($data,$ref);
- $ref = \$data;
- while ($fh->READ($ref, 4096) > 0){
- $md5->add($data);
- }
- my $hexdigest = $md5->hexdigest;
- $eq += $hexdigest eq $cksum->{$basename}{'md5-ungz'};
- }
-
- if ($eq) {
- $CPAN::Frontend->myprint("Checksum for $file ok\n");
- return $self->{MD5_STATUS} = "OK";
- } else {
- $CPAN::Frontend->myprint(qq{\nChecksum mismatch for }.
- qq{distribution file. }.
- qq{Please investigate.\n\n}.
- $self->as_string,
- $CPAN::META->instance(
- 'CPAN::Author',
- $self->cpan_userid
- )->as_string);
-
- my $wrap = qq{I\'d recommend removing $file. Its MD5
-checksum is incorrect. Maybe you have configured your 'urllist' with
-a bad URL. Please check this array with 'o conf urllist', and
-retry.};
-
- $CPAN::Frontend->mydie(Text::Wrap::wrap("","",$wrap));
-
- # former versions just returned here but this seems a
- # serious threat that deserves a die
-
- # $CPAN::Frontend->myprint("\n\n");
- # sleep 3;
- # return;
- }
- # close $fh if fileno($fh);
- } else {
- $self->{MD5_STATUS} ||= "";
- if ($self->{MD5_STATUS} eq "NIL") {
- $CPAN::Frontend->mywarn(qq{
-Warning: No md5 checksum for $basename in $chk_file.
-
-The cause for this may be that the file is very new and the checksum
-has not yet been calculated, but it may also be that something is
-going awry right now.
-});
- my $answer = ExtUtils::MakeMaker::prompt("Proceed?", "yes");
- $answer =~ /^\s*y/i or $CPAN::Frontend->mydie("Aborted.");
- }
- $self->{MD5_STATUS} = "NIL";
- return;
- }
-}
-
-#-> sub CPAN::Distribution::eq_MD5 ;
-sub eq_MD5 {
- my($self,$fh,$expectMD5) = @_;
- my $md5 = MD5->new;
- my($data);
- while (read($fh, $data, 4096)){
- $md5->add($data);
- }
- # $md5->addfile($fh);
- my $hexdigest = $md5->hexdigest;
- # warn "fh[$fh] hex[$hexdigest] aexp[$expectMD5]";
- $hexdigest eq $expectMD5;
-}
-
-#-> sub CPAN::Distribution::force ;
-
-# Both modules and distributions know if "force" is in effect by
-# autoinspection, not by inspecting a global variable. One of the
-# reason why this was chosen to work that way was the treatment of
-# dependencies. They should not autpomatically inherit the force
-# status. But this has the downside that ^C and die() will return to
-# the prompt but will not be able to reset the force_update
-# attributes. We try to correct for it currently in the read_metadata
-# routine, and immediately before we check for a Signal. I hope this
-# works out in one of v1.57_53ff
-
-sub force {
- my($self, $method) = @_;
- for my $att (qw(
- MD5_STATUS archived build_dir localfile make install unwrapped
- writemakefile
- )) {
- delete $self->{$att};
- }
- if ($method && $method eq "install") {
- $self->{"force_update"}++; # name should probably have been force_install
- }
-}
-
-#-> sub CPAN::Distribution::unforce ;
-sub unforce {
- my($self) = @_;
- delete $self->{'force_update'};
-}
-
-#-> sub CPAN::Distribution::isa_perl ;
-sub isa_perl {
- my($self) = @_;
- my $file = File::Basename::basename($self->id);
- if ($file =~ m{ ^ perl
- -?
- (5)
- ([._-])
- (
- \d{3}(_[0-4][0-9])?
- |
- \d*[24680]\.\d+
- )
- \.tar[._-]gz
- (?!\n)\Z
- }xs){
- return "$1.$3";
- } elsif ($self->cpan_comment
- &&
- $self->cpan_comment =~ /isa_perl\(.+?\)/){
- return $1;
- }
-}
-
-#-> sub CPAN::Distribution::perl ;
-sub perl {
- my($self) = @_;
- my($perl) = MM->file_name_is_absolute($^X) ? $^X : "";
- my $pwd = CPAN::anycwd();
- my $candidate = MM->catfile($pwd,$^X);
- $perl ||= $candidate if MM->maybe_command($candidate);
- unless ($perl) {
- my ($component,$perl_name);
- DIST_PERLNAME: foreach $perl_name ($^X, 'perl', 'perl5', "perl$]") {
- PATH_COMPONENT: foreach $component (MM->path(),
- $Config::Config{'binexp'}) {
- next unless defined($component) && $component;
- my($abs) = MM->catfile($component,$perl_name);
- if (MM->maybe_command($abs)) {
- $perl = $abs;
- last DIST_PERLNAME;
- }
- }
- }
- }
- $perl;
-}
-
-#-> sub CPAN::Distribution::make ;
-sub make {
- my($self) = @_;
- $CPAN::Frontend->myprint(sprintf "Running make for %s\n", $self->id);
- # Emergency brake if they said install Pippi and get newest perl
- if ($self->isa_perl) {
- if (
- $self->called_for ne $self->id &&
- ! $self->{force_update}
- ) {
- # if we die here, we break bundles
- $CPAN::Frontend->mywarn(sprintf qq{
-The most recent version "%s" of the module "%s"
-comes with the current version of perl (%s).
-I\'ll build that only if you ask for something like
- force install %s
-or
- install %s
-},
- $CPAN::META->instance(
- 'CPAN::Module',
- $self->called_for
- )->cpan_version,
- $self->called_for,
- $self->isa_perl,
- $self->called_for,
- $self->id);
- sleep 5; return;
- }
- }
- $self->get;
- EXCUSE: {
- my @e;
- $self->{archived} eq "NO" and push @e,
- "Is neither a tar nor a zip archive.";
-
- $self->{unwrapped} eq "NO" and push @e,
- "had problems unarchiving. Please build manually";
-
- exists $self->{writemakefile} &&
- $self->{writemakefile} =~ m/ ^ NO\s* ( .* ) /sx and push @e,
- $1 || "Had some problem writing Makefile";
-
- defined $self->{'make'} and push @e,
- "Has already been processed within this session";
-
- exists $self->{later} and length($self->{later}) and
- push @e, $self->{later};
-
- $CPAN::Frontend->myprint(join "", map {" $_\n"} @e) and return if @e;
- }
- $CPAN::Frontend->myprint("\n CPAN.pm: Going to build ".$self->id."\n\n");
- my $builddir = $self->dir;
- chdir $builddir or Carp::croak("Couldn't chdir $builddir: $!");
- $self->debug("Changed directory to $builddir") if $CPAN::DEBUG;
-
- if ($^O eq 'MacOS') {
- ExtUtils::MM_MacOS::make($self);
- return;
- }
-
- my $system;
- if ($self->{'configure'}) {
- $system = $self->{'configure'};
- } else {
- my($perl) = $self->perl or die "Couldn\'t find executable perl\n";
- my $switch = "";
-# This needs a handler that can be turned on or off:
-# $switch = "-MExtUtils::MakeMaker ".
-# "-Mops=:default,:filesys_read,:filesys_open,require,chdir"
-# if $] > 5.00310;
- $system = "$perl $switch Makefile.PL $CPAN::Config->{makepl_arg}";
- }
- unless (exists $self->{writemakefile}) {
- local($SIG{ALRM}) = sub { die "inactivity_timeout reached\n" };
- my($ret,$pid);
- $@ = "";
- if ($CPAN::Config->{inactivity_timeout}) {
- eval {
- alarm $CPAN::Config->{inactivity_timeout};
- local $SIG{CHLD}; # = sub { wait };
- if (defined($pid = fork)) {
- if ($pid) { #parent
- # wait;
- waitpid $pid, 0;
- } else { #child
- # note, this exec isn't necessary if
- # inactivity_timeout is 0. On the Mac I'd
- # suggest, we set it always to 0.
- exec $system;
- }
- } else {
- $CPAN::Frontend->myprint("Cannot fork: $!");
- return;
- }
- };
- alarm 0;
- if ($@){
- kill 9, $pid;
- waitpid $pid, 0;
- $CPAN::Frontend->myprint($@);
- $self->{writemakefile} = "NO $@";
- $@ = "";
- return;
- }
- } else {
- $ret = system($system);
- if ($ret != 0) {
- $self->{writemakefile} = "NO Makefile.PL returned status $ret";
- return;
- }
- }
- if (-f "Makefile") {
- $self->{writemakefile} = "YES";
- delete $self->{make_clean}; # if cleaned before, enable next
- } else {
- $self->{writemakefile} =
- qq{NO Makefile.PL refused to write a Makefile.};
- # It's probably worth to record the reason, so let's retry
- # local $/;
- # my $fh = IO::File->new("$system |"); # STDERR? STDIN?
- # $self->{writemakefile} .= <$fh>;
- }
- }
- if ($CPAN::Signal){
- delete $self->{force_update};
- return;
- }
- if (my @prereq = $self->unsat_prereq){
- return 1 if $self->follow_prereqs(@prereq); # signal success to the queuerunner
- }
- $system = join " ", $CPAN::Config->{'make'}, $CPAN::Config->{make_arg};
- if (system($system) == 0) {
- $CPAN::Frontend->myprint(" $system -- OK\n");
- $self->{'make'} = "YES";
- } else {
- $self->{writemakefile} ||= "YES";
- $self->{'make'} = "NO";
- $CPAN::Frontend->myprint(" $system -- NOT OK\n");
- }
-}
-
-sub follow_prereqs {
- my($self) = shift;
- my(@prereq) = @_;
- my $id = $self->id;
- $CPAN::Frontend->myprint("---- Unsatisfied dependencies detected ".
- "during [$id] -----\n");
-
- for my $p (@prereq) {
- $CPAN::Frontend->myprint(" $p\n");
- }
- my $follow = 0;
- if ($CPAN::Config->{prerequisites_policy} eq "follow") {
- $follow = 1;
- } elsif ($CPAN::Config->{prerequisites_policy} eq "ask") {
- require ExtUtils::MakeMaker;
- my $answer = ExtUtils::MakeMaker::prompt(
-"Shall I follow them and prepend them to the queue
-of modules we are processing right now?", "yes");
- $follow = $answer =~ /^\s*y/i;
- } else {
- local($") = ", ";
- $CPAN::Frontend->
- myprint(" Ignoring dependencies on modules @prereq\n");
- }
- if ($follow) {
- # color them as dirty
- for my $p (@prereq) {
- CPAN::Shell->expandany($p)->color_cmd_tmps(0,1);
- }
- CPAN::Queue->jumpqueue(@prereq,$id); # queue them and requeue yourself
- $self->{later} = "Delayed until after prerequisites";
- return 1; # signal success to the queuerunner
- }
-}
-
-#-> sub CPAN::Distribution::unsat_prereq ;
-sub unsat_prereq {
- my($self) = @_;
- my $prereq_pm = $self->prereq_pm or return;
- my(@need);
- NEED: while (my($need_module, $need_version) = each %$prereq_pm) {
- my $nmo = $CPAN::META->instance("CPAN::Module",$need_module);
- # we were too demanding:
- next if $nmo->uptodate;
-
- # if they have not specified a version, we accept any installed one
- if (not defined $need_version or
- $need_version == 0 or
- $need_version eq "undef") {
- next if defined $nmo->inst_file;
- }
-
- # We only want to install prereqs if either they're not installed
- # or if the installed version is too old. We cannot omit this
- # check, because if 'force' is in effect, nobody else will check.
- {
- local($^W) = 0;
- if (
- defined $nmo->inst_file &&
- ! CPAN::Version->vgt($need_version, $nmo->inst_version)
- ){
- CPAN->debug(sprintf "id[%s]inst_file[%s]inst_version[%s]need_version[%s]",
- $nmo->id,
- $nmo->inst_file,
- $nmo->inst_version,
- CPAN::Version->readable($need_version)
- );
- next NEED;
- }
- }
-
- if ($self->{sponsored_mods}{$need_module}++){
- # We have already sponsored it and for some reason it's still
- # not available. So we do nothing. Or what should we do?
- # if we push it again, we have a potential infinite loop
- next;
- }
- push @need, $need_module;
- }
- @need;
-}
-
-#-> sub CPAN::Distribution::prereq_pm ;
-sub prereq_pm {
- my($self) = @_;
- return $self->{prereq_pm} if
- exists $self->{prereq_pm_detected} && $self->{prereq_pm_detected};
- return unless $self->{writemakefile}; # no need to have succeeded
- # but we must have run it
- my $build_dir = $self->{build_dir} or die "Panic: no build_dir?";
- my $makefile = File::Spec->catfile($build_dir,"Makefile");
- my(%p) = ();
- my $fh;
- if (-f $makefile
- and
- $fh = FileHandle->new("<$makefile\0")) {
-
- local($/) = "\n";
-
- # A.Speer @p -> %p, where %p is $p{Module::Name}=Required_Version
- while (<$fh>) {
- last if /MakeMaker post_initialize section/;
- my($p) = m{^[\#]
- \s+PREREQ_PM\s+=>\s+(.+)
- }x;
- next unless $p;
- # warn "Found prereq expr[$p]";
-
- # Regexp modified by A.Speer to remember actual version of file
- # PREREQ_PM hash key wants, then add to
- while ( $p =~ m/(?:\s)([\w\:]+)=>q\[(.*?)\],?/g ){
- # In case a prereq is mentioned twice, complain.
- if ( defined $p{$1} ) {
- warn "Warning: PREREQ_PM mentions $1 more than once, last mention wins";
- }
- $p{$1} = $2;
- }
- last;
- }
- }
- $self->{prereq_pm_detected}++;
- return $self->{prereq_pm} = \%p;
-}
-
-#-> sub CPAN::Distribution::test ;
-sub test {
- my($self) = @_;
- $self->make;
- if ($CPAN::Signal){
- delete $self->{force_update};
- return;
- }
- $CPAN::Frontend->myprint("Running make test\n");
- if (my @prereq = $self->unsat_prereq){
- return 1 if $self->follow_prereqs(@prereq); # signal success to the queuerunner
- }
- EXCUSE: {
- my @e;
- exists $self->{make} or exists $self->{later} or push @e,
- "Make had some problems, maybe interrupted? Won't test";
-
- exists $self->{'make'} and
- $self->{'make'} eq 'NO' and
- push @e, "Can't test without successful make";
-
- exists $self->{build_dir} or push @e, "Has no own directory";
- $self->{badtestcnt} ||= 0;
- $self->{badtestcnt} > 0 and
- push @e, "Won't repeat unsuccessful test during this command";
-
- exists $self->{later} and length($self->{later}) and
- push @e, $self->{later};
-
- $CPAN::Frontend->myprint(join "", map {" $_\n"} @e) and return if @e;
- }
- chdir $self->{'build_dir'} or
- Carp::croak("Couldn't chdir to $self->{'build_dir'}");
- $self->debug("Changed directory to $self->{'build_dir'}")
- if $CPAN::DEBUG;
-
- if ($^O eq 'MacOS') {
- ExtUtils::MM_MacOS::make_test($self);
- return;
- }
-
- my $system = join " ", $CPAN::Config->{'make'}, "test";
- if (system($system) == 0) {
- $CPAN::Frontend->myprint(" $system -- OK\n");
- $self->{make_test} = "YES";
- } else {
- $self->{make_test} = "NO";
- $self->{badtestcnt}++;
- $CPAN::Frontend->myprint(" $system -- NOT OK\n");
- }
-}
-
-#-> sub CPAN::Distribution::clean ;
-sub clean {
- my($self) = @_;
- $CPAN::Frontend->myprint("Running make clean\n");
- EXCUSE: {
- my @e;
- exists $self->{make_clean} and $self->{make_clean} eq "YES" and
- push @e, "make clean already called once";
- exists $self->{build_dir} or push @e, "Has no own directory";
- $CPAN::Frontend->myprint(join "", map {" $_\n"} @e) and return if @e;
- }
- chdir $self->{'build_dir'} or
- Carp::croak("Couldn't chdir to $self->{'build_dir'}");
- $self->debug("Changed directory to $self->{'build_dir'}") if $CPAN::DEBUG;
-
- if ($^O eq 'MacOS') {
- ExtUtils::MM_MacOS::make_clean($self);
- return;
- }
-
- my $system = join " ", $CPAN::Config->{'make'}, "clean";
- if (system($system) == 0) {
- $CPAN::Frontend->myprint(" $system -- OK\n");
-
- # $self->force;
-
- # Jost Krieger pointed out that this "force" was wrong because
- # it has the effect that the next "install" on this distribution
- # will untar everything again. Instead we should bring the
- # object's state back to where it is after untarring.
-
- delete $self->{force_update};
- delete $self->{install};
- delete $self->{writemakefile};
- delete $self->{make};
- delete $self->{make_test}; # no matter if yes or no, tests must be redone
- $self->{make_clean} = "YES";
-
- } else {
- # Hmmm, what to do if make clean failed?
-
- $CPAN::Frontend->myprint(qq{ $system -- NOT OK
-
-make clean did not succeed, marking directory as unusable for further work.
-});
- $self->force("make"); # so that this directory won't be used again
-
- }
-}
-
-#-> sub CPAN::Distribution::install ;
-sub install {
- my($self) = @_;
- $self->test;
- if ($CPAN::Signal){
- delete $self->{force_update};
- return;
- }
- $CPAN::Frontend->myprint("Running make install\n");
- EXCUSE: {
- my @e;
- exists $self->{build_dir} or push @e, "Has no own directory";
-
- exists $self->{make} or exists $self->{later} or push @e,
- "Make had some problems, maybe interrupted? Won't install";
-
- exists $self->{'make'} and
- $self->{'make'} eq 'NO' and
- push @e, "make had returned bad status, install seems impossible";
-
- push @e, "make test had returned bad status, ".
- "won't install without force"
- if exists $self->{'make_test'} and
- $self->{'make_test'} eq 'NO' and
- ! $self->{'force_update'};
-
- exists $self->{'install'} and push @e,
- $self->{'install'} eq "YES" ?
- "Already done" : "Already tried without success";
-
- exists $self->{later} and length($self->{later}) and
- push @e, $self->{later};
-
- $CPAN::Frontend->myprint(join "", map {" $_\n"} @e) and return if @e;
- }
- chdir $self->{'build_dir'} or
- Carp::croak("Couldn't chdir to $self->{'build_dir'}");
- $self->debug("Changed directory to $self->{'build_dir'}")
- if $CPAN::DEBUG;
-
- if ($^O eq 'MacOS') {
- ExtUtils::MM_MacOS::make_install($self);
- return;
- }
-
- my $system = join(" ", $CPAN::Config->{'make'},
- "install", $CPAN::Config->{make_install_arg});
- my($stderr) = $^O =~ /Win/i ? "" : " 2>&1 ";
- my($pipe) = FileHandle->new("$system $stderr |");
- my($makeout) = "";
- while (<$pipe>){
- $CPAN::Frontend->myprint($_);
- $makeout .= $_;
- }
- $pipe->close;
- if ($?==0) {
- $CPAN::Frontend->myprint(" $system -- OK\n");
- return $self->{'install'} = "YES";
- } else {
- $self->{'install'} = "NO";
- $CPAN::Frontend->myprint(" $system -- NOT OK\n");
- if ($makeout =~ /permission/s && $> > 0) {
- $CPAN::Frontend->myprint(qq{ You may have to su }.
- qq{to root to install the package\n});
- }
- }
- delete $self->{force_update};
-}
-
-#-> sub CPAN::Distribution::dir ;
-sub dir {
- shift->{'build_dir'};
-}
-
-package CPAN::Bundle;
-
-sub undelay {
- my $self = shift;
- delete $self->{later};
- for my $c ( $self->contains ) {
- my $obj = CPAN::Shell->expandany($c) or next;
- $obj->undelay;
- }
-}
-
-#-> sub CPAN::Bundle::color_cmd_tmps ;
-sub color_cmd_tmps {
- my($self) = shift;
- my($depth) = shift || 0;
- my($color) = shift || 0;
- # a module needs to recurse to its cpan_file, a distribution needs
- # to recurse into its prereq_pms, a bundle needs to recurse into its modules
-
- return if exists $self->{incommandcolor}
- && $self->{incommandcolor}==$color;
- $CPAN::Frontend->mydie(sprintf("CPAN.pm panic: deep recursion in ".
- "color_cmd_tmps depth[%s] self[%s] id[%s]",
- $depth,
- $self,
- $self->id
- )) if $depth>=100;
- ##### warn "color_cmd_tmps $depth $color " . $self->id; # sleep 1;
-
- for my $c ( $self->contains ) {
- my $obj = CPAN::Shell->expandany($c) or next;
- CPAN->debug("c[$c]obj[$obj]") if $CPAN::DEBUG;
- $obj->color_cmd_tmps($depth+1,$color);
- }
- if ($color==0) {
- delete $self->{badtestcnt};
- }
- $self->{incommandcolor} = $color;
-}
-
-#-> sub CPAN::Bundle::as_string ;
-sub as_string {
- my($self) = @_;
- $self->contains;
- # following line must be "=", not "||=" because we have a moving target
- $self->{INST_VERSION} = $self->inst_version;
- return $self->SUPER::as_string;
-}
-
-#-> sub CPAN::Bundle::contains ;
-sub contains {
- my($self) = @_;
- my($inst_file) = $self->inst_file || "";
- my($id) = $self->id;
- $self->debug("inst_file[$inst_file]id[$id]") if $CPAN::DEBUG;
- unless ($inst_file) {
- # Try to get at it in the cpan directory
- $self->debug("no inst_file") if $CPAN::DEBUG;
- my $cpan_file;
- $CPAN::Frontend->mydie("I don't know a bundle with ID $id\n") unless
- $cpan_file = $self->cpan_file;
- if ($cpan_file eq "N/A") {
- $CPAN::Frontend->mydie("Bundle $id not found on disk and not on CPAN.
- Maybe stale symlink? Maybe removed during session? Giving up.\n");
- }
- my $dist = $CPAN::META->instance('CPAN::Distribution',
- $self->cpan_file);
- $dist->get;
- $self->debug($dist->as_string) if $CPAN::DEBUG;
- my($todir) = $CPAN::Config->{'cpan_home'};
- my(@me,$from,$to,$me);
- @me = split /::/, $self->id;
- $me[-1] .= ".pm";
- $me = MM->catfile(@me);
- $from = $self->find_bundle_file($dist->{'build_dir'},$me);
- $to = MM->catfile($todir,$me);
- File::Path::mkpath(File::Basename::dirname($to));
- File::Copy::copy($from, $to)
- or Carp::confess("Couldn't copy $from to $to: $!");
- $inst_file = $to;
- }
- my @result;
- my $fh = FileHandle->new;
- local $/ = "\n";
- open($fh,$inst_file) or die "Could not open '$inst_file': $!";
- my $in_cont = 0;
- $self->debug("inst_file[$inst_file]") if $CPAN::DEBUG;
- while (<$fh>) {
- $in_cont = m/^=(?!head1\s+CONTENTS)/ ? 0 :
- m/^=head1\s+CONTENTS/ ? 1 : $in_cont;
- next unless $in_cont;
- next if /^=/;
- s/\#.*//;
- next if /^\s+$/;
- chomp;
- push @result, (split " ", $_, 2)[0];
- }
- close $fh;
- delete $self->{STATUS};
- $self->{CONTAINS} = \@result;
- $self->debug("CONTAINS[@result]") if $CPAN::DEBUG;
- unless (@result) {
- $CPAN::Frontend->mywarn(qq{
-The bundle file "$inst_file" may be a broken
-bundlefile. It seems not to contain any bundle definition.
-Please check the file and if it is bogus, please delete it.
-Sorry for the inconvenience.
-});
- }
- @result;
-}
-
-#-> sub CPAN::Bundle::find_bundle_file
-sub find_bundle_file {
- my($self,$where,$what) = @_;
- $self->debug("where[$where]what[$what]") if $CPAN::DEBUG;
-### The following two lines let CPAN.pm become Bundle/CPAN.pm :-(
-### my $bu = MM->catfile($where,$what);
-### return $bu if -f $bu;
- my $manifest = MM->catfile($where,"MANIFEST");
- unless (-f $manifest) {
- require ExtUtils::Manifest;
- my $cwd = CPAN::anycwd();
- chdir $where or $CPAN::Frontend->mydie(qq{Could not chdir to "$where": $!});
- ExtUtils::Manifest::mkmanifest();
- chdir $cwd or $CPAN::Frontend->mydie(qq{Could not chdir to "$cwd": $!});
- }
- my $fh = FileHandle->new($manifest)
- or Carp::croak("Couldn't open $manifest: $!");
- local($/) = "\n";
- my $what2 = $what;
- if ($^O eq 'MacOS') {
- $what =~ s/^://;
- $what2 =~ tr|:|/|;
- $what2 =~ s/:Bundle://;
- $what2 =~ tr|:|/|;
- } else {
- $what2 =~ s|Bundle[/\\]||;
- }
- my $bu;
- while (<$fh>) {
- next if /^\s*\#/;
- my($file) = /(\S+)/;
- if ($file =~ m|\Q$what\E$|) {
- $bu = $file;
- # return MM->catfile($where,$bu); # bad
- last;
- }
- # retry if she managed to
- # have no Bundle directory
- $bu = $file if $file =~ m|\Q$what2\E$|;
- }
- $bu =~ tr|/|:| if $^O eq 'MacOS';
- return MM->catfile($where, $bu) if $bu;
- Carp::croak("Couldn't find a Bundle file in $where");
-}
-
-# needs to work quite differently from Module::inst_file because of
-# cpan_home/Bundle/ directory and the possibility that we have
-# shadowing effect. As it makes no sense to take the first in @INC for
-# Bundles, we parse them all for $VERSION and take the newest.
-
-#-> sub CPAN::Bundle::inst_file ;
-sub inst_file {
- my($self) = @_;
- my($inst_file);
- my(@me);
- @me = split /::/, $self->id;
- $me[-1] .= ".pm";
- my($incdir,$bestv);
- foreach $incdir ($CPAN::Config->{'cpan_home'},@INC) {
- my $bfile = MM->catfile($incdir, @me);
- CPAN->debug("bfile[$bfile]") if $CPAN::DEBUG;
- next unless -f $bfile;
- my $foundv = MM->parse_version($bfile);
- if (!$bestv || CPAN::Version->vgt($foundv,$bestv)) {
- $self->{INST_FILE} = $bfile;
- $self->{INST_VERSION} = $bestv = $foundv;
- }
- }
- $self->{INST_FILE};
-}
-
-#-> sub CPAN::Bundle::inst_version ;
-sub inst_version {
- my($self) = @_;
- $self->inst_file; # finds INST_VERSION as side effect
- $self->{INST_VERSION};
-}
-
-#-> sub CPAN::Bundle::rematein ;
-sub rematein {
- my($self,$meth) = @_;
- $self->debug("self[$self] meth[$meth]") if $CPAN::DEBUG;
- my($id) = $self->id;
- Carp::croak "Can't $meth $id, don't have an associated bundle file. :-(\n"
- unless $self->inst_file || $self->cpan_file;
- my($s,%fail);
- for $s ($self->contains) {
- my($type) = $s =~ m|/| ? 'CPAN::Distribution' :
- $s =~ m|^Bundle::| ? 'CPAN::Bundle' : 'CPAN::Module';
- if ($type eq 'CPAN::Distribution') {
- $CPAN::Frontend->mywarn(qq{
-The Bundle }.$self->id.qq{ contains
-explicitly a file $s.
-});
- sleep 3;
- }
- # possibly noisy action:
- $self->debug("type[$type] s[$s]") if $CPAN::DEBUG;
- my $obj = $CPAN::META->instance($type,$s);
- $obj->$meth();
- if ($obj->isa(CPAN::Bundle)
- &&
- exists $obj->{install_failed}
- &&
- ref($obj->{install_failed}) eq "HASH"
- ) {
- for (keys %{$obj->{install_failed}}) {
- $self->{install_failed}{$_} = undef; # propagate faiure up
- # to me in a
- # recursive call
- $fail{$s} = 1; # the bundle itself may have succeeded but
- # not all children
- }
- } else {
- my $success;
- $success = $obj->can("uptodate") ? $obj->uptodate : 0;
- $success ||= $obj->{'install'} && $obj->{'install'} eq "YES";
- if ($success) {
- delete $self->{install_failed}{$s};
- } else {
- $fail{$s} = 1;
- }
- }
- }
-
- # recap with less noise
- if ( $meth eq "install" ) {
- if (%fail) {
- require Text::Wrap;
- my $raw = sprintf(qq{Bundle summary:
-The following items in bundle %s had installation problems:},
- $self->id
- );
- $CPAN::Frontend->myprint(Text::Wrap::fill("","",$raw));
- $CPAN::Frontend->myprint("\n");
- my $paragraph = "";
- my %reported;
- for $s ($self->contains) {
- if ($fail{$s}){
- $paragraph .= "$s ";
- $self->{install_failed}{$s} = undef;
- $reported{$s} = undef;
- }
- }
- my $report_propagated;
- for $s (sort keys %{$self->{install_failed}}) {
- next if exists $reported{$s};
- $paragraph .= "and the following items had problems
-during recursive bundle calls: " unless $report_propagated++;
- $paragraph .= "$s ";
- }
- $CPAN::Frontend->myprint(Text::Wrap::fill(" "," ",$paragraph));
- $CPAN::Frontend->myprint("\n");
- } else {
- $self->{'install'} = 'YES';
- }
- }
-}
-
-#sub CPAN::Bundle::xs_file
-sub xs_file {
- # If a bundle contains another that contains an xs_file we have
- # here, we just don't bother I suppose
- return 0;
-}
-
-#-> sub CPAN::Bundle::force ;
-sub force { shift->rematein('force',@_); }
-#-> sub CPAN::Bundle::get ;
-sub get { shift->rematein('get',@_); }
-#-> sub CPAN::Bundle::make ;
-sub make { shift->rematein('make',@_); }
-#-> sub CPAN::Bundle::test ;
-sub test {
- my $self = shift;
- $self->{badtestcnt} ||= 0;
- $self->rematein('test',@_);
-}
-#-> sub CPAN::Bundle::install ;
-sub install {
- my $self = shift;
- $self->rematein('install',@_);
-}
-#-> sub CPAN::Bundle::clean ;
-sub clean { shift->rematein('clean',@_); }
-
-#-> sub CPAN::Bundle::uptodate ;
-sub uptodate {
- my($self) = @_;
- return 0 unless $self->SUPER::uptodate; # we mut have the current Bundle def
- my $c;
- foreach $c ($self->contains) {
- my $obj = CPAN::Shell->expandany($c);
- return 0 unless $obj->uptodate;
- }
- return 1;
-}
-
-#-> sub CPAN::Bundle::readme ;
-sub readme {
- my($self) = @_;
- my($file) = $self->cpan_file or $CPAN::Frontend->myprint(qq{
-No File found for bundle } . $self->id . qq{\n}), return;
- $self->debug("self[$self] file[$file]") if $CPAN::DEBUG;
- $CPAN::META->instance('CPAN::Distribution',$file)->readme;
-}
-
-package CPAN::Module;
-
-# Accessors
-# sub cpan_userid { shift->{RO}{CPAN_USERID} }
-sub userid {
- my $self = shift;
- return unless exists $self->{RO}; # should never happen
- return $self->{RO}{CPAN_USERID} || $self->{RO}{userid};
-}
-sub description { shift->{RO}{description} }
-
-sub undelay {
- my $self = shift;
- delete $self->{later};
- if ( my $dist = CPAN::Shell->expand("Distribution", $self->cpan_file) ) {
- $dist->undelay;
- }
-}
-
-#-> sub CPAN::Module::color_cmd_tmps ;
-sub color_cmd_tmps {
- my($self) = shift;
- my($depth) = shift || 0;
- my($color) = shift || 0;
- # a module needs to recurse to its cpan_file
-
- return if exists $self->{incommandcolor}
- && $self->{incommandcolor}==$color;
- $CPAN::Frontend->mydie(sprintf("CPAN.pm panic: deep recursion in ".
- "color_cmd_tmps depth[%s] self[%s] id[%s]",
- $depth,
- $self,
- $self->id
- )) if $depth>=100;
- ##### warn "color_cmd_tmps $depth $color " . $self->id; # sleep 1;
-
- if ( my $dist = CPAN::Shell->expand("Distribution", $self->cpan_file) ) {
- $dist->color_cmd_tmps($depth+1,$color);
- }
- if ($color==0) {
- delete $self->{badtestcnt};
- }
- $self->{incommandcolor} = $color;
-}
-
-#-> sub CPAN::Module::as_glimpse ;
-sub as_glimpse {
- my($self) = @_;
- my(@m);
- my $class = ref($self);
- $class =~ s/^CPAN:://;
- my $color_on = "";
- my $color_off = "";
- if (
- $CPAN::Shell::COLOR_REGISTERED
- &&
- $CPAN::META->has_inst("Term::ANSIColor")
- &&
- $self->{RO}{description}
- ) {
- $color_on = Term::ANSIColor::color("green");
- $color_off = Term::ANSIColor::color("reset");
- }
- push @m, sprintf("%-15s %s%-15s%s (%s)\n",
- $class,
- $color_on,
- $self->id,
- $color_off,
- $self->cpan_file);
- join "", @m;
-}
-
-#-> sub CPAN::Module::as_string ;
-sub as_string {
- my($self) = @_;
- my(@m);
- CPAN->debug($self) if $CPAN::DEBUG;
- my $class = ref($self);
- $class =~ s/^CPAN:://;
- local($^W) = 0;
- push @m, $class, " id = $self->{ID}\n";
- my $sprintf = " %-12s %s\n";
- push @m, sprintf($sprintf, 'DESCRIPTION', $self->description)
- if $self->description;
- my $sprintf2 = " %-12s %s (%s)\n";
- my($userid);
- if ($userid = $self->cpan_userid || $self->userid){
- my $author;
- if ($author = CPAN::Shell->expand('Author',$userid)) {
- my $email = "";
- my $m; # old perls
- if ($m = $author->email) {
- $email = " <$m>";
- }
- push @m, sprintf(
- $sprintf2,
- 'CPAN_USERID',
- $userid,
- $author->fullname . $email
- );
- }
- }
- push @m, sprintf($sprintf, 'CPAN_VERSION', $self->cpan_version)
- if $self->cpan_version;
- push @m, sprintf($sprintf, 'CPAN_FILE', $self->cpan_file)
- if $self->cpan_file;
- my $sprintf3 = " %-12s %1s%1s%1s%1s (%s,%s,%s,%s)\n";
- my(%statd,%stats,%statl,%stati);
- @statd{qw,? i c a b R M S,} = qw,unknown idea
- pre-alpha alpha beta released mature standard,;
- @stats{qw,? m d u n,} = qw,unknown mailing-list
- developer comp.lang.perl.* none,;
- @statl{qw,? p c + o h,} = qw,unknown perl C C++ other hybrid,;
- @stati{qw,? f r O h,} = qw,unknown functions
- references+ties object-oriented hybrid,;
- $statd{' '} = 'unknown';
- $stats{' '} = 'unknown';
- $statl{' '} = 'unknown';
- $stati{' '} = 'unknown';
- push @m, sprintf(
- $sprintf3,
- 'DSLI_STATUS',
- $self->{RO}{statd},
- $self->{RO}{stats},
- $self->{RO}{statl},
- $self->{RO}{stati},
- $statd{$self->{RO}{statd}},
- $stats{$self->{RO}{stats}},
- $statl{$self->{RO}{statl}},
- $stati{$self->{RO}{stati}}
- ) if $self->{RO}{statd};
- my $local_file = $self->inst_file;
- unless ($self->{MANPAGE}) {
- if ($local_file) {
- $self->{MANPAGE} = $self->manpage_headline($local_file);
- } else {
- # If we have already untarred it, we should look there
- my $dist = $CPAN::META->instance('CPAN::Distribution',
- $self->cpan_file);
- # warn "dist[$dist]";
- # mff=manifest file; mfh=manifest handle
- my($mff,$mfh);
- if (
- $dist->{build_dir}
- and
- (-f ($mff = MM->catfile($dist->{build_dir}, "MANIFEST")))
- and
- $mfh = FileHandle->new($mff)
- ) {
- CPAN->debug("mff[$mff]") if $CPAN::DEBUG;
- my $lfre = $self->id; # local file RE
- $lfre =~ s/::/./g;
- $lfre .= "\\.pm\$";
- my($lfl); # local file file
- local $/ = "\n";
- my(@mflines) = <$mfh>;
- for (@mflines) {
- s/^\s+//;
- s/\s.*//s;
- }
- while (length($lfre)>5 and !$lfl) {
- ($lfl) = grep /$lfre/, @mflines;
- CPAN->debug("lfl[$lfl]lfre[$lfre]") if $CPAN::DEBUG;
- $lfre =~ s/.+?\.//;
- }
- $lfl =~ s/\s.*//; # remove comments
- $lfl =~ s/\s+//g; # chomp would maybe be too system-specific
- my $lfl_abs = MM->catfile($dist->{build_dir},$lfl);
- # warn "lfl_abs[$lfl_abs]";
- if (-f $lfl_abs) {
- $self->{MANPAGE} = $self->manpage_headline($lfl_abs);
- }
- }
- }
- }
- my($item);
- for $item (qw/MANPAGE/) {
- push @m, sprintf($sprintf, $item, $self->{$item})
- if exists $self->{$item};
- }
- for $item (qw/CONTAINS/) {
- push @m, sprintf($sprintf, $item, join(" ",@{$self->{$item}}))
- if exists $self->{$item} && @{$self->{$item}};
- }
- push @m, sprintf($sprintf, 'INST_FILE',
- $local_file || "(not installed)");
- push @m, sprintf($sprintf, 'INST_VERSION',
- $self->inst_version) if $local_file;
- join "", @m, "\n";
-}
-
-sub manpage_headline {
- my($self,$local_file) = @_;
- my(@local_file) = $local_file;
- $local_file =~ s/\.pm(?!\n)\Z/.pod/;
- push @local_file, $local_file;
- my(@result,$locf);
- for $locf (@local_file) {
- next unless -f $locf;
- my $fh = FileHandle->new($locf)
- or $Carp::Frontend->mydie("Couldn't open $locf: $!");
- my $inpod = 0;
- local $/ = "\n";
- while (<$fh>) {
- $inpod = m/^=(?!head1\s+NAME)/ ? 0 :
- m/^=head1\s+NAME/ ? 1 : $inpod;
- next unless $inpod;
- next if /^=/;
- next if /^\s+$/;
- chomp;
- push @result, $_;
- }
- close $fh;
- last if @result;
- }
- join " ", @result;
-}
-
-#-> sub CPAN::Module::cpan_file ;
-# Note: also inherited by CPAN::Bundle
-sub cpan_file {
- my $self = shift;
- CPAN->debug(sprintf "id[%s]", $self->id) if $CPAN::DEBUG;
- unless (defined $self->{RO}{CPAN_FILE}) {
- CPAN::Index->reload;
- }
- if (exists $self->{RO}{CPAN_FILE} && defined $self->{RO}{CPAN_FILE}){
- return $self->{RO}{CPAN_FILE};
- } else {
- my $userid = $self->userid;
- if ( $userid ) {
- if ($CPAN::META->exists("CPAN::Author",$userid)) {
- my $author = $CPAN::META->instance("CPAN::Author",
- $userid);
- my $fullname = $author->fullname;
- my $email = $author->email;
- unless (defined $fullname && defined $email) {
- return sprintf("Contact Author %s",
- $userid,
- );
- }
- return "Contact Author $fullname <$email>";
- } else {
- return "UserID $userid";
- }
- } else {
- return "N/A";
- }
- }
-}
-
-#-> sub CPAN::Module::cpan_version ;
-sub cpan_version {
- my $self = shift;
-
- $self->{RO}{CPAN_VERSION} = 'undef'
- unless defined $self->{RO}{CPAN_VERSION};
- # I believe this is always a bug in the index and should be reported
- # as such, but usually I find out such an error and do not want to
- # provoke too many bugreports
-
- $self->{RO}{CPAN_VERSION};
-}
-
-#-> sub CPAN::Module::force ;
-sub force {
- my($self) = @_;
- $self->{'force_update'}++;
-}
-
-#-> sub CPAN::Module::rematein ;
-sub rematein {
- my($self,$meth) = @_;
- $CPAN::Frontend->myprint(sprintf("Running %s for module %s\n",
- $meth,
- $self->id));
- my $cpan_file = $self->cpan_file;
- if ($cpan_file eq "N/A" || $cpan_file =~ /^Contact Author/){
- $CPAN::Frontend->mywarn(sprintf qq{
- The module %s isn\'t available on CPAN.
-
- Either the module has not yet been uploaded to CPAN, or it is
- temporary unavailable. Please contact the author to find out
- more about the status. Try 'i %s'.
-},
- $self->id,
- $self->id,
- );
- return;
- }
- my $pack = $CPAN::META->instance('CPAN::Distribution',$cpan_file);
- $pack->called_for($self->id);
- $pack->force($meth) if exists $self->{'force_update'};
- $pack->$meth();
- $pack->unforce if $pack->can("unforce") && exists $self->{'force_update'};
- delete $self->{'force_update'};
-}
-
-#-> sub CPAN::Module::readme ;
-sub readme { shift->rematein('readme') }
-#-> sub CPAN::Module::look ;
-sub look { shift->rematein('look') }
-#-> sub CPAN::Module::cvs_import ;
-sub cvs_import { shift->rematein('cvs_import') }
-#-> sub CPAN::Module::get ;
-sub get { shift->rematein('get',@_); }
-#-> sub CPAN::Module::make ;
-sub make {
- my $self = shift;
- $self->rematein('make');
-}
-#-> sub CPAN::Module::test ;
-sub test {
- my $self = shift;
- $self->{badtestcnt} ||= 0;
- $self->rematein('test',@_);
-}
-#-> sub CPAN::Module::uptodate ;
-sub uptodate {
- my($self) = @_;
- my($latest) = $self->cpan_version;
- $latest ||= 0;
- my($inst_file) = $self->inst_file;
- my($have) = 0;
- if (defined $inst_file) {
- $have = $self->inst_version;
- }
- local($^W)=0;
- if ($inst_file
- &&
- ! CPAN::Version->vgt($latest, $have)
- ) {
- CPAN->debug("returning uptodate. inst_file[$inst_file] ".
- "latest[$latest] have[$have]") if $CPAN::DEBUG;
- return 1;
- }
- return;
-}
-#-> sub CPAN::Module::install ;
-sub install {
- my($self) = @_;
- my($doit) = 0;
- if ($self->uptodate
- &&
- not exists $self->{'force_update'}
- ) {
- $CPAN::Frontend->myprint( $self->id. " is up to date.\n");
- } else {
- $doit = 1;
- }
- $self->rematein('install') if $doit;
-}
-#-> sub CPAN::Module::clean ;
-sub clean { shift->rematein('clean') }
-
-#-> sub CPAN::Module::inst_file ;
-sub inst_file {
- my($self) = @_;
- my($dir,@packpath);
- @packpath = split /::/, $self->{ID};
- $packpath[-1] .= ".pm";
- foreach $dir (@INC) {
- my $pmfile = MM->catfile($dir,@packpath);
- if (-f $pmfile){
- return $pmfile;
- }
- }
- return;
-}
-
-#-> sub CPAN::Module::xs_file ;
-sub xs_file {
- my($self) = @_;
- my($dir,@packpath);
- @packpath = split /::/, $self->{ID};
- push @packpath, $packpath[-1];
- $packpath[-1] .= "." . $Config::Config{'dlext'};
- foreach $dir (@INC) {
- my $xsfile = MM->catfile($dir,'auto',@packpath);
- if (-f $xsfile){
- return $xsfile;
- }
- }
- return;
-}
-
-#-> sub CPAN::Module::inst_version ;
-sub inst_version {
- my($self) = @_;
- my $parsefile = $self->inst_file or return;
- local($^W) = 0 if $] < 5.00303 && $ExtUtils::MakeMaker::VERSION < 5.38;
- my $have;
-
- # there was a bug in 5.6.0 that let lots of unini warnings out of
- # parse_version. Fixed shortly after 5.6.0 by PMQS. We can remove
- # the following workaround after 5.6.1 is out.
- local($SIG{__WARN__}) = sub { my $w = shift;
- return if $w =~ /uninitialized/i;
- warn $w;
- };
-
- $have = MM->parse_version($parsefile) || "undef";
- $have =~ s/^ //; # since the %vd hack these two lines here are needed
- $have =~ s/ $//; # trailing whitespace happens all the time
-
- # My thoughts about why %vd processing should happen here
-
- # Alt1 maintain it as string with leading v:
- # read index files do nothing
- # compare it use utility for compare
- # print it do nothing
-
- # Alt2 maintain it as what is is
- # read index files convert
- # compare it use utility because there's still a ">" vs "gt" issue
- # print it use CPAN::Version for print
-
- # Seems cleaner to hold it in memory as a string starting with a "v"
-
- # If the author of this module made a mistake and wrote a quoted
- # "v1.13" instead of v1.13, we simply leave it at that with the
- # effect that *we* will treat it like a v-tring while the rest of
- # perl won't. Seems sensible when we consider that any action we
- # could take now would just add complexity.
-
- $have = CPAN::Version->readable($have);
-
- $have =~ s/\s*//g; # stringify to float around floating point issues
- $have; # no stringify needed, \s* above matches always
-}
-
-package CPAN::Tarzip;
-
-# CPAN::Tarzip::gzip
-sub gzip {
- my($class,$read,$write) = @_;
- if ($CPAN::META->has_inst("Compress::Zlib")) {
- my($buffer,$fhw);
- $fhw = FileHandle->new($read)
- or $CPAN::Frontend->mydie("Could not open $read: $!");
- my $gz = Compress::Zlib::gzopen($write, "wb")
- or $CPAN::Frontend->mydie("Cannot gzopen $write: $!\n");
- $gz->gzwrite($buffer)
- while read($fhw,$buffer,4096) > 0 ;
- $gz->gzclose() ;
- $fhw->close;
- return 1;
- } else {
- system("$CPAN::Config->{gzip} -c $read > $write")==0;
- }
-}
-
-
-# CPAN::Tarzip::gunzip
-sub gunzip {
- my($class,$read,$write) = @_;
- if ($CPAN::META->has_inst("Compress::Zlib")) {
- my($buffer,$fhw);
- $fhw = FileHandle->new(">$write")
- or $CPAN::Frontend->mydie("Could not open >$write: $!");
- my $gz = Compress::Zlib::gzopen($read, "rb")
- or $CPAN::Frontend->mydie("Cannot gzopen $read: $!\n");
- $fhw->print($buffer)
- while $gz->gzread($buffer) > 0 ;
- $CPAN::Frontend->mydie("Error reading from $read: $!\n")
- if $gz->gzerror != Compress::Zlib::Z_STREAM_END();
- $gz->gzclose() ;
- $fhw->close;
- return 1;
- } else {
- system("$CPAN::Config->{gzip} -dc $read > $write")==0;
- }
-}
-
-
-# CPAN::Tarzip::gtest
-sub gtest {
- my($class,$read) = @_;
- # After I had reread the documentation in zlib.h, I discovered that
- # uncompressed files do not lead to an gzerror (anymore?).
- if ( $CPAN::META->has_inst("Compress::Zlib") ) {
- my($buffer,$len);
- $len = 0;
- my $gz = Compress::Zlib::gzopen($read, "rb")
- or $CPAN::Frontend->mydie(sprintf("Cannot gzopen %s: %s\n",
- $read,
- $Compress::Zlib::gzerrno));
- while ($gz->gzread($buffer) > 0 ){
- $len += length($buffer);
- $buffer = "";
- }
- my $err = $gz->gzerror;
- my $success = ! $err || $err == Compress::Zlib::Z_STREAM_END();
- if ($len == -s $read){
- $success = 0;
- CPAN->debug("hit an uncompressed file") if $CPAN::DEBUG;
- }
- $gz->gzclose();
- CPAN->debug("err[$err]success[$success]") if $CPAN::DEBUG;
- return $success;
- } else {
- return system("$CPAN::Config->{gzip} -dt $read")==0;
- }
-}
-
-
-# CPAN::Tarzip::TIEHANDLE
-sub TIEHANDLE {
- my($class,$file) = @_;
- my $ret;
- $class->debug("file[$file]");
- if ($CPAN::META->has_inst("Compress::Zlib")) {
- my $gz = Compress::Zlib::gzopen($file,"rb") or
- die "Could not gzopen $file";
- $ret = bless {GZ => $gz}, $class;
- } else {
- my $pipe = "$CPAN::Config->{gzip} --decompress --stdout $file |";
- my $fh = FileHandle->new($pipe) or die "Could not pipe[$pipe]: $!";
- binmode $fh;
- $ret = bless {FH => $fh}, $class;
- }
- $ret;
-}
-
-
-# CPAN::Tarzip::READLINE
-sub READLINE {
- my($self) = @_;
- if (exists $self->{GZ}) {
- my $gz = $self->{GZ};
- my($line,$bytesread);
- $bytesread = $gz->gzreadline($line);
- return undef if $bytesread <= 0;
- return $line;
- } else {
- my $fh = $self->{FH};
- return scalar <$fh>;
- }
-}
-
-
-# CPAN::Tarzip::READ
-sub READ {
- my($self,$ref,$length,$offset) = @_;
- die "read with offset not implemented" if defined $offset;
- if (exists $self->{GZ}) {
- my $gz = $self->{GZ};
- my $byteread = $gz->gzread($$ref,$length);# 30eaf79e8b446ef52464b5422da328a8
- return $byteread;
- } else {
- my $fh = $self->{FH};
- return read($fh,$$ref,$length);
- }
-}
-
-
-# CPAN::Tarzip::DESTROY
-sub DESTROY {
- my($self) = @_;
- if (exists $self->{GZ}) {
- my $gz = $self->{GZ};
- $gz->gzclose() if defined $gz; # hard to say if it is allowed
- # to be undef ever. AK, 2000-09
- } else {
- my $fh = $self->{FH};
- $fh->close if defined $fh;
- }
- undef $self;
-}
-
-
-# CPAN::Tarzip::untar
-sub untar {
- my($class,$file) = @_;
- my($prefer) = 0;
-
- if (0) { # makes changing order easier
- } elsif ($BUGHUNTING){
- $prefer=2;
- } elsif (MM->maybe_command($CPAN::Config->{gzip})
- &&
- MM->maybe_command($CPAN::Config->{'tar'})) {
- # should be default until Archive::Tar is fixed
- $prefer = 1;
- } elsif (
- $CPAN::META->has_inst("Archive::Tar")
- &&
- $CPAN::META->has_inst("Compress::Zlib") ) {
- $prefer = 2;
- } else {
- $CPAN::Frontend->mydie(qq{
-CPAN.pm needs either both external programs tar and gzip installed or
-both the modules Archive::Tar and Compress::Zlib. Neither prerequisite
-is available. Can\'t continue.
-});
- }
- if ($prefer==1) { # 1 => external gzip+tar
- my($system);
- my $is_compressed = $class->gtest($file);
- if ($is_compressed) {
- $system = "$CPAN::Config->{gzip} --decompress --stdout " .
- "< $file | $CPAN::Config->{tar} xvf -";
- } else {
- $system = "$CPAN::Config->{tar} xvf $file";
- }
- if (system($system) != 0) {
- # people find the most curious tar binaries that cannot handle
- # pipes
- if ($is_compressed) {
- (my $ungzf = $file) =~ s/\.gz(?!\n)\Z//;
- if (CPAN::Tarzip->gunzip($file, $ungzf)) {
- $CPAN::Frontend->myprint(qq{Uncompressed $file successfully\n});
- } else {
- $CPAN::Frontend->mydie(qq{Couldn\'t uncompress $file\n});
- }
- $file = $ungzf;
- }
- $system = "$CPAN::Config->{tar} xvf $file";
- $CPAN::Frontend->myprint(qq{Using Tar:$system:\n});
- if (system($system)==0) {
- $CPAN::Frontend->myprint(qq{Untarred $file successfully\n});
- } else {
- $CPAN::Frontend->mydie(qq{Couldn\'t untar $file\n});
- }
- return 1;
- } else {
- return 1;
- }
- } elsif ($prefer==2) { # 2 => modules
- my $tar = Archive::Tar->new($file,1);
- my $af; # archive file
- my @af;
- if ($BUGHUNTING) {
- # RCS 1.337 had this code, it turned out unacceptable slow but
- # it revealed a bug in Archive::Tar. Code is only here to hunt
- # the bug again. It should never be enabled in published code.
- # GDGraph3d-0.53 was an interesting case according to Larry
- # Virden.
- warn(">>>Bughunting code enabled<<< " x 20);
- for $af ($tar->list_files) {
- if ($af =~ m!^(/|\.\./)!) {
- $CPAN::Frontend->mydie("ALERT: Archive contains ".
- "illegal member [$af]");
- }
- $CPAN::Frontend->myprint("$af\n");
- $tar->extract($af); # slow but effective for finding the bug
- return if $CPAN::Signal;
- }
- } else {
- for $af ($tar->list_files) {
- if ($af =~ m!^(/|\.\./)!) {
- $CPAN::Frontend->mydie("ALERT: Archive contains ".
- "illegal member [$af]");
- }
- $CPAN::Frontend->myprint("$af\n");
- push @af, $af;
- return if $CPAN::Signal;
- }
- $tar->extract(@af);
- }
-
- ExtUtils::MM_MacOS::convert_files([$tar->list_files], 1)
- if ($^O eq 'MacOS');
-
- return 1;
- }
-}
-
-sub unzip {
- my($class,$file) = @_;
- if ($CPAN::META->has_inst("Archive::Zip")) {
- # blueprint of the code from Archive::Zip::Tree::extractTree();
- my $zip = Archive::Zip->new();
- my $status;
- $status = $zip->read($file);
- die "Read of file[$file] failed\n" if $status != Archive::Zip::AZ_OK();
- $CPAN::META->debug("Successfully read file[$file]") if $CPAN::DEBUG;
- my @members = $zip->members();
- for my $member ( @members ) {
- my $af = $member->fileName();
- if ($af =~ m!^(/|\.\./)!) {
- $CPAN::Frontend->mydie("ALERT: Archive contains ".
- "illegal member [$af]");
- }
- my $status = $member->extractToFileNamed( $af );
- $CPAN::META->debug("af[$af]status[$status]") if $CPAN::DEBUG;
- die "Extracting of file[$af] from zipfile[$file] failed\n" if
- $status != Archive::Zip::AZ_OK();
- return if $CPAN::Signal;
- }
- return 1;
- } else {
- my $unzip = $CPAN::Config->{unzip} or
- $CPAN::Frontend->mydie("Cannot unzip, no unzip program available");
- my @system = ($unzip, $file);
- return system(@system) == 0;
- }
-}
-
-
-package CPAN::Version;
-# CPAN::Version::vcmp courtesy Jost Krieger
-sub vcmp {
- my($self,$l,$r) = @_;
- local($^W) = 0;
- CPAN->debug("l[$l] r[$r]") if $CPAN::DEBUG;
-
- return 0 if $l eq $r; # short circuit for quicker success
-
- if ($l=~/^v/ <=> $r=~/^v/) {
- for ($l,$r) {
- next if /^v/;
- $_ = $self->float2vv($_);
- }
- }
-
- return
- ($l ne "undef") <=> ($r ne "undef") ||
- ($] >= 5.006 &&
- $l =~ /^v/ &&
- $r =~ /^v/ &&
- $self->vstring($l) cmp $self->vstring($r)) ||
- $l <=> $r ||
- $l cmp $r;
-}
-
-sub vgt {
- my($self,$l,$r) = @_;
- $self->vcmp($l,$r) > 0;
-}
-
-sub vstring {
- my($self,$n) = @_;
- $n =~ s/^v// or die "CPAN::Version::vstring() called with invalid arg [$n]";
- pack "U*", split /\./, $n;
-}
-
-# vv => visible vstring
-sub float2vv {
- my($self,$n) = @_;
- my($rev) = int($n);
- $rev ||= 0;
- my($mantissa) = $n =~ /\.(\d{1,12})/; # limit to 12 digits to limit
- # architecture influence
- $mantissa ||= 0;
- $mantissa .= "0" while length($mantissa)%3;
- my $ret = "v" . $rev;
- while ($mantissa) {
- $mantissa =~ s/(\d{1,3})// or
- die "Panic: length>0 but not a digit? mantissa[$mantissa]";
- $ret .= ".".int($1);
- }
- # warn "n[$n]ret[$ret]";
- $ret;
-}
-
-sub readable {
- my($self,$n) = @_;
- $n =~ /^([\w\-\+\.]+)/;
-
- return $1 if defined $1 && length($1)>0;
- # if the first user reaches version v43, he will be treated as "+".
- # We'll have to decide about a new rule here then, depending on what
- # will be the prevailing versioning behavior then.
-
- if ($] < 5.006) { # or whenever v-strings were introduced
- # we get them wrong anyway, whatever we do, because 5.005 will
- # have already interpreted 0.2.4 to be "0.24". So even if he
- # indexer sends us something like "v0.2.4" we compare wrongly.
-
- # And if they say v1.2, then the old perl takes it as "v12"
-
- $CPAN::Frontend->mywarn("Suspicious version string seen [$n]");
- return $n;
- }
- my $better = sprintf "v%vd", $n;
- CPAN->debug("n[$n] better[$better]") if $CPAN::DEBUG;
- return $better;
-}
-
-package CPAN;
-
-1;
-
-__END__
-
-=head1 NAME
-
-CPAN - query, download and build perl modules from CPAN sites
-
-=head1 SYNOPSIS
-
-Interactive mode:
-
- perl -MCPAN -e shell;
-
-Batch mode:
-
- use CPAN;
-
- autobundle, clean, install, make, recompile, test
-
-=head1 DESCRIPTION
-
-The CPAN module is designed to automate the make and install of perl
-modules and extensions. It includes some searching capabilities and
-knows how to use Net::FTP or LWP (or lynx or an external ftp client)
-to fetch the raw data from the net.
-
-Modules are fetched from one or more of the mirrored CPAN
-(Comprehensive Perl Archive Network) sites and unpacked in a dedicated
-directory.
-
-The CPAN module also supports the concept of named and versioned
-I<bundles> of modules. Bundles simplify the handling of sets of
-related modules. See Bundles below.
-
-The package contains a session manager and a cache manager. There is
-no status retained between sessions. The session manager keeps track
-of what has been fetched, built and installed in the current
-session. The cache manager keeps track of the disk space occupied by
-the make processes and deletes excess space according to a simple FIFO
-mechanism.
-
-For extended searching capabilities there's a plugin for CPAN available,
-L<C<CPAN::WAIT>|CPAN::WAIT>. C<CPAN::WAIT> is a full-text search engine
-that indexes all documents available in CPAN authors directories. If
-C<CPAN::WAIT> is installed on your system, the interactive shell of
-CPAN.pm will enable the C<wq>, C<wr>, C<wd>, C<wl>, and C<wh> commands
-which send queries to the WAIT server that has been configured for your
-installation.
-
-All other methods provided are accessible in a programmer style and in an
-interactive shell style.
-
-=head2 Interactive Mode
-
-The interactive mode is entered by running
-
- perl -MCPAN -e shell
-
-which puts you into a readline interface. You will have the most fun if
-you install Term::ReadKey and Term::ReadLine to enjoy both history and
-command completion.
-
-Once you are on the command line, type 'h' and the rest should be
-self-explanatory.
-
-The function call C<shell> takes two optional arguments, one is the
-prompt, the second is the default initial command line (the latter
-only works if a real ReadLine interface module is installed).
-
-The most common uses of the interactive modes are
-
-=over 2
-
-=item Searching for authors, bundles, distribution files and modules
-
-There are corresponding one-letter commands C<a>, C<b>, C<d>, and C<m>
-for each of the four categories and another, C<i> for any of the
-mentioned four. Each of the four entities is implemented as a class
-with slightly differing methods for displaying an object.
-
-Arguments you pass to these commands are either strings exactly matching
-the identification string of an object or regular expressions that are
-then matched case-insensitively against various attributes of the
-objects. The parser recognizes a regular expression only if you
-enclose it between two slashes.
-
-The principle is that the number of found objects influences how an
-item is displayed. If the search finds one item, the result is
-displayed with the rather verbose method C<as_string>, but if we find
-more than one, we display each object with the terse method
-<as_glimpse>.
-
-=item make, test, install, clean modules or distributions
-
-These commands take any number of arguments and investigate what is
-necessary to perform the action. If the argument is a distribution
-file name (recognized by embedded slashes), it is processed. If it is
-a module, CPAN determines the distribution file in which this module
-is included and processes that, following any dependencies named in
-the module's Makefile.PL (this behavior is controlled by
-I<prerequisites_policy>.)
-
-Any C<make> or C<test> are run unconditionally. An
-
- install <distribution_file>
-
-also is run unconditionally. But for
-
- install <module>
-
-CPAN checks if an install is actually needed for it and prints
-I<module up to date> in the case that the distribution file containing
-the module doesn't need to be updated.
-
-CPAN also keeps track of what it has done within the current session
-and doesn't try to build a package a second time regardless if it
-succeeded or not. The C<force> command takes as a first argument the
-method to invoke (currently: C<make>, C<test>, or C<install>) and executes the
-command from scratch.
-
-Example:
-
- cpan> install OpenGL
- OpenGL is up to date.
- cpan> force install OpenGL
- Running make
- OpenGL-0.4/
- OpenGL-0.4/COPYRIGHT
- [...]
-
-A C<clean> command results in a
-
- make clean
-
-being executed within the distribution file's working directory.
-
-=item get, readme, look module or distribution
-
-C<get> downloads a distribution file without further action. C<readme>
-displays the README file of the associated distribution. C<Look> gets
-and untars (if not yet done) the distribution file, changes to the
-appropriate directory and opens a subshell process in that directory.
-
-=item ls author
-
-C<ls> lists all distribution files in and below an author's CPAN
-directory. Only those files that contain modules are listed and if
-there is more than one for any given module, only the most recent one
-is listed.
-
-=item Signals
-
-CPAN.pm installs signal handlers for SIGINT and SIGTERM. While you are
-in the cpan-shell it is intended that you can press C<^C> anytime and
-return to the cpan-shell prompt. A SIGTERM will cause the cpan-shell
-to clean up and leave the shell loop. You can emulate the effect of a
-SIGTERM by sending two consecutive SIGINTs, which usually means by
-pressing C<^C> twice.
-
-CPAN.pm ignores a SIGPIPE. If the user sets inactivity_timeout, a
-SIGALRM is used during the run of the C<perl Makefile.PL> subprocess.
-
-=back
-
-=head2 CPAN::Shell
-
-The commands that are available in the shell interface are methods in
-the package CPAN::Shell. If you enter the shell command, all your
-input is split by the Text::ParseWords::shellwords() routine which
-acts like most shells do. The first word is being interpreted as the
-method to be called and the rest of the words are treated as arguments
-to this method. Continuation lines are supported if a line ends with a
-literal backslash.
-
-=head2 autobundle
-
-C<autobundle> writes a bundle file into the
-C<$CPAN::Config-E<gt>{cpan_home}/Bundle> directory. The file contains
-a list of all modules that are both available from CPAN and currently
-installed within @INC. The name of the bundle file is based on the
-current date and a counter.
-
-=head2 recompile
-
-recompile() is a very special command in that it takes no argument and
-runs the make/test/install cycle with brute force over all installed
-dynamically loadable extensions (aka XS modules) with 'force' in
-effect. The primary purpose of this command is to finish a network
-installation. Imagine, you have a common source tree for two different
-architectures. You decide to do a completely independent fresh
-installation. You start on one architecture with the help of a Bundle
-file produced earlier. CPAN installs the whole Bundle for you, but
-when you try to repeat the job on the second architecture, CPAN
-responds with a C<"Foo up to date"> message for all modules. So you
-invoke CPAN's recompile on the second architecture and you're done.
-
-Another popular use for C<recompile> is to act as a rescue in case your
-perl breaks binary compatibility. If one of the modules that CPAN uses
-is in turn depending on binary compatibility (so you cannot run CPAN
-commands), then you should try the CPAN::Nox module for recovery.
-
-=head2 The four C<CPAN::*> Classes: Author, Bundle, Module, Distribution
-
-Although it may be considered internal, the class hierarchy does matter
-for both users and programmer. CPAN.pm deals with above mentioned four
-classes, and all those classes share a set of methods. A classical
-single polymorphism is in effect. A metaclass object registers all
-objects of all kinds and indexes them with a string. The strings
-referencing objects have a separated namespace (well, not completely
-separated):
-
- Namespace Class
-
- words containing a "/" (slash) Distribution
- words starting with Bundle:: Bundle
- everything else Module or Author
-
-Modules know their associated Distribution objects. They always refer
-to the most recent official release. Developers may mark their releases
-as unstable development versions (by inserting an underbar into the
-visible version number), so the really hottest and newest distribution
-file is not always the default. If a module Foo circulates on CPAN in
-both version 1.23 and 1.23_90, CPAN.pm offers a convenient way to
-install version 1.23 by saying
-
- install Foo
-
-This would install the complete distribution file (say
-BAR/Foo-1.23.tar.gz) with all accompanying material. But if you would
-like to install version 1.23_90, you need to know where the
-distribution file resides on CPAN relative to the authors/id/
-directory. If the author is BAR, this might be BAR/Foo-1.23_90.tar.gz;
-so you would have to say
-
- install BAR/Foo-1.23_90.tar.gz
-
-The first example will be driven by an object of the class
-CPAN::Module, the second by an object of class CPAN::Distribution.
-
-=head2 Programmer's interface
-
-If you do not enter the shell, the available shell commands are both
-available as methods (C<CPAN::Shell-E<gt>install(...)>) and as
-functions in the calling package (C<install(...)>).
-
-There's currently only one class that has a stable interface -
-CPAN::Shell. All commands that are available in the CPAN shell are
-methods of the class CPAN::Shell. Each of the commands that produce
-listings of modules (C<r>, C<autobundle>, C<u>) also return a list of
-the IDs of all modules within the list.
-
-=over 2
-
-=item expand($type,@things)
-
-The IDs of all objects available within a program are strings that can
-be expanded to the corresponding real objects with the
-C<CPAN::Shell-E<gt>expand("Module",@things)> method. Expand returns a
-list of CPAN::Module objects according to the C<@things> arguments
-given. In scalar context it only returns the first element of the
-list.
-
-=item expandany(@things)
-
-Like expand, but returns objects of the appropriate type, i.e.
-CPAN::Bundle objects for bundles, CPAN::Module objects for modules and
-CPAN::Distribution objects fro distributions.
-
-=item Programming Examples
-
-This enables the programmer to do operations that combine
-functionalities that are available in the shell.
-
- # install everything that is outdated on my disk:
- perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
-
- # install my favorite programs if necessary:
- for $mod (qw(Net::FTP MD5 Data::Dumper)){
- my $obj = CPAN::Shell->expand('Module',$mod);
- $obj->install;
- }
-
- # list all modules on my disk that have no VERSION number
- for $mod (CPAN::Shell->expand("Module","/./")){
- next unless $mod->inst_file;
- # MakeMaker convention for undefined $VERSION:
- next unless $mod->inst_version eq "undef";
- print "No VERSION in ", $mod->id, "\n";
- }
-
- # find out which distribution on CPAN contains a module:
- print CPAN::Shell->expand("Module","Apache::Constants")->cpan_file
-
-Or if you want to write a cronjob to watch The CPAN, you could list
-all modules that need updating. First a quick and dirty way:
-
- perl -e 'use CPAN; CPAN::Shell->r;'
-
-If you don't want to get any output in the case that all modules are
-up to date, you can parse the output of above command for the regular
-expression //modules are up to date// and decide to mail the output
-only if it doesn't match. Ick?
-
-If you prefer to do it more in a programmer style in one single
-process, maybe something like this suits you better:
-
- # list all modules on my disk that have newer versions on CPAN
- for $mod (CPAN::Shell->expand("Module","/./")){
- next unless $mod->inst_file;
- next if $mod->uptodate;
- printf "Module %s is installed as %s, could be updated to %s from CPAN\n",
- $mod->id, $mod->inst_version, $mod->cpan_version;
- }
-
-If that gives you too much output every day, you maybe only want to
-watch for three modules. You can write
-
- for $mod (CPAN::Shell->expand("Module","/Apache|LWP|CGI/")){
-
-as the first line instead. Or you can combine some of the above
-tricks:
-
- # watch only for a new mod_perl module
- $mod = CPAN::Shell->expand("Module","mod_perl");
- exit if $mod->uptodate;
- # new mod_perl arrived, let me know all update recommendations
- CPAN::Shell->r;
-
-=back
-
-=head2 Methods in the other Classes
-
-The programming interface for the classes CPAN::Module,
-CPAN::Distribution, CPAN::Bundle, and CPAN::Author is still considered
-beta and partially even alpha. In the following paragraphs only those
-methods are documented that have proven useful over a longer time and
-thus are unlikely to change.
-
-=over
-
-=item CPAN::Author::as_glimpse()
-
-Returns a one-line description of the author
-
-=item CPAN::Author::as_string()
-
-Returns a multi-line description of the author
-
-=item CPAN::Author::email()
-
-Returns the author's email address
-
-=item CPAN::Author::fullname()
-
-Returns the author's name
-
-=item CPAN::Author::name()
-
-An alias for fullname
-
-=item CPAN::Bundle::as_glimpse()
-
-Returns a one-line description of the bundle
-
-=item CPAN::Bundle::as_string()
-
-Returns a multi-line description of the bundle
-
-=item CPAN::Bundle::clean()
-
-Recursively runs the C<clean> method on all items contained in the bundle.
-
-=item CPAN::Bundle::contains()
-
-Returns a list of objects' IDs contained in a bundle. The associated
-objects may be bundles, modules or distributions.
-
-=item CPAN::Bundle::force($method,@args)
-
-Forces CPAN to perform a task that normally would have failed. Force
-takes as arguments a method name to be called and any number of
-additional arguments that should be passed to the called method. The
-internals of the object get the needed changes so that CPAN.pm does
-not refuse to take the action. The C<force> is passed recursively to
-all contained objects.
-
-=item CPAN::Bundle::get()
-
-Recursively runs the C<get> method on all items contained in the bundle
-
-=item CPAN::Bundle::inst_file()
-
-Returns the highest installed version of the bundle in either @INC or
-C<$CPAN::Config->{cpan_home}>. Note that this is different from
-CPAN::Module::inst_file.
-
-=item CPAN::Bundle::inst_version()
-
-Like CPAN::Bundle::inst_file, but returns the $VERSION
-
-=item CPAN::Bundle::uptodate()
-
-Returns 1 if the bundle itself and all its members are uptodate.
-
-=item CPAN::Bundle::install()
-
-Recursively runs the C<install> method on all items contained in the bundle
-
-=item CPAN::Bundle::make()
-
-Recursively runs the C<make> method on all items contained in the bundle
-
-=item CPAN::Bundle::readme()
-
-Recursively runs the C<readme> method on all items contained in the bundle
-
-=item CPAN::Bundle::test()
-
-Recursively runs the C<test> method on all items contained in the bundle
-
-=item CPAN::Distribution::as_glimpse()
-
-Returns a one-line description of the distribution
-
-=item CPAN::Distribution::as_string()
-
-Returns a multi-line description of the distribution
-
-=item CPAN::Distribution::clean()
-
-Changes to the directory where the distribution has been unpacked and
-runs C<make clean> there.
-
-=item CPAN::Distribution::containsmods()
-
-Returns a list of IDs of modules contained in a distribution file.
-Only works for distributions listed in the 02packages.details.txt.gz
-file. This typically means that only the most recent version of a
-distribution is covered.
-
-=item CPAN::Distribution::cvs_import()
-
-Changes to the directory where the distribution has been unpacked and
-runs something like
-
- cvs -d $cvs_root import -m $cvs_log $cvs_dir $userid v$version
-
-there.
-
-=item CPAN::Distribution::dir()
-
-Returns the directory into which this distribution has been unpacked.
-
-=item CPAN::Distribution::force($method,@args)
-
-Forces CPAN to perform a task that normally would have failed. Force
-takes as arguments a method name to be called and any number of
-additional arguments that should be passed to the called method. The
-internals of the object get the needed changes so that CPAN.pm does
-not refuse to take the action.
-
-=item CPAN::Distribution::get()
-
-Downloads the distribution from CPAN and unpacks it. Does nothing if
-the distribution has already been downloaded and unpacked within the
-current session.
-
-=item CPAN::Distribution::install()
-
-Changes to the directory where the distribution has been unpacked and
-runs the external command C<make install> there. If C<make> has not
-yet been run, it will be run first. A C<make test> will be issued in
-any case and if this fails, the install will be cancelled. The
-cancellation can be avoided by letting C<force> run the C<install> for
-you.
-
-=item CPAN::Distribution::isa_perl()
-
-Returns 1 if this distribution file seems to be a perl distribution.
-Normally this is derived from the file name only, but the index from
-CPAN can contain a hint to achieve a return value of true for other
-filenames too.
-
-=item CPAN::Distribution::look()
-
-Changes to the directory where the distribution has been unpacked and
-opens a subshell there. Exiting the subshell returns.
-
-=item CPAN::Distribution::make()
-
-First runs the C<get> method to make sure the distribution is
-downloaded and unpacked. Changes to the directory where the
-distribution has been unpacked and runs the external commands C<perl
-Makefile.PL> and C<make> there.
-
-=item CPAN::Distribution::prereq_pm()
-
-Returns the hash reference that has been announced by a distribution
-as the PREREQ_PM hash in the Makefile.PL. Note: works only after an
-attempt has been made to C<make> the distribution. Returns undef
-otherwise.
-
-=item CPAN::Distribution::readme()
-
-Downloads the README file associated with a distribution and runs it
-through the pager specified in C<$CPAN::Config->{pager}>.
-
-=item CPAN::Distribution::test()
-
-Changes to the directory where the distribution has been unpacked and
-runs C<make test> there.
-
-=item CPAN::Distribution::uptodate()
-
-Returns 1 if all the modules contained in the distribution are
-uptodate. Relies on containsmods.
-
-=item CPAN::Index::force_reload()
-
-Forces a reload of all indices.
-
-=item CPAN::Index::reload()
-
-Reloads all indices if they have been read more than
-C<$CPAN::Config->{index_expire}> days.
-
-=item CPAN::InfoObj::dump()
-
-CPAN::Author, CPAN::Bundle, CPAN::Module, and CPAN::Distribution
-inherit this method. It prints the data structure associated with an
-object. Useful for debugging. Note: the data structure is considered
-internal and thus subject to change without notice.
-
-=item CPAN::Module::as_glimpse()
-
-Returns a one-line description of the module
-
-=item CPAN::Module::as_string()
-
-Returns a multi-line description of the module
-
-=item CPAN::Module::clean()
-
-Runs a clean on the distribution associated with this module.
-
-=item CPAN::Module::cpan_file()
-
-Returns the filename on CPAN that is associated with the module.
-
-=item CPAN::Module::cpan_version()
-
-Returns the latest version of this module available on CPAN.
-
-=item CPAN::Module::cvs_import()
-
-Runs a cvs_import on the distribution associated with this module.
-
-=item CPAN::Module::description()
-
-Returns a 44 chracter description of this module. Only available for
-modules listed in The Module List (CPAN/modules/00modlist.long.html
-or 00modlist.long.txt.gz)
-
-=item CPAN::Module::force($method,@args)
-
-Forces CPAN to perform a task that normally would have failed. Force
-takes as arguments a method name to be called and any number of
-additional arguments that should be passed to the called method. The
-internals of the object get the needed changes so that CPAN.pm does
-not refuse to take the action.
-
-=item CPAN::Module::get()
-
-Runs a get on the distribution associated with this module.
-
-=item CPAN::Module::inst_file()
-
-Returns the filename of the module found in @INC. The first file found
-is reported just like perl itself stops searching @INC when it finds a
-module.
-
-=item CPAN::Module::inst_version()
-
-Returns the version number of the module in readable format.
-
-=item CPAN::Module::install()
-
-Runs an C<install> on the distribution associated with this module.
-
-=item CPAN::Module::look()
-
-Changes to the directory where the distribution assoicated with this
-module has been unpacked and opens a subshell there. Exiting the
-subshell returns.
-
-=item CPAN::Module::make()
-
-Runs a C<make> on the distribution associated with this module.
-
-=item CPAN::Module::manpage_headline()
-
-If module is installed, peeks into the module's manpage, reads the
-headline and returns it. Moreover, if the module has been downloaded
-within this session, does the equivalent on the downloaded module even
-if it is not installed.
-
-=item CPAN::Module::readme()
-
-Runs a C<readme> on the distribution associated with this module.
-
-=item CPAN::Module::test()
-
-Runs a C<test> on the distribution associated with this module.
-
-=item CPAN::Module::uptodate()
-
-Returns 1 if the module is installed and up-to-date.
-
-=item CPAN::Module::userid()
-
-Returns the author's ID of the module.
-
-=back
-
-=head2 Cache Manager
-
-Currently the cache manager only keeps track of the build directory
-($CPAN::Config->{build_dir}). It is a simple FIFO mechanism that
-deletes complete directories below C<build_dir> as soon as the size of
-all directories there gets bigger than $CPAN::Config->{build_cache}
-(in MB). The contents of this cache may be used for later
-re-installations that you intend to do manually, but will never be
-trusted by CPAN itself. This is due to the fact that the user might
-use these directories for building modules on different architectures.
-
-There is another directory ($CPAN::Config->{keep_source_where}) where
-the original distribution files are kept. This directory is not
-covered by the cache manager and must be controlled by the user. If
-you choose to have the same directory as build_dir and as
-keep_source_where directory, then your sources will be deleted with
-the same fifo mechanism.
-
-=head2 Bundles
-
-A bundle is just a perl module in the namespace Bundle:: that does not
-define any functions or methods. It usually only contains documentation.
-
-It starts like a perl module with a package declaration and a $VERSION
-variable. After that the pod section looks like any other pod with the
-only difference being that I<one special pod section> exists starting with
-(verbatim):
-
- =head1 CONTENTS
-
-In this pod section each line obeys the format
-
- Module_Name [Version_String] [- optional text]
-
-The only required part is the first field, the name of a module
-(e.g. Foo::Bar, ie. I<not> the name of the distribution file). The rest
-of the line is optional. The comment part is delimited by a dash just
-as in the man page header.
-
-The distribution of a bundle should follow the same convention as
-other distributions.
-
-Bundles are treated specially in the CPAN package. If you say 'install
-Bundle::Tkkit' (assuming such a bundle exists), CPAN will install all
-the modules in the CONTENTS section of the pod. You can install your
-own Bundles locally by placing a conformant Bundle file somewhere into
-your @INC path. The autobundle() command which is available in the
-shell interface does that for you by including all currently installed
-modules in a snapshot bundle file.
-
-=head2 Prerequisites
-
-If you have a local mirror of CPAN and can access all files with
-"file:" URLs, then you only need a perl better than perl5.003 to run
-this module. Otherwise Net::FTP is strongly recommended. LWP may be
-required for non-UNIX systems or if your nearest CPAN site is
-associated with an URL that is not C<ftp:>.
-
-If you have neither Net::FTP nor LWP, there is a fallback mechanism
-implemented for an external ftp command or for an external lynx
-command.
-
-=head2 Finding packages and VERSION
-
-This module presumes that all packages on CPAN
-
-=over 2
-
-=item *
-
-declare their $VERSION variable in an easy to parse manner. This
-prerequisite can hardly be relaxed because it consumes far too much
-memory to load all packages into the running program just to determine
-the $VERSION variable. Currently all programs that are dealing with
-version use something like this
-
- perl -MExtUtils::MakeMaker -le \
- 'print MM->parse_version(shift)' filename
-
-If you are author of a package and wonder if your $VERSION can be
-parsed, please try the above method.
-
-=item *
-
-come as compressed or gzipped tarfiles or as zip files and contain a
-Makefile.PL (well, we try to handle a bit more, but without much
-enthusiasm).
-
-=back
-
-=head2 Debugging
-
-The debugging of this module is a bit complex, because we have
-interferences of the software producing the indices on CPAN, of the
-mirroring process on CPAN, of packaging, of configuration, of
-synchronicity, and of bugs within CPAN.pm.
-
-For code debugging in interactive mode you can try "o debug" which
-will list options for debugging the various parts of the code. You
-should know that "o debug" has built-in completion support.
-
-For data debugging there is the C<dump> command which takes the same
-arguments as make/test/install and outputs the object's Data::Dumper
-dump.
-
-=head2 Floppy, Zip, Offline Mode
-
-CPAN.pm works nicely without network too. If you maintain machines
-that are not networked at all, you should consider working with file:
-URLs. Of course, you have to collect your modules somewhere first. So
-you might use CPAN.pm to put together all you need on a networked
-machine. Then copy the $CPAN::Config->{keep_source_where} (but not
-$CPAN::Config->{build_dir}) directory on a floppy. This floppy is kind
-of a personal CPAN. CPAN.pm on the non-networked machines works nicely
-with this floppy. See also below the paragraph about CD-ROM support.
-
-=head1 CONFIGURATION
-
-When the CPAN module is installed, a site wide configuration file is
-created as CPAN/Config.pm. The default values defined there can be
-overridden in another configuration file: CPAN/MyConfig.pm. You can
-store this file in $HOME/.cpan/CPAN/MyConfig.pm if you want, because
-$HOME/.cpan is added to the search path of the CPAN module before the
-use() or require() statements.
-
-Currently the following keys in the hash reference $CPAN::Config are
-defined:
-
- build_cache size of cache for directories to build modules
- build_dir locally accessible directory to build modules
- index_expire after this many days refetch index files
- cache_metadata use serializer to cache metadata
- cpan_home local directory reserved for this package
- dontload_hash anonymous hash: modules in the keys will not be
- loaded by the CPAN::has_inst() routine
- gzip location of external program gzip
- inactivity_timeout breaks interactive Makefile.PLs after this
- many seconds inactivity. Set to 0 to never break.
- inhibit_startup_message
- if true, does not print the startup message
- keep_source_where directory in which to keep the source (if we do)
- make location of external make program
- make_arg arguments that should always be passed to 'make'
- make_install_arg same as make_arg for 'make install'
- makepl_arg arguments passed to 'perl Makefile.PL'
- pager location of external program more (or any pager)
- prerequisites_policy
- what to do if you are missing module prerequisites
- ('follow' automatically, 'ask' me, or 'ignore')
- proxy_user username for accessing an authenticating proxy
- proxy_pass password for accessing an authenticating proxy
- scan_cache controls scanning of cache ('atstart' or 'never')
- tar location of external program tar
- term_is_latin if true internal UTF-8 is translated to ISO-8859-1
- (and nonsense for characters outside latin range)
- unzip location of external program unzip
- urllist arrayref to nearby CPAN sites (or equivalent locations)
- wait_list arrayref to a wait server to try (See CPAN::WAIT)
- ftp_proxy, } the three usual variables for configuring
- http_proxy, } proxy requests. Both as CPAN::Config variables
- no_proxy } and as environment variables configurable.
-
-You can set and query each of these options interactively in the cpan
-shell with the command set defined within the C<o conf> command:
-
-=over 2
-
-=item C<o conf E<lt>scalar optionE<gt>>
-
-prints the current value of the I<scalar option>
-
-=item C<o conf E<lt>scalar optionE<gt> E<lt>valueE<gt>>
-
-Sets the value of the I<scalar option> to I<value>
-
-=item C<o conf E<lt>list optionE<gt>>
-
-prints the current value of the I<list option> in MakeMaker's
-neatvalue format.
-
-=item C<o conf E<lt>list optionE<gt> [shift|pop]>
-
-shifts or pops the array in the I<list option> variable
-
-=item C<o conf E<lt>list optionE<gt> [unshift|push|splice] E<lt>listE<gt>>
-
-works like the corresponding perl commands.
-
-=back
-
-=head2 Note on urllist parameter's format
-
-urllist parameters are URLs according to RFC 1738. We do a little
-guessing if your URL is not compliant, but if you have problems with
-file URLs, please try the correct format. Either:
-
- file://localhost/whatever/ftp/pub/CPAN/
-
-or
-
- file:///home/ftp/pub/CPAN/
-
-=head2 urllist parameter has CD-ROM support
-
-The C<urllist> parameter of the configuration table contains a list of
-URLs that are to be used for downloading. If the list contains any
-C<file> URLs, CPAN always tries to get files from there first. This
-feature is disabled for index files. So the recommendation for the
-owner of a CD-ROM with CPAN contents is: include your local, possibly
-outdated CD-ROM as a C<file> URL at the end of urllist, e.g.
-
- o conf urllist push file://localhost/CDROM/CPAN
-
-CPAN.pm will then fetch the index files from one of the CPAN sites
-that come at the beginning of urllist. It will later check for each
-module if there is a local copy of the most recent version.
-
-Another peculiarity of urllist is that the site that we could
-successfully fetch the last file from automatically gets a preference
-token and is tried as the first site for the next request. So if you
-add a new site at runtime it may happen that the previously preferred
-site will be tried another time. This means that if you want to disallow
-a site for the next transfer, it must be explicitly removed from
-urllist.
-
-=head1 SECURITY
-
-There's no strong security layer in CPAN.pm. CPAN.pm helps you to
-install foreign, unmasked, unsigned code on your machine. We compare
-to a checksum that comes from the net just as the distribution file
-itself. If somebody has managed to tamper with the distribution file,
-they may have as well tampered with the CHECKSUMS file. Future
-development will go towards strong authentication.
-
-=head1 EXPORT
-
-Most functions in package CPAN are exported per default. The reason
-for this is that the primary use is intended for the cpan shell or for
-oneliners.
-
-=head1 POPULATE AN INSTALLATION WITH LOTS OF MODULES
-
-Populating a freshly installed perl with my favorite modules is pretty
-easy if you maintain a private bundle definition file. To get a useful
-blueprint of a bundle definition file, the command autobundle can be used
-on the CPAN shell command line. This command writes a bundle definition
-file for all modules that are installed for the currently running perl
-interpreter. It's recommended to run this command only once and from then
-on maintain the file manually under a private name, say
-Bundle/my_bundle.pm. With a clever bundle file you can then simply say
-
- cpan> install Bundle::my_bundle
-
-then answer a few questions and then go out for a coffee.
-
-Maintaining a bundle definition file means keeping track of two
-things: dependencies and interactivity. CPAN.pm sometimes fails on
-calculating dependencies because not all modules define all MakeMaker
-attributes correctly, so a bundle definition file should specify
-prerequisites as early as possible. On the other hand, it's a bit
-annoying that many distributions need some interactive configuring. So
-what I try to accomplish in my private bundle file is to have the
-packages that need to be configured early in the file and the gentle
-ones later, so I can go out after a few minutes and leave CPAN.pm
-untended.
-
-=head1 WORKING WITH CPAN.pm BEHIND FIREWALLS
-
-Thanks to Graham Barr for contributing the following paragraphs about
-the interaction between perl, and various firewall configurations. For
-further informations on firewalls, it is recommended to consult the
-documentation that comes with the ncftp program. If you are unable to
-go through the firewall with a simple Perl setup, it is very likely
-that you can configure ncftp so that it works for your firewall.
-
-=head2 Three basic types of firewalls
-
-Firewalls can be categorized into three basic types.
-
-=over
-
-=item http firewall
-
-This is where the firewall machine runs a web server and to access the
-outside world you must do it via the web server. If you set environment
-variables like http_proxy or ftp_proxy to a values beginning with http://
-or in your web browser you have to set proxy information then you know
-you are running a http firewall.
-
-To access servers outside these types of firewalls with perl (even for
-ftp) you will need to use LWP.
-
-=item ftp firewall
-
-This where the firewall machine runs a ftp server. This kind of
-firewall will only let you access ftp servers outside the firewall.
-This is usually done by connecting to the firewall with ftp, then
-entering a username like "user@outside.host.com"
-
-To access servers outside these type of firewalls with perl you
-will need to use Net::FTP.
-
-=item One way visibility
-
-I say one way visibility as these firewalls try to make themselve look
-invisible to the users inside the firewall. An FTP data connection is
-normally created by sending the remote server your IP address and then
-listening for the connection. But the remote server will not be able to
-connect to you because of the firewall. So for these types of firewall
-FTP connections need to be done in a passive mode.
-
-There are two that I can think off.
-
-=over
-
-=item SOCKS
-
-If you are using a SOCKS firewall you will need to compile perl and link
-it with the SOCKS library, this is what is normally called a 'socksified'
-perl. With this executable you will be able to connect to servers outside
-the firewall as if it is not there.
-
-=item IP Masquerade
-
-This is the firewall implemented in the Linux kernel, it allows you to
-hide a complete network behind one IP address. With this firewall no
-special compiling is needed as you can access hosts directly.
-
-=back
-
-=back
-
-=head2 Configuring lynx or ncftp for going through a firewall
-
-If you can go through your firewall with e.g. lynx, presumably with a
-command such as
-
- /usr/local/bin/lynx -pscott:tiger
-
-then you would configure CPAN.pm with the command
-
- o conf lynx "/usr/local/bin/lynx -pscott:tiger"
-
-That's all. Similarly for ncftp or ftp, you would configure something
-like
-
- o conf ncftp "/usr/bin/ncftp -f /home/scott/ncftplogin.cfg"
-
-Your milage may vary...
-
-=head1 FAQ
-
-=over
-
-=item 1)
-
-I installed a new version of module X but CPAN keeps saying,
-I have the old version installed
-
-Most probably you B<do> have the old version installed. This can
-happen if a module installs itself into a different directory in the
-@INC path than it was previously installed. This is not really a
-CPAN.pm problem, you would have the same problem when installing the
-module manually. The easiest way to prevent this behaviour is to add
-the argument C<UNINST=1> to the C<make install> call, and that is why
-many people add this argument permanently by configuring
-
- o conf make_install_arg UNINST=1
-
-=item 2)
-
-So why is UNINST=1 not the default?
-
-Because there are people who have their precise expectations about who
-may install where in the @INC path and who uses which @INC array. In
-fine tuned environments C<UNINST=1> can cause damage.
-
-=item 3)
-
-I want to clean up my mess, and install a new perl along with
-all modules I have. How do I go about it?
-
-Run the autobundle command for your old perl and optionally rename the
-resulting bundle file (e.g. Bundle/mybundle.pm), install the new perl
-with the Configure option prefix, e.g.
-
- ./Configure -Dprefix=/usr/local/perl-5.6.78.9
-
-Install the bundle file you produced in the first step with something like
-
- cpan> install Bundle::mybundle
-
-and you're done.
-
-=item 4)
-
-When I install bundles or multiple modules with one command
-there is too much output to keep track of.
-
-You may want to configure something like
-
- o conf make_arg "| tee -ai /root/.cpan/logs/make.out"
- o conf make_install_arg "| tee -ai /root/.cpan/logs/make_install.out"
-
-so that STDOUT is captured in a file for later inspection.
-
-
-=item 5)
-
-I am not root, how can I install a module in a personal directory?
-
-You will most probably like something like this:
-
- o conf makepl_arg "LIB=~/myperl/lib \
- INSTALLMAN1DIR=~/myperl/man/man1 \
- INSTALLMAN3DIR=~/myperl/man/man3"
- install Sybase::Sybperl
-
-You can make this setting permanent like all C<o conf> settings with
-C<o conf commit>.
-
-You will have to add ~/myperl/man to the MANPATH environment variable
-and also tell your perl programs to look into ~/myperl/lib, e.g. by
-including
-
- use lib "$ENV{HOME}/myperl/lib";
-
-or setting the PERL5LIB environment variable.
-
-Another thing you should bear in mind is that the UNINST parameter
-should never be set if you are not root.
-
-=item 6)
-
-How to get a package, unwrap it, and make a change before building it?
-
- look Sybase::Sybperl
-
-=item 7)
-
-I installed a Bundle and had a couple of fails. When I
-retried, everything resolved nicely. Can this be fixed to work
-on first try?
-
-The reason for this is that CPAN does not know the dependencies of all
-modules when it starts out. To decide about the additional items to
-install, it just uses data found in the generated Makefile. An
-undetected missing piece breaks the process. But it may well be that
-your Bundle installs some prerequisite later than some depending item
-and thus your second try is able to resolve everything. Please note,
-CPAN.pm does not know the dependency tree in advance and cannot sort
-the queue of things to install in a topologically correct order. It
-resolves perfectly well IFF all modules declare the prerequisites
-correctly with the PREREQ_PM attribute to MakeMaker. For bundles which
-fail and you need to install often, it is recommended sort the Bundle
-definition file manually. It is planned to improve the metadata
-situation for dependencies on CPAN in general, but this will still
-take some time.
-
-=item 8)
-
-In our intranet we have many modules for internal use. How
-can I integrate these modules with CPAN.pm but without uploading
-the modules to CPAN?
-
-Have a look at the CPAN::Site module.
-
-=item 9)
-
-When I run CPAN's shell, I get error msg about line 1 to 4,
-setting meta input/output via the /etc/inputrc file.
-
-Some versions of readline are picky about capitalization in the
-/etc/inputrc file and specifically RedHat 6.2 comes with a
-/etc/inputrc that contains the word C<on> in lowercase. Change the
-occurrences of C<on> to C<On> and the bug should disappear.
-
-=item 10)
-
-Some authors have strange characters in their names.
-
-Internally CPAN.pm uses the UTF-8 charset. If your terminal is
-expecting ISO-8859-1 charset, a converter can be activated by setting
-term_is_latin to a true value in your config file. One way of doing so
-would be
-
- cpan> ! $CPAN::Config->{term_is_latin}=1
-
-Extended support for converters will be made available as soon as perl
-becomes stable with regard to charset issues.
-
-=back
-
-=head1 BUGS
-
-We should give coverage for B<all> of the CPAN and not just the PAUSE
-part, right? In this discussion CPAN and PAUSE have become equal --
-but they are not. PAUSE is authors/, modules/ and scripts/. CPAN is
-PAUSE plus the clpa/, doc/, misc/, ports/, and src/.
-
-Future development should be directed towards a better integration of
-the other parts.
-
-If a Makefile.PL requires special customization of libraries, prompts
-the user for special input, etc. then you may find CPAN is not able to
-build the distribution. In that case, you should attempt the
-traditional method of building a Perl module package from a shell.
-
-=head1 AUTHOR
-
-Andreas Koenig E<lt>andreas.koenig@anima.deE<gt>
-
-=head1 TRANSLATIONS
-
-Kawai,Takanori provides a Japanese translation of this manpage at
-http://member.nifty.ne.jp/hippo2000/perltips/CPAN.htm
-
-=head1 SEE ALSO
-
-perl(1), CPAN::Nox(3)
-
-=cut
-
diff --git a/contrib/perl5/lib/CPAN/FirstTime.pm b/contrib/perl5/lib/CPAN/FirstTime.pm
deleted file mode 100644
index 0429db1..0000000
--- a/contrib/perl5/lib/CPAN/FirstTime.pm
+++ /dev/null
@@ -1,671 +0,0 @@
-# -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*-
-package CPAN::Mirrored::By;
-
-sub new {
- my($self,@arg) = @_;
- bless [@arg], $self;
-}
-sub continent { shift->[0] }
-sub country { shift->[1] }
-sub url { shift->[2] }
-
-package CPAN::FirstTime;
-
-use strict;
-use ExtUtils::MakeMaker qw(prompt);
-use FileHandle ();
-use File::Basename ();
-use File::Path ();
-use vars qw($VERSION);
-$VERSION = substr q$Revision: 1.53 $, 10;
-
-=head1 NAME
-
-CPAN::FirstTime - Utility for CPAN::Config file Initialization
-
-=head1 SYNOPSIS
-
-CPAN::FirstTime::init()
-
-=head1 DESCRIPTION
-
-The init routine asks a few questions and writes a CPAN::Config
-file. Nothing special.
-
-=cut
-
-
-sub init {
- my($configpm) = @_;
- use Config;
- unless ($CPAN::VERSION) {
- require CPAN::Nox;
- }
- eval {require CPAN::Config;};
- $CPAN::Config ||= {};
- local($/) = "\n";
- local($\) = "";
- local($|) = 1;
-
- my($ans,$default,$local,$cont,$url,$expected_size);
-
- #
- # Files, directories
- #
-
- print qq[
-
-CPAN is the world-wide archive of perl resources. It consists of about
-100 sites that all replicate the same contents all around the globe.
-Many countries have at least one CPAN site already. The resources
-found on CPAN are easily accessible with the CPAN.pm module. If you
-want to use CPAN.pm, you have to configure it properly.
-
-If you do not want to enter a dialog now, you can answer 'no' to this
-question and I\'ll try to autoconfigure. (Note: you can revisit this
-dialog anytime later by typing 'o conf init' at the cpan prompt.)
-
-];
-
- my $manual_conf =
- ExtUtils::MakeMaker::prompt("Are you ready for manual configuration?",
- "yes");
- my $fastread;
- {
- local $^W;
- if ($manual_conf =~ /^\s*y/i) {
- $fastread = 0;
- *prompt = \&ExtUtils::MakeMaker::prompt;
- } else {
- $fastread = 1;
- $CPAN::Config->{urllist} ||= [];
- # prototype should match that of &MakeMaker::prompt
- *prompt = sub ($;$) {
- my($q,$a) = @_;
- my($ret) = defined $a ? $a : "";
- printf qq{%s [%s]\n\n}, $q, $ret;
- $ret;
- };
- }
- }
- print qq{
-
-The following questions are intended to help you with the
-configuration. The CPAN module needs a directory of its own to cache
-important index files and maybe keep a temporary mirror of CPAN files.
-This may be a site-wide directory or a personal directory.
-
-};
-
- my $cpan_home = $CPAN::Config->{cpan_home} || MM->catdir($ENV{HOME}, ".cpan");
- if (-d $cpan_home) {
- print qq{
-
-I see you already have a directory
- $cpan_home
-Shall we use it as the general CPAN build and cache directory?
-
-};
- } else {
- print qq{
-
-First of all, I\'d like to create this directory. Where?
-
-};
- }
-
- $default = $cpan_home;
- while ($ans = prompt("CPAN build and cache directory?",$default)) {
- eval { File::Path::mkpath($ans); }; # dies if it can't
- if ($@) {
- warn "Couldn't create directory $ans.
-Please retry.\n";
- next;
- }
- if (-d $ans && -w _) {
- last;
- } else {
- warn "Couldn't find directory $ans
- or directory is not writable. Please retry.\n";
- }
- }
- $CPAN::Config->{cpan_home} = $ans;
-
- print qq{
-
-If you want, I can keep the source files after a build in the cpan
-home directory. If you choose so then future builds will take the
-files from there. If you don\'t want to keep them, answer 0 to the
-next question.
-
-};
-
- $CPAN::Config->{keep_source_where} = MM->catdir($CPAN::Config->{cpan_home},"sources");
- $CPAN::Config->{build_dir} = MM->catdir($CPAN::Config->{cpan_home},"build");
-
- #
- # Cache size, Index expire
- #
-
- print qq{
-
-How big should the disk cache be for keeping the build directories
-with all the intermediate files\?
-
-};
-
- $default = $CPAN::Config->{build_cache} || 10;
- $ans = prompt("Cache size for build directory (in MB)?", $default);
- $CPAN::Config->{build_cache} = $ans;
-
- # XXX This the time when we refetch the index files (in days)
- $CPAN::Config->{'index_expire'} = 1;
-
- print qq{
-
-By default, each time the CPAN module is started, cache scanning
-is performed to keep the cache size in sync. To prevent from this,
-disable the cache scanning with 'never'.
-
-};
-
- $default = $CPAN::Config->{scan_cache} || 'atstart';
- do {
- $ans = prompt("Perform cache scanning (atstart or never)?", $default);
- } while ($ans ne 'atstart' && $ans ne 'never');
- $CPAN::Config->{scan_cache} = $ans;
-
- #
- # cache_metadata
- #
- print qq{
-
-To considerably speed up the initial CPAN shell startup, it is
-possible to use Storable to create a cache of metadata. If Storable
-is not available, the normal index mechanism will be used.
-
-};
-
- defined($default = $CPAN::Config->{cache_metadata}) or $default = 1;
- do {
- $ans = prompt("Cache metadata (yes/no)?", ($default ? 'yes' : 'no'));
- } while ($ans !~ /^\s*[yn]/i);
- $CPAN::Config->{cache_metadata} = ($ans =~ /^\s*y/i ? 1 : 0);
-
- #
- # term_is_latin
- #
- print qq{
-
-The next option deals with the charset your terminal supports. In
-general CPAN is English speaking territory, thus the charset does not
-matter much, but some of the aliens out there who upload their
-software to CPAN bear names that are outside the ASCII range. If your
-terminal supports UTF-8, you say no to the next question, if it
-supports ISO-8859-1 (also known as LATIN1) then you say yes, and if it
-supports neither nor, your answer does not matter, you will not be
-able to read the names of some authors anyway. If you answer no, names
-will be output in UTF-8.
-
-};
-
- defined($default = $CPAN::Config->{term_is_latin}) or $default = 1;
- do {
- $ans = prompt("Your terminal expects ISO-8859-1 (yes/no)?",
- ($default ? 'yes' : 'no'));
- } while ($ans !~ /^\s*[yn]/i);
- $CPAN::Config->{term_is_latin} = ($ans =~ /^\s*y/i ? 1 : 0);
-
- #
- # prerequisites_policy
- # Do we follow PREREQ_PM?
- #
- print qq{
-
-The CPAN module can detect when a module that which you are trying to
-build depends on prerequisites. If this happens, it can build the
-prerequisites for you automatically ('follow'), ask you for
-confirmation ('ask'), or just ignore them ('ignore'). Please set your
-policy to one of the three values.
-
-};
-
- $default = $CPAN::Config->{prerequisites_policy} || 'ask';
- do {
- $ans =
- prompt("Policy on building prerequisites (follow, ask or ignore)?",
- $default);
- } while ($ans ne 'follow' && $ans ne 'ask' && $ans ne 'ignore');
- $CPAN::Config->{prerequisites_policy} = $ans;
-
- #
- # External programs
- #
-
- print qq{
-
-The CPAN module will need a few external programs to work properly.
-Please correct me, if I guess the wrong path for a program. Don\'t
-panic if you do not have some of them, just press ENTER for those. To
-disable the use of a download program, you can type a space followed
-by ENTER.
-
-};
-
- my $old_warn = $^W;
- local $^W if $^O eq 'MacOS';
- my(@path) = split /$Config{'path_sep'}/, $ENV{'PATH'};
- local $^W = $old_warn;
- my $progname;
- for $progname (qw/gzip tar unzip make lynx wget ncftpget ncftp ftp/){
- if ($^O eq 'MacOS') {
- $CPAN::Config->{$progname} = 'not_here';
- next;
- }
- my $progcall = $progname;
- # we don't need ncftp if we have ncftpget
- next if $progname eq "ncftp" && $CPAN::Config->{ncftpget} gt " ";
- my $path = $CPAN::Config->{$progname}
- || $Config::Config{$progname}
- || "";
- if (MM->file_name_is_absolute($path)) {
- # testing existence is not good enough, some have these exe
- # extensions
-
- # warn "Warning: configured $path does not exist\n" unless -e $path;
- # $path = "";
- } else {
- $path = '';
- }
- unless ($path) {
- # e.g. make -> nmake
- $progcall = $Config::Config{$progname} if $Config::Config{$progname};
- }
-
- $path ||= find_exe($progcall,[@path]);
- warn "Warning: $progcall not found in PATH\n" unless
- $path; # not -e $path, because find_exe already checked that
- $ans = prompt("Where is your $progname program?",$path) || $path;
- $CPAN::Config->{$progname} = $ans;
- }
- my $path = $CPAN::Config->{'pager'} ||
- $ENV{PAGER} || find_exe("less",[@path]) ||
- find_exe("more",[@path]) || ($^O eq 'MacOS' ? $ENV{EDITOR} : 0 )
- || "more";
- $ans = prompt("What is your favorite pager program?",$path);
- $CPAN::Config->{'pager'} = $ans;
- $path = $CPAN::Config->{'shell'};
- if (MM->file_name_is_absolute($path)) {
- warn "Warning: configured $path does not exist\n" unless -e $path;
- $path = "";
- }
- $path ||= $ENV{SHELL};
- if ($^O eq 'MacOS') {
- $CPAN::Config->{'shell'} = 'not_here';
- } else {
- $path =~ s,\\,/,g if $^O eq 'os2'; # Cosmetic only
- $ans = prompt("What is your favorite shell?",$path);
- $CPAN::Config->{'shell'} = $ans;
- }
-
- #
- # Arguments to make etc.
- #
-
- print qq{
-
-Every Makefile.PL is run by perl in a separate process. Likewise we
-run \'make\' and \'make install\' in processes. If you have any
-parameters \(e.g. PREFIX, LIB, UNINST or the like\) you want to pass
-to the calls, please specify them here.
-
-If you don\'t understand this question, just press ENTER.
-
-};
-
- $default = $CPAN::Config->{makepl_arg} || "";
- $CPAN::Config->{makepl_arg} =
- prompt("Parameters for the 'perl Makefile.PL' command?
-Typical frequently used settings:
-
- POLLUTE=1 increasing backwards compatibility
- LIB=~/perl non-root users (please see manual for more hints)
-
-Your choice: ",$default);
- $default = $CPAN::Config->{make_arg} || "";
- $CPAN::Config->{make_arg} = prompt("Parameters for the 'make' command?
-Typical frequently used setting:
-
- -j3 dual processor system
-
-Your choice: ",$default);
-
- $default = $CPAN::Config->{make_install_arg} || $CPAN::Config->{make_arg} || "";
- $CPAN::Config->{make_install_arg} =
- prompt("Parameters for the 'make install' command?
-Typical frequently used setting:
-
- UNINST=1 to always uninstall potentially conflicting files
-
-Your choice: ",$default);
-
- #
- # Alarm period
- #
-
- print qq{
-
-Sometimes you may wish to leave the processes run by CPAN alone
-without caring about them. As sometimes the Makefile.PL contains
-question you\'re expected to answer, you can set a timer that will
-kill a 'perl Makefile.PL' process after the specified time in seconds.
-
-If you set this value to 0, these processes will wait forever. This is
-the default and recommended setting.
-
-};
-
- $default = $CPAN::Config->{inactivity_timeout} || 0;
- $CPAN::Config->{inactivity_timeout} =
- prompt("Timeout for inactivity during Makefile.PL?",$default);
-
- # Proxies
-
- print qq{
-
-If you\'re accessing the net via proxies, you can specify them in the
-CPAN configuration or via environment variables. The variable in
-the \$CPAN::Config takes precedence.
-
-};
-
- for (qw/ftp_proxy http_proxy no_proxy/) {
- $default = $CPAN::Config->{$_} || $ENV{$_};
- $CPAN::Config->{$_} = prompt("Your $_?",$default);
- }
-
- if ($CPAN::Config->{ftp_proxy} ||
- $CPAN::Config->{http_proxy}) {
- $default = $CPAN::Config->{proxy_user} || $CPAN::LWP::UserAgent::USER;
- print qq{
-
-If your proxy is an authenticating proxy, you can store your username
-permanently. If you do not want that, just press RETURN. You will then
-be asked for your username in every future session.
-
-};
- if ($CPAN::Config->{proxy_user} = prompt("Your proxy user id?",$default)) {
- print qq{
-
-Your password for the authenticating proxy can also be stored
-permanently on disk. If this violates your security policy, just press
-RETURN. You will then be asked for the password in every future
-session.
-
-};
-
- if ($CPAN::META->has_inst("Term::ReadKey")) {
- Term::ReadKey::ReadMode("noecho");
- } else {
- print qq{
-
-Warning: Term::ReadKey seems not to be available, your password will
-be echoed to the terminal!
-
-};
- }
- $CPAN::Config->{proxy_pass} = prompt("Your proxy password?");
- if ($CPAN::META->has_inst("Term::ReadKey")) {
- Term::ReadKey::ReadMode("restore");
- }
- $CPAN::Frontend->myprint("\n\n");
- }
- }
-
- #
- # MIRRORED.BY
- #
-
- conf_sites() unless $fastread;
-
- unless (@{$CPAN::Config->{'wait_list'}||[]}) {
- print qq{
-
-WAIT support is available as a Plugin. You need the CPAN::WAIT module
-to actually use it. But we need to know your favorite WAIT server. If
-you don\'t know a WAIT server near you, just press ENTER.
-
-};
- $default = "wait://ls6.informatik.uni-dortmund.de:1404";
- $ans = prompt("Your favorite WAIT server?\n ",$default);
- push @{$CPAN::Config->{'wait_list'}}, $ans;
- }
-
- # We don't ask that now, it will be noticed in time, won't it?
- $CPAN::Config->{'inhibit_startup_message'} = 0;
- $CPAN::Config->{'getcwd'} = 'cwd';
-
- print "\n\n";
- CPAN::Config->commit($configpm);
-}
-
-sub conf_sites {
- my $m = 'MIRRORED.BY';
- my $mby = MM->catfile($CPAN::Config->{keep_source_where},$m);
- File::Path::mkpath(File::Basename::dirname($mby));
- if (-f $mby && -f $m && -M $m < -M $mby) {
- require File::Copy;
- File::Copy::copy($m,$mby) or die "Could not update $mby: $!";
- }
- my $loopcount = 0;
- local $^T = time;
- my $overwrite_local = 0;
- if ($mby && -f $mby && -M _ <= 60 && -s _ > 0) {
- my $mtime = localtime((stat _)[9]);
- my $prompt = qq{Found $mby as of $mtime
-
-I\'d use that as a database of CPAN sites. If that is OK for you,
-please answer 'y', but if you want me to get a new database now,
-please answer 'n' to the following question.
-
-Shall I use the local database in $mby?};
- my $ans = prompt($prompt,"y");
- $overwrite_local = 1 unless $ans =~ /^y/i;
- }
- while ($mby) {
- if ($overwrite_local) {
- print qq{Trying to overwrite $mby
-};
- $mby = CPAN::FTP->localize($m,$mby,3);
- $overwrite_local = 0;
- } elsif ( ! -f $mby ){
- print qq{You have no $mby
- I\'m trying to fetch one
-};
- $mby = CPAN::FTP->localize($m,$mby,3);
- } elsif (-M $mby > 60 && $loopcount == 0) {
- print qq{Your $mby is older than 60 days,
- I\'m trying to fetch one
-};
- $mby = CPAN::FTP->localize($m,$mby,3);
- $loopcount++;
- } elsif (-s $mby == 0) {
- print qq{You have an empty $mby,
- I\'m trying to fetch one
-};
- $mby = CPAN::FTP->localize($m,$mby,3);
- } else {
- last;
- }
- }
- read_mirrored_by($mby);
- bring_your_own();
-}
-
-sub find_exe {
- my($exe,$path) = @_;
- my($dir);
- #warn "in find_exe exe[$exe] path[@$path]";
- for $dir (@$path) {
- my $abs = MM->catfile($dir,$exe);
- if (($abs = MM->maybe_command($abs))) {
- return $abs;
- }
- }
-}
-
-sub picklist {
- my($items,$prompt,$default,$require_nonempty,$empty_warning)=@_;
- $default ||= '';
-
- my ($item, $i);
- for $item (@$items) {
- printf "(%d) %s\n", ++$i, $item;
- }
-
- my @nums;
- while (1) {
- my $num = prompt($prompt,$default);
- @nums = split (' ', $num);
- (warn "invalid items entered, try again\n"), next
- if grep (/\D/ || $_ < 1 || $_ > $i, @nums);
- if ($require_nonempty) {
- (warn "$empty_warning\n"), next
- unless @nums;
- }
- last;
- }
- print "\n";
- for (@nums) { $_-- }
- @{$items}[@nums];
-}
-
-sub read_mirrored_by {
- my $local = shift or return;
- my(%all,$url,$expected_size,$default,$ans,$host,$dst,$country,$continent,@location);
- my $fh = FileHandle->new;
- $fh->open($local) or die "Couldn't open $local: $!";
- local $/ = "\012";
- while (<$fh>) {
- ($host) = /^([\w\.\-]+)/ unless defined $host;
- next unless defined $host;
- next unless /\s+dst_(dst|location)/;
- /location\s+=\s+\"([^\"]+)/ and @location = (split /\s*,\s*/, $1) and
- ($continent, $country) = @location[-1,-2];
- $continent =~ s/\s\(.*//;
- $continent =~ s/\W+$//; # if Jarkko doesn't know latitude/longitude
- /dst_dst\s+=\s+\"([^\"]+)/ and $dst = $1;
- next unless $host && $dst && $continent && $country;
- $all{$continent}{$country}{$dst} = CPAN::Mirrored::By->new($continent,$country,$dst);
- undef $host;
- $dst=$continent=$country="";
- }
- $fh->close;
- $CPAN::Config->{urllist} ||= [];
- my(@previous_urls);
- if (@previous_urls = @{$CPAN::Config->{urllist}}) {
- $CPAN::Config->{urllist} = [];
- }
-
- print qq{
-
-Now we need to know where your favorite CPAN sites are located. Push
-a few sites onto the array (just in case the first on the array won\'t
-work). If you are mirroring CPAN to your local workstation, specify a
-file: URL.
-
-First, pick a nearby continent and country (you can pick several of
-each, separated by spaces, or none if you just want to keep your
-existing selections). Then, you will be presented with a list of URLs
-of CPAN mirrors in the countries you selected, along with previously
-selected URLs. Select some of those URLs, or just keep the old list.
-Finally, you will be prompted for any extra URLs -- file:, ftp:, or
-http: -- that host a CPAN mirror.
-
-};
-
- my (@cont, $cont, %cont, @countries, @urls, %seen);
- my $no_previous_warn =
- "Sorry! since you don't have any existing picks, you must make a\n" .
- "geographic selection.";
- @cont = picklist([sort keys %all],
- "Select your continent (or several nearby continents)",
- '',
- ! @previous_urls,
- $no_previous_warn);
-
-
- foreach $cont (@cont) {
- my @c = sort keys %{$all{$cont}};
- @cont{@c} = map ($cont, 0..$#c);
- @c = map ("$_ ($cont)", @c) if @cont > 1;
- push (@countries, @c);
- }
-
- if (@countries) {
- @countries = picklist (\@countries,
- "Select your country (or several nearby countries)",
- '',
- ! @previous_urls,
- $no_previous_warn);
- %seen = map (($_ => 1), @previous_urls);
- # hmmm, should take list of defaults from CPAN::Config->{'urllist'}...
- foreach $country (@countries) {
- (my $bare_country = $country) =~ s/ \(.*\)//;
- my @u = sort keys %{$all{$cont{$bare_country}}{$bare_country}};
- @u = grep (! $seen{$_}, @u);
- @u = map ("$_ ($bare_country)", @u)
- if @countries > 1;
- push (@urls, @u);
- }
- }
- push (@urls, map ("$_ (previous pick)", @previous_urls));
- my $prompt = "Select as many URLs as you like,
-put them on one line, separated by blanks";
- if (@previous_urls) {
- $default = join (' ', ((scalar @urls) - (scalar @previous_urls) + 1) ..
- (scalar @urls));
- $prompt .= "\n(or just hit RETURN to keep your previous picks)";
- }
-
- @urls = picklist (\@urls, $prompt, $default);
- foreach (@urls) { s/ \(.*\)//; }
- push @{$CPAN::Config->{urllist}}, @urls;
-}
-
-sub bring_your_own {
- my %seen = map (($_ => 1), @{$CPAN::Config->{urllist}});
- my($ans,@urls);
- do {
- my $prompt = "Enter another URL or RETURN to quit:";
- unless (%seen) {
- $prompt = qq{CPAN.pm needs at least one URL where it can fetch CPAN files from.
-
-Please enter your CPAN site:};
- }
- $ans = prompt ($prompt, "");
-
- if ($ans) {
- $ans =~ s|/?\z|/|; # has to end with one slash
- $ans = "file:$ans" unless $ans =~ /:/; # without a scheme is a file:
- if ($ans =~ /^\w+:\/./) {
- push @urls, $ans unless $seen{$ans}++;
- } else {
- printf(qq{"%s" doesn\'t look like an URL at first sight.
-I\'ll ignore it for now.
-You can add it to your %s
-later if you\'re sure it\'s right.\n},
- $ans,
- $INC{'CPAN/MyConfig.pm'} || $INC{'CPAN/Config.pm'} || "configuration file",
- );
- }
- }
- } while $ans || !%seen;
-
- push @{$CPAN::Config->{urllist}}, @urls;
- # xxx delete or comment these out when you're happy that it works
- print "New set of picks:\n";
- map { print " $_\n" } @{$CPAN::Config->{urllist}};
-}
-
-1;
diff --git a/contrib/perl5/lib/CPAN/Nox.pm b/contrib/perl5/lib/CPAN/Nox.pm
deleted file mode 100644
index 8b59ca0..0000000
--- a/contrib/perl5/lib/CPAN/Nox.pm
+++ /dev/null
@@ -1,44 +0,0 @@
-package CPAN::Nox;
-use strict;
-use vars qw($VERSION @EXPORT);
-
-BEGIN{
- $CPAN::Suppress_readline=1 unless defined $CPAN::term;
-}
-
-use base 'Exporter';
-use CPAN;
-
-$VERSION = "1.00";
-$CPAN::META->has_inst('MD5','no');
-$CPAN::META->has_inst('LWP','no');
-$CPAN::META->has_inst('Compress::Zlib','no');
-@EXPORT = @CPAN::EXPORT;
-
-*AUTOLOAD = \&CPAN::AUTOLOAD;
-
-__END__
-
-=head1 NAME
-
-CPAN::Nox - Wrapper around CPAN.pm without using any XS module
-
-=head1 SYNOPSIS
-
-Interactive mode:
-
- perl -MCPAN::Nox -e shell;
-
-=head1 DESCRIPTION
-
-This package has the same functionality as CPAN.pm, but tries to
-prevent the usage of compiled extensions during it's own
-execution. It's primary purpose is a rescue in case you upgraded perl
-and broke binary compatibility somehow.
-
-=head1 SEE ALSO
-
-CPAN(3)
-
-=cut
-
diff --git a/contrib/perl5/lib/Carp.pm b/contrib/perl5/lib/Carp.pm
deleted file mode 100644
index 43524dd..0000000
--- a/contrib/perl5/lib/Carp.pm
+++ /dev/null
@@ -1,124 +0,0 @@
-package Carp;
-
-=head1 NAME
-
-carp - warn of errors (from perspective of caller)
-
-cluck - warn of errors with stack backtrace
- (not exported by default)
-
-croak - die of errors (from perspective of caller)
-
-confess - die of errors with stack backtrace
-
-=head1 SYNOPSIS
-
- use Carp;
- croak "We're outta here!";
-
- use Carp qw(cluck);
- cluck "This is how we got here!";
-
-=head1 DESCRIPTION
-
-The Carp routines are useful in your own modules because
-they act like die() or warn(), but report where the error
-was in the code they were called from. Thus if you have a
-routine Foo() that has a carp() in it, then the carp()
-will report the error as occurring where Foo() was called,
-not where carp() was called.
-
-=head2 Forcing a Stack Trace
-
-As a debugging aid, you can force Carp to treat a croak as a confess
-and a carp as a cluck across I<all> modules. In other words, force a
-detailed stack trace to be given. This can be very helpful when trying
-to understand why, or from where, a warning or error is being generated.
-
-This feature is enabled by 'importing' the non-existent symbol
-'verbose'. You would typically enable it by saying
-
- perl -MCarp=verbose script.pl
-
-or by including the string C<MCarp=verbose> in the L<PERL5OPT>
-environment variable.
-
-=head1 BUGS
-
-The Carp routines don't handle exception objects currently.
-If called with a first argument that is a reference, they simply
-call die() or warn(), as appropriate.
-
-=cut
-
-# This package is heavily used. Be small. Be fast. Be good.
-
-# Comments added by Andy Wardley <abw@kfs.org> 09-Apr-98, based on an
-# _almost_ complete understanding of the package. Corrections and
-# comments are welcome.
-
-# The $CarpLevel variable can be set to "strip off" extra caller levels for
-# those times when Carp calls are buried inside other functions. The
-# $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval
-# text and function arguments should be formatted when printed.
-
-$CarpLevel = 0; # How many extra package levels to skip on carp.
-$MaxEvalLen = 0; # How much eval '...text...' to show. 0 = all.
-$MaxArgLen = 64; # How much of each argument to print. 0 = all.
-$MaxArgNums = 8; # How many arguments to print. 0 = all.
-$Verbose = 0; # If true then make shortmess call longmess instead
-
-require Exporter;
-@ISA = ('Exporter');
-@EXPORT = qw(confess croak carp);
-@EXPORT_OK = qw(cluck verbose);
-@EXPORT_FAIL = qw(verbose); # hook to enable verbose mode
-
-
-# if the caller specifies verbose usage ("perl -MCarp=verbose script.pl")
-# then the following method will be called by the Exporter which knows
-# to do this thanks to @EXPORT_FAIL, above. $_[1] will contain the word
-# 'verbose'.
-
-sub export_fail {
- shift;
- $Verbose = shift if $_[0] eq 'verbose';
- return @_;
-}
-
-
-# longmess() crawls all the way up the stack reporting on all the function
-# calls made. The error string, $error, is originally constructed from the
-# arguments passed into longmess() via confess(), cluck() or shortmess().
-# This gets appended with the stack trace messages which are generated for
-# each function call on the stack.
-
-sub longmess {
- { local $@; require Carp::Heavy; } # XXX fix require to not clear $@?
- goto &longmess_heavy;
-}
-
-
-# shortmess() is called by carp() and croak() to skip all the way up to
-# the top-level caller's package and report the error from there. confess()
-# and cluck() generate a full stack trace so they call longmess() to
-# generate that. In verbose mode shortmess() calls longmess() so
-# you always get a stack trace
-
-sub shortmess { # Short-circuit &longmess if called via multiple packages
- { local $@; require Carp::Heavy; } # XXX fix require to not clear $@?
- goto &shortmess_heavy;
-}
-
-
-# the following four functions call longmess() or shortmess() depending on
-# whether they should generate a full stack trace (confess() and cluck())
-# or simply report the caller's package (croak() and carp()), respectively.
-# confess() and croak() die, carp() and cluck() warn.
-
-sub croak { die shortmess @_ }
-sub confess { die longmess @_ }
-sub carp { warn shortmess @_ }
-sub cluck { warn longmess @_ }
-
-1;
diff --git a/contrib/perl5/lib/Carp/Heavy.pm b/contrib/perl5/lib/Carp/Heavy.pm
deleted file mode 100644
index 4d12bd7..0000000
--- a/contrib/perl5/lib/Carp/Heavy.pm
+++ /dev/null
@@ -1,247 +0,0 @@
-package Carp;
-
-=head1 NAME
-
-Carp::Heavy - Carp guts
-
-=head1 SYNOPIS
-
-(internal use only)
-
-=head1 DESCRIPTION
-
-No user-serviceable parts inside.
-
-=cut
-
-# This package is heavily used. Be small. Be fast. Be good.
-
-# Comments added by Andy Wardley <abw@kfs.org> 09-Apr-98, based on an
-# _almost_ complete understanding of the package. Corrections and
-# comments are welcome.
-
-# longmess() crawls all the way up the stack reporting on all the function
-# calls made. The error string, $error, is originally constructed from the
-# arguments passed into longmess() via confess(), cluck() or shortmess().
-# This gets appended with the stack trace messages which are generated for
-# each function call on the stack.
-
-sub longmess_heavy {
- return @_ if ref $_[0];
- my $error = join '', @_;
- my $mess = "";
- my $i = 1 + $CarpLevel;
- my ($pack,$file,$line,$sub,$hargs,$eval,$require);
- my (@a);
- #
- # crawl up the stack....
- #
- while (do { { package DB; @a = caller($i++) } } ) {
- # get copies of the variables returned from caller()
- ($pack,$file,$line,$sub,$hargs,undef,$eval,$require) = @a;
- #
- # if the $error error string is newline terminated then it
- # is copied into $mess. Otherwise, $mess gets set (at the end of
- # the 'else' section below) to one of two things. The first time
- # through, it is set to the "$error at $file line $line" message.
- # $error is then set to 'called' which triggers subsequent loop
- # iterations to append $sub to $mess before appending the "$error
- # at $file line $line" which now actually reads "called at $file line
- # $line". Thus, the stack trace message is constructed:
- #
- # first time: $mess = $error at $file line $line
- # subsequent times: $mess .= $sub $error at $file line $line
- # ^^^^^^
- # "called"
- if ($error =~ m/\n$/) {
- $mess .= $error;
- } else {
- # Build a string, $sub, which names the sub-routine called.
- # This may also be "require ...", "eval '...' or "eval {...}"
- if (defined $eval) {
- if ($require) {
- $sub = "require $eval";
- } else {
- $eval =~ s/([\\\'])/\\$1/g;
- if ($MaxEvalLen && length($eval) > $MaxEvalLen) {
- substr($eval,$MaxEvalLen) = '...';
- }
- $sub = "eval '$eval'";
- }
- } elsif ($sub eq '(eval)') {
- $sub = 'eval {...}';
- }
- # if there are any arguments in the sub-routine call, format
- # them according to the format variables defined earlier in
- # this file and join them onto the $sub sub-routine string
- if ($hargs) {
- # we may trash some of the args so we take a copy
- @a = @DB::args; # must get local copy of args
- # don't print any more than $MaxArgNums
- if ($MaxArgNums and @a > $MaxArgNums) {
- # cap the length of $#a and set the last element to '...'
- $#a = $MaxArgNums;
- $a[$#a] = "...";
- }
- for (@a) {
- # set args to the string "undef" if undefined
- $_ = "undef", next unless defined $_;
- if (ref $_) {
- # force reference to string representation
- $_ .= '';
- s/'/\\'/g;
- }
- else {
- s/'/\\'/g;
- # terminate the string early with '...' if too long
- substr($_,$MaxArgLen) = '...'
- if $MaxArgLen and $MaxArgLen < length;
- }
- # 'quote' arg unless it looks like a number
- $_ = "'$_'" unless /^-?[\d.]+$/;
- # print high-end chars as 'M-<char>'
- s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
- # print remaining control chars as ^<char>
- s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
- }
- # append ('all', 'the', 'arguments') to the $sub string
- $sub .= '(' . join(', ', @a) . ')';
- }
- # here's where the error message, $mess, gets constructed
- $mess .= "\t$sub " if $error eq "called";
- $mess .= "$error at $file line $line";
- if (defined &Thread::tid) {
- my $tid = Thread->self->tid;
- $mess .= " thread $tid" if $tid;
- }
- $mess .= "\n";
- }
- # we don't need to print the actual error message again so we can
- # change this to "called" so that the string "$error at $file line
- # $line" makes sense as "called at $file line $line".
- $error = "called";
- }
- $mess || $error;
-}
-
-
-# ancestors() returns the complete set of ancestors of a module
-
-sub ancestors($$);
-
-sub ancestors($$){
- my( $pack, $href ) = @_;
- if( @{"${pack}::ISA"} ){
- my $risa = \@{"${pack}::ISA"};
- my %tree = ();
- @tree{@$risa} = ();
- foreach my $mod ( @$risa ){
- # visit ancestors - if not already in the gallery
- if( ! defined( $$href{$mod} ) ){
- my @ancs = ancestors( $mod, $href );
- @tree{@ancs} = ();
- }
- }
- return ( keys( %tree ) );
- } else {
- return ();
- }
-}
-
-
-# shortmess() is called by carp() and croak() to skip all the way up to
-# the top-level caller's package and report the error from there. confess()
-# and cluck() generate a full stack trace so they call longmess() to
-# generate that. In verbose mode shortmess() calls longmess() so
-# you always get a stack trace
-
-sub shortmess_heavy { # Short-circuit &longmess if called via multiple packages
- goto &longmess_heavy if $Verbose;
- return @_ if ref $_[0];
- my $error = join '', @_;
- my ($prevpack) = caller(1);
- my $extra = $CarpLevel;
-
- my @Clans = ( $prevpack );
- my $i = 2;
- my ($pack,$file,$line);
- # when reporting an error, we want to report it from the context of the
- # calling package. So what is the calling package? Within a module,
- # there may be many calls between methods and perhaps between sub-classes
- # and super-classes, but the user isn't interested in what happens
- # inside the package. We start by building a hash array which keeps
- # track of all the packages to which the calling package belongs. We
- # do this by examining its @ISA variable. Any call from a base class
- # method (one of our caller's @ISA packages) can be ignored
- my %isa;
-
- # merge all the caller's @ISA packages and ancestors into %isa.
- my @pars = ancestors( $prevpack, \%isa );
- @isa{@pars} = () if @pars;
- $isa{$prevpack} = 1;
-
- # now we crawl up the calling stack and look at all the packages in
- # there. For each package, we look to see if it has an @ISA and then
- # we see if our caller features in that list. That would imply that
- # our caller is a derived class of that package and its calls can also
- # be ignored
-CALLER:
- while (($pack,$file,$line) = caller($i++)) {
-
- # Chances are, the caller's caller (or its caller...) is already
- # in the gallery - if so, ignore this caller.
- next if exists( $isa{$pack} );
-
- # no: collect this module's ancestors.
- my @i = ancestors( $pack, \%isa );
- my %i;
- if( @i ){
- @i{@i} = ();
- # check whether our representative of one of the clans is
- # in this family tree.
- foreach my $cl (@Clans){
- if( exists( $i{$cl} ) ){
- # yes: merge all of the family tree into %isa
- @isa{@i,$pack} = ();
- # and here's where we do some more ignoring...
- # if the package in question is one of our caller's
- # base or derived packages then we can ignore it (skip it)
- # and go onto the next.
- next CALLER if exists( $isa{$pack} );
- last;
- }
- }
- }
-
- # Hey! We've found a package that isn't one of our caller's
- # clan....but wait, $extra refers to the number of 'extra' levels
- # we should skip up. If $extra > 0 then this is a false alarm.
- # We must merge the package into the %isa hash (so we can ignore it
- # if it pops up again), decrement $extra, and continue.
- if ($extra-- > 0) {
- push( @Clans, $pack );
- @isa{@i,$pack} = ();
- }
- else {
- # OK! We've got a candidate package. Time to construct the
- # relevant error message and return it.
- my $msg;
- $msg = "$error at $file line $line";
- if (defined &Thread::tid) {
- my $tid = Thread->self->tid;
- $msg .= " thread $tid" if $tid;
- }
- $msg .= "\n";
- return $msg;
- }
- }
-
- # uh-oh! It looks like we crawled all the way up the stack and
- # never found a candidate package. Oh well, let's call longmess
- # to generate a full stack trace. We use the magical form of 'goto'
- # so that this shortmess() function doesn't appear on the stack
- # to further confuse longmess() about it's calling package.
- goto &longmess_heavy;
-}
-
-1;
diff --git a/contrib/perl5/lib/Class/Struct.pm b/contrib/perl5/lib/Class/Struct.pm
deleted file mode 100644
index 185a8ff..0000000
--- a/contrib/perl5/lib/Class/Struct.pm
+++ /dev/null
@@ -1,602 +0,0 @@
-package Class::Struct;
-
-## See POD after __END__
-
-use 5.005_64;
-
-use strict;
-use warnings::register;
-our(@ISA, @EXPORT, $VERSION);
-
-use Carp;
-
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(struct);
-
-$VERSION = '0.59';
-
-## Tested on 5.002 and 5.003 without class membership tests:
-my $CHECK_CLASS_MEMBERSHIP = ($] >= 5.003_95);
-
-my $print = 0;
-sub printem {
- if (@_) { $print = shift }
- else { $print++ }
-}
-
-{
- package Class::Struct::Tie_ISA;
-
- sub TIEARRAY {
- my $class = shift;
- return bless [], $class;
- }
-
- sub STORE {
- my ($self, $index, $value) = @_;
- Class::Struct::_subclass_error();
- }
-
- sub FETCH {
- my ($self, $index) = @_;
- $self->[$index];
- }
-
- sub FETCHSIZE {
- my $self = shift;
- return scalar(@$self);
- }
-
- sub DESTROY { }
-}
-
-sub import {
- my $self = shift;
-
- if ( @_ == 0 ) {
- $self->export_to_level( 1, $self, @EXPORT );
- } elsif ( @_ == 1 ) {
- # This is admittedly a little bit silly:
- # do we ever export anything else than 'struct'...?
- $self->export_to_level( 1, $self, @_ );
- } else {
- &struct;
- }
-}
-
-sub struct {
-
- # Determine parameter list structure, one of:
- # struct( class => [ element-list ])
- # struct( class => { element-list })
- # struct( element-list )
- # Latter form assumes current package name as struct name.
-
- my ($class, @decls);
- my $base_type = ref $_[1];
- if ( $base_type eq 'HASH' ) {
- $class = shift;
- @decls = %{shift()};
- _usage_error() if @_;
- }
- elsif ( $base_type eq 'ARRAY' ) {
- $class = shift;
- @decls = @{shift()};
- _usage_error() if @_;
- }
- else {
- $base_type = 'ARRAY';
- $class = (caller())[0];
- @decls = @_;
- }
-
- _usage_error() if @decls % 2 == 1;
-
- # Ensure we are not, and will not be, a subclass.
-
- my $isa = do {
- no strict 'refs';
- \@{$class . '::ISA'};
- };
- _subclass_error() if @$isa;
- tie @$isa, 'Class::Struct::Tie_ISA';
-
- # Create constructor.
-
- croak "function 'new' already defined in package $class"
- if do { no strict 'refs'; defined &{$class . "::new"} };
-
- my @methods = ();
- my %refs = ();
- my %arrays = ();
- my %hashes = ();
- my %classes = ();
- my $got_class = 0;
- my $out = '';
-
- $out = "{\n package $class;\n use Carp;\n sub new {\n";
- $out .= " my (\$class, \%init) = \@_;\n";
- $out .= " \$class = __PACKAGE__ unless \@_;\n";
-
- my $cnt = 0;
- my $idx = 0;
- my( $cmt, $name, $type, $elem );
-
- if( $base_type eq 'HASH' ){
- $out .= " my(\$r) = {};\n";
- $cmt = '';
- }
- elsif( $base_type eq 'ARRAY' ){
- $out .= " my(\$r) = [];\n";
- }
- while( $idx < @decls ){
- $name = $decls[$idx];
- $type = $decls[$idx+1];
- push( @methods, $name );
- if( $base_type eq 'HASH' ){
- $elem = "{'${class}::$name'}";
- }
- elsif( $base_type eq 'ARRAY' ){
- $elem = "[$cnt]";
- ++$cnt;
- $cmt = " # $name";
- }
- if( $type =~ /^\*(.)/ ){
- $refs{$name}++;
- $type = $1;
- }
- my $init = "defined(\$init{'$name'}) ? \$init{'$name'} :";
- if( $type eq '@' ){
- $out .= " croak 'Initializer for $name must be array reference'\n";
- $out .= " if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'ARRAY';\n";
- $out .= " \$r->$elem = $init [];$cmt\n";
- $arrays{$name}++;
- }
- elsif( $type eq '%' ){
- $out .= " croak 'Initializer for $name must be hash reference'\n";
- $out .= " if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'HASH';\n";
- $out .= " \$r->$elem = $init {};$cmt\n";
- $hashes{$name}++;
- }
- elsif ( $type eq '$') {
- $out .= " \$r->$elem = $init undef;$cmt\n";
- }
- elsif( $type =~ /^\w+(?:::\w+)*$/ ){
- $init = "defined(\$init{'$name'}) ? \%{\$init{'$name'}} : ()";
- $out .= " croak 'Initializer for $name must be hash reference'\n";
- $out .= " if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'HASH';\n";
- $out .= " \$r->$elem = '${type}'->new($init);$cmt\n";
- $classes{$name} = $type;
- $got_class = 1;
- }
- else{
- croak "'$type' is not a valid struct element type";
- }
- $idx += 2;
- }
- $out .= " bless \$r, \$class;\n }\n";
-
- # Create accessor methods.
-
- my( $pre, $pst, $sel );
- $cnt = 0;
- foreach $name (@methods){
- if ( do { no strict 'refs'; defined &{$class . "::$name"} } ) {
- warnings::warnif("function '$name' already defined, overrides struct accessor method");
- }
- else {
- $pre = $pst = $cmt = $sel = '';
- if( defined $refs{$name} ){
- $pre = "\\(";
- $pst = ")";
- $cmt = " # returns ref";
- }
- $out .= " sub $name {$cmt\n my \$r = shift;\n";
- if( $base_type eq 'ARRAY' ){
- $elem = "[$cnt]";
- ++$cnt;
- }
- elsif( $base_type eq 'HASH' ){
- $elem = "{'${class}::$name'}";
- }
- if( defined $arrays{$name} ){
- $out .= " my \$i;\n";
- $out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
- $sel = "->[\$i]";
- }
- elsif( defined $hashes{$name} ){
- $out .= " my \$i;\n";
- $out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
- $sel = "->{\$i}";
- }
- elsif( defined $classes{$name} ){
- if ( $CHECK_CLASS_MEMBERSHIP ) {
- $out .= " croak '$name argument is wrong class' if \@_ && ! UNIVERSAL::isa(\$_[0], '$classes{$name}');\n";
- }
- }
- $out .= " croak 'Too many args to $name' if \@_ > 1;\n";
- $out .= " \@_ ? ($pre\$r->$elem$sel = shift$pst) : $pre\$r->$elem$sel$pst;\n";
- $out .= " }\n";
- }
- }
- $out .= "}\n1;\n";
-
- print $out if $print;
- my $result = eval $out;
- carp $@ if $@;
-}
-
-sub _usage_error {
- confess "struct usage error";
-}
-
-sub _subclass_error {
- croak 'struct class cannot be a subclass (@ISA not allowed)';
-}
-
-1; # for require
-
-
-__END__
-
-=head1 NAME
-
-Class::Struct - declare struct-like datatypes as Perl classes
-
-=head1 SYNOPSIS
-
- use Class::Struct;
- # declare struct, based on array:
- struct( CLASS_NAME => [ ELEMENT_NAME => ELEMENT_TYPE, ... ]);
- # declare struct, based on hash:
- struct( CLASS_NAME => { ELEMENT_NAME => ELEMENT_TYPE, ... });
-
- package CLASS_NAME;
- use Class::Struct;
- # declare struct, based on array, implicit class name:
- struct( ELEMENT_NAME => ELEMENT_TYPE, ... );
-
- # Declare struct at compile time
- use Class::Struct CLASS_NAME => [ ELEMENT_NAME => ELEMENT_TYPE, ... ];
- use Class::Struct CLASS_NAME => { ELEMENT_NAME => ELEMENT_TYPE, ... };
-
- package Myobj;
- use Class::Struct;
- # declare struct with four types of elements:
- struct( s => '$', a => '@', h => '%', c => 'My_Other_Class' );
-
- $obj = new Myobj; # constructor
-
- # scalar type accessor:
- $element_value = $obj->s; # element value
- $obj->s('new value'); # assign to element
-
- # array type accessor:
- $ary_ref = $obj->a; # reference to whole array
- $ary_element_value = $obj->a(2); # array element value
- $obj->a(2, 'new value'); # assign to array element
-
- # hash type accessor:
- $hash_ref = $obj->h; # reference to whole hash
- $hash_element_value = $obj->h('x'); # hash element value
- $obj->h('x', 'new value'); # assign to hash element
-
- # class type accessor:
- $element_value = $obj->c; # object reference
- $obj->c->method(...); # call method of object
- $obj->c(new My_Other_Class); # assign a new object
-
-=head1 DESCRIPTION
-
-C<Class::Struct> exports a single function, C<struct>.
-Given a list of element names and types, and optionally
-a class name, C<struct> creates a Perl 5 class that implements
-a "struct-like" data structure.
-
-The new class is given a constructor method, C<new>, for creating
-struct objects.
-
-Each element in the struct data has an accessor method, which is
-used to assign to the element and to fetch its value. The
-default accessor can be overridden by declaring a C<sub> of the
-same name in the package. (See Example 2.)
-
-Each element's type can be scalar, array, hash, or class.
-
-=head2 The C<struct()> function
-
-The C<struct> function has three forms of parameter-list.
-
- struct( CLASS_NAME => [ ELEMENT_LIST ]);
- struct( CLASS_NAME => { ELEMENT_LIST });
- struct( ELEMENT_LIST );
-
-The first and second forms explicitly identify the name of the
-class being created. The third form assumes the current package
-name as the class name.
-
-An object of a class created by the first and third forms is
-based on an array, whereas an object of a class created by the
-second form is based on a hash. The array-based forms will be
-somewhat faster and smaller; the hash-based forms are more
-flexible.
-
-The class created by C<struct> must not be a subclass of another
-class other than C<UNIVERSAL>.
-
-It can, however, be used as a superclass for other classes. To facilitate
-this, the generated constructor method uses a two-argument blessing.
-Furthermore, if the class is hash-based, the key of each element is
-prefixed with the class name (see I<Perl Cookbook>, Recipe 13.12).
-
-A function named C<new> must not be explicitly defined in a class
-created by C<struct>.
-
-The I<ELEMENT_LIST> has the form
-
- NAME => TYPE, ...
-
-Each name-type pair declares one element of the struct. Each
-element name will be defined as an accessor method unless a
-method by that name is explicitly defined; in the latter case, a
-warning is issued if the warning flag (B<-w>) is set.
-
-=head2 Class Creation at Compile Time
-
-C<Class::Struct> can create your class at compile time. The main reason
-for doing this is obvious, so your class acts like every other class in
-Perl. Creating your class at compile time will make the order of events
-similar to using any other class ( or Perl module ).
-
-There is no significant speed gain between compile time and run time
-class creation, there is just a new, more standard order of events.
-
-=head2 Element Types and Accessor Methods
-
-The four element types -- scalar, array, hash, and class -- are
-represented by strings -- C<'$'>, C<'@'>, C<'%'>, and a class name --
-optionally preceded by a C<'*'>.
-
-The accessor method provided by C<struct> for an element depends
-on the declared type of the element.
-
-=over
-
-=item Scalar (C<'$'> or C<'*$'>)
-
-The element is a scalar, and by default is initialized to C<undef>
-(but see L<Initializing with new>).
-
-The accessor's argument, if any, is assigned to the element.
-
-If the element type is C<'$'>, the value of the element (after
-assignment) is returned. If the element type is C<'*$'>, a reference
-to the element is returned.
-
-=item Array (C<'@'> or C<'*@'>)
-
-The element is an array, initialized by default to C<()>.
-
-With no argument, the accessor returns a reference to the
-element's whole array (whether or not the element was
-specified as C<'@'> or C<'*@'>).
-
-With one or two arguments, the first argument is an index
-specifying one element of the array; the second argument, if
-present, is assigned to the array element. If the element type
-is C<'@'>, the accessor returns the array element value. If the
-element type is C<'*@'>, a reference to the array element is
-returned.
-
-=item Hash (C<'%'> or C<'*%'>)
-
-The element is a hash, initialized by default to C<()>.
-
-With no argument, the accessor returns a reference to the
-element's whole hash (whether or not the element was
-specified as C<'%'> or C<'*%'>).
-
-With one or two arguments, the first argument is a key specifying
-one element of the hash; the second argument, if present, is
-assigned to the hash element. If the element type is C<'%'>, the
-accessor returns the hash element value. If the element type is
-C<'*%'>, a reference to the hash element is returned.
-
-=item Class (C<'Class_Name'> or C<'*Class_Name'>)
-
-The element's value must be a reference blessed to the named
-class or to one of its subclasses. The element is initialized to
-the result of calling the C<new> constructor of the named class.
-
-The accessor's argument, if any, is assigned to the element. The
-accessor will C<croak> if this is not an appropriate object
-reference.
-
-If the element type does not start with a C<'*'>, the accessor
-returns the element value (after assignment). If the element type
-starts with a C<'*'>, a reference to the element itself is returned.
-
-=back
-
-=head2 Initializing with C<new>
-
-C<struct> always creates a constructor called C<new>. That constructor
-may take a list of initializers for the various elements of the new
-struct.
-
-Each initializer is a pair of values: I<element name>C< =E<gt> >I<value>.
-The initializer value for a scalar element is just a scalar value. The
-initializer for an array element is an array reference. The initializer
-for a hash is a hash reference.
-
-The initializer for a class element is also a hash reference, and the
-contents of that hash are passed to the element's own constructor.
-
-See Example 3 below for an example of initialization.
-
-=head1 EXAMPLES
-
-=over
-
-=item Example 1
-
-Giving a struct element a class type that is also a struct is how
-structs are nested. Here, C<timeval> represents a time (seconds and
-microseconds), and C<rusage> has two elements, each of which is of
-type C<timeval>.
-
- use Class::Struct;
-
- struct( rusage => {
- ru_utime => timeval, # seconds
- ru_stime => timeval, # microseconds
- });
-
- struct( timeval => [
- tv_secs => '$',
- tv_usecs => '$',
- ]);
-
- # create an object:
- my $t = new rusage;
-
- # $t->ru_utime and $t->ru_stime are objects of type timeval.
- # set $t->ru_utime to 100.0 sec and $t->ru_stime to 5.0 sec.
- $t->ru_utime->tv_secs(100);
- $t->ru_utime->tv_usecs(0);
- $t->ru_stime->tv_secs(5);
- $t->ru_stime->tv_usecs(0);
-
-=item Example 2
-
-An accessor function can be redefined in order to provide
-additional checking of values, etc. Here, we want the C<count>
-element always to be nonnegative, so we redefine the C<count>
-accessor accordingly.
-
- package MyObj;
- use Class::Struct;
-
- # declare the struct
- struct ( 'MyObj', { count => '$', stuff => '%' } );
-
- # override the default accessor method for 'count'
- sub count {
- my $self = shift;
- if ( @_ ) {
- die 'count must be nonnegative' if $_[0] < 0;
- $self->{'count'} = shift;
- warn "Too many args to count" if @_;
- }
- return $self->{'count'};
- }
-
- package main;
- $x = new MyObj;
- print "\$x->count(5) = ", $x->count(5), "\n";
- # prints '$x->count(5) = 5'
-
- print "\$x->count = ", $x->count, "\n";
- # prints '$x->count = 5'
-
- print "\$x->count(-5) = ", $x->count(-5), "\n";
- # dies due to negative argument!
-
-=item Example 3
-
-The constructor of a generated class can be passed a list
-of I<element>=>I<value> pairs, with which to initialize the struct.
-If no initializer is specified for a particular element, its default
-initialization is performed instead. Initializers for non-existent
-elements are silently ignored.
-
-Note that the initializer for a nested struct is specified
-as an anonymous hash of initializers, which is passed on to the nested
-struct's constructor.
-
- use Class::Struct;
-
- struct Breed =>
- {
- name => '$',
- cross => '$',
- };
-
- struct Cat =>
- [
- name => '$',
- kittens => '@',
- markings => '%',
- breed => 'Breed',
- ];
-
-
- my $cat = Cat->new( name => 'Socks',
- kittens => ['Monica', 'Kenneth'],
- markings => { socks=>1, blaze=>"white" },
- breed => { name=>'short-hair', cross=>1 },
- );
-
- print "Once a cat called ", $cat->name, "\n";
- print "(which was a ", $cat->breed->name, ")\n";
- print "had two kittens: ", join(' and ', @{$cat->kittens}), "\n";
-
-=back
-
-=head1 Author and Modification History
-
-Modified by Casey Tweten, 2000-11-08, v0.59.
-
- Added the ability for compile time class creation.
-
-Modified by Damian Conway, 1999-03-05, v0.58.
-
- Added handling of hash-like arg list to class ctor.
-
- Changed to two-argument blessing in ctor to support
- derivation from created classes.
-
- Added classname prefixes to keys in hash-based classes
- (refer to "Perl Cookbook", Recipe 13.12 for rationale).
-
- Corrected behaviour of accessors for '*@' and '*%' struct
- elements. Package now implements documented behaviour when
- returning a reference to an entire hash or array element.
- Previously these were returned as a reference to a reference
- to the element.
-
-Renamed to C<Class::Struct> and modified by Jim Miner, 1997-04-02.
-
- members() function removed.
- Documentation corrected and extended.
- Use of struct() in a subclass prohibited.
- User definition of accessor allowed.
- Treatment of '*' in element types corrected.
- Treatment of classes as element types corrected.
- Class name to struct() made optional.
- Diagnostic checks added.
-
-Originally C<Class::Template> by Dean Roehrich.
-
- # Template.pm --- struct/member template builder
- # 12mar95
- # Dean Roehrich
- #
- # changes/bugs fixed since 28nov94 version:
- # - podified
- # changes/bugs fixed since 21nov94 version:
- # - Fixed examples.
- # changes/bugs fixed since 02sep94 version:
- # - Moved to Class::Template.
- # changes/bugs fixed since 20feb94 version:
- # - Updated to be a more proper module.
- # - Added "use strict".
- # - Bug in build_methods, was using @var when @$var needed.
- # - Now using my() rather than local().
- #
- # Uses perl5 classes to create nested data types.
- # This is offered as one implementation of Tom Christiansen's "structs.pl"
- # idea.
-
-=cut
diff --git a/contrib/perl5/lib/Cwd.pm b/contrib/perl5/lib/Cwd.pm
deleted file mode 100644
index b7acfe8..0000000
--- a/contrib/perl5/lib/Cwd.pm
+++ /dev/null
@@ -1,457 +0,0 @@
-# $FreeBSD$
-package Cwd;
-require 5.000;
-
-=head1 NAME
-
-Cwd - get pathname of current working directory
-
-=head1 SYNOPSIS
-
- use Cwd;
- $dir = cwd;
-
- use Cwd;
- $dir = getcwd;
-
- use Cwd;
- $dir = fastcwd;
-
- use Cwd;
- $dir = fastgetcwd;
-
- use Cwd 'chdir';
- chdir "/tmp";
- print $ENV{'PWD'};
-
- use Cwd 'abs_path'; # aka realpath()
- print abs_path($ENV{'PWD'});
-
- use Cwd 'fast_abs_path';
- print fast_abs_path($ENV{'PWD'});
-
-=head1 DESCRIPTION
-
-This module provides functions for determining the pathname of the
-current working directory. By default, it exports the functions
-cwd(), getcwd(), fastcwd(), and fastgetcwd() into the caller's
-namespace. Each of these functions are called without arguments and
-return the absolute path of the current working directory. It is
-recommended that cwd (or another *cwd() function) be used in I<all>
-code to ensure portability.
-
-The cwd() is the most natural and safe form for the current
-architecture. For most systems it is identical to `pwd` (but without
-the trailing line terminator).
-
-The getcwd() function re-implements the getcwd(3) (or getwd(3)) functions
-in Perl.
-
-The fastcwd() function looks the same as getcwd(), but runs faster.
-It's also more dangerous because it might conceivably chdir() you out
-of a directory that it can't chdir() you back into. If fastcwd
-encounters a problem it will return undef but will probably leave you
-in a different directory. For a measure of extra security, if
-everything appears to have worked, the fastcwd() function will check
-that it leaves you in the same directory that it started in. If it has
-changed it will C<die> with the message "Unstable directory path,
-current directory changed unexpectedly". That should never happen.
-
-The fastgetcwd() function is provided as a synonym for cwd().
-
-The abs_path() function takes a single argument and returns the
-absolute pathname for that argument. It uses the same algorithm as
-getcwd(). (Actually, getcwd() is abs_path(".")) Symbolic links and
-relative-path components ("." and "..") are resolved to return the
-canonical pathname, just like realpath(3). This function is also
-callable as realpath().
-
-The fast_abs_path() function looks the same as abs_path() but runs
-faster and, like fastcwd(), is more dangerous.
-
-If you ask to override your chdir() built-in function, then your PWD
-environment variable will be kept up to date. (See
-L<perlsub/Overriding Builtin Functions>.) Note that it will only be
-kept up to date if all packages which use chdir import it from Cwd.
-
-=cut
-
-use strict;
-
-use Carp;
-
-our $VERSION = '2.04';
-
-use base qw/ Exporter /;
-our @EXPORT = qw(cwd getcwd fastcwd fastgetcwd);
-our @EXPORT_OK = qw(chdir abs_path fast_abs_path realpath fast_realpath);
-
-
-# The 'natural and safe form' for UNIX (pwd may be setuid root)
-
-sub _backtick_pwd {
- my $cwd = `/bin/pwd`;
- # `pwd` may fail e.g. if the disk is full
- chomp($cwd) if defined $cwd;
- $cwd;
-}
-
-# Since some ports may predefine cwd internally (e.g., NT)
-# we take care not to override an existing definition for cwd().
-
-unless(defined &cwd) {
- # The pwd command is not available in some chroot(2)'ed environments
- if($^O eq 'MacOS' || grep { -x "$_/pwd" } split(':', $ENV{PATH})) {
- *cwd = \&_backtick_pwd;
- }
- else {
- *cwd = \&getcwd;
- }
-}
-
-# set a reasonable (and very safe) default for fastgetcwd, in case it
-# isn't redefined later (20001212 rspier)
-*fastgetcwd = \&cwd;
-
-# By Brandon S. Allbery
-#
-# Usage: $cwd = getcwd();
-
-sub getcwd
-{
- abs_path('.');
-}
-
-# By John Bazik
-#
-# Usage: $cwd = &fastcwd;
-#
-# This is a faster version of getcwd. It's also more dangerous because
-# you might chdir out of a directory that you can't chdir back into.
-
-sub fastcwd {
- my($odev, $oino, $cdev, $cino, $tdev, $tino);
- my(@path, $path);
- local(*DIR);
-
- my($orig_cdev, $orig_cino) = stat('.');
- ($cdev, $cino) = ($orig_cdev, $orig_cino);
- for (;;) {
- my $direntry;
- ($odev, $oino) = ($cdev, $cino);
- CORE::chdir('..') || return undef;
- ($cdev, $cino) = stat('.');
- last if $odev == $cdev && $oino == $cino;
- opendir(DIR, '.') || return undef;
- for (;;) {
- $direntry = readdir(DIR);
- last unless defined $direntry;
- next if $direntry eq '.';
- next if $direntry eq '..';
-
- ($tdev, $tino) = lstat($direntry);
- last unless $tdev != $odev || $tino != $oino;
- }
- closedir(DIR);
- return undef unless defined $direntry; # should never happen
- unshift(@path, $direntry);
- }
- $path = '/' . join('/', @path);
- if ($^O eq 'apollo') { $path = "/".$path; }
- # At this point $path may be tainted (if tainting) and chdir would fail.
- # To be more useful we untaint it then check that we landed where we started.
- $path = $1 if $path =~ /^(.*)\z/s; # untaint
- CORE::chdir($path) || return undef;
- ($cdev, $cino) = stat('.');
- die "Unstable directory path, current directory changed unexpectedly"
- if $cdev != $orig_cdev || $cino != $orig_cino;
- $path;
-}
-
-
-# Keeps track of current working directory in PWD environment var
-# Usage:
-# use Cwd 'chdir';
-# chdir $newdir;
-
-my $chdir_init = 0;
-
-sub chdir_init {
- if ($ENV{'PWD'} and $^O ne 'os2' and $^O ne 'dos' and $^O ne 'MSWin32') {
- my($dd,$di) = stat('.');
- my($pd,$pi) = stat($ENV{'PWD'});
- if (!defined $dd or !defined $pd or $di != $pi or $dd != $pd) {
- $ENV{'PWD'} = cwd();
- }
- }
- else {
- my $wd = cwd();
- $wd = Win32::GetFullPathName($wd) if $^O eq 'MSWin32';
- $ENV{'PWD'} = $wd;
- }
- # Strip an automounter prefix (where /tmp_mnt/foo/bar == /foo/bar)
- if ($^O ne 'MSWin32' and $ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|s) {
- my($pd,$pi) = stat($2);
- my($dd,$di) = stat($1);
- if (defined $pd and defined $dd and $di == $pi and $dd == $pd) {
- $ENV{'PWD'}="$2$3";
- }
- }
- $chdir_init = 1;
-}
-
-sub chdir {
- my $newdir = @_ ? shift : ''; # allow for no arg (chdir to HOME dir)
- $newdir =~ s|///*|/|g unless $^O eq 'MSWin32';
- chdir_init() unless $chdir_init;
- my $newpwd;
- if ($^O eq 'MSWin32') {
- # get the full path name *before* the chdir()
- $newpwd = Win32::GetFullPathName($newdir);
- }
-
- return 0 unless CORE::chdir $newdir;
-
- if ($^O eq 'VMS') {
- return $ENV{'PWD'} = $ENV{'DEFAULT'}
- }
- elsif ($^O eq 'MacOS') {
- return $ENV{'PWD'} = cwd();
- }
- elsif ($^O eq 'MSWin32') {
- $ENV{'PWD'} = $newpwd;
- return 1;
- }
-
- if ($newdir =~ m#^/#s) {
- $ENV{'PWD'} = $newdir;
- } else {
- my @curdir = split(m#/#,$ENV{'PWD'});
- @curdir = ('') unless @curdir;
- my $component;
- foreach $component (split(m#/#, $newdir)) {
- next if $component eq '.';
- pop(@curdir),next if $component eq '..';
- push(@curdir,$component);
- }
- $ENV{'PWD'} = join('/',@curdir) || '/';
- }
- 1;
-}
-
-# Taken from Cwd.pm It is really getcwd with an optional
-# parameter instead of '.'
-#
-
-sub abs_path
-{
- my $start = @_ ? shift : '.';
- my($dotdots, $cwd, @pst, @cst, $dir, @tst);
-
- unless (@cst = stat( $start ))
- {
- carp "stat($start): $!";
- return '';
- }
- $cwd = '';
- $dotdots = $start;
- do
- {
- $dotdots .= '/..';
- @pst = @cst;
- unless (opendir(PARENT, $dotdots))
- {
- carp "opendir($dotdots): $!";
- return '';
- }
- unless (@cst = stat($dotdots))
- {
- carp "stat($dotdots): $!";
- closedir(PARENT);
- return '';
- }
- if ($pst[0] == $cst[0] && $pst[1] == $cst[1])
- {
- $dir = undef;
- }
- else
- {
- do
- {
- unless (defined ($dir = readdir(PARENT)))
- {
- carp "readdir($dotdots): $!";
- closedir(PARENT);
- return '';
- }
- $tst[0] = $pst[0]+1 unless (@tst = lstat("$dotdots/$dir"))
- }
- while ($dir eq '.' || $dir eq '..' || $tst[0] != $pst[0] ||
- $tst[1] != $pst[1]);
- }
- $cwd = (defined $dir ? "$dir" : "" ) . "/$cwd" ;
- closedir(PARENT);
- } while (defined $dir);
- chop($cwd) unless $cwd eq '/'; # drop the trailing /
- $cwd;
-}
-
-# added function alias for those of us more
-# used to the libc function. --tchrist 27-Jan-00
-*realpath = \&abs_path;
-
-sub fast_abs_path {
- my $cwd = getcwd();
- my $path = @_ ? shift : '.';
- CORE::chdir($path) || croak "Cannot chdir to $path:$!";
- my $realpath = getcwd();
- CORE::chdir($cwd) || croak "Cannot chdir back to $cwd:$!";
- $realpath;
-}
-
-# added function alias to follow principle of least surprise
-# based on previous aliasing. --tchrist 27-Jan-00
-*fast_realpath = \&fast_abs_path;
-
-
-# --- PORTING SECTION ---
-
-# VMS: $ENV{'DEFAULT'} points to default directory at all times
-# 06-Mar-1996 Charles Bailey bailey@newman.upenn.edu
-# Note: Use of Cwd::chdir() causes the logical name PWD to be defined
-# in the process logical name table as the default device and directory
-# seen by Perl. This may not be the same as the default device
-# and directory seen by DCL after Perl exits, since the effects
-# the CRTL chdir() function persist only until Perl exits.
-
-sub _vms_cwd {
- return $ENV{'DEFAULT'};
-}
-
-sub _vms_abs_path {
- return $ENV{'DEFAULT'} unless @_;
- my $path = VMS::Filespec::pathify($_[0]);
- croak("Invalid path name $_[0]") unless defined $path;
- return VMS::Filespec::rmsexpand($path);
-}
-
-sub _os2_cwd {
- $ENV{'PWD'} = `cmd /c cd`;
- chop $ENV{'PWD'};
- $ENV{'PWD'} =~ s:\\:/:g ;
- return $ENV{'PWD'};
-}
-
-sub _win32_cwd {
- $ENV{'PWD'} = Win32::GetCwd();
- $ENV{'PWD'} =~ s:\\:/:g ;
- return $ENV{'PWD'};
-}
-
-*_NT_cwd = \&_win32_cwd if (!defined &_NT_cwd &&
- defined &Win32::GetCwd);
-
-*_NT_cwd = \&_os2_cwd unless defined &_NT_cwd;
-
-sub _dos_cwd {
- if (!defined &Dos::GetCwd) {
- $ENV{'PWD'} = `command /c cd`;
- chop $ENV{'PWD'};
- $ENV{'PWD'} =~ s:\\:/:g ;
- } else {
- $ENV{'PWD'} = Dos::GetCwd();
- }
- return $ENV{'PWD'};
-}
-
-sub _qnx_cwd {
- $ENV{'PWD'} = `/usr/bin/fullpath -t`;
- chop $ENV{'PWD'};
- return $ENV{'PWD'};
-}
-
-sub _qnx_abs_path {
- my $path = @_ ? shift : '.';
- my $realpath=`/usr/bin/fullpath -t $path`;
- chop $realpath;
- return $realpath;
-}
-
-sub _epoc_cwd {
- $ENV{'PWD'} = EPOC::getcwd();
- return $ENV{'PWD'};
-}
-
-{
- no warnings; # assignments trigger 'subroutine redefined' warning
-
- if ($^O eq 'VMS') {
- *cwd = \&_vms_cwd;
- *getcwd = \&_vms_cwd;
- *fastcwd = \&_vms_cwd;
- *fastgetcwd = \&_vms_cwd;
- *abs_path = \&_vms_abs_path;
- *fast_abs_path = \&_vms_abs_path;
- }
- elsif ($^O eq 'NT' or $^O eq 'MSWin32') {
- # We assume that &_NT_cwd is defined as an XSUB or in the core.
- *cwd = \&_NT_cwd;
- *getcwd = \&_NT_cwd;
- *fastcwd = \&_NT_cwd;
- *fastgetcwd = \&_NT_cwd;
- *abs_path = \&fast_abs_path;
- }
- elsif ($^O eq 'os2') {
- # sys_cwd may keep the builtin command
- *cwd = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
- *getcwd = \&cwd;
- *fastgetcwd = \&cwd;
- *fastcwd = \&cwd;
- *abs_path = \&fast_abs_path;
- }
- elsif ($^O eq 'dos') {
- *cwd = \&_dos_cwd;
- *getcwd = \&_dos_cwd;
- *fastgetcwd = \&_dos_cwd;
- *fastcwd = \&_dos_cwd;
- *abs_path = \&fast_abs_path;
- }
- elsif ($^O eq 'qnx') {
- *cwd = \&_qnx_cwd;
- *getcwd = \&_qnx_cwd;
- *fastgetcwd = \&_qnx_cwd;
- *fastcwd = \&_qnx_cwd;
- *abs_path = \&_qnx_abs_path;
- *fast_abs_path = \&_qnx_abs_path;
- }
- elsif ($^O eq 'cygwin') {
- *getcwd = \&cwd;
- *fastgetcwd = \&cwd;
- *fastcwd = \&cwd;
- *abs_path = \&fast_abs_path;
- }
- elsif ($^O eq 'epoc') {
- *cwd = \&_epoc_cwd;
- *getcwd = \&_epoc_cwd;
- *fastgetcwd = \&_epoc_cwd;
- *fastcwd = \&_epoc_cwd;
- *abs_path = \&fast_abs_path;
- }
- elsif ($^O eq 'MacOS') {
- *getcwd = \&cwd;
- *fastgetcwd = \&cwd;
- *fastcwd = \&cwd;
- *abs_path = \&fast_abs_path;
- }
-}
-
-# package main; eval join('',<DATA>) || die $@; # quick test
-
-1;
-
-__END__
-BEGIN { import Cwd qw(:DEFAULT chdir); }
-print join("\n", cwd, getcwd, fastcwd, "");
-chdir('..');
-print join("\n", cwd, getcwd, fastcwd, "");
-print "$ENV{PWD}\n";
diff --git a/contrib/perl5/lib/DB.pm b/contrib/perl5/lib/DB.pm
deleted file mode 100644
index 711acc0..0000000
--- a/contrib/perl5/lib/DB.pm
+++ /dev/null
@@ -1,802 +0,0 @@
-#
-# Documentation is at the __END__
-#
-
-package DB;
-
-# "private" globals
-
-my ($running, $ready, $deep, $usrctxt, $evalarg,
- @stack, @saved, @skippkg, @clients);
-my $preeval = {};
-my $posteval = {};
-my $ineval = {};
-
-####
-#
-# Globals - must be defined at startup so that clients can refer to
-# them right after a C<require DB;>
-#
-####
-
-BEGIN {
-
- # these are hardcoded in perl source (some are magical)
-
- $DB::sub = ''; # name of current subroutine
- %DB::sub = (); # "filename:fromline-toline" for every known sub
- $DB::single = 0; # single-step flag (set it to 1 to enable stops in BEGIN/use)
- $DB::signal = 0; # signal flag (will cause a stop at the next line)
- $DB::trace = 0; # are we tracing through subroutine calls?
- @DB::args = (); # arguments of current subroutine or @ARGV array
- @DB::dbline = (); # list of lines in currently loaded file
- %DB::dbline = (); # actions in current file (keyed by line number)
- @DB::ret = (); # return value of last sub executed in list context
- $DB::ret = ''; # return value of last sub executed in scalar context
-
- # other "public" globals
-
- $DB::package = ''; # current package space
- $DB::filename = ''; # current filename
- $DB::subname = ''; # currently executing sub (fullly qualified name)
- $DB::lineno = ''; # current line number
-
- $DB::VERSION = $DB::VERSION = '1.0';
-
- # initialize private globals to avoid warnings
-
- $running = 1; # are we running, or are we stopped?
- @stack = (0);
- @clients = ();
- $deep = 100;
- $ready = 0;
- @saved = ();
- @skippkg = ();
- $usrctxt = '';
- $evalarg = '';
-}
-
-####
-# entry point for all subroutine calls
-#
-sub sub {
- push(@stack, $DB::single);
- $DB::single &= 1;
- $DB::single |= 4 if $#stack == $deep;
-# print $DB::sub, "\n";
- if ($DB::sub =~ /(?:^|::)DESTROY$/ or not defined wantarray) {
- &$DB::sub;
- $DB::single |= pop(@stack);
- $DB::ret = undef;
- }
- elsif (wantarray) {
- @DB::ret = &$DB::sub;
- $DB::single |= pop(@stack);
- @DB::ret;
- }
- else {
- $DB::ret = &$DB::sub;
- $DB::single |= pop(@stack);
- $DB::ret;
- }
-}
-
-####
-# this is called by perl for every statement
-#
-sub DB {
- return unless $ready;
- &save;
- ($DB::package, $DB::filename, $DB::lineno) = caller;
-
- return if @skippkg and grep { $_ eq $DB::package } @skippkg;
-
- $usrctxt = "package $DB::package;"; # this won't let them modify, alas
- local(*DB::dbline) = "::_<$DB::filename";
- my ($stop, $action);
- if (($stop,$action) = split(/\0/,$DB::dbline{$DB::lineno})) {
- if ($stop eq '1') {
- $DB::signal |= 1;
- }
- else {
- $stop = 0 unless $stop; # avoid un_init warning
- $evalarg = "\$DB::signal |= do { $stop; }"; &eval;
- $DB::dbline{$DB::lineno} =~ s/;9($|\0)/$1/; # clear any temp breakpt
- }
- }
- if ($DB::single || $DB::trace || $DB::signal) {
- $DB::subname = ($DB::sub =~ /\'|::/) ? $DB::sub : "${DB::package}::$DB::sub"; #';
- DB->loadfile($DB::filename, $DB::lineno);
- }
- $evalarg = $action, &eval if $action;
- if ($DB::single || $DB::signal) {
- _outputall($#stack . " levels deep in subroutine calls.\n") if $DB::single & 4;
- $DB::single = 0;
- $DB::signal = 0;
- $running = 0;
-
- &eval if ($evalarg = DB->prestop);
- my $c;
- for $c (@clients) {
- # perform any client-specific prestop actions
- &eval if ($evalarg = $c->cprestop);
-
- # Now sit in an event loop until something sets $running
- do {
- $c->idle; # call client event loop; must not block
- if ($running == 2) { # client wants something eval-ed
- &eval if ($evalarg = $c->evalcode);
- $running = 0;
- }
- } until $running;
-
- # perform any client-specific poststop actions
- &eval if ($evalarg = $c->cpoststop);
- }
- &eval if ($evalarg = DB->poststop);
- }
- ($@, $!, $,, $/, $\, $^W) = @saved;
- ();
-}
-
-####
-# this takes its argument via $evalarg to preserve current @_
-#
-sub eval {
- ($@, $!, $,, $/, $\, $^W) = @saved;
- eval "$usrctxt $evalarg; &DB::save";
- _outputall($@) if $@;
-}
-
-###############################################################################
-# no compile-time subroutine call allowed before this point #
-###############################################################################
-
-use strict; # this can run only after DB() and sub() are defined
-
-sub save {
- @saved = ($@, $!, $,, $/, $\, $^W);
- $, = ""; $/ = "\n"; $\ = ""; $^W = 0;
-}
-
-sub catch {
- for (@clients) { $_->awaken; }
- $DB::signal = 1;
- $ready = 1;
-}
-
-####
-#
-# Client callable (read inheritable) methods defined after this point
-#
-####
-
-sub register {
- my $s = shift;
- $s = _clientname($s) if ref($s);
- push @clients, $s;
-}
-
-sub done {
- my $s = shift;
- $s = _clientname($s) if ref($s);
- @clients = grep {$_ ne $s} @clients;
- $s->cleanup;
-# $running = 3 unless @clients;
- exit(0) unless @clients;
-}
-
-sub _clientname {
- my $name = shift;
- "$name" =~ /^(.+)=[A-Z]+\(.+\)$/;
- return $1;
-}
-
-sub next {
- my $s = shift;
- $DB::single = 2;
- $running = 1;
-}
-
-sub step {
- my $s = shift;
- $DB::single = 1;
- $running = 1;
-}
-
-sub cont {
- my $s = shift;
- my $i = shift;
- $s->set_tbreak($i) if $i;
- for ($i = 0; $i <= $#stack;) {
- $stack[$i++] &= ~1;
- }
- $DB::single = 0;
- $running = 1;
-}
-
-####
-# XXX caller must experimentally determine $i (since it depends
-# on how many client call frames are between this call and the DB call).
-# Such is life.
-#
-sub ret {
- my $s = shift;
- my $i = shift; # how many levels to get to DB sub
- $i = 0 unless defined $i;
- $stack[$#stack-$i] |= 1;
- $DB::single = 0;
- $running = 1;
-}
-
-####
-# XXX caller must experimentally determine $start (since it depends
-# on how many client call frames are between this call and the DB call).
-# Such is life.
-#
-sub backtrace {
- my $self = shift;
- my $start = shift;
- my($p,$f,$l,$s,$h,$w,$e,$r,$a, @a, @ret,$i);
- $start = 1 unless $start;
- for ($i = $start; ($p,$f,$l,$s,$h,$w,$e,$r) = caller($i); $i++) {
- @a = @DB::args;
- for (@a) {
- s/'/\\'/g;
- s/([^\0]*)/'$1'/ unless /^-?[\d.]+$/;
- s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
- s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
- }
- $w = $w ? '@ = ' : '$ = ';
- $a = $h ? '(' . join(', ', @a) . ')' : '';
- $e =~ s/\n\s*\;\s*\Z// if $e;
- $e =~ s/[\\\']/\\$1/g if $e;
- if ($r) {
- $s = "require '$e'";
- } elsif (defined $r) {
- $s = "eval '$e'";
- } elsif ($s eq '(eval)') {
- $s = "eval {...}";
- }
- $f = "file `$f'" unless $f eq '-e';
- push @ret, "$w&$s$a from $f line $l";
- last if $DB::signal;
- }
- return @ret;
-}
-
-sub _outputall {
- my $c;
- for $c (@clients) {
- $c->output(@_);
- }
-}
-
-sub trace_toggle {
- my $s = shift;
- $DB::trace = !$DB::trace;
-}
-
-
-####
-# without args: returns all defined subroutine names
-# with subname args: returns a listref [file, start, end]
-#
-sub subs {
- my $s = shift;
- if (@_) {
- my(@ret) = ();
- while (@_) {
- my $name = shift;
- push @ret, [$DB::sub{$name} =~ /^(.*)\:(\d+)-(\d+)$/]
- if exists $DB::sub{$name};
- }
- return @ret;
- }
- return keys %DB::sub;
-}
-
-####
-# first argument is a filename whose subs will be returned
-# if a filename is not supplied, all subs in the current
-# filename are returned.
-#
-sub filesubs {
- my $s = shift;
- my $fname = shift;
- $fname = $DB::filename unless $fname;
- return grep { $DB::sub{$_} =~ /^$fname/ } keys %DB::sub;
-}
-
-####
-# returns a list of all filenames that DB knows about
-#
-sub files {
- my $s = shift;
- my(@f) = grep(m|^_<|, keys %main::);
- return map { substr($_,2) } @f;
-}
-
-####
-# returns reference to an array holding the lines in currently
-# loaded file
-#
-sub lines {
- my $s = shift;
- return \@DB::dbline;
-}
-
-####
-# loadfile($file, $line)
-#
-sub loadfile {
- my $s = shift;
- my($file, $line) = @_;
- if (!defined $main::{'_<' . $file}) {
- my $try;
- if (($try) = grep(m|^_<.*$file|, keys %main::)) {
- $file = substr($try,2);
- }
- }
- if (defined($main::{'_<' . $file})) {
- my $c;
-# _outputall("Loading file $file..");
- *DB::dbline = "::_<$file";
- $DB::filename = $file;
- for $c (@clients) {
-# print "2 ", $file, '|', $line, "\n";
- $c->showfile($file, $line);
- }
- return $file;
- }
- return undef;
-}
-
-sub lineevents {
- my $s = shift;
- my $fname = shift;
- my(%ret) = ();
- my $i;
- $fname = $DB::filename unless $fname;
- local(*DB::dbline) = "::_<$fname";
- for ($i = 1; $i <= $#DB::dbline; $i++) {
- $ret{$i} = [$DB::dbline[$i], split(/\0/, $DB::dbline{$i})]
- if defined $DB::dbline{$i};
- }
- return %ret;
-}
-
-sub set_break {
- my $s = shift;
- my $i = shift;
- my $cond = shift;
- $i ||= $DB::lineno;
- $cond ||= '1';
- $i = _find_subline($i) if ($i =~ /\D/);
- $s->output("Subroutine not found.\n") unless $i;
- if ($i) {
- if ($DB::dbline[$i] == 0) {
- $s->output("Line $i not breakable.\n");
- }
- else {
- $DB::dbline{$i} =~ s/^[^\0]*/$cond/;
- }
- }
-}
-
-sub set_tbreak {
- my $s = shift;
- my $i = shift;
- $i = _find_subline($i) if ($i =~ /\D/);
- $s->output("Subroutine not found.\n") unless $i;
- if ($i) {
- if ($DB::dbline[$i] == 0) {
- $s->output("Line $i not breakable.\n");
- }
- else {
- $DB::dbline{$i} =~ s/($|\0)/;9$1/; # add one-time-only b.p.
- }
- }
-}
-
-sub _find_subline {
- my $name = shift;
- $name =~ s/\'/::/;
- $name = "${DB::package}\:\:" . $name if $name !~ /::/;
- $name = "main" . $name if substr($name,0,2) eq "::";
- my($fname, $from, $to) = ($DB::sub{$name} =~ /^(.*):(\d+)-(\d+)$/);
- if ($from) {
- # XXX this needs local()-ization of some sort
- *DB::dbline = "::_<$fname";
- ++$from while $DB::dbline[$from] == 0 && $from < $to;
- return $from;
- }
- return undef;
-}
-
-sub clr_breaks {
- my $s = shift;
- my $i;
- if (@_) {
- while (@_) {
- $i = shift;
- $i = _find_subline($i) if ($i =~ /\D/);
- $s->output("Subroutine not found.\n") unless $i;
- if (defined $DB::dbline{$i}) {
- $DB::dbline{$i} =~ s/^[^\0]+//;
- if ($DB::dbline{$i} =~ s/^\0?$//) {
- delete $DB::dbline{$i};
- }
- }
- }
- }
- else {
- for ($i = 1; $i <= $#DB::dbline ; $i++) {
- if (defined $DB::dbline{$i}) {
- $DB::dbline{$i} =~ s/^[^\0]+//;
- if ($DB::dbline{$i} =~ s/^\0?$//) {
- delete $DB::dbline{$i};
- }
- }
- }
- }
-}
-
-sub set_action {
- my $s = shift;
- my $i = shift;
- my $act = shift;
- $i = _find_subline($i) if ($i =~ /\D/);
- $s->output("Subroutine not found.\n") unless $i;
- if ($i) {
- if ($DB::dbline[$i] == 0) {
- $s->output("Line $i not actionable.\n");
- }
- else {
- $DB::dbline{$i} =~ s/\0[^\0]*//;
- $DB::dbline{$i} .= "\0" . $act;
- }
- }
-}
-
-sub clr_actions {
- my $s = shift;
- my $i;
- if (@_) {
- while (@_) {
- my $i = shift;
- $i = _find_subline($i) if ($i =~ /\D/);
- $s->output("Subroutine not found.\n") unless $i;
- if ($i && $DB::dbline[$i] != 0) {
- $DB::dbline{$i} =~ s/\0[^\0]*//;
- delete $DB::dbline{$i} if $DB::dbline{$i} =~ s/^\0?$//;
- }
- }
- }
- else {
- for ($i = 1; $i <= $#DB::dbline ; $i++) {
- if (defined $DB::dbline{$i}) {
- $DB::dbline{$i} =~ s/\0[^\0]*//;
- delete $DB::dbline{$i} if $DB::dbline{$i} =~ s/^\0?$//;
- }
- }
- }
-}
-
-sub prestop {
- my ($client, $val) = @_;
- return defined($val) ? $preeval->{$client} = $val : $preeval->{$client};
-}
-
-sub poststop {
- my ($client, $val) = @_;
- return defined($val) ? $posteval->{$client} = $val : $posteval->{$client};
-}
-
-#
-# "pure virtual" methods
-#
-
-# client-specific pre/post-stop actions.
-sub cprestop {}
-sub cpoststop {}
-
-# client complete startup
-sub awaken {}
-
-sub skippkg {
- my $s = shift;
- push @skippkg, @_ if @_;
-}
-
-sub evalcode {
- my ($client, $val) = @_;
- if (defined $val) {
- $running = 2; # hand over to DB() to evaluate in its context
- $ineval->{$client} = $val;
- }
- return $ineval->{$client};
-}
-
-sub ready {
- my $s = shift;
- return $ready = 1;
-}
-
-# stubs
-
-sub init {}
-sub stop {}
-sub idle {}
-sub cleanup {}
-sub output {}
-
-#
-# client init
-#
-for (@clients) { $_->init }
-
-$SIG{'INT'} = \&DB::catch;
-
-# disable this if stepping through END blocks is desired
-# (looks scary and deconstructivist with Swat)
-END { $ready = 0 }
-
-1;
-__END__
-
-=head1 NAME
-
-DB - programmatic interface to the Perl debugging API (draft, subject to
-change)
-
-=head1 SYNOPSIS
-
- package CLIENT;
- use DB;
- @ISA = qw(DB);
-
- # these (inherited) methods can be called by the client
-
- CLIENT->register() # register a client package name
- CLIENT->done() # de-register from the debugging API
- CLIENT->skippkg('hide::hide') # ask DB not to stop in this package
- CLIENT->cont([WHERE]) # run some more (until BREAK or another breakpt)
- CLIENT->step() # single step
- CLIENT->next() # step over
- CLIENT->ret() # return from current subroutine
- CLIENT->backtrace() # return the call stack description
- CLIENT->ready() # call when client setup is done
- CLIENT->trace_toggle() # toggle subroutine call trace mode
- CLIENT->subs([SUBS]) # return subroutine information
- CLIENT->files() # return list of all files known to DB
- CLIENT->lines() # return lines in currently loaded file
- CLIENT->loadfile(FILE,LINE) # load a file and let other clients know
- CLIENT->lineevents() # return info on lines with actions
- CLIENT->set_break([WHERE],[COND])
- CLIENT->set_tbreak([WHERE])
- CLIENT->clr_breaks([LIST])
- CLIENT->set_action(WHERE,ACTION)
- CLIENT->clr_actions([LIST])
- CLIENT->evalcode(STRING) # eval STRING in executing code's context
- CLIENT->prestop([STRING]) # execute in code context before stopping
- CLIENT->poststop([STRING])# execute in code context before resuming
-
- # These methods will be called at the appropriate times.
- # Stub versions provided do nothing.
- # None of these can block.
-
- CLIENT->init() # called when debug API inits itself
- CLIENT->stop(FILE,LINE) # when execution stops
- CLIENT->idle() # while stopped (can be a client event loop)
- CLIENT->cleanup() # just before exit
- CLIENT->output(LIST) # called to print any output that API must show
-
-=head1 DESCRIPTION
-
-Perl debug information is frequently required not just by debuggers,
-but also by modules that need some "special" information to do their
-job properly, like profilers.
-
-This module abstracts and provides all of the hooks into Perl internal
-debugging functionality, so that various implementations of Perl debuggers
-(or packages that want to simply get at the "privileged" debugging data)
-can all benefit from the development of this common code. Currently used
-by Swat, the perl/Tk GUI debugger.
-
-Note that multiple "front-ends" can latch into this debugging API
-simultaneously. This is intended to facilitate things like
-debugging with a command line and GUI at the same time, debugging
-debuggers etc. [Sounds nice, but this needs some serious support -- GSAR]
-
-In particular, this API does B<not> provide the following functions:
-
-=over 4
-
-=item *
-
-data display
-
-=item *
-
-command processing
-
-=item *
-
-command alias management
-
-=item *
-
-user interface (tty or graphical)
-
-=back
-
-These are intended to be services performed by the clients of this API.
-
-This module attempts to be squeaky clean w.r.t C<use strict;> and when
-warnings are enabled.
-
-
-=head2 Global Variables
-
-The following "public" global names can be read by clients of this API.
-Beware that these should be considered "readonly".
-
-=over 8
-
-=item $DB::sub
-
-Name of current executing subroutine.
-
-=item %DB::sub
-
-The keys of this hash are the names of all the known subroutines. Each value
-is an encoded string that has the sprintf(3) format
-C<("%s:%d-%d", filename, fromline, toline)>.
-
-=item $DB::single
-
-Single-step flag. Will be true if the API will stop at the next statement.
-
-=item $DB::signal
-
-Signal flag. Will be set to a true value if a signal was caught. Clients may
-check for this flag to abort time-consuming operations.
-
-=item $DB::trace
-
-This flag is set to true if the API is tracing through subroutine calls.
-
-=item @DB::args
-
-Contains the arguments of current subroutine, or the C<@ARGV> array if in the
-toplevel context.
-
-=item @DB::dbline
-
-List of lines in currently loaded file.
-
-=item %DB::dbline
-
-Actions in current file (keys are line numbers). The values are strings that
-have the sprintf(3) format C<("%s\000%s", breakcondition, actioncode)>.
-
-=item $DB::package
-
-Package namespace of currently executing code.
-
-=item $DB::filename
-
-Currently loaded filename.
-
-=item $DB::subname
-
-Fully qualified name of currently executing subroutine.
-
-=item $DB::lineno
-
-Line number that will be executed next.
-
-=back
-
-=head2 API Methods
-
-The following are methods in the DB base class. A client must
-access these methods by inheritance (*not* by calling them directly),
-since the API keeps track of clients through the inheritance
-mechanism.
-
-=over 8
-
-=item CLIENT->register()
-
-register a client object/package
-
-=item CLIENT->evalcode(STRING)
-
-eval STRING in executing code context
-
-=item CLIENT->skippkg('D::hide')
-
-ask DB not to stop in these packages
-
-=item CLIENT->run()
-
-run some more (until a breakpt is reached)
-
-=item CLIENT->step()
-
-single step
-
-=item CLIENT->next()
-
-step over
-
-=item CLIENT->done()
-
-de-register from the debugging API
-
-=back
-
-=head2 Client Callback Methods
-
-The following "virtual" methods can be defined by the client. They will
-be called by the API at appropriate points. Note that unless specified
-otherwise, the debug API only defines empty, non-functional default versions
-of these methods.
-
-=over 8
-
-=item CLIENT->init()
-
-Called after debug API inits itself.
-
-=item CLIENT->prestop([STRING])
-
-Usually inherited from DB package. If no arguments are passed,
-returns the prestop action string.
-
-=item CLIENT->stop()
-
-Called when execution stops (w/ args file, line).
-
-=item CLIENT->idle()
-
-Called while stopped (can be a client event loop).
-
-=item CLIENT->poststop([STRING])
-
-Usually inherited from DB package. If no arguments are passed,
-returns the poststop action string.
-
-=item CLIENT->evalcode(STRING)
-
-Usually inherited from DB package. Ask for a STRING to be C<eval>-ed
-in executing code context.
-
-=item CLIENT->cleanup()
-
-Called just before exit.
-
-=item CLIENT->output(LIST)
-
-Called when API must show a message (warnings, errors etc.).
-
-
-=back
-
-
-=head1 BUGS
-
-The interface defined by this module is missing some of the later additions
-to perl's debugging functionality. As such, this interface should be considered
-highly experimental and subject to change.
-
-=head1 AUTHOR
-
-Gurusamy Sarathy gsar@activestate.com
-
-This code heavily adapted from an early version of perl5db.pl attributable
-to Larry Wall and the Perl Porters.
-
-=cut
diff --git a/contrib/perl5/lib/Devel/SelfStubber.pm b/contrib/perl5/lib/Devel/SelfStubber.pm
deleted file mode 100644
index 4c2d039..0000000
--- a/contrib/perl5/lib/Devel/SelfStubber.pm
+++ /dev/null
@@ -1,139 +0,0 @@
-package Devel::SelfStubber;
-require SelfLoader;
-@ISA = qw(SelfLoader);
-@EXPORT = 'AUTOLOAD';
-$JUST_STUBS = 1;
-$VERSION = 1.01; sub Version {$VERSION}
-
-# Use as
-# perl -e 'use Devel::SelfStubber;Devel::SelfStubber->stub(MODULE_NAME,LIB)'
-# (LIB defaults to '.') e.g.
-# perl -e 'use Devel::SelfStubber;Devel::SelfStubber->stub('Math::BigInt')'
-# would print out stubs needed if you added a __DATA__ before the subs.
-# Setting $Devel::SelfStubber::JUST_STUBS to 0 will print out the whole
-# module with the stubs entered just before the __DATA__
-
-sub _add_to_cache {
- my($self,$fullname,$pack,$lines, $prototype) = @_;
- push(@DATA,@{$lines});
- if($fullname){push(@STUBS,"sub $fullname $prototype;\n")}; # stubs
- '1;';
-}
-
-sub _package_defined {
- my($self,$line) = @_;
- push(@DATA,$line);
-}
-
-sub stub {
- my($self,$module,$lib) = @_;
- my($line,$end,$fh,$mod_file,$found_selfloader);
- $lib ||= '.';
- ($mod_file = $module) =~ s,::,/,g;
-
- $mod_file = "$lib/$mod_file.pm";
- $fh = "${module}::DATA";
-
- open($fh,$mod_file) || die "Unable to open $mod_file";
- while(defined ($line = <$fh>) and $line !~ m/^__DATA__/) {
- push(@BEFORE_DATA,$line);
- $line =~ /use\s+SelfLoader/ && $found_selfloader++;
- }
- $line =~ m/^__DATA__/ || die "$mod_file doesn't contain a __DATA__ token";
- $found_selfloader ||
- print 'die "\'use SelfLoader;\' statement NOT FOUND!!\n"',"\n";
- $self->_load_stubs($module);
- if ( fileno($fh) ) {
- $end = 1;
- while(defined($line = <$fh>)) {
- push(@AFTER_DATA,$line);
- }
- }
- unless ($JUST_STUBS) {
- print @BEFORE_DATA;
- }
- print @STUBS;
- unless ($JUST_STUBS) {
- print "1;\n__DATA__\n",@DATA;
- if($end) { print "__END__\n",@AFTER_DATA; }
- }
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Devel::SelfStubber - generate stubs for a SelfLoading module
-
-=head1 SYNOPSIS
-
-To generate just the stubs:
-
- use Devel::SelfStubber;
- Devel::SelfStubber->stub('MODULENAME','MY_LIB_DIR');
-
-or to generate the whole module with stubs inserted correctly
-
- use Devel::SelfStubber;
- $Devel::SelfStubber::JUST_STUBS=0;
- Devel::SelfStubber->stub('MODULENAME','MY_LIB_DIR');
-
-MODULENAME is the Perl module name, e.g. Devel::SelfStubber,
-NOT 'Devel/SelfStubber' or 'Devel/SelfStubber.pm'.
-
-MY_LIB_DIR defaults to '.' if not present.
-
-=head1 DESCRIPTION
-
-Devel::SelfStubber prints the stubs you need to put in the module
-before the __DATA__ token (or you can get it to print the entire
-module with stubs correctly placed). The stubs ensure that if
-a method is called, it will get loaded. They are needed specifically
-for inherited autoloaded methods.
-
-This is best explained using the following example:
-
-Assume four classes, A,B,C & D.
-
-A is the root class, B is a subclass of A, C is a subclass of B,
-and D is another subclass of A.
-
- A
- / \
- B D
- /
- C
-
-If D calls an autoloaded method 'foo' which is defined in class A,
-then the method is loaded into class A, then executed. If C then
-calls method 'foo', and that method was reimplemented in class
-B, but set to be autoloaded, then the lookup mechanism never gets to
-the AUTOLOAD mechanism in B because it first finds the method
-already loaded in A, and so erroneously uses that. If the method
-foo had been stubbed in B, then the lookup mechanism would have
-found the stub, and correctly loaded and used the sub from B.
-
-So, for classes and subclasses to have inheritance correctly
-work with autoloading, you need to ensure stubs are loaded.
-
-The SelfLoader can load stubs automatically at module initialization
-with the statement 'SelfLoader-E<gt>load_stubs()';, but you may wish to
-avoid having the stub loading overhead associated with your
-initialization (though note that the SelfLoader::load_stubs method
-will be called sooner or later - at latest when the first sub
-is being autoloaded). In this case, you can put the sub stubs
-before the __DATA__ token. This can be done manually, but this
-module allows automatic generation of the stubs.
-
-By default it just prints the stubs, but you can set the
-global $Devel::SelfStubber::JUST_STUBS to 0 and it will
-print out the entire module with the stubs positioned correctly.
-
-At the very least, this is useful to see what the SelfLoader
-thinks are stubs - in order to ensure future versions of the
-SelfStubber remain in step with the SelfLoader, the
-SelfStubber actually uses the SelfLoader to determine which
-stubs are needed.
-
-=cut
diff --git a/contrib/perl5/lib/DirHandle.pm b/contrib/perl5/lib/DirHandle.pm
deleted file mode 100644
index 047755d..0000000
--- a/contrib/perl5/lib/DirHandle.pm
+++ /dev/null
@@ -1,72 +0,0 @@
-package DirHandle;
-
-=head1 NAME
-
-DirHandle - supply object methods for directory handles
-
-=head1 SYNOPSIS
-
- use DirHandle;
- $d = new DirHandle ".";
- if (defined $d) {
- while (defined($_ = $d->read)) { something($_); }
- $d->rewind;
- while (defined($_ = $d->read)) { something_else($_); }
- undef $d;
- }
-
-=head1 DESCRIPTION
-
-The C<DirHandle> method provide an alternative interface to the
-opendir(), closedir(), readdir(), and rewinddir() functions.
-
-The only objective benefit to using C<DirHandle> is that it avoids
-namespace pollution by creating globs to hold directory handles.
-
-=cut
-
-require 5.000;
-use Carp;
-use Symbol;
-
-sub new {
- @_ >= 1 && @_ <= 2 or croak 'usage: new DirHandle [DIRNAME]';
- my $class = shift;
- my $dh = gensym;
- if (@_) {
- DirHandle::open($dh, $_[0])
- or return undef;
- }
- bless $dh, $class;
-}
-
-sub DESTROY {
- my ($dh) = @_;
- closedir($dh);
-}
-
-sub open {
- @_ == 2 or croak 'usage: $dh->open(DIRNAME)';
- my ($dh, $dirname) = @_;
- opendir($dh, $dirname);
-}
-
-sub close {
- @_ == 1 or croak 'usage: $dh->close()';
- my ($dh) = @_;
- closedir($dh);
-}
-
-sub read {
- @_ == 1 or croak 'usage: $dh->read()';
- my ($dh) = @_;
- readdir($dh);
-}
-
-sub rewind {
- @_ == 1 or croak 'usage: $dh->rewind()';
- my ($dh) = @_;
- rewinddir($dh);
-}
-
-1;
diff --git a/contrib/perl5/lib/Dumpvalue.pm b/contrib/perl5/lib/Dumpvalue.pm
deleted file mode 100644
index 475f4ff..0000000
--- a/contrib/perl5/lib/Dumpvalue.pm
+++ /dev/null
@@ -1,626 +0,0 @@
-use 5.005_64; # for (defined ref) and $#$v and our
-package Dumpvalue;
-use strict;
-our(%address, $stab, @stab, %stab, %subs);
-
-# translate control chars to ^X - Randal Schwartz
-# Modifications to print types by Peter Gordon v1.0
-
-# Ilya Zakharevich -- patches after 5.001 (and some before ;-)
-
-# Won't dump symbol tables and contents of debugged files by default
-
-# (IZ) changes for objectification:
-# c) quote() renamed to method set_quote();
-# d) unctrlSet() renamed to method set_unctrl();
-# f) Compiles with `use strict', but in two places no strict refs is needed:
-# maybe more problems are waiting...
-
-my %defaults = (
- globPrint => 0,
- printUndef => 1,
- tick => "auto",
- unctrl => 'quote',
- subdump => 1,
- dumpReused => 0,
- bareStringify => 1,
- hashDepth => '',
- arrayDepth => '',
- dumpDBFiles => '',
- dumpPackages => '',
- quoteHighBit => '',
- usageOnly => '',
- compactDump => '',
- veryCompact => '',
- stopDbSignal => '',
- );
-
-sub new {
- my $class = shift;
- my %opt = (%defaults, @_);
- bless \%opt, $class;
-}
-
-sub set {
- my $self = shift;
- my %opt = @_;
- @$self{keys %opt} = values %opt;
-}
-
-sub get {
- my $self = shift;
- wantarray ? @$self{@_} : $$self{pop @_};
-}
-
-sub dumpValue {
- my $self = shift;
- die "usage: \$dumper->dumpValue(value)" unless @_ == 1;
- local %address;
- local $^W=0;
- (print "undef\n"), return unless defined $_[0];
- (print $self->stringify($_[0]), "\n"), return unless ref $_[0];
- $self->unwrap($_[0],0);
-}
-
-sub dumpValues {
- my $self = shift;
- local %address;
- local $^W=0;
- (print "undef\n"), return unless defined $_[0];
- $self->unwrap(\@_,0);
-}
-
-# This one is good for variable names:
-
-sub unctrl {
- local($_) = @_;
-
- return \$_ if ref \$_ eq "GLOB";
- s/([\001-\037\177])/'^'.pack('c',ord($1)^64)/eg;
- $_;
-}
-
-sub stringify {
- my $self = shift;
- local $_ = shift;
- my $noticks = shift;
- my $tick = $self->{tick};
-
- return 'undef' unless defined $_ or not $self->{printUndef};
- return $_ . "" if ref \$_ eq 'GLOB';
- { no strict 'refs';
- $_ = &{'overload::StrVal'}($_)
- if $self->{bareStringify} and ref $_
- and %overload:: and defined &{'overload::StrVal'};
- }
-
- if ($tick eq 'auto') {
- if (/[\000-\011\013-\037\177]/) {
- $tick = '"';
- } else {
- $tick = "'";
- }
- }
- if ($tick eq "'") {
- s/([\'\\])/\\$1/g;
- } elsif ($self->{unctrl} eq 'unctrl') {
- s/([\"\\])/\\$1/g ;
- s/([\000-\037\177])/'^'.pack('c',ord($1)^64)/eg;
- s/([\200-\377])/'\\0x'.sprintf('%2X',ord($1))/eg
- if $self->{quoteHighBit};
- } elsif ($self->{unctrl} eq 'quote') {
- s/([\"\\\$\@])/\\$1/g if $tick eq '"';
- s/\033/\\e/g;
- s/([\000-\037\177])/'\\c'.chr(ord($1)^64)/eg;
- }
- s/([\200-\377])/'\\'.sprintf('%3o',ord($1))/eg if $self->{quoteHighBit};
- ($noticks || /^\d+(\.\d*)?\Z/)
- ? $_
- : $tick . $_ . $tick;
-}
-
-sub DumpElem {
- my ($self, $v) = (shift, shift);
- my $short = $self->stringify($v, ref $v);
- my $shortmore = '';
- if ($self->{veryCompact} && ref $v
- && (ref $v eq 'ARRAY' and !grep(ref $_, @$v) )) {
- my $depth = $#$v;
- ($shortmore, $depth) = (' ...', $self->{arrayDepth} - 1)
- if $self->{arrayDepth} and $depth >= $self->{arrayDepth};
- my @a = map $self->stringify($_), @$v[0..$depth];
- print "0..$#{$v} @a$shortmore\n";
- } elsif ($self->{veryCompact} && ref $v
- && (ref $v eq 'HASH') and !grep(ref $_, values %$v)) {
- my @a = sort keys %$v;
- my $depth = $#a;
- ($shortmore, $depth) = (' ...', $self->{hashDepth} - 1)
- if $self->{hashDepth} and $depth >= $self->{hashDepth};
- my @b = map {$self->stringify($_) . " => " . $self->stringify($$v{$_})}
- @a[0..$depth];
- local $" = ', ';
- print "@b$shortmore\n";
- } else {
- print "$short\n";
- $self->unwrap($v,shift);
- }
-}
-
-sub unwrap {
- my $self = shift;
- return if $DB::signal and $self->{stopDbSignal};
- my ($v) = shift ;
- my ($s) = shift ; # extra no of spaces
- my $sp;
- my (%v,@v,$address,$short,$fileno);
-
- $sp = " " x $s ;
- $s += 3 ;
-
- # Check for reused addresses
- if (ref $v) {
- my $val = $v;
- { no strict 'refs';
- $val = &{'overload::StrVal'}($v)
- if %overload:: and defined &{'overload::StrVal'};
- }
- ($address) = $val =~ /(0x[0-9a-f]+)\)$/ ;
- if (!$self->{dumpReused} && defined $address) {
- $address{$address}++ ;
- if ( $address{$address} > 1 ) {
- print "${sp}-> REUSED_ADDRESS\n" ;
- return ;
- }
- }
- } elsif (ref \$v eq 'GLOB') {
- $address = "$v" . ""; # To avoid a bug with globs
- $address{$address}++ ;
- if ( $address{$address} > 1 ) {
- print "${sp}*DUMPED_GLOB*\n" ;
- return ;
- }
- }
-
- if (ref $v eq 'Regexp') {
- my $re = "$v";
- $re =~ s,/,\\/,g;
- print "$sp-> qr/$re/\n";
- return;
- }
-
- if ( UNIVERSAL::isa($v, 'HASH') ) {
- my @sortKeys = sort keys(%$v) ;
- my $more;
- my $tHashDepth = $#sortKeys ;
- $tHashDepth = $#sortKeys < $self->{hashDepth}-1 ? $#sortKeys : $self->{hashDepth}-1
- unless $self->{hashDepth} eq '' ;
- $more = "....\n" if $tHashDepth < $#sortKeys ;
- my $shortmore = "";
- $shortmore = ", ..." if $tHashDepth < $#sortKeys ;
- $#sortKeys = $tHashDepth ;
- if ($self->{compactDump} && !grep(ref $_, values %{$v})) {
- $short = $sp;
- my @keys;
- for (@sortKeys) {
- push @keys, $self->stringify($_) . " => " . $self->stringify($v->{$_});
- }
- $short .= join ', ', @keys;
- $short .= $shortmore;
- (print "$short\n"), return if length $short <= $self->{compactDump};
- }
- for my $key (@sortKeys) {
- return if $DB::signal and $self->{stopDbSignal};
- my $value = $ {$v}{$key} ;
- print $sp, $self->stringify($key), " => ";
- $self->DumpElem($value, $s);
- }
- print "$sp empty hash\n" unless @sortKeys;
- print "$sp$more" if defined $more ;
- } elsif ( UNIVERSAL::isa($v, 'ARRAY') ) {
- my $tArrayDepth = $#{$v} ;
- my $more ;
- $tArrayDepth = $#$v < $self->{arrayDepth}-1 ? $#$v : $self->{arrayDepth}-1
- unless $self->{arrayDepth} eq '' ;
- $more = "....\n" if $tArrayDepth < $#{$v} ;
- my $shortmore = "";
- $shortmore = " ..." if $tArrayDepth < $#{$v} ;
- if ($self->{compactDump} && !grep(ref $_, @{$v})) {
- if ($#$v >= 0) {
- $short = $sp . "0..$#{$v} " .
- join(" ",
- map {exists $v->[$_] ? $self->stringify($v->[$_]) : "empty"} ($[..$tArrayDepth)
- ) . "$shortmore";
- } else {
- $short = $sp . "empty array";
- }
- (print "$short\n"), return if length $short <= $self->{compactDump};
- }
- for my $num ($[ .. $tArrayDepth) {
- return if $DB::signal and $self->{stopDbSignal};
- print "$sp$num ";
- if (exists $v->[$num]) {
- $self->DumpElem($v->[$num], $s);
- } else {
- print "empty slot\n";
- }
- }
- print "$sp empty array\n" unless @$v;
- print "$sp$more" if defined $more ;
- } elsif ( UNIVERSAL::isa($v, 'SCALAR') or ref $v eq 'REF' ) {
- print "$sp-> ";
- $self->DumpElem($$v, $s);
- } elsif ( UNIVERSAL::isa($v, 'CODE') ) {
- print "$sp-> ";
- $self->dumpsub(0, $v);
- } elsif ( UNIVERSAL::isa($v, 'GLOB') ) {
- print "$sp-> ",$self->stringify($$v,1),"\n";
- if ($self->{globPrint}) {
- $s += 3;
- $self->dumpglob('', $s, "{$$v}", $$v, 1);
- } elsif (defined ($fileno = fileno($v))) {
- print( (' ' x ($s+3)) . "FileHandle({$$v}) => fileno($fileno)\n" );
- }
- } elsif (ref \$v eq 'GLOB') {
- if ($self->{globPrint}) {
- $self->dumpglob('', $s, "{$v}", $v, 1);
- } elsif (defined ($fileno = fileno(\$v))) {
- print( (' ' x $s) . "FileHandle({$v}) => fileno($fileno)\n" );
- }
- }
-}
-
-sub matchvar {
- $_[0] eq $_[1] or
- ($_[1] =~ /^([!~])(.)([\x00-\xff]*)/) and
- ($1 eq '!') ^ (eval {($_[2] . "::" . $_[0]) =~ /$2$3/});
-}
-
-sub compactDump {
- my $self = shift;
- $self->{compactDump} = shift if @_;
- $self->{compactDump} = 6*80-1
- if $self->{compactDump} and $self->{compactDump} < 2;
- $self->{compactDump};
-}
-
-sub veryCompact {
- my $self = shift;
- $self->{veryCompact} = shift if @_;
- $self->compactDump(1) if !$self->{compactDump} and $self->{veryCompact};
- $self->{veryCompact};
-}
-
-sub set_unctrl {
- my $self = shift;
- if (@_) {
- my $in = shift;
- if ($in eq 'unctrl' or $in eq 'quote') {
- $self->{unctrl} = $in;
- } else {
- print "Unknown value for `unctrl'.\n";
- }
- }
- $self->{unctrl};
-}
-
-sub set_quote {
- my $self = shift;
- if (@_ and $_[0] eq '"') {
- $self->{tick} = '"';
- $self->{unctrl} = 'quote';
- } elsif (@_ and $_[0] eq 'auto') {
- $self->{tick} = 'auto';
- $self->{unctrl} = 'quote';
- } elsif (@_) { # Need to set
- $self->{tick} = "'";
- $self->{unctrl} = 'unctrl';
- }
- $self->{tick};
-}
-
-sub dumpglob {
- my $self = shift;
- return if $DB::signal and $self->{stopDbSignal};
- my ($package, $off, $key, $val, $all) = @_;
- local(*stab) = $val;
- my $fileno;
- if (($key !~ /^_</ or $self->{dumpDBFiles}) and defined $stab) {
- print( (' ' x $off) . "\$", &unctrl($key), " = " );
- $self->DumpElem($stab, 3+$off);
- }
- if (($key !~ /^_</ or $self->{dumpDBFiles}) and @stab) {
- print( (' ' x $off) . "\@$key = (\n" );
- $self->unwrap(\@stab,3+$off) ;
- print( (' ' x $off) . ")\n" );
- }
- if ($key ne "main::" && $key ne "DB::" && %stab
- && ($self->{dumpPackages} or $key !~ /::$/)
- && ($key !~ /^_</ or $self->{dumpDBFiles})
- && !($package eq "Dumpvalue" and $key eq "stab")) {
- print( (' ' x $off) . "\%$key = (\n" );
- $self->unwrap(\%stab,3+$off) ;
- print( (' ' x $off) . ")\n" );
- }
- if (defined ($fileno = fileno(*stab))) {
- print( (' ' x $off) . "FileHandle($key) => fileno($fileno)\n" );
- }
- if ($all) {
- if (defined &stab) {
- $self->dumpsub($off, $key);
- }
- }
-}
-
-sub CvGV_name {
- my $self = shift;
- my $in = shift;
- return if $self->{skipCvGV}; # Backdoor to avoid problems if XS broken...
- $in = \&$in; # Hard reference...
- eval {require Devel::Peek; 1} or return;
- my $gv = Devel::Peek::CvGV($in) or return;
- *$gv{PACKAGE} . '::' . *$gv{NAME};
-}
-
-sub dumpsub {
- my $self = shift;
- my ($off,$sub) = @_;
- my $ini = $sub;
- my $s;
- $sub = $1 if $sub =~ /^\{\*(.*)\}$/;
- my $subref = defined $1 ? \&$sub : \&$ini;
- my $place = $DB::sub{$sub} || (($s = $subs{"$subref"}) && $DB::sub{$s})
- || (($s = $self->CvGV_name($subref)) && $DB::sub{$s})
- || ($self->{subdump} && ($s = $self->findsubs("$subref"))
- && $DB::sub{$s});
- $s = $sub unless defined $s;
- $place = '???' unless defined $place;
- print( (' ' x $off) . "&$s in $place\n" );
-}
-
-sub findsubs {
- my $self = shift;
- return undef unless %DB::sub;
- my ($addr, $name, $loc);
- while (($name, $loc) = each %DB::sub) {
- $addr = \&$name;
- $subs{"$addr"} = $name;
- }
- $self->{subdump} = 0;
- $subs{ shift() };
-}
-
-sub dumpvars {
- my $self = shift;
- my ($package,@vars) = @_;
- local(%address,$^W);
- my ($key,$val);
- $package .= "::" unless $package =~ /::$/;
- *stab = *main::;
-
- while ($package =~ /(\w+?::)/g) {
- *stab = $ {stab}{$1};
- }
- $self->{TotalStrings} = 0;
- $self->{Strings} = 0;
- $self->{CompleteTotal} = 0;
- while (($key,$val) = each(%stab)) {
- return if $DB::signal and $self->{stopDbSignal};
- next if @vars && !grep( matchvar($key, $_), @vars );
- if ($self->{usageOnly}) {
- $self->globUsage(\$val, $key)
- if ($package ne 'Dumpvalue' or $key ne 'stab')
- and ref(\$val) eq 'GLOB';
- } else {
- $self->dumpglob($package, 0,$key, $val);
- }
- }
- if ($self->{usageOnly}) {
- print <<EOP;
-String space: $self->{TotalStrings} bytes in $self->{Strings} strings.
-EOP
- $self->{CompleteTotal} += $self->{TotalStrings};
- print <<EOP;
-Grand total = $self->{CompleteTotal} bytes (1 level deep) + overhead.
-EOP
- }
-}
-
-sub scalarUsage {
- my $self = shift;
- my $size = length($_[0]);
- $self->{TotalStrings} += $size;
- $self->{Strings}++;
- $size;
-}
-
-sub arrayUsage { # array ref, name
- my $self = shift;
- my $size = 0;
- map {$size += $self->scalarUsage($_)} @{$_[0]};
- my $len = @{$_[0]};
- print "\@$_[1] = $len item", ($len > 1 ? "s" : ""), " (data: $size bytes)\n"
- if defined $_[1];
- $self->{CompleteTotal} += $size;
- $size;
-}
-
-sub hashUsage { # hash ref, name
- my $self = shift;
- my @keys = keys %{$_[0]};
- my @values = values %{$_[0]};
- my $keys = $self->arrayUsage(\@keys);
- my $values = $self->arrayUsage(\@values);
- my $len = @keys;
- my $total = $keys + $values;
- print "\%$_[1] = $len item", ($len > 1 ? "s" : ""),
- " (keys: $keys; values: $values; total: $total bytes)\n"
- if defined $_[1];
- $total;
-}
-
-sub globUsage { # glob ref, name
- my $self = shift;
- local *stab = *{$_[0]};
- my $total = 0;
- $total += $self->scalarUsage($stab) if defined $stab;
- $total += $self->arrayUsage(\@stab, $_[1]) if @stab;
- $total += $self->hashUsage(\%stab, $_[1])
- if %stab and $_[1] ne "main::" and $_[1] ne "DB::";
- #and !($package eq "Dumpvalue" and $key eq "stab"));
- $total;
-}
-
-1;
-
-=head1 NAME
-
-Dumpvalue - provides screen dump of Perl data.
-
-=head1 SYNOPSIS
-
- use Dumpvalue;
- my $dumper = new Dumpvalue;
- $dumper->set(globPrint => 1);
- $dumper->dumpValue(\*::);
- $dumper->dumpvars('main');
-
-=head1 DESCRIPTION
-
-=head2 Creation
-
-A new dumper is created by a call
-
- $d = new Dumpvalue(option1 => value1, option2 => value2)
-
-Recognized options:
-
-=over
-
-=item C<arrayDepth>, C<hashDepth>
-
-Print only first N elements of arrays and hashes. If false, prints all the
-elements.
-
-=item C<compactDump>, C<veryCompact>
-
-Change style of array and hash dump. If true, short array
-may be printed on one line.
-
-=item C<globPrint>
-
-Whether to print contents of globs.
-
-=item C<DumpDBFiles>
-
-Dump arrays holding contents of debugged files.
-
-=item C<DumpPackages>
-
-Dump symbol tables of packages.
-
-=item C<DumpReused>
-
-Dump contents of "reused" addresses.
-
-=item C<tick>, C<HighBit>, C<printUndef>
-
-Change style of string dump. Default value of C<tick> is C<auto>, one
-can enable either double-quotish dump, or single-quotish by setting it
-to C<"> or C<'>. By default, characters with high bit set are printed
-I<as is>.
-
-=item C<UsageOnly>
-
-I<very> rudimentally per-package memory usage dump. If set,
-C<dumpvars> calculates total size of strings in variables in the package.
-
-=item unctrl
-
-Changes the style of printout of strings. Possible values are
-C<unctrl> and C<quote>.
-
-=item subdump
-
-Whether to try to find the subroutine name given the reference.
-
-=item bareStringify
-
-Whether to write the non-overloaded form of the stringify-overloaded objects.
-
-=item quoteHighBit
-
-Whether to print chars with high bit set in binary or "as is".
-
-=item stopDbSignal
-
-Whether to abort printing if debugger signal flag is raised.
-
-=back
-
-Later in the life of the object the methods may be queries with get()
-method and set() method (which accept multiple arguments).
-
-=head2 Methods
-
-=over
-
-=item dumpValue
-
- $dumper->dumpValue($value);
- $dumper->dumpValue([$value1, $value2]);
-
-=item dumpValues
-
- $dumper->dumpValues($value1, $value2);
-
-=item dumpvars
-
- $dumper->dumpvars('my_package');
- $dumper->dumpvars('my_package', 'foo', '~bar$', '!......');
-
-The optional arguments are considered as literal strings unless they
-start with C<~> or C<!>, in which case they are interpreted as regular
-expressions (possibly negated).
-
-The second example prints entries with names C<foo>, and also entries
-with names which ends on C<bar>, or are shorter than 5 chars.
-
-=item set_quote
-
- $d->set_quote('"');
-
-Sets C<tick> and C<unctrl> options to suitable values for printout with the
-given quote char. Possible values are C<auto>, C<'> and C<">.
-
-=item set_unctrl
-
- $d->set_unctrl('"');
-
-Sets C<unctrl> option with checking for an invalid argument.
-Possible values are C<unctrl> and C<quote>.
-
-=item compactDump
-
- $d->compactDump(1);
-
-Sets C<compactDump> option. If the value is 1, sets to a reasonable
-big number.
-
-=item veryCompact
-
- $d->veryCompact(1);
-
-Sets C<compactDump> and C<veryCompact> options simultaneously.
-
-=item set
-
- $d->set(option1 => value1, option2 => value2);
-
-=item get
-
- @values = $d->get('option1', 'option2');
-
-=back
-
-=cut
-
diff --git a/contrib/perl5/lib/English.pm b/contrib/perl5/lib/English.pm
deleted file mode 100644
index f38c313..0000000
--- a/contrib/perl5/lib/English.pm
+++ /dev/null
@@ -1,194 +0,0 @@
-package English;
-
-require Exporter;
-@ISA = (Exporter);
-
-=head1 NAME
-
-English - use nice English (or awk) names for ugly punctuation variables
-
-=head1 SYNOPSIS
-
- use English;
- ...
- if ($ERRNO =~ /denied/) { ... }
-
-=head1 DESCRIPTION
-
-This module provides aliases for the built-in variables whose
-names no one seems to like to read. Variables with side-effects
-which get triggered just by accessing them (like $0) will still
-be affected.
-
-For those variables that have an B<awk> version, both long
-and short English alternatives are provided. For example,
-the C<$/> variable can be referred to either $RS or
-$INPUT_RECORD_SEPARATOR if you are using the English module.
-
-See L<perlvar> for a complete list of these.
-
-=head1 BUGS
-
-This module provokes sizeable inefficiencies for regular expressions,
-due to unfortunate implementation details. If performance matters,
-consider avoiding English.
-
-=cut
-
-no warnings;
-
-# Grandfather $NAME import
-sub import {
- my $this = shift;
- my @list = @_;
- local $Exporter::ExportLevel = 1;
- Exporter::import($this,grep {s/^\$/*/} @list);
-}
-
-@EXPORT = qw(
- *ARG
- *MATCH
- *PREMATCH
- *POSTMATCH
- *LAST_PAREN_MATCH
- *INPUT_LINE_NUMBER
- *NR
- *INPUT_RECORD_SEPARATOR
- *RS
- *OUTPUT_AUTOFLUSH
- *OUTPUT_FIELD_SEPARATOR
- *OFS
- *OUTPUT_RECORD_SEPARATOR
- *ORS
- *LIST_SEPARATOR
- *SUBSCRIPT_SEPARATOR
- *SUBSEP
- *FORMAT_PAGE_NUMBER
- *FORMAT_LINES_PER_PAGE
- *FORMAT_LINES_LEFT
- *FORMAT_NAME
- *FORMAT_TOP_NAME
- *FORMAT_LINE_BREAK_CHARACTERS
- *FORMAT_FORMFEED
- *CHILD_ERROR
- *OS_ERROR
- *ERRNO
- *EXTENDED_OS_ERROR
- *EVAL_ERROR
- *PROCESS_ID
- *PID
- *REAL_USER_ID
- *UID
- *EFFECTIVE_USER_ID
- *EUID
- *REAL_GROUP_ID
- *GID
- *EFFECTIVE_GROUP_ID
- *EGID
- *PROGRAM_NAME
- *PERL_VERSION
- *ACCUMULATOR
- *DEBUGGING
- *SYSTEM_FD_MAX
- *INPLACE_EDIT
- *PERLDB
- *BASETIME
- *WARNING
- *EXECUTABLE_NAME
- *OSNAME
- *LAST_REGEXP_CODE_RESULT
- *EXCEPTIONS_BEING_CAUGHT
- @LAST_MATCH_START
- @LAST_MATCH_END
-);
-
-# The ground of all being. @ARG is deprecated (5.005 makes @_ lexical)
-
- *ARG = *_ ;
-
-# Matching.
-
- *MATCH = *& ;
- *PREMATCH = *` ;
- *POSTMATCH = *' ;
- *LAST_PAREN_MATCH = *+ ;
- *LAST_MATCH_START = *-{ARRAY} ;
- *LAST_MATCH_END = *+{ARRAY} ;
-
-# Input.
-
- *INPUT_LINE_NUMBER = *. ;
- *NR = *. ;
- *INPUT_RECORD_SEPARATOR = */ ;
- *RS = */ ;
-
-# Output.
-
- *OUTPUT_AUTOFLUSH = *| ;
- *OUTPUT_FIELD_SEPARATOR = *, ;
- *OFS = *, ;
- *OUTPUT_RECORD_SEPARATOR = *\ ;
- *ORS = *\ ;
-
-# Interpolation "constants".
-
- *LIST_SEPARATOR = *" ;
- *SUBSCRIPT_SEPARATOR = *; ;
- *SUBSEP = *; ;
-
-# Formats
-
- *FORMAT_PAGE_NUMBER = *% ;
- *FORMAT_LINES_PER_PAGE = *= ;
- *FORMAT_LINES_LEFT = *- ;
- *FORMAT_NAME = *~ ;
- *FORMAT_TOP_NAME = *^ ;
- *FORMAT_LINE_BREAK_CHARACTERS = *: ;
- *FORMAT_FORMFEED = *^L ;
-
-# Error status.
-
- *CHILD_ERROR = *? ;
- *OS_ERROR = *! ;
- *ERRNO = *! ;
- *EXTENDED_OS_ERROR = *^E ;
- *EVAL_ERROR = *@ ;
-
-# Process info.
-
- *PROCESS_ID = *$ ;
- *PID = *$ ;
- *REAL_USER_ID = *< ;
- *UID = *< ;
- *EFFECTIVE_USER_ID = *> ;
- *EUID = *> ;
- *REAL_GROUP_ID = *( ;
- *GID = *( ;
- *EFFECTIVE_GROUP_ID = *) ;
- *EGID = *) ;
- *PROGRAM_NAME = *0 ;
-
-# Internals.
-
- *PERL_VERSION = *^V ;
- *ACCUMULATOR = *^A ;
- *COMPILING = *^C ;
- *DEBUGGING = *^D ;
- *SYSTEM_FD_MAX = *^F ;
- *INPLACE_EDIT = *^I ;
- *PERLDB = *^P ;
- *LAST_REGEXP_CODE_RESULT = *^R ;
- *EXCEPTIONS_BEING_CAUGHT = *^S ;
- *BASETIME = *^T ;
- *WARNING = *^W ;
- *EXECUTABLE_NAME = *^X ;
- *OSNAME = *^O ;
-
-# Deprecated.
-
-# *ARRAY_BASE = *[ ;
-# *OFMT = *# ;
-# *MULTILINE_MATCHING = ** ;
-# *OLD_PERL_VERSION = *] ;
-
-1;
diff --git a/contrib/perl5/lib/Env.pm b/contrib/perl5/lib/Env.pm
deleted file mode 100644
index d1ee071..0000000
--- a/contrib/perl5/lib/Env.pm
+++ /dev/null
@@ -1,233 +0,0 @@
-package Env;
-
-=head1 NAME
-
-Env - perl module that imports environment variables as scalars or arrays
-
-=head1 SYNOPSIS
-
- use Env;
- use Env qw(PATH HOME TERM);
- use Env qw($SHELL @LD_LIBRARY_PATH);
-
-=head1 DESCRIPTION
-
-Perl maintains environment variables in a special hash named C<%ENV>. For
-when this access method is inconvenient, the Perl module C<Env> allows
-environment variables to be treated as scalar or array variables.
-
-The C<Env::import()> function ties environment variables with suitable
-names to global Perl variables with the same names. By default it
-ties all existing environment variables (C<keys %ENV>) to scalars. If
-the C<import> function receives arguments, it takes them to be a list of
-variables to tie; it's okay if they don't yet exist. The scalar type
-prefix '$' is inferred for any element of this list not prefixed by '$'
-or '@'. Arrays are implemented in terms of C<split> and C<join>, using
-C<$Config::Config{path_sep}> as the delimiter.
-
-After an environment variable is tied, merely use it like a normal variable.
-You may access its value
-
- @path = split(/:/, $PATH);
- print join("\n", @LD_LIBRARY_PATH), "\n";
-
-or modify it
-
- $PATH .= ":.";
- push @LD_LIBRARY_PATH, $dir;
-
-however you'd like. Bear in mind, however, that each access to a tied array
-variable requires splitting the environment variable's string anew.
-
-The code:
-
- use Env qw(@PATH);
- push @PATH, '.';
-
-is equivalent to:
-
- use Env qw(PATH);
- $PATH .= ":.";
-
-except that if C<$ENV{PATH}> started out empty, the second approach leaves
-it with the (odd) value "C<:.>", but the first approach leaves it with "C<.>".
-
-To remove a tied environment variable from
-the environment, assign it the undefined value
-
- undef $PATH;
- undef @LD_LIBRARY_PATH;
-
-=head1 LIMITATIONS
-
-On VMS systems, arrays tied to environment variables are read-only. Attempting
-to change anything will cause a warning.
-
-=head1 AUTHOR
-
-Chip Salzenberg E<lt>F<chip@fin.uucp>E<gt>
-and
-Gregor N. Purdy E<lt>F<gregor@focusresearch.com>E<gt>
-
-=cut
-
-sub import {
- my ($callpack) = caller(0);
- my $pack = shift;
- my @vars = grep /^[\$\@]?[A-Za-z_]\w*$/, (@_ ? @_ : keys(%ENV));
- return unless @vars;
-
- @vars = map { m/^[\$\@]/ ? $_ : '$'.$_ } @vars;
-
- eval "package $callpack; use vars qw(" . join(' ', @vars) . ")";
- die $@ if $@;
- foreach (@vars) {
- my ($type, $name) = m/^([\$\@])(.*)$/;
- if ($type eq '$') {
- tie ${"${callpack}::$name"}, Env, $name;
- } else {
- if ($^O eq 'VMS') {
- tie @{"${callpack}::$name"}, Env::Array::VMS, $name;
- } else {
- tie @{"${callpack}::$name"}, Env::Array, $name;
- }
- }
- }
-}
-
-sub TIESCALAR {
- bless \($_[1]);
-}
-
-sub FETCH {
- my ($self) = @_;
- $ENV{$$self};
-}
-
-sub STORE {
- my ($self, $value) = @_;
- if (defined($value)) {
- $ENV{$$self} = $value;
- } else {
- delete $ENV{$$self};
- }
-}
-
-######################################################################
-
-package Env::Array;
-
-use Config;
-use Tie::Array;
-
-@ISA = qw(Tie::Array);
-
-my $sep = $Config::Config{path_sep};
-
-sub TIEARRAY {
- bless \($_[1]);
-}
-
-sub FETCHSIZE {
- my ($self) = @_;
- my @temp = split($sep, $ENV{$$self});
- return scalar(@temp);
-}
-
-sub STORESIZE {
- my ($self, $size) = @_;
- my @temp = split($sep, $ENV{$$self});
- $#temp = $size - 1;
- $ENV{$$self} = join($sep, @temp);
-}
-
-sub CLEAR {
- my ($self) = @_;
- $ENV{$$self} = '';
-}
-
-sub FETCH {
- my ($self, $index) = @_;
- return (split($sep, $ENV{$$self}))[$index];
-}
-
-sub STORE {
- my ($self, $index, $value) = @_;
- my @temp = split($sep, $ENV{$$self});
- $temp[$index] = $value;
- $ENV{$$self} = join($sep, @temp);
- return $value;
-}
-
-sub PUSH {
- my $self = shift;
- my @temp = split($sep, $ENV{$$self});
- push @temp, @_;
- $ENV{$$self} = join($sep, @temp);
- return scalar(@temp);
-}
-
-sub POP {
- my ($self) = @_;
- my @temp = split($sep, $ENV{$$self});
- my $result = pop @temp;
- $ENV{$$self} = join($sep, @temp);
- return $result;
-}
-
-sub UNSHIFT {
- my $self = shift;
- my @temp = split($sep, $ENV{$$self});
- my $result = unshift @temp, @_;
- $ENV{$$self} = join($sep, @temp);
- return $result;
-}
-
-sub SHIFT {
- my ($self) = @_;
- my @temp = split($sep, $ENV{$$self});
- my $result = shift @temp;
- $ENV{$$self} = join($sep, @temp);
- return $result;
-}
-
-sub SPLICE {
- my $self = shift;
- my $offset = shift;
- my $length = shift;
- my @temp = split($sep, $ENV{$$self});
- if (wantarray) {
- my @result = splice @temp, $self, $offset, $length, @_;
- $ENV{$$self} = join($sep, @temp);
- return @result;
- } else {
- my $result = scalar splice @temp, $offset, $length, @_;
- $ENV{$$self} = join($sep, @temp);
- return $result;
- }
-}
-
-######################################################################
-
-package Env::Array::VMS;
-use Tie::Array;
-
-@ISA = qw(Tie::Array);
-
-sub TIEARRAY {
- bless \($_[1]);
-}
-
-sub FETCHSIZE {
- my ($self) = @_;
- my $i = 0;
- while ($i < 127 and defined $ENV{$$self . ';' . $i}) { $i++; };
- return $i;
-}
-
-sub FETCH {
- my ($self, $index) = @_;
- return $ENV{$$self . ';' . $index};
-}
-
-1;
diff --git a/contrib/perl5/lib/Exporter.pm b/contrib/perl5/lib/Exporter.pm
deleted file mode 100644
index 585109e..0000000
--- a/contrib/perl5/lib/Exporter.pm
+++ /dev/null
@@ -1,313 +0,0 @@
-package Exporter;
-
-require 5.001;
-
-$ExportLevel = 0;
-$Verbose ||= 0;
-$VERSION = '5.562';
-
-sub export_to_level {
- require Exporter::Heavy;
- goto &heavy_export_to_level;
-}
-
-sub export {
- require Exporter::Heavy;
- goto &heavy_export;
-}
-
-sub export_tags {
- require Exporter::Heavy;
- _push_tags((caller)[0], "EXPORT", \@_);
-}
-
-sub export_ok_tags {
- require Exporter::Heavy;
- _push_tags((caller)[0], "EXPORT_OK", \@_);
-}
-
-sub import {
- my $pkg = shift;
- my $callpkg = caller($ExportLevel);
- *exports = *{"$pkg\::EXPORT"};
- # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-(
- *fail = *{"$pkg\::EXPORT_FAIL"};
- return export $pkg, $callpkg, @_
- if $Verbose or $Debug or @fail > 1;
- my $args = @_ or @_ = @exports;
-
- if ($args and not %exports) {
- foreach my $sym (@exports, @{"$pkg\::EXPORT_OK"}) {
- $sym =~ s/^&//;
- $exports{$sym} = 1;
- }
- }
- if ($Verbose or $Debug
- or grep {/\W/ or $args and not exists $exports{$_}
- or @fail and $_ eq $fail[0]
- or (@{"$pkg\::EXPORT_OK"}
- and $_ eq ${"$pkg\::EXPORT_OK"}[0])} @_) {
- return export $pkg, $callpkg, ($args ? @_ : ());
- }
- #local $SIG{__WARN__} = sub {require Carp; goto &Carp::carp};
- local $SIG{__WARN__} =
- sub {require Carp; local $Carp::CarpLevel = 1; &Carp::carp};
- foreach $sym (@_) {
- # shortcut for the common case of no type character
- *{"$callpkg\::$sym"} = \&{"$pkg\::$sym"};
- }
-}
-
-1;
-
-# A simple self test harness. Change 'require Carp' to 'use Carp ()' for testing.
-# package main; eval(join('',<DATA>)) or die $@ unless caller;
-__END__
-package Test;
-$INC{'Exporter.pm'} = 1;
-@ISA = qw(Exporter);
-@EXPORT = qw(A1 A2 A3 A4 A5);
-@EXPORT_OK = qw(B1 B2 B3 B4 B5);
-%EXPORT_TAGS = (T1=>[qw(A1 A2 B1 B2)], T2=>[qw(A1 A2 B3 B4)], T3=>[qw(X3)]);
-@EXPORT_FAIL = qw(B4);
-Exporter::export_ok_tags('T3', 'unknown_tag');
-sub export_fail {
- map { "Test::$_" } @_ # edit symbols just as an example
-}
-
-package main;
-$Exporter::Verbose = 1;
-#import Test;
-#import Test qw(X3); # export ok via export_ok_tags()
-#import Test qw(:T1 !A2 /5/ !/3/ B5);
-import Test qw(:T2 !B4);
-import Test qw(:T2); # should fail
-1;
-
-=head1 NAME
-
-Exporter - Implements default import method for modules
-
-=head1 SYNOPSIS
-
-In module ModuleName.pm:
-
- package ModuleName;
- require Exporter;
- @ISA = qw(Exporter);
-
- @EXPORT = qw(...); # symbols to export by default
- @EXPORT_OK = qw(...); # symbols to export on request
- %EXPORT_TAGS = tag => [...]; # define names for sets of symbols
-
-In other files which wish to use ModuleName:
-
- use ModuleName; # import default symbols into my package
-
- use ModuleName qw(...); # import listed symbols into my package
-
- use ModuleName (); # do not import any symbols
-
-=head1 DESCRIPTION
-
-The Exporter module implements a default C<import> method which
-many modules choose to inherit rather than implement their own.
-
-Perl automatically calls the C<import> method when processing a
-C<use> statement for a module. Modules and C<use> are documented
-in L<perlfunc> and L<perlmod>. Understanding the concept of
-modules and how the C<use> statement operates is important to
-understanding the Exporter.
-
-=head2 How to Export
-
-The arrays C<@EXPORT> and C<@EXPORT_OK> in a module hold lists of
-symbols that are going to be exported into the users name space by
-default, or which they can request to be exported, respectively. The
-symbols can represent functions, scalars, arrays, hashes, or typeglobs.
-The symbols must be given by full name with the exception that the
-ampersand in front of a function is optional, e.g.
-
- @EXPORT = qw(afunc $scalar @array); # afunc is a function
- @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc
-
-=head2 Selecting What To Export
-
-Do B<not> export method names!
-
-Do B<not> export anything else by default without a good reason!
-
-Exports pollute the namespace of the module user. If you must export
-try to use @EXPORT_OK in preference to @EXPORT and avoid short or
-common symbol names to reduce the risk of name clashes.
-
-Generally anything not exported is still accessible from outside the
-module using the ModuleName::item_name (or $blessed_ref-E<gt>method)
-syntax. By convention you can use a leading underscore on names to
-informally indicate that they are 'internal' and not for public use.
-
-(It is actually possible to get private functions by saying:
-
- my $subref = sub { ... };
- &$subref;
-
-But there's no way to call that directly as a method, since a method
-must have a name in the symbol table.)
-
-As a general rule, if the module is trying to be object oriented
-then export nothing. If it's just a collection of functions then
-@EXPORT_OK anything but use @EXPORT with caution.
-
-Other module design guidelines can be found in L<perlmod>.
-
-=head2 Specialised Import Lists
-
-If the first entry in an import list begins with !, : or / then the
-list is treated as a series of specifications which either add to or
-delete from the list of names to import. They are processed left to
-right. Specifications are in the form:
-
- [!]name This name only
- [!]:DEFAULT All names in @EXPORT
- [!]:tag All names in $EXPORT_TAGS{tag} anonymous list
- [!]/pattern/ All names in @EXPORT and @EXPORT_OK which match
-
-A leading ! indicates that matching names should be deleted from the
-list of names to import. If the first specification is a deletion it
-is treated as though preceded by :DEFAULT. If you just want to import
-extra names in addition to the default set you will still need to
-include :DEFAULT explicitly.
-
-e.g., Module.pm defines:
-
- @EXPORT = qw(A1 A2 A3 A4 A5);
- @EXPORT_OK = qw(B1 B2 B3 B4 B5);
- %EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]);
-
- Note that you cannot use tags in @EXPORT or @EXPORT_OK.
- Names in EXPORT_TAGS must also appear in @EXPORT or @EXPORT_OK.
-
-An application using Module can say something like:
-
- use Module qw(:DEFAULT :T2 !B3 A3);
-
-Other examples include:
-
- use Socket qw(!/^[AP]F_/ !SOMAXCONN !SOL_SOCKET);
- use POSIX qw(:errno_h :termios_h !TCSADRAIN !/^EXIT/);
-
-Remember that most patterns (using //) will need to be anchored
-with a leading ^, e.g., C</^EXIT/> rather than C</EXIT/>.
-
-You can say C<BEGIN { $Exporter::Verbose=1 }> to see how the
-specifications are being processed and what is actually being imported
-into modules.
-
-=head2 Exporting without using Export's import method
-
-Exporter has a special method, 'export_to_level' which is used in situations
-where you can't directly call Export's import method. The export_to_level
-method looks like:
-
-MyPackage->export_to_level($where_to_export, $package, @what_to_export);
-
-where $where_to_export is an integer telling how far up the calling stack
-to export your symbols, and @what_to_export is an array telling what
-symbols *to* export (usually this is @_). The $package argument is
-currently unused.
-
-For example, suppose that you have a module, A, which already has an
-import function:
-
-package A;
-
-@ISA = qw(Exporter);
-@EXPORT_OK = qw ($b);
-
-sub import
-{
- $A::b = 1; # not a very useful import method
-}
-
-and you want to Export symbol $A::b back to the module that called
-package A. Since Exporter relies on the import method to work, via
-inheritance, as it stands Exporter::import() will never get called.
-Instead, say the following:
-
-package A;
-@ISA = qw(Exporter);
-@EXPORT_OK = qw ($b);
-
-sub import
-{
- $A::b = 1;
- A->export_to_level(1, @_);
-}
-
-This will export the symbols one level 'above' the current package - ie: to
-the program or module that used package A.
-
-Note: Be careful not to modify '@_' at all before you call export_to_level
-- or people using your package will get very unexplained results!
-
-
-=head2 Module Version Checking
-
-The Exporter module will convert an attempt to import a number from a
-module into a call to $module_name-E<gt>require_version($value). This can
-be used to validate that the version of the module being used is
-greater than or equal to the required version.
-
-The Exporter module supplies a default require_version method which
-checks the value of $VERSION in the exporting module.
-
-Since the default require_version method treats the $VERSION number as
-a simple numeric value it will regard version 1.10 as lower than
-1.9. For this reason it is strongly recommended that you use numbers
-with at least two decimal places, e.g., 1.09.
-
-=head2 Managing Unknown Symbols
-
-In some situations you may want to prevent certain symbols from being
-exported. Typically this applies to extensions which have functions
-or constants that may not exist on some systems.
-
-The names of any symbols that cannot be exported should be listed
-in the C<@EXPORT_FAIL> array.
-
-If a module attempts to import any of these symbols the Exporter
-will give the module an opportunity to handle the situation before
-generating an error. The Exporter will call an export_fail method
-with a list of the failed symbols:
-
- @failed_symbols = $module_name->export_fail(@failed_symbols);
-
-If the export_fail method returns an empty list then no error is
-recorded and all the requested symbols are exported. If the returned
-list is not empty then an error is generated for each symbol and the
-export fails. The Exporter provides a default export_fail method which
-simply returns the list unchanged.
-
-Uses for the export_fail method include giving better error messages
-for some symbols and performing lazy architectural checks (put more
-symbols into @EXPORT_FAIL by default and then take them out if someone
-actually tries to use them and an expensive check shows that they are
-usable on that platform).
-
-=head2 Tag Handling Utility Functions
-
-Since the symbols listed within %EXPORT_TAGS must also appear in either
-@EXPORT or @EXPORT_OK, two utility functions are provided which allow
-you to easily add tagged sets of symbols to @EXPORT or @EXPORT_OK:
-
- %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);
-
- Exporter::export_tags('foo'); # add aa, bb and cc to @EXPORT
- Exporter::export_ok_tags('bar'); # add aa, cc and dd to @EXPORT_OK
-
-Any names which are not tags are added to @EXPORT or @EXPORT_OK
-unchanged but will trigger a warning (with C<-w>) to avoid misspelt tags
-names being silently added to @EXPORT or @EXPORT_OK. Future versions
-may make this a fatal error.
-
-=cut
diff --git a/contrib/perl5/lib/Exporter/Heavy.pm b/contrib/perl5/lib/Exporter/Heavy.pm
deleted file mode 100644
index 6647f70..0000000
--- a/contrib/perl5/lib/Exporter/Heavy.pm
+++ /dev/null
@@ -1,225 +0,0 @@
-package Exporter;
-
-=head1 NAME
-
-Exporter::Heavy - Exporter guts
-
-=head1 SYNOPIS
-
-(internal use only)
-
-=head1 DESCRIPTION
-
-No user-serviceable parts inside.
-
-=cut
-#
-# We go to a lot of trouble not to 'require Carp' at file scope,
-# because Carp requires Exporter, and something has to give.
-#
-
-sub heavy_export {
-
- # First make import warnings look like they're coming from the "use".
- local $SIG{__WARN__} = sub {
- my $text = shift;
- if ($text =~ s/ at \S*Exporter\S*.pm line \d+.*\n//) {
- require Carp;
- local $Carp::CarpLevel = 1; # ignore package calling us too.
- Carp::carp($text);
- }
- else {
- warn $text;
- }
- };
- local $SIG{__DIE__} = sub {
- require Carp;
- local $Carp::CarpLevel = 1; # ignore package calling us too.
- Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT")
- if $_[0] =~ /^Unable to create sub named "(.*?)::"/;
- };
-
- my($pkg, $callpkg, @imports) = @_;
- my($type, $sym, $oops);
- *exports = *{"${pkg}::EXPORT"};
-
- if (@imports) {
- if (!%exports) {
- grep(s/^&//, @exports);
- @exports{@exports} = (1) x @exports;
- my $ok = \@{"${pkg}::EXPORT_OK"};
- if (@$ok) {
- grep(s/^&//, @$ok);
- @exports{@$ok} = (1) x @$ok;
- }
- }
-
- if ($imports[0] =~ m#^[/!:]#){
- my $tagsref = \%{"${pkg}::EXPORT_TAGS"};
- my $tagdata;
- my %imports;
- my($remove, $spec, @names, @allexports);
- # negated first item implies starting with default set:
- unshift @imports, ':DEFAULT' if $imports[0] =~ m/^!/;
- foreach $spec (@imports){
- $remove = $spec =~ s/^!//;
-
- if ($spec =~ s/^://){
- if ($spec eq 'DEFAULT'){
- @names = @exports;
- }
- elsif ($tagdata = $tagsref->{$spec}) {
- @names = @$tagdata;
- }
- else {
- warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS];
- ++$oops;
- next;
- }
- }
- elsif ($spec =~ m:^/(.*)/$:){
- my $patn = $1;
- @allexports = keys %exports unless @allexports; # only do keys once
- @names = grep(/$patn/, @allexports); # not anchored by default
- }
- else {
- @names = ($spec); # is a normal symbol name
- }
-
- warn "Import ".($remove ? "del":"add").": @names "
- if $Verbose;
-
- if ($remove) {
- foreach $sym (@names) { delete $imports{$sym} }
- }
- else {
- @imports{@names} = (1) x @names;
- }
- }
- @imports = keys %imports;
- }
-
- foreach $sym (@imports) {
- if (!$exports{$sym}) {
- if ($sym =~ m/^\d/) {
- $pkg->require_version($sym);
- # If the version number was the only thing specified
- # then we should act as if nothing was specified:
- if (@imports == 1) {
- @imports = @exports;
- last;
- }
- # We need a way to emulate 'use Foo ()' but still
- # allow an easy version check: "use Foo 1.23, ''";
- if (@imports == 2 and !$imports[1]) {
- @imports = ();
- last;
- }
- } elsif ($sym !~ s/^&// || !$exports{$sym}) {
- require Carp;
- Carp::carp(qq["$sym" is not exported by the $pkg module]);
- $oops++;
- }
- }
- }
- if ($oops) {
- require Carp;
- Carp::croak("Can't continue after import errors");
- }
- }
- else {
- @imports = @exports;
- }
-
- *fail = *{"${pkg}::EXPORT_FAIL"};
- if (@fail) {
- if (!%fail) {
- # Build cache of symbols. Optimise the lookup by adding
- # barewords twice... both with and without a leading &.
- # (Technique could be applied to %exports cache at cost of memory)
- my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @fail;
- warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Verbose;
- @fail{@expanded} = (1) x @expanded;
- }
- my @failed;
- foreach $sym (@imports) { push(@failed, $sym) if $fail{$sym} }
- if (@failed) {
- @failed = $pkg->export_fail(@failed);
- foreach $sym (@failed) {
- require Carp;
- Carp::carp(qq["$sym" is not implemented by the $pkg module ],
- "on this architecture");
- }
- if (@failed) {
- require Carp;
- Carp::croak("Can't continue after import errors");
- }
- }
- }
-
- warn "Importing into $callpkg from $pkg: ",
- join(", ",sort @imports) if $Verbose;
-
- foreach $sym (@imports) {
- # shortcut for the common case of no type character
- (*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next)
- unless $sym =~ s/^(\W)//;
- $type = $1;
- *{"${callpkg}::$sym"} =
- $type eq '&' ? \&{"${pkg}::$sym"} :
- $type eq '$' ? \${"${pkg}::$sym"} :
- $type eq '@' ? \@{"${pkg}::$sym"} :
- $type eq '%' ? \%{"${pkg}::$sym"} :
- $type eq '*' ? *{"${pkg}::$sym"} :
- do { require Carp; Carp::croak("Can't export symbol: $type$sym") };
- }
-}
-
-sub heavy_export_to_level
-{
- my $pkg = shift;
- my $level = shift;
- (undef) = shift; # XXX redundant arg
- my $callpkg = caller($level);
- $pkg->export($callpkg, @_);
-}
-
-# Utility functions
-
-sub _push_tags {
- my($pkg, $var, $syms) = @_;
- my $nontag;
- *export_tags = \%{"${pkg}::EXPORT_TAGS"};
- push(@{"${pkg}::$var"},
- map { $export_tags{$_} ? @{$export_tags{$_}} : scalar(++$nontag,$_) }
- (@$syms) ? @$syms : keys %export_tags);
- if ($nontag and $^W) {
- # This may change to a die one day
- require Carp;
- Carp::carp("Some names are not tags");
- }
-}
-
-# Default methods
-
-sub export_fail {
- my $self = shift;
- @_;
-}
-
-sub require_version {
- my($self, $wanted) = @_;
- my $pkg = ref $self || $self;
- my $version = ${"${pkg}::VERSION"};
- if (!$version or $version < $wanted) {
- $version ||= "(undef)";
- # %INC contains slashes, but $pkg contains double-colons.
- my $file = (map {s,::,/,g; $INC{$_}} "$pkg.pm")[0];
- $file &&= " ($file)";
- require Carp;
- Carp::croak("$pkg $wanted required--this is only version $version$file")
- }
- $version;
-}
-
-1;
diff --git a/contrib/perl5/lib/ExtUtils/Command.pm b/contrib/perl5/lib/ExtUtils/Command.pm
deleted file mode 100644
index aec4013..0000000
--- a/contrib/perl5/lib/ExtUtils/Command.pm
+++ /dev/null
@@ -1,213 +0,0 @@
-package ExtUtils::Command;
-
-use 5.005_64;
-use strict;
-# use AutoLoader;
-use Carp;
-use File::Copy;
-use File::Compare;
-use File::Basename;
-use File::Path qw(rmtree);
-require Exporter;
-our(@ISA, @EXPORT, $VERSION);
-@ISA = qw(Exporter);
-@EXPORT = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f);
-$VERSION = '1.01';
-
-=head1 NAME
-
-ExtUtils::Command - utilities to replace common UNIX commands in Makefiles etc.
-
-=head1 SYNOPSIS
-
- perl -MExtUtils::Command -e cat files... > destination
- perl -MExtUtils::Command -e mv source... destination
- perl -MExtUtils::Command -e cp source... destination
- perl -MExtUtils::Command -e touch files...
- perl -MExtUtils::Command -e rm_f file...
- perl -MExtUtils::Command -e rm_rf directories...
- perl -MExtUtils::Command -e mkpath directories...
- perl -MExtUtils::Command -e eqtime source destination
- perl -MExtUtils::Command -e chmod mode files...
- perl -MExtUtils::Command -e test_f file
-
-=head1 DESCRIPTION
-
-The module is used in the Win32 port to replace common UNIX commands.
-Most commands are wrappers on generic modules File::Path and File::Basename.
-
-=over 4
-
-=cut
-
-sub expand_wildcards
-{
- @ARGV = map(/[\*\?]/ ? glob($_) : $_,@ARGV);
-}
-
-=item cat
-
-Concatenates all files mentioned on command line to STDOUT.
-
-=cut
-
-sub cat ()
-{
- expand_wildcards();
- print while (<>);
-}
-
-=item eqtime src dst
-
-Sets modified time of dst to that of src
-
-=cut
-
-sub eqtime
-{
- my ($src,$dst) = @ARGV;
- open(F,">$dst");
- close(F);
- utime((stat($src))[8,9],$dst);
-}
-
-=item rm_f files....
-
-Removes directories - recursively (even if readonly)
-
-=cut
-
-sub rm_rf
-{
- rmtree([grep -e $_,expand_wildcards()],0,0);
-}
-
-=item rm_f files....
-
-Removes files (even if readonly)
-
-=cut
-
-sub rm_f
-{
- foreach (expand_wildcards())
- {
- next unless -f $_;
- next if unlink($_);
- chmod(0777,$_);
- next if unlink($_);
- carp "Cannot delete $_:$!";
- }
-}
-
-=item touch files ...
-
-Makes files exist, with current timestamp
-
-=cut
-
-sub touch
-{
- expand_wildcards();
- my $t = time;
- while (@ARGV)
- {
- my $file = shift(@ARGV);
- open(FILE,">>$file") || die "Cannot write $file:$!";
- close(FILE);
- utime($t,$t,$file);
- }
-}
-
-=item mv source... destination
-
-Moves source to destination.
-Multiple sources are allowed if destination is an existing directory.
-
-=cut
-
-sub mv
-{
- my $dst = pop(@ARGV);
- expand_wildcards();
- croak("Too many arguments") if (@ARGV > 1 && ! -d $dst);
- while (@ARGV)
- {
- my $src = shift(@ARGV);
- move($src,$dst);
- }
-}
-
-=item cp source... destination
-
-Copies source to destination.
-Multiple sources are allowed if destination is an existing directory.
-
-=cut
-
-sub cp
-{
- my $dst = pop(@ARGV);
- expand_wildcards();
- croak("Too many arguments") if (@ARGV > 1 && ! -d $dst);
- while (@ARGV)
- {
- my $src = shift(@ARGV);
- copy($src,$dst);
- }
-}
-
-=item chmod mode files...
-
-Sets UNIX like permissions 'mode' on all the files.
-
-=cut
-
-sub chmod
-{
- my $mode = shift(@ARGV);
- chmod($mode,expand_wildcards()) || die "Cannot chmod ".join(' ',$mode,@ARGV).":$!";
-}
-
-=item mkpath directory...
-
-Creates directory, including any parent directories.
-
-=cut
-
-sub mkpath
-{
- File::Path::mkpath([expand_wildcards()],0,0777);
-}
-
-=item test_f file
-
-Tests if a file exists
-
-=cut
-
-sub test_f
-{
- exit !-f shift(@ARGV);
-}
-
-
-1;
-__END__
-
-=back
-
-=head1 BUGS
-
-Should probably be Auto/Self loaded.
-
-=head1 SEE ALSO
-
-ExtUtils::MakeMaker, ExtUtils::MM_Unix, ExtUtils::MM_Win32
-
-=head1 AUTHOR
-
-Nick Ing-Simmons <F<nick@ni-s.u-net.com>>.
-
-=cut
-
diff --git a/contrib/perl5/lib/ExtUtils/Embed.pm b/contrib/perl5/lib/ExtUtils/Embed.pm
deleted file mode 100644
index 98c24ac..0000000
--- a/contrib/perl5/lib/ExtUtils/Embed.pm
+++ /dev/null
@@ -1,490 +0,0 @@
-# $Id: Embed.pm,v 1.2501 $
-require 5.002;
-
-package ExtUtils::Embed;
-require Exporter;
-require FileHandle;
-use Config;
-use Getopt::Std;
-use File::Spec;
-
-#Only when we need them
-#require ExtUtils::MakeMaker;
-#require ExtUtils::Liblist;
-
-use vars qw(@ISA @EXPORT $VERSION
- @Extensions $Verbose $lib_ext
- $opt_o $opt_s
- );
-use strict;
-
-$VERSION = sprintf("%d.%02d", q$Revision: 1.2505 $ =~ /(\d+)\.(\d+)/);
-
-@ISA = qw(Exporter);
-@EXPORT = qw(&xsinit &ldopts
- &ccopts &ccflags &ccdlflags &perl_inc
- &xsi_header &xsi_protos &xsi_body);
-
-#let's have Miniperl borrow from us instead
-#require ExtUtils::Miniperl;
-#*canon = \&ExtUtils::Miniperl::canon;
-
-$Verbose = 0;
-$lib_ext = $Config{lib_ext} || '.a';
-
-sub is_cmd { $0 eq '-e' }
-
-sub my_return {
- my $val = shift;
- if(is_cmd) {
- print $val;
- }
- else {
- return $val;
- }
-}
-
-sub is_perl_object {
- $Config{ccflags} =~ /-DPERL_OBJECT/;
-}
-
-sub xsinit {
- my($file, $std, $mods) = @_;
- my($fh,@mods,%seen);
- $file ||= "perlxsi.c";
- my $xsinit_proto = "pTHXo";
-
- if (@_) {
- @mods = @$mods if $mods;
- }
- else {
- getopts('o:s:');
- $file = $opt_o if defined $opt_o;
- $std = $opt_s if defined $opt_s;
- @mods = @ARGV;
- }
- $std = 1 unless scalar @mods;
-
- if ($file eq "STDOUT") {
- $fh = \*STDOUT;
- }
- else {
- $fh = new FileHandle "> $file";
- }
-
- push(@mods, static_ext()) if defined $std;
- @mods = grep(!$seen{$_}++, @mods);
-
- print $fh &xsi_header();
- print $fh "EXTERN_C void xs_init ($xsinit_proto);\n\n";
- print $fh &xsi_protos(@mods);
-
- print $fh "\nEXTERN_C void\nxs_init($xsinit_proto)\n{\n";
- print $fh &xsi_body(@mods);
- print $fh "}\n";
-
-}
-
-sub xsi_header {
- return <<EOF;
-#include <EXTERN.h>
-#include <perl.h>
-
-EOF
-}
-
-sub xsi_protos {
- my(@exts) = @_;
- my(@retval,%seen);
- my $boot_proto = "pTHXo_ CV* cv";
- foreach $_ (@exts){
- my($pname) = canon('/', $_);
- my($mname, $cname);
- ($mname = $pname) =~ s!/!::!g;
- ($cname = $pname) =~ s!/!__!g;
- my($ccode) = "EXTERN_C void boot_${cname} ($boot_proto);\n";
- next if $seen{$ccode}++;
- push(@retval, $ccode);
- }
- return join '', @retval;
-}
-
-sub xsi_body {
- my(@exts) = @_;
- my($pname,@retval,%seen);
- my($dl) = canon('/','DynaLoader');
- push(@retval, "\tchar *file = __FILE__;\n");
- push(@retval, "\tdXSUB_SYS;\n") if $] > 5.002;
- push(@retval, "\n");
-
- foreach $_ (@exts){
- my($pname) = canon('/', $_);
- my($mname, $cname, $ccode);
- ($mname = $pname) =~ s!/!::!g;
- ($cname = $pname) =~ s!/!__!g;
- if ($pname eq $dl){
- # Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
- # boot_DynaLoader is called directly in DynaLoader.pm
- $ccode = "\t/* DynaLoader is a special case */\n\tnewXS(\"${mname}::boot_${cname}\", boot_${cname}, file);\n";
- push(@retval, $ccode) unless $seen{$ccode}++;
- } else {
- $ccode = "\tnewXS(\"${mname}::bootstrap\", boot_${cname}, file);\n";
- push(@retval, $ccode) unless $seen{$ccode}++;
- }
- }
- return join '', @retval;
-}
-
-sub static_ext {
- unless (scalar @Extensions) {
- @Extensions = sort split /\s+/, $Config{static_ext};
- unshift @Extensions, qw(DynaLoader);
- }
- @Extensions;
-}
-
-sub ldopts {
- require ExtUtils::MakeMaker;
- require ExtUtils::Liblist;
- my($std,$mods,$link_args,$path) = @_;
- my(@mods,@link_args,@argv);
- my($dllib,$config_libs,@potential_libs,@path);
- local($") = ' ' unless $" eq ' ';
- my $MM = bless {} => 'MY';
- if (scalar @_) {
- @link_args = @$link_args if $link_args;
- @mods = @$mods if $mods;
- }
- else {
- @argv = @ARGV;
- #hmm
- while($_ = shift @argv) {
- /^-std$/ && do { $std = 1; next; };
- /^--$/ && do { @link_args = @argv; last; };
- /^-I(.*)/ && do { $path = $1 || shift @argv; next; };
- push(@mods, $_);
- }
- }
- $std = 1 unless scalar @link_args;
- my $sep = $Config{path_sep} || ':';
- @path = $path ? split(/\Q$sep/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
- # makemaker includes std libs on windows by default
- if ($^O ne 'MSWin32' and defined($std)) {
- push(@potential_libs, $Config{perllibs});
- }
-
- push(@mods, static_ext()) if $std;
-
- my($mod,@ns,$root,$sub,$extra,$archive,@archives);
- print STDERR "Searching (@path) for archives\n" if $Verbose;
- foreach $mod (@mods) {
- @ns = split(/::|\/|\\/, $mod);
- $sub = $ns[-1];
- $root = $MM->catdir(@ns);
-
- print STDERR "searching for '$sub${lib_ext}'\n" if $Verbose;
- foreach (@path) {
- next unless -e ($archive = $MM->catdir($_,"auto",$root,"$sub$lib_ext"));
- push @archives, $archive;
- if(-e ($extra = $MM->catdir($_,"auto",$root,"extralibs.ld"))) {
- local(*FH);
- if(open(FH, $extra)) {
- my($libs) = <FH>; chomp $libs;
- push @potential_libs, split /\s+/, $libs;
- }
- else {
- warn "Couldn't open '$extra'";
- }
- }
- last;
- }
- }
- #print STDERR "\@potential_libs = @potential_libs\n";
-
- my $libperl;
- if ($^O eq 'MSWin32') {
- $libperl = $Config{libperl};
- }
- else {
- $libperl = (grep(/^-l\w*perl\w*$/, @link_args))[0] || "-lperl";
- }
-
- my $lpath = File::Spec->catdir($Config{archlibexp}, 'CORE');
- $lpath = qq["$lpath"] if $^O eq 'MSWin32';
- my($extralibs, $bsloadlibs, $ldloadlibs, $ld_run_path) =
- $MM->ext(join ' ', "-L$lpath", $libperl, @potential_libs);
-
- my $ld_or_bs = $bsloadlibs || $ldloadlibs;
- print STDERR "bs: $bsloadlibs ** ld: $ldloadlibs" if $Verbose;
- my $linkage = "$Config{ccdlflags} $Config{ldflags} @archives $ld_or_bs";
- print STDERR "ldopts: '$linkage'\n" if $Verbose;
-
- return $linkage if scalar @_;
- my_return("$linkage\n");
-}
-
-sub ccflags {
- my_return(" $Config{ccflags} ");
-}
-
-sub ccdlflags {
- my_return(" $Config{ccdlflags} ");
-}
-
-sub perl_inc {
- my $dir = File::Spec->catdir($Config{archlibexp}, 'CORE');
- $dir = qq["$dir"] if $^O eq 'MSWin32';
- my_return(" -I$dir ");
-}
-
-sub ccopts {
- ccflags . perl_inc;
-}
-
-sub canon {
- my($as, @ext) = @_;
- foreach(@ext) {
- # might be X::Y or lib/auto/X/Y/Y.a
- next if s!::!/!g;
- s:^(lib|ext)/(auto/)?::;
- s:/\w+\.\w+$::;
- }
- grep(s:/:$as:, @ext) if ($as ne '/');
- @ext;
-}
-
-__END__
-
-=head1 NAME
-
-ExtUtils::Embed - Utilities for embedding Perl in C/C++ applications
-
-=head1 SYNOPSIS
-
-
- perl -MExtUtils::Embed -e xsinit
- perl -MExtUtils::Embed -e ccopts
- perl -MExtUtils::Embed -e ldopts
-
-=head1 DESCRIPTION
-
-ExtUtils::Embed provides utility functions for embedding a Perl interpreter
-and extensions in your C/C++ applications.
-Typically, an application B<Makefile> will invoke ExtUtils::Embed
-functions while building your application.
-
-=head1 @EXPORT
-
-ExtUtils::Embed exports the following functions:
-
-xsinit(), ldopts(), ccopts(), perl_inc(), ccflags(),
-ccdlflags(), xsi_header(), xsi_protos(), xsi_body()
-
-=head1 FUNCTIONS
-
-=over
-
-=item xsinit()
-
-Generate C/C++ code for the XS initializer function.
-
-When invoked as C<`perl -MExtUtils::Embed -e xsinit --`>
-the following options are recognized:
-
-B<-o> E<lt>output filenameE<gt> (Defaults to B<perlxsi.c>)
-
-B<-o STDOUT> will print to STDOUT.
-
-B<-std> (Write code for extensions that are linked with the current Perl.)
-
-Any additional arguments are expected to be names of modules
-to generate code for.
-
-When invoked with parameters the following are accepted and optional:
-
-C<xsinit($filename,$std,[@modules])>
-
-Where,
-
-B<$filename> is equivalent to the B<-o> option.
-
-B<$std> is boolean, equivalent to the B<-std> option.
-
-B<[@modules]> is an array ref, same as additional arguments mentioned above.
-
-=item Examples
-
-
- perl -MExtUtils::Embed -e xsinit -- -o xsinit.c Socket
-
-
-This will generate code with an B<xs_init> function that glues the perl B<Socket::bootstrap> function
-to the C B<boot_Socket> function and writes it to a file named F<xsinit.c>.
-
-Note that B<DynaLoader> is a special case where it must call B<boot_DynaLoader> directly.
-
- perl -MExtUtils::Embed -e xsinit
-
-
-This will generate code for linking with B<DynaLoader> and
-each static extension found in B<$Config{static_ext}>.
-The code is written to the default file name B<perlxsi.c>.
-
-
- perl -MExtUtils::Embed -e xsinit -- -o xsinit.c -std DBI DBD::Oracle
-
-
-Here, code is written for all the currently linked extensions along with code
-for B<DBI> and B<DBD::Oracle>.
-
-If you have a working B<DynaLoader> then there is rarely any need to statically link in any
-other extensions.
-
-=item ldopts()
-
-Output arguments for linking the Perl library and extensions to your
-application.
-
-When invoked as C<`perl -MExtUtils::Embed -e ldopts --`>
-the following options are recognized:
-
-B<-std>
-
-Output arguments for linking the Perl library and any extensions linked
-with the current Perl.
-
-B<-I> E<lt>path1:path2E<gt>
-
-Search path for ModuleName.a archives.
-Default path is B<@INC>.
-Library archives are expected to be found as
-B</some/path/auto/ModuleName/ModuleName.a>
-For example, when looking for B<Socket.a> relative to a search path,
-we should find B<auto/Socket/Socket.a>
-
-When looking for B<DBD::Oracle> relative to a search path,
-we should find B<auto/DBD/Oracle/Oracle.a>
-
-Keep in mind that you can always supply B</my/own/path/ModuleName.a>
-as an additional linker argument.
-
-B<--> E<lt>list of linker argsE<gt>
-
-Additional linker arguments to be considered.
-
-Any additional arguments found before the B<--> token
-are expected to be names of modules to generate code for.
-
-When invoked with parameters the following are accepted and optional:
-
-C<ldopts($std,[@modules],[@link_args],$path)>
-
-Where:
-
-B<$std> is boolean, equivalent to the B<-std> option.
-
-B<[@modules]> is equivalent to additional arguments found before the B<--> token.
-
-B<[@link_args]> is equivalent to arguments found after the B<--> token.
-
-B<$path> is equivalent to the B<-I> option.
-
-In addition, when ldopts is called with parameters, it will return the argument string
-rather than print it to STDOUT.
-
-=item Examples
-
-
- perl -MExtUtils::Embed -e ldopts
-
-
-This will print arguments for linking with B<libperl.a>, B<DynaLoader> and
-extensions found in B<$Config{static_ext}>. This includes libraries
-found in B<$Config{libs}> and the first ModuleName.a library
-for each extension that is found by searching B<@INC> or the path
-specified by the B<-I> option.
-In addition, when ModuleName.a is found, additional linker arguments
-are picked up from the B<extralibs.ld> file in the same directory.
-
-
- perl -MExtUtils::Embed -e ldopts -- -std Socket
-
-
-This will do the same as the above example, along with printing additional arguments for linking with the B<Socket> extension.
-
-
- perl -MExtUtils::Embed -e ldopts -- DynaLoader
-
-
-This will print arguments for linking with just the B<DynaLoader> extension
-and B<libperl.a>.
-
-
- perl -MExtUtils::Embed -e ldopts -- -std Msql -- -L/usr/msql/lib -lmsql
-
-
-Any arguments after the second '--' token are additional linker
-arguments that will be examined for potential conflict. If there is no
-conflict, the additional arguments will be part of the output.
-
-
-=item perl_inc()
-
-For including perl header files this function simply prints:
-
- -I$Config{archlibexp}/CORE
-
-So, rather than having to say:
-
- perl -MConfig -e 'print "-I$Config{archlibexp}/CORE"'
-
-Just say:
-
- perl -MExtUtils::Embed -e perl_inc
-
-=item ccflags(), ccdlflags()
-
-These functions simply print $Config{ccflags} and $Config{ccdlflags}
-
-=item ccopts()
-
-This function combines perl_inc(), ccflags() and ccdlflags() into one.
-
-=item xsi_header()
-
-This function simply returns a string defining the same B<EXTERN_C> macro as
-B<perlmain.c> along with #including B<perl.h> and B<EXTERN.h>.
-
-=item xsi_protos(@modules)
-
-This function returns a string of B<boot_$ModuleName> prototypes for each @modules.
-
-=item xsi_body(@modules)
-
-This function returns a string of calls to B<newXS()> that glue the module B<bootstrap>
-function to B<boot_ModuleName> for each @modules.
-
-B<xsinit()> uses the xsi_* functions to generate most of it's code.
-
-=back
-
-=head1 EXAMPLES
-
-For examples on how to use B<ExtUtils::Embed> for building C/C++ applications
-with embedded perl, see L<perlembed>.
-
-=head1 SEE ALSO
-
-L<perlembed>
-
-=head1 AUTHOR
-
-Doug MacEachern E<lt>F<dougm@osf.org>E<gt>
-
-Based on ideas from Tim Bunce E<lt>F<Tim.Bunce@ig.co.uk>E<gt> and
-B<minimod.pl> by Andreas Koenig E<lt>F<k@anna.in-berlin.de>E<gt> and Tim Bunce.
-
-=cut
-
diff --git a/contrib/perl5/lib/ExtUtils/Install.pm b/contrib/perl5/lib/ExtUtils/Install.pm
deleted file mode 100644
index 9a8e857..0000000
--- a/contrib/perl5/lib/ExtUtils/Install.pm
+++ /dev/null
@@ -1,437 +0,0 @@
-# $FreeBSD$
-package ExtUtils::Install;
-
-use 5.005_64;
-our(@ISA, @EXPORT, $VERSION);
-$VERSION = substr q$Revision: 1.28 $, 10;
-# $Date: 1998/01/25 07:08:24 $
-# $FreeBSD$
-
-use Exporter;
-use Carp ();
-use Config qw(%Config);
-@ISA = ('Exporter');
-@EXPORT = ('install','uninstall','pm_to_blib', 'install_default');
-$Is_VMS = $^O eq 'VMS';
-
-my $splitchar = $^O eq 'VMS' ? '|' : ($^O eq 'os2' || $^O eq 'dos') ? ';' : ':';
-my @PERL_ENV_LIB = split $splitchar, defined $ENV{'PERL5LIB'} ? $ENV{'PERL5LIB'} : $ENV{'PERLLIB'} || '';
-my $Inc_uninstall_warn_handler;
-
-# install relative to here
-
-my $INSTALL_ROOT = $ENV{PERL_INSTALL_ROOT};
-
-use File::Spec;
-
-sub install_rooted_file {
- if (defined $INSTALL_ROOT) {
- MY->catfile($INSTALL_ROOT, $_[0]);
- } else {
- $_[0];
- }
-}
-
-sub install_rooted_dir {
- if (defined $INSTALL_ROOT) {
- MY->catdir($INSTALL_ROOT, $_[0]);
- } else {
- $_[0];
- }
-}
-
-#our(@EXPORT, @ISA, $Is_VMS);
-#use strict;
-
-sub forceunlink {
- chmod 0666, $_[0];
- unlink $_[0] or Carp::croak("Cannot forceunlink $_[0]: $!")
-}
-
-sub install {
- my($hash,$verbose,$nonono,$inc_uninstall) = @_;
- $verbose ||= 0;
- $nonono ||= 0;
-
- use Cwd qw(cwd);
- use ExtUtils::MakeMaker; # to implement a MY class
- use ExtUtils::Packlist;
- use File::Basename qw(dirname);
- use File::Copy qw(copy);
- use File::Find qw(find);
- use File::Path qw(mkpath);
- use File::Compare qw(compare);
-
- my(%hash) = %$hash;
- my(%pack, $dir, $warn_permissions);
- my($packlist) = ExtUtils::Packlist->new();
- # -w doesn't work reliably on FAT dirs
- $warn_permissions++ if $^O eq 'MSWin32';
- local(*DIR);
- for (qw/read write/) {
- $pack{$_}=$hash{$_};
- delete $hash{$_};
- }
- my($source_dir_or_file);
- foreach $source_dir_or_file (sort keys %hash) {
- #Check if there are files, and if yes, look if the corresponding
- #target directory is writable for us
- opendir DIR, $source_dir_or_file or next;
- for (readdir DIR) {
- next if $_ eq "." || $_ eq ".." || $_ eq ".exists";
- my $targetdir = install_rooted_dir($hash{$source_dir_or_file});
- if (-w $targetdir ||
- mkpath($targetdir)) {
- last;
- } else {
- warn "Warning: You do not have permissions to " .
- "install into $hash{$source_dir_or_file}"
- unless $warn_permissions++;
- }
- }
- closedir DIR;
- }
- my $tmpfile = install_rooted_file($pack{"read"});
- $packlist->read($tmpfile) if (-f $tmpfile);
- my $cwd = cwd();
-
- my($source);
- MOD_INSTALL: foreach $source (sort keys %hash) {
- #copy the tree to the target directory without altering
- #timestamp and permission and remember for the .packlist
- #file. The packlist file contains the absolute paths of the
- #install locations. AFS users may call this a bug. We'll have
- #to reconsider how to add the means to satisfy AFS users also.
-
- # FreeBSD also doesn't like this (much). At install time, the
- # ctime should change, even if the file does not.
-
- #October 1997: we want to install .pm files into archlib if
- #there are any files in arch. So we depend on having ./blib/arch
- #hardcoded here.
-
- my $targetroot = install_rooted_dir($hash{$source});
-
- if ($source eq "blib/lib" and
- exists $hash{"blib/arch"} and
- directory_not_empty("blib/arch")) {
- $targetroot = install_rooted_dir($hash{"blib/arch"});
- print "Files found in blib/arch: installing files in blib/lib into architecture dependent library tree\n";
- }
- chdir($source) or next;
- find(sub {
- my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
- $atime,$mtime,$ctime,$blksize,$blocks) = stat;
- return unless -f _;
- return if $_ eq ".exists";
- my $targetdir = MY->catdir($targetroot, $File::Find::dir);
- my $origfile = $_;
- my $targetfile = MY->catfile($targetdir, $_);
-
- my $diff = 0;
- if ( -f $targetfile && -s _ == $size) {
- # We have a good chance, we can skip this one
- $diff = compare($_,$targetfile);
- } else {
- print "$_ differs\n" if $verbose>1;
- $diff++;
- }
- my $diff = 1; # Nasty, lowdown, rotten, scumsucking
- # hack to make FreeBSD _really_ install.
-
- if ($diff){
- if (-f $targetfile){
- forceunlink($targetfile) unless $nonono;
- } else {
- mkpath($targetdir,0,0755) unless $nonono;
- print "mkpath($targetdir,0,0755)\n" if $verbose>1;
- }
- copy($_,$targetfile) unless $nonono;
- print "Installing $targetfile\n";
- utime($atime,$mtime + $Is_VMS,$targetfile) unless $nonono>1;
- print "utime($atime,$mtime,$targetfile)\n" if $verbose>1;
- $mode = 0444 | ( $mode & 0111 ? 0111 : 0 );
- chmod $mode, $targetfile;
- print "chmod($mode, $targetfile)\n" if $verbose>1;
- } else {
- print "Skipping $targetfile (unchanged)\n" if $verbose;
- }
-
- if (! defined $inc_uninstall) { # it's called
- } elsif ($inc_uninstall == 0){
- inc_uninstall($_,$File::Find::dir,$verbose,1); # nonono set to 1
- } else {
- inc_uninstall($_,$File::Find::dir,$verbose,0); # nonono set to 0
- }
- $packlist->{$origfile}++;
-
- }, ".");
- chdir($cwd) or Carp::croak("Couldn't chdir to $cwd: $!");
- }
- if ($pack{'write'}) {
- $dir = install_rooted_dir(dirname($pack{'write'}));
- mkpath($dir,0,0755);
- print "Writing $pack{'write'}\n";
- $packlist->write(install_rooted_file($pack{'write'}));
- }
-}
-
-sub directory_not_empty ($) {
- my($dir) = @_;
- my $files = 0;
- find(sub {
- return if $_ eq ".exists";
- if (-f) {
- $File::Find::prune++;
- $files = 1;
- }
- }, $dir);
- return $files;
-}
-
-sub install_default {
- @_ < 2 or die "install_default should be called with 0 or 1 argument";
- my $FULLEXT = @_ ? shift : $ARGV[0];
- defined $FULLEXT or die "Do not know to where to write install log";
- my $INST_LIB = MM->catdir(MM->curdir,"blib","lib");
- my $INST_ARCHLIB = MM->catdir(MM->curdir,"blib","arch");
- my $INST_BIN = MM->catdir(MM->curdir,'blib','bin');
- my $INST_SCRIPT = MM->catdir(MM->curdir,'blib','script');
- my $INST_MAN1DIR = MM->catdir(MM->curdir,'blib','man1');
- my $INST_MAN3DIR = MM->catdir(MM->curdir,'blib','man3');
- install({
- read => "$Config{sitearchexp}/auto/$FULLEXT/.packlist",
- write => "$Config{installsitearch}/auto/$FULLEXT/.packlist",
- $INST_LIB => (directory_not_empty($INST_ARCHLIB)) ?
- $Config{installsitearch} :
- $Config{installsitelib},
- $INST_ARCHLIB => $Config{installsitearch},
- $INST_BIN => $Config{installbin} ,
- $INST_SCRIPT => $Config{installscript},
- $INST_MAN1DIR => $Config{installman1dir},
- $INST_MAN3DIR => $Config{installman3dir},
- },1,0,0);
-}
-
-sub uninstall {
- use ExtUtils::Packlist;
- my($fil,$verbose,$nonono) = @_;
- die "no packlist file found: $fil" unless -f $fil;
- # my $my_req = $self->catfile(qw(auto ExtUtils Install forceunlink.al));
- # require $my_req; # Hairy, but for the first
- my ($packlist) = ExtUtils::Packlist->new($fil);
- foreach (sort(keys(%$packlist))) {
- chomp;
- print "unlink $_\n" if $verbose;
- forceunlink($_) unless $nonono;
- }
- print "unlink $fil\n" if $verbose;
- forceunlink($fil) unless $nonono;
-}
-
-sub inc_uninstall {
- my($file,$libdir,$verbose,$nonono) = @_;
- my($dir);
- my %seen_dir = ();
- foreach $dir (@INC, @PERL_ENV_LIB, @Config{qw(archlibexp
- privlibexp
- sitearchexp
- sitelibexp)}) {
- next if $dir eq ".";
- next if $seen_dir{$dir}++;
- my($targetfile) = MY->catfile($dir,$libdir,$file);
- next unless -f $targetfile;
-
- # The reason why we compare file's contents is, that we cannot
- # know, which is the file we just installed (AFS). So we leave
- # an identical file in place
- my $diff = 0;
- if ( -f $targetfile && -s _ == -s $file) {
- # We have a good chance, we can skip this one
- $diff = compare($file,$targetfile);
- } else {
- print "#$file and $targetfile differ\n" if $verbose>1;
- $diff++;
- }
-
- next unless $diff;
- if ($nonono) {
- if ($verbose) {
- $Inc_uninstall_warn_handler ||= new ExtUtils::Install::Warn;
- $libdir =~ s|^\./||s ; # That's just cosmetics, no need to port. It looks prettier.
- $Inc_uninstall_warn_handler->add("$libdir/$file",$targetfile);
- }
- # if not verbose, we just say nothing
- } else {
- print "Unlinking $targetfile (shadowing?)\n";
- forceunlink($targetfile);
- }
- }
-}
-
-sub run_filter {
- my ($cmd, $src, $dest) = @_;
- local *SRC, *CMD;
- open(CMD, "|$cmd >$dest") || die "Cannot fork: $!";
- open(SRC, $src) || die "Cannot open $src: $!";
- my $buf;
- my $sz = 1024;
- while (my $len = sysread(SRC, $buf, $sz)) {
- syswrite(CMD, $buf, $len);
- }
- close SRC;
- close CMD or die "Filter command '$cmd' failed for $src";
-}
-
-sub pm_to_blib {
- my($fromto,$autodir,$pm_filter) = @_;
-
- use File::Basename qw(dirname);
- use File::Copy qw(copy);
- use File::Path qw(mkpath);
- use File::Compare qw(compare);
- use AutoSplit;
- # my $my_req = $self->catfile(qw(auto ExtUtils Install forceunlink.al));
- # require $my_req; # Hairy, but for the first
-
- if (!ref($fromto) && -r $fromto)
- {
- # Win32 has severe command line length limitations, but
- # can generate temporary files on-the-fly
- # so we pass name of file here - eval it to get hash
- open(FROMTO,"<$fromto") or die "Cannot open $fromto:$!";
- my $str = '$fromto = {qw{'.join('',<FROMTO>).'}}';
- eval $str;
- close(FROMTO);
- }
-
- mkpath($autodir,0,0755);
- foreach (keys %$fromto) {
- my $dest = $fromto->{$_};
- next if -f $dest && -M $dest < -M $_;
-
- # When a pm_filter is defined, we need to pre-process the source first
- # to determine whether it has changed or not. Therefore, only perform
- # the comparison check when there's no filter to be ran.
- # -- RAM, 03/01/2001
-
- my $need_filtering = defined $pm_filter && length $pm_filter && /\.pm$/;
-
- if (!$need_filtering && 0 == compare($_,$dest)) {
- print "Skip $dest (unchanged)\n";
- next;
- }
- if (-f $dest){
- forceunlink($dest);
- } else {
- mkpath(dirname($dest),0,0755);
- }
- if ($need_filtering) {
- run_filter($pm_filter, $_, $dest);
- print "$pm_filter <$_ >$dest\n";
- } else {
- copy($_,$dest);
- print "cp $_ $dest\n";
- }
- my($mode,$atime,$mtime) = (stat)[2,8,9];
- utime($atime,$mtime+$Is_VMS,$dest);
- chmod(0444 | ( $mode & 0111 ? 0111 : 0 ),$dest);
- next unless /\.pm$/;
- autosplit($dest,$autodir);
- }
-}
-
-package ExtUtils::Install::Warn;
-
-sub new { bless {}, shift }
-
-sub add {
- my($self,$file,$targetfile) = @_;
- push @{$self->{$file}}, $targetfile;
-}
-
-sub DESTROY {
- unless(defined $INSTALL_ROOT) {
- my $self = shift;
- my($file,$i,$plural);
- foreach $file (sort keys %$self) {
- $plural = @{$self->{$file}} > 1 ? "s" : "";
- print "## Differing version$plural of $file found. You might like to\n";
- for (0..$#{$self->{$file}}) {
- print "rm ", $self->{$file}[$_], "\n";
- $i++;
- }
- }
- $plural = $i>1 ? "all those files" : "this file";
- print "## Running 'make install UNINST=1' will unlink $plural for you.\n";
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-ExtUtils::Install - install files from here to there
-
-=head1 SYNOPSIS
-
-B<use ExtUtils::Install;>
-
-B<install($hashref,$verbose,$nonono);>
-
-B<uninstall($packlistfile,$verbose,$nonono);>
-
-B<pm_to_blib($hashref);>
-
-=head1 DESCRIPTION
-
-Both install() and uninstall() are specific to the way
-ExtUtils::MakeMaker handles the installation and deinstallation of
-perl modules. They are not designed as general purpose tools.
-
-install() takes three arguments. A reference to a hash, a verbose
-switch and a don't-really-do-it switch. The hash ref contains a
-mapping of directories: each key/value pair is a combination of
-directories to be copied. Key is a directory to copy from, value is a
-directory to copy to. The whole tree below the "from" directory will
-be copied preserving timestamps and permissions.
-
-There are two keys with a special meaning in the hash: "read" and
-"write". After the copying is done, install will write the list of
-target files to the file named by C<$hashref-E<gt>{write}>. If there is
-another file named by C<$hashref-E<gt>{read}>, the contents of this file will
-be merged into the written file. The read and the written file may be
-identical, but on AFS it is quite likely that people are installing to a
-different directory than the one where the files later appear.
-
-install_default() takes one or less arguments. If no arguments are
-specified, it takes $ARGV[0] as if it was specified as an argument.
-The argument is the value of MakeMaker's C<FULLEXT> key, like F<Tk/Canvas>.
-This function calls install() with the same arguments as the defaults
-the MakeMaker would use.
-
-The argument-less form is convenient for install scripts like
-
- perl -MExtUtils::Install -e install_default Tk/Canvas
-
-Assuming this command is executed in a directory with a populated F<blib>
-directory, it will proceed as if the F<blib> was build by MakeMaker on
-this machine. This is useful for binary distributions.
-
-uninstall() takes as first argument a file containing filenames to be
-unlinked. The second argument is a verbose switch, the third is a
-no-don't-really-do-it-now switch.
-
-pm_to_blib() takes a hashref as the first argument and copies all keys
-of the hash to the corresponding values efficiently. Filenames with
-the extension pm are autosplit. Second argument is the autosplit
-directory. If third argument is not empty, it is taken as a filter command
-to be ran on each .pm file, the output of the command being what is finally
-copied, and the source for auto-splitting.
-
-You can have an environment variable PERL_INSTALL_ROOT set which will
-be prepended as a directory to each installed file (and directory).
-
-=cut
diff --git a/contrib/perl5/lib/ExtUtils/Installed.pm b/contrib/perl5/lib/ExtUtils/Installed.pm
deleted file mode 100644
index 6961c6f..0000000
--- a/contrib/perl5/lib/ExtUtils/Installed.pm
+++ /dev/null
@@ -1,273 +0,0 @@
-package ExtUtils::Installed;
-
-use 5.005_64;
-use strict;
-use Carp qw();
-use ExtUtils::Packlist;
-use ExtUtils::MakeMaker;
-use Config;
-use File::Find;
-use File::Basename;
-our $VERSION = '0.02';
-
-sub _is_type($$$)
-{
-my ($self, $path, $type) = @_;
-return(1) if ($type eq "all");
-if ($type eq "doc")
- {
- return(substr($path, 0, length($Config{installman1dir}))
- eq $Config{installman1dir}
- ||
- substr($path, 0, length($Config{installman3dir}))
- eq $Config{installman3dir}
- ? 1 : 0)
- }
-if ($type eq "prog")
- {
- return(substr($path, 0, length($Config{prefix})) eq $Config{prefix}
- &&
- substr($path, 0, length($Config{installman1dir}))
- ne $Config{installman1dir}
- &&
- substr($path, 0, length($Config{installman3dir}))
- ne $Config{installman3dir}
- ? 1 : 0);
- }
-return(0);
-}
-
-sub _is_under($$;)
-{
-my ($self, $path, @under) = @_;
-$under[0] = "" if (! @under);
-foreach my $dir (@under)
- {
- return(1) if (substr($path, 0, length($dir)) eq $dir);
- }
-return(0);
-}
-
-sub new($)
-{
-my ($class) = @_;
-$class = ref($class) || $class;
-my $self = {};
-
-# Read the core packlist
-$self->{Perl}{packlist} =
- ExtUtils::Packlist->new("$Config{installarchlib}/.packlist");
-$self->{Perl}{version} = $Config{version};
-
-# Read the module packlists
-my $sub = sub
- {
- # Only process module .packlists
- return if ($_) ne ".packlist" || $File::Find::dir eq $Config{installarchlib};
-
- # Hack of the leading bits of the paths & convert to a module name
- my $module = $File::Find::name;
- $module =~ s!$Config{archlib}/auto/(.*)/.packlist!$1!s;
- $module =~ s!$Config{sitearch}/auto/(.*)/.packlist!$1!s;
- my $modfile = "$module.pm";
- $module =~ s!/!::!g;
-
- # Find the top-level module file in @INC
- $self->{$module}{version} = '';
- foreach my $dir (@INC)
- {
- my $p = MM->catfile($dir, $modfile);
- if (-f $p)
- {
- $self->{$module}{version} = MM->parse_version($p);
- last;
- }
- }
-
- # Read the .packlist
- $self->{$module}{packlist} = ExtUtils::Packlist->new($File::Find::name);
- };
-find($sub, $Config{archlib}, $Config{sitearch});
-
-return(bless($self, $class));
-}
-
-sub modules($)
-{
-my ($self) = @_;
-return(sort(keys(%$self)));
-}
-
-sub files($$;$)
-{
-my ($self, $module, $type, @under) = @_;
-
-# Validate arguments
-Carp::croak("$module is not installed") if (! exists($self->{$module}));
-$type = "all" if (! defined($type));
-Carp::croak('type must be "all", "prog" or "doc"')
- if ($type ne "all" && $type ne "prog" && $type ne "doc");
-
-my (@files);
-foreach my $file (keys(%{$self->{$module}{packlist}}))
- {
- push(@files, $file)
- if ($self->_is_type($file, $type) && $self->_is_under($file, @under));
- }
-return(@files);
-}
-
-sub directories($$;$)
-{
-my ($self, $module, $type, @under) = @_;
-my (%dirs);
-foreach my $file ($self->files($module, $type, @under))
- {
- $dirs{dirname($file)}++;
- }
-return(sort(keys(%dirs)));
-}
-
-sub directory_tree($$;$)
-{
-my ($self, $module, $type, @under) = @_;
-my (%dirs);
-foreach my $dir ($self->directories($module, $type, @under))
- {
- $dirs{$dir}++;
- my ($last) = ("");
- while ($last ne $dir)
- {
- $last = $dir;
- $dir = dirname($dir);
- last if (! $self->_is_under($dir, @under));
- $dirs{$dir}++;
- }
- }
-return(sort(keys(%dirs)));
-}
-
-sub validate($;$)
-{
-my ($self, $module, $remove) = @_;
-Carp::croak("$module is not installed") if (! exists($self->{$module}));
-return($self->{$module}{packlist}->validate($remove));
-}
-
-sub packlist($$)
-{
-my ($self, $module) = @_;
-Carp::croak("$module is not installed") if (! exists($self->{$module}));
-return($self->{$module}{packlist});
-}
-
-sub version($$)
-{
-my ($self, $module) = @_;
-Carp::croak("$module is not installed") if (! exists($self->{$module}));
-return($self->{$module}{version});
-}
-
-sub DESTROY
-{
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-ExtUtils::Installed - Inventory management of installed modules
-
-=head1 SYNOPSIS
-
- use ExtUtils::Installed;
- my ($inst) = ExtUtils::Installed->new();
- my (@modules) = $inst->modules();
- my (@missing) = $inst->validate("DBI");
- my $all_files = $inst->files("DBI");
- my $files_below_usr_local = $inst->files("DBI", "all", "/usr/local");
- my $all_dirs = $inst->directories("DBI");
- my $dirs_below_usr_local = $inst->directory_tree("DBI", "prog");
- my $packlist = $inst->packlist("DBI");
-
-=head1 DESCRIPTION
-
-ExtUtils::Installed provides a standard way to find out what core and module
-files have been installed. It uses the information stored in .packlist files
-created during installation to provide this information. In addition it
-provides facilities to classify the installed files and to extract directory
-information from the .packlist files.
-
-=head1 USAGE
-
-The new() function searches for all the installed .packlists on the system, and
-stores their contents. The .packlists can be queried with the functions
-described below.
-
-=head1 FUNCTIONS
-
-=over
-
-=item new()
-
-This takes no parameters, and searches for all the installed .packlists on the
-system. The packlists are read using the ExtUtils::packlist module.
-
-=item modules()
-
-This returns a list of the names of all the installed modules. The perl 'core'
-is given the special name 'Perl'.
-
-=item files()
-
-This takes one mandatory parameter, the name of a module. It returns a list of
-all the filenames from the package. To obtain a list of core perl files, use
-the module name 'Perl'. Additional parameters are allowed. The first is one
-of the strings "prog", "man" or "all", to select either just program files,
-just manual files or all files. The remaining parameters are a list of
-directories. The filenames returned will be restricted to those under the
-specified directories.
-
-=item directories()
-
-This takes one mandatory parameter, the name of a module. It returns a list of
-all the directories from the package. Additional parameters are allowed. The
-first is one of the strings "prog", "man" or "all", to select either just
-program directories, just manual directories or all directories. The remaining
-parameters are a list of directories. The directories returned will be
-restricted to those under the specified directories. This method returns only
-the leaf directories that contain files from the specified module.
-
-=item directory_tree()
-
-This is identical in operation to directory(), except that it includes all the
-intermediate directories back up to the specified directories.
-
-=item validate()
-
-This takes one mandatory parameter, the name of a module. It checks that all
-the files listed in the modules .packlist actually exist, and returns a list of
-any missing files. If an optional second argument which evaluates to true is
-given any missing files will be removed from the .packlist
-
-=item packlist()
-
-This returns the ExtUtils::Packlist object for the specified module.
-
-=item version()
-
-This returns the version number for the specified module.
-
-=back
-
-=head1 EXAMPLE
-
-See the example in L<ExtUtils::Packlist>.
-
-=head1 AUTHOR
-
-Alan Burlison <Alan.Burlison@uk.sun.com>
-
-=cut
diff --git a/contrib/perl5/lib/ExtUtils/Liblist.pm b/contrib/perl5/lib/ExtUtils/Liblist.pm
deleted file mode 100644
index 75e3c08..0000000
--- a/contrib/perl5/lib/ExtUtils/Liblist.pm
+++ /dev/null
@@ -1,787 +0,0 @@
-# $FreeBSD$
-package ExtUtils::Liblist;
-
-@ISA = qw(ExtUtils::Liblist::Kid File::Spec);
-
-sub lsdir {
- shift;
- my $rex = qr/$_[1]/;
- opendir my $dir, $_[0];
- grep /$rex/, readdir $dir;
-}
-
-sub file_name_is_absolute {
- require File::Spec;
- shift;
- 'File::Spec'->file_name_is_absolute(@_);
-}
-
-
-package ExtUtils::Liblist::Kid;
-
-# This kid package is to be used by MakeMaker. It will not work if
-# $self is not a Makemaker.
-
-use 5.005_64;
-# Broken out of MakeMaker from version 4.11
-
-our $VERSION = substr q$Revision: 1.26 $, 10;
-
-use Config;
-use Cwd 'cwd';
-use File::Basename;
-
-sub ext {
- if ($^O eq 'VMS') { return &_vms_ext; }
- elsif($^O eq 'MSWin32') { return &_win32_ext; }
- else { return &_unix_os2_ext; }
-}
-
-sub _unix_os2_ext {
- my($self,$potential_libs, $verbose, $give_libs) = @_;
- if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
- $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "", ($give_libs ? [] : ())) unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
- my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
- # compute $extralibs, $bsloadlibs and $ldloadlibs from
- # $potential_libs
- # this is a rewrite of Andy Dougherty's extliblist in perl
-
- my(@searchpath); # from "-L/path" entries in $potential_libs
- my(@libpath) = split " ", $Config{'libpth'};
- my(@ldloadlibs, @bsloadlibs, @extralibs, @ld_run_path, %ld_run_path_seen);
- my(@libs, %libs_seen);
- my($fullname, $thislib, $thispth, @fullname);
- my($pwd) = cwd(); # from Cwd.pm
- my($found) = 0;
-
- foreach $thislib (split ' ', $potential_libs){
-
- # Handle possible linker path arguments.
- if ($thislib =~ s/^(-[LR])//){ # save path flag type
- my($ptype) = $1;
- unless (-d $thislib){
- warn "$ptype$thislib ignored, directory does not exist\n"
- if $verbose;
- next;
- }
- unless ($self->file_name_is_absolute($thislib)) {
- warn "Warning: $ptype$thislib changed to $ptype$pwd/$thislib\n";
- $thislib = $self->catdir($pwd,$thislib);
- }
- push(@searchpath, $thislib);
- push(@extralibs, "$ptype$thislib");
- push(@ldloadlibs, "$ptype$thislib");
- next;
- }
-
- # Handle possible library arguments.
- unless ($thislib =~ s/^-l//){
- warn "Unrecognized argument in LIBS ignored: '$thislib'\n";
- next;
- }
-
- my($found_lib)=0;
- foreach $thispth (@searchpath, @libpath){
-
- # Try to find the full name of the library. We need this to
- # determine whether it's a dynamically-loadable library or not.
- # This tends to be subject to various os-specific quirks.
- # For gcc-2.6.2 on linux (March 1995), DLD can not load
- # .sa libraries, with the exception of libm.sa, so we
- # deliberately skip them.
- if (@fullname =
- $self->lsdir($thispth,"^\Qlib$thislib.$so.\E[0-9]+")){
- # Take care that libfoo.so.10 wins against libfoo.so.9.
- # Compare two libraries to find the most recent version
- # number. E.g. if you have libfoo.so.9.0.7 and
- # libfoo.so.10.1, first convert all digits into two
- # decimal places. Then we'll add ".00" to the shorter
- # strings so that we're comparing strings of equal length
- # Thus we'll compare libfoo.so.09.07.00 with
- # libfoo.so.10.01.00. Some libraries might have letters
- # in the version. We don't know what they mean, but will
- # try to skip them gracefully -- we'll set any letter to
- # '0'. Finally, sort in reverse so we can take the
- # first element.
-
- #TODO: iterate through the directory instead of sorting
-
- $fullname = "$thispth/" .
- (sort { my($ma) = $a;
- my($mb) = $b;
- $ma =~ tr/A-Za-z/0/s;
- $ma =~ s/\b(\d)\b/0$1/g;
- $mb =~ tr/A-Za-z/0/s;
- $mb =~ s/\b(\d)\b/0$1/g;
- while (length($ma) < length($mb)) { $ma .= ".00"; }
- while (length($mb) < length($ma)) { $mb .= ".00"; }
- # Comparison deliberately backwards
- $mb cmp $ma;} @fullname)[0];
- } elsif (-f ($fullname="$thispth/lib$thislib.$so")
- && (($Config{'dlsrc'} ne "dl_dld.xs") || ($thislib eq "m"))){
- } elsif (-f ($fullname="$thispth/lib${thislib}_s$Config_libext")
- && (! $Config{'archname'} =~ /RM\d\d\d-svr4/)
- && ($thislib .= "_s") ){ # we must explicitly use _s version
- } elsif (-f ($fullname="$thispth/lib$thislib$Config_libext")){
- } elsif (-f ($fullname="$thispth/$thislib$Config_libext")){
- } elsif (-f ($fullname="$thispth/Slib$thislib$Config_libext")){
- } elsif ($^O eq 'dgux'
- && -l ($fullname="$thispth/lib$thislib$Config_libext")
- && readlink($fullname) =~ /^elink:/s) {
- # Some of DG's libraries look like misconnected symbolic
- # links, but development tools can follow them. (They
- # look like this:
- #
- # libm.a -> elink:${SDE_PATH:-/usr}/sde/\
- # ${TARGET_BINARY_INTERFACE:-m88kdgux}/usr/lib/libm.a
- #
- # , the compilation tools expand the environment variables.)
- } else {
- warn "$thislib not found in $thispth\n" if $verbose;
- next;
- }
- warn "'-l$thislib' found at $fullname\n" if $verbose;
- my($fullnamedir) = dirname($fullname);
- push @ld_run_path, $fullnamedir unless $ld_run_path_seen{$fullnamedir}++;
- push @libs, $fullname unless $libs_seen{$fullname}++;
- $found++;
- $found_lib++;
-
- # Now update library lists
-
- # what do we know about this library...
- my $is_dyna = ($fullname !~ /\Q$Config_libext\E\z/);
- my $in_perl = ($libs =~ /\B-l\Q$ {thislib}\E\b/s);
-
- # Do not add it into the list if it is already linked in
- # with the main perl executable.
- # We have to special-case the NeXT, because math and ndbm
- # are both in libsys_s
- unless ($in_perl ||
- ($Config{'osname'} eq 'next' &&
- ($thislib eq 'm' || $thislib eq 'ndbm')) ){
- push(@extralibs, "-l$thislib");
- }
-
- # We might be able to load this archive file dynamically
- if ( ($Config{'dlsrc'} =~ /dl_next/ && $Config{'osvers'} lt '4_0')
- || ($Config{'dlsrc'} =~ /dl_dld/) )
- {
- # We push -l$thislib instead of $fullname because
- # it avoids hardwiring a fixed path into the .bs file.
- # Mkbootstrap will automatically add dl_findfile() to
- # the .bs file if it sees a name in the -l format.
- # USE THIS, when dl_findfile() is fixed:
- # push(@bsloadlibs, "-l$thislib");
- # OLD USE WAS while checking results against old_extliblist
- push(@bsloadlibs, "$fullname");
- } else {
- if ($is_dyna){
- # For SunOS4, do not add in this shared library if
- # it is already linked in the main perl executable
- push(@ldloadlibs, "-l$thislib")
- unless ($in_perl and $^O eq 'sunos');
- } else {
- push(@ldloadlibs, "-l$thislib");
- }
- }
- last; # found one here so don't bother looking further
- }
- warn "Note (probably harmless): "
- ."No library found for -l$thislib\n"
- unless $found_lib>0;
- }
- return ('','','','', ($give_libs ? \@libs : ())) unless $found;
- ("@extralibs", "@bsloadlibs", "@ldloadlibs",join(":",@ld_run_path), ($give_libs ? \@libs : ()));
-}
-
-sub _win32_ext {
-
- require Text::ParseWords;
-
- my($self, $potential_libs, $verbose, $give_libs) = @_;
-
- # If user did not supply a list, we punt.
- # (caller should probably use the list in $Config{libs})
- return ("", "", "", "", ($give_libs ? [] : ())) unless $potential_libs;
-
- my $cc = $Config{cc};
- my $VC = 1 if $cc =~ /^cl/i;
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
- my $libs = $Config{'perllibs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
- my(@libs, %libs_seen);
-
- if ($libs and $potential_libs !~ /:nodefault/i) {
- # If Config.pm defines a set of default libs, we always
- # tack them on to the user-supplied list, unless the user
- # specified :nodefault
-
- $potential_libs .= " " if $potential_libs;
- $potential_libs .= $libs;
- }
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- # normalize to forward slashes
- $libpth =~ s,\\,/,g;
- $potential_libs =~ s,\\,/,g;
-
- # compute $extralibs from $potential_libs
-
- my @searchpath; # from "-L/path" in $potential_libs
- my @libpath = Text::ParseWords::quotewords('\s+', 0, $libpth);
- my @extralibs;
- my $pwd = cwd(); # from Cwd.pm
- my $lib = '';
- my $found = 0;
- my $search = 1;
- my($fullname, $thislib, $thispth);
-
- # add "$Config{installarchlib}/CORE" to default search path
- push @libpath, "$Config{installarchlib}/CORE";
-
- if ($VC and exists $ENV{LIB} and $ENV{LIB}) {
- push @libpath, split /;/, $ENV{LIB};
- }
-
- foreach (Text::ParseWords::quotewords('\s+', 0, $potential_libs)){
-
- $thislib = $_;
-
- # see if entry is a flag
- if (/^:\w+$/) {
- $search = 0 if lc eq ':nosearch';
- $search = 1 if lc eq ':search';
- warn "Ignoring unknown flag '$thislib'\n"
- if $verbose and !/^:(no)?(search|default)$/i;
- next;
- }
-
- # if searching is disabled, do compiler-specific translations
- unless ($search) {
- s/^-l(.+)$/$1.lib/ unless $GC;
- s/^-L/-libpath:/ if $VC;
- push(@extralibs, $_);
- $found++;
- next;
- }
-
- # handle possible linker path arguments
- if (s/^-L// and not -d) {
- warn "$thislib ignored, directory does not exist\n"
- if $verbose;
- next;
- }
- elsif (-d) {
- unless ($self->file_name_is_absolute($_)) {
- warn "Warning: '$thislib' changed to '-L$pwd/$_'\n";
- $_ = $self->catdir($pwd,$_);
- }
- push(@searchpath, $_);
- next;
- }
-
- # handle possible library arguments
- if (s/^-l// and $GC and !/^lib/i) {
- $_ = "lib$_";
- }
- $_ .= $libext if !/\Q$libext\E$/i;
-
- my $secondpass = 0;
- LOOKAGAIN:
-
- # look for the file itself
- if (-f) {
- warn "'$thislib' found as '$_'\n" if $verbose;
- $found++;
- push(@extralibs, $_);
- next;
- }
-
- my $found_lib = 0;
- foreach $thispth (@searchpath, @libpath){
- unless (-f ($fullname="$thispth\\$_")) {
- warn "'$thislib' not found as '$fullname'\n" if $verbose;
- next;
- }
- warn "'$thislib' found as '$fullname'\n" if $verbose;
- $found++;
- $found_lib++;
- push(@extralibs, $fullname);
- push @libs, $fullname unless $libs_seen{$fullname}++;
- last;
- }
-
- # do another pass with (or without) leading 'lib' if they used -l
- if (!$found_lib and $thislib =~ /^-l/ and !$secondpass++) {
- if ($GC) {
- goto LOOKAGAIN if s/^lib//i;
- }
- elsif (!/^lib/i) {
- $_ = "lib$_";
- goto LOOKAGAIN;
- }
- }
-
- # give up
- warn "Note (probably harmless): "
- ."No library found for '$thislib'\n"
- unless $found_lib>0;
-
- }
-
- return ('','','','', ($give_libs ? \@libs : ())) unless $found;
-
- # make sure paths with spaces are properly quoted
- @extralibs = map { (/\s/ && !/^".*"$/) ? qq["$_"] : $_ } @extralibs;
- @libs = map { (/\s/ && !/^".*"$/) ? qq["$_"] : $_ } @libs;
- $lib = join(' ',@extralibs);
-
- # normalize back to backward slashes (to help braindead tools)
- # XXX this may break equally braindead GNU tools that don't understand
- # backslashes, either. Seems like one can't win here. Cursed be CP/M.
- $lib =~ s,/,\\,g;
-
- warn "Result: $lib\n" if $verbose;
- wantarray ? ($lib, '', $lib, '', ($give_libs ? \@libs : ())) : $lib;
-}
-
-
-sub _vms_ext {
- my($self, $potential_libs,$verbose,$give_libs) = @_;
- my(@crtls,$crtlstr);
- my($dbgqual) = $self->{OPTIMIZE} || $Config{'optimize'} ||
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
- # a library spec could be resolved via a logical name, we go to some trouble
- # to insure that the copy in the local tree is used, rather than one to
- # which a system-wide logical may point.
- if ($self->{PERL_SRC}) {
- my($lib,$locspec,$type);
- foreach $lib (@crtls) {
- if (($locspec,$type) = $lib =~ m-^([\w$\-]+)(/\w+)?- and $locspec =~ /perl/i) {
- if (lc $type eq '/share') { $locspec .= $Config{'exe_ext'}; }
- elsif (lc $type eq '/library') { $locspec .= $Config{'lib_ext'}; }
- else { $locspec .= $Config{'obj_ext'}; }
- $locspec = $self->catfile($self->{PERL_SRC},$locspec);
- $lib = "$locspec$type" if -e $locspec;
- }
- }
- }
- $crtlstr = @crtls ? join(' ',@crtls) : '';
-
- unless ($potential_libs) {
- warn "Result:\n\tEXTRALIBS: \n\tLDLOADLIBS: $crtlstr\n" if $verbose;
- return ('', '', $crtlstr, '', ($give_libs ? [] : ()));
- }
-
- my(@dirs,@libs,$dir,$lib,%found,@fndlibs,$ldlib);
- my $cwd = cwd();
- my($so,$lib_ext,$obj_ext) = @Config{'so','lib_ext','obj_ext'};
- # List of common Unix library names and there VMS equivalents
- # (VMS equivalent of '' indicates that the library is automatially
- # searched by the linker, and should be skipped here.)
- my(@flibs, %libs_seen);
- my %libmap = ( 'm' => '', 'f77' => '', 'F77' => '', 'V77' => '', 'c' => '',
- 'malloc' => '', 'crypt' => '', 'resolv' => '', 'c_s' => '',
- 'socket' => '', 'X11' => 'DECW$XLIBSHR',
- 'Xt' => 'DECW$XTSHR', 'Xm' => 'DECW$XMLIBSHR',
- 'Xmu' => 'DECW$XMULIBSHR');
- if ($Config{'vms_cc_type'} ne 'decc') { $libmap{'curses'} = 'VAXCCURSE'; }
-
- warn "Potential libraries are '$potential_libs'\n" if $verbose;
-
- # First, sort out directories and library names in the input
- foreach $lib (split ' ',$potential_libs) {
- push(@dirs,$1), next if $lib =~ /^-L(.*)/;
- push(@dirs,$lib), next if $lib =~ /[:>\]]$/;
- push(@dirs,$lib), next if -d $lib;
- push(@libs,$1), next if $lib =~ /^-l(.*)/;
- push(@libs,$lib);
- }
- push(@dirs,split(' ',$Config{'libpth'}));
-
- # Now make sure we've got VMS-syntax absolute directory specs
- # (We don't, however, check whether someone's hidden a relative
- # path in a logical name.)
- foreach $dir (@dirs) {
- unless (-d $dir) {
- warn "Skipping nonexistent Directory $dir\n" if $verbose > 1;
- $dir = '';
- next;
- }
- warn "Resolving directory $dir\n" if $verbose;
- if ($self->file_name_is_absolute($dir)) { $dir = $self->fixpath($dir,1); }
- else { $dir = $self->catdir($cwd,$dir); }
- }
- @dirs = grep { length($_) } @dirs;
- unshift(@dirs,''); # Check each $lib without additions first
-
- LIB: foreach $lib (@libs) {
- if (exists $libmap{$lib}) {
- next unless length $libmap{$lib};
- $lib = $libmap{$lib};
- }
-
- my(@variants,$variant,$name,$test,$cand);
- my($ctype) = '';
-
- # If we don't have a file type, consider it a possibly abbreviated name and
- # check for common variants. We try these first to grab libraries before
- # a like-named executable image (e.g. -lperl resolves to perlshr.exe
- # before perl.exe).
- if ($lib !~ /\.[^:>\]]*$/) {
- push(@variants,"${lib}shr","${lib}rtl","${lib}lib");
- push(@variants,"lib$lib") if $lib !~ /[:>\]]/;
- }
- push(@variants,$lib);
- warn "Looking for $lib\n" if $verbose;
- foreach $variant (@variants) {
- foreach $dir (@dirs) {
- my($type);
-
- $name = "$dir$variant";
- warn "\tChecking $name\n" if $verbose > 2;
- if (-f ($test = VMS::Filespec::rmsexpand($name))) {
- # It's got its own suffix, so we'll have to figure out the type
- if ($test =~ /(?:$so|exe)$/i) { $type = 'SHR'; }
- elsif ($test =~ /(?:$lib_ext|olb)$/i) { $type = 'OLB'; }
- elsif ($test =~ /(?:$obj_ext|obj)$/i) {
- warn "Note (probably harmless): "
- ."Plain object file $test found in library list\n";
- $type = 'OBJ';
- }
- else {
- warn "Note (probably harmless): "
- ."Unknown library type for $test; assuming shared\n";
- $type = 'SHR';
- }
- }
- elsif (-f ($test = VMS::Filespec::rmsexpand($name,$so)) or
- -f ($test = VMS::Filespec::rmsexpand($name,'.exe'))) {
- $type = 'SHR';
- $name = $test unless $test =~ /exe;?\d*$/i;
- }
- elsif (not length($ctype) and # If we've got a lib already, don't bother
- ( -f ($test = VMS::Filespec::rmsexpand($name,$lib_ext)) or
- -f ($test = VMS::Filespec::rmsexpand($name,'.olb')))) {
- $type = 'OLB';
- $name = $test unless $test =~ /olb;?\d*$/i;
- }
- elsif (not length($ctype) and # If we've got a lib already, don't bother
- ( -f ($test = VMS::Filespec::rmsexpand($name,$obj_ext)) or
- -f ($test = VMS::Filespec::rmsexpand($name,'.obj')))) {
- warn "Note (probably harmless): "
- ."Plain object file $test found in library list\n";
- $type = 'OBJ';
- $name = $test unless $test =~ /obj;?\d*$/i;
- }
- if (defined $type) {
- $ctype = $type; $cand = $name;
- last if $ctype eq 'SHR';
- }
- }
- if ($ctype) {
- # This has to precede any other CRTLs, so just make it first
- if ($cand eq 'VAXCCURSE') { unshift @{$found{$ctype}}, $cand; }
- else { push @{$found{$ctype}}, $cand; }
- warn "\tFound as $cand (really $test), type $ctype\n" if $verbose > 1;
- push @flibs, $name unless $libs_seen{$fullname}++;
- next LIB;
- }
- }
- warn "Note (probably harmless): "
- ."No library found for $lib\n";
- }
-
- push @fndlibs, @{$found{OBJ}} if exists $found{OBJ};
- push @fndlibs, map { "$_/Library" } @{$found{OLB}} if exists $found{OLB};
- push @fndlibs, map { "$_/Share" } @{$found{SHR}} if exists $found{SHR};
- $lib = join(' ',@fndlibs);
-
- $ldlib = $crtlstr ? "$lib $crtlstr" : $lib;
- warn "Result:\n\tEXTRALIBS: $lib\n\tLDLOADLIBS: $ldlib\n" if $verbose;
- wantarray ? ($lib, '', $ldlib, '', ($give_libs ? \@flibs : ())) : $lib;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-ExtUtils::Liblist - determine libraries to use and how to use them
-
-=head1 SYNOPSIS
-
-C<require ExtUtils::Liblist;>
-
-C<ExtUtils::Liblist::ext($self, $potential_libs, $verbose, $need_names);>
-
-=head1 DESCRIPTION
-
-This utility takes a list of libraries in the form C<-llib1 -llib2
--llib3> and returns lines suitable for inclusion in an extension
-Makefile. Extra library paths may be included with the form
-C<-L/another/path> this will affect the searches for all subsequent
-libraries.
-
-It returns an array of four or five scalar values: EXTRALIBS,
-BSLOADLIBS, LDLOADLIBS, LD_RUN_PATH, and, optionally, a reference to
-the array of the filenames of actual libraries. Some of these don't
-mean anything unless on Unix. See the details about those platform
-specifics below. The list of the filenames is returned only if
-$need_names argument is true.
-
-Dependent libraries can be linked in one of three ways:
-
-=over 2
-
-=item * For static extensions
-
-by the ld command when the perl binary is linked with the extension
-library. See EXTRALIBS below.
-
-=item * For dynamic extensions
-
-by the ld command when the shared object is built/linked. See
-LDLOADLIBS below.
-
-=item * For dynamic extensions
-
-by the DynaLoader when the shared object is loaded. See BSLOADLIBS
-below.
-
-=back
-
-=head2 EXTRALIBS
-
-List of libraries that need to be linked with when linking a perl
-binary which includes this extension. Only those libraries that
-actually exist are included. These are written to a file and used
-when linking perl.
-
-=head2 LDLOADLIBS and LD_RUN_PATH
-
-List of those libraries which can or must be linked into the shared
-library when created using ld. These may be static or dynamic
-libraries. LD_RUN_PATH is a colon separated list of the directories
-in LDLOADLIBS. It is passed as an environment variable to the process
-that links the shared library.
-
-=head2 BSLOADLIBS
-
-List of those libraries that are needed but can be linked in
-dynamically at run time on this platform. SunOS/Solaris does not need
-this because ld records the information (from LDLOADLIBS) into the
-object file. This list is used to create a .bs (bootstrap) file.
-
-=head1 PORTABILITY
-
-This module deals with a lot of system dependencies and has quite a
-few architecture specific C<if>s in the code.
-
-=head2 VMS implementation
-
-The version of ext() which is executed under VMS differs from the
-Unix-OS/2 version in several respects:
-
-=over 2
-
-=item *
-
-Input library and path specifications are accepted with or without the
-C<-l> and C<-L> prefixes used by Unix linkers. If neither prefix is
-present, a token is considered a directory to search if it is in fact
-a directory, and a library to search for otherwise. Authors who wish
-their extensions to be portable to Unix or OS/2 should use the Unix
-prefixes, since the Unix-OS/2 version of ext() requires them.
-
-=item *
-
-Wherever possible, shareable images are preferred to object libraries,
-and object libraries to plain object files. In accordance with VMS
-naming conventions, ext() looks for files named I<lib>shr and I<lib>rtl;
-it also looks for I<lib>lib and libI<lib> to accommodate Unix conventions
-used in some ported software.
-
-=item *
-
-For each library that is found, an appropriate directive for a linker options
-file is generated. The return values are space-separated strings of
-these directives, rather than elements used on the linker command line.
-
-=item *
-
-LDLOADLIBS contains both the libraries found based on C<$potential_libs> and
-the CRTLs, if any, specified in Config.pm. EXTRALIBS contains just those
-libraries found based on C<$potential_libs>. BSLOADLIBS and LD_RUN_PATH
-are always empty.
-
-=back
-
-In addition, an attempt is made to recognize several common Unix library
-names, and filter them out or convert them to their VMS equivalents, as
-appropriate.
-
-In general, the VMS version of ext() should properly handle input from
-extensions originally designed for a Unix or VMS environment. If you
-encounter problems, or discover cases where the search could be improved,
-please let us know.
-
-=head2 Win32 implementation
-
-The version of ext() which is executed under Win32 differs from the
-Unix-OS/2 version in several respects:
-
-=over 2
-
-=item *
-
-If C<$potential_libs> is empty, the return value will be empty.
-Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
-will be appended to the list of C<$potential_libs>. The libraries
-will be searched for in the directories specified in C<$potential_libs>,
-C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>.
-For each library that is found, a space-separated list of fully qualified
-library pathnames is generated.
-
-=item *
-
-Input library and path specifications are accepted with or without the
-C<-l> and C<-L> prefixes used by Unix linkers.
-
-An entry of the form C<-La:\foo> specifies the C<a:\foo> directory to look
-for the libraries that follow.
-
-An entry of the form C<-lfoo> specifies the library C<foo>, which may be
-spelled differently depending on what kind of compiler you are using. If
-you are using GCC, it gets translated to C<libfoo.a>, but for other win32
-compilers, it becomes C<foo.lib>. If no files are found by those translated
-names, one more attempt is made to find them using either C<foo.a> or
-C<libfoo.lib>, depending on whether GCC or some other win32 compiler is
-being used, respectively.
-
-If neither the C<-L> or C<-l> prefix is present in an entry, the entry is
-considered a directory to search if it is in fact a directory, and a
-library to search for otherwise. The C<$Config{lib_ext}> suffix will
-be appended to any entries that are not directories and don't already have
-the suffix.
-
-Note that the C<-L> and C<-l> prefixes are B<not required>, but authors
-who wish their extensions to be portable to Unix or OS/2 should use the
-prefixes, since the Unix-OS/2 version of ext() requires them.
-
-=item *
-
-Entries cannot be plain object files, as many Win32 compilers will
-not handle object files in the place of libraries.
-
-=item *
-
-Entries in C<$potential_libs> beginning with a colon and followed by
-alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
-An entry that matches C</:nodefault/i> disables the appending of default
-libraries found in C<$Config{perllibs}> (this should be only needed very rarely).
-
-An entry that matches C</:nosearch/i> disables all searching for
-the libraries specified after it. Translation of C<-Lfoo> and
-C<-lfoo> still happens as appropriate (depending on compiler being used,
-as reflected by C<$Config{cc}>), but the entries are not verified to be
-valid files or directories.
-
-An entry that matches C</:search/i> reenables searching for
-the libraries specified after it. You can put it at the end to
-enable searching for default libraries specified by C<$Config{perllibs}>.
-
-=item *
-
-The libraries specified may be a mixture of static libraries and
-import libraries (to link with DLLs). Since both kinds are used
-pretty transparently on the Win32 platform, we do not attempt to
-distinguish between them.
-
-=item *
-
-LDLOADLIBS and EXTRALIBS are always identical under Win32, and BSLOADLIBS
-and LD_RUN_PATH are always empty (this may change in future).
-
-=item *
-
-You must make sure that any paths and path components are properly
-surrounded with double-quotes if they contain spaces. For example,
-C<$potential_libs> could be (literally):
-
- "-Lc:\Program Files\vc\lib" msvcrt.lib "la test\foo bar.lib"
-
-Note how the first and last entries are protected by quotes in order
-to protect the spaces.
-
-=item *
-
-Since this module is most often used only indirectly from extension
-C<Makefile.PL> files, here is an example C<Makefile.PL> entry to add
-a library to the build process for an extension:
-
- LIBS => ['-lgl']
-
-When using GCC, that entry specifies that MakeMaker should first look
-for C<libgl.a> (followed by C<gl.a>) in all the locations specified by
-C<$Config{libpth}>.
-
-When using a compiler other than GCC, the above entry will search for
-C<gl.lib> (followed by C<libgl.lib>).
-
-If the library happens to be in a location not in C<$Config{libpth}>,
-you need:
-
- LIBS => ['-Lc:\gllibs -lgl']
-
-Here is a less often used example:
-
- LIBS => ['-lgl', ':nosearch -Ld:\mesalibs -lmesa -luser32']
-
-This specifies a search for library C<gl> as before. If that search
-fails to find the library, it looks at the next item in the list. The
-C<:nosearch> flag will prevent searching for the libraries that follow,
-so it simply returns the value as C<-Ld:\mesalibs -lmesa -luser32>,
-since GCC can use that value as is with its linker.
-
-When using the Visual C compiler, the second item is returned as
-C<-libpath:d:\mesalibs mesa.lib user32.lib>.
-
-When using the Borland compiler, the second item is returned as
-C<-Ld:\mesalibs mesa.lib user32.lib>, and MakeMaker takes care of
-moving the C<-Ld:\mesalibs> to the correct place in the linker
-command line.
-
-=back
-
-
-=head1 SEE ALSO
-
-L<ExtUtils::MakeMaker>
-
-=cut
-
diff --git a/contrib/perl5/lib/ExtUtils/MM_Cygwin.pm b/contrib/perl5/lib/ExtUtils/MM_Cygwin.pm
deleted file mode 100644
index 439c67c..0000000
--- a/contrib/perl5/lib/ExtUtils/MM_Cygwin.pm
+++ /dev/null
@@ -1,123 +0,0 @@
-package ExtUtils::MM_Cygwin;
-
-use Config;
-#use Cwd;
-#use File::Basename;
-require Exporter;
-
-Exporter::import('ExtUtils::MakeMaker',
- qw( $Verbose &neatvalue));
-
-unshift @MM::ISA, 'ExtUtils::MM_Cygwin';
-
-sub canonpath {
- my($self,$path) = @_;
- $path =~ s|\\|/|g;
- return $self->ExtUtils::MM_Unix::canonpath($path);
-}
-
-sub cflags {
- my($self,$libperl)=@_;
- return $self->{CFLAGS} if $self->{CFLAGS};
- my $base =$self->ExtUtils::MM_Unix::cflags($libperl);
- foreach (split /\n/, $base) {
- / *= */ and $self->{$`} = $';
- };
- $self->{CCFLAGS} .= " -DUSEIMPORTLIB" if ($Config{useshrplib} eq 'true');
-
- return $self->{CFLAGS} = qq{
-CCFLAGS = $self->{CCFLAGS}
-OPTIMIZE = $self->{OPTIMIZE}
-PERLTYPE = $self->{PERLTYPE}
-LARGE = $self->{LARGE}
-SPLIT = $self->{SPLIT}
-};
-
-}
-
-sub manifypods {
- my($self, %attribs) = @_;
- return "\nmanifypods : pure_all\n\t$self->{NOECHO}\$(NOOP)\n" unless
- %{$self->{MAN3PODS}} or %{$self->{MAN1PODS}};
- my($dist);
- my($pod2man_exe);
- if (defined $self->{PERL_SRC}) {
- $pod2man_exe = $self->catfile($self->{PERL_SRC},'pod','pod2man');
- } else {
- $pod2man_exe = $self->catfile($Config{scriptdirexp},'pod2man');
- }
- unless ($self->perl_script($pod2man_exe)) {
- # No pod2man but some MAN3PODS to be installed
- print <<END;
-
-Warning: I could not locate your pod2man program. Please make sure,
- your pod2man program is in your PATH before you execute 'make'
-
-END
- $pod2man_exe = "-S pod2man";
- }
- my(@m);
- push @m,
-qq[POD2MAN_EXE = $pod2man_exe\n],
-qq[POD2MAN = \$(PERL) -we '%m=\@ARGV;for (keys %m){' \\\n],
-q[-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "],
- $self->{MAKEFILE}, q[";' \\
--e 'print "Manifying $$m{$$_}\n"; $$m{$$_} =~ s/::/./g;' \\
--e 'system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2MAN_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\
--e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
-];
- push @m, "\nmanifypods : pure_all ";
- push @m, join " \\\n\t", keys %{$self->{MAN1PODS}}, keys %{$self->{MAN3PODS}};
-
- push(@m,"\n");
- if (%{$self->{MAN1PODS}} || %{$self->{MAN3PODS}}) {
- grep { $self->{MAN1PODS}{$_} =~ s/::/./g } keys %{$self->{MAN1PODS}};
- grep { $self->{MAN3PODS}{$_} =~ s/::/./g } keys %{$self->{MAN3PODS}};
- push @m, "\t$self->{NOECHO}\$(POD2MAN) \\\n\t";
- push @m, join " \\\n\t", %{$self->{MAN1PODS}}, %{$self->{MAN3PODS}};
- }
- join('', @m);
-}
-
-sub perl_archive
-{
- return '$(PERL_INC)' .'/'. ("$Config{libperl}" or "libperl.a");
-}
-
-1;
-__END__
-
-=head1 NAME
-
-ExtUtils::MM_Cygwin - methods to override UN*X behaviour in ExtUtils::MakeMaker
-
-=head1 SYNOPSIS
-
- use ExtUtils::MM_Cygwin; # Done internally by ExtUtils::MakeMaker if needed
-
-=head1 DESCRIPTION
-
-See ExtUtils::MM_Unix for a documentation of the methods provided there.
-
-=over
-
-=item canonpath
-
-replaces backslashes with forward ones. then acts as *nixish.
-
-=item cflags
-
-if configured for dynamic loading, triggers #define EXT in EXTERN.h
-
-=item manifypods
-
-replaces strings '::' with '.' in man page names
-
-=item perl_archive
-
-points to libperl.a
-
-=back
-
-=cut
-
diff --git a/contrib/perl5/lib/ExtUtils/MM_OS2.pm b/contrib/perl5/lib/ExtUtils/MM_OS2.pm
deleted file mode 100644
index cd6a1e4..0000000
--- a/contrib/perl5/lib/ExtUtils/MM_OS2.pm
+++ /dev/null
@@ -1,134 +0,0 @@
-package ExtUtils::MM_OS2;
-
-#use Config;
-#use Cwd;
-#use File::Basename;
-require Exporter;
-
-Exporter::import('ExtUtils::MakeMaker',
- qw( $Verbose &neatvalue));
-
-unshift @MM::ISA, 'ExtUtils::MM_OS2';
-
-sub dlsyms {
- my($self,%attribs) = @_;
-
- my($funcs) = $attribs{DL_FUNCS} || $self->{DL_FUNCS} || {};
- my($vars) = $attribs{DL_VARS} || $self->{DL_VARS} || [];
- my($funclist) = $attribs{FUNCLIST} || $self->{FUNCLIST} || [];
- my($imports) = $attribs{IMPORTS} || $self->{IMPORTS} || {};
- my(@m);
- (my $boot = $self->{NAME}) =~ s/:/_/g;
-
- if (not $self->{SKIPHASH}{'dynamic'}) {
- push(@m,"
-$self->{BASEEXT}.def: Makefile.PL
-",
- ' $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e \'use ExtUtils::Mksymlists; \\
- Mksymlists("NAME" => "$(NAME)", "DLBASE" => "$(DLBASE)", ',
- '"VERSION" => "$(VERSION)", "DISTNAME" => "$(DISTNAME)", ',
- '"INSTALLDIRS" => "$(INSTALLDIRS)", ',
- '"DL_FUNCS" => ',neatvalue($funcs),
- ', "FUNCLIST" => ',neatvalue($funclist),
- ', "IMPORTS" => ',neatvalue($imports),
- ', "DL_VARS" => ', neatvalue($vars), ');\'
-');
- }
- if (%{$self->{IMPORTS}}) {
- # Make import files (needed for static build)
- -d 'tmp_imp' or mkdir 'tmp_imp', 0777 or die "Can't mkdir tmp_imp";
- open IMP, '>tmpimp.imp' or die "Can't open tmpimp.imp";
- my ($name, $exp);
- while (($name, $exp)= each %{$self->{IMPORTS}}) {
- my ($lib, $id) = ($exp =~ /(.*)\.(.*)/) or die "Malformed IMPORT `$exp'";
- print IMP "$name $lib $id ?\n";
- }
- close IMP or die "Can't close tmpimp.imp";
- # print "emximp -o tmpimp$Config::Config{lib_ext} tmpimp.imp\n";
- system "emximp -o tmpimp$Config::Config{lib_ext} tmpimp.imp"
- and die "Cannot make import library: $!, \$?=$?";
- unlink <tmp_imp/*>;
- system "cd tmp_imp; $Config::Config{ar} x ../tmpimp$Config::Config{lib_ext}"
- and die "Cannot extract import objects: $!, \$?=$?";
- }
- join('',@m);
-}
-
-sub static_lib {
- my($self) = @_;
- my $old = $self->ExtUtils::MM_Unix::static_lib();
- return $old unless %{$self->{IMPORTS}};
-
- my @chunks = split /\n{2,}/, $old;
- shift @chunks unless length $chunks[0]; # Empty lines at the start
- $chunks[0] .= <<'EOC';
-
- $(AR) $(AR_STATIC_ARGS) $@ tmp_imp/* && $(RANLIB) $@
-EOC
- return join "\n\n". '', @chunks;
-}
-
-sub replace_manpage_separator {
- my($self,$man) = @_;
- $man =~ s,/+,.,g;
- $man;
-}
-
-sub maybe_command {
- my($self,$file) = @_;
- $file =~ s,[/\\]+,/,g;
- return $file if -x $file && ! -d _;
- return "$file.exe" if -x "$file.exe" && ! -d _;
- return "$file.cmd" if -x "$file.cmd" && ! -d _;
- return;
-}
-
-sub file_name_is_absolute {
- my($self,$file) = @_;
- $file =~ m{^([a-z]:)?[\\/]}i ;
-}
-
-sub perl_archive
-{
- return "\$(PERL_INC)/libperl\$(LIB_EXT)";
-}
-
-=item perl_archive_after
-
-This is an internal method that returns path to a library which
-should be put on the linker command line I<after> the external libraries
-to be linked to dynamic extensions. This may be needed if the linker
-is one-pass, and Perl includes some overrides for C RTL functions,
-such as malloc().
-
-=cut
-
-sub perl_archive_after
-{
- return "\$(PERL_INC)/libperl_override\$(LIB_EXT)" unless $OS2::is_aout;
- return "";
-}
-
-sub export_list
-{
- my ($self) = @_;
- return "$self->{BASEEXT}.def";
-}
-
-1;
-__END__
-
-=head1 NAME
-
-ExtUtils::MM_OS2 - methods to override UN*X behaviour in ExtUtils::MakeMaker
-
-=head1 SYNOPSIS
-
- use ExtUtils::MM_OS2; # Done internally by ExtUtils::MakeMaker if needed
-
-=head1 DESCRIPTION
-
-See ExtUtils::MM_Unix for a documentation of the methods provided
-there. This package overrides the implementation of these methods, not
-the semantics.
-
diff --git a/contrib/perl5/lib/ExtUtils/MM_Unix.pm b/contrib/perl5/lib/ExtUtils/MM_Unix.pm
deleted file mode 100644
index 4284eb1..0000000
--- a/contrib/perl5/lib/ExtUtils/MM_Unix.pm
+++ /dev/null
@@ -1,3858 +0,0 @@
-# $FreeBSD$
-package ExtUtils::MM_Unix;
-
-use Exporter ();
-use Config;
-use File::Basename qw(basename dirname fileparse);
-use DirHandle;
-use strict;
-use vars qw($VERSION $Is_Mac $Is_OS2 $Is_VMS $Is_Win32 $Is_Dos $Is_PERL_OBJECT
- $Verbose %pm %static $Xsubpp_Version);
-
-$VERSION = substr q$Revision: 1.12603 $, 10;
-# $Id: MM_Unix.pm,v 1.126 1998/06/28 21:32:49 k Exp k $
-
-Exporter::import('ExtUtils::MakeMaker', qw($Verbose &neatvalue));
-
-$Is_OS2 = $^O eq 'os2';
-$Is_Mac = $^O eq 'MacOS';
-$Is_Win32 = $^O eq 'MSWin32';
-$Is_Dos = $^O eq 'dos';
-
-$Is_PERL_OBJECT = $Config{'ccflags'} =~ /-DPERL_OBJECT/;
-
-if ($Is_VMS = $^O eq 'VMS') {
- require VMS::Filespec;
- import VMS::Filespec qw( &vmsify );
-}
-
-=head1 NAME
-
-ExtUtils::MM_Unix - methods used by ExtUtils::MakeMaker
-
-=head1 SYNOPSIS
-
-C<require ExtUtils::MM_Unix;>
-
-=head1 DESCRIPTION
-
-The methods provided by this package are designed to be used in
-conjunction with ExtUtils::MakeMaker. When MakeMaker writes a
-Makefile, it creates one or more objects that inherit their methods
-from a package C<MM>. MM itself doesn't provide any methods, but it
-ISA ExtUtils::MM_Unix class. The inheritance tree of MM lets operating
-specific packages take the responsibility for all the methods provided
-by MM_Unix. We are trying to reduce the number of the necessary
-overrides by defining rather primitive operations within
-ExtUtils::MM_Unix.
-
-If you are going to write a platform specific MM package, please try
-to limit the necessary overrides to primitive methods, and if it is not
-possible to do so, let's work out how to achieve that gain.
-
-If you are overriding any of these methods in your Makefile.PL (in the
-MY class), please report that to the makemaker mailing list. We are
-trying to minimize the necessary method overrides and switch to data
-driven Makefile.PLs wherever possible. In the long run less methods
-will be overridable via the MY class.
-
-=head1 METHODS
-
-The following description of methods is still under
-development. Please refer to the code for not suitably documented
-sections and complain loudly to the makemaker mailing list.
-
-Not all of the methods below are overridable in a
-Makefile.PL. Overridable methods are marked as (o). All methods are
-overridable by a platform specific MM_*.pm file (See
-L<ExtUtils::MM_VMS>) and L<ExtUtils::MM_OS2>).
-
-=head2 Preloaded methods
-
-=over 2
-
-=item canonpath
-
-No physical check on the filesystem, but a logical cleanup of a
-path. On UNIX eliminated successive slashes and successive "/.".
-
-=cut
-
-sub canonpath {
- my($self,$path) = @_;
- my $node = '';
- if ( $^O eq 'qnx' && $path =~ s|^(//\d+)/|/|s ) {
- $node = $1;
- }
- $path =~ s|(?<=[^/])/+|/|g ; # xx////xx -> xx/xx
- $path =~ s|(/\.)+/|/|g ; # xx/././xx -> xx/xx
- $path =~ s|^(\./)+||s unless $path eq "./"; # ./xx -> xx
- $path =~ s|(?<=[^/])/\z|| ; # xx/ -> xx
- "$node$path";
-}
-
-=item catdir
-
-Concatenate two or more directory names to form a complete path ending
-with a directory. But remove the trailing slash from the resulting
-string, because it doesn't look good, isn't necessary and confuses
-OS2. Of course, if this is the root directory, don't cut off the
-trailing slash :-)
-
-=cut
-
-# ';
-
-sub catdir {
- my $self = shift @_;
- my @args = @_;
- for (@args) {
- # append a slash to each argument unless it has one there
- $_ .= "/" if $_ eq '' or substr($_,-1) ne "/";
- }
- $self->canonpath(join('', @args));
-}
-
-=item catfile
-
-Concatenate one or more directory names and a filename to form a
-complete path ending with a filename
-
-=cut
-
-sub catfile {
- my $self = shift @_;
- my $file = pop @_;
- return $self->canonpath($file) unless @_;
- my $dir = $self->catdir(@_);
- for ($dir) {
- $_ .= "/" unless substr($_,length($_)-1,1) eq "/";
- }
- return $self->canonpath($dir.$file);
-}
-
-=item curdir
-
-Returns a string representing of the current directory. "." on UNIX.
-
-=cut
-
-sub curdir {
- return "." ;
-}
-
-=item rootdir
-
-Returns a string representing of the root directory. "/" on UNIX.
-
-=cut
-
-sub rootdir {
- return "/";
-}
-
-=item updir
-
-Returns a string representing of the parent directory. ".." on UNIX.
-
-=cut
-
-sub updir {
- return "..";
-}
-
-sub ExtUtils::MM_Unix::c_o ;
-sub ExtUtils::MM_Unix::clean ;
-sub ExtUtils::MM_Unix::const_cccmd ;
-sub ExtUtils::MM_Unix::const_config ;
-sub ExtUtils::MM_Unix::const_loadlibs ;
-sub ExtUtils::MM_Unix::constants ;
-sub ExtUtils::MM_Unix::depend ;
-sub ExtUtils::MM_Unix::dir_target ;
-sub ExtUtils::MM_Unix::dist ;
-sub ExtUtils::MM_Unix::dist_basics ;
-sub ExtUtils::MM_Unix::dist_ci ;
-sub ExtUtils::MM_Unix::dist_core ;
-sub ExtUtils::MM_Unix::dist_dir ;
-sub ExtUtils::MM_Unix::dist_test ;
-sub ExtUtils::MM_Unix::dlsyms ;
-sub ExtUtils::MM_Unix::dynamic ;
-sub ExtUtils::MM_Unix::dynamic_bs ;
-sub ExtUtils::MM_Unix::dynamic_lib ;
-sub ExtUtils::MM_Unix::exescan ;
-sub ExtUtils::MM_Unix::export_list ;
-sub ExtUtils::MM_Unix::extliblist ;
-sub ExtUtils::MM_Unix::file_name_is_absolute ;
-sub ExtUtils::MM_Unix::find_perl ;
-sub ExtUtils::MM_Unix::fixin ;
-sub ExtUtils::MM_Unix::force ;
-sub ExtUtils::MM_Unix::guess_name ;
-sub ExtUtils::MM_Unix::has_link_code ;
-sub ExtUtils::MM_Unix::htmlifypods ;
-sub ExtUtils::MM_Unix::init_dirscan ;
-sub ExtUtils::MM_Unix::init_main ;
-sub ExtUtils::MM_Unix::init_others ;
-sub ExtUtils::MM_Unix::install ;
-sub ExtUtils::MM_Unix::installbin ;
-sub ExtUtils::MM_Unix::libscan ;
-sub ExtUtils::MM_Unix::linkext ;
-sub ExtUtils::MM_Unix::lsdir ;
-sub ExtUtils::MM_Unix::macro ;
-sub ExtUtils::MM_Unix::makeaperl ;
-sub ExtUtils::MM_Unix::makefile ;
-sub ExtUtils::MM_Unix::manifypods ;
-sub ExtUtils::MM_Unix::maybe_command ;
-sub ExtUtils::MM_Unix::maybe_command_in_dirs ;
-sub ExtUtils::MM_Unix::needs_linking ;
-sub ExtUtils::MM_Unix::nicetext ;
-sub ExtUtils::MM_Unix::parse_version ;
-sub ExtUtils::MM_Unix::pasthru ;
-sub ExtUtils::MM_Unix::path ;
-sub ExtUtils::MM_Unix::perl_archive;
-sub ExtUtils::MM_Unix::perl_archive_after;
-sub ExtUtils::MM_Unix::perl_script ;
-sub ExtUtils::MM_Unix::perldepend ;
-sub ExtUtils::MM_Unix::pm_to_blib ;
-sub ExtUtils::MM_Unix::post_constants ;
-sub ExtUtils::MM_Unix::post_initialize ;
-sub ExtUtils::MM_Unix::postamble ;
-sub ExtUtils::MM_Unix::ppd ;
-sub ExtUtils::MM_Unix::prefixify ;
-sub ExtUtils::MM_Unix::processPL ;
-sub ExtUtils::MM_Unix::realclean ;
-sub ExtUtils::MM_Unix::replace_manpage_separator ;
-sub ExtUtils::MM_Unix::static ;
-sub ExtUtils::MM_Unix::static_lib ;
-sub ExtUtils::MM_Unix::staticmake ;
-sub ExtUtils::MM_Unix::subdir_x ;
-sub ExtUtils::MM_Unix::subdirs ;
-sub ExtUtils::MM_Unix::test ;
-sub ExtUtils::MM_Unix::test_via_harness ;
-sub ExtUtils::MM_Unix::test_via_script ;
-sub ExtUtils::MM_Unix::tool_autosplit ;
-sub ExtUtils::MM_Unix::tool_xsubpp ;
-sub ExtUtils::MM_Unix::tools_other ;
-sub ExtUtils::MM_Unix::top_targets ;
-sub ExtUtils::MM_Unix::writedoc ;
-sub ExtUtils::MM_Unix::xs_c ;
-sub ExtUtils::MM_Unix::xs_cpp ;
-sub ExtUtils::MM_Unix::xs_o ;
-sub ExtUtils::MM_Unix::xsubpp_version ;
-
-package ExtUtils::MM_Unix;
-
-use SelfLoader;
-
-1;
-
-__DATA__
-
-=back
-
-=head2 SelfLoaded methods
-
-=over 2
-
-=item c_o (o)
-
-Defines the suffix rules to compile different flavors of C files to
-object files.
-
-=cut
-
-sub c_o {
-# --- Translation Sections ---
-
- my($self) = shift;
- return '' unless $self->needs_linking();
- my(@m);
- push @m, '
-.c$(OBJ_EXT):
- $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
-';
- push @m, '
-.C$(OBJ_EXT):
- $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.C
-' if $^O ne 'os2' and $^O ne 'MSWin32' and $^O ne 'dos'; #Case-specific
- push @m, '
-.cpp$(OBJ_EXT):
- $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.cpp
-
-.cxx$(OBJ_EXT):
- $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.cxx
-
-.cc$(OBJ_EXT):
- $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.cc
-';
- join "", @m;
-}
-
-=item cflags (o)
-
-Does very much the same as the cflags script in the perl
-distribution. It doesn't return the whole compiler command line, but
-initializes all of its parts. The const_cccmd method then actually
-returns the definition of the CCCMD macro which uses these parts.
-
-=cut
-
-#'
-
-sub cflags {
- my($self,$libperl)=@_;
- return $self->{CFLAGS} if $self->{CFLAGS};
- return '' unless $self->needs_linking();
-
- my($prog, $uc, $perltype, %cflags);
- $libperl ||= $self->{LIBPERL_A} || "libperl$self->{LIB_EXT}" ;
- $libperl =~ s/\.\$\(A\)$/$self->{LIB_EXT}/;
-
- @cflags{qw(cc ccflags optimize shellflags)}
- = @Config{qw(cc ccflags optimize shellflags)};
- my($optdebug) = "";
-
- $cflags{shellflags} ||= '';
-
- my(%map) = (
- D => '-DDEBUGGING',
- E => '-DEMBED',
- DE => '-DDEBUGGING -DEMBED',
- M => '-DEMBED -DMULTIPLICITY',
- DM => '-DDEBUGGING -DEMBED -DMULTIPLICITY',
- );
-
- if ($libperl =~ /libperl(\w*)\Q$self->{LIB_EXT}/){
- $uc = uc($1);
- } else {
- $uc = ""; # avoid warning
- }
- $perltype = $map{$uc} ? $map{$uc} : "";
-
- if ($uc =~ /^D/) {
- $optdebug = "-g";
- }
-
-
- my($name);
- ( $name = $self->{NAME} . "_cflags" ) =~ s/:/_/g ;
- if ($prog = $Config::Config{$name}) {
- # Expand hints for this extension via the shell
- print STDOUT "Processing $name hint:\n" if $Verbose;
- my(@o)=`cc=\"$cflags{cc}\"
- ccflags=\"$cflags{ccflags}\"
- optimize=\"$cflags{optimize}\"
- perltype=\"$cflags{perltype}\"
- optdebug=\"$cflags{optdebug}\"
- eval '$prog'
- echo cc=\$cc
- echo ccflags=\$ccflags
- echo optimize=\$optimize
- echo perltype=\$perltype
- echo optdebug=\$optdebug
- `;
- my($line);
- foreach $line (@o){
- chomp $line;
- if ($line =~ /(.*?)=\s*(.*)\s*$/){
- $cflags{$1} = $2;
- print STDOUT " $1 = $2\n" if $Verbose;
- } else {
- print STDOUT "Unrecognised result from hint: '$line'\n";
- }
- }
- }
-
- if ($optdebug) {
- $cflags{optimize} = $optdebug;
- }
-
- for (qw(ccflags optimize perltype)) {
- $cflags{$_} =~ s/^\s+//;
- $cflags{$_} =~ s/\s+/ /g;
- $cflags{$_} =~ s/\s+$//;
- $self->{uc $_} ||= $cflags{$_}
- }
-
- if ($Is_PERL_OBJECT) {
- $self->{CCFLAGS} =~ s/-DPERL_OBJECT(\b|$)/-DPERL_CAPI/g;
- if ($Is_Win32) {
- if ($Config{'cc'} =~ /^cl/i) {
- # Turn off C++ mode of the MSC compiler
- $self->{CCFLAGS} =~ s/-TP(\s|$)//g;
- $self->{OPTIMIZE} =~ s/-TP(\s|$)//g;
- }
- elsif ($Config{'cc'} =~ /^bcc32/i) {
- # Turn off C++ mode of the Borland compiler
- $self->{CCFLAGS} =~ s/-P(\s|$)//g;
- $self->{OPTIMIZE} =~ s/-P(\s|$)//g;
- }
- elsif ($Config{'cc'} =~ /^gcc/i) {
- # Turn off C++ mode of the GCC compiler
- $self->{CCFLAGS} =~ s/-xc\+\+(\s|$)//g;
- $self->{OPTIMIZE} =~ s/-xc\+\+(\s|$)//g;
- }
- }
- }
-
- if ($self->{POLLUTE}) {
- $self->{CCFLAGS} .= ' -DPERL_POLLUTE ';
- }
-
- my $pollute = '';
- if ($Config{usemymalloc} and not $Config{bincompat5005}
- and not $Config{ccflags} =~ /-DPERL_POLLUTE_MALLOC\b/
- and $self->{PERL_MALLOC_OK}) {
- $pollute = '$(PERL_MALLOC_DEF)';
- }
-
- return $self->{CFLAGS} = qq{
-CCFLAGS = $self->{CCFLAGS}
-OPTIMIZE = $self->{OPTIMIZE}
-PERLTYPE = $self->{PERLTYPE}
-MPOLLUTE = $pollute
-};
-
-}
-
-=item clean (o)
-
-Defines the clean target.
-
-=cut
-
-sub clean {
-# --- Cleanup and Distribution Sections ---
-
- my($self, %attribs) = @_;
- my(@m,$dir);
- push(@m, '
-# Delete temporary files but do not touch installed files. We don\'t delete
-# the Makefile here so a later make realclean still has a makefile to use.
-
-clean ::
-');
- # clean subdirectories first
- for $dir (@{$self->{DIR}}) {
- if ($Is_Win32 && Win32::IsWin95()) {
- push @m, <<EOT;
- cd $dir
- \$(TEST_F) $self->{MAKEFILE}
- \$(MAKE) clean
- cd ..
-EOT
- }
- else {
- push @m, <<EOT;
- -cd $dir && \$(TEST_F) $self->{MAKEFILE} && \$(MAKE) clean
-EOT
- }
- }
-
- my(@otherfiles) = values %{$self->{XS}}; # .c files from *.xs files
- push(@otherfiles, $attribs{FILES}) if $attribs{FILES};
- push(@otherfiles, qw[./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all
- perlmain.c mon.out core core.*perl.*.?
- *perl.core so_locations pm_to_blib
- *$(OBJ_EXT) *$(LIB_EXT) perl.exe
- $(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def
- $(BASEEXT).exp
- ]);
- push @m, "\t-$self->{RM_RF} @otherfiles\n";
- # See realclean and ext/utils/make_ext for usage of Makefile.old
- push(@m,
- "\t-$self->{MV} $self->{MAKEFILE} $self->{MAKEFILE}.old \$(DEV_NULL)\n");
- push(@m,
- "\t$attribs{POSTOP}\n") if $attribs{POSTOP};
- join("", @m);
-}
-
-=item const_cccmd (o)
-
-Returns the full compiler call for C programs and stores the
-definition in CONST_CCCMD.
-
-=cut
-
-sub const_cccmd {
- my($self,$libperl)=@_;
- return $self->{CONST_CCCMD} if $self->{CONST_CCCMD};
- return '' unless $self->needs_linking();
- return $self->{CONST_CCCMD} =
- q{CCCMD = $(CC) -c $(INC) $(CCFLAGS) $(OPTIMIZE) \\
- $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \\
- $(XS_DEFINE_VERSION)};
-}
-
-=item const_config (o)
-
-Defines a couple of constants in the Makefile that are imported from
-%Config.
-
-=cut
-
-sub const_config {
-# --- Constants Sections ---
-
- my($self) = shift;
- my(@m,$m);
- push(@m,"\n# These definitions are from config.sh (via $INC{'Config.pm'})\n");
- push(@m,"\n# They may have been overridden via Makefile.PL or on the command line\n");
- my(%once_only);
- foreach $m (@{$self->{CONFIG}}){
- # SITE*EXP macros are defined in &constants; avoid duplicates here
- next if $once_only{$m} or $m eq 'sitelibexp' or $m eq 'sitearchexp';
- push @m, "\U$m\E = ".$self->{uc $m}."\n";
- $once_only{$m} = 1;
- }
- join('', @m);
-}
-
-=item const_loadlibs (o)
-
-Defines EXTRALIBS, LDLOADLIBS, BSLOADLIBS, LD_RUN_PATH. See
-L<ExtUtils::Liblist> for details.
-
-=cut
-
-sub const_loadlibs {
- my($self) = shift;
- return "" unless $self->needs_linking;
- my @m;
- push @m, qq{
-# $self->{NAME} might depend on some other libraries:
-# See ExtUtils::Liblist for details
-#
-};
- my($tmp);
- for $tmp (qw/
- EXTRALIBS LDLOADLIBS BSLOADLIBS LD_RUN_PATH
- /) {
- next unless defined $self->{$tmp};
- push @m, "$tmp = $self->{$tmp}\n";
- }
- return join "", @m;
-}
-
-=item constants (o)
-
-Initializes lots of constants and .SUFFIXES and .PHONY
-
-=cut
-
-sub constants {
- my($self) = @_;
- my(@m,$tmp);
-
- for $tmp (qw/
-
- AR_STATIC_ARGS NAME DISTNAME NAME_SYM VERSION
- VERSION_SYM XS_VERSION INST_BIN INST_EXE INST_LIB
- INST_ARCHLIB INST_SCRIPT PREFIX INSTALLDIRS
- INSTALLPRIVLIB INSTALLARCHLIB INSTALLSITELIB
- INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB
- PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB
- FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC
- PERL_INC PERL FULLPERL FULL_AR
-
- / ) {
- next unless defined $self->{$tmp};
- push @m, "$tmp = $self->{$tmp}\n";
- }
-
- push @m, qq{
-VERSION_MACRO = VERSION
-DEFINE_VERSION = -D\$(VERSION_MACRO)=\\\"\$(VERSION)\\\"
-XS_VERSION_MACRO = XS_VERSION
-XS_DEFINE_VERSION = -D\$(XS_VERSION_MACRO)=\\\"\$(XS_VERSION)\\\"
-PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
-};
-
- push @m, qq{
-MAKEMAKER = $INC{'ExtUtils/MakeMaker.pm'}
-MM_VERSION = $ExtUtils::MakeMaker::VERSION
-};
-
- push @m, q{
-# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
-# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
-# ROOTEXT = Directory part of FULLEXT with leading slash (eg /DBD) !!! Deprecated from MM 5.32 !!!
-# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
-# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
-};
-
- for $tmp (qw/
- FULLEXT BASEEXT PARENT_NAME DLBASE VERSION_FROM INC DEFINE OBJECT
- LDFROM LINKTYPE PM_FILTER
- / ) {
- next unless defined $self->{$tmp};
- push @m, "$tmp = $self->{$tmp}\n";
- }
-
- push @m, "
-# Handy lists of source code files:
-XS_FILES= ".join(" \\\n\t", sort keys %{$self->{XS}})."
-C_FILES = ".join(" \\\n\t", @{$self->{C}})."
-O_FILES = ".join(" \\\n\t", @{$self->{O_FILES}})."
-H_FILES = ".join(" \\\n\t", @{$self->{H}})."
-HTMLLIBPODS = ".join(" \\\n\t", sort keys %{$self->{HTMLLIBPODS}})."
-HTMLSCRIPTPODS = ".join(" \\\n\t", sort keys %{$self->{HTMLSCRIPTPODS}})."
-MAN1PODS = ".join(" \\\n\t", sort keys %{$self->{MAN1PODS}})."
-MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})."
-";
-
- for $tmp (qw/
- INST_HTMLPRIVLIBDIR INSTALLHTMLPRIVLIBDIR
- INST_HTMLSITELIBDIR INSTALLHTMLSITELIBDIR
- INST_HTMLSCRIPTDIR INSTALLHTMLSCRIPTDIR
- INST_HTMLLIBDIR HTMLEXT
- INST_MAN1DIR INSTALLMAN1DIR MAN1EXT
- INST_MAN3DIR INSTALLMAN3DIR MAN3EXT
- /) {
- next unless defined $self->{$tmp};
- push @m, "$tmp = $self->{$tmp}\n";
- }
-
- for $tmp (qw(
- PERM_RW PERM_RWX
- )
- ) {
- my $method = lc($tmp);
- # warn "self[$self] method[$method]";
- push @m, "$tmp = ", $self->$method(), "\n";
- }
-
- push @m, q{
-.NO_CONFIG_REC: Makefile
-} if $ENV{CLEARCASE_ROOT};
-
- # why not q{} ? -- emacs
- push @m, qq{
-# work around a famous dec-osf make(1) feature(?):
-makemakerdflt: all
-
-.SUFFIXES: .xs .c .C .cpp .cxx .cc \$(OBJ_EXT)
-
-# Nick wanted to get rid of .PRECIOUS. I don't remember why. I seem to recall, that
-# some make implementations will delete the Makefile when we rebuild it. Because
-# we call false(1) when we rebuild it. So make(1) is not completely wrong when it
-# does so. Our milage may vary.
-# .PRECIOUS: Makefile # seems to be not necessary anymore
-
-.PHONY: all config static dynamic test linkext manifest
-
-# Where is the Config information that we are using/depend on
-CONFIGDEP = \$(PERL_ARCHLIB)/Config.pm \$(PERL_INC)/config.h
-};
-
- my @parentdir = split(/::/, $self->{PARENT_NAME});
- push @m, q{
-# Where to put things:
-INST_LIBDIR = }. $self->catdir('$(INST_LIB)',@parentdir) .q{
-INST_ARCHLIBDIR = }. $self->catdir('$(INST_ARCHLIB)',@parentdir) .q{
-
-INST_AUTODIR = }. $self->catdir('$(INST_LIB)','auto','$(FULLEXT)') .q{
-INST_ARCHAUTODIR = }. $self->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)') .q{
-};
-
- if ($self->has_link_code()) {
- push @m, '
-INST_STATIC = $(INST_ARCHAUTODIR)/$(BASEEXT)$(LIB_EXT)
-INST_DYNAMIC = $(INST_ARCHAUTODIR)/$(DLBASE).$(DLEXT)
-INST_BOOT = $(INST_ARCHAUTODIR)/$(BASEEXT).bs
-';
- } else {
- push @m, '
-INST_STATIC =
-INST_DYNAMIC =
-INST_BOOT =
-';
- }
-
- $tmp = $self->export_list;
- push @m, "
-EXPORT_LIST = $tmp
-";
- $tmp = $self->perl_archive;
- push @m, "
-PERL_ARCHIVE = $tmp
-";
- $tmp = $self->perl_archive_after;
- push @m, "
-PERL_ARCHIVE_AFTER = $tmp
-";
-
-# push @m, q{
-#INST_PM = }.join(" \\\n\t", sort values %{$self->{PM}}).q{
-#
-#PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
-#};
-
- push @m, q{
-TO_INST_PM = }.join(" \\\n\t", sort keys %{$self->{PM}}).q{
-
-PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
-};
-
- join('',@m);
-}
-
-=item depend (o)
-
-Same as macro for the depend attribute.
-
-=cut
-
-sub depend {
- my($self,%attribs) = @_;
- my(@m,$key,$val);
- while (($key,$val) = each %attribs){
- last unless defined $key;
- push @m, "$key: $val\n";
- }
- join "", @m;
-}
-
-=item dir_target (o)
-
-Takes an array of directories that need to exist and returns a
-Makefile entry for a .exists file in these directories. Returns
-nothing, if the entry has already been processed. We're helpless
-though, if the same directory comes as $(FOO) _and_ as "bar". Both of
-them get an entry, that's why we use "::".
-
-=cut
-
-sub dir_target {
-# --- Make-Directories section (internal method) ---
-# dir_target(@array) returns a Makefile entry for the file .exists in each
-# named directory. Returns nothing, if the entry has already been processed.
-# We're helpless though, if the same directory comes as $(FOO) _and_ as "bar".
-# Both of them get an entry, that's why we use "::". I chose '$(PERL)' as the
-# prerequisite, because there has to be one, something that doesn't change
-# too often :)
-
- my($self,@dirs) = @_;
- my(@m,$dir,$targdir);
- foreach $dir (@dirs) {
- my($src) = $self->catfile($self->{PERL_INC},'perl.h');
- my($targ) = $self->catfile($dir,'.exists');
- # catfile may have adapted syntax of $dir to target OS, so...
- if ($Is_VMS) { # Just remove file name; dirspec is often in macro
- ($targdir = $targ) =~ s:/?\.exists\z::;
- }
- else { # while elsewhere we expect to see the dir separator in $targ
- $targdir = dirname($targ);
- }
- next if $self->{DIR_TARGET}{$self}{$targdir}++;
- push @m, qq{
-$targ :: $src
- $self->{NOECHO}\$(MKPATH) $targdir
- $self->{NOECHO}\$(EQUALIZE_TIMESTAMP) $src $targ
-};
- push(@m, qq{
- -$self->{NOECHO}\$(CHMOD) \$(PERM_RWX) $targdir
-}) unless $Is_VMS;
- }
- join "", @m;
-}
-
-=item dist (o)
-
-Defines a lot of macros for distribution support.
-
-=cut
-
-sub dist {
- my($self, %attribs) = @_;
-
- my(@m);
- # VERSION should be sanitised before use as a file name
- my($version) = $attribs{VERSION} || '$(VERSION)';
- my($name) = $attribs{NAME} || '$(DISTNAME)';
- my($tar) = $attribs{TAR} || 'tar'; # eg /usr/bin/gnutar
- my($tarflags) = $attribs{TARFLAGS} || 'cvf';
- my($zip) = $attribs{ZIP} || 'zip'; # eg pkzip Yuck!
- my($zipflags) = $attribs{ZIPFLAGS} || '-r';
- my($compress) = $attribs{COMPRESS} || 'gzip --best';
- my($suffix) = $attribs{SUFFIX} || '.gz'; # eg .gz
- my($shar) = $attribs{SHAR} || 'shar'; # eg "shar --gzip"
- my($preop) = $attribs{PREOP} || "$self->{NOECHO}\$(NOOP)"; # eg update MANIFEST
- my($postop) = $attribs{POSTOP} || "$self->{NOECHO}\$(NOOP)"; # eg remove the distdir
-
- my($to_unix) = $attribs{TO_UNIX} || ($Is_OS2
- ? "$self->{NOECHO}"
- . '$(TEST_F) tmp.zip && $(RM) tmp.zip;'
- . ' $(ZIP) -ll -mr tmp.zip $(DISTVNAME) && unzip -o tmp.zip && $(RM) tmp.zip'
- : "$self->{NOECHO}\$(NOOP)");
-
- my($ci) = $attribs{CI} || 'ci -u';
- my($rcs_label)= $attribs{RCS_LABEL}|| 'rcs -Nv$(VERSION_SYM): -q';
- my($dist_cp) = $attribs{DIST_CP} || 'best';
- my($dist_default) = $attribs{DIST_DEFAULT} || 'tardist';
-
- push @m, "
-DISTVNAME = ${name}-$version
-TAR = $tar
-TARFLAGS = $tarflags
-ZIP = $zip
-ZIPFLAGS = $zipflags
-COMPRESS = $compress
-SUFFIX = $suffix
-SHAR = $shar
-PREOP = $preop
-POSTOP = $postop
-TO_UNIX = $to_unix
-CI = $ci
-RCS_LABEL = $rcs_label
-DIST_CP = $dist_cp
-DIST_DEFAULT = $dist_default
-";
- join "", @m;
-}
-
-=item dist_basics (o)
-
-Defines the targets distclean, distcheck, skipcheck, manifest, veryclean.
-
-=cut
-
-sub dist_basics {
- my($self) = shift;
- my @m;
- push @m, q{
-distclean :: realclean distcheck
-};
-
- push @m, q{
-distcheck :
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=fullcheck \\
- -e fullcheck
-};
-
- push @m, q{
-skipcheck :
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=skipcheck \\
- -e skipcheck
-};
-
- push @m, q{
-manifest :
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=mkmanifest \\
- -e mkmanifest
-};
-
- push @m, q{
-veryclean : realclean
- $(RM_F) *~ *.orig */*~ */*.orig
-};
- join "", @m;
-}
-
-=item dist_ci (o)
-
-Defines a check in target for RCS.
-
-=cut
-
-sub dist_ci {
- my($self) = shift;
- my @m;
- push @m, q{
-ci :
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=maniread \\
- -e "@all = keys %{ maniread() };" \\
- -e 'print("Executing $(CI) @all\n"); system("$(CI) @all");' \\
- -e 'print("Executing $(RCS_LABEL) ...\n"); system("$(RCS_LABEL) @all");'
-};
- join "", @m;
-}
-
-=item dist_core (o)
-
-Defines the targets dist, tardist, zipdist, uutardist, shdist
-
-=cut
-
-sub dist_core {
- my($self) = shift;
- my @m;
- push @m, q{
-dist : $(DIST_DEFAULT)
- }.$self->{NOECHO}.q{$(PERL) -le 'print "Warning: Makefile possibly out of date with $$vf" if ' \
- -e '-e ($$vf="$(VERSION_FROM)") and -M $$vf < -M "}.$self->{MAKEFILE}.q{";'
-
-tardist : $(DISTVNAME).tar$(SUFFIX)
-
-zipdist : $(DISTVNAME).zip
-
-$(DISTVNAME).tar$(SUFFIX) : distdir
- $(PREOP)
- $(TO_UNIX)
- $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
- $(RM_RF) $(DISTVNAME)
- $(COMPRESS) $(DISTVNAME).tar
- $(POSTOP)
-
-$(DISTVNAME).zip : distdir
- $(PREOP)
- $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
- $(RM_RF) $(DISTVNAME)
- $(POSTOP)
-
-uutardist : $(DISTVNAME).tar$(SUFFIX)
- uuencode $(DISTVNAME).tar$(SUFFIX) \\
- $(DISTVNAME).tar$(SUFFIX) > \\
- $(DISTVNAME).tar$(SUFFIX)_uu
-
-shdist : distdir
- $(PREOP)
- $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
- $(RM_RF) $(DISTVNAME)
- $(POSTOP)
-};
- join "", @m;
-}
-
-=item dist_dir (o)
-
-Defines the scratch directory target that will hold the distribution
-before tar-ing (or shar-ing).
-
-=cut
-
-sub dist_dir {
- my($self) = shift;
- my @m;
- push @m, q{
-distdir :
- $(RM_RF) $(DISTVNAME)
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=manicopy,maniread \\
- -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
-};
- join "", @m;
-}
-
-=item dist_test (o)
-
-Defines a target that produces the distribution in the
-scratchdirectory, and runs 'perl Makefile.PL; make ;make test' in that
-subdirectory.
-
-=cut
-
-sub dist_test {
- my($self) = shift;
- my @m;
- push @m, q{
-disttest : distdir
- cd $(DISTVNAME) && $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) Makefile.PL
- cd $(DISTVNAME) && $(MAKE)
- cd $(DISTVNAME) && $(MAKE) test
-};
- join "", @m;
-}
-
-=item dlsyms (o)
-
-Used by AIX and VMS to define DL_FUNCS and DL_VARS and write the *.exp
-files.
-
-=cut
-
-sub dlsyms {
- my($self,%attribs) = @_;
-
- return '' unless ($^O eq 'aix' && $self->needs_linking() );
-
- my($funcs) = $attribs{DL_FUNCS} || $self->{DL_FUNCS} || {};
- my($vars) = $attribs{DL_VARS} || $self->{DL_VARS} || [];
- my($funclist) = $attribs{FUNCLIST} || $self->{FUNCLIST} || [];
- my(@m);
-
- push(@m,"
-dynamic :: $self->{BASEEXT}.exp
-
-") unless $self->{SKIPHASH}{'dynamic'}; # dynamic and static are subs, so...
-
- push(@m,"
-static :: $self->{BASEEXT}.exp
-
-") unless $self->{SKIPHASH}{'static'}; # we avoid a warning if we tick them
-
- push(@m,"
-$self->{BASEEXT}.exp: Makefile.PL
-",' $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e \'use ExtUtils::Mksymlists; \\
- Mksymlists("NAME" => "',$self->{NAME},'", "DL_FUNCS" => ',
- neatvalue($funcs), ', "FUNCLIST" => ', neatvalue($funclist),
- ', "DL_VARS" => ', neatvalue($vars), ');\'
-');
-
- join('',@m);
-}
-
-=item dynamic (o)
-
-Defines the dynamic target.
-
-=cut
-
-sub dynamic {
-# --- Dynamic Loading Sections ---
-
- my($self) = shift;
- '
-## $(INST_PM) has been moved to the all: target.
-## It remains here for awhile to allow for old usage: "make dynamic"
-#dynamic :: '.$self->{MAKEFILE}.' $(INST_DYNAMIC) $(INST_BOOT) $(INST_PM)
-dynamic :: '.$self->{MAKEFILE}.' $(INST_DYNAMIC) $(INST_BOOT)
- '.$self->{NOECHO}.'$(NOOP)
-';
-}
-
-=item dynamic_bs (o)
-
-Defines targets for bootstrap files.
-
-=cut
-
-sub dynamic_bs {
- my($self, %attribs) = @_;
- return '
-BOOTSTRAP =
-' unless $self->has_link_code();
-
- return '
-BOOTSTRAP = '."$self->{BASEEXT}.bs".'
-
-# As Mkbootstrap might not write a file (if none is required)
-# we use touch to prevent make continually trying to remake it.
-# The DynaLoader only reads a non-empty file.
-$(BOOTSTRAP): '."$self->{MAKEFILE} $self->{BOOTDEP}".' $(INST_ARCHAUTODIR)/.exists
- '.$self->{NOECHO}.'echo "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))"
- '.$self->{NOECHO}.'$(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" \
- -MExtUtils::Mkbootstrap \
- -e "Mkbootstrap(\'$(BASEEXT)\',\'$(BSLOADLIBS)\');"
- '.$self->{NOECHO}.'$(TOUCH) $(BOOTSTRAP)
- $(CHMOD) $(PERM_RW) $@
-
-$(INST_BOOT): $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists
- '."$self->{NOECHO}$self->{RM_RF}".' $(INST_BOOT)
- -'.$self->{CP}.' $(BOOTSTRAP) $(INST_BOOT)
- $(CHMOD) $(PERM_RW) $@
-';
-}
-
-=item dynamic_lib (o)
-
-Defines how to produce the *.so (or equivalent) files.
-
-=cut
-
-sub dynamic_lib {
- my($self, %attribs) = @_;
- return '' unless $self->needs_linking(); #might be because of a subdir
-
- return '' unless $self->has_link_code;
-
- my($otherldflags) = $attribs{OTHERLDFLAGS} || "";
- my($inst_dynamic_dep) = $attribs{INST_DYNAMIC_DEP} || "";
- my($armaybe) = $attribs{ARMAYBE} || $self->{ARMAYBE} || ":";
- my($ldfrom) = '$(LDFROM)';
- $armaybe = 'ar' if ($^O eq 'dec_osf' and $armaybe eq ':');
- my(@m);
- push(@m,'
-# This section creates the dynamically loadable $(INST_DYNAMIC)
-# from $(OBJECT) and possibly $(MYEXTLIB).
-ARMAYBE = '.$armaybe.'
-OTHERLDFLAGS = '.$otherldflags.'
-INST_DYNAMIC_DEP = '.$inst_dynamic_dep.'
-
-$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
-');
- if ($armaybe ne ':'){
- $ldfrom = 'tmp$(LIB_EXT)';
- push(@m,' $(ARMAYBE) cr '.$ldfrom.' $(OBJECT)'."\n");
- push(@m,' $(RANLIB) '."$ldfrom\n");
- }
- $ldfrom = "-all $ldfrom -none" if ($^O eq 'dec_osf');
-
- # The IRIX linker doesn't use LD_RUN_PATH
- my $ldrun = qq{-rpath "$self->{LD_RUN_PATH}"}
- if ($^O eq 'irix' && $self->{LD_RUN_PATH});
-
- # For example in AIX the shared objects/libraries from previous builds
- # linger quite a while in the shared dynalinker cache even when nobody
- # is using them. This is painful if one for instance tries to restart
- # a failed build because the link command will fail unnecessarily 'cos
- # the shared object/library is 'busy'.
- push(@m,' $(RM_F) $@
-');
-
- push(@m,' LD_RUN_PATH="$(LD_RUN_PATH)" $(LD) '.$ldrun.' $(LDDLFLAGS) '.$ldfrom.
- ' $(OTHERLDFLAGS) -o $@ $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) $(PERL_ARCHIVE_AFTER) $(EXPORT_LIST)');
- push @m, '
- $(CHMOD) $(PERM_RWX) $@
-';
-
- push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
- join('',@m);
-}
-
-=item exescan
-
-Deprecated method. Use libscan instead.
-
-=cut
-
-sub exescan {
- my($self,$path) = @_;
- $path;
-}
-
-=item extliblist
-
-Called by init_others, and calls ext ExtUtils::Liblist. See
-L<ExtUtils::Liblist> for details.
-
-=cut
-
-sub extliblist {
- my($self,$libs) = @_;
- require ExtUtils::Liblist;
- $self->ext($libs, $Verbose);
-}
-
-=item file_name_is_absolute
-
-Takes as argument a path and returns true, if it is an absolute path.
-
-=cut
-
-sub file_name_is_absolute {
- my($self,$file) = @_;
- if ($Is_Dos){
- $file =~ m{^([a-z]:)?[\\/]}is ;
- }
- else {
- $file =~ m:^/:s ;
- }
-}
-
-=item find_perl
-
-Finds the executables PERL and FULLPERL
-
-=cut
-
-sub find_perl {
- my($self, $ver, $names, $dirs, $trace) = @_;
- my($name, $dir);
- if ($trace >= 2){
- print "Looking for perl $ver by these names:
-@$names
-in these dirs:
-@$dirs
-";
- }
- foreach $name (@$names){
- foreach $dir (@$dirs){
- next unless defined $dir; # $self->{PERL_SRC} may be undefined
- my ($abs, $val);
- if ($self->file_name_is_absolute($name)) { # /foo/bar
- $abs = $name;
- } elsif ($self->canonpath($name) eq $self->canonpath(basename($name))) { # foo
- $abs = $self->catfile($dir, $name);
- } else { # foo/bar
- $abs = $self->canonpath($self->catfile($self->curdir, $name));
- }
- print "Checking $abs\n" if ($trace >= 2);
- next unless $self->maybe_command($abs);
- print "Executing $abs\n" if ($trace >= 2);
- $val = `$abs -e 'require $ver; print "VER_OK\n" ' 2>&1`;
- if ($val =~ /VER_OK/) {
- print "Using PERL=$abs\n" if $trace;
- return $abs;
- } elsif ($trace >= 2) {
- print "Result: `$val'\n";
- }
- }
- }
- print STDOUT "Unable to find a perl $ver (by these names: @$names, in these dirs: @$dirs)\n";
- 0; # false and not empty
-}
-
-=back
-
-=head2 Methods to actually produce chunks of text for the Makefile
-
-The methods here are called for each MakeMaker object in the order
-specified by @ExtUtils::MakeMaker::MM_Sections.
-
-=over 2
-
-=item fixin
-
-Inserts the sharpbang or equivalent magic number to a script
-
-=cut
-
-sub fixin { # stolen from the pink Camel book, more or less
- my($self,@files) = @_;
- my($does_shbang) = $Config::Config{'sharpbang'} =~ /^\s*\#\!/;
- my($file,$interpreter);
- for $file (@files) {
- local(*FIXIN);
- local(*FIXOUT);
- open(FIXIN, $file) or Carp::croak "Can't process '$file': $!";
- local $/ = "\n";
- chomp(my $line = <FIXIN>);
- next unless $line =~ s/^\s*\#!\s*//; # Not a shbang file.
- # Now figure out the interpreter name.
- my($cmd,$arg) = split ' ', $line, 2;
- $cmd =~ s!^.*/!!;
-
- # Now look (in reverse) for interpreter in absolute PATH (unless perl).
- if ($cmd eq "perl") {
- if ($Config{startperl} =~ m,^\#!.*/perl,) {
- $interpreter = $Config{startperl};
- $interpreter =~ s,^\#!,,;
- } else {
- $interpreter = $Config{perlpath};
- }
- } else {
- my(@absdirs) = reverse grep {$self->file_name_is_absolute} $self->path;
- $interpreter = '';
- my($dir);
- foreach $dir (@absdirs) {
- if ($self->maybe_command($cmd)) {
- warn "Ignoring $interpreter in $file\n" if $Verbose && $interpreter;
- $interpreter = $self->catfile($dir,$cmd);
- }
- }
- }
- # Figure out how to invoke interpreter on this machine.
-
- my($shb) = "";
- if ($interpreter) {
- print STDOUT "Changing sharpbang in $file to $interpreter" if $Verbose;
- # this is probably value-free on DOSISH platforms
- if ($does_shbang) {
- $shb .= "$Config{'sharpbang'}$interpreter";
- $shb .= ' ' . $arg if defined $arg;
- $shb .= "\n";
- }
- $shb .= qq{
-eval 'exec $interpreter $arg -S \$0 \${1+"\$\@"}'
- if 0; # not running under some shell
-} unless $Is_Win32; # this won't work on win32, so don't
- } else {
- warn "Can't find $cmd in PATH, $file unchanged"
- if $Verbose;
- next;
- }
-
- unless ( open(FIXOUT,">$file.new") ) {
- warn "Can't create new $file: $!\n";
- next;
- }
- my($dev,$ino,$mode) = stat FIXIN;
-
- # Print out the new #! line (or equivalent).
- local $\;
- undef $/;
- print FIXOUT $shb, <FIXIN>;
- close FIXIN;
- close FIXOUT;
-
- # can't rename/chmod open files on some DOSISH platforms
-
- # If they override perm_rwx, we won't notice it during fixin,
- # because fixin is run through a new instance of MakeMaker.
- # That is why we must run another CHMOD later.
- $mode = oct($self->perm_rwx) unless $dev;
- chmod $mode, $file;
-
- unless ( rename($file, "$file.bak") ) {
- warn "Can't rename $file to $file.bak: $!";
- next;
- }
- unless ( rename("$file.new", $file) ) {
- warn "Can't rename $file.new to $file: $!";
- unless ( rename("$file.bak", $file) ) {
- warn "Can't rename $file.bak back to $file either: $!";
- warn "Leaving $file renamed as $file.bak\n";
- }
- next;
- }
- unlink "$file.bak";
- } continue {
- close(FIXIN) if fileno(FIXIN);
- chmod oct($self->perm_rwx), $file or
- die "Can't reset permissions for $file: $!\n";
- system("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';;
- }
-}
-
-=item force (o)
-
-Just writes FORCE:
-
-=cut
-
-sub force {
- my($self) = shift;
- '# Phony target to force checking subdirectories.
-FORCE:
- '.$self->{NOECHO}.'$(NOOP)
-';
-}
-
-=item guess_name
-
-Guess the name of this package by examining the working directory's
-name. MakeMaker calls this only if the developer has not supplied a
-NAME attribute.
-
-=cut
-
-# ';
-
-sub guess_name {
- my($self) = @_;
- use Cwd 'cwd';
- my $name = basename(cwd());
- $name =~ s|[\-_][\d\.\-]+\z||; # this is new with MM 5.00, we
- # strip minus or underline
- # followed by a float or some such
- print "Warning: Guessing NAME [$name] from current directory name.\n";
- $name;
-}
-
-=item has_link_code
-
-Returns true if C, XS, MYEXTLIB or similar objects exist within this
-object that need a compiler. Does not descend into subdirectories as
-needs_linking() does.
-
-=cut
-
-sub has_link_code {
- my($self) = shift;
- return $self->{HAS_LINK_CODE} if defined $self->{HAS_LINK_CODE};
- if ($self->{OBJECT} or @{$self->{C} || []} or $self->{MYEXTLIB}){
- $self->{HAS_LINK_CODE} = 1;
- return 1;
- }
- return $self->{HAS_LINK_CODE} = 0;
-}
-
-=item htmlifypods (o)
-
-Defines targets and routines to translate the pods into HTML manpages
-and put them into the INST_HTMLLIBDIR and INST_HTMLSCRIPTDIR
-directories.
-
-=cut
-
-sub htmlifypods {
- my($self, %attribs) = @_;
- return "\nhtmlifypods : pure_all\n\t$self->{NOECHO}\$(NOOP)\n" unless
- %{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}};
- my($dist);
- my($pod2html_exe);
- if (defined $self->{PERL_SRC}) {
- $pod2html_exe = $self->catfile($self->{PERL_SRC},'pod','pod2html');
- } else {
- $pod2html_exe = $self->catfile($Config{bin},'pod2html');
- }
- unless ($pod2html_exe = $self->perl_script($pod2html_exe)) {
- # No pod2html but some HTMLxxxPODS to be installed
- print <<END;
-
-Warning: I could not locate your pod2html program. Please make sure,
- your pod2html program is in your PATH before you execute 'make'
-
-END
- $pod2html_exe = "-S pod2html";
- }
- my(@m);
- push @m,
-qq[POD2HTML_EXE = $pod2html_exe\n],
-qq[POD2HTML = \$(PERL) -we 'use File::Basename; use File::Path qw(mkpath); %m=\@ARGV;for (keys %m){' \\\n],
-q[-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "],
- $self->{MAKEFILE}, q[";' \\
--e 'print "Htmlifying $$m{$$_}\n";' \\
--e '$$dir = dirname($$m{$$_}); mkpath($$dir) unless -d $$dir;' \\
--e 'system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2HTML_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\
--e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
-];
- push @m, "\nhtmlifypods : pure_all ";
- push @m, join " \\\n\t", keys %{$self->{HTMLLIBPODS}}, keys %{$self->{HTMLSCRIPTPODS}};
-
- push(@m,"\n");
- if (%{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}}) {
- push @m, "\t$self->{NOECHO}\$(POD2HTML) \\\n\t";
- push @m, join " \\\n\t", %{$self->{HTMLLIBPODS}}, %{$self->{HTMLSCRIPTPODS}};
- }
- join('', @m);
-}
-
-=item init_dirscan
-
-Initializes DIR, XS, PM, C, O_FILES, H, PL_FILES, HTML*PODS, MAN*PODS, EXE_FILES.
-
-=cut
-
-sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc)
- my($self) = @_;
- my($name, %dir, %xs, %c, %h, %ignore, %pl_files, %manifypods);
- local(%pm); #the sub in find() has to see this hash
- @ignore{qw(Makefile.PL test.pl)} = (1,1);
- $ignore{'makefile.pl'} = 1 if $Is_VMS;
- foreach $name ($self->lsdir($self->curdir)){
- next if $name =~ /\#/;
- next if $name eq $self->curdir or $name eq $self->updir or $ignore{$name};
- next unless $self->libscan($name);
- if (-d $name){
- next if -l $name; # We do not support symlinks at all
- $dir{$name} = $name if (-f $self->catfile($name,"Makefile.PL"));
- } elsif ($name =~ /\.xs\z/){
- my($c); ($c = $name) =~ s/\.xs\z/.c/;
- $xs{$name} = $c;
- $c{$c} = 1;
- } elsif ($name =~ /\.c(pp|xx|c)?\z/i){ # .c .C .cpp .cxx .cc
- $c{$name} = 1
- unless $name =~ m/perlmain\.c/; # See MAP_TARGET
- } elsif ($name =~ /\.h\z/i){
- $h{$name} = 1;
- } elsif ($name =~ /\.PL\z/) {
- ($pl_files{$name} = $name) =~ s/\.PL\z// ;
- } elsif (($Is_VMS || $Is_Dos) && $name =~ /[._]pl$/i) {
- # case-insensitive filesystem, one dot per name, so foo.h.PL
- # under Unix appears as foo.h_pl under VMS or fooh.pl on Dos
- local($/); open(PL,$name); my $txt = <PL>; close PL;
- if ($txt =~ /Extracting \S+ \(with variable substitutions/) {
- ($pl_files{$name} = $name) =~ s/[._]pl\z//i ;
- }
- else { $pm{$name} = $self->catfile('$(INST_LIBDIR)',$name); }
- } elsif ($name =~ /\.(p[ml]|pod)\z/){
- $pm{$name} = $self->catfile('$(INST_LIBDIR)',$name);
- }
- }
-
- # Some larger extensions often wish to install a number of *.pm/pl
- # files into the library in various locations.
-
- # The attribute PMLIBDIRS holds an array reference which lists
- # subdirectories which we should search for library files to
- # install. PMLIBDIRS defaults to [ 'lib', $self->{BASEEXT} ]. We
- # recursively search through the named directories (skipping any
- # which don't exist or contain Makefile.PL files).
-
- # For each *.pm or *.pl file found $self->libscan() is called with
- # the default installation path in $_[1]. The return value of
- # libscan defines the actual installation location. The default
- # libscan function simply returns the path. The file is skipped
- # if libscan returns false.
-
- # The default installation location passed to libscan in $_[1] is:
- #
- # ./*.pm => $(INST_LIBDIR)/*.pm
- # ./xyz/... => $(INST_LIBDIR)/xyz/...
- # ./lib/... => $(INST_LIB)/...
- #
- # In this way the 'lib' directory is seen as the root of the actual
- # perl library whereas the others are relative to INST_LIBDIR
- # (which includes PARENT_NAME). This is a subtle distinction but one
- # that's important for nested modules.
-
- $self->{PMLIBDIRS} = ['lib', $self->{BASEEXT}]
- unless $self->{PMLIBDIRS};
-
- #only existing directories that aren't in $dir are allowed
-
- # Avoid $_ wherever possible:
- # @{$self->{PMLIBDIRS}} = grep -d && !$dir{$_}, @{$self->{PMLIBDIRS}};
- my (@pmlibdirs) = @{$self->{PMLIBDIRS}};
- my ($pmlibdir);
- @{$self->{PMLIBDIRS}} = ();
- foreach $pmlibdir (@pmlibdirs) {
- -d $pmlibdir && !$dir{$pmlibdir} && push @{$self->{PMLIBDIRS}}, $pmlibdir;
- }
-
- if (@{$self->{PMLIBDIRS}}){
- print "Searching PMLIBDIRS: @{$self->{PMLIBDIRS}}\n"
- if ($Verbose >= 2);
- require File::Find;
- File::Find::find(sub {
- if (-d $_){
- if ($_ eq "CVS" || $_ eq "RCS"){
- $File::Find::prune = 1;
- }
- return;
- }
- return if /\#/;
- my($path, $prefix) = ($File::Find::name, '$(INST_LIBDIR)');
- my($striplibpath,$striplibname);
- $prefix = '$(INST_LIB)' if (($striplibpath = $path) =~ s:^(\W*)lib\W:$1:i);
- ($striplibname,$striplibpath) = fileparse($striplibpath);
- my($inst) = $self->catfile($prefix,$striplibpath,$striplibname);
- local($_) = $inst; # for backwards compatibility
- $inst = $self->libscan($inst);
- print "libscan($path) => '$inst'\n" if ($Verbose >= 2);
- return unless $inst;
- $pm{$path} = $inst;
- }, @{$self->{PMLIBDIRS}});
- }
-
- $self->{DIR} = [sort keys %dir] unless $self->{DIR};
- $self->{XS} = \%xs unless $self->{XS};
- $self->{PM} = \%pm unless $self->{PM};
- $self->{C} = [sort keys %c] unless $self->{C};
- my(@o_files) = @{$self->{C}};
- $self->{O_FILES} = [grep s/\.c(pp|xx|c)?\z/$self->{OBJ_EXT}/i, @o_files] ;
- $self->{H} = [sort keys %h] unless $self->{H};
- $self->{PL_FILES} = \%pl_files unless $self->{PL_FILES};
-
- # Set up names of manual pages to generate from pods
- my %pods;
- foreach my $man (qw(MAN1 MAN3 HTMLLIB HTMLSCRIPT)) {
- unless ($self->{"${man}PODS"}) {
- $self->{"${man}PODS"} = {};
- $pods{$man} = 1 unless $self->{"INST_${man}DIR"} =~ /^(none|\s*)$/;
- }
- }
-
- if ($pods{MAN1} || $pods{HTMLSCRIPT}) {
- if ( exists $self->{EXE_FILES} ) {
- foreach $name (@{$self->{EXE_FILES}}) {
- local *FH;
- my($ispod)=0;
- if (open(FH,"<$name")) {
- while (<FH>) {
- if (/^=head1\s+\w+/) {
- $ispod=1;
- last;
- }
- }
- close FH;
- } else {
- # If it doesn't exist yet, we assume, it has pods in it
- $ispod = 1;
- }
- next unless $ispod;
- if ($pods{HTMLSCRIPT}) {
- $self->{HTMLSCRIPTPODS}->{$name} =
- $self->catfile("\$(INST_HTMLSCRIPTDIR)", basename($name).".\$(HTMLEXT)");
- }
- if ($pods{MAN1}) {
- $self->{MAN1PODS}->{$name} =
- $self->catfile("\$(INST_MAN1DIR)", basename($name).".\$(MAN1EXT)");
- }
- }
- }
- }
- if ($pods{MAN3} || $pods{HTMLLIB}) {
- my %manifypods = (); # we collect the keys first, i.e. the files
- # we have to convert to pod
- foreach $name (keys %{$self->{PM}}) {
- if ($name =~ /\.pod\z/ ) {
- $manifypods{$name} = $self->{PM}{$name};
- } elsif ($name =~ /\.p[ml]\z/ ) {
- local *FH;
- my($ispod)=0;
- if (open(FH,"<$name")) {
- while (<FH>) {
- if (/^=head1\s+\w+/) {
- $ispod=1;
- last;
- }
- }
- close FH;
- } else {
- $ispod = 1;
- }
- if( $ispod ) {
- $manifypods{$name} = $self->{PM}{$name};
- }
- }
- }
-
- # Remove "Configure.pm" and similar, if it's not the only pod listed
- # To force inclusion, just name it "Configure.pod", or override MAN3PODS
- foreach $name (keys %manifypods) {
- if ($name =~ /(config|setup).*\.pm/is) {
- delete $manifypods{$name};
- next;
- }
- my($manpagename) = $name;
- $manpagename =~ s/\.p(od|m|l)\z//;
- if ($pods{HTMLLIB}) {
- $self->{HTMLLIBPODS}->{$name} =
- $self->catfile("\$(INST_HTMLLIBDIR)", "$manpagename.\$(HTMLEXT)");
- }
- unless ($manpagename =~ s!^\W*lib\W+!!s) { # everything below lib is ok
- $manpagename = $self->catfile(split(/::/,$self->{PARENT_NAME}),$manpagename);
- }
- if ($pods{MAN3}) {
- $manpagename = $self->replace_manpage_separator($manpagename);
- $self->{MAN3PODS}->{$name} =
- $self->catfile("\$(INST_MAN3DIR)", "$manpagename.\$(MAN3EXT)");
- }
- }
- }
-}
-
-=item init_main
-
-Initializes NAME, FULLEXT, BASEEXT, PARENT_NAME, DLBASE, PERL_SRC,
-PERL_LIB, PERL_ARCHLIB, PERL_INC, INSTALLDIRS, INST_*, INSTALL*,
-PREFIX, CONFIG, AR, AR_STATIC_ARGS, LD, OBJ_EXT, LIB_EXT, EXE_EXT, MAP_TARGET,
-LIBPERL_A, VERSION_FROM, VERSION, DISTNAME, VERSION_SYM.
-
-=cut
-
-sub init_main {
- my($self) = @_;
-
- # --- Initialize Module Name and Paths
-
- # NAME = Foo::Bar::Oracle
- # FULLEXT = Foo/Bar/Oracle
- # BASEEXT = Oracle
- # ROOTEXT = Directory part of FULLEXT with leading /. !!! Deprecated from MM 5.32 !!!
- # PARENT_NAME = Foo::Bar
-### Only UNIX:
-### ($self->{FULLEXT} =
-### $self->{NAME}) =~ s!::!/!g ; #eg. BSD/Foo/Socket
- $self->{FULLEXT} = $self->catdir(split /::/, $self->{NAME});
-
-
- # Copied from DynaLoader:
-
- my(@modparts) = split(/::/,$self->{NAME});
- my($modfname) = $modparts[-1];
-
- # Some systems have restrictions on files names for DLL's etc.
- # mod2fname returns appropriate file base name (typically truncated)
- # It may also edit @modparts if required.
- if (defined &DynaLoader::mod2fname) {
- $modfname = &DynaLoader::mod2fname(\@modparts);
- }
-
- ($self->{PARENT_NAME}, $self->{BASEEXT}) = $self->{NAME} =~ m!(?:([\w:]+)::)?(\w+)\z! ;
-
- if (defined &DynaLoader::mod2fname) {
- # As of 5.001m, dl_os2 appends '_'
- $self->{DLBASE} = $modfname;
- } else {
- $self->{DLBASE} = '$(BASEEXT)';
- }
-
-
- ### ROOTEXT deprecated from MM 5.32
-### ($self->{ROOTEXT} =
-### $self->{FULLEXT}) =~ s#/?\Q$self->{BASEEXT}\E$## ; #eg. /BSD/Foo
-### $self->{ROOTEXT} = ($Is_VMS ? '' : '/') . $self->{ROOTEXT} if $self->{ROOTEXT};
-
-
- # --- Initialize PERL_LIB, INST_LIB, PERL_SRC
-
- # *Real* information: where did we get these two from? ...
- my $inc_config_dir = dirname($INC{'Config.pm'});
- my $inc_carp_dir = dirname($INC{'Carp.pm'});
-
- unless ($self->{PERL_SRC}){
- my($dir);
- foreach $dir ($self->updir(),$self->catdir($self->updir(),$self->updir()),$self->catdir($self->updir(),$self->updir(),$self->updir()),$self->catdir($self->updir(),$self->updir(),$self->updir(),$self->updir())){
- if (
- -f $self->catfile($dir,"config.sh")
- &&
- -f $self->catfile($dir,"perl.h")
- &&
- -f $self->catfile($dir,"lib","Exporter.pm")
- ) {
- $self->{PERL_SRC}=$dir ;
- last;
- }
- }
- }
- if ($self->{PERL_SRC}){
- $self->{PERL_LIB} ||= $self->catdir("$self->{PERL_SRC}","lib");
- $self->{PERL_ARCHLIB} = $self->{PERL_LIB};
- $self->{PERL_INC} = ($Is_Win32) ? $self->catdir($self->{PERL_LIB},"CORE") : $self->{PERL_SRC};
-
- # catch a situation that has occurred a few times in the past:
- unless (
- -s $self->catfile($self->{PERL_SRC},'cflags')
- or
- $Is_VMS
- &&
- -s $self->catfile($self->{PERL_SRC},'perlshr_attr.opt')
- or
- $Is_Mac
- or
- $Is_Win32
- ){
- warn qq{
-You cannot build extensions below the perl source tree after executing
-a 'make clean' in the perl source tree.
-
-To rebuild extensions distributed with the perl source you should
-simply Configure (to include those extensions) and then build perl as
-normal. After installing perl the source tree can be deleted. It is
-not needed for building extensions by running 'perl Makefile.PL'
-usually without extra arguments.
-
-It is recommended that you unpack and build additional extensions away
-from the perl source tree.
-};
- }
- } else {
- # we should also consider $ENV{PERL5LIB} here
- my $old = $self->{PERL_LIB} || $self->{PERL_ARCHLIB} || $self->{PERL_INC};
- $self->{PERL_LIB} ||= $Config::Config{privlibexp};
- $self->{PERL_ARCHLIB} ||= $Config::Config{archlibexp};
- $self->{PERL_INC} = $self->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now
- my $perl_h;
-
- if (not -f ($perl_h = $self->catfile($self->{PERL_INC},"perl.h"))
- and not $old){
- # Maybe somebody tries to build an extension with an
- # uninstalled Perl outside of Perl build tree
- my $found;
- for my $dir (@INC) {
- $found = $dir, last if -e $self->catdir($dir, "Config.pm");
- }
- if ($found) {
- my $inc = dirname $found;
- if (-e $self->catdir($inc, "perl.h")) {
- $self->{PERL_LIB} = $found;
- $self->{PERL_ARCHLIB} = $found;
- $self->{PERL_INC} = $inc;
- $self->{UNINSTALLED_PERL} = 1;
- print STDOUT <<EOP;
-... Detected uninstalled Perl. Trying to continue.
-EOP
- }
- }
- }
-
- unless (-f ($perl_h = $self->catfile($self->{PERL_INC},"perl.h"))){
- die qq{
-Error: Unable to locate installed Perl libraries or Perl source code.
-
-It is recommended that you install perl in a standard location before
-building extensions. Some precompiled versions of perl do not contain
-these header files, so you cannot build extensions. In such a case,
-please build and install your perl from a fresh perl distribution. It
-usually solves this kind of problem.
-
-\(You get this message, because MakeMaker could not find "$perl_h"\)
-};
- }
-# print STDOUT "Using header files found in $self->{PERL_INC}\n"
-# if $Verbose && $self->needs_linking();
-
- }
-
- # We get SITELIBEXP and SITEARCHEXP directly via
- # Get_from_Config. When we are running standard modules, these
- # won't matter, we will set INSTALLDIRS to "perl". Otherwise we
- # set it to "site". I prefer that INSTALLDIRS be set from outside
- # MakeMaker.
- $self->{INSTALLDIRS} ||= "site";
-
- # INST_LIB typically pre-set if building an extension after
- # perl has been built and installed. Setting INST_LIB allows
- # you to build directly into, say $Config::Config{privlibexp}.
- unless ($self->{INST_LIB}){
-
-
- ##### XXXXX We have to change this nonsense
-
- if (defined $self->{PERL_SRC} and $self->{INSTALLDIRS} eq "perl") {
- $self->{INST_LIB} = $self->{INST_ARCHLIB} = $self->{PERL_LIB};
- } else {
- $self->{INST_LIB} = $self->catdir($self->curdir,"blib","lib");
- }
- }
- $self->{INST_ARCHLIB} ||= $self->catdir($self->curdir,"blib","arch");
- $self->{INST_BIN} ||= $self->catdir($self->curdir,'blib','bin');
-
- # We need to set up INST_LIBDIR before init_libscan() for VMS
- my @parentdir = split(/::/, $self->{PARENT_NAME});
- $self->{INST_LIBDIR} = $self->catdir('$(INST_LIB)',@parentdir);
- $self->{INST_ARCHLIBDIR} = $self->catdir('$(INST_ARCHLIB)',@parentdir);
- $self->{INST_AUTODIR} = $self->catdir('$(INST_LIB)','auto','$(FULLEXT)');
- $self->{INST_ARCHAUTODIR} = $self->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)');
-
- # INST_EXE is deprecated, should go away March '97
- $self->{INST_EXE} ||= $self->catdir($self->curdir,'blib','script');
- $self->{INST_SCRIPT} ||= $self->catdir($self->curdir,'blib','script');
-
- # The user who requests an installation directory explicitly
- # should not have to tell us a architecture installation directory
- # as well. We look if a directory exists that is named after the
- # architecture. If not we take it as a sign that it should be the
- # same as the requested installation directory. Otherwise we take
- # the found one.
- # We do the same thing twice: for privlib/archlib and for sitelib/sitearch
- my($libpair);
- for $libpair ({l=>"privlib", a=>"archlib"}, {l=>"sitelib", a=>"sitearch"}) {
- my $lib = "install$libpair->{l}";
- my $Lib = uc $lib;
- my $Arch = uc "install$libpair->{a}";
- if( $self->{$Lib} && ! $self->{$Arch} ){
- my($ilib) = $Config{$lib};
- $ilib = VMS::Filespec::unixify($ilib) if $Is_VMS;
-
- $self->prefixify($Arch,$ilib,$self->{$Lib});
-
- unless (-d $self->{$Arch}) {
- print STDOUT "Directory $self->{$Arch} not found, thusly\n" if $Verbose;
- $self->{$Arch} = $self->{$Lib};
- }
- print STDOUT "Defaulting $Arch to $self->{$Arch}\n" if $Verbose;
- }
- }
-
- # we have to look at the relation between $Config{prefix} and the
- # requested values. We're going to set the $Config{prefix} part of
- # all the installation path variables to literally $(PREFIX), so
- # the user can still say make PREFIX=foo
- my($configure_prefix) = $Config{'prefix'};
- $configure_prefix = VMS::Filespec::unixify($configure_prefix) if $Is_VMS;
- $self->{PREFIX} ||= $configure_prefix;
-
-
- my($install_variable,$search_prefix,$replace_prefix);
-
- # If the prefix contains perl, Configure shapes the tree as follows:
- # perlprefix/lib/ INSTALLPRIVLIB
- # perlprefix/lib/pod/
- # perlprefix/lib/site_perl/ INSTALLSITELIB
- # perlprefix/bin/ INSTALLBIN
- # perlprefix/man/ INSTALLMAN1DIR
- # else
- # prefix/lib/perl5/ INSTALLPRIVLIB
- # prefix/lib/perl5/pod/
- # prefix/lib/perl5/site_perl/ INSTALLSITELIB
- # prefix/bin/ INSTALLBIN
- # prefix/lib/perl5/man/ INSTALLMAN1DIR
- #
- # The above results in various kinds of breakage on various
- # platforms, so we cope with it as follows: if prefix/lib/perl5
- # or prefix/lib/perl5/man exist, we'll replace those instead
- # of /prefix/{lib,man}
-
- $replace_prefix = qq[\$\(PREFIX\)];
- $search_prefix = $self->catdir($configure_prefix,"local");
- for $install_variable (qw/
- INSTALLBIN
- INSTALLSCRIPT
- /) {
- $self->prefixify($install_variable,$search_prefix,$replace_prefix);
- }
- my $funkylibdir = $self->catdir($configure_prefix,"lib","perl5");
- $funkylibdir = '' unless -d $funkylibdir;
- $search_prefix = $funkylibdir || $self->catdir($configure_prefix,"lib");
- if ($self->{LIB}) {
- $self->{INSTALLPRIVLIB} = $self->{INSTALLSITELIB} = $self->{LIB};
- $self->{INSTALLARCHLIB} = $self->{INSTALLSITEARCH} =
- $self->catdir($self->{LIB},$Config{'archname'});
- }
- else {
- if (-d $self->catdir($self->{PREFIX},"lib","perl5")) {
- $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"lib", "perl5");
- }
- else {
- $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"lib");
- }
- for $install_variable (qw/
- INSTALLPRIVLIB
- INSTALLARCHLIB
- INSTALLSITELIB
- INSTALLSITEARCH
- /)
- {
- $self->prefixify($install_variable,$search_prefix,$replace_prefix);
- }
- }
- my $funkymandir = $self->catdir($configure_prefix,"lib","perl5","man");
- $funkymandir = '' unless -d $funkymandir;
- $search_prefix = $funkymandir || $self->catdir($configure_prefix,"man");
- if (-d $self->catdir($self->{PREFIX},"lib","perl5", "man")) {
- $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"lib", "perl5", "man");
- }
- else {
- $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"man");
- }
- for $install_variable (qw/
- INSTALLMAN1DIR
- INSTALLMAN3DIR
- /)
- {
- $self->prefixify($install_variable,$search_prefix,$replace_prefix);
- }
-
- # Now we head at the manpages. Maybe they DO NOT want manpages
- # installed
- $self->{INSTALLMAN1DIR} = $Config::Config{installman1dir}
- unless defined $self->{INSTALLMAN1DIR};
- unless (defined $self->{INST_MAN1DIR}){
- if ($self->{INSTALLMAN1DIR} =~ /^(none|\s*)$/){
- $self->{INST_MAN1DIR} = $self->{INSTALLMAN1DIR};
- } else {
- $self->{INST_MAN1DIR} = $self->catdir($self->curdir,'blib','man1');
- }
- }
- $self->{MAN1EXT} ||= $Config::Config{man1ext};
-
- $self->{INSTALLMAN3DIR} = $Config::Config{installman3dir}
- unless defined $self->{INSTALLMAN3DIR};
- unless (defined $self->{INST_MAN3DIR}){
- if ($self->{INSTALLMAN3DIR} =~ /^(none|\s*)$/){
- $self->{INST_MAN3DIR} = $self->{INSTALLMAN3DIR};
- } else {
- $self->{INST_MAN3DIR} = $self->catdir($self->curdir,'blib','man3');
- }
- }
- $self->{MAN3EXT} ||= $Config::Config{man3ext};
-
- $self->{INSTALLHTMLPRIVLIBDIR} = $Config::Config{installhtmlprivlibdir}
- unless defined $self->{INSTALLHTMLPRIVLIBDIR};
- $self->{INSTALLHTMLSITELIBDIR} = $Config::Config{installhtmlsitelibdir}
- unless defined $self->{INSTALLHTMLSITELIBDIR};
-
- unless (defined $self->{INST_HTMLLIBDIR}){
- if ($self->{INSTALLHTMLSITELIBDIR} =~ /^(none|\s*)$/){
- $self->{INST_HTMLLIBDIR} = $self->{INSTALLHTMLSITELIBDIR};
- } else {
- $self->{INST_HTMLLIBDIR} = $self->catdir($self->curdir,'blib','html','lib');
- }
- }
-
- $self->{INSTALLHTMLSCRIPTDIR} = $Config::Config{installhtmlscriptdir}
- unless defined $self->{INSTALLHTMLSCRIPTDIR};
- unless (defined $self->{INST_HTMLSCRIPTDIR}){
- if ($self->{INSTALLHTMLSCRIPTDIR} =~ /^(none|\s*)$/){
- $self->{INST_HTMLSCRIPTDIR} = $self->{INSTALLHTMLSCRIPTDIR};
- } else {
- $self->{INST_HTMLSCRIPTDIR} = $self->catdir($self->curdir,'blib','html','bin');
- }
- }
- $self->{HTMLEXT} ||= $Config::Config{htmlext} || 'html';
-
-
- # Get some stuff out of %Config if we haven't yet done so
- print STDOUT "CONFIG must be an array ref\n"
- if ($self->{CONFIG} and ref $self->{CONFIG} ne 'ARRAY');
- $self->{CONFIG} = [] unless (ref $self->{CONFIG});
- push(@{$self->{CONFIG}}, @ExtUtils::MakeMaker::Get_from_Config);
- push(@{$self->{CONFIG}}, 'shellflags') if $Config::Config{shellflags};
- my(%once_only,$m);
- foreach $m (@{$self->{CONFIG}}){
- next if $once_only{$m};
- print STDOUT "CONFIG key '$m' does not exist in Config.pm\n"
- unless exists $Config::Config{$m};
- $self->{uc $m} ||= $Config::Config{$m};
- $once_only{$m} = 1;
- }
-
-# This is too dangerous:
-# if ($^O eq "next") {
-# $self->{AR} = "libtool";
-# $self->{AR_STATIC_ARGS} = "-o";
-# }
-# But I leave it as a placeholder
-
- $self->{AR_STATIC_ARGS} ||= "cr";
-
- # These should never be needed
- $self->{LD} ||= 'ld';
- $self->{OBJ_EXT} ||= '.o';
- $self->{LIB_EXT} ||= '.a';
-
- $self->{MAP_TARGET} ||= "perl";
-
- $self->{LIBPERL_A} ||= "libperl$self->{LIB_EXT}";
-
- # make a simple check if we find Exporter
- warn "Warning: PERL_LIB ($self->{PERL_LIB}) seems not to be a perl library directory
- (Exporter.pm not found)"
- unless -f $self->catfile("$self->{PERL_LIB}","Exporter.pm") ||
- $self->{NAME} eq "ExtUtils::MakeMaker";
-
- # Determine VERSION and VERSION_FROM
- ($self->{DISTNAME}=$self->{NAME}) =~ s#(::)#-#g unless $self->{DISTNAME};
- if ($self->{VERSION_FROM}){
- $self->{VERSION} = $self->parse_version($self->{VERSION_FROM}) or
- Carp::carp "WARNING: Setting VERSION via file '$self->{VERSION_FROM}' failed\n"
- }
-
- # strip blanks
- if ($self->{VERSION}) {
- $self->{VERSION} =~ s/^\s+//;
- $self->{VERSION} =~ s/\s+$//;
- }
-
- $self->{VERSION} ||= "0.10";
- ($self->{VERSION_SYM} = $self->{VERSION}) =~ s/\W/_/g;
-
-
- # Graham Barr and Paul Marquess had some ideas how to ensure
- # version compatibility between the *.pm file and the
- # corresponding *.xs file. The bottomline was, that we need an
- # XS_VERSION macro that defaults to VERSION:
- $self->{XS_VERSION} ||= $self->{VERSION};
-
- # --- Initialize Perl Binary Locations
-
- # Find Perl 5. The only contract here is that both 'PERL' and 'FULLPERL'
- # will be working versions of perl 5. miniperl has priority over perl
- # for PERL to ensure that $(PERL) is usable while building ./ext/*
- my ($component,@defpath);
- foreach $component ($self->{PERL_SRC}, $self->path(), $Config::Config{binexp}) {
- push @defpath, $component if defined $component;
- }
- $self->{PERL} ||=
- $self->find_perl(5.0, [ $self->canonpath($^X), 'miniperl',
- 'perl','perl5',"perl$Config{version}" ],
- \@defpath, $Verbose );
- # don't check if perl is executable, maybe they have decided to
- # supply switches with perl
-
- # Define 'FULLPERL' to be a non-miniperl (used in test: target)
- ($self->{FULLPERL} = $self->{PERL}) =~ s/miniperl/perl/i
- unless ($self->{FULLPERL});
-}
-
-=item init_others
-
-Initializes EXTRALIBS, BSLOADLIBS, LDLOADLIBS, LIBS, LD_RUN_PATH,
-OBJECT, BOOTDEP, PERLMAINCC, LDFROM, LINKTYPE, NOOP, FIRST_MAKEFILE,
-MAKEFILE, NOECHO, RM_F, RM_RF, TEST_F, TOUCH, CP, MV, CHMOD, UMASK_NULL
-
-=cut
-
-sub init_others { # --- Initialize Other Attributes
- my($self) = shift;
-
- # Compute EXTRALIBS, BSLOADLIBS and LDLOADLIBS from $self->{LIBS}
- # Lets look at $self->{LIBS} carefully: It may be an anon array, a string or
- # undefined. In any case we turn it into an anon array:
-
- # May check $Config{libs} too, thus not empty.
- $self->{LIBS}=[''] unless $self->{LIBS};
-
- $self->{LIBS}=[$self->{LIBS}] if ref \$self->{LIBS} eq 'SCALAR';
- $self->{LD_RUN_PATH} = "";
- my($libs);
- foreach $libs ( @{$self->{LIBS}} ){
- $libs =~ s/^\s*(.*\S)\s*$/$1/; # remove leading and trailing whitespace
- my(@libs) = $self->extliblist($libs);
- if ($libs[0] or $libs[1] or $libs[2]){
- # LD_RUN_PATH now computed by ExtUtils::Liblist
- ($self->{EXTRALIBS}, $self->{BSLOADLIBS}, $self->{LDLOADLIBS}, $self->{LD_RUN_PATH}) = @libs;
- last;
- }
- }
-
- if ( $self->{OBJECT} ) {
- $self->{OBJECT} =~ s!\.o(bj)?\b!\$(OBJ_EXT)!g;
- } else {
- # init_dirscan should have found out, if we have C files
- $self->{OBJECT} = "";
- $self->{OBJECT} = '$(BASEEXT)$(OBJ_EXT)' if @{$self->{C}||[]};
- }
- $self->{OBJECT} =~ s/\n+/ \\\n\t/g;
- $self->{BOOTDEP} = (-f "$self->{BASEEXT}_BS") ? "$self->{BASEEXT}_BS" : "";
- $self->{PERLMAINCC} ||= '$(CC)';
- $self->{LDFROM} = '$(OBJECT)' unless $self->{LDFROM};
-
- # Sanity check: don't define LINKTYPE = dynamic if we're skipping
- # the 'dynamic' section of MM. We don't have this problem with
- # 'static', since we either must use it (%Config says we can't
- # use dynamic loading) or the caller asked for it explicitly.
- if (!$self->{LINKTYPE}) {
- $self->{LINKTYPE} = $self->{SKIPHASH}{'dynamic'}
- ? 'static'
- : ($Config::Config{usedl} ? 'dynamic' : 'static');
- };
-
- # These get overridden for VMS and maybe some other systems
- $self->{NOOP} ||= '$(SHELL) -c true';
- $self->{FIRST_MAKEFILE} ||= "Makefile";
- $self->{MAKEFILE} ||= $self->{FIRST_MAKEFILE};
- $self->{MAKE_APERL_FILE} ||= "Makefile.aperl";
- $self->{NOECHO} = '@' unless defined $self->{NOECHO};
- $self->{RM_F} ||= "rm -f";
- $self->{RM_RF} ||= "rm -rf";
- $self->{TOUCH} ||= "touch";
- $self->{TEST_F} ||= "test -f";
- $self->{CP} ||= "cp";
- $self->{MV} ||= "mv";
- $self->{CHMOD} ||= "chmod";
- $self->{UMASK_NULL} ||= "umask 0";
- $self->{DEV_NULL} ||= "> /dev/null 2>&1";
-}
-
-=item install (o)
-
-Defines the install target.
-
-=cut
-
-sub install {
- my($self, %attribs) = @_;
- my(@m);
-
- push @m, q{
-install :: all pure_install doc_install
-
-install_perl :: all pure_perl_install doc_perl_install
-
-install_site :: all pure_site_install doc_site_install
-
-install_ :: install_site
- @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
-
-pure_install :: pure_$(INSTALLDIRS)_install
-
-doc_install :: doc_$(INSTALLDIRS)_install
- }.$self->{NOECHO}.q{echo Appending installation info to $(INSTALLARCHLIB)/perllocal.pod
-
-pure__install : pure_site_install
- @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
-
-doc__install : doc_site_install
- @echo INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
-
-pure_perl_install ::
- }.$self->{NOECHO}.q{$(MOD_INSTALL) \
- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
- write }.$self->catfile('$(INSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
- $(INST_LIB) $(INSTALLPRIVLIB) \
- $(INST_ARCHLIB) $(INSTALLARCHLIB) \
- $(INST_BIN) $(INSTALLBIN) \
- $(INST_SCRIPT) $(INSTALLSCRIPT) \
- $(INST_HTMLLIBDIR) $(INSTALLHTMLPRIVLIBDIR) \
- $(INST_HTMLSCRIPTDIR) $(INSTALLHTMLSCRIPTDIR) \
- $(INST_MAN1DIR) $(INSTALLMAN1DIR) \
- $(INST_MAN3DIR) $(INSTALLMAN3DIR)
- }.$self->{NOECHO}.q{$(WARN_IF_OLD_PACKLIST) \
- }.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{
-
-
-pure_site_install ::
- }.$self->{NOECHO}.q{$(MOD_INSTALL) \
- read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
- write }.$self->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \
- $(INST_LIB) $(INSTALLSITELIB) \
- $(INST_ARCHLIB) $(INSTALLSITEARCH) \
- $(INST_BIN) $(INSTALLBIN) \
- $(INST_SCRIPT) $(INSTALLSCRIPT) \
- $(INST_HTMLLIBDIR) $(INSTALLHTMLSITELIBDIR) \
- $(INST_HTMLSCRIPTDIR) $(INSTALLHTMLSCRIPTDIR) \
- $(INST_MAN1DIR) $(INSTALLMAN1DIR) \
- $(INST_MAN3DIR) $(INSTALLMAN3DIR)
- }.$self->{NOECHO}.q{$(WARN_IF_OLD_PACKLIST) \
- }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
-
-doc_perl_install ::
- -}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
- -}.$self->{NOECHO}.q{$(DOC_INSTALL) \
- "Module" "$(NAME)" \
- "installed into" "$(INSTALLPRIVLIB)" \
- LINKTYPE "$(LINKTYPE)" \
- VERSION "$(VERSION)" \
- EXE_FILES "$(EXE_FILES)" \
- >> }.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
-
-doc_site_install ::
- -}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
- -}.$self->{NOECHO}.q{$(DOC_INSTALL) \
- "Module" "$(NAME)" \
- "installed into" "$(INSTALLSITELIB)" \
- LINKTYPE "$(LINKTYPE)" \
- VERSION "$(VERSION)" \
- EXE_FILES "$(EXE_FILES)" \
- >> }.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
-
-};
-
- push @m, q{
-uninstall :: uninstall_from_$(INSTALLDIRS)dirs
-
-uninstall_from_perldirs ::
- }.$self->{NOECHO}.
- q{$(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
-
-uninstall_from_sitedirs ::
- }.$self->{NOECHO}.
- q{$(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
-};
-
- join("",@m);
-}
-
-=item installbin (o)
-
-Defines targets to make and to install EXE_FILES.
-
-=cut
-
-sub installbin {
- my($self) = shift;
- return "" unless $self->{EXE_FILES} && ref $self->{EXE_FILES} eq "ARRAY";
- return "" unless @{$self->{EXE_FILES}};
- my(@m, $from, $to, %fromto, @to);
- push @m, $self->dir_target(qw[$(INST_SCRIPT)]);
- for $from (@{$self->{EXE_FILES}}) {
- my($path)= $self->catfile('$(INST_SCRIPT)', basename($from));
- local($_) = $path; # for backwards compatibility
- $to = $self->libscan($path);
- print "libscan($from) => '$to'\n" if ($Verbose >=2);
- $fromto{$from}=$to;
- }
- @to = values %fromto;
- push(@m, qq{
-EXE_FILES = @{$self->{EXE_FILES}}
-
-} . ($Is_Win32
- ? q{FIXIN = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \
- -e "system qq[pl2bat.bat ].shift"
-} : q{FIXIN = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::MakeMaker \
- -e "MY->fixin(shift)"
-}).qq{
-pure_all :: @to
- $self->{NOECHO}\$(NOOP)
-
-realclean ::
- $self->{RM_F} @to
-});
-
- while (($from,$to) = each %fromto) {
- last unless defined $from;
- my $todir = dirname($to);
- push @m, "
-$to: $from $self->{MAKEFILE} " . $self->catdir($todir,'.exists') . "
- $self->{NOECHO}$self->{RM_F} $to
- $self->{CP} $from $to
- \$(FIXIN) $to
- -$self->{NOECHO}\$(CHMOD) \$(PERM_RWX) $to
-";
- }
- join "", @m;
-}
-
-=item libscan (o)
-
-Takes a path to a file that is found by init_dirscan and returns false
-if we don't want to include this file in the library. Mainly used to
-exclude RCS, CVS, and SCCS directories from installation.
-
-=cut
-
-# ';
-
-sub libscan {
- my($self,$path) = @_;
- return '' if $path =~ m:\b(RCS|CVS|SCCS)\b: ;
- $path;
-}
-
-=item linkext (o)
-
-Defines the linkext target which in turn defines the LINKTYPE.
-
-=cut
-
-sub linkext {
- my($self, %attribs) = @_;
- # LINKTYPE => static or dynamic or ''
- my($linktype) = defined $attribs{LINKTYPE} ?
- $attribs{LINKTYPE} : '$(LINKTYPE)';
- "
-linkext :: $linktype
- $self->{NOECHO}\$(NOOP)
-";
-}
-
-=item lsdir
-
-Takes as arguments a directory name and a regular expression. Returns
-all entries in the directory that match the regular expression.
-
-=cut
-
-sub lsdir {
- my($self) = shift;
- my($dir, $regex) = @_;
- my(@ls);
- my $dh = new DirHandle;
- $dh->open($dir || ".") or return ();
- @ls = $dh->read;
- $dh->close;
- @ls = grep(/$regex/, @ls) if $regex;
- @ls;
-}
-
-=item macro (o)
-
-Simple subroutine to insert the macros defined by the macro attribute
-into the Makefile.
-
-=cut
-
-sub macro {
- my($self,%attribs) = @_;
- my(@m,$key,$val);
- while (($key,$val) = each %attribs){
- last unless defined $key;
- push @m, "$key = $val\n";
- }
- join "", @m;
-}
-
-=item makeaperl (o)
-
-Called by staticmake. Defines how to write the Makefile to produce a
-static new perl.
-
-By default the Makefile produced includes all the static extensions in
-the perl library. (Purified versions of library files, e.g.,
-DynaLoader_pure_p1_c0_032.a are automatically ignored to avoid link errors.)
-
-=cut
-
-sub makeaperl {
- my($self, %attribs) = @_;
- my($makefilename, $searchdirs, $static, $extra, $perlinc, $target, $tmp, $libperl) =
- @attribs{qw(MAKE DIRS STAT EXTRA INCL TARGET TMP LIBPERL)};
- my(@m);
- push @m, "
-# --- MakeMaker makeaperl section ---
-MAP_TARGET = $target
-FULLPERL = $self->{FULLPERL}
-";
- return join '', @m if $self->{PARENT};
-
- my($dir) = join ":", @{$self->{DIR}};
-
- unless ($self->{MAKEAPERL}) {
- push @m, q{
-$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
- $(MAKE) -f $(MAKE_APERL_FILE) $@
-
-$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
- }.$self->{NOECHO}.q{echo Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
- }.$self->{NOECHO}.q{$(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \
- Makefile.PL DIR=}, $dir, q{ \
- MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
- MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=};
-
- foreach (@ARGV){
- if( /\s/ ){
- s/=(.*)/='$1'/;
- }
- push @m, " \\\n\t\t$_";
- }
-# push @m, map( " \\\n\t\t$_", @ARGV );
- push @m, "\n";
-
- return join '', @m;
- }
-
-
-
- my($cccmd, $linkcmd, $lperl);
-
-
- $cccmd = $self->const_cccmd($libperl);
- $cccmd =~ s/^CCCMD\s*=\s*//;
- $cccmd =~ s/\$\(INC\)/ -I$self->{PERL_INC} /;
- $cccmd .= " $Config::Config{cccdlflags}"
- if ($Config::Config{useshrplib} eq 'true');
- $cccmd =~ s/\(CC\)/\(PERLMAINCC\)/;
-
- # The front matter of the linkcommand...
- $linkcmd = join ' ', "\$(CC)",
- grep($_, @Config{qw(ldflags ccdlflags)});
- $linkcmd =~ s/\s+/ /g;
- $linkcmd =~ s,(perl\.exp),\$(PERL_INC)/$1,;
-
- # Which *.a files could we make use of...
- local(%static);
- require File::Find;
- File::Find::find(sub {
- return unless m/\Q$self->{LIB_EXT}\E$/;
- return if m/^libperl/;
- # Skip purified versions of libraries (e.g., DynaLoader_pure_p1_c0_032.a)
- return if m/_pure_\w+_\w+_\w+\.\w+$/ and -f "$File::Find::dir/.pure";
-
- if( exists $self->{INCLUDE_EXT} ){
- my $found = 0;
- my $incl;
- my $xx;
-
- ($xx = $File::Find::name) =~ s,.*?/auto/,,s;
- $xx =~ s,/?$_,,;
- $xx =~ s,/,::,g;
-
- # Throw away anything not explicitly marked for inclusion.
- # DynaLoader is implied.
- foreach $incl ((@{$self->{INCLUDE_EXT}},'DynaLoader')){
- if( $xx eq $incl ){
- $found++;
- last;
- }
- }
- return unless $found;
- }
- elsif( exists $self->{EXCLUDE_EXT} ){
- my $excl;
- my $xx;
-
- ($xx = $File::Find::name) =~ s,.*?/auto/,,s;
- $xx =~ s,/?$_,,;
- $xx =~ s,/,::,g;
-
- # Throw away anything explicitly marked for exclusion
- foreach $excl (@{$self->{EXCLUDE_EXT}}){
- return if( $xx eq $excl );
- }
- }
-
- # don't include the installed version of this extension. I
- # leave this line here, although it is not necessary anymore:
- # I patched minimod.PL instead, so that Miniperl.pm won't
- # enclude duplicates
-
- # Once the patch to minimod.PL is in the distribution, I can
- # drop it
- return if $File::Find::name =~ m:auto/$self->{FULLEXT}/$self->{BASEEXT}$self->{LIB_EXT}\z:;
- use Cwd 'cwd';
- $static{cwd() . "/" . $_}++;
- }, grep( -d $_, @{$searchdirs || []}) );
-
- # We trust that what has been handed in as argument, will be buildable
- $static = [] unless $static;
- @static{@{$static}} = (1) x @{$static};
-
- $extra = [] unless $extra && ref $extra eq 'ARRAY';
- for (sort keys %static) {
- next unless /\Q$self->{LIB_EXT}\E\z/;
- $_ = dirname($_) . "/extralibs.ld";
- push @$extra, $_;
- }
-
- grep(s/^/-I/, @{$perlinc || []});
-
- $target = "perl" unless $target;
- $tmp = "." unless $tmp;
-
-# MAP_STATIC doesn't look into subdirs yet. Once "all" is made and we
-# regenerate the Makefiles, MAP_STATIC and the dependencies for
-# extralibs.all are computed correctly
- push @m, "
-MAP_LINKCMD = $linkcmd
-MAP_PERLINC = @{$perlinc || []}
-MAP_STATIC = ",
-join(" \\\n\t", reverse sort keys %static), "
-
-MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
-";
-
- if (defined $libperl) {
- ($lperl = $libperl) =~ s/\$\(A\)/$self->{LIB_EXT}/;
- }
- unless ($libperl && -f $lperl) { # Ilya's code...
- my $dir = $self->{PERL_SRC} || "$self->{PERL_ARCHLIB}/CORE";
- $dir = "$self->{PERL_ARCHLIB}/.." if $self->{UNINSTALLED_PERL};
- $libperl ||= "libperl$self->{LIB_EXT}";
- $libperl = "$dir/$libperl";
- $lperl ||= "libperl$self->{LIB_EXT}";
- $lperl = "$dir/$lperl";
-
- if (! -f $libperl and ! -f $lperl) {
- # We did not find a static libperl. Maybe there is a shared one?
- if ($^O eq 'solaris' or $^O eq 'sunos') {
- $lperl = $libperl = "$dir/$Config::Config{libperl}";
- # SUNOS ld does not take the full path to a shared library
- $libperl = '' if $^O eq 'sunos';
- }
- }
-
- print STDOUT "Warning: $libperl not found
- If you're going to build a static perl binary, make sure perl is installed
- otherwise ignore this warning\n"
- unless (-f $lperl || defined($self->{PERL_SRC}));
- }
-
- push @m, "
-MAP_LIBPERL = $libperl
-";
-
- push @m, "
-\$(INST_ARCHAUTODIR)/extralibs.all: \$(INST_ARCHAUTODIR)/.exists ".join(" \\\n\t", @$extra)."
- $self->{NOECHO}$self->{RM_F} \$\@
- $self->{NOECHO}\$(TOUCH) \$\@
-";
-
- my $catfile;
- foreach $catfile (@$extra){
- push @m, "\tcat $catfile >> \$\@\n";
- }
- # SUNOS ld does not take the full path to a shared library
- my $llibperl = ($libperl)?'$(MAP_LIBPERL)':'-lperl';
-
-push @m, "
-\$(MAP_TARGET) :: $tmp/perlmain\$(OBJ_EXT) \$(MAP_LIBPERL) \$(MAP_STATIC) \$(INST_ARCHAUTODIR)/extralibs.all
- \$(MAP_LINKCMD) -o \$\@ \$(OPTIMIZE) $tmp/perlmain\$(OBJ_EXT) \$(LDFROM) \$(MAP_STATIC) $llibperl `cat \$(INST_ARCHAUTODIR)/extralibs.all` \$(MAP_PRELIBS)
- $self->{NOECHO}echo 'To install the new \"\$(MAP_TARGET)\" binary, call'
- $self->{NOECHO}echo ' make -f $makefilename inst_perl MAP_TARGET=\$(MAP_TARGET)'
- $self->{NOECHO}echo 'To remove the intermediate files say'
- $self->{NOECHO}echo ' make -f $makefilename map_clean'
-
-$tmp/perlmain\$(OBJ_EXT): $tmp/perlmain.c
-";
- push @m, "\tcd $tmp && $cccmd -I\$(PERL_INC) perlmain.c\n";
-
- push @m, qq{
-$tmp/perlmain.c: $makefilename}, q{
- }.$self->{NOECHO}.q{echo Writing $@
- }.$self->{NOECHO}.q{$(PERL) $(MAP_PERLINC) -MExtUtils::Miniperl \\
- -e "writemain(grep s#.*/auto/##s, split(q| |, q|$(MAP_STATIC)|))" > $@t && $(MV) $@t $@
-
-};
- push @m, "\t",$self->{NOECHO}.q{$(PERL) $(INSTALLSCRIPT)/fixpmain
-} if (defined (&Dos::UseLFN) && Dos::UseLFN()==0);
-
-
- push @m, q{
-doc_inst_perl:
- }.$self->{NOECHO}.q{echo Appending installation info to $(INSTALLARCHLIB)/perllocal.pod
- -}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
- -}.$self->{NOECHO}.q{$(DOC_INSTALL) \
- "Perl binary" "$(MAP_TARGET)" \
- MAP_STATIC "$(MAP_STATIC)" \
- MAP_EXTRA "`cat $(INST_ARCHAUTODIR)/extralibs.all`" \
- MAP_LIBPERL "$(MAP_LIBPERL)" \
- >> }.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
-
-};
-
- push @m, q{
-inst_perl: pure_inst_perl doc_inst_perl
-
-pure_inst_perl: $(MAP_TARGET)
- }.$self->{CP}.q{ $(MAP_TARGET) }.$self->catfile('$(INSTALLBIN)','$(MAP_TARGET)').q{
-
-clean :: map_clean
-
-map_clean :
- }.$self->{RM_F}.qq{ $tmp/perlmain\$(OBJ_EXT) $tmp/perlmain.c \$(MAP_TARGET) $makefilename \$(INST_ARCHAUTODIR)/extralibs.all
-};
-
- join '', @m;
-}
-
-=item makefile (o)
-
-Defines how to rewrite the Makefile.
-
-=cut
-
-sub makefile {
- my($self) = shift;
- my @m;
- # We do not know what target was originally specified so we
- # must force a manual rerun to be sure. But as it should only
- # happen very rarely it is not a significant problem.
- push @m, '
-$(OBJECT) : $(FIRST_MAKEFILE)
-' if $self->{OBJECT};
-
- push @m, q{
-# We take a very conservative approach here, but it\'s worth it.
-# We move Makefile to Makefile.old here to avoid gnu make looping.
-}.$self->{MAKEFILE}.q{ : Makefile.PL $(CONFIGDEP)
- }.$self->{NOECHO}.q{echo "Makefile out-of-date with respect to $?"
- }.$self->{NOECHO}.q{echo "Cleaning current config before rebuilding Makefile..."
- -}.$self->{NOECHO}.q{$(RM_F) }."$self->{MAKEFILE}.old".q{
- -}.$self->{NOECHO}.q{$(MV) }."$self->{MAKEFILE} $self->{MAKEFILE}.old".q{
- -$(MAKE) -f }.$self->{MAKEFILE}.q{.old clean $(DEV_NULL) || $(NOOP)
- $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" Makefile.PL }.join(" ",map(qq["$_"],@ARGV)).q{
- }.$self->{NOECHO}.q{echo "==> Your Makefile has been rebuilt. <=="
- }.$self->{NOECHO}.q{echo "==> Please rerun the make command. <=="
- false
-
-# To change behavior to :: would be nice, but would break Tk b9.02
-# so you find such a warning below the dist target.
-#}.$self->{MAKEFILE}.q{ :: $(VERSION_FROM)
-# }.$self->{NOECHO}.q{echo "Warning: Makefile possibly out of date with $(VERSION_FROM)"
-};
-
- join "", @m;
-}
-
-=item manifypods (o)
-
-Defines targets and routines to translate the pods into manpages and
-put them into the INST_* directories.
-
-=cut
-
-sub manifypods {
- my($self, %attribs) = @_;
- return "\nmanifypods : pure_all\n\t$self->{NOECHO}\$(NOOP)\n" unless
- %{$self->{MAN3PODS}} or %{$self->{MAN1PODS}};
- my($dist);
- my($pod2man_exe);
- if (defined $self->{PERL_SRC}) {
- $pod2man_exe = $self->catfile($self->{PERL_SRC},'pod','pod2man');
- } else {
- $pod2man_exe = $self->catfile($Config{bin},'pod2man');
- }
- unless ($pod2man_exe = $self->perl_script($pod2man_exe)) {
- # Maybe a build by uninstalled Perl?
- $pod2man_exe = $self->catfile($self->{PERL_INC}, "pod", "pod2man");
- }
- unless ($pod2man_exe = $self->perl_script($pod2man_exe)) {
- # No pod2man but some MAN3PODS to be installed
- print <<END;
-
-Warning: I could not locate your pod2man program. Please make sure,
- your pod2man program is in your PATH before you execute 'make'
-
-END
- $pod2man_exe = "-S pod2man";
- }
- my(@m);
- push @m,
-qq[POD2MAN_EXE = $pod2man_exe\n],
-qq[POD2MAN = \$(PERL) -we '%m=\@ARGV;for (keys %m){' \\\n],
-q[-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "],
- $self->{MAKEFILE}, q[";' \\
--e 'print "Manifying $$m{$$_}\n";' \\
--e 'system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2MAN_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\
--e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
-];
- push @m, "\nmanifypods : pure_all ";
- push @m, join " \\\n\t", keys %{$self->{MAN1PODS}}, keys %{$self->{MAN3PODS}};
-
- push(@m,"\n");
- if (%{$self->{MAN1PODS}} || %{$self->{MAN3PODS}}) {
- push @m, "\t$self->{NOECHO}\$(POD2MAN) \\\n\t";
- push @m, join " \\\n\t", %{$self->{MAN1PODS}}, %{$self->{MAN3PODS}};
- }
- join('', @m);
-}
-
-=item maybe_command
-
-Returns true, if the argument is likely to be a command.
-
-=cut
-
-sub maybe_command {
- my($self,$file) = @_;
- return $file if -x $file && ! -d $file;
- return;
-}
-
-=item maybe_command_in_dirs
-
-method under development. Not yet used. Ask Ilya :-)
-
-=cut
-
-sub maybe_command_in_dirs { # $ver is optional argument if looking for perl
-# Ilya's suggestion. Not yet used, want to understand it first, but at least the code is here
- my($self, $names, $dirs, $trace, $ver) = @_;
- my($name, $dir);
- foreach $dir (@$dirs){
- next unless defined $dir; # $self->{PERL_SRC} may be undefined
- foreach $name (@$names){
- my($abs,$tryabs);
- if ($self->file_name_is_absolute($name)) { # /foo/bar
- $abs = $name;
- } elsif ($self->canonpath($name) eq $self->canonpath(basename($name))) { # bar
- $abs = $self->catfile($dir, $name);
- } else { # foo/bar
- $abs = $self->catfile($self->curdir, $name);
- }
- print "Checking $abs for $name\n" if ($trace >= 2);
- next unless $tryabs = $self->maybe_command($abs);
- print "Substituting $tryabs instead of $abs\n"
- if ($trace >= 2 and $tryabs ne $abs);
- $abs = $tryabs;
- if (defined $ver) {
- print "Executing $abs\n" if ($trace >= 2);
- if (`$abs -e 'require $ver; print "VER_OK\n" ' 2>&1` =~ /VER_OK/) {
- print "Using PERL=$abs\n" if $trace;
- return $abs;
- }
- } else { # Do not look for perl
- return $abs;
- }
- }
- }
-}
-
-=item needs_linking (o)
-
-Does this module need linking? Looks into subdirectory objects (see
-also has_link_code())
-
-=cut
-
-sub needs_linking {
- my($self) = shift;
- my($child,$caller);
- $caller = (caller(0))[3];
- Carp::confess("Needs_linking called too early") if $caller =~ /^ExtUtils::MakeMaker::/;
- return $self->{NEEDS_LINKING} if defined $self->{NEEDS_LINKING};
- if ($self->has_link_code or $self->{MAKEAPERL}){
- $self->{NEEDS_LINKING} = 1;
- return 1;
- }
- foreach $child (keys %{$self->{CHILDREN}}) {
- if ($self->{CHILDREN}->{$child}->needs_linking) {
- $self->{NEEDS_LINKING} = 1;
- return 1;
- }
- }
- return $self->{NEEDS_LINKING} = 0;
-}
-
-=item nicetext
-
-misnamed method (will have to be changed). The MM_Unix method just
-returns the argument without further processing.
-
-On VMS used to insure that colons marking targets are preceded by
-space - most Unix Makes don't need this, but it's necessary under VMS
-to distinguish the target delimiter from a colon appearing as part of
-a filespec.
-
-=cut
-
-sub nicetext {
- my($self,$text) = @_;
- $text;
-}
-
-=item parse_version
-
-parse a file and return what you think is $VERSION in this file set to.
-It will return the string "undef" if it can't figure out what $VERSION
-is.
-
-=cut
-
-sub parse_version {
- my($self,$parsefile) = @_;
- my $result;
- local *FH;
- local $/ = "\n";
- open(FH,$parsefile) or die "Could not open '$parsefile': $!";
- my $inpod = 0;
- while (<FH>) {
- $inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod;
- next if $inpod;
- chop;
- # next unless /\$(([\w\:\']*)\bVERSION)\b.*\=/;
- next unless /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/;
- my $eval = qq{
- package ExtUtils::MakeMaker::_version;
- no strict;
-
- local $1$2;
- \$$2=undef; do {
- $_
- }; \$$2
- };
- no warnings;
- $result = eval($eval);
- warn "Could not eval '$eval' in $parsefile: $@" if $@;
- $result = "undef" unless defined $result;
- last;
- }
- close FH;
- return $result;
-}
-
-=item parse_abstract
-
-parse a file and return what you think is the ABSTRACT
-
-=cut
-
-sub parse_abstract {
- my($self,$parsefile) = @_;
- my $result;
- local *FH;
- local $/ = "\n";
- open(FH,$parsefile) or die "Could not open '$parsefile': $!";
- my $inpod = 0;
- my $package = $self->{DISTNAME};
- $package =~ s/-/::/g;
- while (<FH>) {
- $inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod;
- next if !$inpod;
- chop;
- next unless /^($package\s-\s)(.*)/;
- $result = $2;
- last;
- }
- close FH;
- return $result;
-}
-
-=item pasthru (o)
-
-Defines the string that is passed to recursive make calls in
-subdirectories.
-
-=cut
-
-sub pasthru {
- my($self) = shift;
- my(@m,$key);
-
- my(@pasthru);
- my($sep) = $Is_VMS ? ',' : '';
- $sep .= "\\\n\t";
-
- foreach $key (qw(LIB LIBPERL_A LINKTYPE PREFIX OPTIMIZE)){
- push @pasthru, "$key=\"\$($key)\"";
- }
-
- push @m, "\nPASTHRU = ", join ($sep, @pasthru), "\n";
- join "", @m;
-}
-
-=item path
-
-Takes no argument, returns the environment variable PATH as an array.
-
-=cut
-
-sub path {
- my($self) = @_;
- my $path_sep = ($Is_OS2 || $Is_Dos) ? ";" : ":";
- my $path = $ENV{PATH};
- $path =~ s:\\:/:g if $Is_OS2;
- my @path = split $path_sep, $path;
- foreach(@path) { $_ = '.' if $_ eq '' }
- @path;
-}
-
-=item perl_script
-
-Takes one argument, a file name, and returns the file name, if the
-argument is likely to be a perl script. On MM_Unix this is true for
-any ordinary, readable file.
-
-=cut
-
-sub perl_script {
- my($self,$file) = @_;
- return $file if -r $file && -f _;
- return;
-}
-
-=item perldepend (o)
-
-Defines the dependency from all *.h files that come with the perl
-distribution.
-
-=cut
-
-sub perldepend {
- my($self) = shift;
- my(@m);
- push @m, q{
-# Check for unpropogated config.sh changes. Should never happen.
-# We do NOT just update config.h because that is not sufficient.
-# An out of date config.h is not fatal but complains loudly!
-$(PERL_INC)/config.h: $(PERL_SRC)/config.sh
- -}.$self->{NOECHO}.q{echo "Warning: $(PERL_INC)/config.h out of date with $(PERL_SRC)/config.sh"; false
-
-$(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh
- }.$self->{NOECHO}.q{echo "Warning: $(PERL_ARCHLIB)/Config.pm may be out of date with $(PERL_SRC)/config.sh"
- cd $(PERL_SRC) && $(MAKE) lib/Config.pm
-} if $self->{PERL_SRC};
-
- return join "", @m unless $self->needs_linking;
-
- push @m, q{
-PERL_HDRS = \
- $(PERL_INC)/EXTERN.h \
- $(PERL_INC)/INTERN.h \
- $(PERL_INC)/XSUB.h \
- $(PERL_INC)/av.h \
- $(PERL_INC)/cc_runtime.h \
- $(PERL_INC)/config.h \
- $(PERL_INC)/cop.h \
- $(PERL_INC)/cv.h \
- $(PERL_INC)/dosish.h \
- $(PERL_INC)/embed.h \
- $(PERL_INC)/embedvar.h \
- $(PERL_INC)/fakethr.h \
- $(PERL_INC)/form.h \
- $(PERL_INC)/gv.h \
- $(PERL_INC)/handy.h \
- $(PERL_INC)/hv.h \
- $(PERL_INC)/intrpvar.h \
- $(PERL_INC)/iperlsys.h \
- $(PERL_INC)/keywords.h \
- $(PERL_INC)/mg.h \
- $(PERL_INC)/nostdio.h \
- $(PERL_INC)/objXSUB.h \
- $(PERL_INC)/op.h \
- $(PERL_INC)/opcode.h \
- $(PERL_INC)/opnames.h \
- $(PERL_INC)/patchlevel.h \
- $(PERL_INC)/perl.h \
- $(PERL_INC)/perlapi.h \
- $(PERL_INC)/perlio.h \
- $(PERL_INC)/perlsdio.h \
- $(PERL_INC)/perlsfio.h \
- $(PERL_INC)/perlvars.h \
- $(PERL_INC)/perly.h \
- $(PERL_INC)/pp.h \
- $(PERL_INC)/pp_proto.h \
- $(PERL_INC)/proto.h \
- $(PERL_INC)/regcomp.h \
- $(PERL_INC)/regexp.h \
- $(PERL_INC)/regnodes.h \
- $(PERL_INC)/scope.h \
- $(PERL_INC)/sv.h \
- $(PERL_INC)/thrdvar.h \
- $(PERL_INC)/thread.h \
- $(PERL_INC)/unixish.h \
- $(PERL_INC)/utf8.h \
- $(PERL_INC)/util.h \
- $(PERL_INC)/warnings.h
-
-$(OBJECT) : $(PERL_HDRS)
-} if $self->{OBJECT};
-
- push @m, join(" ", values %{$self->{XS}})." : \$(XSUBPPDEPS)\n" if %{$self->{XS}};
-
- join "\n", @m;
-}
-
-=item ppd
-
-Defines target that creates a PPD (Perl Package Description) file
-for a binary distribution.
-
-=cut
-
-sub ppd {
- my($self) = @_;
- my(@m);
- if ($self->{ABSTRACT_FROM}){
- $self->{ABSTRACT} = $self->parse_abstract($self->{ABSTRACT_FROM}) or
- Carp::carp "WARNING: Setting ABSTRACT via file '$self->{ABSTRACT_FROM}' failed\n";
- }
- my ($pack_ver) = join ",", (split (/\./, $self->{VERSION}), (0) x 4) [0 .. 3];
- push(@m, "# Creates a PPD (Perl Package Description) for a binary distribution.\n");
- push(@m, "ppd:\n");
- push(@m, "\t\@\$(PERL) -e \"print qq{<SOFTPKG NAME=\\\"$self->{DISTNAME}\\\" VERSION=\\\"$pack_ver\\\">\\n}");
- push(@m, ". qq{\\t<TITLE>$self->{DISTNAME}</TITLE>\\n}");
- my $abstract = $self->{ABSTRACT};
- $abstract =~ s/\n/\\n/sg;
- $abstract =~ s/</&lt;/g;
- $abstract =~ s/>/&gt;/g;
- push(@m, ". qq{\\t<ABSTRACT>$abstract</ABSTRACT>\\n}");
- my ($author) = $self->{AUTHOR};
- $author =~ s/</&lt;/g;
- $author =~ s/>/&gt;/g;
- $author =~ s/@/\\@/g;
- push(@m, ". qq{\\t<AUTHOR>$author</AUTHOR>\\n}");
- push(@m, ". qq{\\t<IMPLEMENTATION>\\n}");
- my ($prereq);
- foreach $prereq (sort keys %{$self->{PREREQ_PM}}) {
- my $pre_req = $prereq;
- $pre_req =~ s/::/-/g;
- my ($dep_ver) = join ",", (split (/\./, $self->{PREREQ_PM}{$prereq}), (0) x 4) [0 .. 3];
- push(@m, ". qq{\\t\\t<DEPENDENCY NAME=\\\"$pre_req\\\" VERSION=\\\"$dep_ver\\\" />\\n}");
- }
- push(@m, ". qq{\\t\\t<OS NAME=\\\"\$(OSNAME)\\\" />\\n}");
- push(@m, ". qq{\\t\\t<ARCHITECTURE NAME=\\\"$Config{'archname'}\\\" />\\n}");
- my ($bin_location) = $self->{BINARY_LOCATION};
- $bin_location =~ s/\\/\\\\/g;
- if ($self->{PPM_INSTALL_SCRIPT}) {
- if ($self->{PPM_INSTALL_EXEC}) {
- push(@m, " . qq{\\t\\t<INSTALL EXEC=\\\"$self->{PPM_INSTALL_EXEC}\\\">$self->{PPM_INSTALL_SCRIPT}</INSTALL>\\n}");
- }
- else {
- push(@m, " . qq{\\t\\t<INSTALL>$self->{PPM_INSTALL_SCRIPT}</INSTALL>\\n}");
- }
- }
- push(@m, ". qq{\\t\\t<CODEBASE HREF=\\\"$bin_location\\\" />\\n}");
- push(@m, ". qq{\\t</IMPLEMENTATION>\\n}");
- push(@m, ". qq{</SOFTPKG>\\n}\" > $self->{DISTNAME}.ppd");
-
- join("", @m);
-}
-
-=item perm_rw (o)
-
-Returns the attribute C<PERM_RW> or the string C<644>.
-Used as the string that is passed
-to the C<chmod> command to set the permissions for read/writeable files.
-MakeMaker chooses C<644> because it has turned out in the past that
-relying on the umask provokes hard-to-track bug reports.
-When the return value is used by the perl function C<chmod>, it is
-interpreted as an octal value.
-
-=cut
-
-sub perm_rw {
- shift->{PERM_RW} || "644";
-}
-
-=item perm_rwx (o)
-
-Returns the attribute C<PERM_RWX> or the string C<755>,
-i.e. the string that is passed
-to the C<chmod> command to set the permissions for executable files.
-See also perl_rw.
-
-=cut
-
-sub perm_rwx {
- shift->{PERM_RWX} || "755";
-}
-
-=item pm_to_blib
-
-Defines target that copies all files in the hash PM to their
-destination and autosplits them. See L<ExtUtils::Install/DESCRIPTION>
-
-=cut
-
-sub pm_to_blib {
- my $self = shift;
- my($autodir) = $self->catdir('$(INST_LIB)','auto');
- return q{
-pm_to_blib: $(TO_INST_PM)
- }.$self->{NOECHO}.q{$(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" \
- "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -MExtUtils::Install \
- -e "pm_to_blib({qw{$(PM_TO_BLIB)}},'}.$autodir.q{','$(PM_FILTER)')"
- }.$self->{NOECHO}.q{$(TOUCH) $@
-};
-}
-
-=item post_constants (o)
-
-Returns an empty string per default. Dedicated to overrides from
-within Makefile.PL after all constants have been defined.
-
-=cut
-
-sub post_constants{
- my($self) = shift;
- "";
-}
-
-=item post_initialize (o)
-
-Returns an empty string per default. Used in Makefile.PLs to add some
-chunk of text to the Makefile after the object is initialized.
-
-=cut
-
-sub post_initialize {
- my($self) = shift;
- "";
-}
-
-=item postamble (o)
-
-Returns an empty string. Can be used in Makefile.PLs to write some
-text to the Makefile at the end.
-
-=cut
-
-sub postamble {
- my($self) = shift;
- "";
-}
-
-=item prefixify
-
-Check a path variable in $self from %Config, if it contains a prefix,
-and replace it with another one.
-
-Takes as arguments an attribute name, a search prefix and a
-replacement prefix. Changes the attribute in the object.
-
-=cut
-
-sub prefixify {
- my($self,$var,$sprefix,$rprefix) = @_;
- $self->{uc $var} ||= $Config{lc $var};
- $self->{uc $var} = VMS::Filespec::unixpath($self->{uc $var}) if $Is_VMS;
- $self->{uc $var} =~ s/\Q$sprefix\E/$rprefix/s;
-}
-
-=item processPL (o)
-
-Defines targets to run *.PL files.
-
-=cut
-
-sub processPL {
- my($self) = shift;
- return "" unless $self->{PL_FILES};
- my(@m, $plfile);
- foreach $plfile (sort keys %{$self->{PL_FILES}}) {
- my $list = ref($self->{PL_FILES}->{$plfile})
- ? $self->{PL_FILES}->{$plfile}
- : [$self->{PL_FILES}->{$plfile}];
- my $target;
- foreach $target (@$list) {
- push @m, "
-all :: $target
- $self->{NOECHO}\$(NOOP)
-
-$target :: $plfile
- \$(PERL) -I\$(INST_ARCHLIB) -I\$(INST_LIB) -I\$(PERL_ARCHLIB) -I\$(PERL_LIB) $plfile $target
-";
- }
- }
- join "", @m;
-}
-
-=item realclean (o)
-
-Defines the realclean target.
-
-=cut
-
-sub realclean {
- my($self, %attribs) = @_;
- my(@m);
- push(@m,'
-# Delete temporary files (via clean) and also delete installed files
-realclean purge :: clean
-');
- # realclean subdirectories first (already cleaned)
- my $sub = ($Is_Win32 && Win32::IsWin95()) ?
- "\tcd %s\n\t\$(TEST_F) %s\n\t\$(MAKE) %s realclean\n\tcd ..\n" :
- "\t-cd %s && \$(TEST_F) %s && \$(MAKE) %s realclean\n";
- foreach(@{$self->{DIR}}){
- push(@m, sprintf($sub,$_,"$self->{MAKEFILE}.old","-f $self->{MAKEFILE}.old"));
- push(@m, sprintf($sub,$_,"$self->{MAKEFILE}",''));
- }
- push(@m, " $self->{RM_RF} \$(INST_AUTODIR) \$(INST_ARCHAUTODIR)\n");
- if( $self->has_link_code ){
- push(@m, " $self->{RM_F} \$(INST_DYNAMIC) \$(INST_BOOT)\n");
- push(@m, " $self->{RM_F} \$(INST_STATIC)\n");
- }
- # Issue a several little RM_F commands rather than risk creating a
- # very long command line (useful for extensions such as Encode
- # that have many files).
- if (keys %{$self->{PM}}) {
- my $line = "";
- foreach (values %{$self->{PM}}) {
- if (length($line) + length($_) > 80) {
- push @m, "\t$self->{RM_F} $line\n";
- $line = $_;
- }
- else {
- $line .= " $_";
- }
- }
- push @m, "\t$self->{RM_F} $line\n" if $line;
- }
- my(@otherfiles) = ($self->{MAKEFILE},
- "$self->{MAKEFILE}.old"); # Makefiles last
- push(@otherfiles, $attribs{FILES}) if $attribs{FILES};
- push(@m, " $self->{RM_RF} @otherfiles\n") if @otherfiles;
- push(@m, " $attribs{POSTOP}\n") if $attribs{POSTOP};
- join("", @m);
-}
-
-=item replace_manpage_separator
-
-Takes the name of a package, which may be a nested package, in the
-form Foo/Bar and replaces the slash with C<::>. Returns the replacement.
-
-=cut
-
-sub replace_manpage_separator {
- my($self,$man) = @_;
- if ($^O eq 'uwin') {
- $man =~ s,/+,.,g;
- } elsif ($Is_Dos) {
- $man =~ s,/+,__,g;
- } else {
- $man =~ s,/+,::,g;
- }
- $man;
-}
-
-=item static (o)
-
-Defines the static target.
-
-=cut
-
-sub static {
-# --- Static Loading Sections ---
-
- my($self) = shift;
- '
-## $(INST_PM) has been moved to the all: target.
-## It remains here for awhile to allow for old usage: "make static"
-#static :: '.$self->{MAKEFILE}.' $(INST_STATIC) $(INST_PM)
-static :: '.$self->{MAKEFILE}.' $(INST_STATIC)
- '.$self->{NOECHO}.'$(NOOP)
-';
-}
-
-=item static_lib (o)
-
-Defines how to produce the *.a (or equivalent) files.
-
-=cut
-
-sub static_lib {
- my($self) = @_;
-# Come to think of it, if there are subdirs with linkcode, we still have no INST_STATIC
-# return '' unless $self->needs_linking(); #might be because of a subdir
-
- return '' unless $self->has_link_code;
-
- my(@m);
- push(@m, <<'END');
-$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)/.exists
- $(RM_RF) $@
-END
- # If this extension has it's own library (eg SDBM_File)
- # then copy that to $(INST_STATIC) and add $(OBJECT) into it.
- push(@m, "\t$self->{CP} \$(MYEXTLIB) \$\@\n") if $self->{MYEXTLIB};
-
- my $ar;
- if (exists $self->{FULL_AR} && -x $self->{FULL_AR}) {
- # Prefer the absolute pathed ar if available so that PATH
- # doesn't confuse us. Perl itself is built with the full_ar.
- $ar = 'FULL_AR';
- } else {
- $ar = 'AR';
- }
- push @m,
- "\t\$($ar) ".'$(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@'."\n";
- push @m,
-q{ $(CHMOD) $(PERM_RWX) $@
- }.$self->{NOECHO}.q{echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)/extralibs.ld
-};
- # Old mechanism - still available:
- push @m,
-"\t$self->{NOECHO}".q{echo "$(EXTRALIBS)" >> $(PERL_SRC)/ext.libs
-} if $self->{PERL_SRC} && $self->{EXTRALIBS};
- push @m, "\n";
-
- push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
- join('', "\n",@m);
-}
-
-=item staticmake (o)
-
-Calls makeaperl.
-
-=cut
-
-sub staticmake {
- my($self, %attribs) = @_;
- my(@static);
-
- my(@searchdirs)=($self->{PERL_ARCHLIB}, $self->{SITEARCHEXP}, $self->{INST_ARCHLIB});
-
- # And as it's not yet built, we add the current extension
- # but only if it has some C code (or XS code, which implies C code)
- if (@{$self->{C}}) {
- @static = $self->catfile($self->{INST_ARCHLIB},
- "auto",
- $self->{FULLEXT},
- "$self->{BASEEXT}$self->{LIB_EXT}"
- );
- }
-
- # Either we determine now, which libraries we will produce in the
- # subdirectories or we do it at runtime of the make.
-
- # We could ask all subdir objects, but I cannot imagine, why it
- # would be necessary.
-
- # Instead we determine all libraries for the new perl at
- # runtime.
- my(@perlinc) = ($self->{INST_ARCHLIB}, $self->{INST_LIB}, $self->{PERL_ARCHLIB}, $self->{PERL_LIB});
-
- $self->makeaperl(MAKE => $self->{MAKEFILE},
- DIRS => \@searchdirs,
- STAT => \@static,
- INCL => \@perlinc,
- TARGET => $self->{MAP_TARGET},
- TMP => "",
- LIBPERL => $self->{LIBPERL_A}
- );
-}
-
-=item subdir_x (o)
-
-Helper subroutine for subdirs
-
-=cut
-
-sub subdir_x {
- my($self, $subdir) = @_;
- my(@m);
- if ($Is_Win32 && Win32::IsWin95()) {
- # XXX: dmake-specific, like rest of Win95 port
- return <<EOT;
-subdirs ::
-@[
- cd $subdir
- \$(MAKE) all \$(PASTHRU)
- cd ..
-]
-EOT
- }
- else {
- return <<EOT;
-
-subdirs ::
- $self->{NOECHO}cd $subdir && \$(MAKE) all \$(PASTHRU)
-
-EOT
- }
-}
-
-=item subdirs (o)
-
-Defines targets to process subdirectories.
-
-=cut
-
-sub subdirs {
-# --- Sub-directory Sections ---
- my($self) = shift;
- my(@m,$dir);
- # This method provides a mechanism to automatically deal with
- # subdirectories containing further Makefile.PL scripts.
- # It calls the subdir_x() method for each subdirectory.
- foreach $dir (@{$self->{DIR}}){
- push(@m, $self->subdir_x($dir));
-#### print "Including $dir subdirectory\n";
- }
- if (@m){
- unshift(@m, "
-# The default clean, realclean and test targets in this Makefile
-# have automatically been given entries for each subdir.
-
-");
- } else {
- push(@m, "\n# none")
- }
- join('',@m);
-}
-
-=item test (o)
-
-Defines the test targets.
-
-=cut
-
-sub test {
-# --- Test and Installation Sections ---
-
- my($self, %attribs) = @_;
- my $tests = $attribs{TESTS};
- if (!$tests && -d 't') {
- $tests = $Is_Win32 ? join(' ', <t\\*.t>) : 't/*.t';
- }
- # note: 'test.pl' name is also hardcoded in init_dirscan()
- my(@m);
- push(@m,"
-TEST_VERBOSE=0
-TEST_TYPE=test_\$(LINKTYPE)
-TEST_FILE = test.pl
-TEST_FILES = $tests
-TESTDB_SW = -d
-
-testdb :: testdb_\$(LINKTYPE)
-
-test :: \$(TEST_TYPE)
-");
- push(@m, map("\t$self->{NOECHO}cd $_ && \$(TEST_F) $self->{MAKEFILE} && \$(MAKE) test \$(PASTHRU)\n",
- @{$self->{DIR}}));
- push(@m, "\t$self->{NOECHO}echo 'No tests defined for \$(NAME) extension.'\n")
- unless $tests or -f "test.pl" or @{$self->{DIR}};
- push(@m, "\n");
-
- push(@m, "test_dynamic :: pure_all\n");
- push(@m, $self->test_via_harness('$(FULLPERL)', '$(TEST_FILES)')) if $tests;
- push(@m, $self->test_via_script('$(FULLPERL)', '$(TEST_FILE)')) if -f "test.pl";
- push(@m, "\n");
-
- push(@m, "testdb_dynamic :: pure_all\n");
- push(@m, $self->test_via_script('$(FULLPERL) $(TESTDB_SW)', '$(TEST_FILE)'));
- push(@m, "\n");
-
- # Occasionally we may face this degenerate target:
- push @m, "test_ : test_dynamic\n\n";
-
- if ($self->needs_linking()) {
- push(@m, "test_static :: pure_all \$(MAP_TARGET)\n");
- push(@m, $self->test_via_harness('./$(MAP_TARGET)', '$(TEST_FILES)')) if $tests;
- push(@m, $self->test_via_script('./$(MAP_TARGET)', '$(TEST_FILE)')) if -f "test.pl";
- push(@m, "\n");
- push(@m, "testdb_static :: pure_all \$(MAP_TARGET)\n");
- push(@m, $self->test_via_script('./$(MAP_TARGET) $(TESTDB_SW)', '$(TEST_FILE)'));
- push(@m, "\n");
- } else {
- push @m, "test_static :: test_dynamic\n";
- push @m, "testdb_static :: testdb_dynamic\n";
- }
- join("", @m);
-}
-
-=item test_via_harness (o)
-
-Helper method to write the test targets
-
-=cut
-
-sub test_via_harness {
- my($self, $perl, $tests) = @_;
- $perl = "PERL_DL_NONLAZY=1 $perl" unless $Is_Win32;
- "\t$perl".q! -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -e 'use Test::Harness qw(&runtests $$verbose); $$verbose=$(TEST_VERBOSE); runtests @ARGV;' !."$tests\n";
-}
-
-=item test_via_script (o)
-
-Other helper method for test.
-
-=cut
-
-sub test_via_script {
- my($self, $perl, $script) = @_;
- $perl = "PERL_DL_NONLAZY=1 $perl" unless $Is_Win32;
- qq{\t$perl}.q{ -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) }.qq{$script
-};
-}
-
-=item tool_autosplit (o)
-
-Defines a simple perl call that runs autosplit. May be deprecated by
-pm_to_blib soon.
-
-=cut
-
-sub tool_autosplit {
-# --- Tool Sections ---
-
- my($self, %attribs) = @_;
- my($asl) = "";
- $asl = "\$AutoSplit::Maxlen=$attribs{MAXLEN};" if $attribs{MAXLEN};
- q{
-# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
-AUTOSPLITFILE = $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e 'use AutoSplit;}.$asl.q{autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1) ;'
-};
-}
-
-=item tools_other (o)
-
-Defines SHELL, LD, TOUCH, CP, MV, RM_F, RM_RF, CHMOD, UMASK_NULL in
-the Makefile. Also defines the perl programs MKPATH,
-WARN_IF_OLD_PACKLIST, MOD_INSTALL. DOC_INSTALL, and UNINSTALL.
-
-=cut
-
-sub tools_other {
- my($self) = shift;
- my @m;
- my $bin_sh = $Config{sh} || '/bin/sh';
- push @m, qq{
-SHELL = $bin_sh
-};
-
- for (qw/ CHMOD CP LD MV NOOP RM_F RM_RF TEST_F TOUCH UMASK_NULL DEV_NULL/ ) {
- push @m, "$_ = $self->{$_}\n";
- }
-
- push @m, q{
-# The following is a portable way to say mkdir -p
-# To see which directories are created, change the if 0 to if 1
-MKPATH = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e mkpath
-
-# This helps us to minimize the effect of the .exists files A yet
-# better solution would be to have a stable file in the perl
-# distribution with a timestamp of zero. But this solution doesn't
-# need any changes to the core distribution and works with older perls
-EQUALIZE_TIMESTAMP = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e eqtime
-};
-
-
- return join "", @m if $self->{PARENT};
-
- push @m, q{
-# Here we warn users that an old packlist file was found somewhere,
-# and that they should call some uninstall routine
-WARN_IF_OLD_PACKLIST = $(PERL) -we 'exit unless -f $$ARGV[0];' \\
--e 'print "WARNING: I have found an old package in\n";' \\
--e 'print "\t$$ARGV[0].\n";' \\
--e 'print "Please make sure the two installations are not conflicting\n";'
-
-UNINST=0
-VERBINST=0
-
-MOD_INSTALL = $(PERL) -I$(INST_LIB) -I$(PERL_LIB) -MExtUtils::Install \
--e "install({@ARGV},'$(VERBINST)',0,'$(UNINST)');"
-
-DOC_INSTALL = $(PERL) -e '$$\="\n\n";' \
--e 'print "=head2 ", scalar(localtime), ": C<", shift, ">", " L<", $$arg=shift, "|", $$arg, ">";' \
--e 'print "=over 4";' \
--e 'while (defined($$key = shift) and defined($$val = shift)){print "=item *";print "C<$$key: $$val>";}' \
--e 'print "=back";'
-
-UNINSTALL = $(PERL) -MExtUtils::Install \
--e 'uninstall($$ARGV[0],1,1); print "\nUninstall is deprecated. Please check the";' \
--e 'print " packlist above carefully.\n There may be errors. Remove the";' \
--e 'print " appropriate files manually.\n Sorry for the inconveniences.\n"'
-};
-
- return join "", @m;
-}
-
-=item tool_xsubpp (o)
-
-Determines typemaps, xsubpp version, prototype behaviour.
-
-=cut
-
-sub tool_xsubpp {
- my($self) = shift;
- return "" unless $self->needs_linking;
- my($xsdir) = $self->catdir($self->{PERL_LIB},"ExtUtils");
- my(@tmdeps) = $self->catdir('$(XSUBPPDIR)','typemap');
- if( $self->{TYPEMAPS} ){
- my $typemap;
- foreach $typemap (@{$self->{TYPEMAPS}}){
- if( ! -f $typemap ){
- warn "Typemap $typemap not found.\n";
- }
- else{
- push(@tmdeps, $typemap);
- }
- }
- }
- push(@tmdeps, "typemap") if -f "typemap";
- my(@tmargs) = map("-typemap $_", @tmdeps);
- if( exists $self->{XSOPT} ){
- unshift( @tmargs, $self->{XSOPT} );
- }
-
-
- my $xsubpp_version = $self->xsubpp_version($self->catfile($xsdir,"xsubpp"));
-
- # What are the correct thresholds for version 1 && 2 Paul?
- if ( $xsubpp_version > 1.923 ){
- $self->{XSPROTOARG} = "" unless defined $self->{XSPROTOARG};
- } else {
- if (defined $self->{XSPROTOARG} && $self->{XSPROTOARG} =~ /\-prototypes/) {
- print STDOUT qq{Warning: This extension wants to pass the switch "-prototypes" to xsubpp.
- Your version of xsubpp is $xsubpp_version and cannot handle this.
- Please upgrade to a more recent version of xsubpp.
-};
- } else {
- $self->{XSPROTOARG} = "";
- }
- }
-
- my $xsubpp = "xsubpp";
-
- return qq{
-XSUBPPDIR = $xsdir
-XSUBPP = \$(XSUBPPDIR)/$xsubpp
-XSPROTOARG = $self->{XSPROTOARG}
-XSUBPPDEPS = @tmdeps \$(XSUBPP)
-XSUBPPARGS = @tmargs
-};
-};
-
-sub xsubpp_version
-{
- my($self,$xsubpp) = @_;
- return $Xsubpp_Version if defined $Xsubpp_Version; # global variable
-
- my ($version) ;
-
- # try to figure out the version number of the xsubpp on the system
-
- # first try the -v flag, introduced in 1.921 & 2.000a2
-
- return "" unless $self->needs_linking;
-
- my $command = "$self->{PERL} -I$self->{PERL_LIB} $xsubpp -v 2>&1";
- print "Running $command\n" if $Verbose >= 2;
- $version = `$command` ;
- warn "Running '$command' exits with status " . ($?>>8) if $?;
- chop $version ;
-
- return $Xsubpp_Version = $1 if $version =~ /^xsubpp version (.*)/ ;
-
- # nope, then try something else
-
- my $counter = '000';
- my ($file) = 'temp' ;
- $counter++ while -e "$file$counter"; # don't overwrite anything
- $file .= $counter;
-
- open(F, ">$file") or die "Cannot open file '$file': $!\n" ;
- print F <<EOM ;
-MODULE = fred PACKAGE = fred
-
-int
-fred(a)
- int a;
-EOM
-
- close F ;
-
- $command = "$self->{PERL} $xsubpp $file 2>&1";
- print "Running $command\n" if $Verbose >= 2;
- my $text = `$command` ;
- warn "Running '$command' exits with status " . ($?>>8) if $?;
- unlink $file ;
-
- # gets 1.2 -> 1.92 and 2.000a1
- return $Xsubpp_Version = $1 if $text =~ /automatically by xsubpp version ([\S]+)\s*/ ;
-
- # it is either 1.0 or 1.1
- return $Xsubpp_Version = 1.1 if $text =~ /^Warning: ignored semicolon/ ;
-
- # none of the above, so 1.0
- return $Xsubpp_Version = "1.0" ;
-}
-
-=item top_targets (o)
-
-Defines the targets all, subdirs, config, and O_FILES
-
-=cut
-
-sub top_targets {
-# --- Target Sections ---
-
- my($self) = shift;
- my(@m);
- push @m, '
-#all :: config $(INST_PM) subdirs linkext manifypods
-';
-
- push @m, '
-all :: pure_all htmlifypods manifypods
- '.$self->{NOECHO}.'$(NOOP)
-'
- unless $self->{SKIPHASH}{'all'};
-
- push @m, '
-pure_all :: config pm_to_blib subdirs linkext
- '.$self->{NOECHO}.'$(NOOP)
-
-subdirs :: $(MYEXTLIB)
- '.$self->{NOECHO}.'$(NOOP)
-
-config :: '.$self->{MAKEFILE}.' $(INST_LIBDIR)/.exists
- '.$self->{NOECHO}.'$(NOOP)
-
-config :: $(INST_ARCHAUTODIR)/.exists
- '.$self->{NOECHO}.'$(NOOP)
-
-config :: $(INST_AUTODIR)/.exists
- '.$self->{NOECHO}.'$(NOOP)
-';
-
- push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
-
- if (%{$self->{HTMLLIBPODS}}) {
- push @m, qq[
-config :: \$(INST_HTMLLIBDIR)/.exists
- $self->{NOECHO}\$(NOOP)
-
-];
- push @m, $self->dir_target(qw[$(INST_HTMLLIBDIR)]);
- }
-
- if (%{$self->{HTMLSCRIPTPODS}}) {
- push @m, qq[
-config :: \$(INST_HTMLSCRIPTDIR)/.exists
- $self->{NOECHO}\$(NOOP)
-
-];
- push @m, $self->dir_target(qw[$(INST_HTMLSCRIPTDIR)]);
- }
-
- if (%{$self->{MAN1PODS}}) {
- push @m, qq[
-config :: \$(INST_MAN1DIR)/.exists
- $self->{NOECHO}\$(NOOP)
-
-];
- push @m, $self->dir_target(qw[$(INST_MAN1DIR)]);
- }
- if (%{$self->{MAN3PODS}}) {
- push @m, qq[
-config :: \$(INST_MAN3DIR)/.exists
- $self->{NOECHO}\$(NOOP)
-
-];
- push @m, $self->dir_target(qw[$(INST_MAN3DIR)]);
- }
-
- push @m, '
-$(O_FILES): $(H_FILES)
-' if @{$self->{O_FILES} || []} && @{$self->{H} || []};
-
- push @m, q{
-help:
- perldoc ExtUtils::MakeMaker
-};
-
- push @m, q{
-Version_check:
- }.$self->{NOECHO}.q{$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \
- -MExtUtils::MakeMaker=Version_check \
- -e "Version_check('$(MM_VERSION)')"
-};
-
- join('',@m);
-}
-
-=item writedoc
-
-Obsolete, deprecated method. Not used since Version 5.21.
-
-=cut
-
-sub writedoc {
-# --- perllocal.pod section ---
- my($self,$what,$name,@attribs)=@_;
- my $time = localtime;
- print "=head2 $time: $what C<$name>\n\n=over 4\n\n=item *\n\n";
- print join "\n\n=item *\n\n", map("C<$_>",@attribs);
- print "\n\n=back\n\n";
-}
-
-=item xs_c (o)
-
-Defines the suffix rules to compile XS files to C.
-
-=cut
-
-sub xs_c {
- my($self) = shift;
- return '' unless $self->needs_linking();
- '
-.xs.c:
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
-';
-}
-
-=item xs_cpp (o)
-
-Defines the suffix rules to compile XS files to C++.
-
-=cut
-
-sub xs_cpp {
- my($self) = shift;
- return '' unless $self->needs_linking();
- '
-.xs.cpp:
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.cpp
-';
-}
-
-=item xs_o (o)
-
-Defines suffix rules to go from XS to object files directly. This is
-only intended for broken make implementations.
-
-=cut
-
-sub xs_o { # many makes are too dumb to use xs_c then c_o
- my($self) = shift;
- return '' unless $self->needs_linking();
- '
-.xs$(OBJ_EXT):
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
- $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
-';
-}
-
-=item perl_archive
-
-This is internal method that returns path to libperl.a equivalent
-to be linked to dynamic extensions. UNIX does not have one but OS2
-and Win32 do.
-
-=cut
-
-sub perl_archive
-{
- return '$(PERL_INC)' . "/$Config{libperl}" if $^O eq "beos";
- return "";
-}
-
-=item perl_archive_after
-
-This is an internal method that returns path to a library which
-should be put on the linker command line I<after> the external libraries
-to be linked to dynamic extensions. This may be needed if the linker
-is one-pass, and Perl includes some overrides for C RTL functions,
-such as malloc().
-
-=cut
-
-sub perl_archive_after
-{
- return "";
-}
-
-=item export_list
-
-This is internal method that returns name of a file that is
-passed to linker to define symbols to be exported.
-UNIX does not have one but OS2 and Win32 do.
-
-=cut
-
-sub export_list
-{
- return "";
-}
-
-
-1;
-
-=back
-
-=head1 SEE ALSO
-
-L<ExtUtils::MakeMaker>
-
-=cut
-
-__END__
diff --git a/contrib/perl5/lib/ExtUtils/MM_VMS.pm b/contrib/perl5/lib/ExtUtils/MM_VMS.pm
deleted file mode 100644
index 7b75958..0000000
--- a/contrib/perl5/lib/ExtUtils/MM_VMS.pm
+++ /dev/null
@@ -1,2309 +0,0 @@
-# MM_VMS.pm
-# MakeMaker default methods for VMS
-# This package is inserted into @ISA of MakeMaker's MM before the
-# built-in ExtUtils::MM_Unix methods if MakeMaker.pm is run under VMS.
-#
-# Author: Charles Bailey bailey@newman.upenn.edu
-
-package ExtUtils::MM_VMS;
-
-use Carp qw( &carp );
-use Config;
-require Exporter;
-use VMS::Filespec;
-use File::Basename;
-use File::Spec;
-our($Revision, @ISA);
-$Revision = '5.56 (27-Apr-1999)';
-
-@ISA = qw( File::Spec );
-unshift @MM::ISA, 'ExtUtils::MM_VMS';
-
-Exporter::import('ExtUtils::MakeMaker', '$Verbose', '&neatvalue');
-
-=head1 NAME
-
-ExtUtils::MM_VMS - methods to override UN*X behaviour in ExtUtils::MakeMaker
-
-=head1 SYNOPSIS
-
- use ExtUtils::MM_VMS; # Done internally by ExtUtils::MakeMaker if needed
-
-=head1 DESCRIPTION
-
-See ExtUtils::MM_Unix for a documentation of the methods provided
-there. This package overrides the implementation of these methods, not
-the semantics.
-
-=head2 Methods always loaded
-
-=over
-
-=item wraplist
-
-Converts a list into a string wrapped at approximately 80 columns.
-
-=cut
-
-sub wraplist {
- my($self) = shift;
- my($line,$hlen) = ('',0);
- my($word);
-
- foreach $word (@_) {
- # Perl bug -- seems to occasionally insert extra elements when
- # traversing array (scalar(@array) doesn't show them, but
- # foreach(@array) does) (5.00307)
- next unless $word =~ /\w/;
- $line .= ' ' if length($line);
- if ($hlen > 80) { $line .= "\\\n\t"; $hlen = 0; }
- $line .= $word;
- $hlen += length($word) + 2;
- }
- $line;
-}
-
-=item rootdir (override)
-
-Returns a string representing of the root directory.
-
-=cut
-
-sub rootdir {
- return '';
-}
-
-package ExtUtils::MM_VMS;
-
-sub ExtUtils::MM_VMS::ext;
-sub ExtUtils::MM_VMS::guess_name;
-sub ExtUtils::MM_VMS::find_perl;
-sub ExtUtils::MM_VMS::path;
-sub ExtUtils::MM_VMS::maybe_command;
-sub ExtUtils::MM_VMS::maybe_command_in_dirs;
-sub ExtUtils::MM_VMS::perl_script;
-sub ExtUtils::MM_VMS::file_name_is_absolute;
-sub ExtUtils::MM_VMS::replace_manpage_separator;
-sub ExtUtils::MM_VMS::init_others;
-sub ExtUtils::MM_VMS::constants;
-sub ExtUtils::MM_VMS::cflags;
-sub ExtUtils::MM_VMS::const_cccmd;
-sub ExtUtils::MM_VMS::pm_to_blib;
-sub ExtUtils::MM_VMS::tool_autosplit;
-sub ExtUtils::MM_VMS::tool_xsubpp;
-sub ExtUtils::MM_VMS::xsubpp_version;
-sub ExtUtils::MM_VMS::tools_other;
-sub ExtUtils::MM_VMS::dist;
-sub ExtUtils::MM_VMS::c_o;
-sub ExtUtils::MM_VMS::xs_c;
-sub ExtUtils::MM_VMS::xs_o;
-sub ExtUtils::MM_VMS::top_targets;
-sub ExtUtils::MM_VMS::dlsyms;
-sub ExtUtils::MM_VMS::dynamic_lib;
-sub ExtUtils::MM_VMS::dynamic_bs;
-sub ExtUtils::MM_VMS::static_lib;
-sub ExtUtils::MM_VMS::manifypods;
-sub ExtUtils::MM_VMS::processPL;
-sub ExtUtils::MM_VMS::installbin;
-sub ExtUtils::MM_VMS::subdir_x;
-sub ExtUtils::MM_VMS::clean;
-sub ExtUtils::MM_VMS::realclean;
-sub ExtUtils::MM_VMS::dist_basics;
-sub ExtUtils::MM_VMS::dist_core;
-sub ExtUtils::MM_VMS::dist_dir;
-sub ExtUtils::MM_VMS::dist_test;
-sub ExtUtils::MM_VMS::install;
-sub ExtUtils::MM_VMS::perldepend;
-sub ExtUtils::MM_VMS::makefile;
-sub ExtUtils::MM_VMS::test;
-sub ExtUtils::MM_VMS::test_via_harness;
-sub ExtUtils::MM_VMS::test_via_script;
-sub ExtUtils::MM_VMS::makeaperl;
-sub ExtUtils::MM_VMS::ext;
-sub ExtUtils::MM_VMS::nicetext;
-
-#use SelfLoader;
-sub AUTOLOAD {
- my $code;
- if (defined fileno(DATA)) {
- my $fh = select DATA;
- my $o = $/; # For future reads from the file.
- $/ = "\n__END__\n";
- $code = <DATA>;
- $/ = $o;
- select $fh;
- close DATA;
- eval $code;
- if ($@) {
- $@ =~ s/ at .*\n//;
- Carp::croak $@;
- }
- } else {
- warn "AUTOLOAD called unexpectedly for $AUTOLOAD";
- }
- defined(&$AUTOLOAD) or die "Myloader inconsistency error";
- goto &$AUTOLOAD;
-}
-
-1;
-
-#__DATA__
-
-
-# This isn't really an override. It's just here because ExtUtils::MM_VMS
-# appears in @MM::ISA before ExtUtils::Liblist::Kid, so if there isn't an ext()
-# in MM_VMS, then AUTOLOAD is called, and bad things happen. So, we just
-# mimic inheritance here and hand off to ExtUtils::Liblist::Kid.
-sub ext {
- require ExtUtils::Liblist;
- ExtUtils::Liblist::Kid::ext(@_);
-}
-
-=back
-
-=head2 SelfLoaded methods
-
-Those methods which override default MM_Unix methods are marked
-"(override)", while methods unique to MM_VMS are marked "(specific)".
-For overridden methods, documentation is limited to an explanation
-of why this method overrides the MM_Unix method; see the ExtUtils::MM_Unix
-documentation for more details.
-
-=over
-
-=item guess_name (override)
-
-Try to determine name of extension being built. We begin with the name
-of the current directory. Since VMS filenames are case-insensitive,
-however, we look for a F<.pm> file whose name matches that of the current
-directory (presumably the 'main' F<.pm> file for this extension), and try
-to find a C<package> statement from which to obtain the Mixed::Case
-package name.
-
-=cut
-
-sub guess_name {
- my($self) = @_;
- my($defname,$defpm,@pm,%xs,$pm);
- local *PM;
-
- $defname = basename(fileify($ENV{'DEFAULT'}));
- $defname =~ s![\d\-_]*\.dir.*$!!; # Clip off .dir;1 suffix, and package version
- $defpm = $defname;
- # Fallback in case for some reason a user has copied the files for an
- # extension into a working directory whose name doesn't reflect the
- # extension's name. We'll use the name of a unique .pm file, or the
- # first .pm file with a matching .xs file.
- if (not -e "${defpm}.pm") {
- @pm = map { s/.pm$//; $_ } glob('*.pm');
- if (@pm == 1) { ($defpm = $pm[0]) =~ s/.pm$//; }
- elsif (@pm) {
- %xs = map { s/.xs$//; ($_,1) } glob('*.xs');
- if (%xs) { foreach $pm (@pm) { $defpm = $pm, last if exists $xs{$pm}; } }
- }
- }
- if (open(PM,"${defpm}.pm")){
- while (<PM>) {
- if (/^\s*package\s+([^;]+)/i) {
- $defname = $1;
- last;
- }
- }
- print STDOUT "Warning (non-fatal): Couldn't find package name in ${defpm}.pm;\n\t",
- "defaulting package name to $defname\n"
- if eof(PM);
- close PM;
- }
- else {
- print STDOUT "Warning (non-fatal): Couldn't find ${defpm}.pm;\n\t",
- "defaulting package name to $defname\n";
- }
- $defname =~ s#[\d.\-_]+$##;
- $defname;
-}
-
-=item find_perl (override)
-
-Use VMS file specification syntax and CLI commands to find and
-invoke Perl images.
-
-=cut
-
-sub find_perl {
- my($self, $ver, $names, $dirs, $trace) = @_;
- my($name,$dir,$vmsfile,@sdirs,@snames,@cand);
- my($rslt);
- my($inabs) = 0;
- local *TCF;
- # Check in relative directories first, so we pick up the current
- # version of Perl if we're running MakeMaker as part of the main build.
- @sdirs = sort { my($absa) = $self->file_name_is_absolute($a);
- my($absb) = $self->file_name_is_absolute($b);
- if ($absa && $absb) { return $a cmp $b }
- else { return $absa ? 1 : ($absb ? -1 : ($a cmp $b)); }
- } @$dirs;
- # Check miniperl before perl, and check names likely to contain
- # version numbers before "generic" names, so we pick up an
- # executable that's less likely to be from an old installation.
- @snames = sort { my($ba) = $a =~ m!([^:>\]/]+)$!; # basename
- my($bb) = $b =~ m!([^:>\]/]+)$!;
- my($ahasdir) = (length($a) - length($ba) > 0);
- my($bhasdir) = (length($b) - length($bb) > 0);
- if ($ahasdir and not $bhasdir) { return 1; }
- elsif ($bhasdir and not $ahasdir) { return -1; }
- else { $bb =~ /\d/ <=> $ba =~ /\d/
- or substr($ba,0,1) cmp substr($bb,0,1)
- or length($bb) <=> length($ba) } } @$names;
- # Image names containing Perl version use '_' instead of '.' under VMS
- foreach $name (@snames) { $name =~ s/\.(\d+)$/_$1/; }
- if ($trace >= 2){
- print "Looking for perl $ver by these names:\n";
- print "\t@snames,\n";
- print "in these dirs:\n";
- print "\t@sdirs\n";
- }
- foreach $dir (@sdirs){
- next unless defined $dir; # $self->{PERL_SRC} may be undefined
- $inabs++ if $self->file_name_is_absolute($dir);
- if ($inabs == 1) {
- # We've covered relative dirs; everything else is an absolute
- # dir (probably an installed location). First, we'll try potential
- # command names, to see whether we can avoid a long MCR expression.
- foreach $name (@snames) { push(@cand,$name) if $name =~ /^[\w\-\$]+$/; }
- $inabs++; # Should happen above in next $dir, but just in case . . .
- }
- foreach $name (@snames){
- if ($name !~ m![/:>\]]!) { push(@cand,$self->catfile($dir,$name)); }
- else { push(@cand,$self->fixpath($name,0)); }
- }
- }
- foreach $name (@cand) {
- print "Checking $name\n" if ($trace >= 2);
- # If it looks like a potential command, try it without the MCR
- if ($name =~ /^[\w\-\$]+$/) {
- open(TCF,">temp_mmvms.com") || die('unable to open temp file');
- print TCF "\$ set message/nofacil/nosever/noident/notext\n";
- print TCF "\$ $name -e \"require $ver; print \"\"VER_OK\\n\"\"\"\n";
- close TCF;
- $rslt = `\@temp_mmvms.com` ;
- unlink('temp_mmvms.com');
- if ($rslt =~ /VER_OK/) {
- print "Using PERL=$name\n" if $trace;
- return $name;
- }
- }
- next unless $vmsfile = $self->maybe_command($name);
- $vmsfile =~ s/;[\d\-]*$//; # Clip off version number; we can use a newer version as well
- print "Executing $vmsfile\n" if ($trace >= 2);
- open(TCF,">temp_mmvms.com") || die('unable to open temp file');
- print TCF "\$ set message/nofacil/nosever/noident/notext\n";
- print TCF "\$ mcr $vmsfile -e \"require $ver; print \"\"VER_OK\\n\"\"\" \n";
- close TCF;
- $rslt = `\@temp_mmvms.com`;
- unlink('temp_mmvms.com');
- if ($rslt =~ /VER_OK/) {
- print "Using PERL=MCR $vmsfile\n" if $trace;
- return "MCR $vmsfile";
- }
- }
- print STDOUT "Unable to find a perl $ver (by these names: @$names, in these dirs: @$dirs)\n";
- 0; # false and not empty
-}
-
-=item path (override)
-
-Translate logical name DCL$PATH as a searchlist, rather than trying
-to C<split> string value of C<$ENV{'PATH'}>.
-
-=cut
-
-sub path {
- my(@dirs,$dir,$i);
- while ($dir = $ENV{'DCL$PATH;' . $i++}) { push(@dirs,$dir); }
- @dirs;
-}
-
-=item maybe_command (override)
-
-Follows VMS naming conventions for executable files.
-If the name passed in doesn't exactly match an executable file,
-appends F<.Exe> (or equivalent) to check for executable image, and F<.Com>
-to check for DCL procedure. If this fails, checks directories in DCL$PATH
-and finally F<Sys$System:> for an executable file having the name specified,
-with or without the F<.Exe>-equivalent suffix.
-
-=cut
-
-sub maybe_command {
- my($self,$file) = @_;
- return $file if -x $file && ! -d _;
- my(@dirs) = ('');
- my(@exts) = ('',$Config{'exe_ext'},'.exe','.com');
- my($dir,$ext);
- if ($file !~ m![/:>\]]!) {
- for (my $i = 0; defined $ENV{"DCL\$PATH;$i"}; $i++) {
- $dir = $ENV{"DCL\$PATH;$i"};
- $dir .= ':' unless $dir =~ m%[\]:]$%;
- push(@dirs,$dir);
- }
- push(@dirs,'Sys$System:');
- foreach $dir (@dirs) {
- my $sysfile = "$dir$file";
- foreach $ext (@exts) {
- return $file if -x "$sysfile$ext" && ! -d _;
- }
- }
- }
- return 0;
-}
-
-=item maybe_command_in_dirs (override)
-
-Uses DCL argument quoting on test command line.
-
-=cut
-
-sub maybe_command_in_dirs { # $ver is optional argument if looking for perl
- my($self, $names, $dirs, $trace, $ver) = @_;
- my($name, $dir);
- foreach $dir (@$dirs){
- next unless defined $dir; # $self->{PERL_SRC} may be undefined
- foreach $name (@$names){
- my($abs,$tryabs);
- if ($self->file_name_is_absolute($name)) {
- $abs = $name;
- } else {
- $abs = $self->catfile($dir, $name);
- }
- print "Checking $abs for $name\n" if ($trace >= 2);
- next unless $tryabs = $self->maybe_command($abs);
- print "Substituting $tryabs instead of $abs\n"
- if ($trace >= 2 and $tryabs ne $abs);
- $abs = $tryabs;
- if (defined $ver) {
- print "Executing $abs\n" if ($trace >= 2);
- if (`$abs -e 'require $ver; print "VER_OK\n" ' 2>&1` =~ /VER_OK/) {
- print "Using $abs\n" if $trace;
- return $abs;
- }
- } else { # Do not look for perl
- return $abs;
- }
- }
- }
-}
-
-=item perl_script (override)
-
-If name passed in doesn't specify a readable file, appends F<.com> or
-F<.pl> and tries again, since it's customary to have file types on all files
-under VMS.
-
-=cut
-
-sub perl_script {
- my($self,$file) = @_;
- return $file if -r $file && ! -d _;
- return "$file.com" if -r "$file.com";
- return "$file.pl" if -r "$file.pl";
- return '';
-}
-
-=item file_name_is_absolute (override)
-
-Checks for VMS directory spec as well as Unix separators.
-
-=cut
-
-sub file_name_is_absolute {
- my($self,$file) = @_;
- # If it's a logical name, expand it.
- $file = $ENV{$file} while $file =~ /^[\w\$\-]+$/ and $ENV{$file};
- $file =~ m!^/! or $file =~ m![<\[][^.\-\]>]! or $file =~ /:[^<\[]/;
-}
-
-=item replace_manpage_separator
-
-Use as separator a character which is legal in a VMS-syntax file name.
-
-=cut
-
-sub replace_manpage_separator {
- my($self,$man) = @_;
- $man = unixify($man);
- $man =~ s#/+#__#g;
- $man;
-}
-
-=item init_others (override)
-
-Provide VMS-specific forms of various utility commands, then hand
-off to the default MM_Unix method.
-
-=cut
-
-sub init_others {
- my($self) = @_;
-
- $self->{NOOP} = 'Continue';
- $self->{FIRST_MAKEFILE} ||= 'Descrip.MMS';
- $self->{MAKE_APERL_FILE} ||= 'Makeaperl.MMS';
- $self->{MAKEFILE} ||= $self->{FIRST_MAKEFILE};
- $self->{NOECHO} ||= '@ ';
- $self->{RM_F} = '$(PERL) -e "foreach (@ARGV) { 1 while ( -d $_ ? rmdir $_ : unlink $_)}"';
- $self->{RM_RF} = '$(PERL) "-I$(PERL_LIB)" -e "use File::Path; @dirs = map(VMS::Filespec::unixify($_),@ARGV); rmtree(\@dirs,0,0)"';
- $self->{TOUCH} = '$(PERL) -e "$t=time; foreach (@ARGV) { -e $_ ? utime($t,$t,@ARGV) : (open(F,qq(>$_)),close F)}"';
- $self->{CHMOD} = '$(PERL) -e "chmod @ARGV"'; # expect Unix syntax from MakeMaker
- $self->{CP} = 'Copy/NoConfirm';
- $self->{MV} = 'Rename/NoConfirm';
- $self->{UMASK_NULL} = '! ';
- &ExtUtils::MM_Unix::init_others;
-}
-
-=item constants (override)
-
-Fixes up numerous file and directory macros to insure VMS syntax
-regardless of input syntax. Also adds a few VMS-specific macros
-and makes lists of files comma-separated.
-
-=cut
-
-sub constants {
- my($self) = @_;
- my(@m,$def,$macro);
-
- # Be kind about case for pollution
- for (@ARGV) { $_ = uc($_) if /POLLUTE/i; }
-
- if ($self->{DEFINE} ne '') {
- my(@terms) = split(/\s+/,$self->{DEFINE});
- my(@defs,@udefs);
- foreach $def (@terms) {
- next unless $def;
- my $targ = \@defs;
- if ($def =~ s/^-([DU])//) { # If it was a Unix-style definition
- if ($1 eq 'U') { $targ = \@udefs; }
- $def =~ s/='(.*)'$/=$1/; # then remove shell-protection ''
- $def =~ s/^'(.*)'$/$1/; # from entire term or argument
- }
- if ($def =~ /=/) {
- $def =~ s/"/""/g; # Protect existing " from DCL
- $def = qq["$def"]; # and quote to prevent parsing of =
- }
- push @$targ, $def;
- }
- $self->{DEFINE} = '';
- if (@defs) { $self->{DEFINE} = '/Define=(' . join(',',@defs) . ')'; }
- if (@udefs) { $self->{DEFINE} .= '/Undef=(' . join(',',@udefs) . ')'; }
- }
-
- if ($self->{OBJECT} =~ /\s/) {
- $self->{OBJECT} =~ s/(\\)?\n+\s+/ /g;
- $self->{OBJECT} = $self->wraplist(map($self->fixpath($_,0),split(/,?\s+/,$self->{OBJECT})));
- }
- $self->{LDFROM} = $self->wraplist(map($self->fixpath($_,0),split(/,?\s+/,$self->{LDFROM})));
-
-
- # Fix up directory specs
- $self->{ROOTEXT} = $self->{ROOTEXT} ? $self->fixpath($self->{ROOTEXT},1)
- : '[]';
- foreach $macro ( qw [
- INST_BIN INST_SCRIPT INST_LIB INST_ARCHLIB INST_EXE INSTALLPRIVLIB
- INSTALLARCHLIB INSTALLSCRIPT INSTALLBIN PERL_LIB PERL_ARCHLIB
- PERL_INC PERL_SRC FULLEXT INST_MAN1DIR INSTALLMAN1DIR
- INST_MAN3DIR INSTALLMAN3DIR INSTALLSITELIB INSTALLSITEARCH
- SITELIBEXP SITEARCHEXP ] ) {
- next unless defined $self->{$macro};
- $self->{$macro} = $self->fixpath($self->{$macro},1);
- }
- $self->{PERL_VMS} = $self->catdir($self->{PERL_SRC},q(VMS))
- if ($self->{PERL_SRC});
-
-
-
- # Fix up file specs
- foreach $macro ( qw[LIBPERL_A FIRST_MAKEFILE MAKE_APERL_FILE MYEXTLIB] ) {
- next unless defined $self->{$macro};
- $self->{$macro} = $self->fixpath($self->{$macro},0);
- }
-
- foreach $macro (qw/
- AR_STATIC_ARGS NAME DISTNAME NAME_SYM VERSION VERSION_SYM XS_VERSION
- INST_BIN INST_EXE INST_LIB INST_ARCHLIB INST_SCRIPT PREFIX
- INSTALLDIRS INSTALLPRIVLIB INSTALLARCHLIB INSTALLSITELIB
- INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB
- PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB
- FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC PERL_VMS
- PERL_INC PERL FULLPERL
- / ) {
- next unless defined $self->{$macro};
- push @m, "$macro = $self->{$macro}\n";
- }
-
-
- push @m, q[
-VERSION_MACRO = VERSION
-DEFINE_VERSION = "$(VERSION_MACRO)=""$(VERSION)"""
-XS_VERSION_MACRO = XS_VERSION
-XS_DEFINE_VERSION = "$(XS_VERSION_MACRO)=""$(XS_VERSION)"""
-
-MAKEMAKER = ],$self->catfile($self->{PERL_LIB},'ExtUtils','MakeMaker.pm'),qq[
-MM_VERSION = $ExtUtils::MakeMaker::VERSION
-MM_REVISION = $ExtUtils::MakeMaker::Revision
-MM_VMS_REVISION = $ExtUtils::MM_VMS::Revision
-
-# FULLEXT = Pathname for extension directory (eg DBD/Oracle).
-# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT.
-# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
-# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
-];
-
- for $tmp (qw/
- FULLEXT VERSION_FROM OBJECT LDFROM
- / ) {
- next unless defined $self->{$tmp};
- push @m, "$tmp = ",$self->fixpath($self->{$tmp},0),"\n";
- }
-
- for $tmp (qw/
- BASEEXT PARENT_NAME DLBASE INC DEFINE LINKTYPE
- / ) {
- next unless defined $self->{$tmp};
- push @m, "$tmp = $self->{$tmp}\n";
- }
-
- for $tmp (qw/ XS MAN1PODS MAN3PODS PM /) {
- next unless defined $self->{$tmp};
- my(%tmp,$key);
- for $key (keys %{$self->{$tmp}}) {
- $tmp{$self->fixpath($key,0)} = $self->fixpath($self->{$tmp}{$key},0);
- }
- $self->{$tmp} = \%tmp;
- }
-
- for $tmp (qw/ C O_FILES H /) {
- next unless defined $self->{$tmp};
- my(@tmp,$val);
- for $val (@{$self->{$tmp}}) {
- push(@tmp,$self->fixpath($val,0));
- }
- $self->{$tmp} = \@tmp;
- }
-
- push @m,'
-
-# Handy lists of source code files:
-XS_FILES = ',$self->wraplist(sort keys %{$self->{XS}}),'
-C_FILES = ',$self->wraplist(@{$self->{C}}),'
-O_FILES = ',$self->wraplist(@{$self->{O_FILES}} ),'
-H_FILES = ',$self->wraplist(@{$self->{H}}),'
-MAN1PODS = ',$self->wraplist(sort keys %{$self->{MAN1PODS}}),'
-MAN3PODS = ',$self->wraplist(sort keys %{$self->{MAN3PODS}}),'
-
-';
-
- for $tmp (qw/
- INST_MAN1DIR INSTALLMAN1DIR MAN1EXT INST_MAN3DIR INSTALLMAN3DIR MAN3EXT
- /) {
- next unless defined $self->{$tmp};
- push @m, "$tmp = $self->{$tmp}\n";
- }
-
-push @m,"
-.SUFFIXES :
-.SUFFIXES : \$(OBJ_EXT) .c .cpp .cxx .xs
-
-# Here is the Config.pm that we are using/depend on
-CONFIGDEP = \$(PERL_ARCHLIB)Config.pm, \$(PERL_INC)config.h \$(VERSION_FROM)
-
-# Where to put things:
-INST_LIBDIR = $self->{INST_LIBDIR}
-INST_ARCHLIBDIR = $self->{INST_ARCHLIBDIR}
-
-INST_AUTODIR = $self->{INST_AUTODIR}
-INST_ARCHAUTODIR = $self->{INST_ARCHAUTODIR}
-";
-
- if ($self->has_link_code()) {
- push @m,'
-INST_STATIC = $(INST_ARCHAUTODIR)$(BASEEXT)$(LIB_EXT)
-INST_DYNAMIC = $(INST_ARCHAUTODIR)$(DLBASE).$(DLEXT)
-INST_BOOT = $(INST_ARCHAUTODIR)$(BASEEXT).bs
-';
- } else {
- my $shr = $Config{'dbgprefix'} . 'PERLSHR';
- push @m,'
-INST_STATIC =
-INST_DYNAMIC =
-INST_BOOT =
-EXPORT_LIST = $(BASEEXT).opt
-PERL_ARCHIVE = ',($ENV{$shr} ? $ENV{$shr} : "Sys\$Share:$shr.$Config{'dlext'}"),'
-';
- }
-
- $self->{TO_INST_PM} = [ sort keys %{$self->{PM}} ];
- $self->{PM_TO_BLIB} = [ %{$self->{PM}} ];
- push @m,'
-TO_INST_PM = ',$self->wraplist(@{$self->{TO_INST_PM}}),'
-
-PM_TO_BLIB = ',$self->wraplist(@{$self->{PM_TO_BLIB}}),'
-';
-
- join('',@m);
-}
-
-=item cflags (override)
-
-Bypass shell script and produce qualifiers for CC directly (but warn
-user if a shell script for this extension exists). Fold multiple
-/Defines into one, since some C compilers pay attention to only one
-instance of this qualifier on the command line.
-
-=cut
-
-sub cflags {
- my($self,$libperl) = @_;
- my($quals) = $self->{CCFLAGS} || $Config{'ccflags'};
- my($definestr,$undefstr,$flagoptstr) = ('','','');
- my($incstr) = '/Include=($(PERL_INC)';
- my($name,$sys,@m);
-
- ( $name = $self->{NAME} . "_cflags" ) =~ s/:/_/g ;
- print STDOUT "Unix shell script ".$Config{"$self->{'BASEEXT'}_cflags"}.
- " required to modify CC command for $self->{'BASEEXT'}\n"
- if ($Config{$name});
-
- if ($quals =~ / -[DIUOg]/) {
- while ($quals =~ / -([Og])(\d*)\b/) {
- my($type,$lvl) = ($1,$2);
- $quals =~ s/ -$type$lvl\b\s*//;
- if ($type eq 'g') { $flagoptstr = '/NoOptimize'; }
- else { $flagoptstr = '/Optimize' . (defined($lvl) ? "=$lvl" : ''); }
- }
- while ($quals =~ / -([DIU])(\S+)/) {
- my($type,$def) = ($1,$2);
- $quals =~ s/ -$type$def\s*//;
- $def =~ s/"/""/g;
- if ($type eq 'D') { $definestr .= qq["$def",]; }
- elsif ($type eq 'I') { $incstr .= ',' . $self->fixpath($def,1); }
- else { $undefstr .= qq["$def",]; }
- }
- }
- if (length $quals and $quals !~ m!/!) {
- warn "MM_VMS: Ignoring unrecognized CCFLAGS elements \"$quals\"\n";
- $quals = '';
- }
- $definestr .= q["PERL_POLLUTE",] if $self->{POLLUTE};
- if (length $definestr) { chop($definestr); $quals .= "/Define=($definestr)"; }
- if (length $undefstr) { chop($undefstr); $quals .= "/Undef=($undefstr)"; }
- # Deal with $self->{DEFINE} here since some C compilers pay attention
- # to only one /Define clause on command line, so we have to
- # conflate the ones from $Config{'ccflags'} and $self->{DEFINE}
- # ($self->{DEFINE} has already been VMSified in constants() above)
- if ($self->{DEFINE}) { $quals .= $self->{DEFINE}; }
- for $type (qw(Def Undef)) {
- my(@terms);
- while ($quals =~ m:/${type}i?n?e?=([^/]+):ig) {
- my $term = $1;
- $term =~ s:^\((.+)\)$:$1:;
- push @terms, $term;
- }
- if ($type eq 'Def') {
- push @terms, qw[ $(DEFINE_VERSION) $(XS_DEFINE_VERSION) ];
- }
- if (@terms) {
- $quals =~ s:/${type}i?n?e?=[^/]+::ig;
- $quals .= "/${type}ine=(" . join(',',@terms) . ')';
- }
- }
-
- $libperl or $libperl = $self->{LIBPERL_A} || "libperl.olb";
-
- # Likewise with $self->{INC} and /Include
- if ($self->{'INC'}) {
- my(@includes) = split(/\s+/,$self->{INC});
- foreach (@includes) {
- s/^-I//;
- $incstr .= ','.$self->fixpath($_,1);
- }
- }
- $quals .= "$incstr)";
-# $quals =~ s/,,/,/g; $quals =~ s/\(,/(/g;
- $self->{CCFLAGS} = $quals;
-
- $self->{OPTIMIZE} ||= $flagoptstr || $Config{'optimize'};
- if ($self->{OPTIMIZE} !~ m!/!) {
- if ($self->{OPTIMIZE} =~ m!-g!) { $self->{OPTIMIZE} = '/Debug/NoOptimize' }
- elsif ($self->{OPTIMIZE} =~ /-O(\d*)/) {
- $self->{OPTIMIZE} = '/Optimize' . (defined($1) ? "=$1" : '');
- }
- else {
- warn "MM_VMS: Can't parse OPTIMIZE \"$self->{OPTIMIZE}\"; using default\n" if length $self->{OPTIMIZE};
- $self->{OPTIMIZE} = '/Optimize';
- }
- }
-
- return $self->{CFLAGS} = qq{
-CCFLAGS = $self->{CCFLAGS}
-OPTIMIZE = $self->{OPTIMIZE}
-PERLTYPE = $self->{PERLTYPE}
-SPLIT =
-LARGE =
-};
-}
-
-=item const_cccmd (override)
-
-Adds directives to point C preprocessor to the right place when
-handling #include E<lt>sys/foo.hE<gt> directives. Also constructs CC
-command line a bit differently than MM_Unix method.
-
-=cut
-
-sub const_cccmd {
- my($self,$libperl) = @_;
- my(@m);
-
- return $self->{CONST_CCCMD} if $self->{CONST_CCCMD};
- return '' unless $self->needs_linking();
- if ($Config{'vms_cc_type'} eq 'gcc') {
- push @m,'
-.FIRST
- ',$self->{NOECHO},'If F$TrnLnm("Sys").eqs."" Then Define/NoLog SYS GNU_CC_Include:[VMS]';
- }
- elsif ($Config{'vms_cc_type'} eq 'vaxc') {
- push @m,'
-.FIRST
- ',$self->{NOECHO},'If F$TrnLnm("Sys").eqs."" .and. F$TrnLnm("VAXC$Include").eqs."" Then Define/NoLog SYS Sys$Library
- ',$self->{NOECHO},'If F$TrnLnm("Sys").eqs."" .and. F$TrnLnm("VAXC$Include").nes."" Then Define/NoLog SYS VAXC$Include';
- }
- else {
- push @m,'
-.FIRST
- ',$self->{NOECHO},'If F$TrnLnm("Sys").eqs."" .and. F$TrnLnm("DECC$System_Include").eqs."" Then Define/NoLog SYS ',
- ($Config{'arch'} eq 'VMS_AXP' ? 'Sys$Library' : 'DECC$Library_Include'),'
- ',$self->{NOECHO},'If F$TrnLnm("Sys").eqs."" .and. F$TrnLnm("DECC$System_Include").nes."" Then Define/NoLog SYS DECC$System_Include';
- }
-
- push(@m, "\n\nCCCMD = $Config{'cc'} \$(CCFLAGS)\$(OPTIMIZE)\n");
-
- $self->{CONST_CCCMD} = join('',@m);
-}
-
-=item pm_to_blib (override)
-
-DCL I<still> accepts a maximum of 255 characters on a command
-line, so we write the (potentially) long list of file names
-to a temp file, then persuade Perl to read it instead of the
-command line to find args.
-
-=cut
-
-sub pm_to_blib {
- my($self) = @_;
- my($line,$from,$to,@m);
- my($autodir) = $self->catdir('$(INST_LIB)','auto');
- my(@files) = @{$self->{PM_TO_BLIB}};
-
- push @m, q{
-
-# Dummy target to match Unix target name; we use pm_to_blib.ts as
-# timestamp file to avoid repeated invocations under VMS
-pm_to_blib : pm_to_blib.ts
- $(NOECHO) $(NOOP)
-
-# As always, keep under DCL's 255-char limit
-pm_to_blib.ts : $(TO_INST_PM)
- $(NOECHO) $(PERL) -e "print '},shift(@files),q{ },shift(@files),q{'" >.MM_tmp
-};
-
- $line = ''; # avoid uninitialized var warning
- while ($from = shift(@files),$to = shift(@files)) {
- $line .= " $from $to";
- if (length($line) > 128) {
- push(@m,"\t\$(NOECHO) \$(PERL) -e \"print '$line'\" >>.MM_tmp\n");
- $line = '';
- }
- }
- push(@m,"\t\$(NOECHO) \$(PERL) -e \"print '$line'\" >>.MM_tmp\n") if $line;
-
- push(@m,q[ $(PERL) "-I$(PERL_LIB)" "-MExtUtils::Install" -e "pm_to_blib({split(' ',<STDIN>)},'].$autodir.q[','$(PM_FILTER)')" <.MM_tmp]);
- push(@m,qq[
- \$(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;
- \$(NOECHO) \$(TOUCH) pm_to_blib.ts
-]);
-
- join('',@m);
-}
-
-=item tool_autosplit (override)
-
-Use VMS-style quoting on command line.
-
-=cut
-
-sub tool_autosplit{
- my($self, %attribs) = @_;
- my($asl) = "";
- $asl = "\$AutoSplit::Maxlen=$attribs{MAXLEN};" if $attribs{MAXLEN};
- q{
-# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
-AUTOSPLITFILE = $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use AutoSplit;}.$asl.q{ AutoSplit::autosplit($ARGV[0], $ARGV[1], 0, 1, 1) ;"
-};
-}
-
-=item tool_sxubpp (override)
-
-Use VMS-style quoting on xsubpp command line.
-
-=cut
-
-sub tool_xsubpp {
- my($self) = @_;
- return '' unless $self->needs_linking;
- my($xsdir) = $self->catdir($self->{PERL_LIB},'ExtUtils');
- # drop back to old location if xsubpp is not in new location yet
- $xsdir = $self->catdir($self->{PERL_SRC},'ext') unless (-f $self->catfile($xsdir,'xsubpp'));
- my(@tmdeps) = '$(XSUBPPDIR)typemap';
- if( $self->{TYPEMAPS} ){
- my $typemap;
- foreach $typemap (@{$self->{TYPEMAPS}}){
- if( ! -f $typemap ){
- warn "Typemap $typemap not found.\n";
- }
- else{
- push(@tmdeps, $self->fixpath($typemap,0));
- }
- }
- }
- push(@tmdeps, "typemap") if -f "typemap";
- my(@tmargs) = map("-typemap $_", @tmdeps);
- if( exists $self->{XSOPT} ){
- unshift( @tmargs, $self->{XSOPT} );
- }
-
- if ($Config{'ldflags'} &&
- $Config{'ldflags'} =~ m!/Debug!i &&
- (!exists($self->{XSOPT}) || $self->{XSOPT} !~ /linenumbers/)) {
- unshift(@tmargs,'-nolinenumbers');
- }
- my $xsubpp_version = $self->xsubpp_version($self->catfile($xsdir,'xsubpp'));
-
- # What are the correct thresholds for version 1 && 2 Paul?
- if ( $xsubpp_version > 1.923 ){
- $self->{XSPROTOARG} = '' unless defined $self->{XSPROTOARG};
- } else {
- if (defined $self->{XSPROTOARG} && $self->{XSPROTOARG} =~ /\-prototypes/) {
- print STDOUT qq{Warning: This extension wants to pass the switch "-prototypes" to xsubpp.
- Your version of xsubpp is $xsubpp_version and cannot handle this.
- Please upgrade to a more recent version of xsubpp.
-};
- } else {
- $self->{XSPROTOARG} = "";
- }
- }
-
- "
-XSUBPPDIR = $xsdir
-XSUBPP = \$(PERL) \"-I\$(PERL_ARCHLIB)\" \"-I\$(PERL_LIB)\" \$(XSUBPPDIR)xsubpp
-XSPROTOARG = $self->{XSPROTOARG}
-XSUBPPDEPS = @tmdeps
-XSUBPPARGS = @tmargs
-";
-}
-
-=item xsubpp_version (override)
-
-Test xsubpp exit status according to VMS rules ($sts & 1 ==E<gt> good)
-rather than Unix rules ($sts == 0 ==E<gt> good).
-
-=cut
-
-sub xsubpp_version
-{
- my($self,$xsubpp) = @_;
- my ($version) ;
- return '' unless $self->needs_linking;
-
- # try to figure out the version number of the xsubpp on the system
-
- # first try the -v flag, introduced in 1.921 & 2.000a2
-
- my $command = "$self->{PERL} \"-I$self->{PERL_LIB}\" $xsubpp -v";
- print "Running: $command\n" if $Verbose;
- $version = `$command` ;
- if ($?) {
- use vmsish 'status';
- warn "Running '$command' exits with status $?";
- }
- chop $version ;
-
- return $1 if $version =~ /^xsubpp version (.*)/ ;
-
- # nope, then try something else
-
- my $counter = '000';
- my ($file) = 'temp' ;
- $counter++ while -e "$file$counter"; # don't overwrite anything
- $file .= $counter;
-
- local(*F);
- open(F, ">$file") or die "Cannot open file '$file': $!\n" ;
- print F <<EOM ;
-MODULE = fred PACKAGE = fred
-
-int
-fred(a)
- int a;
-EOM
-
- close F ;
-
- $command = "$self->{PERL} $xsubpp $file";
- print "Running: $command\n" if $Verbose;
- my $text = `$command` ;
- if ($?) {
- use vmsish 'status';
- warn "Running '$command' exits with status $?";
- }
- unlink $file ;
-
- # gets 1.2 -> 1.92 and 2.000a1
- return $1 if $text =~ /automatically by xsubpp version ([\S]+)\s*/ ;
-
- # it is either 1.0 or 1.1
- return 1.1 if $text =~ /^Warning: ignored semicolon/ ;
-
- # none of the above, so 1.0
- return "1.0" ;
-}
-
-=item tools_other (override)
-
-Adds a few MM[SK] macros, and shortens some the installatin commands,
-in order to stay under DCL's 255-character limit. Also changes
-EQUALIZE_TIMESTAMP to set revision date of target file to one second
-later than source file, since MMK interprets precisely equal revision
-dates for a source and target file as a sign that the target needs
-to be updated.
-
-=cut
-
-sub tools_other {
- my($self) = @_;
- qq!
-# Assumes \$(MMS) invokes MMS or MMK
-# (It is assumed in some cases later that the default makefile name
-# (Descrip.MMS for MM[SK]) is used.)
-USEMAKEFILE = /Descrip=
-USEMACROS = /Macro=(
-MACROEND = )
-MAKEFILE = Descrip.MMS
-SHELL = Posix
-TOUCH = $self->{TOUCH}
-CHMOD = $self->{CHMOD}
-CP = $self->{CP}
-MV = $self->{MV}
-RM_F = $self->{RM_F}
-RM_RF = $self->{RM_RF}
-SAY = Write Sys\$Output
-UMASK_NULL = $self->{UMASK_NULL}
-NOOP = $self->{NOOP}
-NOECHO = $self->{NOECHO}
-MKPATH = Create/Directory
-EQUALIZE_TIMESTAMP = \$(PERL) -we "open F,qq{>\$ARGV[1]};close F;utime(0,(stat(\$ARGV[0]))[9]+1,\$ARGV[1])"
-!. ($self->{PARENT} ? '' :
-qq!WARN_IF_OLD_PACKLIST = \$(PERL) -e "if (-f \$ARGV[0]){print qq[WARNING: Old package found (\$ARGV[0]); please check for collisions\\n]}"
-MOD_INSTALL = \$(PERL) "-I\$(PERL_LIB)" "-MExtUtils::Install" -e "install({split(' ',<STDIN>)},1);"
-DOC_INSTALL = \$(PERL) -e "\@ARGV=split(/\\|/,<STDIN>);print '=head2 ',scalar(localtime),': C<',shift,qq[>\\n\\n=over 4\\n\\n];while(\$key=shift && \$val=shift){print qq[=item *\\n\\nC<\$key: \$val>\\n\\n];}print qq[=back\\n\\n]"
-UNINSTALL = \$(PERL) "-I\$(PERL_LIB)" "-MExtUtils::Install" -e "uninstall(\$ARGV[0],1,1);"
-!);
-}
-
-=item dist (override)
-
-Provide VMSish defaults for some values, then hand off to
-default MM_Unix method.
-
-=cut
-
-sub dist {
- my($self, %attribs) = @_;
- $attribs{VERSION} ||= $self->{VERSION_SYM};
- $attribs{NAME} ||= $self->{DISTNAME};
- $attribs{ZIPFLAGS} ||= '-Vu';
- $attribs{COMPRESS} ||= 'gzip';
- $attribs{SUFFIX} ||= '-gz';
- $attribs{SHAR} ||= 'vms_share';
- $attribs{DIST_DEFAULT} ||= 'zipdist';
-
- # Sanitize these for use in $(DISTVNAME) filespec
- $attribs{VERSION} =~ s/[^\w\$]/_/g;
- $attribs{NAME} =~ s/[^\w\$]/-/g;
-
- return ExtUtils::MM_Unix::dist($self,%attribs);
-}
-
-=item c_o (override)
-
-Use VMS syntax on command line. In particular, $(DEFINE) and
-$(PERL_INC) have been pulled into $(CCCMD). Also use MM[SK] macros.
-
-=cut
-
-sub c_o {
- my($self) = @_;
- return '' unless $self->needs_linking();
- '
-.c$(OBJ_EXT) :
- $(CCCMD) $(CCCDLFLAGS) $(MMS$TARGET_NAME).c
-
-.cpp$(OBJ_EXT) :
- $(CCCMD) $(CCCDLFLAGS) $(MMS$TARGET_NAME).cpp
-
-.cxx$(OBJ_EXT) :
- $(CCCMD) $(CCCDLFLAGS) $(MMS$TARGET_NAME).cxx
-
-';
-}
-
-=item xs_c (override)
-
-Use MM[SK] macros.
-
-=cut
-
-sub xs_c {
- my($self) = @_;
- return '' unless $self->needs_linking();
- '
-.xs.c :
- $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $(MMS$TARGET_NAME).xs >$(MMS$TARGET)
-';
-}
-
-=item xs_o (override)
-
-Use MM[SK] macros, and VMS command line for C compiler.
-
-=cut
-
-sub xs_o { # many makes are too dumb to use xs_c then c_o
- my($self) = @_;
- return '' unless $self->needs_linking();
- '
-.xs$(OBJ_EXT) :
- $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $(MMS$TARGET_NAME).xs >$(MMS$TARGET_NAME).c
- $(CCCMD) $(CCCDLFLAGS) $(MMS$TARGET_NAME).c
-';
-}
-
-=item top_targets (override)
-
-Use VMS quoting on command line for Version_check.
-
-=cut
-
-sub top_targets {
- my($self) = shift;
- my(@m);
- push @m, '
-all :: pure_all manifypods
- $(NOECHO) $(NOOP)
-
-pure_all :: config pm_to_blib subdirs linkext
- $(NOECHO) $(NOOP)
-
-subdirs :: $(MYEXTLIB)
- $(NOECHO) $(NOOP)
-
-config :: $(MAKEFILE) $(INST_LIBDIR).exists
- $(NOECHO) $(NOOP)
-
-config :: $(INST_ARCHAUTODIR).exists
- $(NOECHO) $(NOOP)
-
-config :: $(INST_AUTODIR).exists
- $(NOECHO) $(NOOP)
-';
-
- push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
- if (%{$self->{MAN1PODS}}) {
- push @m, q[
-config :: $(INST_MAN1DIR).exists
- $(NOECHO) $(NOOP)
-];
- push @m, $self->dir_target(qw[$(INST_MAN1DIR)]);
- }
- if (%{$self->{MAN3PODS}}) {
- push @m, q[
-config :: $(INST_MAN3DIR).exists
- $(NOECHO) $(NOOP)
-];
- push @m, $self->dir_target(qw[$(INST_MAN3DIR)]);
- }
-
- push @m, '
-$(O_FILES) : $(H_FILES)
-' if @{$self->{O_FILES} || []} && @{$self->{H} || []};
-
- push @m, q{
-help :
- perldoc ExtUtils::MakeMaker
-};
-
- push @m, q{
-Version_check :
- $(NOECHO) $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -
- "-MExtUtils::MakeMaker=Version_check" -e "&Version_check('$(MM_VERSION)')"
-};
-
- join('',@m);
-}
-
-=item dlsyms (override)
-
-Create VMS linker options files specifying universal symbols for this
-extension's shareable image, and listing other shareable images or
-libraries to which it should be linked.
-
-=cut
-
-sub dlsyms {
- my($self,%attribs) = @_;
-
- return '' unless $self->needs_linking();
-
- my($funcs) = $attribs{DL_FUNCS} || $self->{DL_FUNCS} || {};
- my($vars) = $attribs{DL_VARS} || $self->{DL_VARS} || [];
- my($funclist) = $attribs{FUNCLIST} || $self->{FUNCLIST} || [];
- my(@m);
-
- unless ($self->{SKIPHASH}{'dynamic'}) {
- push(@m,'
-dynamic :: $(INST_ARCHAUTODIR)$(BASEEXT).opt
- $(NOECHO) $(NOOP)
-');
- }
-
- push(@m,'
-static :: $(INST_ARCHAUTODIR)$(BASEEXT).opt
- $(NOECHO) $(NOOP)
-') unless $self->{SKIPHASH}{'static'};
-
- push @m,'
-$(INST_ARCHAUTODIR)$(BASEEXT).opt : $(BASEEXT).opt
- $(CP) $(MMS$SOURCE) $(MMS$TARGET)
-
-$(BASEEXT).opt : Makefile.PL
- $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Mksymlists;" -
- ',qq[-e "Mksymlists('NAME' => '$self->{NAME}', 'DL_FUNCS' => ],
- neatvalue($funcs),q[, 'DL_VARS' => ],neatvalue($vars),
- q[, 'FUNCLIST' => ],neatvalue($funclist),qq[)"\n];
-
- push @m, ' $(PERL) -e "print ""$(INST_STATIC)/Include=';
- if ($self->{OBJECT} =~ /\bBASEEXT\b/ or
- $self->{OBJECT} =~ /\b$self->{BASEEXT}\b/i) {
- push @m, ($Config{d_vms_case_sensitive_symbols}
- ? uc($self->{BASEEXT}) :'$(BASEEXT)');
- }
- else { # We don't have a "main" object file, so pull 'em all in
- # Upcase module names if linker is being case-sensitive
- my($upcase) = $Config{d_vms_case_sensitive_symbols};
- my(@omods) = map { s/\.[^.]*$//; # Trim off file type
- s[\$\(\w+_EXT\)][]; # even as a macro
- s/.*[:>\/\]]//; # Trim off dir spec
- $upcase ? uc($_) : $_;
- } split ' ', $self->eliminate_macros($self->{OBJECT});
- my($tmp,@lines,$elt) = '';
- $tmp = shift @omods;
- foreach $elt (@omods) {
- $tmp .= ",$elt";
- if (length($tmp) > 80) { push @lines, $tmp; $tmp = ''; }
- }
- push @lines, $tmp;
- push @m, '(', join( qq[, -\\n\\t"";" >>\$(MMS\$TARGET)\n\t\$(PERL) -e "print ""], @lines),')';
- }
- push @m, '\n$(INST_STATIC)/Library\n"";" >>$(MMS$TARGET)',"\n";
-
- if (length $self->{LDLOADLIBS}) {
- my($lib); my($line) = '';
- foreach $lib (split ' ', $self->{LDLOADLIBS}) {
- $lib =~ s%\$%\\\$%g; # Escape '$' in VMS filespecs
- if (length($line) + length($lib) > 160) {
- push @m, "\t\$(PERL) -e \"print qq{$line}\" >>\$(MMS\$TARGET)\n";
- $line = $lib . '\n';
- }
- else { $line .= $lib . '\n'; }
- }
- push @m, "\t\$(PERL) -e \"print qq{$line}\" >>\$(MMS\$TARGET)\n" if $line;
- }
-
- join('',@m);
-
-}
-
-=item dynamic_lib (override)
-
-Use VMS Link command.
-
-=cut
-
-sub dynamic_lib {
- my($self, %attribs) = @_;
- return '' unless $self->needs_linking(); #might be because of a subdir
-
- return '' unless $self->has_link_code();
-
- my($otherldflags) = $attribs{OTHERLDFLAGS} || "";
- my($inst_dynamic_dep) = $attribs{INST_DYNAMIC_DEP} || "";
- my $shr = $Config{'dbgprefix'} . 'PerlShr';
- my(@m);
- push @m,"
-
-OTHERLDFLAGS = $otherldflags
-INST_DYNAMIC_DEP = $inst_dynamic_dep
-
-";
- push @m, '
-$(INST_DYNAMIC) : $(INST_STATIC) $(PERL_INC)perlshr_attr.opt $(INST_ARCHAUTODIR).exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(INST_DYNAMIC_DEP)
- $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
- If F$TrnLNm("',$shr,'").eqs."" Then Define/NoLog/User ',"$shr Sys\$Share:$shr.$Config{'dlext'}",'
- Link $(LDFLAGS) /Shareable=$(MMS$TARGET)$(OTHERLDFLAGS) $(BASEEXT).opt/Option,$(PERL_INC)perlshr_attr.opt/Option
-';
-
- push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
- join('',@m);
-}
-
-=item dynamic_bs (override)
-
-Use VMS-style quoting on Mkbootstrap command line.
-
-=cut
-
-sub dynamic_bs {
- my($self, %attribs) = @_;
- return '
-BOOTSTRAP =
-' unless $self->has_link_code();
- '
-BOOTSTRAP = '."$self->{BASEEXT}.bs".'
-
-# As MakeMaker mkbootstrap might not write a file (if none is required)
-# we use touch to prevent make continually trying to remake it.
-# The DynaLoader only reads a non-empty file.
-$(BOOTSTRAP) : $(MAKEFILE) '."$self->{BOOTDEP}".' $(INST_ARCHAUTODIR).exists
- $(NOECHO) $(SAY) "Running mkbootstrap for $(NAME) ($(BSLOADLIBS))"
- $(NOECHO) $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -
- -e "use ExtUtils::Mkbootstrap; Mkbootstrap(\'$(BASEEXT)\',\'$(BSLOADLIBS)\');"
- $(NOECHO) $(TOUCH) $(MMS$TARGET)
-
-$(INST_BOOT) : $(BOOTSTRAP) $(INST_ARCHAUTODIR).exists
- $(NOECHO) $(RM_RF) $(INST_BOOT)
- - $(CP) $(BOOTSTRAP) $(INST_BOOT)
-';
-}
-
-=item static_lib (override)
-
-Use VMS commands to manipulate object library.
-
-=cut
-
-sub static_lib {
- my($self) = @_;
- return '' unless $self->needs_linking();
-
- return '
-$(INST_STATIC) :
- $(NOECHO) $(NOOP)
-' unless ($self->{OBJECT} or @{$self->{C} || []} or $self->{MYEXTLIB});
-
- my(@m,$lib);
- push @m,'
-# Rely on suffix rule for update action
-$(OBJECT) : $(INST_ARCHAUTODIR).exists
-
-$(INST_STATIC) : $(OBJECT) $(MYEXTLIB)
-';
- # If this extension has it's own library (eg SDBM_File)
- # then copy that to $(INST_STATIC) and add $(OBJECT) into it.
- push(@m, "\t",'$(CP) $(MYEXTLIB) $(MMS$TARGET)',"\n") if $self->{MYEXTLIB};
-
- push(@m,"\t",'If F$Search("$(MMS$TARGET)").eqs."" Then Library/Object/Create $(MMS$TARGET)',"\n");
-
- # if there was a library to copy, then we can't use MMS$SOURCE_LIST,
- # 'cause it's a library and you can't stick them in other libraries.
- # In that case, we use $OBJECT instead and hope for the best
- if ($self->{MYEXTLIB}) {
- push(@m,"\t",'Library/Object/Replace $(MMS$TARGET) $(OBJECT)',"\n");
- } else {
- push(@m,"\t",'Library/Object/Replace $(MMS$TARGET) $(MMS$SOURCE_LIST)',"\n");
- }
-
- push @m, "\t\$(NOECHO) \$(PERL) -e 1 >\$(INST_ARCHAUTODIR)extralibs.ld\n";
- foreach $lib (split ' ', $self->{EXTRALIBS}) {
- push(@m,"\t",'$(NOECHO) $(PERL) -e "print qq{',$lib,'\n}" >>$(INST_ARCHAUTODIR)extralibs.ld',"\n");
- }
- push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
- join('',@m);
-}
-
-
-=item manifypods (override)
-
-Use VMS-style quoting on command line, and VMS logical name
-to specify fallback location at build time if we can't find pod2man.
-
-=cut
-
-
-sub manifypods {
- my($self, %attribs) = @_;
- return "\nmanifypods :\n\t\$(NOECHO) \$(NOOP)\n" unless %{$self->{MAN3PODS}} or %{$self->{MAN1PODS}};
- my($dist);
- my($pod2man_exe);
- if (defined $self->{PERL_SRC}) {
- $pod2man_exe = $self->catfile($self->{PERL_SRC},'pod','pod2man');
- } else {
- $pod2man_exe = $self->catfile($Config{scriptdirexp},'pod2man');
- }
- if (not ($pod2man_exe = $self->perl_script($pod2man_exe))) {
- # No pod2man but some MAN3PODS to be installed
- print <<END;
-
-Warning: I could not locate your pod2man program. As a last choice,
- I will look for the file to which the logical name POD2MAN
- points when MMK is invoked.
-
-END
- $pod2man_exe = "pod2man";
- }
- my(@m);
- push @m,
-qq[POD2MAN_EXE = $pod2man_exe\n],
-q[POD2MAN = $(PERL) -we "%m=@ARGV;for (keys %m){" -
--e "system(""MCR $^X $(POD2MAN_EXE) $_ >$m{$_}"");}"
-];
- push @m, "\nmanifypods : \$(MAN1PODS) \$(MAN3PODS)\n";
- if (%{$self->{MAN1PODS}} || %{$self->{MAN3PODS}}) {
- my($pod);
- foreach $pod (sort keys %{$self->{MAN1PODS}}) {
- push @m, qq[\t\@- If F\$Search("\$(POD2MAN_EXE)").nes."" Then \$(POD2MAN) ];
- push @m, "$pod $self->{MAN1PODS}{$pod}\n";
- }
- foreach $pod (sort keys %{$self->{MAN3PODS}}) {
- push @m, qq[\t\@- If F\$Search("\$(POD2MAN_EXE)").nes."" Then \$(POD2MAN) ];
- push @m, "$pod $self->{MAN3PODS}{$pod}\n";
- }
- }
- join('', @m);
-}
-
-=item processPL (override)
-
-Use VMS-style quoting on command line.
-
-=cut
-
-sub processPL {
- my($self) = @_;
- return "" unless $self->{PL_FILES};
- my(@m, $plfile);
- foreach $plfile (sort keys %{$self->{PL_FILES}}) {
- my $list = ref($self->{PL_FILES}->{$plfile})
- ? $self->{PL_FILES}->{$plfile}
- : [$self->{PL_FILES}->{$plfile}];
- foreach $target (@$list) {
- my $vmsplfile = vmsify($plfile);
- my $vmsfile = vmsify($target);
- push @m, "
-all :: $vmsfile
- \$(NOECHO) \$(NOOP)
-
-$vmsfile :: $vmsplfile
-",' $(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" '," $vmsplfile $vmsfile
-";
- }
- }
- join "", @m;
-}
-
-=item installbin (override)
-
-Stay under DCL's 255 character command line limit once again by
-splitting potentially long list of files across multiple lines
-in C<realclean> target.
-
-=cut
-
-sub installbin {
- my($self) = @_;
- return '' unless $self->{EXE_FILES} && ref $self->{EXE_FILES} eq "ARRAY";
- return '' unless @{$self->{EXE_FILES}};
- my(@m, $from, $to, %fromto, @to, $line);
- my(@exefiles) = map { vmsify($_) } @{$self->{EXE_FILES}};
- for $from (@exefiles) {
- my($path) = '$(INST_SCRIPT)' . basename($from);
- local($_) = $path; # backward compatibility
- $to = $self->libscan($path);
- print "libscan($from) => '$to'\n" if ($Verbose >=2);
- $fromto{$from} = vmsify($to);
- }
- @to = values %fromto;
- push @m, "
-EXE_FILES = @exefiles
-
-all :: @to
- \$(NOECHO) \$(NOOP)
-
-realclean ::
-";
- $line = ''; #avoid unitialized var warning
- foreach $to (@to) {
- if (length($line) + length($to) > 80) {
- push @m, "\t\$(RM_F) $line\n";
- $line = $to;
- }
- else { $line .= " $to"; }
- }
- push @m, "\t\$(RM_F) $line\n\n" if $line;
-
- while (($from,$to) = each %fromto) {
- last unless defined $from;
- my $todir;
- if ($to =~ m#[/>:\]]#) { $todir = dirname($to); }
- else { ($todir = $to) =~ s/[^\)]+$//; }
- $todir = $self->fixpath($todir,1);
- push @m, "
-$to : $from \$(MAKEFILE) ${todir}.exists
- \$(CP) $from $to
-
-", $self->dir_target($todir);
- }
- join "", @m;
-}
-
-=item subdir_x (override)
-
-Use VMS commands to change default directory.
-
-=cut
-
-sub subdir_x {
- my($self, $subdir) = @_;
- my(@m,$key);
- $subdir = $self->fixpath($subdir,1);
- push @m, '
-
-subdirs ::
- olddef = F$Environment("Default")
- Set Default ',$subdir,'
- - $(MMS)$(MMSQUALIFIERS) all $(USEMACROS)$(PASTHRU)$(MACROEND)
- Set Default \'olddef\'
-';
- join('',@m);
-}
-
-=item clean (override)
-
-Split potentially long list of files across multiple commands (in
-order to stay under the magic command line limit). Also use MM[SK]
-commands for handling subdirectories.
-
-=cut
-
-sub clean {
- my($self, %attribs) = @_;
- my(@m,$dir);
- push @m, '
-# Delete temporary files but do not touch installed files. We don\'t delete
-# the Descrip.MMS here so that a later make realclean still has it to use.
-clean ::
-';
- foreach $dir (@{$self->{DIR}}) { # clean subdirectories first
- my($vmsdir) = $self->fixpath($dir,1);
- push( @m, ' If F$Search("'.$vmsdir.'$(MAKEFILE)").nes."" Then \\',"\n\t",
- '$(PERL) -e "chdir ',"'$vmsdir'",'; print `$(MMS)$(MMSQUALIFIERS) clean`;"',"\n");
- }
- push @m, ' $(RM_F) *.Map *.Dmp *.Lis *.cpp *.$(DLEXT) *$(OBJ_EXT) *$(LIB_EXT) *.Opt $(BOOTSTRAP) $(BASEEXT).bso .MM_Tmp
-';
-
- my(@otherfiles) = values %{$self->{XS}}; # .c files from *.xs files
- # Unlink realclean, $attribs{FILES} is a string here; it may contain
- # a list or a macro that expands to a list.
- if ($attribs{FILES}) {
- my($word,$key,@filist);
- if (ref $attribs{FILES} eq 'ARRAY') { @filist = @{$attribs{FILES}}; }
- else { @filist = split /\s+/, $attribs{FILES}; }
- foreach $word (@filist) {
- if (($key) = $word =~ m#^\$\((.*)\)$# and ref $self->{$key} eq 'ARRAY') {
- push(@otherfiles, @{$self->{$key}});
- }
- else { push(@otherfiles, $word); }
- }
- }
- push(@otherfiles, qw[ blib $(MAKE_APERL_FILE) extralibs.ld perlmain.c pm_to_blib.ts ]);
- push(@otherfiles,$self->catfile('$(INST_ARCHAUTODIR)','extralibs.all'));
- my($file,$line);
- $line = ''; #avoid unitialized var warning
- # Occasionally files are repeated several times from different sources
- { my(%of) = map { ($_,1) } @otherfiles; @otherfiles = keys %of; }
-
- foreach $file (@otherfiles) {
- $file = $self->fixpath($file);
- if (length($line) + length($file) > 80) {
- push @m, "\t\$(RM_RF) $line\n";
- $line = "$file";
- }
- else { $line .= " $file"; }
- }
- push @m, "\t\$(RM_RF) $line\n" if $line;
- push(@m, " $attribs{POSTOP}\n") if $attribs{POSTOP};
- join('', @m);
-}
-
-=item realclean (override)
-
-Guess what we're working around? Also, use MM[SK] for subdirectories.
-
-=cut
-
-sub realclean {
- my($self, %attribs) = @_;
- my(@m);
- push(@m,'
-# Delete temporary files (via clean) and also delete installed files
-realclean :: clean
-');
- foreach(@{$self->{DIR}}){
- my($vmsdir) = $self->fixpath($_,1);
- push(@m, ' If F$Search("'."$vmsdir".'$(MAKEFILE)").nes."" Then \\',"\n\t",
- '$(PERL) -e "chdir ',"'$vmsdir'",'; print `$(MMS)$(MMSQUALIFIERS) realclean`;"',"\n");
- }
- push @m,' $(RM_RF) $(INST_AUTODIR) $(INST_ARCHAUTODIR)
-';
- # We can't expand several of the MMS macros here, since they don't have
- # corresponding %$self keys (i.e. they're defined in Descrip.MMS as a
- # combination of macros). In order to stay below DCL's 255 char limit,
- # we put only 2 on a line.
- my($file,$line,$fcnt);
- my(@files) = qw{ $(MAKEFILE) $(MAKEFILE)_old };
- if ($self->has_link_code) {
- push(@files,qw{ $(INST_DYNAMIC) $(INST_STATIC) $(INST_BOOT) $(OBJECT) });
- }
- push(@files, values %{$self->{PM}});
- $line = ''; #avoid unitialized var warning
- # Occasionally files are repeated several times from different sources
- { my(%f) = map { ($_,1) } @files; @files = keys %f; }
- foreach $file (@files) {
- $file = $self->fixpath($file);
- if (length($line) + length($file) > 80 || ++$fcnt >= 2) {
- push @m, "\t\$(RM_F) $line\n";
- $line = "$file";
- $fcnt = 0;
- }
- else { $line .= " $file"; }
- }
- push @m, "\t\$(RM_F) $line\n" if $line;
- if ($attribs{FILES}) {
- my($word,$key,@filist,@allfiles);
- if (ref $attribs{FILES} eq 'ARRAY') { @filist = @{$attribs{FILES}}; }
- else { @filist = split /\s+/, $attribs{FILES}; }
- foreach $word (@filist) {
- if (($key) = $word =~ m#^\$\((.*)\)$# and ref $self->{$key} eq 'ARRAY') {
- push(@allfiles, @{$self->{$key}});
- }
- else { push(@allfiles, $word); }
- }
- $line = '';
- # Occasionally files are repeated several times from different sources
- { my(%af) = map { ($_,1) } @allfiles; @allfiles = keys %af; }
- foreach $file (@allfiles) {
- $file = $self->fixpath($file);
- if (length($line) + length($file) > 80) {
- push @m, "\t\$(RM_RF) $line\n";
- $line = "$file";
- }
- else { $line .= " $file"; }
- }
- push @m, "\t\$(RM_RF) $line\n" if $line;
- }
- push(@m, " $attribs{POSTOP}\n") if $attribs{POSTOP};
- join('', @m);
-}
-
-=item dist_basics (override)
-
-Use VMS-style quoting on command line.
-
-=cut
-
-sub dist_basics {
- my($self) = @_;
-'
-distclean :: realclean distcheck
- $(NOECHO) $(NOOP)
-
-distcheck :
- $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Manifest \'&fullcheck\'; fullcheck()"
-
-skipcheck :
- $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Manifest \'&skipcheck\'; skipcheck()"
-
-manifest :
- $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Manifest \'&mkmanifest\'; mkmanifest()"
-';
-}
-
-=item dist_core (override)
-
-Syntax for invoking F<VMS_Share> differs from that for Unix F<shar>,
-so C<shdist> target actions are VMS-specific.
-
-=cut
-
-sub dist_core {
- my($self) = @_;
-q[
-dist : $(DIST_DEFAULT)
- $(NOECHO) $(PERL) -le "print 'Warning: $m older than $vf' if -e ($vf = '$(VERSION_FROM)') && -M $vf < -M ($m = '$(MAKEFILE)')"
-
-zipdist : $(DISTVNAME).zip
- $(NOECHO) $(NOOP)
-
-tardist : $(DISTVNAME).tar$(SUFFIX)
- $(NOECHO) $(NOOP)
-
-$(DISTVNAME).zip : distdir
- $(PREOP)
- $(ZIP) "$(ZIPFLAGS)" $(MMS$TARGET) [.$(DISTVNAME)...]*.*;
- $(RM_RF) $(DISTVNAME)
- $(POSTOP)
-
-$(DISTVNAME).tar$(SUFFIX) : distdir
- $(PREOP)
- $(TO_UNIX)
- $(TAR) "$(TARFLAGS)" $(DISTVNAME).tar [.$(DISTVNAME)...]
- $(RM_RF) $(DISTVNAME)
- $(COMPRESS) $(DISTVNAME).tar
- $(POSTOP)
-
-shdist : distdir
- $(PREOP)
- $(SHAR) [.$(DISTVNAME...]*.*; $(DISTVNAME).share
- $(RM_RF) $(DISTVNAME)
- $(POSTOP)
-];
-}
-
-=item dist_dir (override)
-
-Use VMS-style quoting on command line.
-
-=cut
-
-sub dist_dir {
- my($self) = @_;
-q{
-distdir :
- $(RM_RF) $(DISTVNAME)
- $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Manifest '/mani/';" \\
- -e "manicopy(maniread(),'$(DISTVNAME)','$(DIST_CP)');"
-};
-}
-
-=item dist_test (override)
-
-Use VMS commands to change default directory, and use VMS-style
-quoting on command line.
-
-=cut
-
-sub dist_test {
- my($self) = @_;
-q{
-disttest : distdir
- startdir = F$Environment("Default")
- Set Default [.$(DISTVNAME)]
- $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" Makefile.PL
- $(MMS)$(MMSQUALIFIERS)
- $(MMS)$(MMSQUALIFIERS) test
- Set Default 'startdir'
-};
-}
-
-# --- Test and Installation Sections ---
-
-=item install (override)
-
-Work around DCL's 255 character limit several times,and use
-VMS-style command line quoting in a few cases.
-
-=cut
-
-sub install {
- my($self, %attribs) = @_;
- my(@m,@docfiles);
-
- if ($self->{EXE_FILES}) {
- my($line,$file) = ('','');
- foreach $file (@{$self->{EXE_FILES}}) {
- $line .= "$file ";
- if (length($line) > 128) {
- push(@docfiles,qq[\t\$(PERL) -e "print '$line'" >>.MM_tmp\n]);
- $line = '';
- }
- }
- push(@docfiles,qq[\t\$(PERL) -e "print '$line'" >>.MM_tmp\n]) if $line;
- }
-
- push @m, q[
-install :: all pure_install doc_install
- $(NOECHO) $(NOOP)
-
-install_perl :: all pure_perl_install doc_perl_install
- $(NOECHO) $(NOOP)
-
-install_site :: all pure_site_install doc_site_install
- $(NOECHO) $(NOOP)
-
-install_ :: install_site
- $(NOECHO) $(SAY) "INSTALLDIRS not defined, defaulting to INSTALLDIRS=site"
-
-pure_install :: pure_$(INSTALLDIRS)_install
- $(NOECHO) $(NOOP)
-
-doc_install :: doc_$(INSTALLDIRS)_install
- $(NOECHO) $(SAY) "Appending installation info to $(INSTALLARCHLIB)perllocal.pod"
-
-pure__install : pure_site_install
- $(NOECHO) $(SAY) "INSTALLDIRS not defined, defaulting to INSTALLDIRS=site"
-
-doc__install : doc_site_install
- $(NOECHO) $(SAY) "INSTALLDIRS not defined, defaulting to INSTALLDIRS=site"
-
-# This hack brought to you by DCL's 255-character command line limit
-pure_perl_install ::
- $(NOECHO) $(PERL) -e "print 'read ].$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q[ '" >.MM_tmp
- $(NOECHO) $(PERL) -e "print 'write ].$self->catfile('$(INSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q[ '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_LIB) $(INSTALLPRIVLIB) '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_ARCHLIB) $(INSTALLARCHLIB) '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_BIN) $(INSTALLBIN) '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_SCRIPT) $(INSTALLSCRIPT) '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_MAN1DIR) $(INSTALLMAN1DIR) '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_MAN3DIR) $(INSTALLMAN3DIR) '" >>.MM_tmp
- $(MOD_INSTALL) <.MM_tmp
- $(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;
- $(NOECHO) $(WARN_IF_OLD_PACKLIST) ].$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q[
-
-# Likewise
-pure_site_install ::
- $(NOECHO) $(PERL) -e "print 'read ].$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q[ '" >.MM_tmp
- $(NOECHO) $(PERL) -e "print 'write ].$self->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q[ '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_LIB) $(INSTALLSITELIB) '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_ARCHLIB) $(INSTALLSITEARCH) '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_BIN) $(INSTALLBIN) '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_SCRIPT) $(INSTALLSCRIPT) '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_MAN1DIR) $(INSTALLMAN1DIR) '" >>.MM_tmp
- $(NOECHO) $(PERL) -e "print '$(INST_MAN3DIR) $(INSTALLMAN3DIR) '" >>.MM_tmp
- $(MOD_INSTALL) <.MM_tmp
- $(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;
- $(NOECHO) $(WARN_IF_OLD_PACKLIST) ].$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q[
-
-# Ditto
-doc_perl_install ::
- $(NOECHO) $(PERL) -e "print 'Module $(NAME)|installed into|$(INSTALLPRIVLIB)|'" >.MM_tmp
- $(NOECHO) $(PERL) -e "print 'LINKTYPE|$(LINKTYPE)|VERSION|$(VERSION)|EXE_FILES|$(EXE_FILES)|'" >>.MM_tmp
-],@docfiles,
-q% $(NOECHO) $(PERL) -e "print q[@ARGV=split(/\\|/,<STDIN>);]" >.MM2_tmp
- $(NOECHO) $(PERL) -e "print q[print '=head2 ',scalar(localtime),': C<',shift,qq[>\\n\\n=over 4\\n\\n];]" >>.MM2_tmp
- $(NOECHO) $(PERL) -e "print q[while(($key=shift) && ($val=shift)) ]" >>.MM2_tmp
- $(NOECHO) $(PERL) -e "print q[{print qq[=item *\\n\\nC<$key: $val>\\n\\n];}print qq[=back\\n\\n];]" >>.MM2_tmp
- $(NOECHO) $(PERL) .MM2_tmp <.MM_tmp >>%.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q[
- $(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;,.MM2_tmp;
-
-# And again
-doc_site_install ::
- $(NOECHO) $(PERL) -e "print 'Module $(NAME)|installed into|$(INSTALLSITELIB)|'" >.MM_tmp
- $(NOECHO) $(PERL) -e "print 'LINKTYPE|$(LINKTYPE)|VERSION|$(VERSION)|EXE_FILES|$(EXE_FILES)|'" >>.MM_tmp
-],@docfiles,
-q% $(NOECHO) $(PERL) -e "print q[@ARGV=split(/\\|/,<STDIN>);]" >.MM2_tmp
- $(NOECHO) $(PERL) -e "print q[print '=head2 ',scalar(localtime),': C<',shift,qq[>\\n\\n=over 4\\n\\n];]" >>.MM2_tmp
- $(NOECHO) $(PERL) -e "print q[while(($key=shift) && ($val=shift)) ]" >>.MM2_tmp
- $(NOECHO) $(PERL) -e "print q[{print qq[=item *\\n\\nC<$key: $val>\\n\\n];}print qq[=back\\n\\n];]" >>.MM2_tmp
- $(NOECHO) $(PERL) .MM2_tmp <.MM_tmp >>%.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q[
- $(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;,.MM2_tmp;
-
-];
-
- push @m, q[
-uninstall :: uninstall_from_$(INSTALLDIRS)dirs
- $(NOECHO) $(NOOP)
-
-uninstall_from_perldirs ::
- $(NOECHO) $(UNINSTALL) ].$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q[
- $(NOECHO) $(SAY) "Uninstall is now deprecated and makes no actual changes."
- $(NOECHO) $(SAY) "Please check the list above carefully for errors, and manually remove"
- $(NOECHO) $(SAY) "the appropriate files. Sorry for the inconvenience."
-
-uninstall_from_sitedirs ::
- $(NOECHO) $(UNINSTALL) ],$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist'),"\n",q[
- $(NOECHO) $(SAY) "Uninstall is now deprecated and makes no actual changes."
- $(NOECHO) $(SAY) "Please check the list above carefully for errors, and manually remove"
- $(NOECHO) $(SAY) "the appropriate files. Sorry for the inconvenience."
-];
-
- join('',@m);
-}
-
-=item perldepend (override)
-
-Use VMS-style syntax for files; it's cheaper to just do it directly here
-than to have the MM_Unix method call C<catfile> repeatedly. Also, if
-we have to rebuild Config.pm, use MM[SK] to do it.
-
-=cut
-
-sub perldepend {
- my($self) = @_;
- my(@m);
-
- push @m, '
-$(OBJECT) : $(PERL_INC)EXTERN.h, $(PERL_INC)INTERN.h, $(PERL_INC)XSUB.h, $(PERL_INC)av.h
-$(OBJECT) : $(PERL_INC)cop.h, $(PERL_INC)cv.h, $(PERL_INC)embed.h, $(PERL_INC)form.h
-$(OBJECT) : $(PERL_INC)gv.h, $(PERL_INC)handy.h, $(PERL_INC)hv.h, $(PERL_INC)keywords.h
-$(OBJECT) : $(PERL_INC)mg.h, $(PERL_INC)op.h, $(PERL_INC)opcode.h, $(PERL_INC)patchlevel.h
-$(OBJECT) : $(PERL_INC)perl.h, $(PERL_INC)perly.h, $(PERL_INC)pp.h, $(PERL_INC)proto.h
-$(OBJECT) : $(PERL_INC)regcomp.h, $(PERL_INC)regexp.h, $(PERL_INC)scope.h, $(PERL_INC)sv.h
-$(OBJECT) : $(PERL_INC)vmsish.h, $(PERL_INC)util.h, $(PERL_INC)config.h
-$(OBJECT) : $(PERL_INC)iperlsys.h
-
-' if $self->{OBJECT};
-
- if ($self->{PERL_SRC}) {
- my(@macros);
- my($mmsquals) = '$(USEMAKEFILE)[.vms]$(MAKEFILE)';
- push(@macros,'__AXP__=1') if $Config{'arch'} eq 'VMS_AXP';
- push(@macros,'DECC=1') if $Config{'vms_cc_type'} eq 'decc';
- push(@macros,'GNUC=1') if $Config{'vms_cc_type'} eq 'gcc';
- push(@macros,'SOCKET=1') if $Config{'d_has_sockets'};
- push(@macros,qq["CC=$Config{'cc'}"]) if $Config{'cc'} =~ m!/!;
- $mmsquals .= '$(USEMACROS)' . join(',',@macros) . '$(MACROEND)' if @macros;
- push(@m,q[
-# Check for unpropagated config.sh changes. Should never happen.
-# We do NOT just update config.h because that is not sufficient.
-# An out of date config.h is not fatal but complains loudly!
-$(PERL_INC)config.h : $(PERL_SRC)config.sh
- $(NOOP)
-
-$(PERL_ARCHLIB)Config.pm : $(PERL_SRC)config.sh
- $(NOECHO) Write Sys$Error "$(PERL_ARCHLIB)Config.pm may be out of date with config.h or genconfig.pl"
- olddef = F$Environment("Default")
- Set Default $(PERL_SRC)
- $(MMS)],$mmsquals,);
- if ($self->{PERL_ARCHLIB} =~ m|\[-| && $self->{PERL_SRC} =~ m|(\[-+)|) {
- my($prefix,$target) = ($1,$self->fixpath('$(PERL_ARCHLIB)Config.pm',0));
- $target =~ s/\Q$prefix/[/;
- push(@m," $target");
- }
- else { push(@m,' $(MMS$TARGET)'); }
- push(@m,q[
- Set Default 'olddef'
-]);
- }
-
- push(@m, join(" ", map($self->fixpath($_,0),values %{$self->{XS}}))." : \$(XSUBPPDEPS)\n")
- if %{$self->{XS}};
-
- join('',@m);
-}
-
-=item makefile (override)
-
-Use VMS commands and quoting.
-
-=cut
-
-sub makefile {
- my($self) = @_;
- my(@m,@cmd);
- # We do not know what target was originally specified so we
- # must force a manual rerun to be sure. But as it should only
- # happen very rarely it is not a significant problem.
- push @m, q[
-$(OBJECT) : $(FIRST_MAKEFILE)
-] if $self->{OBJECT};
-
- push @m,q[
-# We take a very conservative approach here, but it\'s worth it.
-# We move $(MAKEFILE) to $(MAKEFILE)_old here to avoid gnu make looping.
-$(MAKEFILE) : Makefile.PL $(CONFIGDEP)
- $(NOECHO) $(SAY) "$(MAKEFILE) out-of-date with respect to $(MMS$SOURCE_LIST)"
- $(NOECHO) $(SAY) "Cleaning current config before rebuilding $(MAKEFILE) ..."
- - $(MV) $(MAKEFILE) $(MAKEFILE)_old
- - $(MMS)$(MMSQUALIFIERS) $(USEMAKEFILE)$(MAKEFILE)_old clean
- $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" Makefile.PL ],join(' ',map(qq["$_"],@ARGV)),q[
- $(NOECHO) $(SAY) "$(MAKEFILE) has been rebuilt."
- $(NOECHO) $(SAY) "Please run $(MMS) to build the extension."
-];
-
- join('',@m);
-}
-
-=item test (override)
-
-Use VMS commands for handling subdirectories.
-
-=cut
-
-sub test {
- my($self, %attribs) = @_;
- my($tests) = $attribs{TESTS} || ( -d 't' ? 't/*.t' : '');
- my(@m);
- push @m,"
-TEST_VERBOSE = 0
-TEST_TYPE = test_\$(LINKTYPE)
-TEST_FILE = test.pl
-TESTDB_SW = -d
-
-test :: \$(TEST_TYPE)
- \$(NOECHO) \$(NOOP)
-
-testdb :: testdb_\$(LINKTYPE)
- \$(NOECHO) \$(NOOP)
-
-";
- foreach(@{$self->{DIR}}){
- my($vmsdir) = $self->fixpath($_,1);
- push(@m, ' If F$Search("',$vmsdir,'$(MAKEFILE)").nes."" Then $(PERL) -e "chdir ',"'$vmsdir'",
- '; print `$(MMS)$(MMSQUALIFIERS) $(PASTHRU2) test`'."\n");
- }
- push(@m, "\t\$(NOECHO) \$(SAY) \"No tests defined for \$(NAME) extension.\"\n")
- unless $tests or -f "test.pl" or @{$self->{DIR}};
- push(@m, "\n");
-
- push(@m, "test_dynamic :: pure_all\n");
- push(@m, $self->test_via_harness('$(FULLPERL)', $tests)) if $tests;
- push(@m, $self->test_via_script('$(FULLPERL)', 'test.pl')) if -f "test.pl";
- push(@m, "\t\$(NOECHO) \$(NOOP)\n") if (!$tests && ! -f "test.pl");
- push(@m, "\n");
-
- push(@m, "testdb_dynamic :: pure_all\n");
- push(@m, $self->test_via_script('$(FULLPERL) "$(TESTDB_SW)"', '$(TEST_FILE)'));
- push(@m, "\n");
-
- # Occasionally we may face this degenerate target:
- push @m, "test_ : test_dynamic\n\n";
-
- if ($self->needs_linking()) {
- push(@m, "test_static :: pure_all \$(MAP_TARGET)\n");
- push(@m, $self->test_via_harness('$(MAP_TARGET)', $tests)) if $tests;
- push(@m, $self->test_via_script('$(MAP_TARGET)', 'test.pl')) if -f 'test.pl';
- push(@m, "\n");
- push(@m, "testdb_static :: pure_all \$(MAP_TARGET)\n");
- push(@m, $self->test_via_script('$(MAP_TARGET) $(TESTDB_SW)', '$(TEST_FILE)'));
- push(@m, "\n");
- }
- else {
- push @m, "test_static :: test_dynamic\n\t\$(NOECHO) \$(NOOP)\n\n";
- push @m, "testdb_static :: testdb_dynamic\n\t\$(NOECHO) \$(NOOP)\n";
- }
-
- join('',@m);
-}
-
-=item test_via_harness (override)
-
-Use VMS-style quoting on command line.
-
-=cut
-
-sub test_via_harness {
- my($self,$perl,$tests) = @_;
- " $perl".' "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" "-I$(PERL_LIB)" "-I$(PERL_ARCHLIB)" \\'."\n\t".
- '-e "use Test::Harness qw(&runtests $verbose); $verbose=$(TEST_VERBOSE); runtests @ARGV;" \\'."\n\t$tests\n";
-}
-
-=item test_via_script (override)
-
-Use VMS-style quoting on command line.
-
-=cut
-
-sub test_via_script {
- my($self,$perl,$script) = @_;
- " $perl".' "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" '.$script.'
-';
-}
-
-=item makeaperl (override)
-
-Undertake to build a new set of Perl images using VMS commands. Since
-VMS does dynamic loading, it's not necessary to statically link each
-extension into the Perl image, so this isn't the normal build path.
-Consequently, it hasn't really been tested, and may well be incomplete.
-
-=cut
-
-sub makeaperl {
- my($self, %attribs) = @_;
- my($makefilename, $searchdirs, $static, $extra, $perlinc, $target, $tmp, $libperl) =
- @attribs{qw(MAKE DIRS STAT EXTRA INCL TARGET TMP LIBPERL)};
- my(@m);
- push @m, "
-# --- MakeMaker makeaperl section ---
-MAP_TARGET = $target
-";
- return join '', @m if $self->{PARENT};
-
- my($dir) = join ":", @{$self->{DIR}};
-
- unless ($self->{MAKEAPERL}) {
- push @m, q{
-$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
- $(NOECHO) $(SAY) "Writing ""$(MMS$TARGET)"" for this $(MAP_TARGET)"
- $(NOECHO) $(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" \
- Makefile.PL DIR=}, $dir, q{ \
- MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
- MAKEAPERL=1 NORECURS=1 };
-
- push @m, map(q[ \\\n\t\t"$_"], @ARGV),q{
-
-$(MAP_TARGET) :: $(MAKE_APERL_FILE)
- $(MMS)$(MMSQUALIFIERS)$(USEMAKEFILE)$(MAKE_APERL_FILE) static $(MMS$TARGET)
-};
- push @m, "\n";
-
- return join '', @m;
- }
-
-
- my($linkcmd,@optlibs,@staticpkgs,$extralist,$targdir,$libperldir,%libseen);
- local($_);
-
- # The front matter of the linkcommand...
- $linkcmd = join ' ', $Config{'ld'},
- grep($_, @Config{qw(large split ldflags ccdlflags)});
- $linkcmd =~ s/\s+/ /g;
-
- # Which *.olb files could we make use of...
- local(%olbs);
- $olbs{$self->{INST_ARCHAUTODIR}} = "$self->{BASEEXT}\$(LIB_EXT)";
- require File::Find;
- File::Find::find(sub {
- return unless m/\Q$self->{LIB_EXT}\E$/;
- return if m/^libperl/;
-
- if( exists $self->{INCLUDE_EXT} ){
- my $found = 0;
- my $incl;
- my $xx;
-
- ($xx = $File::Find::name) =~ s,.*?/auto/,,;
- $xx =~ s,/?$_,,;
- $xx =~ s,/,::,g;
-
- # Throw away anything not explicitly marked for inclusion.
- # DynaLoader is implied.
- foreach $incl ((@{$self->{INCLUDE_EXT}},'DynaLoader')){
- if( $xx eq $incl ){
- $found++;
- last;
- }
- }
- return unless $found;
- }
- elsif( exists $self->{EXCLUDE_EXT} ){
- my $excl;
- my $xx;
-
- ($xx = $File::Find::name) =~ s,.*?/auto/,,;
- $xx =~ s,/?$_,,;
- $xx =~ s,/,::,g;
-
- # Throw away anything explicitly marked for exclusion
- foreach $excl (@{$self->{EXCLUDE_EXT}}){
- return if( $xx eq $excl );
- }
- }
-
- $olbs{$ENV{DEFAULT}} = $_;
- }, grep( -d $_, @{$searchdirs || []}));
-
- # We trust that what has been handed in as argument will be buildable
- $static = [] unless $static;
- @olbs{@{$static}} = (1) x @{$static};
-
- $extra = [] unless $extra && ref $extra eq 'ARRAY';
- # Sort the object libraries in inverse order of
- # filespec length to try to insure that dependent extensions
- # will appear before their parents, so the linker will
- # search the parent library to resolve references.
- # (e.g. Intuit::DWIM will precede Intuit, so unresolved
- # references from [.intuit.dwim]dwim.obj can be found
- # in [.intuit]intuit.olb).
- for (sort { length($a) <=> length($b) } keys %olbs) {
- next unless $olbs{$_} =~ /\Q$self->{LIB_EXT}\E$/;
- my($dir) = $self->fixpath($_,1);
- my($extralibs) = $dir . "extralibs.ld";
- my($extopt) = $dir . $olbs{$_};
- $extopt =~ s/$self->{LIB_EXT}$/.opt/;
- push @optlibs, "$dir$olbs{$_}";
- # Get external libraries this extension will need
- if (-f $extralibs ) {
- my %seenthis;
- open LIST,$extralibs or warn $!,next;
- while (<LIST>) {
- chomp;
- # Include a library in the link only once, unless it's mentioned
- # multiple times within a single extension's options file, in which
- # case we assume the builder needed to search it again later in the
- # link.
- my $skip = exists($libseen{$_}) && !exists($seenthis{$_});
- $libseen{$_}++; $seenthis{$_}++;
- next if $skip;
- push @$extra,$_;
- }
- close LIST;
- }
- # Get full name of extension for ExtUtils::Miniperl
- if (-f $extopt) {
- open OPT,$extopt or die $!;
- while (<OPT>) {
- next unless /(?:UNIVERSAL|VECTOR)=boot_([\w_]+)/;
- my $pkg = $1;
- $pkg =~ s#__*#::#g;
- push @staticpkgs,$pkg;
- }
- }
- }
- # Place all of the external libraries after all of the Perl extension
- # libraries in the final link, in order to maximize the opportunity
- # for XS code from multiple extensions to resolve symbols against the
- # same external library while only including that library once.
- push @optlibs, @$extra;
-
- $target = "Perl$Config{'exe_ext'}" unless $target;
- ($shrtarget,$targdir) = fileparse($target);
- $shrtarget =~ s/^([^.]*)/$1Shr/;
- $shrtarget = $targdir . $shrtarget;
- $target = "Perlshr.$Config{'dlext'}" unless $target;
- $tmp = "[]" unless $tmp;
- $tmp = $self->fixpath($tmp,1);
- if (@optlibs) { $extralist = join(' ',@optlibs); }
- else { $extralist = ''; }
- # Let ExtUtils::Liblist find the necessary libs for us (but skip PerlShr)
- # that's what we're building here).
- push @optlibs, grep { !/PerlShr/i } split ' ', +($self->ext())[2];
- if ($libperl) {
- unless (-f $libperl || -f ($libperl = $self->catfile($Config{'installarchlib'},'CORE',$libperl))) {
- print STDOUT "Warning: $libperl not found\n";
- undef $libperl;
- }
- }
- unless ($libperl) {
- if (defined $self->{PERL_SRC}) {
- $libperl = $self->catfile($self->{PERL_SRC},"libperl$self->{LIB_EXT}");
- } elsif (-f ($libperl = $self->catfile($Config{'installarchlib'},'CORE',"libperl$self->{LIB_EXT}")) ) {
- } else {
- print STDOUT "Warning: $libperl not found
- If you're going to build a static perl binary, make sure perl is installed
- otherwise ignore this warning\n";
- }
- }
- $libperldir = $self->fixpath((fileparse($libperl))[1],1);
-
- push @m, '
-# Fill in the target you want to produce if it\'s not perl
-MAP_TARGET = ',$self->fixpath($target,0),'
-MAP_SHRTARGET = ',$self->fixpath($shrtarget,0),"
-MAP_LINKCMD = $linkcmd
-MAP_PERLINC = ", $perlinc ? map('"$_" ',@{$perlinc}) : '',"
-MAP_EXTRA = $extralist
-MAP_LIBPERL = ",$self->fixpath($libperl,0),'
-';
-
-
- push @m,"\n${tmp}Makeaperl.Opt : \$(MAP_EXTRA)\n";
- foreach (@optlibs) {
- push @m,' $(NOECHO) $(PERL) -e "print q{',$_,'}" >>$(MMS$TARGET)',"\n";
- }
- push @m,"\n${tmp}PerlShr.Opt :\n\t";
- push @m,'$(NOECHO) $(PERL) -e "print q{$(MAP_SHRTARGET)}" >$(MMS$TARGET)',"\n";
-
-push @m,'
-$(MAP_SHRTARGET) : $(MAP_LIBPERL) Makeaperl.Opt ',"${libperldir}Perlshr_Attr.Opt",'
- $(MAP_LINKCMD)/Shareable=$(MMS$TARGET) $(MAP_LIBPERL), Makeaperl.Opt/Option ',"${libperldir}Perlshr_Attr.Opt/Option",'
-$(MAP_TARGET) : $(MAP_SHRTARGET) ',"${tmp}perlmain\$(OBJ_EXT) ${tmp}PerlShr.Opt",'
- $(MAP_LINKCMD) ',"${tmp}perlmain\$(OBJ_EXT)",', PerlShr.Opt/Option
- $(NOECHO) $(SAY) "To install the new ""$(MAP_TARGET)"" binary, say"
- $(NOECHO) $(SAY) " $(MMS)$(MMSQUALIFIERS)$(USEMAKEFILE)$(MAKEFILE) inst_perl $(USEMACROS)MAP_TARGET=$(MAP_TARGET)$(ENDMACRO)"
- $(NOECHO) $(SAY) "To remove the intermediate files, say
- $(NOECHO) $(SAY) " $(MMS)$(MMSQUALIFIERS)$(USEMAKEFILE)$(MAKEFILE) map_clean"
-';
- push @m,"\n${tmp}perlmain.c : \$(MAKEFILE)\n\t\$(NOECHO) \$(PERL) -e 1 >${tmp}Writemain.tmp\n";
- push @m, "# More from the 255-char line length limit\n";
- foreach (@staticpkgs) {
- push @m,' $(NOECHO) $(PERL) -e "print q{',$_,qq[}" >>${tmp}Writemain.tmp\n];
- }
- push @m,'
- $(NOECHO) $(PERL) $(MAP_PERLINC) -ane "use ExtUtils::Miniperl; writemain(@F)" ',$tmp,'Writemain.tmp >$(MMS$TARGET)
- $(NOECHO) $(RM_F) ',"${tmp}Writemain.tmp\n";
-
- push @m, q[
-# Still more from the 255-char line length limit
-doc_inst_perl :
- $(NOECHO) $(PERL) -e "print 'Perl binary $(MAP_TARGET)|'" >.MM_tmp
- $(NOECHO) $(PERL) -e "print 'MAP_STATIC|$(MAP_STATIC)|'" >>.MM_tmp
- $(NOECHO) $(PERL) -pl040 -e " " ].$self->catfile('$(INST_ARCHAUTODIR)','extralibs.all'),q[ >>.MM_tmp
- $(NOECHO) $(PERL) -e "print 'MAP_LIBPERL|$(MAP_LIBPERL)|'" >>.MM_tmp
- $(DOC_INSTALL) <.MM_tmp >>].$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q[
- $(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;
-];
-
- push @m, "
-inst_perl : pure_inst_perl doc_inst_perl
- \$(NOECHO) \$(NOOP)
-
-pure_inst_perl : \$(MAP_TARGET)
- $self->{CP} \$(MAP_SHRTARGET) ",$self->fixpath($Config{'installbin'},1),"
- $self->{CP} \$(MAP_TARGET) ",$self->fixpath($Config{'installbin'},1),"
-
-clean :: map_clean
- \$(NOECHO) \$(NOOP)
-
-map_clean :
- \$(RM_F) ${tmp}perlmain\$(OBJ_EXT) ${tmp}perlmain.c \$(MAKEFILE)
- \$(RM_F) ${tmp}Makeaperl.Opt ${tmp}PerlShr.Opt \$(MAP_TARGET)
-";
-
- join '', @m;
-}
-
-# --- Output postprocessing section ---
-
-=item nicetext (override)
-
-Insure that colons marking targets are preceded by space, in order
-to distinguish the target delimiter from a colon appearing as
-part of a filespec.
-
-=cut
-
-sub nicetext {
-
- my($self,$text) = @_;
- $text =~ s/([^\s:])(:+\s)/$1 $2/gs;
- $text;
-}
-
-1;
-
-=back
-
-=cut
-
-__END__
-
diff --git a/contrib/perl5/lib/ExtUtils/MM_Win32.pm b/contrib/perl5/lib/ExtUtils/MM_Win32.pm
deleted file mode 100644
index 5361ece..0000000
--- a/contrib/perl5/lib/ExtUtils/MM_Win32.pm
+++ /dev/null
@@ -1,957 +0,0 @@
-package ExtUtils::MM_Win32;
-
-=head1 NAME
-
-ExtUtils::MM_Win32 - methods to override UN*X behaviour in ExtUtils::MakeMaker
-
-=head1 SYNOPSIS
-
- use ExtUtils::MM_Win32; # Done internally by ExtUtils::MakeMaker if needed
-
-=head1 DESCRIPTION
-
-See ExtUtils::MM_Unix for a documentation of the methods provided
-there. This package overrides the implementation of these methods, not
-the semantics.
-
-=over
-
-=cut
-
-use Config;
-#use Cwd;
-use File::Basename;
-require Exporter;
-
-Exporter::import('ExtUtils::MakeMaker',
- qw( $Verbose &neatvalue));
-
-$ENV{EMXSHELL} = 'sh'; # to run `commands`
-unshift @MM::ISA, 'ExtUtils::MM_Win32';
-
-$BORLAND = 1 if $Config{'cc'} =~ /^bcc/i;
-$GCC = 1 if $Config{'cc'} =~ /^gcc/i;
-$DMAKE = 1 if $Config{'make'} =~ /^dmake/i;
-$NMAKE = 1 if $Config{'make'} =~ /^nmake/i;
-$PERLMAKE = 1 if $Config{'make'} =~ /^pmake/i;
-$OBJ = 1 if $Config{'ccflags'} =~ /PERL_OBJECT/i;
-
-# a few workarounds for command.com (very basic)
-{
- package ExtUtils::MM_Win95;
-
- # the $^O test may be overkill, but we want to be sure Win32::IsWin95()
- # exists before we try it
-
- unshift @MM::ISA, 'ExtUtils::MM_Win95'
- if ($^O =~ /Win32/ && Win32::IsWin95());
-
- sub xs_c {
- my($self) = shift;
- return '' unless $self->needs_linking();
- '
-.xs.c:
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) \\
- $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
- '
- }
-
- sub xs_cpp {
- my($self) = shift;
- return '' unless $self->needs_linking();
- '
-.xs.cpp:
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) \\
- $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.cpp
- ';
- }
-
- # many makes are too dumb to use xs_c then c_o
- sub xs_o {
- my($self) = shift;
- return '' unless $self->needs_linking();
- '
-.xs$(OBJ_EXT):
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) \\
- $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
- $(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
- ';
- }
-} # end of command.com workarounds
-
-sub dlsyms {
- my($self,%attribs) = @_;
-
- my($funcs) = $attribs{DL_FUNCS} || $self->{DL_FUNCS} || {};
- my($vars) = $attribs{DL_VARS} || $self->{DL_VARS} || [];
- my($funclist) = $attribs{FUNCLIST} || $self->{FUNCLIST} || [];
- my($imports) = $attribs{IMPORTS} || $self->{IMPORTS} || {};
- my(@m);
- (my $boot = $self->{NAME}) =~ s/:/_/g;
-
- if (not $self->{SKIPHASH}{'dynamic'}) {
- push(@m,"
-$self->{BASEEXT}.def: Makefile.PL
-",
- q! $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -MExtUtils::Mksymlists \\
- -e "Mksymlists('NAME' => '!, $self->{NAME},
- q!', 'DLBASE' => '!,$self->{DLBASE},
- q!', 'DL_FUNCS' => !,neatvalue($funcs),
- q!, 'FUNCLIST' => !,neatvalue($funclist),
- q!, 'IMPORTS' => !,neatvalue($imports),
- q!, 'DL_VARS' => !, neatvalue($vars), q!);"
-!);
- }
- join('',@m);
-}
-
-sub replace_manpage_separator {
- my($self,$man) = @_;
- $man =~ s,/+,.,g;
- $man;
-}
-
-sub maybe_command {
- my($self,$file) = @_;
- my @e = exists($ENV{'PATHEXT'})
- ? split(/;/, $ENV{PATHEXT})
- : qw(.com .exe .bat .cmd);
- my $e = '';
- for (@e) { $e .= "\Q$_\E|" }
- chop $e;
- # see if file ends in one of the known extensions
- if ($file =~ /($e)$/i) {
- return $file if -e $file;
- }
- else {
- for (@e) {
- return "$file$_" if -e "$file$_";
- }
- }
- return;
-}
-
-sub file_name_is_absolute {
- my($self,$file) = @_;
- $file =~ m{^([a-z]:)?[\\/]}i ;
-}
-
-sub find_perl {
- my($self, $ver, $names, $dirs, $trace) = @_;
- my($name, $dir);
- if ($trace >= 2){
- print "Looking for perl $ver by these names:
-@$names
-in these dirs:
-@$dirs
-";
- }
- foreach $dir (@$dirs){
- next unless defined $dir; # $self->{PERL_SRC} may be undefined
- foreach $name (@$names){
- my ($abs, $val);
- if ($self->file_name_is_absolute($name)) { # /foo/bar
- $abs = $name;
- } elsif ($self->canonpath($name) eq $self->canonpath(basename($name))) { # foo
- $abs = $self->catfile($dir, $name);
- } else { # foo/bar
- $abs = $self->canonpath($self->catfile($self->curdir, $name));
- }
- print "Checking $abs\n" if ($trace >= 2);
- next unless $self->maybe_command($abs);
- print "Executing $abs\n" if ($trace >= 2);
- $val = `$abs -e "require $ver;" 2>&1`;
- if ($? == 0) {
- print "Using PERL=$abs\n" if $trace;
- return $abs;
- } elsif ($trace >= 2) {
- print "Result: `$val'\n";
- }
- }
- }
- print STDOUT "Unable to find a perl $ver (by these names: @$names, in these dirs: @$dirs)\n";
- 0; # false and not empty
-}
-
-sub catdir {
- my $self = shift;
- my @args = @_;
- for (@args) {
- # append a slash to each argument unless it has one there
- $_ .= "\\" if $_ eq '' or substr($_,-1) ne "\\";
- }
- my $result = $self->canonpath(join('', @args));
- $result;
-}
-
-=item catfile
-
-Concatenate one or more directory names and a filename to form a
-complete path ending with a filename
-
-=cut
-
-sub catfile {
- my $self = shift @_;
- my $file = pop @_;
- return $file unless @_;
- my $dir = $self->catdir(@_);
- $dir =~ s/(\\\.)$//;
- $dir .= "\\" unless substr($dir,length($dir)-1,1) eq "\\";
- return $dir.$file;
-}
-
-sub init_others
-{
- my ($self) = @_;
- &ExtUtils::MM_Unix::init_others;
- $self->{'TOUCH'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e touch';
- $self->{'CHMOD'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e chmod';
- $self->{'CP'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e cp';
- $self->{'RM_F'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e rm_f';
- $self->{'RM_RF'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e rm_rf';
- $self->{'MV'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e mv';
- $self->{'NOOP'} = 'rem';
- $self->{'TEST_F'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e test_f';
- $self->{'LD'} = $Config{'ld'} || 'link';
- $self->{'AR'} = $Config{'ar'} || 'lib';
- $self->{'LDLOADLIBS'} ||= $Config{'libs'};
- # -Lfoo must come first for Borland, so we put it in LDDLFLAGS
- if ($BORLAND) {
- my $libs = $self->{'LDLOADLIBS'};
- my $libpath = '';
- while ($libs =~ s/(?:^|\s)(("?)-L.+?\2)(?:\s|$)/ /) {
- $libpath .= ' ' if length $libpath;
- $libpath .= $1;
- }
- $self->{'LDLOADLIBS'} = $libs;
- $self->{'LDDLFLAGS'} ||= $Config{'lddlflags'};
- $self->{'LDDLFLAGS'} .= " $libpath";
- }
- $self->{'DEV_NULL'} = '> NUL';
- # $self->{'NOECHO'} = ''; # till we have it working
-}
-
-
-=item constants (o)
-
-Initializes lots of constants and .SUFFIXES and .PHONY
-
-=cut
-
-sub constants {
- my($self) = @_;
- my(@m,$tmp);
-
- for $tmp (qw/
-
- AR_STATIC_ARGS NAME DISTNAME NAME_SYM VERSION
- VERSION_SYM XS_VERSION INST_BIN INST_EXE INST_LIB
- INST_ARCHLIB INST_SCRIPT PREFIX INSTALLDIRS
- INSTALLPRIVLIB INSTALLARCHLIB INSTALLSITELIB
- INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB
- PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB
- FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC
- PERL_INC PERL FULLPERL
-
- / ) {
- next unless defined $self->{$tmp};
- push @m, "$tmp = $self->{$tmp}\n";
- }
-
- push @m, qq{
-VERSION_MACRO = VERSION
-DEFINE_VERSION = -D\$(VERSION_MACRO)=\\\"\$(VERSION)\\\"
-XS_VERSION_MACRO = XS_VERSION
-XS_DEFINE_VERSION = -D\$(XS_VERSION_MACRO)=\\\"\$(XS_VERSION)\\\"
-};
-
- push @m, qq{
-MAKEMAKER = $INC{'ExtUtils\MakeMaker.pm'}
-MM_VERSION = $ExtUtils::MakeMaker::VERSION
-};
-
- push @m, q{
-# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
-# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
-# ROOTEXT = Directory part of FULLEXT with leading slash (eg /DBD) !!! Deprecated from MM 5.32 !!!
-# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
-# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
-};
-
- for $tmp (qw/
- FULLEXT BASEEXT PARENT_NAME DLBASE VERSION_FROM INC DEFINE OBJECT
- LDFROM LINKTYPE
- / ) {
- next unless defined $self->{$tmp};
- push @m, "$tmp = $self->{$tmp}\n";
- }
-
- push @m, "
-# Handy lists of source code files:
-XS_FILES= ".join(" \\\n\t", sort keys %{$self->{XS}})."
-C_FILES = ".join(" \\\n\t", @{$self->{C}})."
-O_FILES = ".join(" \\\n\t", @{$self->{O_FILES}})."
-H_FILES = ".join(" \\\n\t", @{$self->{H}})."
-HTMLLIBPODS = ".join(" \\\n\t", sort keys %{$self->{HTMLLIBPODS}})."
-HTMLSCRIPTPODS = ".join(" \\\n\t", sort keys %{$self->{HTMLSCRIPTPODS}})."
-MAN1PODS = ".join(" \\\n\t", sort keys %{$self->{MAN1PODS}})."
-MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})."
-";
-
- for $tmp (qw/
- INST_HTMLPRIVLIBDIR INSTALLHTMLPRIVLIBDIR
- INST_HTMLSITELIBDIR INSTALLHTMLSITELIBDIR
- INST_HTMLSCRIPTDIR INSTALLHTMLSCRIPTDIR
- INST_HTMLLIBDIR HTMLEXT
- INST_MAN1DIR INSTALLMAN1DIR MAN1EXT
- INST_MAN3DIR INSTALLMAN3DIR MAN3EXT
- /) {
- next unless defined $self->{$tmp};
- push @m, "$tmp = $self->{$tmp}\n";
- }
-
- push @m, qq{
-.USESHELL :
-} if $DMAKE;
-
- push @m, q{
-.NO_CONFIG_REC: Makefile
-} if $ENV{CLEARCASE_ROOT};
-
- # why not q{} ? -- emacs
- push @m, qq{
-# work around a famous dec-osf make(1) feature(?):
-makemakerdflt: all
-
-.SUFFIXES: .xs .c .C .cpp .cxx .cc \$(OBJ_EXT)
-
-# Nick wanted to get rid of .PRECIOUS. I don't remember why. I seem to recall, that
-# some make implementations will delete the Makefile when we rebuild it. Because
-# we call false(1) when we rebuild it. So make(1) is not completely wrong when it
-# does so. Our milage may vary.
-# .PRECIOUS: Makefile # seems to be not necessary anymore
-
-.PHONY: all config static dynamic test linkext manifest
-
-# Where is the Config information that we are using/depend on
-CONFIGDEP = \$(PERL_ARCHLIB)\\Config.pm \$(PERL_INC)\\config.h
-};
-
- my @parentdir = split(/::/, $self->{PARENT_NAME});
- push @m, q{
-# Where to put things:
-INST_LIBDIR = }. $self->catdir('$(INST_LIB)',@parentdir) .q{
-INST_ARCHLIBDIR = }. $self->catdir('$(INST_ARCHLIB)',@parentdir) .q{
-
-INST_AUTODIR = }. $self->catdir('$(INST_LIB)','auto','$(FULLEXT)') .q{
-INST_ARCHAUTODIR = }. $self->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)') .q{
-};
-
- if ($self->has_link_code()) {
- push @m, '
-INST_STATIC = $(INST_ARCHAUTODIR)\$(BASEEXT)$(LIB_EXT)
-INST_DYNAMIC = $(INST_ARCHAUTODIR)\$(DLBASE).$(DLEXT)
-INST_BOOT = $(INST_ARCHAUTODIR)\$(BASEEXT).bs
-';
- } else {
- push @m, '
-INST_STATIC =
-INST_DYNAMIC =
-INST_BOOT =
-';
- }
-
- $tmp = $self->export_list;
- push @m, "
-EXPORT_LIST = $tmp
-";
- $tmp = $self->perl_archive;
- push @m, "
-PERL_ARCHIVE = $tmp
-";
-
-# push @m, q{
-#INST_PM = }.join(" \\\n\t", sort values %{$self->{PM}}).q{
-#
-#PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
-#};
-
- push @m, q{
-TO_INST_PM = }.join(" \\\n\t", sort keys %{$self->{PM}}).q{
-
-PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
-};
-
- join('',@m);
-}
-
-
-sub path {
- my($self) = @_;
- my $path = $ENV{'PATH'} || $ENV{'Path'} || $ENV{'path'};
- my @path = split(';',$path);
- foreach(@path) { $_ = '.' if $_ eq '' }
- @path;
-}
-
-=item static_lib (o)
-
-Defines how to produce the *.a (or equivalent) files.
-
-=cut
-
-sub static_lib {
- my($self) = @_;
-# Come to think of it, if there are subdirs with linkcode, we still have no INST_STATIC
-# return '' unless $self->needs_linking(); #might be because of a subdir
-
- return '' unless $self->has_link_code;
-
- my(@m);
- push(@m, <<'END');
-$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)\.exists
- $(RM_RF) $@
-END
- # If this extension has it's own library (eg SDBM_File)
- # then copy that to $(INST_STATIC) and add $(OBJECT) into it.
- push(@m, "\t$self->{CP} \$(MYEXTLIB) \$\@\n") if $self->{MYEXTLIB};
-
- push @m,
-q{ $(AR) }.($BORLAND ? '$@ $(OBJECT:^"+")'
- : ($GCC ? '-ru $@ $(OBJECT)'
- : '-out:$@ $(OBJECT)')).q{
- }.$self->{NOECHO}.q{echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)\extralibs.ld
- $(CHMOD) 755 $@
-};
-
-# Old mechanism - still available:
-
- push @m, "\t$self->{NOECHO}".q{echo "$(EXTRALIBS)" >> $(PERL_SRC)\ext.libs}."\n\n"
- if $self->{PERL_SRC};
-
- push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
- join('', "\n",@m);
-}
-
-=item dynamic_bs (o)
-
-Defines targets for bootstrap files.
-
-=cut
-
-sub dynamic_bs {
- my($self, %attribs) = @_;
- return '
-BOOTSTRAP =
-' unless $self->has_link_code();
-
- return '
-BOOTSTRAP = '."$self->{BASEEXT}.bs".'
-
-# As Mkbootstrap might not write a file (if none is required)
-# we use touch to prevent make continually trying to remake it.
-# The DynaLoader only reads a non-empty file.
-$(BOOTSTRAP): '."$self->{MAKEFILE} $self->{BOOTDEP}".' $(INST_ARCHAUTODIR)\.exists
- '.$self->{NOECHO}.'echo "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))"
- '.$self->{NOECHO}.'$(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" \
- -MExtUtils::Mkbootstrap \
- -e "Mkbootstrap(\'$(BASEEXT)\',\'$(BSLOADLIBS)\');"
- '.$self->{NOECHO}.'$(TOUCH) $(BOOTSTRAP)
- $(CHMOD) 644 $@
-
-$(INST_BOOT): $(BOOTSTRAP) $(INST_ARCHAUTODIR)\.exists
- '."$self->{NOECHO}$self->{RM_RF}".' $(INST_BOOT)
- -'.$self->{CP}.' $(BOOTSTRAP) $(INST_BOOT)
- $(CHMOD) 644 $@
-';
-}
-
-=item dynamic_lib (o)
-
-Defines how to produce the *.so (or equivalent) files.
-
-=cut
-
-sub dynamic_lib {
- my($self, %attribs) = @_;
- return '' unless $self->needs_linking(); #might be because of a subdir
-
- return '' unless $self->has_link_code;
-
- my($otherldflags) = $attribs{OTHERLDFLAGS} || ($BORLAND ? 'c0d32.obj': '');
- my($inst_dynamic_dep) = $attribs{INST_DYNAMIC_DEP} || "";
- my($ldfrom) = '$(LDFROM)';
- my(@m);
-
-# one thing for GCC/Mingw32:
-# we try to overcome non-relocateable-DLL problems by generating
-# a (hopefully unique) image-base from the dll's name
-# -- BKS, 10-19-1999
- if ($GCC) {
- my $dllname = $self->{BASEEXT} . "." . $self->{DLEXT};
- $dllname =~ /(....)(.{0,4})/;
- my $baseaddr = unpack("n", $1 ^ $2);
- $otherldflags .= sprintf("-Wl,--image-base,0x%x0000 ", $baseaddr);
- }
-
- push(@m,'
-# This section creates the dynamically loadable $(INST_DYNAMIC)
-# from $(OBJECT) and possibly $(MYEXTLIB).
-OTHERLDFLAGS = '.$otherldflags.'
-INST_DYNAMIC_DEP = '.$inst_dynamic_dep.'
-
-$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)\.exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(INST_DYNAMIC_DEP)
-');
- if ($GCC) {
- push(@m,
- q{ dlltool --def $(EXPORT_LIST) --output-exp dll.exp
- $(LD) -o $@ -Wl,--base-file -Wl,dll.base $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) dll.exp
- dlltool --def $(EXPORT_LIST) --base-file dll.base --output-exp dll.exp
- $(LD) -o $@ $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) dll.exp });
- } elsif ($BORLAND) {
- push(@m,
- q{ $(LD) $(LDDLFLAGS) $(OTHERLDFLAGS) }.$ldfrom.q{,$@,,}
- .($DMAKE ? q{$(PERL_ARCHIVE:s,/,\,) $(LDLOADLIBS:s,/,\,) }
- .q{$(MYEXTLIB:s,/,\,),$(EXPORT_LIST:s,/,\,)}
- : q{$(subst /,\,$(PERL_ARCHIVE)) $(subst /,\,$(LDLOADLIBS)) }
- .q{$(subst /,\,$(MYEXTLIB)),$(subst /,\,$(EXPORT_LIST))})
- .q{,$(RESFILES)});
- } else { # VC
- push(@m,
- q{ $(LD) -out:$@ $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) }
- .q{$(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) -def:$(EXPORT_LIST)});
- }
- push @m, '
- $(CHMOD) 755 $@
-';
-
- push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
- join('',@m);
-}
-
-sub perl_archive
-{
- my ($self) = @_;
- return '$(PERL_INC)\\'.$Config{'libperl'};
-}
-
-sub export_list
-{
- my ($self) = @_;
- return "$self->{BASEEXT}.def";
-}
-
-=item canonpath
-
-No physical check on the filesystem, but a logical cleanup of a
-path. On UNIX eliminated successive slashes and successive "/.".
-
-=cut
-
-sub canonpath {
- my($self,$path) = @_;
- $path =~ s/^([a-z]:)/\u$1/;
- $path =~ s|/|\\|g;
- $path =~ s|(.)\\+|$1\\|g ; # xx////xx -> xx/xx
- $path =~ s|(\\\.)+\\|\\|g ; # xx/././xx -> xx/xx
- $path =~ s|^(\.\\)+|| unless $path eq ".\\"; # ./xx -> xx
- $path =~ s|\\$||
- unless $path =~ m#^([a-z]:)?\\#; # xx/ -> xx
- $path .= '.' if $path =~ m#\\$#;
- $path;
-}
-
-=item perl_script
-
-Takes one argument, a file name, and returns the file name, if the
-argument is likely to be a perl script. On MM_Unix this is true for
-any ordinary, readable file.
-
-=cut
-
-sub perl_script {
- my($self,$file) = @_;
- return $file if -r $file && -f _;
- return "$file.pl" if -r "$file.pl" && -f _;
- return "$file.bat" if -r "$file.bat" && -f _;
- return;
-}
-
-=item pm_to_blib
-
-Defines target that copies all files in the hash PM to their
-destination and autosplits them. See L<ExtUtils::Install/DESCRIPTION>
-
-=cut
-
-sub pm_to_blib {
- my $self = shift;
- my($autodir) = $self->catdir('$(INST_LIB)','auto');
- return q{
-pm_to_blib: $(TO_INST_PM)
- }.$self->{NOECHO}.q{$(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" \
- "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -MExtUtils::Install \
- -e "pm_to_blib(}.
- ($NMAKE ? 'qw[ <<pmfiles.dat ],'
- : $DMAKE ? 'qw[ $(mktmp,pmfiles.dat $(PM_TO_BLIB:s,\\,\\\\,)\n) ],'
- : '{ qw[$(PM_TO_BLIB)] },'
- ).q{'}.$autodir.q{','$(PM_FILTER)')"
- }. ($NMAKE ? q{
-$(PM_TO_BLIB)
-<<
- } : '') . $self->{NOECHO}.q{$(TOUCH) $@
-};
-}
-
-=item test_via_harness (o)
-
-Helper method to write the test targets
-
-=cut
-
-sub test_via_harness {
- my($self, $perl, $tests) = @_;
- "\t$perl".q! -Mblib -I$(PERL_ARCHLIB) -I$(PERL_LIB) -e "use Test::Harness qw(&runtests $$verbose); $$verbose=$(TEST_VERBOSE); runtests @ARGV;" !."$tests\n";
-}
-
-
-=item tool_autosplit (override)
-
-Use Win32 quoting on command line.
-
-=cut
-
-sub tool_autosplit{
- my($self, %attribs) = @_;
- my($asl) = "";
- $asl = "\$AutoSplit::Maxlen=$attribs{MAXLEN};" if $attribs{MAXLEN};
- q{
-# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
-AUTOSPLITFILE = $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -MAutoSplit }.$asl.q{ -e "autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1);"
-};
-}
-
-=item tools_other (o)
-
-Win32 overrides.
-
-Defines SHELL, LD, TOUCH, CP, MV, RM_F, RM_RF, CHMOD, UMASK_NULL in
-the Makefile. Also defines the perl programs MKPATH,
-WARN_IF_OLD_PACKLIST, MOD_INSTALL. DOC_INSTALL, and UNINSTALL.
-
-=cut
-
-sub tools_other {
- my($self) = shift;
- my @m;
- my $bin_sh = $Config{sh} || 'cmd /c';
- push @m, qq{
-SHELL = $bin_sh
-} unless $DMAKE; # dmake determines its own shell
-
- for (qw/ CHMOD CP LD MV NOOP RM_F RM_RF TEST_F TOUCH UMASK_NULL DEV_NULL/ ) {
- push @m, "$_ = $self->{$_}\n";
- }
-
- push @m, q{
-# The following is a portable way to say mkdir -p
-# To see which directories are created, change the if 0 to if 1
-MKPATH = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e mkpath
-
-# This helps us to minimize the effect of the .exists files A yet
-# better solution would be to have a stable file in the perl
-# distribution with a timestamp of zero. But this solution doesn't
-# need any changes to the core distribution and works with older perls
-EQUALIZE_TIMESTAMP = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e eqtime
-};
-
-
- return join "", @m if $self->{PARENT};
-
- push @m, q{
-# Here we warn users that an old packlist file was found somewhere,
-# and that they should call some uninstall routine
-WARN_IF_OLD_PACKLIST = $(PERL) -lwe "exit unless -f $$ARGV[0];" \\
--e "print 'WARNING: I have found an old package in';" \\
--e "print ' ', $$ARGV[0], '.';" \\
--e "print 'Please make sure the two installations are not conflicting';"
-
-UNINST=0
-VERBINST=1
-
-MOD_INSTALL = $(PERL) -I$(INST_LIB) -I$(PERL_LIB) -MExtUtils::Install \
--e "install({ @ARGV },'$(VERBINST)',0,'$(UNINST)');"
-
-DOC_INSTALL = $(PERL) -e "$$\=\"\n\n\";" \
--e "print '=head2 ', scalar(localtime), ': C<', shift, '>', ' L<', $$arg=shift, '|', $$arg, '>';" \
--e "print '=over 4';" \
--e "while (defined($$key = shift) and defined($$val = shift)) { print '=item *';print 'C<', \"$$key: $$val\", '>'; }" \
--e "print '=back';"
-
-UNINSTALL = $(PERL) -MExtUtils::Install \
--e "uninstall($$ARGV[0],1,1); print \"\nUninstall is deprecated. Please check the";" \
--e "print \" packlist above carefully.\n There may be errors. Remove the\";" \
--e "print \" appropriate files manually.\n Sorry for the inconveniences.\n\""
-};
-
- return join "", @m;
-}
-
-=item xs_o (o)
-
-Defines suffix rules to go from XS to object files directly. This is
-only intended for broken make implementations.
-
-=cut
-
-sub xs_o { # many makes are too dumb to use xs_c then c_o
- my($self) = shift;
- return ''
-}
-
-=item top_targets (o)
-
-Defines the targets all, subdirs, config, and O_FILES
-
-=cut
-
-sub top_targets {
-# --- Target Sections ---
-
- my($self) = shift;
- my(@m);
- push @m, '
-#all :: config $(INST_PM) subdirs linkext manifypods
-';
-
- push @m, '
-all :: pure_all htmlifypods manifypods
- '.$self->{NOECHO}.'$(NOOP)
-'
- unless $self->{SKIPHASH}{'all'};
-
- push @m, '
-pure_all :: config pm_to_blib subdirs linkext
- '.$self->{NOECHO}.'$(NOOP)
-
-subdirs :: $(MYEXTLIB)
- '.$self->{NOECHO}.'$(NOOP)
-
-config :: '.$self->{MAKEFILE}.' $(INST_LIBDIR)\.exists
- '.$self->{NOECHO}.'$(NOOP)
-
-config :: $(INST_ARCHAUTODIR)\.exists
- '.$self->{NOECHO}.'$(NOOP)
-
-config :: $(INST_AUTODIR)\.exists
- '.$self->{NOECHO}.'$(NOOP)
-';
-
- push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
-
- if (%{$self->{HTMLLIBPODS}}) {
- push @m, qq[
-config :: \$(INST_HTMLLIBDIR)/.exists
- $self->{NOECHO}\$(NOOP)
-
-];
- push @m, $self->dir_target(qw[$(INST_HTMLLIBDIR)]);
- }
-
- if (%{$self->{HTMLSCRIPTPODS}}) {
- push @m, qq[
-config :: \$(INST_HTMLSCRIPTDIR)/.exists
- $self->{NOECHO}\$(NOOP)
-
-];
- push @m, $self->dir_target(qw[$(INST_HTMLSCRIPTDIR)]);
- }
-
- if (%{$self->{MAN1PODS}}) {
- push @m, qq[
-config :: \$(INST_MAN1DIR)\\.exists
- $self->{NOECHO}\$(NOOP)
-
-];
- push @m, $self->dir_target(qw[$(INST_MAN1DIR)]);
- }
- if (%{$self->{MAN3PODS}}) {
- push @m, qq[
-config :: \$(INST_MAN3DIR)\\.exists
- $self->{NOECHO}\$(NOOP)
-
-];
- push @m, $self->dir_target(qw[$(INST_MAN3DIR)]);
- }
-
- push @m, '
-$(O_FILES): $(H_FILES)
-' if @{$self->{O_FILES} || []} && @{$self->{H} || []};
-
- push @m, q{
-help:
- perldoc ExtUtils::MakeMaker
-};
-
- push @m, q{
-Version_check:
- }.$self->{NOECHO}.q{$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \
- -MExtUtils::MakeMaker=Version_check \
- -e "Version_check('$(MM_VERSION)')"
-};
-
- join('',@m);
-}
-
-=item htmlifypods (o)
-
-Defines targets and routines to translate the pods into HTML manpages
-and put them into the INST_HTMLLIBDIR and INST_HTMLSCRIPTDIR
-directories.
-
-Same as MM_Unix version (changes command-line quoting).
-
-=cut
-
-sub htmlifypods {
- my($self, %attribs) = @_;
- return "\nhtmlifypods : pure_all\n\t$self->{NOECHO}\$(NOOP)\n" unless
- %{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}};
- my($dist);
- my($pod2html_exe);
- if (defined $self->{PERL_SRC}) {
- $pod2html_exe = $self->catfile($self->{PERL_SRC},'pod','pod2html');
- } else {
- $pod2html_exe = $self->catfile($Config{scriptdirexp},'pod2html');
- }
- unless ($pod2html_exe = $self->perl_script($pod2html_exe)) {
- # No pod2html but some HTMLxxxPODS to be installed
- print <<END;
-
-Warning: I could not locate your pod2html program. Please make sure,
- your pod2html program is in your PATH before you execute 'make'
-
-END
- $pod2html_exe = "-S pod2html";
- }
- my(@m);
- push @m,
-qq[POD2HTML_EXE = $pod2html_exe\n],
-qq[POD2HTML = \$(PERL) -we "use File::Basename; use File::Path qw(mkpath); %m=\@ARGV;for (keys %m){" \\\n],
-q[-e "next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M '],
- $self->{MAKEFILE}, q[';" \\
--e "print qq(Htmlifying $$m{$$_}\n);" \\
--e "$$dir = dirname($$m{$$_}); mkpath($$dir) unless -d $$dir;" \\
--e "system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2HTML_EXE) ].qq[$$_>$$m{$$_}])==0 or warn qq(Couldn\\047t install $$m{$$_}\n);" \\
--e "chmod(oct($(PERM_RW))), $$m{$$_} or warn qq(chmod $(PERM_RW) $$m{$$_}: $$!\n);}"
-];
- push @m, "\nhtmlifypods : pure_all ";
- push @m, join " \\\n\t", keys %{$self->{HTMLLIBPODS}}, keys %{$self->{HTMLSCRIPTPODS}};
-
- push(@m,"\n");
- if (%{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}}) {
- push @m, "\t$self->{NOECHO}\$(POD2HTML) \\\n\t";
- push @m, join " \\\n\t", %{$self->{HTMLLIBPODS}}, %{$self->{HTMLSCRIPTPODS}};
- }
- join('', @m);
-}
-
-=item manifypods (o)
-
-We don't want manpage process.
-
-=cut
-
-sub manifypods {
- my($self) = shift;
- return "\nmanifypods :\n\t$self->{NOECHO}\$(NOOP)\n";
-}
-
-=item dist_ci (o)
-
-Same as MM_Unix version (changes command-line quoting).
-
-=cut
-
-sub dist_ci {
- my($self) = shift;
- my @m;
- push @m, q{
-ci :
- $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=maniread \\
- -e "@all = keys %{ maniread() };" \\
- -e "print(\"Executing $(CI) @all\n\"); system(\"$(CI) @all\");" \\
- -e "print(\"Executing $(RCS_LABEL) ...\n\"); system(\"$(RCS_LABEL) @all\");"
-};
- join "", @m;
-}
-
-=item dist_core (o)
-
-Same as MM_Unix version (changes command-line quoting).
-
-=cut
-
-sub dist_core {
- my($self) = shift;
- my @m;
- push @m, q{
-dist : $(DIST_DEFAULT)
- }.$self->{NOECHO}.q{$(PERL) -le "print \"Warning: Makefile possibly out of date with $$vf\" if " \
- -e "-e ($$vf=\"$(VERSION_FROM)\") and -M $$vf < -M \"}.$self->{MAKEFILE}.q{\";"
-
-tardist : $(DISTVNAME).tar$(SUFFIX)
-
-zipdist : $(DISTVNAME).zip
-
-$(DISTVNAME).tar$(SUFFIX) : distdir
- $(PREOP)
- $(TO_UNIX)
- $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
- $(RM_RF) $(DISTVNAME)
- $(COMPRESS) $(DISTVNAME).tar
- $(POSTOP)
-
-$(DISTVNAME).zip : distdir
- $(PREOP)
- $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
- $(RM_RF) $(DISTVNAME)
- $(POSTOP)
-
-uutardist : $(DISTVNAME).tar$(SUFFIX)
- uuencode $(DISTVNAME).tar$(SUFFIX) \\
- $(DISTVNAME).tar$(SUFFIX) > \\
- $(DISTVNAME).tar$(SUFFIX)_uu
-
-shdist : distdir
- $(PREOP)
- $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
- $(RM_RF) $(DISTVNAME)
- $(POSTOP)
-};
- join "", @m;
-}
-
-=item pasthru (o)
-
-Defines the string that is passed to recursive make calls in
-subdirectories.
-
-=cut
-
-sub pasthru {
- my($self) = shift;
- return "PASTHRU = " . ($NMAKE ? "-nologo" : "");
-}
-
-
-
-1;
-__END__
-
-=back
-
-=cut
-
-
diff --git a/contrib/perl5/lib/ExtUtils/MakeMaker.pm b/contrib/perl5/lib/ExtUtils/MakeMaker.pm
deleted file mode 100644
index 651ffac..0000000
--- a/contrib/perl5/lib/ExtUtils/MakeMaker.pm
+++ /dev/null
@@ -1,2096 +0,0 @@
-# $FreeBSD$
-
-BEGIN {require 5.002;} # MakeMaker 5.17 was the last MakeMaker that was compatible with perl5.001m
-
-package ExtUtils::MakeMaker;
-
-$VERSION = "5.45";
-$Version_OK = "5.17"; # Makefiles older than $Version_OK will die
- # (Will be checked from MakeMaker version 4.13 onwards)
-($Revision = substr(q$Revision: 1.222 $, 10)) =~ s/\s+$//;
-
-
-
-require Exporter;
-use Config;
-use Carp ();
-#use FileHandle ();
-
-use vars qw(
-
- @ISA @EXPORT @EXPORT_OK $AUTOLOAD
- $ISA_TTY $Is_Mac $Is_OS2 $Is_VMS $Revision
- $VERSION $Verbose $Version_OK %Config %Keep_after_flush
- %MM_Sections %Prepend_dot_dot %Recognized_Att_Keys
- @Get_from_Config @MM_Sections @Overridable @Parent
-
- );
-# use strict;
-
-# &DynaLoader::mod2fname should be available to miniperl, thus
-# should be a pseudo-builtin (cmp. os2.c).
-#eval {require DynaLoader;};
-
-#
-# Set up the inheritance before we pull in the MM_* packages, because they
-# import variables and functions from here
-#
-@ISA = qw(Exporter);
-@EXPORT = qw(&WriteMakefile &writeMakefile $Verbose &prompt);
-@EXPORT_OK = qw($VERSION &Version_check &neatvalue &mkbootstrap &mksymlists);
-
-#
-# Dummy package MM inherits actual methods from OS-specific
-# default packages. We use this intermediate package so
-# MY::XYZ->func() can call MM->func() and get the proper
-# default routine without having to know under what OS
-# it's running.
-#
-@MM::ISA = qw[ExtUtils::MM_Unix ExtUtils::Liblist::Kid ExtUtils::MakeMaker];
-
-#
-# Setup dummy package:
-# MY exists for overriding methods to be defined within
-#
-{
- package MY;
- @MY::ISA = qw(MM);
-### sub AUTOLOAD { use Devel::Symdump; print Devel::Symdump->rnew->as_string; Carp::confess "hey why? $AUTOLOAD" }
- package MM;
- sub DESTROY {}
-}
-
-# "predeclare the package: we only load it via AUTOLOAD
-# but we have already mentioned it in @ISA
-package ExtUtils::Liblist::Kid;
-
-package ExtUtils::MakeMaker;
-#
-# Now we can pull in the friends
-#
-$Is_VMS = $^O eq 'VMS';
-$Is_OS2 = $^O eq 'os2';
-$Is_Mac = $^O eq 'MacOS';
-$Is_Win32 = $^O eq 'MSWin32';
-$Is_Cygwin= $^O eq 'cygwin';
-
-require ExtUtils::MM_Unix;
-
-if ($Is_VMS) {
- require ExtUtils::MM_VMS;
- require VMS::Filespec; # is a noop as long as we require it within MM_VMS
-}
-if ($Is_OS2) {
- require ExtUtils::MM_OS2;
-}
-if ($Is_Mac) {
- require ExtUtils::MM_MacOS;
-}
-if ($Is_Win32) {
- require ExtUtils::MM_Win32;
-}
-if ($Is_Cygwin) {
- require ExtUtils::MM_Cygwin;
-}
-
-full_setup();
-
-# The use of the Version_check target has been dropped between perl
-# 5.5.63 and 5.5.64. We must keep the subroutine for a while so that
-# old Makefiles can satisfy the Version_check target.
-
-sub Version_check {
- my($checkversion) = @_;
- die "Your Makefile was built with ExtUtils::MakeMaker v $checkversion.
-Current Version is $ExtUtils::MakeMaker::VERSION. There have been considerable
-changes in the meantime.
-Please rerun 'perl Makefile.PL' to regenerate the Makefile.\n"
- if $checkversion < $Version_OK;
- printf STDOUT "%s %s %s %s.\n", "Makefile built with ExtUtils::MakeMaker v",
- $checkversion, "Current Version is", $VERSION
- unless $checkversion == $VERSION;
-}
-
-sub warnhandler {
- $_[0] =~ /^Use of uninitialized value/ && return;
- $_[0] =~ /used only once/ && return;
- $_[0] =~ /^Subroutine\s+[\w:]+\s+redefined/ && return;
- warn @_;
-}
-
-sub WriteMakefile {
- Carp::croak "WriteMakefile: Need even number of args" if @_ % 2;
- local $SIG{__WARN__} = \&warnhandler;
-
- my %att = @_;
- MM->new(\%att)->flush;
-}
-
-sub prompt ($;$) {
- my($mess,$def)=@_;
- $ISA_TTY = -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT)) ; # Pipe?
- Carp::confess("prompt function called without an argument") unless defined $mess;
- my $dispdef = defined $def ? "[$def] " : " ";
- $def = defined $def ? $def : "";
- my $ans;
- local $|=1;
- print "$mess $dispdef";
- if ($ISA_TTY) {
- chomp($ans = <STDIN>);
- } else {
- print "$def\n";
- }
- return ($ans ne '') ? $ans : $def;
-}
-
-sub eval_in_subdirs {
- my($self) = @_;
- my($dir);
- use Cwd 'cwd';
- my $pwd = cwd();
-
- foreach $dir (@{$self->{DIR}}){
- my($abs) = $self->catdir($pwd,$dir);
- $self->eval_in_x($abs);
- }
- chdir $pwd;
-}
-
-sub eval_in_x {
- my($self,$dir) = @_;
- package main;
- chdir $dir or Carp::carp("Couldn't change to directory $dir: $!");
-# use FileHandle ();
-# my $fh = new FileHandle;
-# $fh->open("Makefile.PL") or Carp::carp("Couldn't open Makefile.PL in $dir");
- local *FH;
- open(FH,"Makefile.PL") or Carp::carp("Couldn't open Makefile.PL in $dir");
-# my $eval = join "", <$fh>;
- my $eval = join "", <FH>;
-# $fh->close;
- close FH;
- eval $eval;
- if ($@) {
-# if ($@ =~ /prerequisites/) {
-# die "MakeMaker WARNING: $@";
-# } else {
-# warn "WARNING from evaluation of $dir/Makefile.PL: $@";
-# }
- warn "WARNING from evaluation of $dir/Makefile.PL: $@";
- }
-}
-
-sub full_setup {
- $Verbose ||= 0;
-
- # package name for the classes into which the first object will be blessed
- $PACKNAME = "PACK000";
-
- @Attrib_help = qw/
-
- AUTHOR ABSTRACT ABSTRACT_FROM BINARY_LOCATION
- C CAPI CCFLAGS CONFIG CONFIGURE DEFINE DIR DISTNAME DL_FUNCS DL_VARS
- EXCLUDE_EXT EXE_FILES FIRST_MAKEFILE FULLPERL FUNCLIST H
- HTMLLIBPODS HTMLSCRIPTPODS IMPORTS
- INC INCLUDE_EXT INSTALLARCHLIB INSTALLBIN INSTALLDIRS INSTALLHTMLPRIVLIBDIR
- INSTALLHTMLSCRIPTDIR INSTALLHTMLSITELIBDIR INSTALLMAN1DIR
- INSTALLMAN3DIR INSTALLPRIVLIB INSTALLSCRIPT INSTALLSITEARCH
- INSTALLSITELIB INST_ARCHLIB INST_BIN INST_EXE INST_LIB
- INST_HTMLLIBDIR INST_HTMLSCRIPTDIR
- INST_MAN1DIR INST_MAN3DIR INST_SCRIPT LDFROM LIB LIBPERL_A LIBS
- LINKTYPE MAKEAPERL MAKEFILE MAN1PODS MAN3PODS MAP_TARGET MYEXTLIB
- PERL_MALLOC_OK
- NAME NEEDS_LINKING NOECHO NORECURS NO_VC OBJECT OPTIMIZE PERL PERLMAINCC
- PERL_ARCHLIB PERL_LIB PERL_SRC PERM_RW PERM_RWX
- PL_FILES PM PM_FILTER PMLIBDIRS POLLUTE PPM_INSTALL_EXEC
- PPM_INSTALL_SCRIPT PREFIX
- PREREQ_PM SKIP TYPEMAPS VERSION VERSION_FROM XS XSOPT XSPROTOARG
- XS_VERSION clean depend dist dynamic_lib linkext macro realclean
- tool_autosplit
-
- MACPERL_SRC MACPERL_LIB MACLIBS_68K MACLIBS_PPC MACLIBS_SC MACLIBS_MRC
- MACLIBS_ALL_68K MACLIBS_ALL_PPC MACLIBS_SHARED
- /;
-
- # IMPORTS is used under OS/2 and Win32
-
- # @Overridable is close to @MM_Sections but not identical. The
- # order is important. Many subroutines declare macros. These
- # depend on each other. Let's try to collect the macros up front,
- # then pasthru, then the rules.
-
- # MM_Sections are the sections we have to call explicitly
- # in Overridable we have subroutines that are used indirectly
-
-
- @MM_Sections =
- qw(
-
- post_initialize const_config constants tool_autosplit tool_xsubpp
- tools_other dist macro depend cflags const_loadlibs const_cccmd
- post_constants
-
- pasthru
-
- c_o xs_c xs_o top_targets linkext dlsyms dynamic dynamic_bs
- dynamic_lib static static_lib htmlifypods manifypods processPL
- installbin subdirs
- clean realclean dist_basics dist_core dist_dir dist_test dist_ci
- install force perldepend makefile staticmake test ppd
-
- ); # loses section ordering
-
- @Overridable = @MM_Sections;
- push @Overridable, qw[
-
- dir_target libscan makeaperl needs_linking perm_rw perm_rwx
- subdir_x test_via_harness test_via_script
- ];
-
- push @MM_Sections, qw[
-
- pm_to_blib selfdocument
-
- ];
-
- # Postamble needs to be the last that was always the case
- push @MM_Sections, "postamble";
- push @Overridable, "postamble";
-
- # All sections are valid keys.
- @Recognized_Att_Keys{@MM_Sections} = (1) x @MM_Sections;
-
- # we will use all these variables in the Makefile
- @Get_from_Config =
- qw(
- ar cc cccdlflags ccdlflags dlext dlsrc ld lddlflags ldflags libc
- lib_ext obj_ext osname osvers ranlib sitelibexp sitearchexp so
- exe_ext full_ar
- );
-
- my $item;
- foreach $item (@Attrib_help){
- $Recognized_Att_Keys{$item} = 1;
- }
- foreach $item (@Get_from_Config) {
- $Recognized_Att_Keys{uc $item} = $Config{$item};
- print "Attribute '\U$item\E' => '$Config{$item}'\n"
- if ($Verbose >= 2);
- }
-
- #
- # When we eval a Makefile.PL in a subdirectory, that one will ask
- # us (the parent) for the values and will prepend "..", so that
- # all files to be installed end up below OUR ./blib
- #
- %Prepend_dot_dot =
- qw(
-
- INST_BIN 1 INST_EXE 1 INST_LIB 1 INST_ARCHLIB 1 INST_SCRIPT 1
- MAP_TARGET 1 INST_HTMLLIBDIR 1 INST_HTMLSCRIPTDIR 1
- INST_MAN1DIR 1 INST_MAN3DIR 1 PERL_SRC 1
-
- );
-
- my @keep = qw/
- NEEDS_LINKING HAS_LINK_CODE
- /;
- @Keep_after_flush{@keep} = (1) x @keep;
-}
-
-sub writeMakefile {
- die <<END;
-
-The extension you are trying to build apparently is rather old and
-most probably outdated. We detect that from the fact, that a
-subroutine "writeMakefile" is called, and this subroutine is not
-supported anymore since about October 1994.
-
-Please contact the author or look into CPAN (details about CPAN can be
-found in the FAQ and at http:/www.perl.com) for a more recent version
-of the extension. If you're really desperate, you can try to change
-the subroutine name from writeMakefile to WriteMakefile and rerun
-'perl Makefile.PL', but you're most probably left alone, when you do
-so.
-
-The MakeMaker team
-
-END
-}
-
-sub ExtUtils::MakeMaker::new {
- my($class,$self) = @_;
- my($key);
-
- print STDOUT "MakeMaker (v$VERSION)\n" if $Verbose;
- if (-f "MANIFEST" && ! -f "Makefile"){
- check_manifest();
- }
-
- $self = {} unless (defined $self);
-
- check_hints($self);
-
- my(%initial_att) = %$self; # record initial attributes
-
- my($prereq);
- foreach $prereq (sort keys %{$self->{PREREQ_PM}}) {
- my $eval = "require $prereq";
- eval $eval;
-
- if ($@) {
- warn "Warning: prerequisite $prereq failed to load: $@";
- }
- elsif ($prereq->VERSION < $self->{PREREQ_PM}->{$prereq} ){
- warn "Warning: prerequisite $prereq $self->{PREREQ_PM}->{$prereq} not found";
-# Why is/was this 'delete' here? We need PREREQ_PM later to make PPDs.
-# } else {
-# delete $self->{PREREQ_PM}{$prereq};
- }
- }
-# if (@unsatisfied){
-# unless (defined $ExtUtils::MakeMaker::useCPAN) {
-# print qq{MakeMaker WARNING: prerequisites not found (@unsatisfied)
-# Please install these modules first and rerun 'perl Makefile.PL'.\n};
-# if ($ExtUtils::MakeMaker::hasCPAN) {
-# $ExtUtils::MakeMaker::useCPAN = prompt(qq{Should I try to use the CPAN module to fetch them for you?},"yes");
-# } else {
-# print qq{Hint: You may want to install the CPAN module to autofetch the needed modules\n};
-# $ExtUtils::MakeMaker::useCPAN=0;
-# }
-# }
-# if ($ExtUtils::MakeMaker::useCPAN) {
-# require CPAN;
-# CPAN->import(@unsatisfied);
-# } else {
-# die qq{prerequisites not found (@unsatisfied)};
-# }
-# warn qq{WARNING: prerequisites not found (@unsatisfied)};
-# }
-
- if (defined $self->{CONFIGURE}) {
- if (ref $self->{CONFIGURE} eq 'CODE') {
- $self = { %$self, %{&{$self->{CONFIGURE}}}};
- } else {
- Carp::croak "Attribute 'CONFIGURE' to WriteMakefile() not a code reference\n";
- }
- }
-
- # This is for old Makefiles written pre 5.00, will go away
- if ( Carp::longmess("") =~ /runsubdirpl/s ){
- Carp::carp("WARNING: Please rerun 'perl Makefile.PL' to regenerate your Makefiles\n");
- }
-
- my $newclass = ++$PACKNAME;
- local @Parent = @Parent; # Protect against non-local exits
- {
-# no strict;
- print "Blessing Object into class [$newclass]\n" if $Verbose>=2;
- mv_all_methods("MY",$newclass);
- bless $self, $newclass;
- push @Parent, $self;
- @{"$newclass\:\:ISA"} = 'MM';
- }
-
- if (defined $Parent[-2]){
- $self->{PARENT} = $Parent[-2];
- my $key;
- for $key (keys %Prepend_dot_dot) {
- next unless defined $self->{PARENT}{$key};
- $self->{$key} = $self->{PARENT}{$key};
- # PERL and FULLPERL may be command verbs instead of full
- # file specifications under VMS. If so, don't turn them
- # into a filespec.
- $self->{$key} = $self->catdir("..",$self->{$key})
- unless $self->file_name_is_absolute($self->{$key})
- || ($^O eq 'VMS' and ($key =~ /PERL$/ && $self->{$key} =~ /^[\w\-\$]+$/));
- }
- if ($self->{PARENT}) {
- $self->{PARENT}->{CHILDREN}->{$newclass} = $self;
- foreach my $opt (qw(CAPI POLLUTE)) {
- if (exists $self->{PARENT}->{$opt}
- and not exists $self->{$opt})
- {
- # inherit, but only if already unspecified
- $self->{$opt} = $self->{PARENT}->{$opt};
- }
- }
- }
- } else {
- parse_args($self,split(' ', $ENV{PERL_MM_OPT} || ''),@ARGV);
- }
-
- $self->{NAME} ||= $self->guess_name;
-
- ($self->{NAME_SYM} = $self->{NAME}) =~ s/\W+/_/g;
-
- $self->init_main();
-
- if (! $self->{PERL_SRC} ) {
- my($pthinks) = $self->canonpath($INC{'Config.pm'});
- my($cthinks) = $self->catfile($Config{'archlibexp'},'Config.pm');
- $pthinks = VMS::Filespec::vmsify($pthinks) if $Is_VMS;
- if ($pthinks ne $cthinks &&
- !($Is_Win32 and lc($pthinks) eq lc($cthinks))) {
- print "Have $pthinks expected $cthinks\n";
- if ($Is_Win32) {
- $pthinks =~ s![/\\]Config\.pm$!!i; $pthinks =~ s!.*[/\\]!!;
- }
- else {
- $pthinks =~ s!/Config\.pm$!!; $pthinks =~ s!.*/!!;
- }
- print STDOUT <<END unless $self->{UNINSTALLED_PERL};
-Your perl and your Config.pm seem to have different ideas about the architecture
-they are running on.
-Perl thinks: [$pthinks]
-Config says: [$Config{archname}]
-This may or may not cause problems. Please check your installation of perl if you
-have problems building this extension.
-END
- }
- }
-
- $self->init_dirscan();
- $self->init_others();
- my($argv) = neatvalue(\@ARGV);
- $argv =~ s/^\[/(/;
- $argv =~ s/\]$/)/;
-
- push @{$self->{RESULT}}, <<END;
-# This Makefile is for the $self->{NAME} extension to perl.
-#
-# It was generated automatically by MakeMaker version
-# $VERSION (Revision: $Revision) from the contents of
-# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
-#
-# ANY CHANGES MADE HERE WILL BE LOST!
-#
-# MakeMaker ARGV: $argv
-#
-# MakeMaker Parameters:
-END
-
- foreach $key (sort keys %initial_att){
- my($v) = neatvalue($initial_att{$key});
- $v =~ s/(CODE|HASH|ARRAY|SCALAR)\([\dxa-f]+\)/$1\(...\)/;
- $v =~ tr/\n/ /s;
- push @{$self->{RESULT}}, "# $key => $v";
- }
-
- # turn the SKIP array into a SKIPHASH hash
- my (%skip,$skip);
- for $skip (@{$self->{SKIP} || []}) {
- $self->{SKIPHASH}{$skip} = 1;
- }
- delete $self->{SKIP}; # free memory
-
- if ($self->{PARENT}) {
- for (qw/install dist dist_basics dist_core dist_dir dist_test dist_ci/) {
- $self->{SKIPHASH}{$_} = 1;
- }
- }
-
- # We run all the subdirectories now. They don't have much to query
- # from the parent, but the parent has to query them: if they need linking!
- unless ($self->{NORECURS}) {
- $self->eval_in_subdirs if @{$self->{DIR}};
- }
-
- my $section;
- foreach $section ( @MM_Sections ){
- print "Processing Makefile '$section' section\n" if ($Verbose >= 2);
- my($skipit) = $self->skipcheck($section);
- if ($skipit){
- push @{$self->{RESULT}}, "\n# --- MakeMaker $section section $skipit.";
- } else {
- my(%a) = %{$self->{$section} || {}};
- push @{$self->{RESULT}}, "\n# --- MakeMaker $section section:";
- push @{$self->{RESULT}}, "# " . join ", ", %a if $Verbose && %a;
- push @{$self->{RESULT}}, $self->nicetext($self->$section( %a ));
- }
- }
-
- push @{$self->{RESULT}}, "\n# End.";
-
- $self;
-}
-
-sub WriteEmptyMakefile {
- if (-f 'Makefile.old') {
- chmod 0666, 'Makefile.old';
- unlink 'Makefile.old' or warn "unlink Makefile.old: $!";
- }
- rename 'Makefile', 'Makefile.old' or warn "rename Makefile Makefile.old: $!"
- if -f 'Makefile';
- open MF, '> Makefile' or die "open Makefile for write: $!";
- print MF <<'EOP';
-all:
-
-clean:
-
-install:
-
-makemakerdflt:
-
-test:
-
-EOP
- close MF or die "close Makefile for write: $!";
-}
-
-sub check_manifest {
- print STDOUT "Checking if your kit is complete...\n";
- require ExtUtils::Manifest;
- $ExtUtils::Manifest::Quiet=$ExtUtils::Manifest::Quiet=1; #avoid warning
- my(@missed)=ExtUtils::Manifest::manicheck();
- if (@missed){
- print STDOUT "Warning: the following files are missing in your kit:\n";
- print "\t", join "\n\t", @missed;
- print STDOUT "\n";
- print STDOUT "Please inform the author.\n";
- } else {
- print STDOUT "Looks good\n";
- }
-}
-
-sub parse_args{
- my($self, @args) = @_;
- foreach (@args){
- unless (m/(.*?)=(.*)/){
- help(),exit 1 if m/^help$/;
- ++$Verbose if m/^verb/;
- next;
- }
- my($name, $value) = ($1, $2);
- if ($value =~ m/^~(\w+)?/){ # tilde with optional username
- $value =~ s [^~(\w*)]
- [$1 ?
- ((getpwnam($1))[7] || "~$1") :
- (getpwuid($>))[7]
- ]ex;
- }
- $self->{uc($name)} = $value;
- }
-
- # catch old-style 'potential_libs' and inform user how to 'upgrade'
- if (defined $self->{potential_libs}){
- my($msg)="'potential_libs' => '$self->{potential_libs}' should be";
- if ($self->{potential_libs}){
- print STDOUT "$msg changed to:\n\t'LIBS' => ['$self->{potential_libs}']\n";
- } else {
- print STDOUT "$msg deleted.\n";
- }
- $self->{LIBS} = [$self->{potential_libs}];
- delete $self->{potential_libs};
- }
- # catch old-style 'ARMAYBE' and inform user how to 'upgrade'
- if (defined $self->{ARMAYBE}){
- my($armaybe) = $self->{ARMAYBE};
- print STDOUT "ARMAYBE => '$armaybe' should be changed to:\n",
- "\t'dynamic_lib' => {ARMAYBE => '$armaybe'}\n";
- my(%dl) = %{$self->{dynamic_lib} || {}};
- $self->{dynamic_lib} = { %dl, ARMAYBE => $armaybe};
- delete $self->{ARMAYBE};
- }
- if (defined $self->{LDTARGET}){
- print STDOUT "LDTARGET should be changed to LDFROM\n";
- $self->{LDFROM} = $self->{LDTARGET};
- delete $self->{LDTARGET};
- }
- # Turn a DIR argument on the command line into an array
- if (defined $self->{DIR} && ref \$self->{DIR} eq 'SCALAR') {
- # So they can choose from the command line, which extensions they want
- # the grep enables them to have some colons too much in case they
- # have to build a list with the shell
- $self->{DIR} = [grep $_, split ":", $self->{DIR}];
- }
- # Turn a INCLUDE_EXT argument on the command line into an array
- if (defined $self->{INCLUDE_EXT} && ref \$self->{INCLUDE_EXT} eq 'SCALAR') {
- $self->{INCLUDE_EXT} = [grep $_, split '\s+', $self->{INCLUDE_EXT}];
- }
- # Turn a EXCLUDE_EXT argument on the command line into an array
- if (defined $self->{EXCLUDE_EXT} && ref \$self->{EXCLUDE_EXT} eq 'SCALAR') {
- $self->{EXCLUDE_EXT} = [grep $_, split '\s+', $self->{EXCLUDE_EXT}];
- }
- my $mmkey;
- foreach $mmkey (sort keys %$self){
- print STDOUT " $mmkey => ", neatvalue($self->{$mmkey}), "\n" if $Verbose;
- print STDOUT "'$mmkey' is not a known MakeMaker parameter name.\n"
- unless exists $Recognized_Att_Keys{$mmkey};
- }
- $| = 1 if $Verbose;
-}
-
-sub check_hints {
- my($self) = @_;
- # We allow extension-specific hints files.
-
- return unless -d "hints";
-
- # First we look for the best hintsfile we have
- my(@goodhints);
- my($hint)="${^O}_$Config{osvers}";
- $hint =~ s/\./_/g;
- $hint =~ s/_$//;
- return unless $hint;
-
- # Also try without trailing minor version numbers.
- while (1) {
- last if -f "hints/$hint.pl"; # found
- } continue {
- last unless $hint =~ s/_[^_]*$//; # nothing to cut off
- }
- return unless -f "hints/$hint.pl"; # really there
-
- # execute the hintsfile:
-# use FileHandle ();
-# my $fh = new FileHandle;
-# $fh->open("hints/$hint.pl");
- local *FH;
- open(FH,"hints/$hint.pl");
-# @goodhints = <$fh>;
- @goodhints = <FH>;
-# $fh->close;
- close FH;
- print STDOUT "Processing hints file hints/$hint.pl\n";
- eval join('',@goodhints);
- print STDOUT $@ if $@;
-}
-
-sub mv_all_methods {
- my($from,$to) = @_;
- my($method);
- my($symtab) = \%{"${from}::"};
-# no strict;
-
- # Here you see the *current* list of methods that are overridable
- # from Makefile.PL via MY:: subroutines. As of VERSION 5.07 I'm
- # still trying to reduce the list to some reasonable minimum --
- # because I want to make it easier for the user. A.K.
-
- foreach $method (@Overridable) {
-
- # We cannot say "next" here. Nick might call MY->makeaperl
- # which isn't defined right now
-
- # Above statement was written at 4.23 time when Tk-b8 was
- # around. As Tk-b9 only builds with 5.002something and MM 5 is
- # standard, we try to enable the next line again. It was
- # commented out until MM 5.23
-
- next unless defined &{"${from}::$method"};
-
- *{"${to}::$method"} = \&{"${from}::$method"};
-
- # delete would do, if we were sure, nobody ever called
- # MY->makeaperl directly
-
- # delete $symtab->{$method};
-
- # If we delete a method, then it will be undefined and cannot
- # be called. But as long as we have Makefile.PLs that rely on
- # %MY:: being intact, we have to fill the hole with an
- # inheriting method:
-
- eval "package MY; sub $method { shift->SUPER::$method(\@_); }";
- }
-
- # We have to clean out %INC also, because the current directory is
- # changed frequently and Graham Barr prefers to get his version
- # out of a History.pl file which is "required" so woudn't get
- # loaded again in another extension requiring a History.pl
-
- # With perl5.002_01 the deletion of entries in %INC caused Tk-b11
- # to core dump in the middle of a require statement. The required
- # file was Tk/MMutil.pm. The consequence is, we have to be
- # extremely careful when we try to give perl a reason to reload a
- # library with same name. The workaround prefers to drop nothing
- # from %INC and teach the writers not to use such libraries.
-
-# my $inc;
-# foreach $inc (keys %INC) {
-# #warn "***$inc*** deleted";
-# delete $INC{$inc};
-# }
-}
-
-sub skipcheck {
- my($self) = shift;
- my($section) = @_;
- if ($section eq 'dynamic') {
- print STDOUT "Warning (non-fatal): Target 'dynamic' depends on targets ",
- "in skipped section 'dynamic_bs'\n"
- if $self->{SKIPHASH}{dynamic_bs} && $Verbose;
- print STDOUT "Warning (non-fatal): Target 'dynamic' depends on targets ",
- "in skipped section 'dynamic_lib'\n"
- if $self->{SKIPHASH}{dynamic_lib} && $Verbose;
- }
- if ($section eq 'dynamic_lib') {
- print STDOUT "Warning (non-fatal): Target '\$(INST_DYNAMIC)' depends on ",
- "targets in skipped section 'dynamic_bs'\n"
- if $self->{SKIPHASH}{dynamic_bs} && $Verbose;
- }
- if ($section eq 'static') {
- print STDOUT "Warning (non-fatal): Target 'static' depends on targets ",
- "in skipped section 'static_lib'\n"
- if $self->{SKIPHASH}{static_lib} && $Verbose;
- }
- return 'skipped' if $self->{SKIPHASH}{$section};
- return '';
-}
-
-sub flush {
- my $self = shift;
- my($chunk);
-# use FileHandle ();
-# my $fh = new FileHandle;
- local *FH;
- print STDOUT "Writing $self->{MAKEFILE} for $self->{NAME}\n";
-
- unlink($self->{MAKEFILE}, "MakeMaker.tmp", $Is_VMS ? 'Descrip.MMS' : '');
-# $fh->open(">MakeMaker.tmp") or die "Unable to open MakeMaker.tmp: $!";
- open(FH,">MakeMaker.tmp") or die "Unable to open MakeMaker.tmp: $!";
-
- for $chunk (@{$self->{RESULT}}) {
-# print $fh "$chunk\n";
- print FH "$chunk\n";
- }
-
-# $fh->close;
- close FH;
- my($finalname) = $self->{MAKEFILE};
- rename("MakeMaker.tmp", $finalname);
- chmod 0644, $finalname unless $Is_VMS;
-
- if ($self->{PARENT}) {
- foreach (keys %$self) { # safe memory
- delete $self->{$_} unless $Keep_after_flush{$_};
- }
- }
-
- system("$Config::Config{eunicefix} $finalname") unless $Config::Config{eunicefix} eq ":";
-}
-
-# The following mkbootstrap() is only for installations that are calling
-# the pre-4.1 mkbootstrap() from their old Makefiles. This MakeMaker
-# writes Makefiles, that use ExtUtils::Mkbootstrap directly.
-sub mkbootstrap {
- die <<END;
-!!! Your Makefile has been built such a long time ago, !!!
-!!! that is unlikely to work with current MakeMaker. !!!
-!!! Please rebuild your Makefile !!!
-END
-}
-
-# Ditto for mksymlists() as of MakeMaker 5.17
-sub mksymlists {
- die <<END;
-!!! Your Makefile has been built such a long time ago, !!!
-!!! that is unlikely to work with current MakeMaker. !!!
-!!! Please rebuild your Makefile !!!
-END
-}
-
-sub neatvalue {
- my($v) = @_;
- return "undef" unless defined $v;
- my($t) = ref $v;
- return "q[$v]" unless $t;
- if ($t eq 'ARRAY') {
- my(@m, $elem, @neat);
- push @m, "[";
- foreach $elem (@$v) {
- push @neat, "q[$elem]";
- }
- push @m, join ", ", @neat;
- push @m, "]";
- return join "", @m;
- }
- return "$v" unless $t eq 'HASH';
- my(@m, $key, $val);
- while (($key,$val) = each %$v){
- last unless defined $key; # cautious programming in case (undef,undef) is true
- push(@m,"$key=>".neatvalue($val)) ;
- }
- return "{ ".join(', ',@m)." }";
-}
-
-sub selfdocument {
- my($self) = @_;
- my(@m);
- if ($Verbose){
- push @m, "\n# Full list of MakeMaker attribute values:";
- foreach $key (sort keys %$self){
- next if $key eq 'RESULT' || $key =~ /^[A-Z][a-z]/;
- my($v) = neatvalue($self->{$key});
- $v =~ s/(CODE|HASH|ARRAY|SCALAR)\([\dxa-f]+\)/$1\(...\)/;
- $v =~ tr/\n/ /s;
- push @m, "# $key => $v";
- }
- }
- join "\n", @m;
-}
-
-package ExtUtils::MakeMaker;
-1;
-
-__END__
-
-=head1 NAME
-
-ExtUtils::MakeMaker - create an extension Makefile
-
-=head1 SYNOPSIS
-
-C<use ExtUtils::MakeMaker;>
-
-C<WriteMakefile( ATTRIBUTE =E<gt> VALUE [, ...] );>
-
-which is really
-
-C<MM-E<gt>new(\%att)-E<gt>flush;>
-
-=head1 DESCRIPTION
-
-This utility is designed to write a Makefile for an extension module
-from a Makefile.PL. It is based on the Makefile.SH model provided by
-Andy Dougherty and the perl5-porters.
-
-It splits the task of generating the Makefile into several subroutines
-that can be individually overridden. Each subroutine returns the text
-it wishes to have written to the Makefile.
-
-MakeMaker is object oriented. Each directory below the current
-directory that contains a Makefile.PL. Is treated as a separate
-object. This makes it possible to write an unlimited number of
-Makefiles with a single invocation of WriteMakefile().
-
-=head2 How To Write A Makefile.PL
-
-The short answer is: Don't.
-
- Always begin with h2xs.
- Always begin with h2xs!
- ALWAYS BEGIN WITH H2XS!
-
-even if you're not building around a header file, and even if you
-don't have an XS component.
-
-Run h2xs(1) before you start thinking about writing a module. For so
-called pm-only modules that consist of C<*.pm> files only, h2xs has
-the C<-X> switch. This will generate dummy files of all kinds that are
-useful for the module developer.
-
-The medium answer is:
-
- use ExtUtils::MakeMaker;
- WriteMakefile( NAME => "Foo::Bar" );
-
-The long answer is the rest of the manpage :-)
-
-=head2 Default Makefile Behaviour
-
-The generated Makefile enables the user of the extension to invoke
-
- perl Makefile.PL # optionally "perl Makefile.PL verbose"
- make
- make test # optionally set TEST_VERBOSE=1
- make install # See below
-
-The Makefile to be produced may be altered by adding arguments of the
-form C<KEY=VALUE>. E.g.
-
- perl Makefile.PL PREFIX=/tmp/myperl5
-
-Other interesting targets in the generated Makefile are
-
- make config # to check if the Makefile is up-to-date
- make clean # delete local temp files (Makefile gets renamed)
- make realclean # delete derived files (including ./blib)
- make ci # check in all the files in the MANIFEST file
- make dist # see below the Distribution Support section
-
-=head2 make test
-
-MakeMaker checks for the existence of a file named F<test.pl> in the
-current directory and if it exists it adds commands to the test target
-of the generated Makefile that will execute the script with the proper
-set of perl C<-I> options.
-
-MakeMaker also checks for any files matching glob("t/*.t"). It will
-add commands to the test target of the generated Makefile that execute
-all matching files via the L<Test::Harness> module with the C<-I>
-switches set correctly.
-
-=head2 make testdb
-
-A useful variation of the above is the target C<testdb>. It runs the
-test under the Perl debugger (see L<perldebug>). If the file
-F<test.pl> exists in the current directory, it is used for the test.
-
-If you want to debug some other testfile, set C<TEST_FILE> variable
-thusly:
-
- make testdb TEST_FILE=t/mytest.t
-
-By default the debugger is called using C<-d> option to perl. If you
-want to specify some other option, set C<TESTDB_SW> variable:
-
- make testdb TESTDB_SW=-Dx
-
-=head2 make install
-
-make alone puts all relevant files into directories that are named by
-the macros INST_LIB, INST_ARCHLIB, INST_SCRIPT, INST_HTMLLIBDIR,
-INST_HTMLSCRIPTDIR, INST_MAN1DIR, and INST_MAN3DIR. All these default
-to something below ./blib if you are I<not> building below the perl
-source directory. If you I<are> building below the perl source,
-INST_LIB and INST_ARCHLIB default to ../../lib, and INST_SCRIPT is not
-defined.
-
-The I<install> target of the generated Makefile copies the files found
-below each of the INST_* directories to their INSTALL*
-counterparts. Which counterparts are chosen depends on the setting of
-INSTALLDIRS according to the following table:
-
- INSTALLDIRS set to
- perl site
-
- INST_ARCHLIB INSTALLARCHLIB INSTALLSITEARCH
- INST_LIB INSTALLPRIVLIB INSTALLSITELIB
- INST_HTMLLIBDIR INSTALLHTMLPRIVLIBDIR INSTALLHTMLSITELIBDIR
- INST_HTMLSCRIPTDIR INSTALLHTMLSCRIPTDIR
- INST_BIN INSTALLBIN
- INST_SCRIPT INSTALLSCRIPT
- INST_MAN1DIR INSTALLMAN1DIR
- INST_MAN3DIR INSTALLMAN3DIR
-
-The INSTALL... macros in turn default to their %Config
-($Config{installprivlib}, $Config{installarchlib}, etc.) counterparts.
-
-You can check the values of these variables on your system with
-
- perl '-V:install.*'
-
-And to check the sequence in which the library directories are
-searched by perl, run
-
- perl -le 'print join $/, @INC'
-
-
-=head2 PREFIX and LIB attribute
-
-PREFIX and LIB can be used to set several INSTALL* attributes in one
-go. The quickest way to install a module in a non-standard place might
-be
-
- perl Makefile.PL LIB=~/lib
-
-This will install the module's architecture-independent files into
-~/lib, the architecture-dependent files into ~/lib/$archname.
-
-Another way to specify many INSTALL directories with a single
-parameter is PREFIX.
-
- perl Makefile.PL PREFIX=~
-
-This will replace the string specified by C<$Config{prefix}> in all
-C<$Config{install*}> values.
-
-Note, that in both cases the tilde expansion is done by MakeMaker, not
-by perl by default, nor by make.
-
-Conflicts between parameters LIB,
-PREFIX and the various INSTALL* arguments are resolved so that:
-
-=over 4
-
-=item *
-
-setting LIB overrides any setting of INSTALLPRIVLIB, INSTALLARCHLIB,
-INSTALLSITELIB, INSTALLSITEARCH (and they are not affected by PREFIX);
-
-=item *
-
-without LIB, setting PREFIX replaces the initial C<$Config{prefix}>
-part of those INSTALL* arguments, even if the latter are explicitly
-set (but are set to still start with C<$Config{prefix}>).
-
-=back
-
-If the user has superuser privileges, and is not working on AFS
-or relatives, then the defaults for
-INSTALLPRIVLIB, INSTALLARCHLIB, INSTALLSCRIPT, etc. will be appropriate,
-and this incantation will be the best:
-
- perl Makefile.PL; make; make test
- make install
-
-make install per default writes some documentation of what has been
-done into the file C<$(INSTALLARCHLIB)/perllocal.pod>. This feature
-can be bypassed by calling make pure_install.
-
-=head2 AFS users
-
-will have to specify the installation directories as these most
-probably have changed since perl itself has been installed. They will
-have to do this by calling
-
- perl Makefile.PL INSTALLSITELIB=/afs/here/today \
- INSTALLSCRIPT=/afs/there/now INSTALLMAN3DIR=/afs/for/manpages
- make
-
-Be careful to repeat this procedure every time you recompile an
-extension, unless you are sure the AFS installation directories are
-still valid.
-
-=head2 Static Linking of a new Perl Binary
-
-An extension that is built with the above steps is ready to use on
-systems supporting dynamic loading. On systems that do not support
-dynamic loading, any newly created extension has to be linked together
-with the available resources. MakeMaker supports the linking process
-by creating appropriate targets in the Makefile whenever an extension
-is built. You can invoke the corresponding section of the makefile with
-
- make perl
-
-That produces a new perl binary in the current directory with all
-extensions linked in that can be found in INST_ARCHLIB , SITELIBEXP,
-and PERL_ARCHLIB. To do that, MakeMaker writes a new Makefile, on
-UNIX, this is called Makefile.aperl (may be system dependent). If you
-want to force the creation of a new perl, it is recommended, that you
-delete this Makefile.aperl, so the directories are searched-through
-for linkable libraries again.
-
-The binary can be installed into the directory where perl normally
-resides on your machine with
-
- make inst_perl
-
-To produce a perl binary with a different name than C<perl>, either say
-
- perl Makefile.PL MAP_TARGET=myperl
- make myperl
- make inst_perl
-
-or say
-
- perl Makefile.PL
- make myperl MAP_TARGET=myperl
- make inst_perl MAP_TARGET=myperl
-
-In any case you will be prompted with the correct invocation of the
-C<inst_perl> target that installs the new binary into INSTALLBIN.
-
-make inst_perl per default writes some documentation of what has been
-done into the file C<$(INSTALLARCHLIB)/perllocal.pod>. This
-can be bypassed by calling make pure_inst_perl.
-
-Warning: the inst_perl: target will most probably overwrite your
-existing perl binary. Use with care!
-
-Sometimes you might want to build a statically linked perl although
-your system supports dynamic loading. In this case you may explicitly
-set the linktype with the invocation of the Makefile.PL or make:
-
- perl Makefile.PL LINKTYPE=static # recommended
-
-or
-
- make LINKTYPE=static # works on most systems
-
-=head2 Determination of Perl Library and Installation Locations
-
-MakeMaker needs to know, or to guess, where certain things are
-located. Especially INST_LIB and INST_ARCHLIB (where to put the files
-during the make(1) run), PERL_LIB and PERL_ARCHLIB (where to read
-existing modules from), and PERL_INC (header files and C<libperl*.*>).
-
-Extensions may be built either using the contents of the perl source
-directory tree or from the installed perl library. The recommended way
-is to build extensions after you have run 'make install' on perl
-itself. You can do that in any directory on your hard disk that is not
-below the perl source tree. The support for extensions below the ext
-directory of the perl distribution is only good for the standard
-extensions that come with perl.
-
-If an extension is being built below the C<ext/> directory of the perl
-source then MakeMaker will set PERL_SRC automatically (e.g.,
-C<../..>). If PERL_SRC is defined and the extension is recognized as
-a standard extension, then other variables default to the following:
-
- PERL_INC = PERL_SRC
- PERL_LIB = PERL_SRC/lib
- PERL_ARCHLIB = PERL_SRC/lib
- INST_LIB = PERL_LIB
- INST_ARCHLIB = PERL_ARCHLIB
-
-If an extension is being built away from the perl source then MakeMaker
-will leave PERL_SRC undefined and default to using the installed copy
-of the perl library. The other variables default to the following:
-
- PERL_INC = $archlibexp/CORE
- PERL_LIB = $privlibexp
- PERL_ARCHLIB = $archlibexp
- INST_LIB = ./blib/lib
- INST_ARCHLIB = ./blib/arch
-
-If perl has not yet been installed then PERL_SRC can be defined on the
-command line as shown in the previous section.
-
-
-=head2 Which architecture dependent directory?
-
-If you don't want to keep the defaults for the INSTALL* macros,
-MakeMaker helps you to minimize the typing needed: the usual
-relationship between INSTALLPRIVLIB and INSTALLARCHLIB is determined
-by Configure at perl compilation time. MakeMaker supports the user who
-sets INSTALLPRIVLIB. If INSTALLPRIVLIB is set, but INSTALLARCHLIB not,
-then MakeMaker defaults the latter to be the same subdirectory of
-INSTALLPRIVLIB as Configure decided for the counterparts in %Config ,
-otherwise it defaults to INSTALLPRIVLIB. The same relationship holds
-for INSTALLSITELIB and INSTALLSITEARCH.
-
-MakeMaker gives you much more freedom than needed to configure
-internal variables and get different results. It is worth to mention,
-that make(1) also lets you configure most of the variables that are
-used in the Makefile. But in the majority of situations this will not
-be necessary, and should only be done if the author of a package
-recommends it (or you know what you're doing).
-
-=head2 Using Attributes and Parameters
-
-The following attributes can be specified as arguments to WriteMakefile()
-or as NAME=VALUE pairs on the command line:
-
-=over 2
-
-=item ABSTRACT
-
-One line description of the module. Will be included in PPD file.
-
-=item ABSTRACT_FROM
-
-Name of the file that contains the package description. MakeMaker looks
-for a line in the POD matching /^($package\s-\s)(.*)/. This is typically
-the first line in the "=head1 NAME" section. $2 becomes the abstract.
-
-=item AUTHOR
-
-String containing name (and email address) of package author(s). Is used
-in PPD (Perl Package Description) files for PPM (Perl Package Manager).
-
-=item BINARY_LOCATION
-
-Used when creating PPD files for binary packages. It can be set to a
-full or relative path or URL to the binary archive for a particular
-architecture. For example:
-
- perl Makefile.PL BINARY_LOCATION=x86/Agent.tar.gz
-
-builds a PPD package that references a binary of the C<Agent> package,
-located in the C<x86> directory relative to the PPD itself.
-
-=item C
-
-Ref to array of *.c file names. Initialised from a directory scan
-and the values portion of the XS attribute hash. This is not
-currently used by MakeMaker but may be handy in Makefile.PLs.
-
-=item CAPI
-
-[This attribute is obsolete in Perl 5.6. PERL_OBJECT builds are C-compatible
-by default.]
-
-Switch to force usage of the Perl C API even when compiling for PERL_OBJECT.
-
-Note that this attribute is passed through to any recursive build,
-but if and only if the submodule's Makefile.PL itself makes no mention
-of the 'CAPI' attribute.
-
-=item CCFLAGS
-
-String that will be included in the compiler call command line between
-the arguments INC and OPTIMIZE.
-
-=item CONFIG
-
-Arrayref. E.g. [qw(archname manext)] defines ARCHNAME & MANEXT from
-config.sh. MakeMaker will add to CONFIG the following values anyway:
-ar
-cc
-cccdlflags
-ccdlflags
-dlext
-dlsrc
-ld
-lddlflags
-ldflags
-libc
-lib_ext
-obj_ext
-ranlib
-sitelibexp
-sitearchexp
-so
-
-=item CONFIGURE
-
-CODE reference. The subroutine should return a hash reference. The
-hash may contain further attributes, e.g. {LIBS =E<gt> ...}, that have to
-be determined by some evaluation method.
-
-=item DEFINE
-
-Something like C<"-DHAVE_UNISTD_H">
-
-=item DIR
-
-Ref to array of subdirectories containing Makefile.PLs e.g. [ 'sdbm'
-] in ext/SDBM_File
-
-=item DISTNAME
-
-Your name for distributing the package (by tar file). This defaults to
-NAME above.
-
-=item DL_FUNCS
-
-Hashref of symbol names for routines to be made available as universal
-symbols. Each key/value pair consists of the package name and an
-array of routine names in that package. Used only under AIX, OS/2,
-VMS and Win32 at present. The routine names supplied will be expanded
-in the same way as XSUB names are expanded by the XS() macro.
-Defaults to
-
- {"$(NAME)" => ["boot_$(NAME)" ] }
-
-e.g.
-
- {"RPC" => [qw( boot_rpcb rpcb_gettime getnetconfigent )],
- "NetconfigPtr" => [ 'DESTROY'] }
-
-Please see the L<ExtUtils::Mksymlists> documentation for more information
-about the DL_FUNCS, DL_VARS and FUNCLIST attributes.
-
-=item DL_VARS
-
-Array of symbol names for variables to be made available as universal symbols.
-Used only under AIX, OS/2, VMS and Win32 at present. Defaults to [].
-(e.g. [ qw(Foo_version Foo_numstreams Foo_tree ) ])
-
-=item EXCLUDE_EXT
-
-Array of extension names to exclude when doing a static build. This
-is ignored if INCLUDE_EXT is present. Consult INCLUDE_EXT for more
-details. (e.g. [ qw( Socket POSIX ) ] )
-
-This attribute may be most useful when specified as a string on the
-command line: perl Makefile.PL EXCLUDE_EXT='Socket Safe'
-
-=item EXE_FILES
-
-Ref to array of executable files. The files will be copied to the
-INST_SCRIPT directory. Make realclean will delete them from there
-again.
-
-=item FIRST_MAKEFILE
-
-The name of the Makefile to be produced. Defaults to the contents of
-MAKEFILE, but can be overridden. This is used for the second Makefile
-that will be produced for the MAP_TARGET.
-
-=item FULLPERL
-
-Perl binary able to run this extension.
-
-=item FUNCLIST
-
-This provides an alternate means to specify function names to be
-exported from the extension. Its value is a reference to an
-array of function names to be exported by the extension. These
-names are passed through unaltered to the linker options file.
-
-=item H
-
-Ref to array of *.h file names. Similar to C.
-
-=item HTMLLIBPODS
-
-Hashref of .pm and .pod files. MakeMaker will default this to all
- .pod and any .pm files that include POD directives. The files listed
-here will be converted to HTML format and installed as was requested
-at Configure time.
-
-=item HTMLSCRIPTPODS
-
-Hashref of pod-containing files. MakeMaker will default this to all
-EXE_FILES files that include POD directives. The files listed
-here will be converted to HTML format and installed as was requested
-at Configure time.
-
-=item IMPORTS
-
-This attribute is used to specify names to be imported into the
-extension. It is only used on OS/2 and Win32.
-
-=item INC
-
-Include file dirs eg: C<"-I/usr/5include -I/path/to/inc">
-
-=item INCLUDE_EXT
-
-Array of extension names to be included when doing a static build.
-MakeMaker will normally build with all of the installed extensions when
-doing a static build, and that is usually the desired behavior. If
-INCLUDE_EXT is present then MakeMaker will build only with those extensions
-which are explicitly mentioned. (e.g. [ qw( Socket POSIX ) ])
-
-It is not necessary to mention DynaLoader or the current extension when
-filling in INCLUDE_EXT. If the INCLUDE_EXT is mentioned but is empty then
-only DynaLoader and the current extension will be included in the build.
-
-This attribute may be most useful when specified as a string on the
-command line: perl Makefile.PL INCLUDE_EXT='POSIX Socket Devel::Peek'
-
-=item INSTALLARCHLIB
-
-Used by 'make install', which copies files from INST_ARCHLIB to this
-directory if INSTALLDIRS is set to perl.
-
-=item INSTALLBIN
-
-Directory to install binary files (e.g. tkperl) into.
-
-=item INSTALLDIRS
-
-Determines which of the two sets of installation directories to
-choose: installprivlib and installarchlib versus installsitelib and
-installsitearch. The first pair is chosen with INSTALLDIRS=perl, the
-second with INSTALLDIRS=site. Default is site.
-
-=item INSTALLHTMLPRIVLIBDIR
-
-This directory gets the HTML pages at 'make install' time. Defaults to
-$Config{installhtmlprivlibdir}.
-
-=item INSTALLHTMLSCRIPTDIR
-
-This directory gets the HTML pages at 'make install' time. Defaults to
-$Config{installhtmlscriptdir}.
-
-=item INSTALLHTMLSITELIBDIR
-
-This directory gets the HTML pages at 'make install' time. Defaults to
-$Config{installhtmlsitelibdir}.
-
-
-=item INSTALLMAN1DIR
-
-This directory gets the man pages at 'make install' time. Defaults to
-$Config{installman1dir}.
-
-=item INSTALLMAN3DIR
-
-This directory gets the man pages at 'make install' time. Defaults to
-$Config{installman3dir}.
-
-=item INSTALLPRIVLIB
-
-Used by 'make install', which copies files from INST_LIB to this
-directory if INSTALLDIRS is set to perl.
-
-=item INSTALLSCRIPT
-
-Used by 'make install' which copies files from INST_SCRIPT to this
-directory.
-
-=item INSTALLSITEARCH
-
-Used by 'make install', which copies files from INST_ARCHLIB to this
-directory if INSTALLDIRS is set to site (default).
-
-=item INSTALLSITELIB
-
-Used by 'make install', which copies files from INST_LIB to this
-directory if INSTALLDIRS is set to site (default).
-
-=item INST_ARCHLIB
-
-Same as INST_LIB for architecture dependent files.
-
-=item INST_BIN
-
-Directory to put real binary files during 'make'. These will be copied
-to INSTALLBIN during 'make install'
-
-=item INST_EXE
-
-Old name for INST_SCRIPT. Deprecated. Please use INST_SCRIPT if you
-need to use it.
-
-=item INST_HTMLLIBDIR
-
-Directory to hold the man pages in HTML format at 'make' time
-
-=item INST_HTMLSCRIPTDIR
-
-Directory to hold the man pages in HTML format at 'make' time
-
-=item INST_LIB
-
-Directory where we put library files of this extension while building
-it.
-
-=item INST_MAN1DIR
-
-Directory to hold the man pages at 'make' time
-
-=item INST_MAN3DIR
-
-Directory to hold the man pages at 'make' time
-
-=item INST_SCRIPT
-
-Directory, where executable files should be installed during
-'make'. Defaults to "./blib/script", just to have a dummy location during
-testing. make install will copy the files in INST_SCRIPT to
-INSTALLSCRIPT.
-
-=item LDFROM
-
-defaults to "$(OBJECT)" and is used in the ld command to specify
-what files to link/load from (also see dynamic_lib below for how to
-specify ld flags)
-
-=item LIB
-
-LIB should only be set at C<perl Makefile.PL> time but is allowed as a
-MakeMaker argument. It has the effect of
-setting both INSTALLPRIVLIB and INSTALLSITELIB to that value regardless any
-explicit setting of those arguments (or of PREFIX).
-INSTALLARCHLIB and INSTALLSITEARCH are set to the corresponding
-architecture subdirectory.
-
-=item LIBPERL_A
-
-The filename of the perllibrary that will be used together with this
-extension. Defaults to libperl.a.
-
-=item LIBS
-
-An anonymous array of alternative library
-specifications to be searched for (in order) until
-at least one library is found. E.g.
-
- 'LIBS' => ["-lgdbm", "-ldbm -lfoo", "-L/path -ldbm.nfs"]
-
-Mind, that any element of the array
-contains a complete set of arguments for the ld
-command. So do not specify
-
- 'LIBS' => ["-ltcl", "-ltk", "-lX11"]
-
-See ODBM_File/Makefile.PL for an example, where an array is needed. If
-you specify a scalar as in
-
- 'LIBS' => "-ltcl -ltk -lX11"
-
-MakeMaker will turn it into an array with one element.
-
-=item LINKTYPE
-
-'static' or 'dynamic' (default unless usedl=undef in
-config.sh). Should only be used to force static linking (also see
-linkext below).
-
-=item MAKEAPERL
-
-Boolean which tells MakeMaker, that it should include the rules to
-make a perl. This is handled automatically as a switch by
-MakeMaker. The user normally does not need it.
-
-=item MAKEFILE
-
-The name of the Makefile to be produced.
-
-=item MAN1PODS
-
-Hashref of pod-containing files. MakeMaker will default this to all
-EXE_FILES files that include POD directives. The files listed
-here will be converted to man pages and installed as was requested
-at Configure time.
-
-=item MAN3PODS
-
-Hashref of .pm and .pod files. MakeMaker will default this to all
- .pod and any .pm files that include POD directives. The files listed
-here will be converted to man pages and installed as was requested
-at Configure time.
-
-=item MAP_TARGET
-
-If it is intended, that a new perl binary be produced, this variable
-may hold a name for that binary. Defaults to perl
-
-=item MYEXTLIB
-
-If the extension links to a library that it builds set this to the
-name of the library (see SDBM_File)
-
-=item NAME
-
-Perl module name for this extension (DBD::Oracle). This will default
-to the directory name but should be explicitly defined in the
-Makefile.PL.
-
-=item NEEDS_LINKING
-
-MakeMaker will figure out if an extension contains linkable code
-anywhere down the directory tree, and will set this variable
-accordingly, but you can speed it up a very little bit if you define
-this boolean variable yourself.
-
-=item NOECHO
-
-Defaults to C<@>. By setting it to an empty string you can generate a
-Makefile that echos all commands. Mainly used in debugging MakeMaker
-itself.
-
-=item NORECURS
-
-Boolean. Attribute to inhibit descending into subdirectories.
-
-=item NO_VC
-
-In general, any generated Makefile checks for the current version of
-MakeMaker and the version the Makefile was built under. If NO_VC is
-set, the version check is neglected. Do not write this into your
-Makefile.PL, use it interactively instead.
-
-=item OBJECT
-
-List of object files, defaults to '$(BASEEXT)$(OBJ_EXT)', but can be a long
-string containing all object files, e.g. "tkpBind.o
-tkpButton.o tkpCanvas.o"
-
-(Where BASEEXT is the last component of NAME, and OBJ_EXT is $Config{obj_ext}.)
-
-=item OPTIMIZE
-
-Defaults to C<-O>. Set it to C<-g> to turn debugging on. The flag is
-passed to subdirectory makes.
-
-=item PERL
-
-Perl binary for tasks that can be done by miniperl
-
-=item PERLMAINCC
-
-The call to the program that is able to compile perlmain.c. Defaults
-to $(CC).
-
-=item PERL_ARCHLIB
-
-Same as below, but for architecture dependent files.
-
-=item PERL_LIB
-
-Directory containing the Perl library to use.
-
-=item PERL_MALLOC_OK
-
-defaults to 0. Should be set to TRUE if the extension can work with
-the memory allocation routines substituted by the Perl malloc() subsystem.
-This should be applicable to most extensions with exceptions of those
-
-=over 4
-
-=item *
-
-with bugs in memory allocations which are caught by Perl's malloc();
-
-=item *
-
-which interact with the memory allocator in other ways than via
-malloc(), realloc(), free(), calloc(), sbrk() and brk();
-
-=item *
-
-which rely on special alignment which is not provided by Perl's malloc().
-
-=back
-
-B<NOTE.> Negligence to set this flag in I<any one> of loaded extension
-nullifies many advantages of Perl's malloc(), such as better usage of
-system resources, error detection, memory usage reporting, catchable failure
-of memory allocations, etc.
-
-=item PERL_SRC
-
-Directory containing the Perl source code (use of this should be
-avoided, it may be undefined)
-
-=item PERM_RW
-
-Desired permission for read/writable files. Defaults to C<644>.
-See also L<MM_Unix/perm_rw>.
-
-=item PERM_RWX
-
-Desired permission for executable files. Defaults to C<755>.
-See also L<MM_Unix/perm_rwx>.
-
-=item PL_FILES
-
-Ref to hash of files to be processed as perl programs. MakeMaker
-will default to any found *.PL file (except Makefile.PL) being keys
-and the basename of the file being the value. E.g.
-
- {'foobar.PL' => 'foobar'}
-
-The *.PL files are expected to produce output to the target files
-themselves. If multiple files can be generated from the same *.PL
-file then the value in the hash can be a reference to an array of
-target file names. E.g.
-
- {'foobar.PL' => ['foobar1','foobar2']}
-
-=item PM
-
-Hashref of .pm files and *.pl files to be installed. e.g.
-
- {'name_of_file.pm' => '$(INST_LIBDIR)/install_as.pm'}
-
-By default this will include *.pm and *.pl and the files found in
-the PMLIBDIRS directories. Defining PM in the
-Makefile.PL will override PMLIBDIRS.
-
-=item PMLIBDIRS
-
-Ref to array of subdirectories containing library files. Defaults to
-[ 'lib', $(BASEEXT) ]. The directories will be scanned and I<any> files
-they contain will be installed in the corresponding location in the
-library. A libscan() method can be used to alter the behaviour.
-Defining PM in the Makefile.PL will override PMLIBDIRS.
-
-(Where BASEEXT is the last component of NAME.)
-
-=item PM_FILTER
-
-A filter program, in the traditional Unix sense (input from stdin, output
-to stdout) that is passed on each .pm file during the build (in the
-pm_to_blib() phase). It is empty by default, meaning no filtering is done.
-
-Great care is necessary when defining the command if quoting needs to be
-done. For instance, you would need to say:
-
- {'PM_FILTER' => 'grep -v \\"^\\#\\"'}
-
-to remove all the leading coments on the fly during the build. The
-extra \\ are necessary, unfortunately, because this variable is interpolated
-within the context of a Perl program built on the command line, and double
-quotes are what is used with the -e switch to build that command line. The
-# is escaped for the Makefile, since what is going to be generated will then
-be:
-
- PM_FILTER = grep -v \"^\#\"
-
-Without the \\ before the #, we'd have the start of a Makefile comment,
-and the macro would be incorrectly defined.
-
-=item POLLUTE
-
-Release 5.005 grandfathered old global symbol names by providing preprocessor
-macros for extension source compatibility. As of release 5.6, these
-preprocessor definitions are not available by default. The POLLUTE flag
-specifies that the old names should still be defined:
-
- perl Makefile.PL POLLUTE=1
-
-Please inform the module author if this is necessary to successfully install
-a module under 5.6 or later.
-
-=item PPM_INSTALL_EXEC
-
-Name of the executable used to run C<PPM_INSTALL_SCRIPT> below. (e.g. perl)
-
-=item PPM_INSTALL_SCRIPT
-
-Name of the script that gets executed by the Perl Package Manager after
-the installation of a package.
-
-=item PREFIX
-
-Can be used to set the three INSTALL* attributes in one go (except for
-probably INSTALLMAN1DIR, if it is not below PREFIX according to
-%Config). They will have PREFIX as a common directory node and will
-branch from that node into lib/, lib/ARCHNAME or whatever Configure
-decided at the build time of your perl (unless you override one of
-them, of course).
-
-=item PREREQ_PM
-
-Hashref: Names of modules that need to be available to run this
-extension (e.g. Fcntl for SDBM_File) are the keys of the hash and the
-desired version is the value. If the required version number is 0, we
-only check if any version is installed already.
-
-=item SKIP
-
-Arryref. E.g. [qw(name1 name2)] skip (do not write) sections of the
-Makefile. Caution! Do not use the SKIP attribute for the negligible
-speedup. It may seriously damage the resulting Makefile. Only use it
-if you really need it.
-
-=item TYPEMAPS
-
-Ref to array of typemap file names. Use this when the typemaps are
-in some directory other than the current directory or when they are
-not named B<typemap>. The last typemap in the list takes
-precedence. A typemap in the current directory has highest
-precedence, even if it isn't listed in TYPEMAPS. The default system
-typemap has lowest precedence.
-
-=item VERSION
-
-Your version number for distributing the package. This defaults to
-0.1.
-
-=item VERSION_FROM
-
-Instead of specifying the VERSION in the Makefile.PL you can let
-MakeMaker parse a file to determine the version number. The parsing
-routine requires that the file named by VERSION_FROM contains one
-single line to compute the version number. The first line in the file
-that contains the regular expression
-
- /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/
-
-will be evaluated with eval() and the value of the named variable
-B<after> the eval() will be assigned to the VERSION attribute of the
-MakeMaker object. The following lines will be parsed o.k.:
-
- $VERSION = '1.00';
- *VERSION = \'1.01';
- ( $VERSION ) = '$Revision: 1.222 $ ' =~ /\$Revision:\s+([^\s]+)/;
- $FOO::VERSION = '1.10';
- *FOO::VERSION = \'1.11';
- our $VERSION = 1.2.3; # new for perl5.6.0
-
-but these will fail:
-
- my $VERSION = '1.01';
- local $VERSION = '1.02';
- local $FOO::VERSION = '1.30';
-
-(Putting C<my> or C<local> on the preceding line will work o.k.)
-
-The file named in VERSION_FROM is not added as a dependency to
-Makefile. This is not really correct, but it would be a major pain
-during development to have to rewrite the Makefile for any smallish
-change in that file. If you want to make sure that the Makefile
-contains the correct VERSION macro after any change of the file, you
-would have to do something like
-
- depend => { Makefile => '$(VERSION_FROM)' }
-
-See attribute C<depend> below.
-
-=item XS
-
-Hashref of .xs files. MakeMaker will default this. e.g.
-
- {'name_of_file.xs' => 'name_of_file.c'}
-
-The .c files will automatically be included in the list of files
-deleted by a make clean.
-
-=item XSOPT
-
-String of options to pass to xsubpp. This might include C<-C++> or
-C<-extern>. Do not include typemaps here; the TYPEMAP parameter exists for
-that purpose.
-
-=item XSPROTOARG
-
-May be set to an empty string, which is identical to C<-prototypes>, or
-C<-noprototypes>. See the xsubpp documentation for details. MakeMaker
-defaults to the empty string.
-
-=item XS_VERSION
-
-Your version number for the .xs file of this package. This defaults
-to the value of the VERSION attribute.
-
-=back
-
-=head2 Additional lowercase attributes
-
-can be used to pass parameters to the methods which implement that
-part of the Makefile.
-
-=over 2
-
-=item clean
-
- {FILES => "*.xyz foo"}
-
-=item depend
-
- {ANY_TARGET => ANY_DEPENDECY, ...}
-
-(ANY_TARGET must not be given a double-colon rule by MakeMaker.)
-
-=item dist
-
- {TARFLAGS => 'cvfF', COMPRESS => 'gzip', SUFFIX => '.gz',
- SHAR => 'shar -m', DIST_CP => 'ln', ZIP => '/bin/zip',
- ZIPFLAGS => '-rl', DIST_DEFAULT => 'private tardist' }
-
-If you specify COMPRESS, then SUFFIX should also be altered, as it is
-needed to tell make the target file of the compression. Setting
-DIST_CP to ln can be useful, if you need to preserve the timestamps on
-your files. DIST_CP can take the values 'cp', which copies the file,
-'ln', which links the file, and 'best' which copies symbolic links and
-links the rest. Default is 'best'.
-
-=item dynamic_lib
-
- {ARMAYBE => 'ar', OTHERLDFLAGS => '...', INST_DYNAMIC_DEP => '...'}
-
-=item linkext
-
- {LINKTYPE => 'static', 'dynamic' or ''}
-
-NB: Extensions that have nothing but *.pm files had to say
-
- {LINKTYPE => ''}
-
-with Pre-5.0 MakeMakers. Since version 5.00 of MakeMaker such a line
-can be deleted safely. MakeMaker recognizes when there's nothing to
-be linked.
-
-=item macro
-
- {ANY_MACRO => ANY_VALUE, ...}
-
-=item realclean
-
- {FILES => '$(INST_ARCHAUTODIR)/*.xyz'}
-
-=item test
-
- {TESTS => 't/*.t'}
-
-=item tool_autosplit
-
- {MAXLEN => 8}
-
-=back
-
-=head2 Overriding MakeMaker Methods
-
-If you cannot achieve the desired Makefile behaviour by specifying
-attributes you may define private subroutines in the Makefile.PL.
-Each subroutines returns the text it wishes to have written to
-the Makefile. To override a section of the Makefile you can
-either say:
-
- sub MY::c_o { "new literal text" }
-
-or you can edit the default by saying something like:
-
- sub MY::c_o {
- package MY; # so that "SUPER" works right
- my $inherited = shift->SUPER::c_o(@_);
- $inherited =~ s/old text/new text/;
- $inherited;
- }
-
-If you are running experiments with embedding perl as a library into
-other applications, you might find MakeMaker is not sufficient. You'd
-better have a look at ExtUtils::Embed which is a collection of utilities
-for embedding.
-
-If you still need a different solution, try to develop another
-subroutine that fits your needs and submit the diffs to
-F<perl5-porters@perl.org> or F<comp.lang.perl.moderated> as appropriate.
-
-For a complete description of all MakeMaker methods see L<ExtUtils::MM_Unix>.
-
-Here is a simple example of how to add a new target to the generated
-Makefile:
-
- sub MY::postamble {
- '
- $(MYEXTLIB): sdbm/Makefile
- cd sdbm && $(MAKE) all
- ';
- }
-
-
-=head2 Hintsfile support
-
-MakeMaker.pm uses the architecture specific information from
-Config.pm. In addition it evaluates architecture specific hints files
-in a C<hints/> directory. The hints files are expected to be named
-like their counterparts in C<PERL_SRC/hints>, but with an C<.pl> file
-name extension (eg. C<next_3_2.pl>). They are simply C<eval>ed by
-MakeMaker within the WriteMakefile() subroutine, and can be used to
-execute commands as well as to include special variables. The rules
-which hintsfile is chosen are the same as in Configure.
-
-The hintsfile is eval()ed immediately after the arguments given to
-WriteMakefile are stuffed into a hash reference $self but before this
-reference becomes blessed. So if you want to do the equivalent to
-override or create an attribute you would say something like
-
- $self->{LIBS} = ['-ldbm -lucb -lc'];
-
-=head2 Distribution Support
-
-For authors of extensions MakeMaker provides several Makefile
-targets. Most of the support comes from the ExtUtils::Manifest module,
-where additional documentation can be found.
-
-=over 4
-
-=item make distcheck
-
-reports which files are below the build directory but not in the
-MANIFEST file and vice versa. (See ExtUtils::Manifest::fullcheck() for
-details)
-
-=item make skipcheck
-
-reports which files are skipped due to the entries in the
-C<MANIFEST.SKIP> file (See ExtUtils::Manifest::skipcheck() for
-details)
-
-=item make distclean
-
-does a realclean first and then the distcheck. Note that this is not
-needed to build a new distribution as long as you are sure that the
-MANIFEST file is ok.
-
-=item make manifest
-
-rewrites the MANIFEST file, adding all remaining files found (See
-ExtUtils::Manifest::mkmanifest() for details)
-
-=item make distdir
-
-Copies all the files that are in the MANIFEST file to a newly created
-directory with the name C<$(DISTNAME)-$(VERSION)>. If that directory
-exists, it will be removed first.
-
-=item make disttest
-
-Makes a distdir first, and runs a C<perl Makefile.PL>, a make, and
-a make test in that directory.
-
-=item make tardist
-
-First does a distdir. Then a command $(PREOP) which defaults to a null
-command, followed by $(TOUNIX), which defaults to a null command under
-UNIX, and will convert files in distribution directory to UNIX format
-otherwise. Next it runs C<tar> on that directory into a tarfile and
-deletes the directory. Finishes with a command $(POSTOP) which
-defaults to a null command.
-
-=item make dist
-
-Defaults to $(DIST_DEFAULT) which in turn defaults to tardist.
-
-=item make uutardist
-
-Runs a tardist first and uuencodes the tarfile.
-
-=item make shdist
-
-First does a distdir. Then a command $(PREOP) which defaults to a null
-command. Next it runs C<shar> on that directory into a sharfile and
-deletes the intermediate directory again. Finishes with a command
-$(POSTOP) which defaults to a null command. Note: For shdist to work
-properly a C<shar> program that can handle directories is mandatory.
-
-=item make zipdist
-
-First does a distdir. Then a command $(PREOP) which defaults to a null
-command. Runs C<$(ZIP) $(ZIPFLAGS)> on that directory into a
-zipfile. Then deletes that directory. Finishes with a command
-$(POSTOP) which defaults to a null command.
-
-=item make ci
-
-Does a $(CI) and a $(RCS_LABEL) on all files in the MANIFEST file.
-
-=back
-
-Customization of the dist targets can be done by specifying a hash
-reference to the dist attribute of the WriteMakefile call. The
-following parameters are recognized:
-
- CI ('ci -u')
- COMPRESS ('gzip --best')
- POSTOP ('@ :')
- PREOP ('@ :')
- TO_UNIX (depends on the system)
- RCS_LABEL ('rcs -q -Nv$(VERSION_SYM):')
- SHAR ('shar')
- SUFFIX ('.gz')
- TAR ('tar')
- TARFLAGS ('cvf')
- ZIP ('zip')
- ZIPFLAGS ('-r')
-
-An example:
-
- WriteMakefile( 'dist' => { COMPRESS=>"bzip2", SUFFIX=>".bz2" })
-
-=head2 Disabling an extension
-
-If some events detected in F<Makefile.PL> imply that there is no way
-to create the Module, but this is a normal state of things, then you
-can create a F<Makefile> which does nothing, but succeeds on all the
-"usual" build targets. To do so, use
-
- ExtUtils::MakeMaker::WriteEmptyMakefile();
-
-instead of WriteMakefile().
-
-This may be useful if other modules expect this module to be I<built>
-OK, as opposed to I<work> OK (say, this system-dependent module builds
-in a subdirectory of some other distribution, or is listed as a
-dependency in a CPAN::Bundle, but the functionality is supported by
-different means on the current architecture).
-
-=head1 ENVIRONMENT
-
-=over 8
-
-=item PERL_MM_OPT
-
-Command line options used by C<MakeMaker-E<gt>new()>, and thus by
-C<WriteMakefile()>. The string is split on whitespace, and the result
-is processed before any actual command line arguments are processed.
-
-=back
-
-=head1 SEE ALSO
-
-ExtUtils::MM_Unix, ExtUtils::Manifest, ExtUtils::testlib,
-ExtUtils::Install, ExtUtils::Embed
-
-=head1 AUTHORS
-
-Andy Dougherty <F<doughera@lafcol.lafayette.edu>>, Andreas KE<ouml>nig
-<F<A.Koenig@franz.ww.TU-Berlin.DE>>, Tim Bunce <F<Tim.Bunce@ig.co.uk>>.
-VMS support by Charles Bailey <F<bailey@newman.upenn.edu>>. OS/2
-support by Ilya Zakharevich <F<ilya@math.ohio-state.edu>>. Contact the
-makemaker mailing list C<mailto:makemaker@franz.ww.tu-berlin.de>, if
-you have any questions.
-
-=cut
diff --git a/contrib/perl5/lib/ExtUtils/Manifest.pm b/contrib/perl5/lib/ExtUtils/Manifest.pm
deleted file mode 100644
index 50a4263..0000000
--- a/contrib/perl5/lib/ExtUtils/Manifest.pm
+++ /dev/null
@@ -1,463 +0,0 @@
-package ExtUtils::Manifest;
-
-require Exporter;
-use Config;
-use File::Find;
-use File::Copy 'copy';
-use Carp;
-use strict;
-
-use vars qw($VERSION @ISA @EXPORT_OK
- $Is_MacOS $Is_VMS $Debug $Verbose $Quiet $MANIFEST $found);
-
-$VERSION = substr(q$Revision: 1.33 $, 10);
-@ISA=('Exporter');
-@EXPORT_OK = ('mkmanifest', 'manicheck', 'fullcheck', 'filecheck',
- 'skipcheck', 'maniread', 'manicopy');
-
-$Is_MacOS = $^O eq 'MacOS';
-$Is_VMS = $^O eq 'VMS';
-if ($Is_VMS) { require File::Basename }
-
-$Debug = 0;
-$Verbose = 1;
-$Quiet = 0;
-$MANIFEST = 'MANIFEST';
-
-# Really cool fix from Ilya :)
-unless (defined $Config{d_link}) {
- no warnings;
- *ln = \&cp;
-}
-
-sub mkmanifest {
- my $manimiss = 0;
- my $read = maniread() or $manimiss++;
- $read = {} if $manimiss;
- local *M;
- rename $MANIFEST, "$MANIFEST.bak" unless $manimiss;
- open M, ">$MANIFEST" or die "Could not open $MANIFEST: $!";
- my $matches = _maniskip();
- my $found = manifind();
- my($key,$val,$file,%all);
- %all = (%$found, %$read);
- $all{$MANIFEST} = ($Is_VMS ? "$MANIFEST\t\t" : '') . 'This list of files'
- if $manimiss; # add new MANIFEST to known file list
- foreach $file (sort keys %all) {
- next if &$matches($file);
- if ($Verbose){
- warn "Added to $MANIFEST: $file\n" unless exists $read->{$file};
- }
- my $text = $all{$file};
- ($file,$text) = split(/\s+/,$text,2) if $Is_VMS && $text;
- $file = _unmacify($file);
- my $tabs = (5 - (length($file)+1)/8);
- $tabs = 1 if $tabs < 1;
- $tabs = 0 unless $text;
- print M $file, "\t" x $tabs, $text, "\n";
- }
- close M;
-}
-
-sub manifind {
- local $found = {};
- find(sub {return if -d $_;
- (my $name = $File::Find::name) =~ s|^\./||;
- $name =~ s/^:([^:]+)$/$1/ if $Is_MacOS;
- warn "Debug: diskfile $name\n" if $Debug;
- $name =~ s#(.*)\.$#\L$1# if $Is_VMS;
- $found->{$name} = "";}, $Is_MacOS ? ":" : ".");
- $found;
-}
-
-sub fullcheck {
- _manicheck(3);
-}
-
-sub manicheck {
- return @{(_manicheck(1))[0]};
-}
-
-sub filecheck {
- return @{(_manicheck(2))[1]};
-}
-
-sub skipcheck {
- _manicheck(6);
-}
-
-sub _manicheck {
- my($arg) = @_;
- my $read = maniread();
- my $found = manifind();
- my $file;
- my $dosnames=(defined(&Dos::UseLFN) && Dos::UseLFN()==0);
- my(@missfile,@missentry);
- if ($arg & 1){
- foreach $file (sort keys %$read){
- warn "Debug: manicheck checking from $MANIFEST $file\n" if $Debug;
- if ($dosnames){
- $file = lc $file;
- $file =~ s=(\.(\w|-)+)=substr ($1,0,4)=ge;
- $file =~ s=((\w|-)+)=substr ($1,0,8)=ge;
- }
- unless ( exists $found->{$file} ) {
- warn "No such file: $file\n" unless $Quiet;
- push @missfile, $file;
- }
- }
- }
- if ($arg & 2){
- $read ||= {};
- my $matches = _maniskip();
- my $skipwarn = $arg & 4;
- foreach $file (sort keys %$found){
- if (&$matches($file)){
- warn "Skipping $file\n" if $skipwarn;
- next;
- }
- warn "Debug: manicheck checking from disk $file\n" if $Debug;
- unless ( exists $read->{$file} ) {
- my $canon = "\t" . _unmacify($file) if $Is_MacOS;
- warn "Not in $MANIFEST: $file$canon\n" unless $Quiet;
- push @missentry, $file;
- }
- }
- }
- (\@missfile,\@missentry);
-}
-
-sub maniread {
- my ($mfile) = @_;
- $mfile ||= $MANIFEST;
- my $read = {};
- local *M;
- unless (open M, $mfile){
- warn "$mfile: $!";
- return $read;
- }
- while (<M>){
- chomp;
- next if /^#/;
- if ($Is_MacOS) {
- my($item,$text) = /^(\S+)\s*(.*)/;
- $item = _macify($item);
- $item =~ s/\\([0-3][0-7][0-7])/sprintf("%c", oct($1))/ge;
- $read->{$item}=$text;
- }
- elsif ($Is_VMS) {
- my($file)= /^(\S+)/;
- next unless $file;
- my($base,$dir) = File::Basename::fileparse($file);
- # Resolve illegal file specifications in the same way as tar
- $dir =~ tr/./_/;
- my(@pieces) = split(/\./,$base);
- if (@pieces > 2) { $base = shift(@pieces) . '.' . join('_',@pieces); }
- my $okfile = "$dir$base";
- warn "Debug: Illegal name $file changed to $okfile\n" if $Debug;
- $read->{"\L$okfile"}=$_;
- }
- else { /^(\S+)\s*(.*)/ and $read->{$1}=$2; }
- }
- close M;
- $read;
-}
-
-# returns an anonymous sub that decides if an argument matches
-sub _maniskip {
- my ($mfile) = @_;
- my $matches = sub {0};
- my @skip ;
- $mfile ||= "$MANIFEST.SKIP";
- local *M;
- return $matches unless -f $mfile;
- open M, $mfile or return $matches;
- while (<M>){
- chomp;
- next if /^#/;
- next if /^\s*$/;
- push @skip, _macify($_);
- }
- close M;
- my $opts = $Is_VMS ? 'oi ' : 'o ';
- my $sub = "\$matches = "
- . "sub { my(\$arg)=\@_; return 1 if "
- . join (" || ", (map {s!/!\\/!g; "\$arg =~ m/$_/$opts"} @skip), 0)
- . " }";
- eval $sub;
- print "Debug: $sub\n" if $Debug;
- $matches;
-}
-
-sub manicopy {
- my($read,$target,$how)=@_;
- croak "manicopy() called without target argument" unless defined $target;
- $how ||= 'cp';
- require File::Path;
- require File::Basename;
- my(%dirs,$file);
- $target = VMS::Filespec::unixify($target) if $Is_VMS;
- File::Path::mkpath([ $target ],! $Quiet,$Is_VMS ? undef : 0755);
- foreach $file (keys %$read){
- if ($Is_MacOS) {
- if ($file =~ m!:!) {
- my $dir = _maccat($target, $file);
- $dir =~ s/[^:]+$//;
- File::Path::mkpath($dir,1,0755);
- }
- cp_if_diff($file, _maccat($target, $file), $how);
- } else {
- $file = VMS::Filespec::unixify($file) if $Is_VMS;
- if ($file =~ m!/!) { # Ilya, that hurts, I fear, or maybe not?
- my $dir = File::Basename::dirname($file);
- $dir = VMS::Filespec::unixify($dir) if $Is_VMS;
- File::Path::mkpath(["$target/$dir"],! $Quiet,$Is_VMS ? undef : 0755);
- }
- cp_if_diff($file, "$target/$file", $how);
- }
- }
-}
-
-sub cp_if_diff {
- my($from, $to, $how)=@_;
- -f $from or carp "$0: $from not found";
- my($diff) = 0;
- local(*F,*T);
- open(F,"< $from\0") or croak "Can't read $from: $!\n";
- if (open(T,"< $to\0")) {
- while (<F>) { $diff++,last if $_ ne <T>; }
- $diff++ unless eof(T);
- close T;
- }
- else { $diff++; }
- close F;
- if ($diff) {
- if (-e $to) {
- unlink($to) or confess "unlink $to: $!";
- }
- STRICT_SWITCH: {
- best($from,$to), last STRICT_SWITCH if $how eq 'best';
- cp($from,$to), last STRICT_SWITCH if $how eq 'cp';
- ln($from,$to), last STRICT_SWITCH if $how eq 'ln';
- croak("ExtUtils::Manifest::cp_if_diff " .
- "called with illegal how argument [$how]. " .
- "Legal values are 'best', 'cp', and 'ln'.");
- }
- }
-}
-
-sub cp {
- my ($srcFile, $dstFile) = @_;
- my ($perm,$access,$mod) = (stat $srcFile)[2,8,9];
- copy($srcFile,$dstFile);
- utime $access, $mod + ($Is_VMS ? 1 : 0), $dstFile;
- # chmod a+rX-w,go-w
- chmod( 0444 | ( $perm & 0111 ? 0111 : 0 ), $dstFile ) unless ($^O eq 'MacOS');
-}
-
-sub ln {
- my ($srcFile, $dstFile) = @_;
- return &cp if $Is_VMS or ($^O eq 'MSWin32' and Win32::IsWin95());
- link($srcFile, $dstFile);
- local($_) = $dstFile; # chmod a+r,go-w+X (except "X" only applies to u=x)
- my $mode= 0444 | (stat)[2] & 0700;
- if (! chmod( $mode | ( $mode & 0100 ? 0111 : 0 ), $_ )) {
- unlink $dstFile;
- return;
- }
- 1;
-}
-
-sub best {
- my ($srcFile, $dstFile) = @_;
- if (-l $srcFile) {
- cp($srcFile, $dstFile);
- } else {
- ln($srcFile, $dstFile) or cp($srcFile, $dstFile);
- }
-}
-
-sub _macify {
- my($file) = @_;
-
- return $file unless $Is_MacOS;
-
- $file =~ s|^\./||;
- if ($file =~ m|/|) {
- $file =~ s|/+|:|g;
- $file = ":$file";
- }
-
- $file;
-}
-
-sub _maccat {
- my($f1, $f2) = @_;
-
- return "$f1/$f2" unless $Is_MacOS;
-
- $f1 .= ":$f2";
- $f1 =~ s/([^:]:):/$1/g;
- return $f1;
-}
-
-sub _unmacify {
- my($file) = @_;
-
- return $file unless $Is_MacOS;
-
- $file =~ s|^:||;
- $file =~ s|([/ \n])|sprintf("\\%03o", unpack("c", $1))|ge;
- $file =~ y|:|/|;
-
- $file;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-ExtUtils::Manifest - utilities to write and check a MANIFEST file
-
-=head1 SYNOPSIS
-
- require ExtUtils::Manifest;
-
- ExtUtils::Manifest::mkmanifest;
-
- ExtUtils::Manifest::manicheck;
-
- ExtUtils::Manifest::filecheck;
-
- ExtUtils::Manifest::fullcheck;
-
- ExtUtils::Manifest::skipcheck;
-
- ExtUtils::Manifest::manifind();
-
- ExtUtils::Manifest::maniread($file);
-
- ExtUtils::Manifest::manicopy($read,$target,$how);
-
-=head1 DESCRIPTION
-
-mkmanifest() writes all files in and below the current directory to a
-file named in the global variable $ExtUtils::Manifest::MANIFEST (which
-defaults to C<MANIFEST>) in the current directory. It works similar to
-
- find . -print
-
-but in doing so checks each line in an existing C<MANIFEST> file and
-includes any comments that are found in the existing C<MANIFEST> file
-in the new one. Anything between white space and an end of line within
-a C<MANIFEST> file is considered to be a comment. Filenames and
-comments are separated by one or more TAB characters in the
-output. All files that match any regular expression in a file
-C<MANIFEST.SKIP> (if such a file exists) are ignored.
-
-manicheck() checks if all the files within a C<MANIFEST> in the
-current directory really do exist. It only reports discrepancies and
-exits silently if MANIFEST and the tree below the current directory
-are in sync.
-
-filecheck() finds files below the current directory that are not
-mentioned in the C<MANIFEST> file. An optional file C<MANIFEST.SKIP>
-will be consulted. Any file matching a regular expression in such a
-file will not be reported as missing in the C<MANIFEST> file.
-
-fullcheck() does both a manicheck() and a filecheck().
-
-skipcheck() lists all the files that are skipped due to your
-C<MANIFEST.SKIP> file.
-
-manifind() returns a hash reference. The keys of the hash are the
-files found below the current directory.
-
-maniread($file) reads a named C<MANIFEST> file (defaults to
-C<MANIFEST> in the current directory) and returns a HASH reference
-with files being the keys and comments being the values of the HASH.
-Blank lines and lines which start with C<#> in the C<MANIFEST> file
-are discarded.
-
-C<manicopy($read,$target,$how)> copies the files that are the keys in
-the HASH I<%$read> to the named target directory. The HASH reference
-$read is typically returned by the maniread() function. This
-function is useful for producing a directory tree identical to the
-intended distribution tree. The third parameter $how can be used to
-specify a different methods of "copying". Valid values are C<cp>,
-which actually copies the files, C<ln> which creates hard links, and
-C<best> which mostly links the files but copies any symbolic link to
-make a tree without any symbolic link. Best is the default.
-
-=head1 MANIFEST.SKIP
-
-The file MANIFEST.SKIP may contain regular expressions of files that
-should be ignored by mkmanifest() and filecheck(). The regular
-expressions should appear one on each line. Blank lines and lines
-which start with C<#> are skipped. Use C<\#> if you need a regular
-expression to start with a sharp character. A typical example:
-
- \bRCS\b
- ^MANIFEST\.
- ^Makefile$
- ~$
- \.html$
- \.old$
- ^blib/
- ^MakeMaker-\d
-
-=head1 EXPORT_OK
-
-C<&mkmanifest>, C<&manicheck>, C<&filecheck>, C<&fullcheck>,
-C<&maniread>, and C<&manicopy> are exportable.
-
-=head1 GLOBAL VARIABLES
-
-C<$ExtUtils::Manifest::MANIFEST> defaults to C<MANIFEST>. Changing it
-results in both a different C<MANIFEST> and a different
-C<MANIFEST.SKIP> file. This is useful if you want to maintain
-different distributions for different audiences (say a user version
-and a developer version including RCS).
-
-C<$ExtUtils::Manifest::Quiet> defaults to 0. If set to a true value,
-all functions act silently.
-
-=head1 DIAGNOSTICS
-
-All diagnostic output is sent to C<STDERR>.
-
-=over
-
-=item C<Not in MANIFEST:> I<file>
-
-is reported if a file is found, that is missing in the C<MANIFEST>
-file which is excluded by a regular expression in the file
-C<MANIFEST.SKIP>.
-
-=item C<No such file:> I<file>
-
-is reported if a file mentioned in a C<MANIFEST> file does not
-exist.
-
-=item C<MANIFEST:> I<$!>
-
-is reported if C<MANIFEST> could not be opened.
-
-=item C<Added to MANIFEST:> I<file>
-
-is reported by mkmanifest() if $Verbose is set and a file is added
-to MANIFEST. $Verbose is set to 1 by default.
-
-=back
-
-=head1 SEE ALSO
-
-L<ExtUtils::MakeMaker> which has handy targets for most of the functionality.
-
-=head1 AUTHOR
-
-Andreas Koenig <F<koenig@franz.ww.TU-Berlin.DE>>
-
-=cut
diff --git a/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm b/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm
deleted file mode 100644
index 323c3ab..0000000
--- a/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm
+++ /dev/null
@@ -1,103 +0,0 @@
-package ExtUtils::Mkbootstrap;
-
-$VERSION = substr q$Revision: 1.14 $, 10;
-# $Date: 1996/09/03 17:04:43 $
-
-use Config;
-use Exporter;
-@ISA=('Exporter');
-@EXPORT='&Mkbootstrap';
-
-sub Mkbootstrap {
- my($baseext, @bsloadlibs)=@_;
- @bsloadlibs = grep($_, @bsloadlibs); # strip empty libs
-
- print STDOUT " bsloadlibs=@bsloadlibs\n" if $Verbose;
-
- # We need DynaLoader here because we and/or the *_BS file may
- # call dl_findfile(). We don't say `use' here because when
- # first building perl extensions the DynaLoader will not have
- # been built when MakeMaker gets first used.
- require DynaLoader;
-
- rename "$baseext.bs", "$baseext.bso"
- if -s "$baseext.bs";
-
- if (-f "${baseext}_BS"){
- $_ = "${baseext}_BS";
- package DynaLoader; # execute code as if in DynaLoader
- local($osname, $dlsrc) = (); # avoid warnings
- ($osname, $dlsrc) = @Config::Config{qw(osname dlsrc)};
- $bscode = "";
- unshift @INC, ".";
- require $_;
- shift @INC;
- }
-
- if ($Config{'dlsrc'} =~ /^dl_dld/){
- package DynaLoader;
- push(@dl_resolve_using, dl_findfile('-lc'));
- }
-
- my(@all) = (@bsloadlibs, @DynaLoader::dl_resolve_using);
- my($method) = '';
- if (@all){
- open BS, ">$baseext.bs"
- or die "Unable to open $baseext.bs: $!";
- print STDOUT "Writing $baseext.bs\n";
- print STDOUT " containing: @all" if $Verbose;
- print BS "# $baseext DynaLoader bootstrap file for $^O architecture.\n";
- print BS "# Do not edit this file, changes will be lost.\n";
- print BS "# This file was automatically generated by the\n";
- print BS "# Mkbootstrap routine in ExtUtils::Mkbootstrap (v$VERSION).\n";
- print BS "\@DynaLoader::dl_resolve_using = ";
- # If @all contains names in the form -lxxx or -Lxxx then it's asking for
- # runtime library location so we automatically add a call to dl_findfile()
- if (" @all" =~ m/ -[lLR]/){
- print BS " dl_findfile(qw(\n @all\n ));\n";
- }else{
- print BS " qw(@all);\n";
- }
- # write extra code if *_BS says so
- print BS $DynaLoader::bscode if $DynaLoader::bscode;
- print BS "\n1;\n";
- close BS;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-ExtUtils::Mkbootstrap - make a bootstrap file for use by DynaLoader
-
-=head1 SYNOPSIS
-
-C<mkbootstrap>
-
-=head1 DESCRIPTION
-
-Mkbootstrap typically gets called from an extension Makefile.
-
-There is no C<*.bs> file supplied with the extension. Instead, there may
-be a C<*_BS> file which has code for the special cases, like posix for
-berkeley db on the NeXT.
-
-This file will get parsed, and produce a maybe empty
-C<@DynaLoader::dl_resolve_using> array for the current architecture.
-That will be extended by $BSLOADLIBS, which was computed by
-ExtUtils::Liblist::ext(). If this array still is empty, we do nothing,
-else we write a .bs file with an C<@DynaLoader::dl_resolve_using>
-array.
-
-The C<*_BS> file can put some code into the generated C<*.bs> file by
-placing it in C<$bscode>. This is a handy 'escape' mechanism that may
-prove useful in complex situations.
-
-If @DynaLoader::dl_resolve_using contains C<-L*> or C<-l*> entries then
-Mkbootstrap will automatically add a dl_findfile() call to the
-generated C<*.bs> file.
-
-=cut
diff --git a/contrib/perl5/lib/ExtUtils/Mksymlists.pm b/contrib/perl5/lib/ExtUtils/Mksymlists.pm
deleted file mode 100644
index c06b393..0000000
--- a/contrib/perl5/lib/ExtUtils/Mksymlists.pm
+++ /dev/null
@@ -1,302 +0,0 @@
-package ExtUtils::Mksymlists;
-
-use 5.005_64;
-use strict qw[ subs refs ];
-# no strict 'vars'; # until filehandles are exempted
-
-use Carp;
-use Exporter;
-our(@ISA, @EXPORT, $VERSION);
-@ISA = 'Exporter';
-@EXPORT = '&Mksymlists';
-$VERSION = substr q$Revision: 1.17 $, 10;
-
-sub Mksymlists {
- my(%spec) = @_;
- my($osname) = $^O;
-
- croak("Insufficient information specified to Mksymlists")
- unless ( $spec{NAME} or
- ($spec{FILE} and ($spec{DL_FUNCS} or $spec{FUNCLIST})) );
-
- $spec{DL_VARS} = [] unless $spec{DL_VARS};
- ($spec{FILE} = $spec{NAME}) =~ s/.*::// unless $spec{FILE};
- $spec{FUNCLIST} = [] unless $spec{FUNCLIST};
- $spec{DL_FUNCS} = { $spec{NAME} => [] }
- unless ( ($spec{DL_FUNCS} and keys %{$spec{DL_FUNCS}}) or
- @{$spec{FUNCLIST}});
- if (defined $spec{DL_FUNCS}) {
- my($package);
- foreach $package (keys %{$spec{DL_FUNCS}}) {
- my($packprefix,$sym,$bootseen);
- ($packprefix = $package) =~ s/\W/_/g;
- foreach $sym (@{$spec{DL_FUNCS}->{$package}}) {
- if ($sym =~ /^boot_/) {
- push(@{$spec{FUNCLIST}},$sym);
- $bootseen++;
- }
- else { push(@{$spec{FUNCLIST}},"XS_${packprefix}_$sym"); }
- }
- push(@{$spec{FUNCLIST}},"boot_$packprefix") unless $bootseen;
- }
- }
-
-# We'll need this if we ever add any OS which uses mod2fname
-# not as pseudo-builtin.
-# require DynaLoader;
- if (defined &DynaLoader::mod2fname and not $spec{DLBASE}) {
- $spec{DLBASE} = DynaLoader::mod2fname([ split(/::/,$spec{NAME}) ]);
- }
-
- if ($osname eq 'aix') { _write_aix(\%spec); }
- elsif ($osname eq 'MacOS'){ _write_aix(\%spec) }
- elsif ($osname eq 'VMS') { _write_vms(\%spec) }
- elsif ($osname eq 'os2') { _write_os2(\%spec) }
- elsif ($osname eq 'MSWin32') { _write_win32(\%spec) }
- else { croak("Don't know how to create linker option file for $osname\n"); }
-}
-
-
-sub _write_aix {
- my($data) = @_;
-
- rename "$data->{FILE}.exp", "$data->{FILE}.exp_old";
-
- open(EXP,">$data->{FILE}.exp")
- or croak("Can't create $data->{FILE}.exp: $!\n");
- print EXP join("\n",@{$data->{DL_VARS}}, "\n") if @{$data->{DL_VARS}};
- print EXP join("\n",@{$data->{FUNCLIST}}, "\n") if @{$data->{FUNCLIST}};
- close EXP;
-}
-
-
-sub _write_os2 {
- my($data) = @_;
- require Config;
- my $threaded = ($Config::Config{archname} =~ /-thread/ ? " threaded" : "");
-
- if (not $data->{DLBASE}) {
- ($data->{DLBASE} = $data->{NAME}) =~ s/.*:://;
- $data->{DLBASE} = substr($data->{DLBASE},0,7) . '_';
- }
- my $distname = $data->{DISTNAME} || $data->{NAME};
- $distname = "Distribution $distname";
- my $comment = "Perl (v$Config::Config{version}$threaded) module $data->{NAME}";
- if ($data->{INSTALLDIRS} and $data->{INSTALLDIRS} eq 'perl') {
- $distname = 'perl5-porters@perl.org';
- $comment = "Core $comment";
- }
- rename "$data->{FILE}.def", "$data->{FILE}_def.old";
-
- open(DEF,">$data->{FILE}.def")
- or croak("Can't create $data->{FILE}.def: $!\n");
- print DEF "LIBRARY '$data->{DLBASE}' INITINSTANCE TERMINSTANCE\n";
- print DEF "DESCRIPTION '\@#$distname:$data->{VERSION}#\@ $comment'\n";
- print DEF "CODE LOADONCALL\n";
- print DEF "DATA LOADONCALL NONSHARED MULTIPLE\n";
- print DEF "EXPORTS\n ";
- print DEF join("\n ",@{$data->{DL_VARS}}, "\n") if @{$data->{DL_VARS}};
- print DEF join("\n ",@{$data->{FUNCLIST}}, "\n") if @{$data->{FUNCLIST}};
- if (%{$data->{IMPORTS}}) {
- print DEF "IMPORTS\n";
- my ($name, $exp);
- while (($name, $exp)= each %{$data->{IMPORTS}}) {
- print DEF " $name=$exp\n";
- }
- }
- close DEF;
-}
-
-sub _write_win32 {
- my($data) = @_;
-
- require Config;
- if (not $data->{DLBASE}) {
- ($data->{DLBASE} = $data->{NAME}) =~ s/.*:://;
- $data->{DLBASE} = substr($data->{DLBASE},0,7) . '_';
- }
- rename "$data->{FILE}.def", "$data->{FILE}_def.old";
-
- open(DEF,">$data->{FILE}.def")
- or croak("Can't create $data->{FILE}.def: $!\n");
- # put library name in quotes (it could be a keyword, like 'Alias')
- if ($Config::Config{'cc'} !~ /^gcc/i) {
- print DEF "LIBRARY \"$data->{DLBASE}\"\n";
- }
- print DEF "EXPORTS\n ";
- my @syms;
- # Export public symbols both with and without underscores to
- # ensure compatibility between DLLs from different compilers
- # NOTE: DynaLoader itself only uses the names without underscores,
- # so this is only to cover the case when the extension DLL may be
- # linked to directly from C. GSAR 97-07-10
- if ($Config::Config{'cc'} =~ /^bcc/i) {
- for (@{$data->{DL_VARS}}, @{$data->{FUNCLIST}}) {
- push @syms, "_$_", "$_ = _$_";
- }
- }
- else {
- for (@{$data->{DL_VARS}}, @{$data->{FUNCLIST}}) {
- push @syms, "$_", "_$_ = $_";
- }
- }
- print DEF join("\n ",@syms, "\n") if @syms;
- if (%{$data->{IMPORTS}}) {
- print DEF "IMPORTS\n";
- my ($name, $exp);
- while (($name, $exp)= each %{$data->{IMPORTS}}) {
- print DEF " $name=$exp\n";
- }
- }
- close DEF;
-}
-
-
-sub _write_vms {
- my($data) = @_;
-
- require Config; # a reminder for once we do $^O
- require ExtUtils::XSSymSet;
-
- my($isvax) = $Config::Config{'archname'} =~ /VAX/i;
- my($set) = new ExtUtils::XSSymSet;
- my($sym);
-
- rename "$data->{FILE}.opt", "$data->{FILE}.opt_old";
-
- open(OPT,">$data->{FILE}.opt")
- or croak("Can't create $data->{FILE}.opt: $!\n");
-
- # Options file declaring universal symbols
- # Used when linking shareable image for dynamic extension,
- # or when linking PerlShr into which we've added this package
- # as a static extension
- # We don't do anything to preserve order, so we won't relax
- # the GSMATCH criteria for a dynamic extension
-
- print OPT "case_sensitive=yes\n"
- if $Config::Config{d_vms_case_sensitive_symbols};
- foreach $sym (@{$data->{FUNCLIST}}) {
- my $safe = $set->addsym($sym);
- if ($isvax) { print OPT "UNIVERSAL=$safe\n" }
- else { print OPT "SYMBOL_VECTOR=($safe=PROCEDURE)\n"; }
- }
- foreach $sym (@{$data->{DL_VARS}}) {
- my $safe = $set->addsym($sym);
- print OPT "PSECT_ATTR=${sym},PIC,OVR,RD,NOEXE,WRT,NOSHR\n";
- if ($isvax) { print OPT "UNIVERSAL=$safe\n" }
- else { print OPT "SYMBOL_VECTOR=($safe=DATA)\n"; }
- }
- close OPT;
-
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-ExtUtils::Mksymlists - write linker options files for dynamic extension
-
-=head1 SYNOPSIS
-
- use ExtUtils::Mksymlists;
- Mksymlists({ NAME => $name ,
- DL_VARS => [ $var1, $var2, $var3 ],
- DL_FUNCS => { $pkg1 => [ $func1, $func2 ],
- $pkg2 => [ $func3 ] });
-
-=head1 DESCRIPTION
-
-C<ExtUtils::Mksymlists> produces files used by the linker under some OSs
-during the creation of shared libraries for dynamic extensions. It is
-normally called from a MakeMaker-generated Makefile when the extension
-is built. The linker option file is generated by calling the function
-C<Mksymlists>, which is exported by default from C<ExtUtils::Mksymlists>.
-It takes one argument, a list of key-value pairs, in which the following
-keys are recognized:
-
-=over
-
-=item DLBASE
-
-This item specifies the name by which the linker knows the
-extension, which may be different from the name of the
-extension itself (for instance, some linkers add an '_' to the
-name of the extension). If it is not specified, it is derived
-from the NAME attribute. It is presently used only by OS2 and Win32.
-
-=item DL_FUNCS
-
-This is identical to the DL_FUNCS attribute available via MakeMaker,
-from which it is usually taken. Its value is a reference to an
-associative array, in which each key is the name of a package, and
-each value is an a reference to an array of function names which
-should be exported by the extension. For instance, one might say
-C<DL_FUNCS =E<gt> { Homer::Iliad =E<gt> [ qw(trojans greeks) ],
-Homer::Odyssey =E<gt> [ qw(travellers family suitors) ] }>. The
-function names should be identical to those in the XSUB code;
-C<Mksymlists> will alter the names written to the linker option
-file to match the changes made by F<xsubpp>. In addition, if
-none of the functions in a list begin with the string B<boot_>,
-C<Mksymlists> will add a bootstrap function for that package,
-just as xsubpp does. (If a B<boot_E<lt>pkgE<gt>> function is
-present in the list, it is passed through unchanged.) If
-DL_FUNCS is not specified, it defaults to the bootstrap
-function for the extension specified in NAME.
-
-=item DL_VARS
-
-This is identical to the DL_VARS attribute available via MakeMaker,
-and, like DL_FUNCS, it is usually specified via MakeMaker. Its
-value is a reference to an array of variable names which should
-be exported by the extension.
-
-=item FILE
-
-This key can be used to specify the name of the linker option file
-(minus the OS-specific extension), if for some reason you do not
-want to use the default value, which is the last word of the NAME
-attribute (I<e.g.> for C<Tk::Canvas>, FILE defaults to C<Canvas>).
-
-=item FUNCLIST
-
-This provides an alternate means to specify function names to be
-exported from the extension. Its value is a reference to an
-array of function names to be exported by the extension. These
-names are passed through unaltered to the linker options file.
-Specifying a value for the FUNCLIST attribute suppresses automatic
-generation of the bootstrap function for the package. To still create
-the bootstrap name you have to specify the package name in the
-DL_FUNCS hash:
-
- Mksymlists({ NAME => $name ,
- FUNCLIST => [ $func1, $func2 ],
- DL_FUNCS => { $pkg => [] } });
-
-
-=item IMPORTS
-
-This attribute is used to specify names to be imported into the
-extension. It is currently only used by OS/2 and Win32.
-
-=item NAME
-
-This gives the name of the extension (I<e.g.> C<Tk::Canvas>) for which
-the linker option file will be produced.
-
-=back
-
-When calling C<Mksymlists>, one should always specify the NAME
-attribute. In most cases, this is all that's necessary. In
-the case of unusual extensions, however, the other attributes
-can be used to provide additional information to the linker.
-
-=head1 AUTHOR
-
-Charles Bailey I<E<lt>bailey@newman.upenn.eduE<gt>>
-
-=head1 REVISION
-
-Last revised 14-Feb-1996, for Perl 5.002.
diff --git a/contrib/perl5/lib/ExtUtils/Packlist.pm b/contrib/perl5/lib/ExtUtils/Packlist.pm
deleted file mode 100644
index 88ea206..0000000
--- a/contrib/perl5/lib/ExtUtils/Packlist.pm
+++ /dev/null
@@ -1,289 +0,0 @@
-package ExtUtils::Packlist;
-
-use 5.005_64;
-use strict;
-use Carp qw();
-our $VERSION = '0.03';
-
-# Used for generating filehandle globs. IO::File might not be available!
-my $fhname = "FH1";
-
-sub mkfh()
-{
-no strict;
-my $fh = \*{$fhname++};
-use strict;
-return($fh);
-}
-
-sub new($$)
-{
-my ($class, $packfile) = @_;
-$class = ref($class) || $class;
-my %self;
-tie(%self, $class, $packfile);
-return(bless(\%self, $class));
-}
-
-sub TIEHASH
-{
-my ($class, $packfile) = @_;
-my $self = { packfile => $packfile };
-bless($self, $class);
-$self->read($packfile) if (defined($packfile) && -f $packfile);
-return($self);
-}
-
-sub STORE
-{
-$_[0]->{data}->{$_[1]} = $_[2];
-}
-
-sub FETCH
-{
-return($_[0]->{data}->{$_[1]});
-}
-
-sub FIRSTKEY
-{
-my $reset = scalar(keys(%{$_[0]->{data}}));
-return(each(%{$_[0]->{data}}));
-}
-
-sub NEXTKEY
-{
-return(each(%{$_[0]->{data}}));
-}
-
-sub EXISTS
-{
-return(exists($_[0]->{data}->{$_[1]}));
-}
-
-sub DELETE
-{
-return(delete($_[0]->{data}->{$_[1]}));
-}
-
-sub CLEAR
-{
-%{$_[0]->{data}} = ();
-}
-
-sub DESTROY
-{
-}
-
-sub read($;$)
-{
-my ($self, $packfile) = @_;
-$self = tied(%$self) || $self;
-
-if (defined($packfile)) { $self->{packfile} = $packfile; }
-else { $packfile = $self->{packfile}; }
-Carp::croak("No packlist filename specified") if (! defined($packfile));
-my $fh = mkfh();
-open($fh, "<$packfile") || Carp::croak("Can't open file $packfile: $!");
-$self->{data} = {};
-my ($line);
-while (defined($line = <$fh>))
- {
- chomp $line;
- my ($key, @kvs) = split(' ', $line);
- $key =~ s!/\./!/!g; # Some .packlists have spurious '/./' bits in the paths
- if (! @kvs)
- {
- $self->{data}->{$key} = undef;
- }
- else
- {
- my ($data) = {};
- foreach my $kv (@kvs)
- {
- my ($k, $v) = split('=', $kv);
- $data->{$k} = $v;
- }
- $self->{data}->{$key} = $data;
- }
- }
-close($fh);
-}
-
-sub write($;$)
-{
-my ($self, $packfile) = @_;
-$self = tied(%$self) || $self;
-if (defined($packfile)) { $self->{packfile} = $packfile; }
-else { $packfile = $self->{packfile}; }
-Carp::croak("No packlist filename specified") if (! defined($packfile));
-my $fh = mkfh();
-open($fh, ">$packfile") || Carp::croak("Can't open file $packfile: $!");
-foreach my $key (sort(keys(%{$self->{data}})))
- {
- print $fh ("$key");
- if (ref($self->{data}->{$key}))
- {
- my $data = $self->{data}->{$key};
- foreach my $k (sort(keys(%$data)))
- {
- print $fh (" $k=$data->{$k}");
- }
- }
- print $fh ("\n");
- }
-close($fh);
-}
-
-sub validate($;$)
-{
-my ($self, $remove) = @_;
-$self = tied(%$self) || $self;
-my @missing;
-foreach my $key (sort(keys(%{$self->{data}})))
- {
- if (! -e $key)
- {
- push(@missing, $key);
- delete($self->{data}{$key}) if ($remove);
- }
- }
-return(@missing);
-}
-
-sub packlist_file($)
-{
-my ($self) = @_;
-$self = tied(%$self) || $self;
-return($self->{packfile});
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-ExtUtils::Packlist - manage .packlist files
-
-=head1 SYNOPSIS
-
- use ExtUtils::Packlist;
- my ($pl) = ExtUtils::Packlist->new('.packlist');
- $pl->read('/an/old/.packlist');
- my @missing_files = $pl->validate();
- $pl->write('/a/new/.packlist');
-
- $pl->{'/some/file/name'}++;
- or
- $pl->{'/some/other/file/name'} = { type => 'file',
- from => '/some/file' };
-
-=head1 DESCRIPTION
-
-ExtUtils::Packlist provides a standard way to manage .packlist files.
-Functions are provided to read and write .packlist files. The original
-.packlist format is a simple list of absolute pathnames, one per line. In
-addition, this package supports an extended format, where as well as a filename
-each line may contain a list of attributes in the form of a space separated
-list of key=value pairs. This is used by the installperl script to
-differentiate between files and links, for example.
-
-=head1 USAGE
-
-The hash reference returned by the new() function can be used to examine and
-modify the contents of the .packlist. Items may be added/deleted from the
-.packlist by modifying the hash. If the value associated with a hash key is a
-scalar, the entry written to the .packlist by any subsequent write() will be a
-simple filename. If the value is a hash, the entry written will be the
-filename followed by the key=value pairs from the hash. Reading back the
-.packlist will recreate the original entries.
-
-=head1 FUNCTIONS
-
-=over
-
-=item new()
-
-This takes an optional parameter, the name of a .packlist. If the file exists,
-it will be opened and the contents of the file will be read. The new() method
-returns a reference to a hash. This hash holds an entry for each line in the
-.packlist. In the case of old-style .packlists, the value associated with each
-key is undef. In the case of new-style .packlists, the value associated with
-each key is a hash containing the key=value pairs following the filename in the
-.packlist.
-
-=item read()
-
-This takes an optional parameter, the name of the .packlist to be read. If
-no file is specified, the .packlist specified to new() will be read. If the
-.packlist does not exist, Carp::croak will be called.
-
-=item write()
-
-This takes an optional parameter, the name of the .packlist to be written. If
-no file is specified, the .packlist specified to new() will be overwritten.
-
-=item validate()
-
-This checks that every file listed in the .packlist actually exists. If an
-argument which evaluates to true is given, any missing files will be removed
-from the internal hash. The return value is a list of the missing files, which
-will be empty if they all exist.
-
-=item packlist_file()
-
-This returns the name of the associated .packlist file
-
-=back
-
-=head1 EXAMPLE
-
-Here's C<modrm>, a little utility to cleanly remove an installed module.
-
- #!/usr/local/bin/perl -w
-
- use strict;
- use IO::Dir;
- use ExtUtils::Packlist;
- use ExtUtils::Installed;
-
- sub emptydir($) {
- my ($dir) = @_;
- my $dh = IO::Dir->new($dir) || return(0);
- my @count = $dh->read();
- $dh->close();
- return(@count == 2 ? 1 : 0);
- }
-
- # Find all the installed packages
- print("Finding all installed modules...\n");
- my $installed = ExtUtils::Installed->new();
-
- foreach my $module (grep(!/^Perl$/, $installed->modules())) {
- my $version = $installed->version($module) || "???";
- print("Found module $module Version $version\n");
- print("Do you want to delete $module? [n] ");
- my $r = <STDIN>; chomp($r);
- if ($r && $r =~ /^y/i) {
- # Remove all the files
- foreach my $file (sort($installed->files($module))) {
- print("rm $file\n");
- unlink($file);
- }
- my $pf = $installed->packlist($module)->packlist_file();
- print("rm $pf\n");
- unlink($pf);
- foreach my $dir (sort($installed->directory_tree($module))) {
- if (emptydir($dir)) {
- print("rmdir $dir\n");
- rmdir($dir);
- }
- }
- }
- }
-
-=head1 AUTHOR
-
-Alan Burlison <Alan.Burlison@uk.sun.com>
-
-=cut
diff --git a/contrib/perl5/lib/ExtUtils/inst b/contrib/perl5/lib/ExtUtils/inst
deleted file mode 100755
index cbf2d01..0000000
--- a/contrib/perl5/lib/ExtUtils/inst
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/usr/local/bin/perl -w
-
-use strict;
-use IO::File;
-use ExtUtils::Packlist;
-use ExtUtils::Installed;
-
-use vars qw($Inst @Modules);
-
-################################################################################
-
-sub do_module($)
-{
-my ($module) = @_;
-my $help = <<EOF;
-Available commands are:
- f [all|prog|doc] - List installed files of a given type
- d [all|prog|doc] - List the directories used by a module
- v - Validate the .packlist - check for missing files
- t <tarfile> - Create a tar archive of the module
- q - Quit the module
-EOF
-print($help);
-while (1)
- {
- print("$module cmd? ");
- my $reply = <STDIN>; chomp($reply);
- CASE:
- {
- $reply =~ /^f\s*/ and do
- {
- my $class = (split(' ', $reply))[1];
- $class = 'all' if (! $class);
- my @files;
- if (eval { @files = $Inst->files($module, $class); })
- {
- print("$class files in $module are:\n ",
- join("\n ", @files), "\n");
- last CASE;
- }
- else
- { print($@); }
- };
- $reply =~ /^d\s*/ and do
- {
- my $class = (split(' ', $reply))[1];
- $class = 'all' if (! $class);
- my @dirs;
- if (eval { @dirs = $Inst->directories($module, $class); })
- {
- print("$class directories in $module are:\n ",
- join("\n ", @dirs), "\n");
- last CASE;
- }
- else
- { print($@); }
- };
- $reply =~ /^t\s*/ and do
- {
- my $file = (split(' ', $reply))[1];
- my $tmp = "/tmp/inst.$$";
- if (my $fh = IO::File->new($tmp, "w"))
- {
- $fh->print(join("\n", $Inst->files($module)));
- $fh->close();
- system("tar cvf $file -I $tmp");
- unlink($tmp);
- last CASE;
- }
- else { print("Can't open $file: $!\n"); }
- last CASE;
- };
- $reply eq 'v' and do
- {
- if (my @missing = $Inst->validate($module))
- {
- print("Files missing from $module are:\n ",
- join("\n ", @missing), "\n");
- }
- else
- {
- print("$module has no missing files\n");
- }
- last CASE;
- };
- $reply eq 'q' and do
- {
- return;
- };
- # Default
- print($help);
- }
- }
-}
-
-################################################################################
-
-sub toplevel()
-{
-my $help = <<EOF;
-Available commands are:
- l - List all installed modules
- m <module> - Select a module
- q - Quit the program
-EOF
-print($help);
-while (1)
- {
- print("cmd? ");
- my $reply = <STDIN>; chomp($reply);
- CASE:
- {
- $reply eq 'l' and do
- {
- print("Installed modules are:\n ", join("\n ", @Modules), "\n");
- last CASE;
- };
- $reply =~ /^m\s+/ and do
- {
- do_module((split(' ', $reply))[1]);
- last CASE;
- };
- $reply eq 'q' and do
- {
- exit(0);
- };
- # Default
- print($help);
- }
- }
-}
-
-################################################################################
-
-$Inst = ExtUtils::Installed->new();
-@Modules = $Inst->modules();
-toplevel();
-
-################################################################################
diff --git a/contrib/perl5/lib/ExtUtils/testlib.pm b/contrib/perl5/lib/ExtUtils/testlib.pm
deleted file mode 100644
index d80f2a2..0000000
--- a/contrib/perl5/lib/ExtUtils/testlib.pm
+++ /dev/null
@@ -1,26 +0,0 @@
-package ExtUtils::testlib;
-$VERSION = substr q$Revision: 1.11 $, 10;
-# $Id: testlib.pm,v 1.11 1996/05/31 08:27:07 k Exp $
-
-use lib qw(blib/arch blib/lib);
-1;
-__END__
-
-=head1 NAME
-
-ExtUtils::testlib - add blib/* directories to @INC
-
-=head1 SYNOPSIS
-
-C<use ExtUtils::testlib;>
-
-=head1 DESCRIPTION
-
-After an extension has been built and before it is installed it may be
-desirable to test it bypassing C<make test>. By adding
-
- use ExtUtils::testlib;
-
-to a test program the intermediate directories used by C<make> are
-added to @INC.
-
diff --git a/contrib/perl5/lib/ExtUtils/typemap b/contrib/perl5/lib/ExtUtils/typemap
deleted file mode 100644
index c309128..0000000
--- a/contrib/perl5/lib/ExtUtils/typemap
+++ /dev/null
@@ -1,294 +0,0 @@
-# basic C types
-int T_IV
-unsigned T_UV
-unsigned int T_UV
-long T_IV
-unsigned long T_UV
-short T_IV
-unsigned short T_UV
-char T_CHAR
-unsigned char T_U_CHAR
-char * T_PV
-unsigned char * T_PV
-caddr_t T_PV
-wchar_t * T_PV
-wchar_t T_IV
-bool_t T_IV
-size_t T_IV
-ssize_t T_IV
-time_t T_NV
-unsigned long * T_OPAQUEPTR
-char ** T_PACKED
-void * T_PTR
-Time_t * T_PV
-SV * T_SV
-SVREF T_SVREF
-AV * T_AVREF
-HV * T_HVREF
-CV * T_CVREF
-
-IV T_IV
-UV T_UV
-NV T_NV
-I32 T_IV
-I16 T_IV
-I8 T_IV
-U32 T_U_LONG
-U16 T_U_SHORT
-U8 T_UV
-Result T_U_CHAR
-Boolean T_IV
-double T_DOUBLE
-SysRet T_SYSRET
-SysRetLong T_SYSRET
-FILE * T_IN
-FileHandle T_PTROBJ
-InputStream T_IN
-InOutStream T_INOUT
-OutputStream T_OUT
-bool T_BOOL
-
-#############################################################################
-INPUT
-T_SV
- $var = $arg
-T_SVREF
- if (sv_isa($arg, \"${ntype}\"))
- $var = (SV*)SvRV($arg);
- else
- croak(\"$var is not of type ${ntype}\")
-T_AVREF
- if (sv_isa($arg, \"${ntype}\"))
- $var = (AV*)SvRV($arg);
- else
- croak(\"$var is not of type ${ntype}\")
-T_HVREF
- if (sv_isa($arg, \"${ntype}\"))
- $var = (HV*)SvRV($arg);
- else
- croak(\"$var is not of type ${ntype}\")
-T_CVREF
- if (sv_isa($arg, \"${ntype}\"))
- $var = (CV*)SvRV($arg);
- else
- croak(\"$var is not of type ${ntype}\")
-T_SYSRET
- $var NOT IMPLEMENTED
-T_UV
- $var = ($type)SvUV($arg)
-T_IV
- $var = ($type)SvIV($arg)
-T_INT
- $var = (int)SvIV($arg)
-T_ENUM
- $var = ($type)SvIV($arg)
-T_BOOL
- $var = (int)SvIV($arg)
-T_U_INT
- $var = (unsigned int)SvUV($arg)
-T_SHORT
- $var = (short)SvIV($arg)
-T_U_SHORT
- $var = (unsigned short)SvUV($arg)
-T_LONG
- $var = (long)SvIV($arg)
-T_U_LONG
- $var = (unsigned long)SvUV($arg)
-T_CHAR
- $var = (char)*SvPV($arg,PL_na)
-T_U_CHAR
- $var = (unsigned char)SvUV($arg)
-T_FLOAT
- $var = (float)SvNV($arg)
-T_NV
- $var = ($type)SvNV($arg)
-T_DOUBLE
- $var = (double)SvNV($arg)
-T_PV
- $var = ($type)SvPV($arg,PL_na)
-T_PTR
- $var = INT2PTR($type,SvIV($arg))
-T_PTRREF
- if (SvROK($arg)) {
- IV tmp = SvIV((SV*)SvRV($arg));
- $var = INT2PTR($type,tmp);
- }
- else
- croak(\"$var is not a reference\")
-T_REF_IV_REF
- if (sv_isa($arg, \"${type}\")) {
- IV tmp = SvIV((SV*)SvRV($arg));
- $var = *($type *) tmp;
- }
- else
- croak(\"$var is not of type ${ntype}\")
-T_REF_IV_PTR
- if (sv_isa($arg, \"${type}\")) {
- IV tmp = SvIV((SV*)SvRV($arg));
- $var = ($type) tmp;
- }
- else
- croak(\"$var is not of type ${ntype}\")
-T_PTROBJ
- if (sv_derived_from($arg, \"${ntype}\")) {
- IV tmp = SvIV((SV*)SvRV($arg));
- $var = INT2PTR($type,tmp);
- }
- else
- croak(\"$var is not of type ${ntype}\")
-T_PTRDESC
- if (sv_isa($arg, \"${ntype}\")) {
- IV tmp = SvIV((SV*)SvRV($arg));
- ${type}_desc = (\U${type}_DESC\E*) tmp;
- $var = ${type}_desc->ptr;
- }
- else
- croak(\"$var is not of type ${ntype}\")
-T_REFREF
- if (SvROK($arg)) {
- IV tmp = SvIV((SV*)SvRV($arg));
- $var = *INT2PTR($type,tmp);
- }
- else
- croak(\"$var is not a reference\")
-T_REFOBJ
- if (sv_isa($arg, \"${ntype}\")) {
- IV tmp = SvIV((SV*)SvRV($arg));
- $var = *INT2PTR($type,tmp);
- }
- else
- croak(\"$var is not of type ${ntype}\")
-T_OPAQUE
- $var NOT IMPLEMENTED
-T_OPAQUEPTR
- $var = ($type)SvPV($arg,PL_na)
-T_PACKED
- $var = XS_unpack_$ntype($arg)
-T_PACKEDARRAY
- $var = XS_unpack_$ntype($arg)
-T_CALLBACK
- $var = make_perl_cb_$type($arg)
-T_ARRAY
- $var = $ntype(items -= $argoff);
- U32 ix_$var = $argoff;
- while (items--) {
- DO_ARRAY_ELEM;
- }
-T_IN
- $var = IoIFP(sv_2io($arg))
-T_INOUT
- $var = IoIFP(sv_2io($arg))
-T_OUT
- $var = IoOFP(sv_2io($arg))
-#############################################################################
-OUTPUT
-T_SV
- $arg = $var;
-T_SVREF
- $arg = newRV((SV*)$var);
-T_AVREF
- $arg = newRV((SV*)$var);
-T_HVREF
- $arg = newRV((SV*)$var);
-T_CVREF
- $arg = newRV((SV*)$var);
-T_IV
- sv_setiv($arg, (IV)$var);
-T_UV
- sv_setuv($arg, (UV)$var);
-T_INT
- sv_setiv($arg, (IV)$var);
-T_SYSRET
- if ($var != -1) {
- if ($var == 0)
- sv_setpvn($arg, "0 but true", 10);
- else
- sv_setiv($arg, (IV)$var);
- }
-T_ENUM
- sv_setiv($arg, (IV)$var);
-T_BOOL
- $arg = boolSV($var);
-T_U_INT
- sv_setuv($arg, (UV)$var);
-T_SHORT
- sv_setiv($arg, (IV)$var);
-T_U_SHORT
- sv_setuv($arg, (UV)$var);
-T_LONG
- sv_setiv($arg, (IV)$var);
-T_U_LONG
- sv_setuv($arg, (UV)$var);
-T_CHAR
- sv_setpvn($arg, (char *)&$var, 1);
-T_U_CHAR
- sv_setuv($arg, (UV)$var);
-T_FLOAT
- sv_setnv($arg, (double)$var);
-T_NV
- sv_setnv($arg, (NV)$var);
-T_DOUBLE
- sv_setnv($arg, (double)$var);
-T_PV
- sv_setpv((SV*)$arg, $var);
-T_PTR
- sv_setiv($arg, PTR2IV($var));
-T_PTRREF
- sv_setref_pv($arg, Nullch, (void*)$var);
-T_REF_IV_REF
- sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
-T_REF_IV_PTR
- sv_setref_pv($arg, \"${ntype}\", (void*)$var);
-T_PTROBJ
- sv_setref_pv($arg, \"${ntype}\", (void*)$var);
-T_PTRDESC
- sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
-T_REFREF
- sv_setrefref($arg, \"${ntype}\", XS_service_$ntype,
- ($var ? (void*)new $ntype($var) : 0));
-T_REFOBJ
- NOT IMPLEMENTED
-T_OPAQUE
- sv_setpvn($arg, (char *)&$var, sizeof($var));
-T_OPAQUEPTR
- sv_setpvn($arg, (char *)$var, sizeof(*$var));
-T_PACKED
- XS_pack_$ntype($arg, $var);
-T_PACKEDARRAY
- XS_pack_$ntype($arg, $var, count_$ntype);
-T_DATAUNIT
- sv_setpvn($arg, $var.chp(), $var.size());
-T_CALLBACK
- sv_setpvn($arg, $var.context.value().chp(),
- $var.context.value().size());
-T_ARRAY
- ST_EXTEND($var.size);
- for (U32 ix_$var = 0; ix_$var < $var.size; ix_$var++) {
- ST(ix_$var) = sv_newmortal();
- DO_ARRAY_ELEM
- }
- SP += $var.size - 1;
-T_IN
- {
- GV *gv = newGVgen("$Package");
- if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
- sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
- else
- $arg = &PL_sv_undef;
- }
-T_INOUT
- {
- GV *gv = newGVgen("$Package");
- if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
- sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
- else
- $arg = &PL_sv_undef;
- }
-T_OUT
- {
- GV *gv = newGVgen("$Package");
- if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
- sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
- else
- $arg = &PL_sv_undef;
- }
diff --git a/contrib/perl5/lib/ExtUtils/xsubpp b/contrib/perl5/lib/ExtUtils/xsubpp
deleted file mode 100755
index bb8f3aa..0000000
--- a/contrib/perl5/lib/ExtUtils/xsubpp
+++ /dev/null
@@ -1,1763 +0,0 @@
-#!./miniperl
-
-=head1 NAME
-
-xsubpp - compiler to convert Perl XS code into C code
-
-=head1 SYNOPSIS
-
-B<xsubpp> [B<-v>] [B<-C++>] [B<-except>] [B<-s pattern>] [B<-prototypes>] [B<-noversioncheck>] [B<-nolinenumbers>] [B<-nooptimize>] [B<-typemap typemap>] ... file.xs
-
-=head1 DESCRIPTION
-
-This compiler is typically run by the makefiles created by L<ExtUtils::MakeMaker>.
-
-I<xsubpp> will compile XS code into C code by embedding the constructs
-necessary to let C functions manipulate Perl values and creates the glue
-necessary to let Perl access those functions. The compiler uses typemaps to
-determine how to map C function parameters and variables to Perl values.
-
-The compiler will search for typemap files called I<typemap>. It will use
-the following search path to find default typemaps, with the rightmost
-typemap taking precedence.
-
- ../../../typemap:../../typemap:../typemap:typemap
-
-=head1 OPTIONS
-
-Note that the C<XSOPT> MakeMaker option may be used to add these options to
-any makefiles generated by MakeMaker.
-
-=over 5
-
-=item B<-C++>
-
-Adds ``extern "C"'' to the C code.
-
-=item B<-except>
-
-Adds exception handling stubs to the C code.
-
-=item B<-typemap typemap>
-
-Indicates that a user-supplied typemap should take precedence over the
-default typemaps. This option may be used multiple times, with the last
-typemap having the highest precedence.
-
-=item B<-v>
-
-Prints the I<xsubpp> version number to standard output, then exits.
-
-=item B<-prototypes>
-
-By default I<xsubpp> will not automatically generate prototype code for
-all xsubs. This flag will enable prototypes.
-
-=item B<-noversioncheck>
-
-Disables the run time test that determines if the object file (derived
-from the C<.xs> file) and the C<.pm> files have the same version
-number.
-
-=item B<-nolinenumbers>
-
-Prevents the inclusion of `#line' directives in the output.
-
-=item B<-nooptimize>
-
-Disables certain optimizations. The only optimization that is currently
-affected is the use of I<target>s by the output C code (see L<perlguts>).
-This may significantly slow down the generated code, but this is the way
-B<xsubpp> of 5.005 and earlier operated.
-
-=item B<-noinout>
-
-Disable recognition of C<IN>, C<OUT_LIST> and C<INOUT_LIST> declarations.
-
-=item B<-noargtypes>
-
-Disable recognition of ANSI-like descriptions of function signature.
-
-=back
-
-=head1 ENVIRONMENT
-
-No environment variables are used.
-
-=head1 AUTHOR
-
-Larry Wall
-
-=head1 MODIFICATION HISTORY
-
-See the file F<changes.pod>.
-
-=head1 SEE ALSO
-
-perl(1), perlxs(1), perlxstut(1)
-
-=cut
-
-require 5.002;
-use Cwd;
-use vars '$cplusplus';
-use vars '%v';
-
-use Config;
-
-sub Q ;
-
-# Global Constants
-
-$XSUBPP_version = "1.9508";
-
-my ($Is_VMS, $SymSet);
-if ($^O eq 'VMS') {
- $Is_VMS = 1;
- # Establish set of global symbols with max length 28, since xsubpp
- # will later add the 'XS_' prefix.
- require ExtUtils::XSSymSet;
- $SymSet = new ExtUtils::XSSymSet 28;
-}
-
-$FH = 'File0000' ;
-
-$usage = "Usage: xsubpp [-v] [-C++] [-except] [-prototypes] [-noversioncheck] [-nolinenumbers] [-nooptimize] [-noinout] [-noargtypes] [-s pattern] [-typemap typemap]... file.xs\n";
-
-$proto_re = "[" . quotemeta('\$%&*@;') . "]" ;
-# mjn
-$OBJ = 1 if $Config{'ccflags'} =~ /PERL_OBJECT/i;
-
-$except = "";
-$WantPrototypes = -1 ;
-$WantVersionChk = 1 ;
-$ProtoUsed = 0 ;
-$WantLineNumbers = 1 ;
-$WantOptimize = 1 ;
-
-my $process_inout = 1;
-my $process_argtypes = 1;
-
-SWITCH: while (@ARGV and $ARGV[0] =~ /^-./) {
- $flag = shift @ARGV;
- $flag =~ s/^-// ;
- $spat = quotemeta shift, next SWITCH if $flag eq 's';
- $cplusplus = 1, next SWITCH if $flag eq 'C++';
- $WantPrototypes = 0, next SWITCH if $flag eq 'noprototypes';
- $WantPrototypes = 1, next SWITCH if $flag eq 'prototypes';
- $WantVersionChk = 0, next SWITCH if $flag eq 'noversioncheck';
- $WantVersionChk = 1, next SWITCH if $flag eq 'versioncheck';
- # XXX left this in for compat
- $WantCAPI = 1, next SWITCH if $flag eq 'object_capi';
- $except = " TRY", next SWITCH if $flag eq 'except';
- push(@tm,shift), next SWITCH if $flag eq 'typemap';
- $WantLineNumbers = 0, next SWITCH if $flag eq 'nolinenumbers';
- $WantLineNumbers = 1, next SWITCH if $flag eq 'linenumbers';
- $WantOptimize = 0, next SWITCH if $flag eq 'nooptimize';
- $WantOptimize = 1, next SWITCH if $flag eq 'optimize';
- $process_inout = 0, next SWITCH if $flag eq 'noinout';
- $process_inout = 1, next SWITCH if $flag eq 'inout';
- $process_argtypes = 0, next SWITCH if $flag eq 'noargtypes';
- $process_argtypes = 1, next SWITCH if $flag eq 'argtypes';
- (print "xsubpp version $XSUBPP_version\n"), exit
- if $flag eq 'v';
- die $usage;
-}
-if ($WantPrototypes == -1)
- { $WantPrototypes = 0}
-else
- { $ProtoUsed = 1 }
-
-
-@ARGV == 1 or die $usage;
-($dir, $filename) = $ARGV[0] =~ m#(.*)/(.*)#
- or ($dir, $filename) = $ARGV[0] =~ m#(.*)\\(.*)#
- or ($dir, $filename) = $ARGV[0] =~ m#(.*[>\]])(.*)#
- or ($dir, $filename) = ('.', $ARGV[0]);
-chdir($dir);
-$pwd = cwd();
-
-++ $IncludedFiles{$ARGV[0]} ;
-
-my(@XSStack) = ({type => 'none'}); # Stack of conditionals and INCLUDEs
-my($XSS_work_idx, $cpp_next_tmp) = (0, "XSubPPtmpAAAA");
-
-
-sub TrimWhitespace
-{
- $_[0] =~ s/^\s+|\s+$//go ;
-}
-
-sub TidyType
-{
- local ($_) = @_ ;
-
- # rationalise any '*' by joining them into bunches and removing whitespace
- s#\s*(\*+)\s*#$1#g;
- s#(\*+)# $1 #g ;
-
- # change multiple whitespace into a single space
- s/\s+/ /g ;
-
- # trim leading & trailing whitespace
- TrimWhitespace($_) ;
-
- $_ ;
-}
-
-$typemap = shift @ARGV;
-foreach $typemap (@tm) {
- die "Can't find $typemap in $pwd\n" unless -r $typemap;
-}
-unshift @tm, qw(../../../../lib/ExtUtils/typemap ../../../lib/ExtUtils/typemap
- ../../lib/ExtUtils/typemap ../../../typemap ../../typemap
- ../typemap typemap);
-foreach $typemap (@tm) {
- next unless -e $typemap ;
- # skip directories, binary files etc.
- warn("Warning: ignoring non-text typemap file '$typemap'\n"), next
- unless -T $typemap ;
- open(TYPEMAP, $typemap)
- or warn ("Warning: could not open typemap file '$typemap': $!\n"), next;
- $mode = 'Typemap';
- $junk = "" ;
- $current = \$junk;
- while (<TYPEMAP>) {
- next if /^\s*#/;
- my $line_no = $. + 1;
- if (/^INPUT\s*$/) { $mode = 'Input'; $current = \$junk; next; }
- if (/^OUTPUT\s*$/) { $mode = 'Output'; $current = \$junk; next; }
- if (/^TYPEMAP\s*$/) { $mode = 'Typemap'; $current = \$junk; next; }
- if ($mode eq 'Typemap') {
- chomp;
- my $line = $_ ;
- TrimWhitespace($_) ;
- # skip blank lines and comment lines
- next if /^$/ or /^#/ ;
- my($type,$kind, $proto) = /^\s*(.*?\S)\s+(\S+)\s*($proto_re*)\s*$/ or
- warn("Warning: File '$typemap' Line $. '$line' TYPEMAP entry needs 2 or 3 columns\n"), next;
- $type = TidyType($type) ;
- $type_kind{$type} = $kind ;
- # prototype defaults to '$'
- $proto = "\$" unless $proto ;
- warn("Warning: File '$typemap' Line $. '$line' Invalid prototype '$proto'\n")
- unless ValidProtoString($proto) ;
- $proto_letter{$type} = C_string($proto) ;
- }
- elsif (/^\s/) {
- $$current .= $_;
- }
- elsif ($mode eq 'Input') {
- s/\s+$//;
- $input_expr{$_} = '';
- $current = \$input_expr{$_};
- }
- else {
- s/\s+$//;
- $output_expr{$_} = '';
- $current = \$output_expr{$_};
- }
- }
- close(TYPEMAP);
-}
-
-foreach $key (keys %input_expr) {
- $input_expr{$key} =~ s/\n+$//;
-}
-
-$bal = qr[(?:(?>[^()]+)|\((??{ $bal })\))*]; # ()-balanced
-$cast = qr[(?:\(\s*SV\s*\*\s*\)\s*)?]; # Optional (SV*) cast
-$size = qr[,\s* (??{ $bal }) ]x; # Third arg (to setpvn)
-
-foreach $key (keys %output_expr) {
- use re 'eval';
-
- my ($t, $with_size, $arg, $sarg) =
- ($output_expr{$key} =~
- m[^ \s+ sv_set ( [iunp] ) v (n)? # Type, is_setpvn
- \s* \( \s* $cast \$arg \s* ,
- \s* ( (??{ $bal }) ) # Set from
- ( (??{ $size }) )? # Possible sizeof set-from
- \) \s* ; \s* $
- ]x);
- $targetable{$key} = [$t, $with_size, $arg, $sarg] if $t;
-}
-
-$END = "!End!\n\n"; # "impossible" keyword (multiple newline)
-
-# Match an XS keyword
-$BLOCK_re= '\s*(' . join('|', qw(
- REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE OUTPUT
- CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE VERSIONCHECK INCLUDE
- SCOPE INTERFACE INTERFACE_MACRO C_ARGS POSTCALL
- )) . "|$END)\\s*:";
-
-# Input: ($_, @line) == unparsed input.
-# Output: ($_, @line) == (rest of line, following lines).
-# Return: the matched keyword if found, otherwise 0
-sub check_keyword {
- $_ = shift(@line) while !/\S/ && @line;
- s/^(\s*)($_[0])\s*:\s*(?:#.*)?/$1/s && $2;
-}
-
-my ($C_group_rex, $C_arg);
-# Group in C (no support for comments or literals)
-$C_group_rex = qr/ [({\[]
- (?: (?> [^()\[\]{}]+ ) | (??{ $C_group_rex }) )*
- [)}\]] /x ;
-# Chunk in C without comma at toplevel (no comments):
-$C_arg = qr/ (?: (?> [^()\[\]{},"']+ )
- | (??{ $C_group_rex })
- | " (?: (?> [^\\"]+ )
- | \\.
- )* " # String literal
- | ' (?: (?> [^\\']+ ) | \\. )* ' # Char literal
- )* /xs;
-
-if ($WantLineNumbers) {
- {
- package xsubpp::counter;
- sub TIEHANDLE {
- my ($class, $cfile) = @_;
- my $buf = "";
- $SECTION_END_MARKER = "#line --- \"$cfile\"";
- $line_no = 1;
- bless \$buf;
- }
-
- sub PRINT {
- my $self = shift;
- for (@_) {
- $$self .= $_;
- while ($$self =~ s/^([^\n]*\n)//) {
- my $line = $1;
- ++ $line_no;
- $line =~ s|^\#line\s+---(?=\s)|#line $line_no|;
- print STDOUT $line;
- }
- }
- }
-
- sub PRINTF {
- my $self = shift;
- my $fmt = shift;
- $self->PRINT(sprintf($fmt, @_));
- }
-
- sub DESTROY {
- # Not necessary if we're careful to end with a "\n"
- my $self = shift;
- print STDOUT $$self;
- }
- }
-
- my $cfile = $filename;
- $cfile =~ s/\.xs$/.c/i or $cfile .= ".c";
- tie(*PSEUDO_STDOUT, 'xsubpp::counter', $cfile);
- select PSEUDO_STDOUT;
-}
-
-sub print_section {
- # the "do" is required for right semantics
- do { $_ = shift(@line) } while !/\S/ && @line;
-
- print("#line ", $line_no[@line_no - @line -1], " \"$filename\"\n")
- if $WantLineNumbers && !/^\s*#\s*line\b/ && !/^#if XSubPPtmp/;
- for (; defined($_) && !/^$BLOCK_re/o; $_ = shift(@line)) {
- print "$_\n";
- }
- print "$xsubpp::counter::SECTION_END_MARKER\n" if $WantLineNumbers;
-}
-
-sub merge_section {
- my $in = '';
-
- while (!/\S/ && @line) {
- $_ = shift(@line);
- }
-
- for (; defined($_) && !/^$BLOCK_re/o; $_ = shift(@line)) {
- $in .= "$_\n";
- }
- chomp $in;
- return $in;
-}
-
-sub process_keyword($)
-{
- my($pattern) = @_ ;
- my $kwd ;
-
- &{"${kwd}_handler"}()
- while $kwd = check_keyword($pattern) ;
-}
-
-sub CASE_handler {
- blurt ("Error: `CASE:' after unconditional `CASE:'")
- if $condnum && $cond eq '';
- $cond = $_;
- TrimWhitespace($cond);
- print " ", ($condnum++ ? " else" : ""), ($cond ? " if ($cond)\n" : "\n");
- $_ = '' ;
-}
-
-sub INPUT_handler {
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
- last if /^\s*NOT_IMPLEMENTED_YET/;
- next unless /\S/; # skip blank lines
-
- TrimWhitespace($_) ;
- my $line = $_ ;
-
- # remove trailing semicolon if no initialisation
- s/\s*;$//g unless /[=;+].*\S/ ;
-
- # check for optional initialisation code
- my $var_init = '' ;
- $var_init = $1 if s/\s*([=;+].*)$//s ;
- $var_init =~ s/"/\\"/g;
-
- s/\s+/ /g;
- my ($var_type, $var_addr, $var_name) = /^(.*?[^&\s])\s*(\&?)\s*\b(\w+)$/s
- or blurt("Error: invalid argument declaration '$line'"), next;
-
- # Check for duplicate definitions
- blurt ("Error: duplicate definition of argument '$var_name' ignored"), next
- if $arg_list{$var_name}++
- or defined $arg_types{$var_name} and not $processing_arg_with_types;
-
- $thisdone |= $var_name eq "THIS";
- $retvaldone |= $var_name eq "RETVAL";
- $var_types{$var_name} = $var_type;
- # XXXX This check is a safeguard against the unfinished conversion of
- # generate_init(). When generate_init() is fixed,
- # one can use 2-args map_type() unconditionally.
- if ($var_type =~ / \( \s* \* \s* \) /x) {
- # Function pointers are not yet supported with &output_init!
- print "\t" . &map_type($var_type, $var_name);
- $name_printed = 1;
- } else {
- print "\t" . &map_type($var_type);
- $name_printed = 0;
- }
- $var_num = $args_match{$var_name};
-
- $proto_arg[$var_num] = ProtoString($var_type)
- if $var_num ;
- $func_args =~ s/\b($var_name)\b/&$1/ if $var_addr;
- if ($var_init =~ /^[=;]\s*NO_INIT\s*;?\s*$/
- or $in_out{$var_name} and $in_out{$var_name} =~ /^OUT/
- and $var_init !~ /\S/) {
- if ($name_printed) {
- print ";\n";
- } else {
- print "\t$var_name;\n";
- }
- } elsif ($var_init =~ /\S/) {
- &output_init($var_type, $var_num, $var_name, $var_init, $name_printed);
- } elsif ($var_num) {
- # generate initialization code
- &generate_init($var_type, $var_num, $var_name, $name_printed);
- } else {
- print ";\n";
- }
- }
-}
-
-sub OUTPUT_handler {
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
- next unless /\S/;
- if (/^\s*SETMAGIC\s*:\s*(ENABLE|DISABLE)\s*/) {
- $DoSetMagic = ($1 eq "ENABLE" ? 1 : 0);
- next;
- }
- my ($outarg, $outcode) = /^\s*(\S+)\s*(.*?)\s*$/s ;
- blurt ("Error: duplicate OUTPUT argument '$outarg' ignored"), next
- if $outargs{$outarg} ++ ;
- if (!$gotRETVAL and $outarg eq 'RETVAL') {
- # deal with RETVAL last
- $RETVAL_code = $outcode ;
- $gotRETVAL = 1 ;
- next ;
- }
- blurt ("Error: OUTPUT $outarg not an argument"), next
- unless defined($args_match{$outarg});
- blurt("Error: No input definition for OUTPUT argument '$outarg' - ignored"), next
- unless defined $var_types{$outarg} ;
- $var_num = $args_match{$outarg};
- if ($outcode) {
- print "\t$outcode\n";
- print "\tSvSETMAGIC(ST(" , $var_num-1 , "));\n" if $DoSetMagic;
- } else {
- &generate_output($var_types{$outarg}, $var_num, $outarg, $DoSetMagic);
- }
- delete $in_out{$outarg} # No need to auto-OUTPUT
- if exists $in_out{$outarg} and $in_out{$outarg} =~ /OUT$/;
- }
-}
-
-sub C_ARGS_handler() {
- my $in = merge_section();
-
- TrimWhitespace($in);
- $func_args = $in;
-}
-
-sub INTERFACE_MACRO_handler() {
- my $in = merge_section();
-
- TrimWhitespace($in);
- if ($in =~ /\s/) { # two
- ($interface_macro, $interface_macro_set) = split ' ', $in;
- } else {
- $interface_macro = $in;
- $interface_macro_set = 'UNKNOWN_CVT'; # catch later
- }
- $interface = 1; # local
- $Interfaces = 1; # global
-}
-
-sub INTERFACE_handler() {
- my $in = merge_section();
-
- TrimWhitespace($in);
-
- foreach (split /[\s,]+/, $in) {
- $Interfaces{$_} = $_;
- }
- print Q<<"EOF";
-# XSFUNCTION = $interface_macro($ret_type,cv,XSANY.any_dptr);
-EOF
- $interface = 1; # local
- $Interfaces = 1; # global
-}
-
-sub CLEANUP_handler() { print_section() }
-sub PREINIT_handler() { print_section() }
-sub POSTCALL_handler() { print_section() }
-sub INIT_handler() { print_section() }
-
-sub GetAliases
-{
- my ($line) = @_ ;
- my ($orig) = $line ;
- my ($alias) ;
- my ($value) ;
-
- # Parse alias definitions
- # format is
- # alias = value alias = value ...
-
- while ($line =~ s/^\s*([\w:]+)\s*=\s*(\w+)\s*//) {
- $alias = $1 ;
- $orig_alias = $alias ;
- $value = $2 ;
-
- # check for optional package definition in the alias
- $alias = $Packprefix . $alias if $alias !~ /::/ ;
-
- # check for duplicate alias name & duplicate value
- Warn("Warning: Ignoring duplicate alias '$orig_alias'")
- if defined $XsubAliases{$alias} ;
-
- Warn("Warning: Aliases '$orig_alias' and '$XsubAliasValues{$value}' have identical values")
- if $XsubAliasValues{$value} ;
-
- $XsubAliases = 1;
- $XsubAliases{$alias} = $value ;
- $XsubAliasValues{$value} = $orig_alias ;
- }
-
- blurt("Error: Cannot parse ALIAS definitions from '$orig'")
- if $line ;
-}
-
-sub ATTRS_handler ()
-{
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
- next unless /\S/;
- TrimWhitespace($_) ;
- push @Attributes, $_;
- }
-}
-
-sub ALIAS_handler ()
-{
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
- next unless /\S/;
- TrimWhitespace($_) ;
- GetAliases($_) if $_ ;
- }
-}
-
-sub REQUIRE_handler ()
-{
- # the rest of the current line should contain a version number
- my ($Ver) = $_ ;
-
- TrimWhitespace($Ver) ;
-
- death ("Error: REQUIRE expects a version number")
- unless $Ver ;
-
- # check that the version number is of the form n.n
- death ("Error: REQUIRE: expected a number, got '$Ver'")
- unless $Ver =~ /^\d+(\.\d*)?/ ;
-
- death ("Error: xsubpp $Ver (or better) required--this is only $XSUBPP_version.")
- unless $XSUBPP_version >= $Ver ;
-}
-
-sub VERSIONCHECK_handler ()
-{
- # the rest of the current line should contain either ENABLE or
- # DISABLE
-
- TrimWhitespace($_) ;
-
- # check for ENABLE/DISABLE
- death ("Error: VERSIONCHECK: ENABLE/DISABLE")
- unless /^(ENABLE|DISABLE)/i ;
-
- $WantVersionChk = 1 if $1 eq 'ENABLE' ;
- $WantVersionChk = 0 if $1 eq 'DISABLE' ;
-
-}
-
-sub PROTOTYPE_handler ()
-{
- my $specified ;
-
- death("Error: Only 1 PROTOTYPE definition allowed per xsub")
- if $proto_in_this_xsub ++ ;
-
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
- next unless /\S/;
- $specified = 1 ;
- TrimWhitespace($_) ;
- if ($_ eq 'DISABLE') {
- $ProtoThisXSUB = 0
- }
- elsif ($_ eq 'ENABLE') {
- $ProtoThisXSUB = 1
- }
- else {
- # remove any whitespace
- s/\s+//g ;
- death("Error: Invalid prototype '$_'")
- unless ValidProtoString($_) ;
- $ProtoThisXSUB = C_string($_) ;
- }
- }
-
- # If no prototype specified, then assume empty prototype ""
- $ProtoThisXSUB = 2 unless $specified ;
-
- $ProtoUsed = 1 ;
-
-}
-
-sub SCOPE_handler ()
-{
- death("Error: Only 1 SCOPE declaration allowed per xsub")
- if $scope_in_this_xsub ++ ;
-
- for (; !/^$BLOCK_re/o; $_ = shift(@line)) {
- next unless /\S/;
- TrimWhitespace($_) ;
- if ($_ =~ /^DISABLE/i) {
- $ScopeThisXSUB = 0
- }
- elsif ($_ =~ /^ENABLE/i) {
- $ScopeThisXSUB = 1
- }
- }
-
-}
-
-sub PROTOTYPES_handler ()
-{
- # the rest of the current line should contain either ENABLE or
- # DISABLE
-
- TrimWhitespace($_) ;
-
- # check for ENABLE/DISABLE
- death ("Error: PROTOTYPES: ENABLE/DISABLE")
- unless /^(ENABLE|DISABLE)/i ;
-
- $WantPrototypes = 1 if $1 eq 'ENABLE' ;
- $WantPrototypes = 0 if $1 eq 'DISABLE' ;
- $ProtoUsed = 1 ;
-
-}
-
-sub INCLUDE_handler ()
-{
- # the rest of the current line should contain a valid filename
-
- TrimWhitespace($_) ;
-
- death("INCLUDE: filename missing")
- unless $_ ;
-
- death("INCLUDE: output pipe is illegal")
- if /^\s*\|/ ;
-
- # simple minded recursion detector
- death("INCLUDE loop detected")
- if $IncludedFiles{$_} ;
-
- ++ $IncludedFiles{$_} unless /\|\s*$/ ;
-
- # Save the current file context.
- push(@XSStack, {
- type => 'file',
- LastLine => $lastline,
- LastLineNo => $lastline_no,
- Line => \@line,
- LineNo => \@line_no,
- Filename => $filename,
- Handle => $FH,
- }) ;
-
- ++ $FH ;
-
- # open the new file
- open ($FH, "$_") or death("Cannot open '$_': $!") ;
-
- print Q<<"EOF" ;
-#
-#/* INCLUDE: Including '$_' from '$filename' */
-#
-EOF
-
- $filename = $_ ;
-
- # Prime the pump by reading the first
- # non-blank line
-
- # skip leading blank lines
- while (<$FH>) {
- last unless /^\s*$/ ;
- }
-
- $lastline = $_ ;
- $lastline_no = $. ;
-
-}
-
-sub PopFile()
-{
- return 0 unless $XSStack[-1]{type} eq 'file' ;
-
- my $data = pop @XSStack ;
- my $ThisFile = $filename ;
- my $isPipe = ($filename =~ /\|\s*$/) ;
-
- -- $IncludedFiles{$filename}
- unless $isPipe ;
-
- close $FH ;
-
- $FH = $data->{Handle} ;
- $filename = $data->{Filename} ;
- $lastline = $data->{LastLine} ;
- $lastline_no = $data->{LastLineNo} ;
- @line = @{ $data->{Line} } ;
- @line_no = @{ $data->{LineNo} } ;
-
- if ($isPipe and $? ) {
- -- $lastline_no ;
- print STDERR "Error reading from pipe '$ThisFile': $! in $filename, line $lastline_no\n" ;
- exit 1 ;
- }
-
- print Q<<"EOF" ;
-#
-#/* INCLUDE: Returning to '$filename' from '$ThisFile' */
-#
-EOF
-
- return 1 ;
-}
-
-sub ValidProtoString ($)
-{
- my($string) = @_ ;
-
- if ( $string =~ /^$proto_re+$/ ) {
- return $string ;
- }
-
- return 0 ;
-}
-
-sub C_string ($)
-{
- my($string) = @_ ;
-
- $string =~ s[\\][\\\\]g ;
- $string ;
-}
-
-sub ProtoString ($)
-{
- my ($type) = @_ ;
-
- $proto_letter{$type} or "\$" ;
-}
-
-sub check_cpp {
- my @cpp = grep(/^\#\s*(?:if|e\w+)/, @line);
- if (@cpp) {
- my ($cpp, $cpplevel);
- for $cpp (@cpp) {
- if ($cpp =~ /^\#\s*if/) {
- $cpplevel++;
- } elsif (!$cpplevel) {
- Warn("Warning: #else/elif/endif without #if in this function");
- print STDERR " (precede it with a blank line if the matching #if is outside the function)\n"
- if $XSStack[-1]{type} eq 'if';
- return;
- } elsif ($cpp =~ /^\#\s*endif/) {
- $cpplevel--;
- }
- }
- Warn("Warning: #if without #endif in this function") if $cpplevel;
- }
-}
-
-
-sub Q {
- my($text) = @_;
- $text =~ s/^#//gm;
- $text =~ s/\[\[/{/g;
- $text =~ s/\]\]/}/g;
- $text;
-}
-
-open($FH, $filename) or die "cannot open $filename: $!\n";
-
-# Identify the version of xsubpp used
-print <<EOM ;
-/*
- * This file was generated automatically by xsubpp version $XSUBPP_version from the
- * contents of $filename. Do not edit this file, edit $filename instead.
- *
- * ANY CHANGES MADE HERE WILL BE LOST!
- *
- */
-
-EOM
-
-
-print("#line 1 \"$filename\"\n")
- if $WantLineNumbers;
-
-firstmodule:
-while (<$FH>) {
- if (/^=/) {
- my $podstartline = $.;
- do {
- if (/^=cut\s*$/) {
- print("/* Skipped embedded POD. */\n");
- printf("#line %d \"$filename\"\n", $. + 1)
- if $WantLineNumbers;
- next firstmodule
- }
-
- } while (<$FH>);
- # At this point $. is at end of file so die won't state the start
- # of the problem, and as we haven't yet read any lines &death won't
- # show the correct line in the message either.
- die ("Error: Unterminated pod in $filename, line $podstartline\n")
- unless $lastline;
- }
- last if ($Module, $Package, $Prefix) =
- /^MODULE\s*=\s*([\w:]+)(?:\s+PACKAGE\s*=\s*([\w:]+))?(?:\s+PREFIX\s*=\s*(\S+))?\s*$/;
-
- if ($OBJ) {
- s/#if(?:def\s|\s+defined)\s*(\(__cplusplus\)|__cplusplus)/#if defined(__cplusplus) && !defined(PERL_OBJECT)/;
- }
- print $_;
-}
-&Exit unless defined $_;
-
-print "$xsubpp::counter::SECTION_END_MARKER\n" if $WantLineNumbers;
-
-$lastline = $_;
-$lastline_no = $.;
-
-# Read next xsub into @line from ($lastline, <$FH>).
-sub fetch_para {
- # parse paragraph
- death ("Error: Unterminated `#if/#ifdef/#ifndef'")
- if !defined $lastline && $XSStack[-1]{type} eq 'if';
- @line = ();
- @line_no = () ;
- return PopFile() if !defined $lastline;
-
- if ($lastline =~
- /^MODULE\s*=\s*([\w:]+)(?:\s+PACKAGE\s*=\s*([\w:]+))?(?:\s+PREFIX\s*=\s*(\S+))?\s*$/) {
- $Module = $1;
- $Package = defined($2) ? $2 : ''; # keep -w happy
- $Prefix = defined($3) ? $3 : ''; # keep -w happy
- $Prefix = quotemeta $Prefix ;
- ($Module_cname = $Module) =~ s/\W/_/g;
- ($Packid = $Package) =~ tr/:/_/;
- $Packprefix = $Package;
- $Packprefix .= "::" if $Packprefix ne "";
- $lastline = "";
- }
-
- for(;;) {
- # Skip embedded PODs
- while ($lastline =~ /^=/) {
- while ($lastline = <$FH>) {
- last if ($lastline =~ /^=cut\s*$/);
- }
- death ("Error: Unterminated pod") unless $lastline;
- $lastline = <$FH>;
- chomp $lastline;
- $lastline =~ s/^\s+$//;
- }
- if ($lastline !~ /^\s*#/ ||
- # CPP directives:
- # ANSI: if ifdef ifndef elif else endif define undef
- # line error pragma
- # gcc: warning include_next
- # obj-c: import
- # others: ident (gcc notes that some cpps have this one)
- $lastline =~ /^#[ \t]*(?:(?:if|ifn?def|elif|else|endif|define|undef|pragma|error|warning|line\s+\d+|ident)\b|(?:include(?:_next)?|import)\s*["<].*[>"])/) {
- last if $lastline =~ /^\S/ && @line && $line[-1] eq "";
- push(@line, $lastline);
- push(@line_no, $lastline_no) ;
- }
-
- # Read next line and continuation lines
- last unless defined($lastline = <$FH>);
- $lastline_no = $.;
- my $tmp_line;
- $lastline .= $tmp_line
- while ($lastline =~ /\\$/ && defined($tmp_line = <$FH>));
-
- chomp $lastline;
- $lastline =~ s/^\s+$//;
- }
- pop(@line), pop(@line_no) while @line && $line[-1] eq "";
- 1;
-}
-
-PARAGRAPH:
-while (fetch_para()) {
- # Print initial preprocessor statements and blank lines
- while (@line && $line[0] !~ /^[^\#]/) {
- my $line = shift(@line);
- print $line, "\n";
- next unless $line =~ /^\#\s*((if)(?:n?def)?|elsif|else|endif)\b/;
- my $statement = $+;
- if ($statement eq 'if') {
- $XSS_work_idx = @XSStack;
- push(@XSStack, {type => 'if'});
- } else {
- death ("Error: `$statement' with no matching `if'")
- if $XSStack[-1]{type} ne 'if';
- if ($XSStack[-1]{varname}) {
- push(@InitFileCode, "#endif\n");
- push(@BootCode, "#endif");
- }
-
- my(@fns) = keys %{$XSStack[-1]{functions}};
- if ($statement ne 'endif') {
- # Hide the functions defined in other #if branches, and reset.
- @{$XSStack[-1]{other_functions}}{@fns} = (1) x @fns;
- @{$XSStack[-1]}{qw(varname functions)} = ('', {});
- } else {
- my($tmp) = pop(@XSStack);
- 0 while (--$XSS_work_idx
- && $XSStack[$XSS_work_idx]{type} ne 'if');
- # Keep all new defined functions
- push(@fns, keys %{$tmp->{other_functions}});
- @{$XSStack[$XSS_work_idx]{functions}}{@fns} = (1) x @fns;
- }
- }
- }
-
- next PARAGRAPH unless @line;
-
- if ($XSS_work_idx && !$XSStack[$XSS_work_idx]{varname}) {
- # We are inside an #if, but have not yet #defined its xsubpp variable.
- print "#define $cpp_next_tmp 1\n\n";
- push(@InitFileCode, "#if $cpp_next_tmp\n");
- push(@BootCode, "#if $cpp_next_tmp");
- $XSStack[$XSS_work_idx]{varname} = $cpp_next_tmp++;
- }
-
- death ("Code is not inside a function"
- ." (maybe last function was ended by a blank line "
- ." followed by a a statement on column one?)")
- if $line[0] =~ /^\s/;
-
- # initialize info arrays
- undef(%args_match);
- undef(%var_types);
- undef(%defaults);
- undef($class);
- undef($static);
- undef($elipsis);
- undef($wantRETVAL) ;
- undef($RETVAL_no_return) ;
- undef(%arg_list) ;
- undef(@proto_arg) ;
- undef(@arg_with_types) ;
- undef($processing_arg_with_types) ;
- undef(%arg_types) ;
- undef(@outlist) ;
- undef(%in_out) ;
- undef($proto_in_this_xsub) ;
- undef($scope_in_this_xsub) ;
- undef($interface);
- undef($prepush_done);
- $interface_macro = 'XSINTERFACE_FUNC' ;
- $interface_macro_set = 'XSINTERFACE_FUNC_SET' ;
- $ProtoThisXSUB = $WantPrototypes ;
- $ScopeThisXSUB = 0;
- $xsreturn = 0;
-
- $_ = shift(@line);
- while ($kwd = check_keyword("REQUIRE|PROTOTYPES|VERSIONCHECK|INCLUDE")) {
- &{"${kwd}_handler"}() ;
- next PARAGRAPH unless @line ;
- $_ = shift(@line);
- }
-
- if (check_keyword("BOOT")) {
- &check_cpp;
- push (@BootCode, "#line $line_no[@line_no - @line] \"$filename\"")
- if $WantLineNumbers && $line[0] !~ /^\s*#\s*line\b/;
- push (@BootCode, @line, "") ;
- next PARAGRAPH ;
- }
-
-
- # extract return type, function name and arguments
- ($ret_type) = TidyType($_);
- $RETVAL_no_return = 1 if $ret_type =~ s/^NO_OUTPUT\s+//;
-
- # Allow one-line ANSI-like declaration
- unshift @line, $2
- if $process_argtypes
- and $ret_type =~ s/^(.*?\w.*?)\s*\b(\w+\s*\(.*)/$1/s;
-
- # a function definition needs at least 2 lines
- blurt ("Error: Function definition too short '$ret_type'"), next PARAGRAPH
- unless @line ;
-
- $static = 1 if $ret_type =~ s/^static\s+//;
-
- $func_header = shift(@line);
- blurt ("Error: Cannot parse function definition from '$func_header'"), next PARAGRAPH
- unless $func_header =~ /^(?:([\w:]*)::)?(\w+)\s*\(\s*(.*?)\s*\)\s*(const)?\s*(;\s*)?$/s;
-
- ($class, $func_name, $orig_args) = ($1, $2, $3) ;
- $class = "$4 $class" if $4;
- ($pname = $func_name) =~ s/^($Prefix)?/$Packprefix/;
- ($clean_func_name = $func_name) =~ s/^$Prefix//;
- $Full_func_name = "${Packid}_$clean_func_name";
- if ($Is_VMS) { $Full_func_name = $SymSet->addsym($Full_func_name); }
-
- # Check for duplicate function definition
- for $tmp (@XSStack) {
- next unless defined $tmp->{functions}{$Full_func_name};
- Warn("Warning: duplicate function definition '$clean_func_name' detected");
- last;
- }
- $XSStack[$XSS_work_idx]{functions}{$Full_func_name} ++ ;
- %XsubAliases = %XsubAliasValues = %Interfaces = @Attributes = ();
- $DoSetMagic = 1;
-
- $orig_args =~ s/\\\s*/ /g; # process line continuations
-
- my %only_outlist;
- if ($process_argtypes and $orig_args =~ /\S/) {
- my $args = "$orig_args ,";
- if ($args =~ /^( (??{ $C_arg }) , )* $ /x) {
- @args = ($args =~ /\G ( (??{ $C_arg }) ) , /xg);
- for ( @args ) {
- s/^\s+//;
- s/\s+$//;
- my $arg = $_;
- my $default;
- ($arg, $default) = / ( [^=]* ) ( (?: = .* )? ) /x;
- my ($pre, $name) = ($arg =~ /(.*?) \s* \b(\w+) \s* $ /x);
- next unless length $pre;
- my $out_type;
- my $inout_var;
- if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//) {
- my $type = $1;
- $out_type = $type if $type ne 'IN';
- $arg =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//;
- }
- if (/\W/) { # Has a type
- push @arg_with_types, $arg;
- # warn "pushing '$arg'\n";
- $arg_types{$name} = $arg;
- $_ = "$name$default";
- }
- $only_outlist{$_} = 1 if $out_type eq "OUTLIST";
- push @outlist, $name if $out_type =~ /OUTLIST$/;
- $in_out{$name} = $out_type if $out_type;
- }
- } else {
- @args = split(/\s*,\s*/, $orig_args);
- Warn("Warning: cannot parse argument list '$orig_args', fallback to split");
- }
- } else {
- @args = split(/\s*,\s*/, $orig_args);
- for (@args) {
- if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|IN_OUT|OUT)\s+//) {
- my $out_type = $1;
- next if $out_type eq 'IN';
- $only_outlist{$_} = 1 if $out_type eq "OUTLIST";
- push @outlist, $name if $out_type =~ /OUTLIST$/;
- $in_out{$_} = $out_type;
- }
- }
- }
- if (defined($class)) {
- my $arg0 = ((defined($static) or $func_name eq 'new')
- ? "CLASS" : "THIS");
- unshift(@args, $arg0);
- ($report_args = "$arg0, $report_args") =~ s/^\w+, $/$arg0/;
- }
- my $extra_args = 0;
- @args_num = ();
- $num_args = 0;
- my $report_args = '';
- foreach $i (0 .. $#args) {
- if ($args[$i] =~ s/\.\.\.//) {
- $elipsis = 1;
- if ($args[$i] eq '' && $i == $#args) {
- $report_args .= ", ...";
- pop(@args);
- last;
- }
- }
- if ($only_outlist{$args[$i]}) {
- push @args_num, undef;
- } else {
- push @args_num, ++$num_args;
- $report_args .= ", $args[$i]";
- }
- if ($args[$i] =~ /^([^=]*[^\s=])\s*=\s*(.*)/s) {
- $extra_args++;
- $args[$i] = $1;
- $defaults{$args[$i]} = $2;
- $defaults{$args[$i]} =~ s/"/\\"/g;
- }
- $proto_arg[$i+1] = "\$" ;
- }
- $min_args = $num_args - $extra_args;
- $report_args =~ s/"/\\"/g;
- $report_args =~ s/^,\s+//;
- my @func_args = @args;
- shift @func_args if defined($class);
-
- for (@func_args) {
- s/^/&/ if $in_out{$_};
- }
- $func_args = join(", ", @func_args);
- @args_match{@args} = @args_num;
-
- $PPCODE = grep(/^\s*PPCODE\s*:/, @line);
- $CODE = grep(/^\s*CODE\s*:/, @line);
- # Detect CODE: blocks which use ST(n)= or XST_m*(n,v)
- # to set explicit return values.
- $EXPLICIT_RETURN = ($CODE &&
- ("@line" =~ /(\bST\s*\([^;]*=) | (\bXST_m\w+\s*\()/x ));
- $ALIAS = grep(/^\s*ALIAS\s*:/, @line);
- $INTERFACE = grep(/^\s*INTERFACE\s*:/, @line);
-
- $xsreturn = 1 if $EXPLICIT_RETURN;
-
- # print function header
- print Q<<"EOF";
-#XS(XS_${Full_func_name})
-#[[
-# dXSARGS;
-EOF
- print Q<<"EOF" if $ALIAS ;
-# dXSI32;
-EOF
- print Q<<"EOF" if $INTERFACE ;
-# dXSFUNCTION($ret_type);
-EOF
- if ($elipsis) {
- $cond = ($min_args ? qq(items < $min_args) : 0);
- }
- elsif ($min_args == $num_args) {
- $cond = qq(items != $min_args);
- }
- else {
- $cond = qq(items < $min_args || items > $num_args);
- }
-
- print Q<<"EOF" if $except;
-# char errbuf[1024];
-# *errbuf = '\0';
-EOF
-
- if ($ALIAS)
- { print Q<<"EOF" if $cond }
-# if ($cond)
-# Perl_croak(aTHX_ "Usage: %s($report_args)", GvNAME(CvGV(cv)));
-EOF
- else
- { print Q<<"EOF" if $cond }
-# if ($cond)
-# Perl_croak(aTHX_ "Usage: $pname($report_args)");
-EOF
-
- print Q<<"EOF" if $PPCODE;
-# SP -= items;
-EOF
-
- # Now do a block of some sort.
-
- $condnum = 0;
- $cond = ''; # last CASE: condidional
- push(@line, "$END:");
- push(@line_no, $line_no[-1]);
- $_ = '';
- &check_cpp;
- while (@line) {
- &CASE_handler if check_keyword("CASE");
- print Q<<"EOF";
-# $except [[
-EOF
-
- # do initialization of input variables
- $thisdone = 0;
- $retvaldone = 0;
- $deferred = "";
- %arg_list = () ;
- $gotRETVAL = 0;
-
- INPUT_handler() ;
- process_keyword("INPUT|PREINIT|INTERFACE_MACRO|C_ARGS|ALIAS|ATTRS|PROTOTYPE|SCOPE") ;
-
- print Q<<"EOF" if $ScopeThisXSUB;
-# ENTER;
-# [[
-EOF
-
- if (!$thisdone && defined($class)) {
- if (defined($static) or $func_name eq 'new') {
- print "\tchar *";
- $var_types{"CLASS"} = "char *";
- &generate_init("char *", 1, "CLASS");
- }
- else {
- print "\t$class *";
- $var_types{"THIS"} = "$class *";
- &generate_init("$class *", 1, "THIS");
- }
- }
-
- # do code
- if (/^\s*NOT_IMPLEMENTED_YET/) {
- print "\n\tPerl_croak(aTHX_ \"$pname: not implemented yet\");\n";
- $_ = '' ;
- } else {
- if ($ret_type ne "void") {
- print "\t" . &map_type($ret_type, 'RETVAL') . ";\n"
- if !$retvaldone;
- $args_match{"RETVAL"} = 0;
- $var_types{"RETVAL"} = $ret_type;
- print "\tdXSTARG;\n"
- if $WantOptimize and $targetable{$type_kind{$ret_type}};
- }
-
- if (@arg_with_types) {
- unshift @line, @arg_with_types, $_;
- $_ = "";
- $processing_arg_with_types = 1;
- INPUT_handler() ;
- }
- print $deferred;
-
- process_keyword("INIT|ALIAS|ATTRS|PROTOTYPE|INTERFACE_MACRO|INTERFACE|C_ARGS") ;
-
- if (check_keyword("PPCODE")) {
- print_section();
- death ("PPCODE must be last thing") if @line;
- print "\tLEAVE;\n" if $ScopeThisXSUB;
- print "\tPUTBACK;\n\treturn;\n";
- } elsif (check_keyword("CODE")) {
- print_section() ;
- } elsif (defined($class) and $func_name eq "DESTROY") {
- print "\n\t";
- print "delete THIS;\n";
- } else {
- print "\n\t";
- if ($ret_type ne "void") {
- print "RETVAL = ";
- $wantRETVAL = 1;
- }
- if (defined($static)) {
- if ($func_name eq 'new') {
- $func_name = "$class";
- } else {
- print "${class}::";
- }
- } elsif (defined($class)) {
- if ($func_name eq 'new') {
- $func_name .= " $class";
- } else {
- print "THIS->";
- }
- }
- $func_name =~ s/^($spat)//
- if defined($spat);
- $func_name = 'XSFUNCTION' if $interface;
- print "$func_name($func_args);\n";
- }
- }
-
- # do output variables
- $gotRETVAL = 0; # 1 if RETVAL seen in OUTPUT section;
- undef $RETVAL_code ; # code to set RETVAL (from OUTPUT section);
- # $wantRETVAL set if 'RETVAL =' autogenerated
- ($wantRETVAL, $ret_type) = (0, 'void') if $RETVAL_no_return;
- undef %outargs ;
- process_keyword("POSTCALL|OUTPUT|ALIAS|ATTRS|PROTOTYPE");
-
- &generate_output($var_types{$_}, $args_match{$_}, $_, $DoSetMagic)
- for grep $in_out{$_} =~ /OUT$/, keys %in_out;
-
- # all OUTPUT done, so now push the return value on the stack
- if ($gotRETVAL && $RETVAL_code) {
- print "\t$RETVAL_code\n";
- } elsif ($gotRETVAL || $wantRETVAL) {
- my $t = $WantOptimize && $targetable{$type_kind{$ret_type}};
- my $var = 'RETVAL';
- my $type = $ret_type;
-
- # 0: type, 1: with_size, 2: how, 3: how_size
- if ($t and not $t->[1] and $t->[0] eq 'p') {
- # PUSHp corresponds to setpvn. Treate setpv directly
- my $what = eval qq("$t->[2]");
- warn $@ if $@;
-
- print "\tsv_setpv(TARG, $what); XSprePUSH; PUSHTARG;\n";
- $prepush_done = 1;
- }
- elsif ($t) {
- my $what = eval qq("$t->[2]");
- warn $@ if $@;
-
- my $size = $t->[3];
- $size = '' unless defined $size;
- $size = eval qq("$size");
- warn $@ if $@;
- print "\tXSprePUSH; PUSH$t->[0]($what$size);\n";
- $prepush_done = 1;
- }
- else {
- # RETVAL almost never needs SvSETMAGIC()
- &generate_output($ret_type, 0, 'RETVAL', 0);
- }
- }
-
- $xsreturn = 1 if $ret_type ne "void";
- my $num = $xsreturn;
- my $c = @outlist;
- print "\tXSprePUSH;" if $c and not $prepush_done;
- print "\tEXTEND(SP,$c);\n" if $c;
- $xsreturn += $c;
- generate_output($var_types{$_}, $num++, $_, 0, 1) for @outlist;
-
- # do cleanup
- process_keyword("CLEANUP|ALIAS|ATTRS|PROTOTYPE") ;
-
- print Q<<"EOF" if $ScopeThisXSUB;
-# ]]
-EOF
- print Q<<"EOF" if $ScopeThisXSUB and not $PPCODE;
-# LEAVE;
-EOF
-
- # print function trailer
- print Q<<EOF;
-# ]]
-EOF
- print Q<<EOF if $except;
-# BEGHANDLERS
-# CATCHALL
-# sprintf(errbuf, "%s: %s\\tpropagated", Xname, Xreason);
-# ENDHANDLERS
-EOF
- if (check_keyword("CASE")) {
- blurt ("Error: No `CASE:' at top of function")
- unless $condnum;
- $_ = "CASE: $_"; # Restore CASE: label
- next;
- }
- last if $_ eq "$END:";
- death(/^$BLOCK_re/o ? "Misplaced `$1:'" : "Junk at end of function");
- }
-
- print Q<<EOF if $except;
-# if (errbuf[0])
-# Perl_croak(aTHX_ errbuf);
-EOF
-
- if ($xsreturn) {
- print Q<<EOF unless $PPCODE;
-# XSRETURN($xsreturn);
-EOF
- } else {
- print Q<<EOF unless $PPCODE;
-# XSRETURN_EMPTY;
-EOF
- }
-
- print Q<<EOF;
-#]]
-#
-EOF
-
- my $newXS = "newXS" ;
- my $proto = "" ;
-
- # Build the prototype string for the xsub
- if ($ProtoThisXSUB) {
- $newXS = "newXSproto";
-
- if ($ProtoThisXSUB eq 2) {
- # User has specified empty prototype
- $proto = ', ""' ;
- }
- elsif ($ProtoThisXSUB ne 1) {
- # User has specified a prototype
- $proto = ', "' . $ProtoThisXSUB . '"';
- }
- else {
- my $s = ';';
- if ($min_args < $num_args) {
- $s = '';
- $proto_arg[$min_args] .= ";" ;
- }
- push @proto_arg, "$s\@"
- if $elipsis ;
-
- $proto = ', "' . join ("", @proto_arg) . '"';
- }
- }
-
- if (%XsubAliases) {
- $XsubAliases{$pname} = 0
- unless defined $XsubAliases{$pname} ;
- while ( ($name, $value) = each %XsubAliases) {
- push(@InitFileCode, Q<<"EOF");
-# cv = newXS(\"$name\", XS_$Full_func_name, file);
-# XSANY.any_i32 = $value ;
-EOF
- push(@InitFileCode, Q<<"EOF") if $proto;
-# sv_setpv((SV*)cv$proto) ;
-EOF
- }
- }
- elsif (@Attributes) {
- push(@InitFileCode, Q<<"EOF");
-# cv = newXS(\"$pname\", XS_$Full_func_name, file);
-# apply_attrs_string("$Package", cv, "@Attributes", 0);
-EOF
- }
- elsif ($interface) {
- while ( ($name, $value) = each %Interfaces) {
- $name = "$Package\::$name" unless $name =~ /::/;
- push(@InitFileCode, Q<<"EOF");
-# cv = newXS(\"$name\", XS_$Full_func_name, file);
-# $interface_macro_set(cv,$value) ;
-EOF
- push(@InitFileCode, Q<<"EOF") if $proto;
-# sv_setpv((SV*)cv$proto) ;
-EOF
- }
- }
- else {
- push(@InitFileCode,
- " ${newXS}(\"$pname\", XS_$Full_func_name, file$proto);\n");
- }
-}
-
-# print initialization routine
-
-print Q<<"EOF";
-##ifdef __cplusplus
-#extern "C"
-##endif
-EOF
-
-print Q<<"EOF";
-#XS(boot_$Module_cname)
-EOF
-
-print Q<<"EOF";
-#[[
-# dXSARGS;
-# char* file = __FILE__;
-#
-EOF
-
-print Q<<"EOF" if $WantVersionChk ;
-# XS_VERSION_BOOTCHECK ;
-#
-EOF
-
-print Q<<"EOF" if defined $XsubAliases or defined $Interfaces ;
-# {
-# CV * cv ;
-#
-EOF
-
-print @InitFileCode;
-
-print Q<<"EOF" if defined $XsubAliases or defined $Interfaces ;
-# }
-EOF
-
-if (@BootCode)
-{
- print "\n /* Initialisation Section */\n\n" ;
- @line = @BootCode;
- print_section();
- print "\n /* End of Initialisation Section */\n\n" ;
-}
-
-print Q<<"EOF";;
-# XSRETURN_YES;
-#]]
-#
-EOF
-
-warn("Please specify prototyping behavior for $filename (see perlxs manual)\n")
- unless $ProtoUsed ;
-&Exit;
-
-sub output_init {
- local($type, $num, $var, $init, $name_printed) = @_;
- local($arg) = "ST(" . ($num - 1) . ")";
-
- if( $init =~ /^=/ ) {
- if ($name_printed) {
- eval qq/print " $init\\n"/;
- } else {
- eval qq/print "\\t$var $init\\n"/;
- }
- warn $@ if $@;
- } else {
- if( $init =~ s/^\+// && $num ) {
- &generate_init($type, $num, $var, $name_printed);
- } elsif ($name_printed) {
- print ";\n";
- $init =~ s/^;//;
- } else {
- eval qq/print "\\t$var;\\n"/;
- warn $@ if $@;
- $init =~ s/^;//;
- }
- $deferred .= eval qq/"\\n\\t$init\\n"/;
- warn $@ if $@;
- }
-}
-
-sub Warn
-{
- # work out the line number
- my $line_no = $line_no[@line_no - @line -1] ;
-
- print STDERR "@_ in $filename, line $line_no\n" ;
-}
-
-sub blurt
-{
- Warn @_ ;
- $errors ++
-}
-
-sub death
-{
- Warn @_ ;
- exit 1 ;
-}
-
-sub generate_init {
- local($type, $num, $var) = @_;
- local($arg) = "ST(" . ($num - 1) . ")";
- local($argoff) = $num - 1;
- local($ntype);
- local($tk);
-
- $type = TidyType($type) ;
- blurt("Error: '$type' not in typemap"), return
- unless defined($type_kind{$type});
-
- ($ntype = $type) =~ s/\s*\*/Ptr/g;
- ($subtype = $ntype) =~ s/(?:Array)?(?:Ptr)?$//;
- $tk = $type_kind{$type};
- $tk =~ s/OBJ$/REF/ if $func_name =~ /DESTROY$/;
- $type =~ tr/:/_/;
- blurt("Error: No INPUT definition for type '$type', typekind '$type_kind{$type}' found"), return
- unless defined $input_expr{$tk} ;
- $expr = $input_expr{$tk};
- if ($expr =~ /DO_ARRAY_ELEM/) {
- blurt("Error: '$subtype' not in typemap"), return
- unless defined($type_kind{$subtype});
- blurt("Error: No INPUT definition for type '$subtype', typekind '$type_kind{$subtype}' found"), return
- unless defined $input_expr{$type_kind{$subtype}} ;
- $subexpr = $input_expr{$type_kind{$subtype}};
- $subexpr =~ s/ntype/subtype/g;
- $subexpr =~ s/\$arg/ST(ix_$var)/g;
- $subexpr =~ s/\n\t/\n\t\t/g;
- $subexpr =~ s/is not of (.*\")/[arg %d] is not of $1, ix_$var + 1/g;
- $subexpr =~ s/\$var/${var}[ix_$var - $argoff]/;
- $expr =~ s/DO_ARRAY_ELEM/$subexpr/;
- }
- if ($expr =~ m#/\*.*scope.*\*/#i) { # "scope" in C comments
- $ScopeThisXSUB = 1;
- }
- if (defined($defaults{$var})) {
- $expr =~ s/(\t+)/$1 /g;
- $expr =~ s/ /\t/g;
- if ($name_printed) {
- print ";\n";
- } else {
- eval qq/print "\\t$var;\\n"/;
- warn $@ if $@;
- }
- if ($defaults{$var} eq 'NO_INIT') {
- $deferred .= eval qq/"\\n\\tif (items >= $num) {\\n$expr;\\n\\t}\\n"/;
- } else {
- $deferred .= eval qq/"\\n\\tif (items < $num)\\n\\t $var = $defaults{$var};\\n\\telse {\\n$expr;\\n\\t}\\n"/;
- }
- warn $@ if $@;
- } elsif ($ScopeThisXSUB or $expr !~ /^\t\$var =/) {
- if ($name_printed) {
- print ";\n";
- } else {
- eval qq/print "\\t$var;\\n"/;
- warn $@ if $@;
- }
- $deferred .= eval qq/"\\n$expr;\\n"/;
- warn $@ if $@;
- } else {
- die "panic: do not know how to handle this branch for function pointers"
- if $name_printed;
- eval qq/print "$expr;\\n"/;
- warn $@ if $@;
- }
-}
-
-sub generate_output {
- local($type, $num, $var, $do_setmagic, $do_push) = @_;
- local($arg) = "ST(" . ($num - ($num != 0)) . ")";
- local($argoff) = $num - 1;
- local($ntype);
-
- $type = TidyType($type) ;
- if ($type =~ /^array\(([^,]*),(.*)\)/) {
- print "\tsv_setpvn($arg, (char *)$var, $2 * sizeof($1));\n";
- print "\tSvSETMAGIC($arg);\n" if $do_setmagic;
- } else {
- blurt("Error: '$type' not in typemap"), return
- unless defined($type_kind{$type});
- blurt("Error: No OUTPUT definition for type '$type', typekind '$type_kind{$type}' found"), return
- unless defined $output_expr{$type_kind{$type}} ;
- ($ntype = $type) =~ s/\s*\*/Ptr/g;
- $ntype =~ s/\(\)//g;
- ($subtype = $ntype) =~ s/(?:Array)?(?:Ptr)?$//;
- $expr = $output_expr{$type_kind{$type}};
- if ($expr =~ /DO_ARRAY_ELEM/) {
- blurt("Error: '$subtype' not in typemap"), return
- unless defined($type_kind{$subtype});
- blurt("Error: No OUTPUT definition for type '$subtype', typekind '$type_kind{$subtype}' found"), return
- unless defined $output_expr{$type_kind{$subtype}} ;
- $subexpr = $output_expr{$type_kind{$subtype}};
- $subexpr =~ s/ntype/subtype/g;
- $subexpr =~ s/\$arg/ST(ix_$var)/g;
- $subexpr =~ s/\$var/${var}[ix_$var]/g;
- $subexpr =~ s/\n\t/\n\t\t/g;
- $expr =~ s/DO_ARRAY_ELEM\n/$subexpr/;
- eval "print qq\a$expr\a";
- warn $@ if $@;
- print "\t\tSvSETMAGIC(ST(ix_$var));\n" if $do_setmagic;
- }
- elsif ($var eq 'RETVAL') {
- if ($expr =~ /^\t\$arg = new/) {
- # We expect that $arg has refcnt 1, so we need to
- # mortalize it.
- eval "print qq\a$expr\a";
- warn $@ if $@;
- print "\tsv_2mortal(ST($num));\n";
- print "\tSvSETMAGIC(ST($num));\n" if $do_setmagic;
- }
- elsif ($expr =~ /^\s*\$arg\s*=/) {
- # We expect that $arg has refcnt >=1, so we need
- # to mortalize it!
- eval "print qq\a$expr\a";
- warn $@ if $@;
- print "\tsv_2mortal(ST(0));\n";
- print "\tSvSETMAGIC(ST(0));\n" if $do_setmagic;
- }
- else {
- # Just hope that the entry would safely write it
- # over an already mortalized value. By
- # coincidence, something like $arg = &sv_undef
- # works too.
- print "\tST(0) = sv_newmortal();\n";
- eval "print qq\a$expr\a";
- warn $@ if $@;
- # new mortals don't have set magic
- }
- }
- elsif ($do_push) {
- print "\tPUSHs(sv_newmortal());\n";
- $arg = "ST($num)";
- eval "print qq\a$expr\a";
- warn $@ if $@;
- print "\tSvSETMAGIC($arg);\n" if $do_setmagic;
- }
- elsif ($arg =~ /^ST\(\d+\)$/) {
- eval "print qq\a$expr\a";
- warn $@ if $@;
- print "\tSvSETMAGIC($arg);\n" if $do_setmagic;
- }
- }
-}
-
-sub map_type {
- my($type, $varname) = @_;
-
- $type =~ tr/:/_/;
- $type =~ s/^array\(([^,]*),(.*)\).*/$1 */s;
- if ($varname) {
- if ($varname && $type =~ / \( \s* \* (?= \s* \) ) /xg) {
- (substr $type, pos $type, 0) = " $varname ";
- } else {
- $type .= "\t$varname";
- }
- }
- $type;
-}
-
-
-sub Exit {
-# If this is VMS, the exit status has meaning to the shell, so we
-# use a predictable value (SS$_Normal or SS$_Abort) rather than an
-# arbitrary number.
-# exit ($Is_VMS ? ($errors ? 44 : 1) : $errors) ;
- exit ($errors ? 1 : 0);
-}
diff --git a/contrib/perl5/lib/Fatal.pm b/contrib/perl5/lib/Fatal.pm
deleted file mode 100644
index 1496117..0000000
--- a/contrib/perl5/lib/Fatal.pm
+++ /dev/null
@@ -1,186 +0,0 @@
-package Fatal;
-
-use 5.005_64;
-use Carp;
-use strict;
-our($AUTOLOAD, $Debug, $VERSION);
-
-$VERSION = 1.02;
-
-$Debug = 0 unless defined $Debug;
-
-sub import {
- my $self = shift(@_);
- my($sym, $pkg);
- my $void = 0;
- $pkg = (caller)[0];
- foreach $sym (@_) {
- if ($sym eq ":void") {
- $void = 1;
- }
- else {
- &_make_fatal($sym, $pkg, $void);
- }
- }
-};
-
-sub AUTOLOAD {
- my $cmd = $AUTOLOAD;
- $cmd =~ s/.*:://;
- &_make_fatal($cmd, (caller)[0]);
- goto &$AUTOLOAD;
-}
-
-sub fill_protos {
- my $proto = shift;
- my ($n, $isref, @out, @out1, $seen_semi) = -1;
- while ($proto =~ /\S/) {
- $n++;
- push(@out1,[$n,@out]) if $seen_semi;
- push(@out, $1 . "{\$_[$n]}"), next if $proto =~ s/^\s*\\([\@%\$\&])//;
- push(@out, "\$_[$n]"), next if $proto =~ s/^\s*([*\$&])//;
- push(@out, "\@_[$n..\$#_]"), last if $proto =~ s/^\s*(;\s*)?\@//;
- $seen_semi = 1, $n--, next if $proto =~ s/^\s*;//; # XXXX ????
- die "Unknown prototype letters: \"$proto\"";
- }
- push(@out1,[$n+1,@out]);
- @out1;
-}
-
-sub write_invocation {
- my ($core, $call, $name, $void, @argvs) = @_;
- if (@argvs == 1) { # No optional arguments
- my @argv = @{$argvs[0]};
- shift @argv;
- return "\t" . one_invocation($core, $call, $name, $void, @argv) . ";\n";
- } else {
- my $else = "\t";
- my (@out, @argv, $n);
- while (@argvs) {
- @argv = @{shift @argvs};
- $n = shift @argv;
- push @out, "$ {else}if (\@_ == $n) {\n";
- $else = "\t} els";
- push @out,
- "\t\treturn " . one_invocation($core, $call, $name, $void, @argv) . ";\n";
- }
- push @out, <<EOC;
- }
- die "$name(\@_): Do not expect to get ", scalar \@_, " arguments";
-EOC
- return join '', @out;
- }
-}
-
-sub one_invocation {
- my ($core, $call, $name, $void, @argv) = @_;
- local $" = ', ';
- if ($void) {
- return qq/(defined wantarray)?$call(@argv):
- $call(@argv) || croak "Can't $name(\@_)/ .
- ($core ? ': $!' : ', \$! is \"$!\"') . '"'
- } else {
- return qq{$call(@argv) || croak "Can't $name(\@_)} .
- ($core ? ': $!' : ', \$! is \"$!\"') . '"';
- }
-}
-
-sub _make_fatal {
- my($sub, $pkg, $void) = @_;
- my($name, $code, $sref, $real_proto, $proto, $core, $call);
- my $ini = $sub;
-
- $sub = "${pkg}::$sub" unless $sub =~ /::/;
- $name = $sub;
- $name =~ s/.*::// or $name =~ s/^&//;
- print "# _make_fatal: sub=$sub pkg=$pkg name=$name void=$void\n" if $Debug;
- croak "Bad subroutine name for Fatal: $name" unless $name =~ /^\w+$/;
- if (defined(&$sub)) { # user subroutine
- $sref = \&$sub;
- $proto = prototype $sref;
- $call = '&$sref';
- } elsif ($sub eq $ini) { # Stray user subroutine
- die "$sub is not a Perl subroutine"
- } else { # CORE subroutine
- $proto = eval { prototype "CORE::$name" };
- die "$name is neither a builtin, nor a Perl subroutine"
- if $@;
- die "Cannot make a non-overridable builtin fatal"
- if not defined $proto;
- $core = 1;
- $call = "CORE::$name";
- }
- if (defined $proto) {
- $real_proto = " ($proto)";
- } else {
- $real_proto = '';
- $proto = '@';
- }
- $code = <<EOS;
-sub$real_proto {
- local(\$", \$!) = (', ', 0);
-EOS
- my @protos = fill_protos($proto);
- $code .= write_invocation($core, $call, $name, $void, @protos);
- $code .= "}\n";
- print $code if $Debug;
- {
- no strict 'refs'; # to avoid: Can't use string (...) as a symbol ref ...
- $code = eval("package $pkg; use Carp; $code");
- die if $@;
- no warnings; # to avoid: Subroutine foo redefined ...
- *{$sub} = $code;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Fatal - replace functions with equivalents which succeed or die
-
-=head1 SYNOPSIS
-
- use Fatal qw(open close);
-
- sub juggle { . . . }
- import Fatal 'juggle';
-
-=head1 DESCRIPTION
-
-C<Fatal> provides a way to conveniently replace functions which normally
-return a false value when they fail with equivalents which raise exceptions
-if they are not successful. This lets you use these functions without
-having to test their return values explicitly on each call. Exceptions
-can be caught using C<eval{}>. See L<perlfunc> and L<perlvar> for details.
-
-The do-or-die equivalents are set up simply by calling Fatal's
-C<import> routine, passing it the names of the functions to be
-replaced. You may wrap both user-defined functions and overridable
-CORE operators (except C<exec>, C<system> which cannot be expressed
-via prototypes) in this way.
-
-If the symbol C<:void> appears in the import list, then functions
-named later in that import list raise an exception only when
-these are called in void context--that is, when their return
-values are ignored. For example
-
- use Fatal qw/:void open close/;
-
- # properly checked, so no exception raised on error
- if(open(FH, "< /bogotic") {
- warn "bogo file, dude: $!";
- }
-
- # not checked, so error raises an exception
- close FH;
-
-=head1 AUTHOR
-
-Lionel.Cons@cern.ch
-
-prototype updates by Ilya Zakharevich ilya@math.ohio-state.edu
-
-=cut
diff --git a/contrib/perl5/lib/File/Basename.pm b/contrib/perl5/lib/File/Basename.pm
deleted file mode 100644
index 94aac2d..0000000
--- a/contrib/perl5/lib/File/Basename.pm
+++ /dev/null
@@ -1,283 +0,0 @@
-package File::Basename;
-
-=head1 NAME
-
-fileparse - split a pathname into pieces
-
-basename - extract just the filename from a path
-
-dirname - extract just the directory from a path
-
-=head1 SYNOPSIS
-
- use File::Basename;
-
- ($name,$path,$suffix) = fileparse($fullname,@suffixlist)
- fileparse_set_fstype($os_string);
- $basename = basename($fullname,@suffixlist);
- $dirname = dirname($fullname);
-
- ($name,$path,$suffix) = fileparse("lib/File/Basename.pm","\.pm");
- fileparse_set_fstype("VMS");
- $basename = basename("lib/File/Basename.pm",".pm");
- $dirname = dirname("lib/File/Basename.pm");
-
-=head1 DESCRIPTION
-
-These routines allow you to parse file specifications into useful
-pieces using the syntax of different operating systems.
-
-=over 4
-
-=item fileparse_set_fstype
-
-You select the syntax via the routine fileparse_set_fstype().
-
-If the argument passed to it contains one of the substrings
-"VMS", "MSDOS", "MacOS", "AmigaOS" or "MSWin32", the file specification
-syntax of that operating system is used in future calls to
-fileparse(), basename(), and dirname(). If it contains none of
-these substrings, Unix syntax is used. This pattern matching is
-case-insensitive. If you've selected VMS syntax, and the file
-specification you pass to one of these routines contains a "/",
-they assume you are using Unix emulation and apply the Unix syntax
-rules instead, for that function call only.
-
-If the argument passed to it contains one of the substrings "VMS",
-"MSDOS", "MacOS", "AmigaOS", "os2", "MSWin32" or "RISCOS", then the pattern
-matching for suffix removal is performed without regard for case,
-since those systems are not case-sensitive when opening existing files
-(though some of them preserve case on file creation).
-
-If you haven't called fileparse_set_fstype(), the syntax is chosen
-by examining the builtin variable C<$^O> according to these rules.
-
-=item fileparse
-
-The fileparse() routine divides a file specification into three
-parts: a leading B<path>, a file B<name>, and a B<suffix>. The
-B<path> contains everything up to and including the last directory
-separator in the input file specification. The remainder of the input
-file specification is then divided into B<name> and B<suffix> based on
-the optional patterns you specify in C<@suffixlist>. Each element of
-this list is interpreted as a regular expression, and is matched
-against the end of B<name>. If this succeeds, the matching portion of
-B<name> is removed and prepended to B<suffix>. By proper use of
-C<@suffixlist>, you can remove file types or versions for examination.
-
-You are guaranteed that if you concatenate B<path>, B<name>, and
-B<suffix> together in that order, the result will denote the same
-file as the input file specification.
-
-=back
-
-=head1 EXAMPLES
-
-Using Unix file syntax:
-
- ($base,$path,$type) = fileparse('/virgil/aeneid/draft.book7',
- '\.book\d+');
-
-would yield
-
- $base eq 'draft'
- $path eq '/virgil/aeneid/',
- $type eq '.book7'
-
-Similarly, using VMS syntax:
-
- ($name,$dir,$type) = fileparse('Doc_Root:[Help]Rhetoric.Rnh',
- '\..*');
-
-would yield
-
- $name eq 'Rhetoric'
- $dir eq 'Doc_Root:[Help]'
- $type eq '.Rnh'
-
-=over
-
-=item C<basename>
-
-The basename() routine returns the first element of the list produced
-by calling fileparse() with the same arguments, except that it always
-quotes metacharacters in the given suffixes. It is provided for
-programmer compatibility with the Unix shell command basename(1).
-
-=item C<dirname>
-
-The dirname() routine returns the directory portion of the input file
-specification. When using VMS or MacOS syntax, this is identical to the
-second element of the list produced by calling fileparse() with the same
-input file specification. (Under VMS, if there is no directory information
-in the input file specification, then the current default device and
-directory are returned.) When using Unix or MSDOS syntax, the return
-value conforms to the behavior of the Unix shell command dirname(1). This
-is usually the same as the behavior of fileparse(), but differs in some
-cases. For example, for the input file specification F<lib/>, fileparse()
-considers the directory name to be F<lib/>, while dirname() considers the
-directory name to be F<.>).
-
-=back
-
-=cut
-
-
-## use strict;
-# A bit of juggling to insure that C<use re 'taint';> always works, since
-# File::Basename is used during the Perl build, when the re extension may
-# not be available.
-BEGIN {
- unless (eval { require re; })
- { eval ' sub re::import { $^H |= 0x00100000; } ' }
- import re 'taint';
-}
-
-
-
-use 5.005_64;
-our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase);
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(fileparse fileparse_set_fstype basename dirname);
-$VERSION = "2.6";
-
-
-# fileparse_set_fstype() - specify OS-based rules used in future
-# calls to routines in this package
-#
-# Currently recognized values: VMS, MSDOS, MacOS, AmigaOS, os2, RISCOS
-# Any other name uses Unix-style rules and is case-sensitive
-
-sub fileparse_set_fstype {
- my @old = ($Fileparse_fstype, $Fileparse_igncase);
- if (@_) {
- $Fileparse_fstype = $_[0];
- $Fileparse_igncase = ($_[0] =~ /^(?:MacOS|VMS|AmigaOS|os2|RISCOS|MSWin32|MSDOS)/i);
- }
- wantarray ? @old : $old[0];
-}
-
-# fileparse() - parse file specification
-#
-# Version 2.4 27-Sep-1996 Charles Bailey bailey@genetics.upenn.edu
-
-
-sub fileparse {
- my($fullname,@suffices) = @_;
- my($fstype,$igncase) = ($Fileparse_fstype, $Fileparse_igncase);
- my($dirpath,$tail,$suffix,$basename);
- my($taint) = substr($fullname,0,0); # Is $fullname tainted?
-
- if ($fstype =~ /^VMS/i) {
- if ($fullname =~ m#/#) { $fstype = '' } # We're doing Unix emulation
- else {
- ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/s);
- $dirpath ||= ''; # should always be defined
- }
- }
- if ($fstype =~ /^MS(DOS|Win32)|epoc/i) {
- ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/s);
- $dirpath .= '.\\' unless $dirpath =~ /[\\\/]\z/;
- }
- elsif ($fstype =~ /^MacOS/si) {
- ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/s);
- }
- elsif ($fstype =~ /^AmigaOS/i) {
- ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/s);
- $dirpath = './' unless $dirpath;
- }
- elsif ($fstype !~ /^VMS/i) { # default to Unix
- ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#s);
- if ($^O eq 'VMS' and $fullname =~ m:^(/[^/]+/000000(/|$))(.*):) {
- # dev:[000000] is top of VMS tree, similar to Unix '/'
- # so strip it off and treat the rest as "normal"
- my $devspec = $1;
- my $remainder = $3;
- ($dirpath,$basename) = ($remainder =~ m#^(.*/)?(.*)#s);
- $dirpath = $devspec.$dirpath;
- }
- $dirpath = './' unless $dirpath;
- }
-
- if (@suffices) {
- $tail = '';
- foreach $suffix (@suffices) {
- my $pat = ($igncase ? '(?i)' : '') . "($suffix)\$";
- if ($basename =~ s/$pat//s) {
- $taint .= substr($suffix,0,0);
- $tail = $1 . $tail;
- }
- }
- }
-
- $tail .= $taint if defined $tail; # avoid warning if $tail == undef
- wantarray ? ($basename . $taint, $dirpath . $taint, $tail)
- : $basename . $taint;
-}
-
-
-# basename() - returns first element of list returned by fileparse()
-
-sub basename {
- my($name) = shift;
- (fileparse($name, map("\Q$_\E",@_)))[0];
-}
-
-
-# dirname() - returns device and directory portion of file specification
-# Behavior matches that of Unix dirname(1) exactly for Unix and MSDOS
-# filespecs except for names ending with a separator, e.g., "/xx/yy/".
-# This differs from the second element of the list returned
-# by fileparse() in that the trailing '/' (Unix) or '\' (MSDOS) (and
-# the last directory name if the filespec ends in a '/' or '\'), is lost.
-
-sub dirname {
- my($basename,$dirname) = fileparse($_[0]);
- my($fstype) = $Fileparse_fstype;
-
- if ($fstype =~ /VMS/i) {
- if ($_[0] =~ m#/#) { $fstype = '' }
- else { return $dirname || $ENV{DEFAULT} }
- }
- if ($fstype =~ /MacOS/i) {
- if( !length($basename) && $dirname !~ /^[^:]+:\z/) {
- $dirname =~ s/([^:]):\z/$1/s;
- ($basename,$dirname) = fileparse $dirname;
- }
- $dirname .= ":" unless $dirname =~ /:\z/;
- }
- elsif ($fstype =~ /MSDOS/i) {
- $dirname =~ s/([^:])[\\\/]*\z/$1/;
- unless( length($basename) ) {
- ($basename,$dirname) = fileparse $dirname;
- $dirname =~ s/([^:])[\\\/]*\z/$1/;
- }
- }
- elsif ($fstype =~ /MSWin32/i) {
- $dirname =~ s/([^:])[\\\/]*\z/$1/;
- unless( length($basename) ) {
- ($basename,$dirname) = fileparse $dirname;
- $dirname =~ s/([^:])[\\\/]*\z/$1/;
- }
- }
- elsif ($fstype =~ /AmigaOS/i) {
- if ( $dirname =~ /:\z/) { return $dirname }
- chop $dirname;
- $dirname =~ s#[^:/]+\z## unless length($basename);
- }
- else {
- $dirname =~ s:(.)/*\z:$1:s;
- unless( length($basename) ) {
- local($File::Basename::Fileparse_fstype) = $fstype;
- ($basename,$dirname) = fileparse $dirname;
- $dirname =~ s:(.)/*\z:$1:s;
- }
- }
-
- $dirname;
-}
-
-fileparse_set_fstype $^O;
-
-1;
diff --git a/contrib/perl5/lib/File/CheckTree.pm b/contrib/perl5/lib/File/CheckTree.pm
deleted file mode 100644
index ae18777..0000000
--- a/contrib/perl5/lib/File/CheckTree.pm
+++ /dev/null
@@ -1,151 +0,0 @@
-package File::CheckTree;
-require 5.000;
-require Exporter;
-
-=head1 NAME
-
-validate - run many filetest checks on a tree
-
-=head1 SYNOPSIS
-
- use File::CheckTree;
-
- $warnings += validate( q{
- /vmunix -e || die
- /boot -e || die
- /bin cd
- csh -ex
- csh !-ug
- sh -ex
- sh !-ug
- /usr -d || warn "What happened to $file?\n"
- });
-
-=head1 DESCRIPTION
-
-The validate() routine takes a single multiline string consisting of
-lines containing a filename plus a file test to try on it. (The
-file test may also be a "cd", causing subsequent relative filenames
-to be interpreted relative to that directory.) After the file test
-you may put C<|| die> to make it a fatal error if the file test fails.
-The default is C<|| warn>. The file test may optionally have a "!' prepended
-to test for the opposite condition. If you do a cd and then list some
-relative filenames, you may want to indent them slightly for readability.
-If you supply your own die() or warn() message, you can use $file to
-interpolate the filename.
-
-Filetests may be bunched: "-rwx" tests for all of C<-r>, C<-w>, and C<-x>.
-Only the first failed test of the bunch will produce a warning.
-
-The routine returns the number of warnings issued.
-
-=cut
-
-@ISA = qw(Exporter);
-@EXPORT = qw(validate);
-
-# $RCSfile: validate.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:24:19 $
-
-# The validate routine takes a single multiline string consisting of
-# lines containing a filename plus a file test to try on it. (The
-# file test may also be a 'cd', causing subsequent relative filenames
-# to be interpreted relative to that directory.) After the file test
-# you may put '|| die' to make it a fatal error if the file test fails.
-# The default is '|| warn'. The file test may optionally have a ! prepended
-# to test for the opposite condition. If you do a cd and then list some
-# relative filenames, you may want to indent them slightly for readability.
-# If you supply your own "die" or "warn" message, you can use $file to
-# interpolate the filename.
-
-# Filetests may be bunched: -rwx tests for all of -r, -w and -x.
-# Only the first failed test of the bunch will produce a warning.
-
-# The routine returns the number of warnings issued.
-
-# Usage:
-# use File::CheckTree;
-# $warnings += validate('
-# /vmunix -e || die
-# /boot -e || die
-# /bin cd
-# csh -ex
-# csh !-ug
-# sh -ex
-# sh !-ug
-# /usr -d || warn "What happened to $file?\n"
-# ');
-
-sub validate {
- local($file,$test,$warnings,$oldwarnings);
- foreach $check (split(/\n/,$_[0])) {
- next if $check =~ /^#/;
- next if $check =~ /^$/;
- ($file,$test) = split(' ',$check,2);
- if ($test =~ s/^(!?-)(\w{2,}\b)/$1Z/) {
- $testlist = $2;
- @testlist = split(//,$testlist);
- }
- else {
- @testlist = ('Z');
- }
- $oldwarnings = $warnings;
- foreach $one (@testlist) {
- $this = $test;
- $this =~ s/(-\w\b)/$1 \$file/g;
- $this =~ s/-Z/-$one/;
- $this .= ' || warn' unless $this =~ /\|\|/;
- $this =~ s/^(.*\S)\s*\|\|\s*(die|warn)$/$1 || valmess('$2','$1')/;
- $this =~ s/\bcd\b/chdir (\$cwd = \$file)/g;
- eval $this;
- last if $warnings > $oldwarnings;
- }
- }
- $warnings;
-}
-
-sub valmess {
- local($disposition,$this) = @_;
- $file = $cwd . '/' . $file unless $file =~ m|^/|s;
- if ($this =~ /^(!?)-(\w)\s+\$file\s*$/) {
- $neg = $1;
- $tmp = $2;
- $tmp eq 'r' && ($mess = "$file is not readable by uid $>.");
- $tmp eq 'w' && ($mess = "$file is not writable by uid $>.");
- $tmp eq 'x' && ($mess = "$file is not executable by uid $>.");
- $tmp eq 'o' && ($mess = "$file is not owned by uid $>.");
- $tmp eq 'R' && ($mess = "$file is not readable by you.");
- $tmp eq 'W' && ($mess = "$file is not writable by you.");
- $tmp eq 'X' && ($mess = "$file is not executable by you.");
- $tmp eq 'O' && ($mess = "$file is not owned by you.");
- $tmp eq 'e' && ($mess = "$file does not exist.");
- $tmp eq 'z' && ($mess = "$file does not have zero size.");
- $tmp eq 's' && ($mess = "$file does not have non-zero size.");
- $tmp eq 'f' && ($mess = "$file is not a plain file.");
- $tmp eq 'd' && ($mess = "$file is not a directory.");
- $tmp eq 'l' && ($mess = "$file is not a symbolic link.");
- $tmp eq 'p' && ($mess = "$file is not a named pipe (FIFO).");
- $tmp eq 'S' && ($mess = "$file is not a socket.");
- $tmp eq 'b' && ($mess = "$file is not a block special file.");
- $tmp eq 'c' && ($mess = "$file is not a character special file.");
- $tmp eq 'u' && ($mess = "$file does not have the setuid bit set.");
- $tmp eq 'g' && ($mess = "$file does not have the setgid bit set.");
- $tmp eq 'k' && ($mess = "$file does not have the sticky bit set.");
- $tmp eq 'T' && ($mess = "$file is not a text file.");
- $tmp eq 'B' && ($mess = "$file is not a binary file.");
- if ($neg eq '!') {
- $mess =~ s/ is not / should not be / ||
- $mess =~ s/ does not / should not / ||
- $mess =~ s/ not / /;
- }
- }
- else {
- $this =~ s/\$file/'$file'/g;
- $mess = "Can't do $this.\n";
- }
- die "$mess\n" if $disposition eq 'die';
- warn "$mess\n";
- ++$warnings;
-}
-
-1;
-
diff --git a/contrib/perl5/lib/File/Compare.pm b/contrib/perl5/lib/File/Compare.pm
deleted file mode 100644
index 667e7cb..0000000
--- a/contrib/perl5/lib/File/Compare.pm
+++ /dev/null
@@ -1,182 +0,0 @@
-package File::Compare;
-
-use 5.005_64;
-use strict;
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Too_Big);
-
-require Exporter;
-use Carp;
-
-$VERSION = '1.1002';
-@ISA = qw(Exporter);
-@EXPORT = qw(compare);
-@EXPORT_OK = qw(cmp compare_text);
-
-$Too_Big = 1024 * 1024 * 2;
-
-sub VERSION {
- # Version of File::Compare
- return $File::Compare::VERSION;
-}
-
-sub compare {
- croak("Usage: compare( file1, file2 [, buffersize]) ")
- unless(@_ == 2 || @_ == 3);
-
- my ($from,$to,$size) = @_;
- my $text_mode = defined($size) && (ref($size) eq 'CODE' || $size < 0);
-
- my ($fromsize,$closefrom,$closeto);
- local (*FROM, *TO);
-
- croak("from undefined") unless (defined $from);
- croak("to undefined") unless (defined $to);
-
- if (ref($from) &&
- (UNIVERSAL::isa($from,'GLOB') || UNIVERSAL::isa($from,'IO::Handle'))) {
- *FROM = *$from;
- } elsif (ref(\$from) eq 'GLOB') {
- *FROM = $from;
- } else {
- open(FROM,"<$from") or goto fail_open1;
- unless ($text_mode) {
- binmode FROM;
- $fromsize = -s FROM;
- }
- $closefrom = 1;
- }
-
- if (ref($to) &&
- (UNIVERSAL::isa($to,'GLOB') || UNIVERSAL::isa($to,'IO::Handle'))) {
- *TO = *$to;
- } elsif (ref(\$to) eq 'GLOB') {
- *TO = $to;
- } else {
- open(TO,"<$to") or goto fail_open2;
- binmode TO unless $text_mode;
- $closeto = 1;
- }
-
- if (!$text_mode && $closefrom && $closeto) {
- # If both are opened files we know they differ if their size differ
- goto fail_inner if $fromsize != -s TO;
- }
-
- if ($text_mode) {
- local $/ = "\n";
- my ($fline,$tline);
- while (defined($fline = <FROM>)) {
- goto fail_inner unless defined($tline = <TO>);
- if (ref $size) {
- # $size contains ref to comparison function
- goto fail_inner if &$size($fline, $tline);
- } else {
- goto fail_inner if $fline ne $tline;
- }
- }
- goto fail_inner if defined($tline = <TO>);
- }
- else {
- unless (defined($size) && $size > 0) {
- $size = $fromsize || -s TO || 0;
- $size = 1024 if $size < 512;
- $size = $Too_Big if $size > $Too_Big;
- }
-
- my ($fr,$tr,$fbuf,$tbuf);
- $fbuf = $tbuf = '';
- while(defined($fr = read(FROM,$fbuf,$size)) && $fr > 0) {
- unless (defined($tr = read(TO,$tbuf,$fr)) && $tbuf eq $fbuf) {
- goto fail_inner;
- }
- }
- goto fail_inner if defined($tr = read(TO,$tbuf,$size)) && $tr > 0;
- }
-
- close(TO) || goto fail_open2 if $closeto;
- close(FROM) || goto fail_open1 if $closefrom;
-
- return 0;
-
- # All of these contortions try to preserve error messages...
- fail_inner:
- close(TO) || goto fail_open2 if $closeto;
- close(FROM) || goto fail_open1 if $closefrom;
-
- return 1;
-
- fail_open2:
- if ($closefrom) {
- my $status = $!;
- $! = 0;
- close FROM;
- $! = $status unless $!;
- }
- fail_open1:
- return -1;
-}
-
-sub cmp;
-*cmp = \&compare;
-
-sub compare_text {
- my ($from,$to,$cmp) = @_;
- croak("Usage: compare_text( file1, file2 [, cmp-function])")
- unless @_ == 2 || @_ == 3;
- croak("Third arg to compare_text() function must be a code reference")
- if @_ == 3 && ref($cmp) ne 'CODE';
-
- # Using a negative buffer size puts compare into text_mode too
- $cmp = -1 unless defined $cmp;
- compare($from, $to, $cmp);
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-File::Compare - Compare files or filehandles
-
-=head1 SYNOPSIS
-
- use File::Compare;
-
- if (compare("file1","file2") == 0) {
- print "They're equal\n";
- }
-
-=head1 DESCRIPTION
-
-The File::Compare::compare function compares the contents of two
-sources, each of which can be a file or a file handle. It is exported
-from File::Compare by default.
-
-File::Compare::cmp is a synonym for File::Compare::compare. It is
-exported from File::Compare only by request.
-
-File::Compare::compare_text does a line by line comparison of the two
-files. It stops as soon as a difference is detected. compare_text()
-accepts an optional third argument: This must be a CODE reference to
-a line comparison function, which returns 0 when both lines are considered
-equal. For example:
-
- compare_text($file1, $file2)
-
-is basically equivalent to
-
- compare_text($file1, $file2, sub {$_[0] ne $_[1]} )
-
-=head1 RETURN
-
-File::Compare::compare return 0 if the files are equal, 1 if the
-files are unequal, or -1 if an error was encountered.
-
-=head1 AUTHOR
-
-File::Compare was written by Nick Ing-Simmons.
-Its original documentation was written by Chip Salzenberg.
-
-=cut
-
diff --git a/contrib/perl5/lib/File/Copy.pm b/contrib/perl5/lib/File/Copy.pm
deleted file mode 100644
index 24d1ffd..0000000
--- a/contrib/perl5/lib/File/Copy.pm
+++ /dev/null
@@ -1,378 +0,0 @@
-# File/Copy.pm. Written in 1994 by Aaron Sherman <ajs@ajs.com>. This
-# source code has been placed in the public domain by the author.
-# Please be kind and preserve the documentation.
-#
-# Additions copyright 1996 by Charles Bailey. Permission is granted
-# to distribute the revised code under the same terms as Perl itself.
-
-package File::Copy;
-
-use 5.005_64;
-use strict;
-use Carp;
-our(@ISA, @EXPORT, @EXPORT_OK, $VERSION, $Too_Big, $Syscopy_is_copy);
-sub copy;
-sub syscopy;
-sub cp;
-sub mv;
-
-# Note that this module implements only *part* of the API defined by
-# the File/Copy.pm module of the File-Tools-2.0 package. However, that
-# package has not yet been updated to work with Perl 5.004, and so it
-# would be a Bad Thing for the CPAN module to grab it and replace this
-# module. Therefore, we set this module's version higher than 2.0.
-$VERSION = '2.03';
-
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(copy move);
-@EXPORT_OK = qw(cp mv);
-
-$Too_Big = 1024 * 1024 * 2;
-
-sub _catname { # Will be replaced by File::Spec when it arrives
- my($from, $to) = @_;
- if (not defined &basename) {
- require File::Basename;
- import File::Basename 'basename';
- }
- if ($^O eq 'VMS') { $to = VMS::Filespec::vmspath($to) . basename($from); }
- elsif ($^O eq 'MacOS') { $to =~ s/^([^:]+)$/:$1/; $to .= ':' . basename($from); }
- elsif ($to =~ m|\\|) { $to .= '\\' . basename($from); }
- else { $to .= '/' . basename($from); }
-}
-
-sub copy {
- croak("Usage: copy(FROM, TO [, BUFFERSIZE]) ")
- unless(@_ == 2 || @_ == 3);
-
- my $from = shift;
- my $to = shift;
-
- my $from_a_handle = (ref($from)
- ? (ref($from) eq 'GLOB'
- || UNIVERSAL::isa($from, 'GLOB')
- || UNIVERSAL::isa($from, 'IO::Handle'))
- : (ref(\$from) eq 'GLOB'));
- my $to_a_handle = (ref($to)
- ? (ref($to) eq 'GLOB'
- || UNIVERSAL::isa($to, 'GLOB')
- || UNIVERSAL::isa($to, 'IO::Handle'))
- : (ref(\$to) eq 'GLOB'));
-
- if (!$from_a_handle && !$to_a_handle && -d $to && ! -d $from) {
- $to = _catname($from, $to);
- }
-
- if (defined &syscopy && !$Syscopy_is_copy
- && !$to_a_handle
- && !($from_a_handle && $^O eq 'os2' ) # OS/2 cannot handle handles
- && !($from_a_handle && $^O eq 'mpeix') # and neither can MPE/iX.
- && !($from_a_handle && $^O eq 'MSWin32')
- && !($from_a_handle && $^O eq 'MacOS')
- )
- {
- return syscopy($from, $to);
- }
-
- my $closefrom = 0;
- my $closeto = 0;
- my ($size, $status, $r, $buf);
- local(*FROM, *TO);
- local($\) = '';
-
- if ($from_a_handle) {
- *FROM = *$from{FILEHANDLE};
- } else {
- $from = _protect($from) if $from =~ /^\s/s;
- open(FROM, "< $from\0") or goto fail_open1;
- binmode FROM or die "($!,$^E)";
- $closefrom = 1;
- }
-
- if ($to_a_handle) {
- *TO = *$to{FILEHANDLE};
- } else {
- $to = _protect($to) if $to =~ /^\s/s;
- open(TO,"> $to\0") or goto fail_open2;
- binmode TO or die "($!,$^E)";
- $closeto = 1;
- }
-
- if (@_) {
- $size = shift(@_) + 0;
- croak("Bad buffer size for copy: $size\n") unless ($size > 0);
- } else {
- $size = -s FROM;
- $size = 1024 if ($size < 512);
- $size = $Too_Big if ($size > $Too_Big);
- }
-
- $! = 0;
- for (;;) {
- my ($r, $w, $t);
- defined($r = sysread(FROM, $buf, $size))
- or goto fail_inner;
- last unless $r;
- for ($w = 0; $w < $r; $w += $t) {
- $t = syswrite(TO, $buf, $r - $w, $w)
- or goto fail_inner;
- }
- }
-
- close(TO) || goto fail_open2 if $closeto;
- close(FROM) || goto fail_open1 if $closefrom;
-
- # Use this idiom to avoid uninitialized value warning.
- return 1;
-
- # All of these contortions try to preserve error messages...
- fail_inner:
- if ($closeto) {
- $status = $!;
- $! = 0;
- close TO;
- $! = $status unless $!;
- }
- fail_open2:
- if ($closefrom) {
- $status = $!;
- $! = 0;
- close FROM;
- $! = $status unless $!;
- }
- fail_open1:
- return 0;
-}
-
-sub move {
- my($from,$to) = @_;
- my($copied,$fromsz,$tosz1,$tomt1,$tosz2,$tomt2,$sts,$ossts);
-
- if (-d $to && ! -d $from) {
- $to = _catname($from, $to);
- }
-
- ($tosz1,$tomt1) = (stat($to))[7,9];
- $fromsz = -s $from;
- if ($^O eq 'os2' and defined $tosz1 and defined $fromsz) {
- # will not rename with overwrite
- unlink $to;
- }
- return 1 if rename $from, $to;
-
- ($sts,$ossts) = ($! + 0, $^E + 0);
- # Did rename return an error even though it succeeded, because $to
- # is on a remote NFS file system, and NFS lost the server's ack?
- return 1 if defined($fromsz) && !-e $from && # $from disappeared
- (($tosz2,$tomt2) = (stat($to))[7,9]) && # $to's there
- ($tosz1 != $tosz2 or $tomt1 != $tomt2) && # and changed
- $tosz2 == $fromsz; # it's all there
-
- ($tosz1,$tomt1) = (stat($to))[7,9]; # just in case rename did something
- return 1 if ($copied = copy($from,$to)) && unlink($from);
-
- ($tosz2,$tomt2) = ((stat($to))[7,9],0,0) if defined $tomt1;
- unlink($to) if !defined($tomt1) or $tomt1 != $tomt2 or $tosz1 != $tosz2;
- ($!,$^E) = ($sts,$ossts);
- return 0;
-}
-
-*cp = \&copy;
-*mv = \&move;
-
-
-if ($^O eq 'MacOS') {
- *_protect = sub { MacPerl::MakeFSSpec($_[0]) };
-} else {
- *_protect = sub { "./$_[0]" };
-}
-
-# &syscopy is an XSUB under OS/2
-unless (defined &syscopy) {
- if ($^O eq 'VMS') {
- *syscopy = \&rmscopy;
- } elsif ($^O eq 'mpeix') {
- *syscopy = sub {
- return 0 unless @_ == 2;
- # Use the MPE cp program in order to
- # preserve MPE file attributes.
- return system('/bin/cp', '-f', $_[0], $_[1]) == 0;
- };
- } elsif ($^O eq 'MSWin32') {
- *syscopy = sub {
- return 0 unless @_ == 2;
- return Win32::CopyFile(@_, 1);
- };
- } elsif ($^O eq 'MacOS') {
- require Mac::MoreFiles;
- *syscopy = sub {
- my($from, $to) = @_;
- my($dir, $toname);
-
- return 0 unless -e $from;
-
- if ($to =~ /(.*:)([^:]+):?$/) {
- ($dir, $toname) = ($1, $2);
- } else {
- ($dir, $toname) = (":", $to);
- }
-
- unlink($to);
- Mac::MoreFiles::FSpFileCopy($from, $dir, $toname, 1);
- };
- } else {
- $Syscopy_is_copy = 1;
- *syscopy = \&copy;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-File::Copy - Copy files or filehandles
-
-=head1 SYNOPSIS
-
- use File::Copy;
-
- copy("file1","file2");
- copy("Copy.pm",\*STDOUT);'
- move("/dev1/fileA","/dev2/fileB");
-
- use POSIX;
- use File::Copy cp;
-
- $n = FileHandle->new("/a/file","r");
- cp($n,"x");'
-
-=head1 DESCRIPTION
-
-The File::Copy module provides two basic functions, C<copy> and
-C<move>, which are useful for getting the contents of a file from
-one place to another.
-
-=over 4
-
-=item *
-
-The C<copy> function takes two
-parameters: a file to copy from and a file to copy to. Either
-argument may be a string, a FileHandle reference or a FileHandle
-glob. Obviously, if the first argument is a filehandle of some
-sort, it will be read from, and if it is a file I<name> it will
-be opened for reading. Likewise, the second argument will be
-written to (and created if need be).
-
-B<Note that passing in
-files as handles instead of names may lead to loss of information
-on some operating systems; it is recommended that you use file
-names whenever possible.> Files are opened in binary mode where
-applicable. To get a consistent behaviour when copying from a
-filehandle to a file, use C<binmode> on the filehandle.
-
-An optional third parameter can be used to specify the buffer
-size used for copying. This is the number of bytes from the
-first file, that wil be held in memory at any given time, before
-being written to the second file. The default buffer size depends
-upon the file, but will generally be the whole file (up to 2Mb), or
-1k for filehandles that do not reference files (eg. sockets).
-
-You may use the syntax C<use File::Copy "cp"> to get at the
-"cp" alias for this function. The syntax is I<exactly> the same.
-
-=item *
-
-The C<move> function also takes two parameters: the current name
-and the intended name of the file to be moved. If the destination
-already exists and is a directory, and the source is not a
-directory, then the source file will be renamed into the directory
-specified by the destination.
-
-If possible, move() will simply rename the file. Otherwise, it copies
-the file to the new location and deletes the original. If an error occurs
-during this copy-and-delete process, you may be left with a (possibly partial)
-copy of the file under the destination name.
-
-You may use the "mv" alias for this function in the same way that
-you may use the "cp" alias for C<copy>.
-
-=back
-
-File::Copy also provides the C<syscopy> routine, which copies the
-file specified in the first parameter to the file specified in the
-second parameter, preserving OS-specific attributes and file
-structure. For Unix systems, this is equivalent to the simple
-C<copy> routine. For VMS systems, this calls the C<rmscopy>
-routine (see below). For OS/2 systems, this calls the C<syscopy>
-XSUB directly. For Win32 systems, this calls C<Win32::CopyFile>.
-
-=head2 Special behaviour if C<syscopy> is defined (OS/2, VMS and Win32)
-
-If both arguments to C<copy> are not file handles,
-then C<copy> will perform a "system copy" of
-the input file to a new output file, in order to preserve file
-attributes, indexed file structure, I<etc.> The buffer size
-parameter is ignored. If either argument to C<copy> is a
-handle to an opened file, then data is copied using Perl
-operators, and no effort is made to preserve file attributes
-or record structure.
-
-The system copy routine may also be called directly under VMS and OS/2
-as C<File::Copy::syscopy> (or under VMS as C<File::Copy::rmscopy>, which
-is the routine that does the actual work for syscopy).
-
-=over 4
-
-=item rmscopy($from,$to[,$date_flag])
-
-The first and second arguments may be strings, typeglobs, typeglob
-references, or objects inheriting from IO::Handle;
-they are used in all cases to obtain the
-I<filespec> of the input and output files, respectively. The
-name and type of the input file are used as defaults for the
-output file, if necessary.
-
-A new version of the output file is always created, which
-inherits the structure and RMS attributes of the input file,
-except for owner and protections (and possibly timestamps;
-see below). All data from the input file is copied to the
-output file; if either of the first two parameters to C<rmscopy>
-is a file handle, its position is unchanged. (Note that this
-means a file handle pointing to the output file will be
-associated with an old version of that file after C<rmscopy>
-returns, not the newly created version.)
-
-The third parameter is an integer flag, which tells C<rmscopy>
-how to handle timestamps. If it is E<lt> 0, none of the input file's
-timestamps are propagated to the output file. If it is E<gt> 0, then
-it is interpreted as a bitmask: if bit 0 (the LSB) is set, then
-timestamps other than the revision date are propagated; if bit 1
-is set, the revision date is propagated. If the third parameter
-to C<rmscopy> is 0, then it behaves much like the DCL COPY command:
-if the name or type of the output file was explicitly specified,
-then no timestamps are propagated, but if they were taken implicitly
-from the input filespec, then all timestamps other than the
-revision date are propagated. If this parameter is not supplied,
-it defaults to 0.
-
-Like C<copy>, C<rmscopy> returns 1 on success. If an error occurs,
-it sets C<$!>, deletes the output file, and returns 0.
-
-=back
-
-=head1 RETURN
-
-All functions return 1 on success, 0 on failure.
-$! will be set if an error was encountered.
-
-=head1 AUTHOR
-
-File::Copy was written by Aaron Sherman I<E<lt>ajs@ajs.comE<gt>> in 1995,
-and updated by Charles Bailey I<E<lt>bailey@newman.upenn.eduE<gt>> in 1996.
-
-=cut
-
diff --git a/contrib/perl5/lib/File/DosGlob.pm b/contrib/perl5/lib/File/DosGlob.pm
deleted file mode 100644
index d7dea7b..0000000
--- a/contrib/perl5/lib/File/DosGlob.pm
+++ /dev/null
@@ -1,254 +0,0 @@
-#!perl -w
-
-#
-# Documentation at the __END__
-#
-
-package File::DosGlob;
-
-sub doglob {
- my $cond = shift;
- my @retval = ();
- #print "doglob: ", join('|', @_), "\n";
- OUTER:
- for my $arg (@_) {
- local $_ = $arg;
- my @matched = ();
- my @globdirs = ();
- my $head = '.';
- my $sepchr = '/';
- next OUTER unless defined $_ and $_ ne '';
- # if arg is within quotes strip em and do no globbing
- if (/^"(.*)"\z/s) {
- $_ = $1;
- if ($cond eq 'd') { push(@retval, $_) if -d $_ }
- else { push(@retval, $_) if -e $_ }
- next OUTER;
- }
- # wildcards with a drive prefix such as h:*.pm must be changed
- # to h:./*.pm to expand correctly
- if (m|^([A-Za-z]:)[^/\\]|s) {
- substr($_,0,2) = $1 . "./";
- }
- if (m|^(.*)([\\/])([^\\/]*)\z|s) {
- my $tail;
- ($head, $sepchr, $tail) = ($1,$2,$3);
- #print "div: |$head|$sepchr|$tail|\n";
- push (@retval, $_), next OUTER if $tail eq '';
- if ($head =~ /[*?]/) {
- @globdirs = doglob('d', $head);
- push(@retval, doglob($cond, map {"$_$sepchr$tail"} @globdirs)),
- next OUTER if @globdirs;
- }
- $head .= $sepchr if $head eq '' or $head =~ /^[A-Za-z]:\z/s;
- $_ = $tail;
- }
- #
- # If file component has no wildcards, we can avoid opendir
- unless (/[*?]/) {
- $head = '' if $head eq '.';
- $head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr;
- $head .= $_;
- if ($cond eq 'd') { push(@retval,$head) if -d $head }
- else { push(@retval,$head) if -e $head }
- next OUTER;
- }
- opendir(D, $head) or next OUTER;
- my @leaves = readdir D;
- closedir D;
- $head = '' if $head eq '.';
- $head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr;
-
- # escape regex metachars but not glob chars
- s:([].+^\-\${}[|]):\\$1:g;
- # and convert DOS-style wildcards to regex
- s/\*/.*/g;
- s/\?/.?/g;
-
- #print "regex: '$_', head: '$head'\n";
- my $matchsub = eval 'sub { $_[0] =~ m|^' . $_ . '\\z|ios }';
- warn($@), next OUTER if $@;
- INNER:
- for my $e (@leaves) {
- next INNER if $e eq '.' or $e eq '..';
- next INNER if $cond eq 'd' and ! -d "$head$e";
- push(@matched, "$head$e"), next INNER if &$matchsub($e);
- #
- # [DOS compatibility special case]
- # Failed, add a trailing dot and try again, but only
- # if name does not have a dot in it *and* pattern
- # has a dot *and* name is shorter than 9 chars.
- #
- if (index($e,'.') == -1 and length($e) < 9
- and index($_,'\\.') != -1) {
- push(@matched, "$head$e"), next INNER if &$matchsub("$e.");
- }
- }
- push @retval, @matched if @matched;
- }
- return @retval;
-}
-
-#
-# this can be used to override CORE::glob in a specific
-# package by saying C<use File::DosGlob 'glob';> in that
-# namespace.
-#
-
-# context (keyed by second cxix arg provided by core)
-my %iter;
-my %entries;
-
-sub glob {
- my $pat = shift;
- my $cxix = shift;
- my @pat;
-
- # glob without args defaults to $_
- $pat = $_ unless defined $pat;
-
- # extract patterns
- if ($pat =~ /\s/) {
- require Text::ParseWords;
- @pat = Text::ParseWords::parse_line('\s+',0,$pat);
- }
- else {
- push @pat, $pat;
- }
-
- # assume global context if not provided one
- $cxix = '_G_' unless defined $cxix;
- $iter{$cxix} = 0 unless exists $iter{$cxix};
-
- # if we're just beginning, do it all first
- if ($iter{$cxix} == 0) {
- $entries{$cxix} = [doglob(1,@pat)];
- }
-
- # chuck it all out, quick or slow
- if (wantarray) {
- delete $iter{$cxix};
- return @{delete $entries{$cxix}};
- }
- else {
- if ($iter{$cxix} = scalar @{$entries{$cxix}}) {
- return shift @{$entries{$cxix}};
- }
- else {
- # return undef for EOL
- delete $iter{$cxix};
- delete $entries{$cxix};
- return undef;
- }
- }
-}
-
-sub import {
- my $pkg = shift;
- return unless @_;
- my $sym = shift;
- my $callpkg = ($sym =~ s/^GLOBAL_//s ? 'CORE::GLOBAL' : caller(0));
- *{$callpkg.'::'.$sym} = \&{$pkg.'::'.$sym} if $sym eq 'glob';
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-File::DosGlob - DOS like globbing and then some
-
-=head1 SYNOPSIS
-
- require 5.004;
-
- # override CORE::glob in current package
- use File::DosGlob 'glob';
-
- # override CORE::glob in ALL packages (use with extreme caution!)
- use File::DosGlob 'GLOBAL_glob';
-
- @perlfiles = glob "..\\pe?l/*.p?";
- print <..\\pe?l/*.p?>;
-
- # from the command line (overrides only in main::)
- > perl -MFile::DosGlob=glob -e "print <../pe*/*p?>"
-
-=head1 DESCRIPTION
-
-A module that implements DOS-like globbing with a few enhancements.
-It is largely compatible with perlglob.exe (the M$ setargv.obj
-version) in all but one respect--it understands wildcards in
-directory components.
-
-For example, C<<..\\l*b\\file/*glob.p?>> will work as expected (in
-that it will find something like '..\lib\File/DosGlob.pm' alright).
-Note that all path components are case-insensitive, and that
-backslashes and forward slashes are both accepted, and preserved.
-You may have to double the backslashes if you are putting them in
-literally, due to double-quotish parsing of the pattern by perl.
-
-Spaces in the argument delimit distinct patterns, so
-C<glob('*.exe *.dll')> globs all filenames that end in C<.exe>
-or C<.dll>. If you want to put in literal spaces in the glob
-pattern, you can escape them with either double quotes, or backslashes.
-e.g. C<glob('c:/"Program Files"/*/*.dll')>, or
-C<glob('c:/Program\ Files/*/*.dll')>. The argument is tokenized using
-C<Text::ParseWords::parse_line()>, so see L<Text::ParseWords> for details
-of the quoting rules used.
-
-Extending it to csh patterns is left as an exercise to the reader.
-
-=head1 EXPORTS (by request only)
-
-glob()
-
-=head1 BUGS
-
-Should probably be built into the core, and needs to stop
-pandering to DOS habits. Needs a dose of optimizium too.
-
-=head1 AUTHOR
-
-Gurusamy Sarathy <gsar@activestate.com>
-
-=head1 HISTORY
-
-=over 4
-
-=item *
-
-Support for globally overriding glob() (GSAR 3-JUN-98)
-
-=item *
-
-Scalar context, independent iterator context fixes (GSAR 15-SEP-97)
-
-=item *
-
-A few dir-vs-file optimizations result in glob importation being
-10 times faster than using perlglob.exe, and using perlglob.bat is
-only twice as slow as perlglob.exe (GSAR 28-MAY-97)
-
-=item *
-
-Several cleanups prompted by lack of compatible perlglob.exe
-under Borland (GSAR 27-MAY-97)
-
-=item *
-
-Initial version (GSAR 20-FEB-97)
-
-=back
-
-=head1 SEE ALSO
-
-perl
-
-perlglob.bat
-
-Text::ParseWords
-
-=cut
-
diff --git a/contrib/perl5/lib/File/Find.pm b/contrib/perl5/lib/File/Find.pm
deleted file mode 100644
index 3a621c0..0000000
--- a/contrib/perl5/lib/File/Find.pm
+++ /dev/null
@@ -1,773 +0,0 @@
-package File::Find;
-use 5.005_64;
-require Exporter;
-require Cwd;
-
-=head1 NAME
-
-find - traverse a file tree
-
-finddepth - traverse a directory structure depth-first
-
-=head1 SYNOPSIS
-
- use File::Find;
- find(\&wanted, '/foo', '/bar');
- sub wanted { ... }
-
- use File::Find;
- finddepth(\&wanted, '/foo', '/bar');
- sub wanted { ... }
-
- use File::Find;
- find({ wanted => \&process, follow => 1 }, '.');
-
-=head1 DESCRIPTION
-
-The first argument to find() is either a hash reference describing the
-operations to be performed for each file, or a code reference.
-
-Here are the possible keys for the hash:
-
-=over 3
-
-=item C<wanted>
-
-The value should be a code reference. This code reference is called
-I<the wanted() function> below.
-
-=item C<bydepth>
-
-Reports the name of a directory only AFTER all its entries
-have been reported. Entry point finddepth() is a shortcut for
-specifying C<{ bydepth => 1 }> in the first argument of find().
-
-=item C<preprocess>
-
-The value should be a code reference. This code reference is used to
-preprocess a directory; it is called after readdir() but before the loop that
-calls the wanted() function. It is called with a list of strings and is
-expected to return a list of strings. The code can be used to sort the
-strings alphabetically, numerically, or to filter out directory entries based
-on their name alone.
-
-=item C<postprocess>
-
-The value should be a code reference. It is invoked just before leaving the
-current directory. It is called in void context with no arguments. The name
-of the current directory is in $File::Find::dir. This hook is handy for
-summarizing a directory, such as calculating its disk usage.
-
-=item C<follow>
-
-Causes symbolic links to be followed. Since directory trees with symbolic
-links (followed) may contain files more than once and may even have
-cycles, a hash has to be built up with an entry for each file.
-This might be expensive both in space and time for a large
-directory tree. See I<follow_fast> and I<follow_skip> below.
-If either I<follow> or I<follow_fast> is in effect:
-
-=over 6
-
-=item *
-
-It is guaranteed that an I<lstat> has been called before the user's
-I<wanted()> function is called. This enables fast file checks involving S< _>.
-
-=item *
-
-There is a variable C<$File::Find::fullname> which holds the absolute
-pathname of the file with all symbolic links resolved
-
-=back
-
-=item C<follow_fast>
-
-This is similar to I<follow> except that it may report some files more
-than once. It does detect cycles, however. Since only symbolic links
-have to be hashed, this is much cheaper both in space and time. If
-processing a file more than once (by the user's I<wanted()> function)
-is worse than just taking time, the option I<follow> should be used.
-
-=item C<follow_skip>
-
-C<follow_skip==1>, which is the default, causes all files which are
-neither directories nor symbolic links to be ignored if they are about
-to be processed a second time. If a directory or a symbolic link
-are about to be processed a second time, File::Find dies.
-C<follow_skip==0> causes File::Find to die if any file is about to be
-processed a second time.
-C<follow_skip==2> causes File::Find to ignore any duplicate files and
-dirctories but to proceed normally otherwise.
-
-
-=item C<no_chdir>
-
-Does not C<chdir()> to each directory as it recurses. The wanted()
-function will need to be aware of this, of course. In this case,
-C<$_> will be the same as C<$File::Find::name>.
-
-=item C<untaint>
-
-If find is used in taint-mode (-T command line switch or if EUID != UID
-or if EGID != GID) then internally directory names have to be untainted
-before they can be cd'ed to. Therefore they are checked against a regular
-expression I<untaint_pattern>. Note that all names passed to the
-user's I<wanted()> function are still tainted.
-
-=item C<untaint_pattern>
-
-See above. This should be set using the C<qr> quoting operator.
-The default is set to C<qr|^([-+@\w./]+)$|>.
-Note that the parantheses are vital.
-
-=item C<untaint_skip>
-
-If set, directories (subtrees) which fail the I<untaint_pattern>
-are skipped. The default is to 'die' in such a case.
-
-=back
-
-The wanted() function does whatever verifications you want.
-C<$File::Find::dir> contains the current directory name, and C<$_> the
-current filename within that directory. C<$File::Find::name> contains
-the complete pathname to the file. You are chdir()'d to
-C<$File::Find::dir> when the function is called, unless C<no_chdir>
-was specified. When <follow> or <follow_fast> are in effect, there is
-also a C<$File::Find::fullname>. The function may set
-C<$File::Find::prune> to prune the tree unless C<bydepth> was
-specified. Unless C<follow> or C<follow_fast> is specified, for
-compatibility reasons (find.pl, find2perl) there are in addition the
-following globals available: C<$File::Find::topdir>,
-C<$File::Find::topdev>, C<$File::Find::topino>,
-C<$File::Find::topmode> and C<$File::Find::topnlink>.
-
-This library is useful for the C<find2perl> tool, which when fed,
-
- find2perl / -name .nfs\* -mtime +7 \
- -exec rm -f {} \; -o -fstype nfs -prune
-
-produces something like:
-
- sub wanted {
- /^\.nfs.*\z/s &&
- (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_)) &&
- int(-M _) > 7 &&
- unlink($_)
- ||
- ($nlink || (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_))) &&
- $dev < 0 &&
- ($File::Find::prune = 1);
- }
-
-Set the variable C<$File::Find::dont_use_nlink> if you're using AFS,
-since AFS cheats.
-
-
-Here's another interesting wanted function. It will find all symlinks
-that don't resolve:
-
- sub wanted {
- -l && !-e && print "bogus link: $File::Find::name\n";
- }
-
-See also the script C<pfind> on CPAN for a nice application of this
-module.
-
-=head1 CAVEAT
-
-Be aware that the option to follow symbolic links can be dangerous.
-Depending on the structure of the directory tree (including symbolic
-links to directories) you might traverse a given (physical) directory
-more than once (only if C<follow_fast> is in effect).
-Furthermore, deleting or changing files in a symbolically linked directory
-might cause very unpleasant surprises, since you delete or change files
-in an unknown directory.
-
-
-=cut
-
-@ISA = qw(Exporter);
-@EXPORT = qw(find finddepth);
-
-
-use strict;
-my $Is_VMS;
-
-require File::Basename;
-
-my %SLnkSeen;
-my ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow,
- $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat,
- $pre_process, $post_process);
-
-sub contract_name {
- my ($cdir,$fn) = @_;
-
- return substr($cdir,0,rindex($cdir,'/')) if $fn eq '.';
-
- $cdir = substr($cdir,0,rindex($cdir,'/')+1);
-
- $fn =~ s|^\./||;
-
- my $abs_name= $cdir . $fn;
-
- if (substr($fn,0,3) eq '../') {
- do 1 while ($abs_name=~ s|/(?>[^/]+)/\.\./|/|);
- }
-
- return $abs_name;
-}
-
-
-sub PathCombine($$) {
- my ($Base,$Name) = @_;
- my $AbsName;
-
- if (substr($Name,0,1) eq '/') {
- $AbsName= $Name;
- }
- else {
- $AbsName= contract_name($Base,$Name);
- }
-
- # (simple) check for recursion
- my $newlen= length($AbsName);
- if ($newlen <= length($Base)) {
- if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/')
- && $AbsName eq substr($Base,0,$newlen))
- {
- return undef;
- }
- }
- return $AbsName;
-}
-
-sub Follow_SymLink($) {
- my ($AbsName) = @_;
-
- my ($NewName,$DEV, $INO);
- ($DEV, $INO)= lstat $AbsName;
-
- while (-l _) {
- if ($SLnkSeen{$DEV, $INO}++) {
- if ($follow_skip < 2) {
- die "$AbsName is encountered a second time";
- }
- else {
- return undef;
- }
- }
- $NewName= PathCombine($AbsName, readlink($AbsName));
- unless(defined $NewName) {
- if ($follow_skip < 2) {
- die "$AbsName is a recursive symbolic link";
- }
- else {
- return undef;
- }
- }
- else {
- $AbsName= $NewName;
- }
- ($DEV, $INO) = lstat($AbsName);
- return undef unless defined $DEV; # dangling symbolic link
- }
-
- if ($full_check && $SLnkSeen{$DEV, $INO}++) {
- if ($follow_skip < 1) {
- die "$AbsName encountered a second time";
- }
- else {
- return undef;
- }
- }
-
- return $AbsName;
-}
-
-our($dir, $name, $fullname, $prune);
-sub _find_dir_symlnk($$$);
-sub _find_dir($$$);
-
-sub _find_opt {
- my $wanted = shift;
- die "invalid top directory" unless defined $_[0];
-
- my $cwd = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::cwd();
- my $cwd_untainted = $cwd;
- $wanted_callback = $wanted->{wanted};
- $bydepth = $wanted->{bydepth};
- $pre_process = $wanted->{preprocess};
- $post_process = $wanted->{postprocess};
- $no_chdir = $wanted->{no_chdir};
- $full_check = $wanted->{follow};
- $follow = $full_check || $wanted->{follow_fast};
- $follow_skip = $wanted->{follow_skip};
- $untaint = $wanted->{untaint};
- $untaint_pat = $wanted->{untaint_pattern};
- $untaint_skip = $wanted->{untaint_skip};
-
- # for compatability reasons (find.pl, find2perl)
- our ($topdir, $topdev, $topino, $topmode, $topnlink);
-
- # a symbolic link to a directory doesn't increase the link count
- $avoid_nlink = $follow || $File::Find::dont_use_nlink;
-
- if ( $untaint ) {
- $cwd_untainted= $1 if $cwd_untainted =~ m|$untaint_pat|;
- die "insecure cwd in find(depth)" unless defined($cwd_untainted);
- }
-
- my ($abs_dir, $Is_Dir);
-
- Proc_Top_Item:
- foreach my $TOP (@_) {
- my $top_item = $TOP;
- $top_item =~ s|/\z|| unless $top_item eq '/';
- $Is_Dir= 0;
-
- ($topdev,$topino,$topmode,$topnlink) = stat $top_item;
-
- if ($follow) {
- if (substr($top_item,0,1) eq '/') {
- $abs_dir = $top_item;
- }
- elsif ($top_item eq '.') {
- $abs_dir = $cwd;
- }
- else { # care about any ../
- $abs_dir = contract_name("$cwd/",$top_item);
- }
- $abs_dir= Follow_SymLink($abs_dir);
- unless (defined $abs_dir) {
- warn "$top_item is a dangling symbolic link\n";
- next Proc_Top_Item;
- }
- if (-d _) {
- _find_dir_symlnk($wanted, $abs_dir, $top_item);
- $Is_Dir= 1;
- }
- }
- else { # no follow
- $topdir = $top_item;
- unless (defined $topnlink) {
- warn "Can't stat $top_item: $!\n";
- next Proc_Top_Item;
- }
- if (-d _) {
- $top_item =~ s/\.dir\z// if $Is_VMS;
- _find_dir($wanted, $top_item, $topnlink);
- $Is_Dir= 1;
- }
- else {
- $abs_dir= $top_item;
- }
- }
-
- unless ($Is_Dir) {
- unless (($_,$dir) = File::Basename::fileparse($abs_dir)) {
- ($dir,$_) = ('./', $top_item);
- }
-
- $abs_dir = $dir;
- if ($untaint) {
- my $abs_dir_save = $abs_dir;
- $abs_dir = $1 if $abs_dir =~ m|$untaint_pat|;
- unless (defined $abs_dir) {
- if ($untaint_skip == 0) {
- die "directory $abs_dir_save is still tainted";
- }
- else {
- next Proc_Top_Item;
- }
- }
- }
-
- unless ($no_chdir or chdir $abs_dir) {
- warn "Couldn't chdir $abs_dir: $!\n";
- next Proc_Top_Item;
- }
-
- $name = $abs_dir . $_;
-
- { &$wanted_callback }; # protect against wild "next"
-
- }
-
- $no_chdir or chdir $cwd_untainted;
- }
-}
-
-# API:
-# $wanted
-# $p_dir : "parent directory"
-# $nlink : what came back from the stat
-# preconditions:
-# chdir (if not no_chdir) to dir
-
-sub _find_dir($$$) {
- my ($wanted, $p_dir, $nlink) = @_;
- my ($CdLvl,$Level) = (0,0);
- my @Stack;
- my @filenames;
- my ($subcount,$sub_nlink);
- my $SE= [];
- my $dir_name= $p_dir;
- my $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" );
- my $dir_rel= '.'; # directory name relative to current directory
-
- local ($dir, $name, $prune, *DIR);
-
- unless ($no_chdir or $p_dir eq '.') {
- my $udir = $p_dir;
- if ($untaint) {
- $udir = $1 if $p_dir =~ m|$untaint_pat|;
- unless (defined $udir) {
- if ($untaint_skip == 0) {
- die "directory $p_dir is still tainted";
- }
- else {
- return;
- }
- }
- }
- unless (chdir $udir) {
- warn "Can't cd to $udir: $!\n";
- return;
- }
- }
-
- push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
-
- while (defined $SE) {
- unless ($bydepth) {
- $dir= $p_dir;
- $name= $dir_name;
- $_= ($no_chdir ? $dir_name : $dir_rel );
- # prune may happen here
- $prune= 0;
- { &$wanted_callback }; # protect against wild "next"
- next if $prune;
- }
-
- # change to that directory
- unless ($no_chdir or $dir_rel eq '.') {
- my $udir= $dir_rel;
- if ($untaint) {
- $udir = $1 if $dir_rel =~ m|$untaint_pat|;
- unless (defined $udir) {
- if ($untaint_skip == 0) {
- die "directory ("
- . ($p_dir ne '/' ? $p_dir : '')
- . "/) $dir_rel is still tainted";
- }
- }
- }
- unless (chdir $udir) {
- warn "Can't cd to ("
- . ($p_dir ne '/' ? $p_dir : '')
- . "/) $udir : $!\n";
- next;
- }
- $CdLvl++;
- }
-
- $dir= $dir_name;
-
- # Get the list of files in the current directory.
- unless (opendir DIR, ($no_chdir ? $dir_name : '.')) {
- warn "Can't opendir($dir_name): $!\n";
- next;
- }
- @filenames = readdir DIR;
- closedir(DIR);
- @filenames = &$pre_process(@filenames) if $pre_process;
- push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process;
-
- if ($nlink == 2 && !$avoid_nlink) {
- # This dir has no subdirectories.
- for my $FN (@filenames) {
- next if $FN =~ /^\.{1,2}\z/;
-
- $name = $dir_pref . $FN;
- $_ = ($no_chdir ? $name : $FN);
- { &$wanted_callback }; # protect against wild "next"
- }
-
- }
- else {
- # This dir has subdirectories.
- $subcount = $nlink - 2;
-
- for my $FN (@filenames) {
- next if $FN =~ /^\.{1,2}\z/;
- if ($subcount > 0 || $avoid_nlink) {
- # Seen all the subdirs?
- # check for directoriness.
- # stat is faster for a file in the current directory
- $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3];
-
- if (-d _) {
- --$subcount;
- $FN =~ s/\.dir\z// if $Is_VMS;
- push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink];
- }
- else {
- $name = $dir_pref . $FN;
- $_= ($no_chdir ? $name : $FN);
- { &$wanted_callback }; # protect against wild "next"
- }
- }
- else {
- $name = $dir_pref . $FN;
- $_= ($no_chdir ? $name : $FN);
- { &$wanted_callback }; # protect against wild "next"
- }
- }
- }
- }
- continue {
- while ( defined ($SE = pop @Stack) ) {
- ($Level, $p_dir, $dir_rel, $nlink) = @$SE;
- if ($CdLvl > $Level && !$no_chdir) {
- my $tmp = join('/',('..') x ($CdLvl-$Level));
- die "Can't cd to $dir_name" . $tmp
- unless chdir ($tmp);
- $CdLvl = $Level;
- }
- $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
- $dir_pref = "$dir_name/";
- if ( $nlink == -2 ) {
- $name = $dir = $p_dir;
- $_ = ".";
- &$post_process; # End-of-directory processing
- } elsif ( $nlink < 0 ) { # must be finddepth, report dirname now
- $name = $dir_name;
- if ( substr($name,-2) eq '/.' ) {
- $name =~ s|/\.$||;
- }
- $dir = $p_dir;
- $_ = ($no_chdir ? $dir_name : $dir_rel );
- if ( substr($_,-2) eq '/.' ) {
- s|/\.$||;
- }
- { &$wanted_callback }; # protect against wild "next"
- } else {
- push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
- last;
- }
- }
- }
-}
-
-
-# API:
-# $wanted
-# $dir_loc : absolute location of a dir
-# $p_dir : "parent directory"
-# preconditions:
-# chdir (if not no_chdir) to dir
-
-sub _find_dir_symlnk($$$) {
- my ($wanted, $dir_loc, $p_dir) = @_;
- my @Stack;
- my @filenames;
- my $new_loc;
- my $pdir_loc = $dir_loc;
- my $SE = [];
- my $dir_name = $p_dir;
- my $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" );
- my $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" );
- my $dir_rel = '.'; # directory name relative to current directory
- my $byd_flag; # flag for pending stack entry if $bydepth
-
- local ($dir, $name, $fullname, $prune, *DIR);
-
- unless ($no_chdir or $p_dir eq '.') {
- my $udir = $dir_loc;
- if ($untaint) {
- $udir = $1 if $dir_loc =~ m|$untaint_pat|;
- unless (defined $udir) {
- if ($untaint_skip == 0) {
- die "directory $dir_loc is still tainted";
- }
- else {
- return;
- }
- }
- }
- unless (chdir $udir) {
- warn "Can't cd to $udir: $!\n";
- return;
- }
- }
-
- push @Stack,[$dir_loc,$pdir_loc,$p_dir,$dir_rel,-1] if $bydepth;
-
- while (defined $SE) {
-
- unless ($bydepth) {
- # change to parent directory
- unless ($no_chdir) {
- my $udir = $pdir_loc;
- if ($untaint) {
- $udir = $1 if $pdir_loc =~ m|$untaint_pat|;
- }
- unless (chdir $udir) {
- warn "Can't cd to $udir: $!\n";
- next;
- }
- }
- $dir= $p_dir;
- $name= $dir_name;
- $_= ($no_chdir ? $dir_name : $dir_rel );
- $fullname= $dir_loc;
- # prune may happen here
- $prune= 0;
- lstat($_); # make sure file tests with '_' work
- { &$wanted_callback }; # protect against wild "next"
- next if $prune;
- }
-
- # change to that directory
- unless ($no_chdir or $dir_rel eq '.') {
- my $udir = $dir_loc;
- if ($untaint) {
- $udir = $1 if $dir_loc =~ m|$untaint_pat|;
- unless (defined $udir ) {
- if ($untaint_skip == 0) {
- die "directory $dir_loc is still tainted";
- }
- else {
- next;
- }
- }
- }
- unless (chdir $udir) {
- warn "Can't cd to $udir: $!\n";
- next;
- }
- }
-
- $dir = $dir_name;
-
- # Get the list of files in the current directory.
- unless (opendir DIR, ($no_chdir ? $dir_loc : '.')) {
- warn "Can't opendir($dir_loc): $!\n";
- next;
- }
- @filenames = readdir DIR;
- closedir(DIR);
-
- for my $FN (@filenames) {
- next if $FN =~ /^\.{1,2}\z/;
-
- # follow symbolic links / do an lstat
- $new_loc = Follow_SymLink($loc_pref.$FN);
-
- # ignore if invalid symlink
- next unless defined $new_loc;
-
- if (-d _) {
- push @Stack,[$new_loc,$dir_loc,$dir_name,$FN,1];
- }
- else {
- $fullname = $new_loc;
- $name = $dir_pref . $FN;
- $_ = ($no_chdir ? $name : $FN);
- { &$wanted_callback }; # protect against wild "next"
- }
- }
-
- }
- continue {
- while (defined($SE = pop @Stack)) {
- ($dir_loc, $pdir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE;
- $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
- $dir_pref = "$dir_name/";
- $loc_pref = "$dir_loc/";
- if ( $byd_flag < 0 ) { # must be finddepth, report dirname now
- unless ($no_chdir or $dir_rel eq '.') {
- my $udir = $pdir_loc;
- if ($untaint) {
- $udir = $1 if $dir_loc =~ m|$untaint_pat|;
- }
- unless (chdir $udir) {
- warn "Can't cd to $udir: $!\n";
- next;
- }
- }
- $fullname = $dir_loc;
- $name = $dir_name;
- if ( substr($name,-2) eq '/.' ) {
- $name =~ s|/\.$||;
- }
- $dir = $p_dir;
- $_ = ($no_chdir ? $dir_name : $dir_rel);
- if ( substr($_,-2) eq '/.' ) {
- s|/\.$||;
- }
-
- lstat($_); # make sure file tests with '_' work
- { &$wanted_callback }; # protect against wild "next"
- } else {
- push @Stack,[$dir_loc, $pdir_loc, $p_dir, $dir_rel,-1] if $bydepth;
- last;
- }
- }
- }
-}
-
-
-sub wrap_wanted {
- my $wanted = shift;
- if ( ref($wanted) eq 'HASH' ) {
- if ( $wanted->{follow} || $wanted->{follow_fast}) {
- $wanted->{follow_skip} = 1 unless defined $wanted->{follow_skip};
- }
- if ( $wanted->{untaint} ) {
- $wanted->{untaint_pattern} = qr|^([-+@\w./]+)$|
- unless defined $wanted->{untaint_pattern};
- $wanted->{untaint_skip} = 0 unless defined $wanted->{untaint_skip};
- }
- return $wanted;
- }
- else {
- return { wanted => $wanted };
- }
-}
-
-sub find {
- my $wanted = shift;
- _find_opt(wrap_wanted($wanted), @_);
- %SLnkSeen= (); # free memory
-}
-
-sub finddepth {
- my $wanted = wrap_wanted(shift);
- $wanted->{bydepth} = 1;
- _find_opt($wanted, @_);
- %SLnkSeen= (); # free memory
-}
-
-# These are hard-coded for now, but may move to hint files.
-if ($^O eq 'VMS') {
- $Is_VMS = 1;
- $File::Find::dont_use_nlink = 1;
-}
-
-$File::Find::dont_use_nlink = 1
- if $^O eq 'os2' || $^O eq 'dos' || $^O eq 'amigaos' || $^O eq 'MSWin32' ||
- $^O eq 'cygwin' || $^O eq 'epoc';
-
-# Set dont_use_nlink in your hint file if your system's stat doesn't
-# report the number of links in a directory as an indication
-# of the number of files.
-# See, e.g. hints/machten.sh for MachTen 2.2.
-unless ($File::Find::dont_use_nlink) {
- require Config;
- $File::Find::dont_use_nlink = 1 if ($Config::Config{'dont_use_nlink'});
-}
-
-1;
diff --git a/contrib/perl5/lib/File/Path.pm b/contrib/perl5/lib/File/Path.pm
deleted file mode 100644
index 0eb6128..0000000
--- a/contrib/perl5/lib/File/Path.pm
+++ /dev/null
@@ -1,251 +0,0 @@
-package File::Path;
-
-=head1 NAME
-
-File::Path - create or remove directory trees
-
-=head1 SYNOPSIS
-
- use File::Path;
-
- mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
- rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);
-
-=head1 DESCRIPTION
-
-The C<mkpath> function provides a convenient way to create directories, even
-if your C<mkdir> kernel call won't create more than one level of directory at
-a time. C<mkpath> takes three arguments:
-
-=over 4
-
-=item *
-
-the name of the path to create, or a reference
-to a list of paths to create,
-
-=item *
-
-a boolean value, which if TRUE will cause C<mkpath>
-to print the name of each directory as it is created
-(defaults to FALSE), and
-
-=item *
-
-the numeric mode to use when creating the directories
-(defaults to 0777)
-
-=back
-
-It returns a list of all directories (including intermediates, determined
-using the Unix '/' separator) created.
-
-Similarly, the C<rmtree> function provides a convenient way to delete a
-subtree from the directory structure, much like the Unix command C<rm -r>.
-C<rmtree> takes three arguments:
-
-=over 4
-
-=item *
-
-the root of the subtree to delete, or a reference to
-a list of roots. All of the files and directories
-below each root, as well as the roots themselves,
-will be deleted.
-
-=item *
-
-a boolean value, which if TRUE will cause C<rmtree> to
-print a message each time it examines a file, giving the
-name of the file, and indicating whether it's using C<rmdir>
-or C<unlink> to remove it, or that it's skipping it.
-(defaults to FALSE)
-
-=item *
-
-a boolean value, which if TRUE will cause C<rmtree> to
-skip any files to which you do not have delete access
-(if running under VMS) or write access (if running
-under another OS). This will change in the future when
-a criterion for 'delete permission' under OSs other
-than VMS is settled. (defaults to FALSE)
-
-=back
-
-It returns the number of files successfully deleted. Symlinks are
-simply deleted and not followed.
-
-B<NOTE:> If the third parameter is not TRUE, C<rmtree> is B<unsecure>
-in the face of failure or interruption. Files and directories which
-were not deleted may be left with permissions reset to allow world
-read and write access. Note also that the occurrence of errors in
-rmtree can be determined I<only> by trapping diagnostic messages
-using C<$SIG{__WARN__}>; it is not apparent from the return value.
-Therefore, you must be extremely careful about using C<rmtree($foo,$bar,0>
-in situations where security is an issue.
-
-=head1 AUTHORS
-
-Tim Bunce <F<Tim.Bunce@ig.co.uk>> and
-Charles Bailey <F<bailey@newman.upenn.edu>>
-
-=cut
-
-use 5.005_64;
-use Carp;
-use File::Basename ();
-use Exporter ();
-use strict;
-
-our $VERSION = "1.0404";
-our @ISA = qw( Exporter );
-our @EXPORT = qw( mkpath rmtree );
-
-my $Is_VMS = $^O eq 'VMS';
-my $Is_MacOS = $^O eq 'MacOS';
-
-# These OSes complain if you want to remove a file that you have no
-# write permission to:
-my $force_writeable = ($^O eq 'os2' || $^O eq 'dos' || $^O eq 'MSWin32' ||
- $^O eq 'amigaos' || $^O eq 'MacOS' || $^O eq 'epoc');
-
-sub mkpath {
- my($paths, $verbose, $mode) = @_;
- # $paths -- either a path string or ref to list of paths
- # $verbose -- optional print "mkdir $path" for each directory created
- # $mode -- optional permissions, defaults to 0777
- local($")=$Is_MacOS ? ":" : "/";
- $mode = 0777 unless defined($mode);
- $paths = [$paths] unless ref $paths;
- my(@created,$path);
- foreach $path (@$paths) {
- $path .= '/' if $^O eq 'os2' and $path =~ /^\w:\z/s; # feature of CRT
- # Logic wants Unix paths, so go with the flow.
- if ($Is_VMS) {
- next if $path eq '/';
- $path = VMS::Filespec::unixify($path);
- if ($path =~ m:^(/[^/]+)/?\z:) {
- $path = $1.'/000000';
- }
- }
- next if -d $path;
- my $parent = File::Basename::dirname($path);
- unless (-d $parent or $path eq $parent) {
- push(@created,mkpath($parent, $verbose, $mode));
- }
- print "mkdir $path\n" if $verbose;
- unless (mkdir($path,$mode)) {
- my $e = $!;
- # allow for another process to have created it meanwhile
- croak "mkdir $path: $e" unless -d $path;
- }
- push(@created, $path);
- }
- @created;
-}
-
-sub rmtree {
- my($roots, $verbose, $safe) = @_;
- my(@files);
- my($count) = 0;
- $verbose ||= 0;
- $safe ||= 0;
-
- if ( defined($roots) && length($roots) ) {
- $roots = [$roots] unless ref $roots;
- }
- else {
- carp "No root path(s) specified\n";
- return 0;
- }
-
- my($root);
- foreach $root (@{$roots}) {
- if ($Is_MacOS) {
- $root = ":$root" if $root !~ /:/;
- $root =~ s#([^:])\z#$1:#;
- } else {
- $root =~ s#/\z##;
- }
- (undef, undef, my $rp) = lstat $root or next;
- $rp &= 07777; # don't forget setuid, setgid, sticky bits
- if ( -d _ ) {
- # notabene: 0777 is for making readable in the first place,
- # it's also intended to change it to writable in case we have
- # to recurse in which case we are better than rm -rf for
- # subtrees with strange permissions
- chmod(0777, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
- or carp "Can't make directory $root read+writeable: $!"
- unless $safe;
-
- if (opendir my $d, $root) {
- @files = readdir $d;
- closedir $d;
- }
- else {
- carp "Can't read $root: $!";
- @files = ();
- }
-
- # Deleting large numbers of files from VMS Files-11 filesystems
- # is faster if done in reverse ASCIIbetical order
- @files = reverse @files if $Is_VMS;
- ($root = VMS::Filespec::unixify($root)) =~ s#\.dir\z## if $Is_VMS;
- if ($Is_MacOS) {
- @files = map("$root$_", @files);
- } else {
- @files = map("$root/$_", grep $_!~/^\.{1,2}\z/s,@files);
- }
- $count += rmtree(\@files,$verbose,$safe);
- if ($safe &&
- ($Is_VMS ? !&VMS::Filespec::candelete($root) : !-w $root)) {
- print "skipped $root\n" if $verbose;
- next;
- }
- chmod 0777, $root
- or carp "Can't make directory $root writeable: $!"
- if $force_writeable;
- print "rmdir $root\n" if $verbose;
- if (rmdir $root) {
- ++$count;
- }
- else {
- carp "Can't remove directory $root: $!";
- chmod($rp, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
- or carp("and can't restore permissions to "
- . sprintf("0%o",$rp) . "\n");
- }
- }
- else {
- if ($safe &&
- ($Is_VMS ? !&VMS::Filespec::candelete($root)
- : !(-l $root || -w $root)))
- {
- print "skipped $root\n" if $verbose;
- next;
- }
- chmod 0666, $root
- or carp "Can't make file $root writeable: $!"
- if $force_writeable;
- print "unlink $root\n" if $verbose;
- # delete all versions under VMS
- for (;;) {
- unless (unlink $root) {
- carp "Can't unlink file $root: $!";
- if ($force_writeable) {
- chmod $rp, $root
- or carp("and can't restore permissions to "
- . sprintf("0%o",$rp) . "\n");
- }
- last;
- }
- ++$count;
- last unless $Is_VMS && lstat $root;
- }
- }
- }
-
- $count;
-}
-
-1;
diff --git a/contrib/perl5/lib/File/Spec.pm b/contrib/perl5/lib/File/Spec.pm
deleted file mode 100644
index 3f79d74..0000000
--- a/contrib/perl5/lib/File/Spec.pm
+++ /dev/null
@@ -1,93 +0,0 @@
-package File::Spec;
-
-use strict;
-use vars qw(@ISA $VERSION);
-
-$VERSION = 0.82 ;
-
-my %module = (MacOS => 'Mac',
- MSWin32 => 'Win32',
- os2 => 'OS2',
- VMS => 'VMS',
- epoc => 'Epoc');
-
-my $module = $module{$^O} || 'Unix';
-require "File/Spec/$module.pm";
-@ISA = ("File::Spec::$module");
-
-1;
-__END__
-
-=head1 NAME
-
-File::Spec - portably perform operations on file names
-
-=head1 SYNOPSIS
-
- use File::Spec;
-
- $x=File::Spec->catfile('a', 'b', 'c');
-
-which returns 'a/b/c' under Unix. Or:
-
- use File::Spec::Functions;
-
- $x = catfile('a', 'b', 'c');
-
-=head1 DESCRIPTION
-
-This module is designed to support operations commonly performed on file
-specifications (usually called "file names", but not to be confused with the
-contents of a file, or Perl's file handles), such as concatenating several
-directory and file names into a single path, or determining whether a path
-is rooted. It is based on code directly taken from MakeMaker 5.17, code
-written by Andreas KE<ouml>nig, Andy Dougherty, Charles Bailey, Ilya
-Zakharevich, Paul Schinder, and others.
-
-Since these functions are different for most operating systems, each set of
-OS specific routines is available in a separate module, including:
-
- File::Spec::Unix
- File::Spec::Mac
- File::Spec::OS2
- File::Spec::Win32
- File::Spec::VMS
-
-The module appropriate for the current OS is automatically loaded by
-File::Spec. Since some modules (like VMS) make use of facilities available
-only under that OS, it may not be possible to load all modules under all
-operating systems.
-
-Since File::Spec is object oriented, subroutines should not called directly,
-as in:
-
- File::Spec::catfile('a','b');
-
-but rather as class methods:
-
- File::Spec->catfile('a','b');
-
-For simple uses, L<File::Spec::Functions> provides convenient functional
-forms of these methods.
-
-For a list of available methods, please consult L<File::Spec::Unix>,
-which contains the entire set, and which is inherited by the modules for
-other platforms. For further information, please see L<File::Spec::Mac>,
-L<File::Spec::OS2>, L<File::Spec::Win32>, or L<File::Spec::VMS>.
-
-=head1 SEE ALSO
-
-File::Spec::Unix, File::Spec::Mac, File::Spec::OS2, File::Spec::Win32,
-File::Spec::VMS, File::Spec::Functions, ExtUtils::MakeMaker
-
-=head1 AUTHORS
-
-Kenneth Albanowski <F<kjahds@kjahds.com>>, Andy Dougherty
-<F<doughera@lafcol.lafayette.edu>>, Andreas KE<ouml>nig
-<F<A.Koenig@franz.ww.TU-Berlin.DE>>, Tim Bunce <F<Tim.Bunce@ig.co.uk>>. VMS
-support by Charles Bailey <F<bailey@newman.upenn.edu>>. OS/2 support by
-Ilya Zakharevich <F<ilya@math.ohio-state.edu>>. Mac support by Paul Schinder
-<F<schinder@pobox.com>>. abs2rel() and rel2abs() written by
-Shigio Yamaguchi <F<shigio@tamacom.com>>, modified by Barrie Slaymaker
-<F<barries@slaysys.com>>. splitpath(), splitdir(), catpath() and catdir()
-by Barrie Slaymaker.
diff --git a/contrib/perl5/lib/File/Spec/Epoc.pm b/contrib/perl5/lib/File/Spec/Epoc.pm
deleted file mode 100644
index 65d5e1f..0000000
--- a/contrib/perl5/lib/File/Spec/Epoc.pm
+++ /dev/null
@@ -1,378 +0,0 @@
-package File::Spec::Epoc;
-
-use strict;
-use Cwd;
-use vars qw(@ISA);
-require File::Spec::Unix;
-@ISA = qw(File::Spec::Unix);
-
-=head1 NAME
-
-File::Spec::Epoc - methods for Epoc file specs
-
-=head1 SYNOPSIS
-
- require File::Spec::Epoc; # Done internally by File::Spec if needed
-
-=head1 DESCRIPTION
-
-See File::Spec::Unix for a documentation of the methods provided
-there. This package overrides the implementation of these methods, not
-the semantics.
-
-This package is still work in progress ;-)
-o.flebbe@gmx.de
-
-
-=over
-
-=item devnull
-
-Returns a string representation of the null device.
-
-=cut
-
-sub devnull {
- return "nul:";
-}
-
-=item tmpdir
-
-Returns a string representation of a temporay directory:
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return "C:/System/temp";
-}
-
-sub case_tolerant {
- return 1;
-}
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- return scalar($file =~ m{^([a-z?]:)?[\\/]}is);
-}
-
-=item path
-
-Takes no argument, returns the environment variable PATH as an array. Since
-there is no search path supported, it returns undef, sorry.
-
-=cut
-sub path {
- return undef;
-}
-
-=item canonpath
-
-No physical check on the filesystem, but a logical cleanup of a
-path. On UNIX eliminated successive slashes and successive "/.".
-
-=cut
-
-sub canonpath {
- my ($self,$path) = @_;
- $path =~ s/^([a-z]:)/\u$1/s;
-
- $path =~ s|/+|/|g unless($^O eq 'cygwin'); # xx////xx -> xx/xx
- $path =~ s|(/\.)+/|/|g; # xx/././xx -> xx/xx
- $path =~ s|^(\./)+||s unless $path eq "./"; # ./xx -> xx
- $path =~ s|^/(\.\./)+|/|s; # /../../xx -> xx
- $path =~ s|/\z|| unless $path eq "/"; # xx/ -> xx
- return $path;
-}
-
-=item splitpath
-
- ($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
-
-Splits a path in to volume, directory, and filename portions. Assumes that
-the last file is a path unless the path ends in '\\', '\\.', '\\..'
-or $no_file is true. On Win32 this means that $no_file true makes this return
-( $volume, $path, undef ).
-
-Separators accepted are \ and /.
-
-The results can be passed to L</catpath> to get back a path equivalent to
-(usually identical to) the original path.
-
-=cut
-
-sub splitpath {
- my ($self,$path, $nofile) = @_;
- my ($volume,$directory,$file) = ('','','');
- if ( $nofile ) {
- $path =~
- m{^( (?:[a-zA-Z?]:|(?:\\\\|//)[^\\/]+[\\/][^\\/]+)? )
- (.*)
- }xs;
- $volume = $1;
- $directory = $2;
- }
- else {
- $path =~
- m{^ ( (?: [a-zA-Z?]: |
- (?:\\\\|//)[^\\/]+[\\/][^\\/]+
- )?
- )
- ( (?:.*[\\\\/](?:\.\.?\z)?)? )
- (.*)
- }xs;
- $volume = $1;
- $directory = $2;
- $file = $3;
- }
-
- return ($volume,$directory,$file);
-}
-
-
-=item splitdir
-
-The opposite of L</catdir()>.
-
- @dirs = File::Spec->splitdir( $directories );
-
-$directories must be only the directory portion of the path on systems
-that have the concept of a volume or that have path syntax that differentiates
-files from directories.
-
-Unlike just splitting the directories on the separator, leading empty and
-trailing directory entries can be returned, because these are significant
-on some OSs. So,
-
- File::Spec->splitdir( "/a/b/c" );
-
-Yields:
-
- ( '', 'a', 'b', '', 'c', '' )
-
-=cut
-
-sub splitdir {
- my ($self,$directories) = @_ ;
- #
- # split() likes to forget about trailing null fields, so here we
- # check to be sure that there will not be any before handling the
- # simple case.
- #
- if ( $directories !~ m|[\\/]\z| ) {
- return split( m|[\\/]|, $directories );
- }
- else {
- #
- # since there was a trailing separator, add a file name to the end,
- # then do the split, then replace it with ''.
- #
- my( @directories )= split( m|[\\/]|, "${directories}dummy" ) ;
- $directories[ $#directories ]= '' ;
- return @directories ;
- }
-}
-
-
-=item catpath
-
-Takes volume, directory and file portions and returns an entire path. Under
-Unix, $volume is ignored, and this is just like catfile(). On other OSs,
-the $volume become significant.
-
-=cut
-
-sub catpath {
- my ($self,$volume,$directory,$file) = @_;
-
- # If it's UNC, make sure the glue separator is there, reusing
- # whatever separator is first in the $volume
- $volume .= $1
- if ( $volume =~ m@^([\\/])[\\/][^\\/]+[\\/][^\\/]+\z@s &&
- $directory =~ m@^[^\\/]@s
- ) ;
-
- $volume .= $directory ;
-
- # If the volume is not just A:, make sure the glue separator is
- # there, reusing whatever separator is first in the $volume if possible.
- if ( $volume !~ m@^[a-zA-Z]:\z@s &&
- $volume =~ m@[^\\/]\z@ &&
- $file =~ m@[^\\/]@
- ) {
- $volume =~ m@([\\/])@ ;
- my $sep = $1 ? $1 : '\\' ;
- $volume .= $sep ;
- }
-
- $volume .= $file ;
-
- return $volume ;
-}
-
-
-=item abs2rel
-
-Takes a destination path and an optional base path returns a relative path
-from the base path to the destination path:
-
- $rel_path = File::Spec->abs2rel( $destination ) ;
- $rel_path = File::Spec->abs2rel( $destination, $base ) ;
-
-If $base is not present or '', then L</cwd()> is used. If $base is relative,
-then it is converted to absolute form using L</rel2abs()>. This means that it
-is taken to be relative to L<cwd()>.
-
-On systems with the concept of a volume, this assumes that both paths
-are on the $destination volume, and ignores the $base volume.
-
-On systems that have a grammar that indicates filenames, this ignores the
-$base filename as well. Otherwise all path components are assumed to be
-directories.
-
-If $path is relative, it is converted to absolute form using L</rel2abs()>.
-This means that it is taken to be relative to L</cwd()>.
-
-Based on code written by Shigio Yamaguchi.
-
-No checks against the filesystem are made.
-
-=cut
-
-sub abs2rel {
- my($self,$path,$base) = @_;
-
- # Clean up $path
- if ( ! $self->file_name_is_absolute( $path ) ) {
- $path = $self->rel2abs( $path ) ;
- }
- else {
- $path = $self->canonpath( $path ) ;
- }
-
- # Figure out the effective $base and clean it up.
- if ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- elsif ( !defined( $base ) || $base eq '' ) {
- $base = cwd() ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- # Split up paths
- my ( $path_volume, $path_directories, $path_file ) =
- $self->splitpath( $path, 1 ) ;
-
- my ( undef, $base_directories, undef ) =
- $self->splitpath( $base, 1 ) ;
-
- # Now, remove all leading components that are the same
- my @pathchunks = $self->splitdir( $path_directories );
- my @basechunks = $self->splitdir( $base_directories );
-
- while ( @pathchunks &&
- @basechunks &&
- lc( $pathchunks[0] ) eq lc( $basechunks[0] )
- ) {
- shift @pathchunks ;
- shift @basechunks ;
- }
-
- # No need to catdir, we know these are well formed.
- $path_directories = CORE::join( '\\', @pathchunks );
- $base_directories = CORE::join( '\\', @basechunks );
-
- # $base_directories now contains the directories the resulting relative
- # path must ascend out of before it can descend to $path_directory. So,
- # replace all names with $parentDir
-
- #FA Need to replace between backslashes...
- $base_directories =~ s|[^\\]+|..|g ;
-
- # Glue the two together, using a separator if necessary, and preventing an
- # empty result.
-
- #FA Must check that new directories are not empty.
- if ( $path_directories ne '' && $base_directories ne '' ) {
- $path_directories = "$base_directories\\$path_directories" ;
- } else {
- $path_directories = "$base_directories$path_directories" ;
- }
-
- # It makes no sense to add a relative path to a UNC volume
- $path_volume = '' unless $path_volume =~ m{^[A-Z]:}is ;
-
- return $self->canonpath(
- $self->catpath($path_volume, $path_directories, $path_file )
- ) ;
-}
-
-=item rel2abs
-
-Converts a relative path to an absolute path.
-
- $abs_path = File::Spec->rel2abs( $destination ) ;
- $abs_path = File::Spec->rel2abs( $destination, $base ) ;
-
-If $base is not present or '', then L<cwd()> is used. If $base is relative,
-then it is converted to absolute form using L</rel2abs()>. This means that it
-is taken to be relative to L</cwd()>.
-
-Assumes that both paths are on the $base volume, and ignores the
-$destination volume.
-
-On systems that have a grammar that indicates filenames, this ignores the
-$base filename as well. Otherwise all path components are assumed to be
-directories.
-
-If $path is absolute, it is cleaned up and returned using L</canonpath()>.
-
-Based on code written by Shigio Yamaguchi.
-
-No checks against the filesystem are made.
-
-=cut
-
-sub rel2abs($;$;) {
- my ($self,$path,$base ) = @_;
-
- if ( ! $self->file_name_is_absolute( $path ) ) {
-
- if ( !defined( $base ) || $base eq '' ) {
- $base = cwd() ;
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- my ( undef, $path_directories, $path_file ) =
- $self->splitpath( $path, 1 ) ;
-
- my ( $base_volume, $base_directories, undef ) =
- $self->splitpath( $base, 1 ) ;
-
- $path = $self->catpath(
- $base_volume,
- $self->catdir( $base_directories, $path_directories ),
- $path_file
- ) ;
- }
-
- return $self->canonpath( $path ) ;
-}
-
-=back
-
-=head1 SEE ALSO
-
-L<File::Spec>
-
-=cut
-
-1;
diff --git a/contrib/perl5/lib/File/Spec/Functions.pm b/contrib/perl5/lib/File/Spec/Functions.pm
deleted file mode 100644
index 0036ac1..0000000
--- a/contrib/perl5/lib/File/Spec/Functions.pm
+++ /dev/null
@@ -1,97 +0,0 @@
-package File::Spec::Functions;
-
-use File::Spec;
-use strict;
-
-use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-
-$VERSION = '1.1';
-
-require Exporter;
-
-@ISA = qw(Exporter);
-
-@EXPORT = qw(
- canonpath
- catdir
- catfile
- curdir
- rootdir
- updir
- no_upwards
- file_name_is_absolute
- path
-);
-
-@EXPORT_OK = qw(
- devnull
- tmpdir
- splitpath
- splitdir
- catpath
- abs2rel
- rel2abs
-);
-
-%EXPORT_TAGS = ( ALL => [ @EXPORT_OK, @EXPORT ] );
-
-foreach my $meth (@EXPORT, @EXPORT_OK) {
- my $sub = File::Spec->can($meth);
- no strict 'refs';
- *{$meth} = sub {&$sub('File::Spec', @_)};
-}
-
-
-1;
-__END__
-
-=head1 NAME
-
-File::Spec::Functions - portably perform operations on file names
-
-=head1 SYNOPSIS
-
- use File::Spec::Functions;
- $x = catfile('a','b');
-
-=head1 DESCRIPTION
-
-This module exports convenience functions for all of the class methods
-provided by File::Spec.
-
-For a reference of available functions, please consult L<File::Spec::Unix>,
-which contains the entire set, and which is inherited by the modules for
-other platforms. For further information, please see L<File::Spec::Mac>,
-L<File::Spec::OS2>, L<File::Spec::Win32>, or L<File::Spec::VMS>.
-
-=head2 Exports
-
-The following functions are exported by default.
-
- canonpath
- catdir
- catfile
- curdir
- rootdir
- updir
- no_upwards
- file_name_is_absolute
- path
-
-
-The following functions are exported only by request.
-
- devnull
- tmpdir
- splitpath
- splitdir
- catpath
- abs2rel
- rel2abs
-
-All the functions may be imported using the C<:ALL> tag.
-
-=head1 SEE ALSO
-
-File::Spec, File::Spec::Unix, File::Spec::Mac, File::Spec::OS2,
-File::Spec::Win32, File::Spec::VMS, ExtUtils::MakeMaker
diff --git a/contrib/perl5/lib/File/Spec/Mac.pm b/contrib/perl5/lib/File/Spec/Mac.pm
deleted file mode 100644
index 9ef55ec..0000000
--- a/contrib/perl5/lib/File/Spec/Mac.pm
+++ /dev/null
@@ -1,394 +0,0 @@
-package File::Spec::Mac;
-
-use strict;
-use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
-
-$VERSION = '1.2';
-
-@ISA = qw(File::Spec::Unix);
-
-=head1 NAME
-
-File::Spec::Mac - File::Spec for MacOS
-
-=head1 SYNOPSIS
-
- require File::Spec::Mac; # Done internally by File::Spec if needed
-
-=head1 DESCRIPTION
-
-Methods for manipulating file specifications.
-
-=head1 METHODS
-
-=over 2
-
-=item canonpath
-
-On MacOS, there's nothing to be done. Returns what it's given.
-
-=cut
-
-sub canonpath {
- my ($self,$path) = @_;
- return $path;
-}
-
-=item catdir
-
-Concatenate two or more directory names to form a complete path ending with
-a directory. Put a trailing : on the end of the complete path if there
-isn't one, because that's what's done in MacPerl's environment.
-
-The fundamental requirement of this routine is that
-
- File::Spec->catdir(split(":",$path)) eq $path
-
-But because of the nature of Macintosh paths, some additional
-possibilities are allowed to make using this routine give reasonable results
-for some common situations. Here are the rules that are used. Each
-argument has its trailing ":" removed. Each argument, except the first,
-has its leading ":" removed. They are then joined together by a ":".
-
-So
-
- File::Spec->catdir("a","b") = "a:b:"
- File::Spec->catdir("a:",":b") = "a:b:"
- File::Spec->catdir("a:","b") = "a:b:"
- File::Spec->catdir("a",":b") = "a:b"
- File::Spec->catdir("a","","b") = "a::b"
-
-etc.
-
-To get a relative path (one beginning with :), begin the first argument with :
-or put a "" as the first argument.
-
-If you don't want to worry about these rules, never allow a ":" on the ends
-of any of the arguments except at the beginning of the first.
-
-Under MacPerl, there is an additional ambiguity. Does the user intend that
-
- File::Spec->catfile("LWP","Protocol","http.pm")
-
-be relative or absolute? There's no way of telling except by checking for the
-existence of LWP: or :LWP, and even there he may mean a dismounted volume or
-a relative path in a different directory (like in @INC). So those checks
-aren't done here. This routine will treat this as absolute.
-
-=cut
-
-sub catdir {
- shift;
- my @args = @_;
- my $result = shift @args;
- $result =~ s/:\Z(?!\n)//;
- foreach (@args) {
- s/:\Z(?!\n)//;
- s/^://s;
- $result .= ":$_";
- }
- return "$result:";
-}
-
-=item catfile
-
-Concatenate one or more directory names and a filename to form a
-complete path ending with a filename. Since this uses catdir, the
-same caveats apply. Note that the leading : is removed from the filename,
-so that
-
- File::Spec->catfile($ENV{HOME},"file");
-
-and
-
- File::Spec->catfile($ENV{HOME},":file");
-
-give the same answer, as one might expect.
-
-=cut
-
-sub catfile {
- my $self = shift;
- my $file = pop @_;
- return $file unless @_;
- my $dir = $self->catdir(@_);
- $file =~ s/^://s;
- return $dir.$file;
-}
-
-=item curdir
-
-Returns a string representing the current directory.
-
-=cut
-
-sub curdir {
- return ":";
-}
-
-=item devnull
-
-Returns a string representing the null device.
-
-=cut
-
-sub devnull {
- return "Dev:Null";
-}
-
-=item rootdir
-
-Returns a string representing the root directory. Under MacPerl,
-returns the name of the startup volume, since that's the closest in
-concept, although other volumes aren't rooted there.
-
-=cut
-
-sub rootdir {
-#
-# There's no real root directory on MacOS. The name of the startup
-# volume is returned, since that's the closest in concept.
-#
- require Mac::Files;
- my $system = Mac::Files::FindFolder(&Mac::Files::kOnSystemDisk,
- &Mac::Files::kSystemFolderType);
- $system =~ s/:.*\Z(?!\n)/:/s;
- return $system;
-}
-
-=item tmpdir
-
-Returns a string representation of the first existing directory
-from the following list or '' if none exist:
-
- $ENV{TMPDIR}
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- $tmpdir = $ENV{TMPDIR} if -d $ENV{TMPDIR};
- $tmpdir = '' unless defined $tmpdir;
- return $tmpdir;
-}
-
-=item updir
-
-Returns a string representing the parent directory.
-
-=cut
-
-sub updir {
- return "::";
-}
-
-=item file_name_is_absolute
-
-Takes as argument a path and returns true, if it is an absolute path. In
-the case where a name can be either relative or absolute (for example, a
-folder named "HD" in the current working directory on a drive named "HD"),
-relative wins. Use ":" in the appropriate place in the path if you want to
-distinguish unambiguously.
-
-As a special case, the file name '' is always considered to be absolute.
-
-=cut
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- if ($file =~ /:/) {
- return ($file !~ m/^:/s);
- } elsif ( $file eq '' ) {
- return 1 ;
- } else {
- return (! -e ":$file");
- }
-}
-
-=item path
-
-Returns the null list for the MacPerl application, since the concept is
-usually meaningless under MacOS. But if you're using the MacPerl tool under
-MPW, it gives back $ENV{Commands} suitably split, as is done in
-:lib:ExtUtils:MM_Mac.pm.
-
-=cut
-
-sub path {
-#
-# The concept is meaningless under the MacPerl application.
-# Under MPW, it has a meaning.
-#
- return unless exists $ENV{Commands};
- return split(/,/, $ENV{Commands});
-}
-
-=item splitpath
-
-=cut
-
-sub splitpath {
- my ($self,$path, $nofile) = @_;
-
- my ($volume,$directory,$file) = ('','','');
-
- if ( $nofile ) {
- ( $volume, $directory ) = $path =~ m@((?:[^:]+(?::|\Z(?!\n)))?)(.*)@s;
- }
- else {
- $path =~
- m@^( (?: [^:]+: )? )
- ( (?: .*: )? )
- ( .* )
- @xs;
- $volume = $1;
- $directory = $2;
- $file = $3;
- }
-
- # Make sure non-empty volumes and directories end in ':'
- $volume .= ':' if $volume =~ m@[^:]\Z(?!\n)@ ;
- $directory .= ':' if $directory =~ m@[^:]\Z(?!\n)@ ;
- return ($volume,$directory,$file);
-}
-
-
-=item splitdir
-
-=cut
-
-sub splitdir {
- my ($self,$directories) = @_ ;
- #
- # split() likes to forget about trailing null fields, so here we
- # check to be sure that there will not be any before handling the
- # simple case.
- #
- if ( $directories !~ m@:\Z(?!\n)@ ) {
- return split( m@:@, $directories );
- }
- else {
- #
- # since there was a trailing separator, add a file name to the end,
- # then do the split, then replace it with ''.
- #
- my( @directories )= split( m@:@, "${directories}dummy" ) ;
- $directories[ $#directories ]= '' ;
- return @directories ;
- }
-}
-
-
-=item catpath
-
-=cut
-
-sub catpath {
- my $self = shift ;
-
- my $result = shift ;
- $result =~ s@^([^/])@/$1@s ;
-
- my $segment ;
- for $segment ( @_ ) {
- if ( $result =~ m@[^/]\Z(?!\n)@ && $segment =~ m@^[^/]@s ) {
- $result .= "/$segment" ;
- }
- elsif ( $result =~ m@/\Z(?!\n)@ && $segment =~ m@^/@s ) {
- $result =~ s@/+\Z(?!\n)@/@;
- $segment =~ s@^/+@@s;
- $result .= "$segment" ;
- }
- else {
- $result .= $segment ;
- }
- }
-
- return $result ;
-}
-
-=item abs2rel
-
-See L<File::Spec::Unix/abs2rel> for general documentation.
-
-Unlike C<File::Spec::Unix->abs2rel()>, this function will make
-checks against the local filesystem if necessary. See
-L</file_name_is_absolute> for details.
-
-=cut
-
-sub abs2rel {
- my($self,$path,$base) = @_;
-
- # Clean up $path
- if ( ! $self->file_name_is_absolute( $path ) ) {
- $path = $self->rel2abs( $path ) ;
- }
-
- # Figure out the effective $base and clean it up.
- if ( !defined( $base ) || $base eq '' ) {
- $base = cwd() ;
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
-
- # Now, remove all leading components that are the same
- my @pathchunks = $self->splitdir( $path );
- my @basechunks = $self->splitdir( $base );
-
- while (@pathchunks && @basechunks && $pathchunks[0] eq $basechunks[0]) {
- shift @pathchunks ;
- shift @basechunks ;
- }
-
- $path = join( ':', @pathchunks );
-
- # @basechunks now contains the number of directories to climb out of.
- $base = ':' x @basechunks ;
-
- return "$base:$path" ;
-}
-
-=item rel2abs
-
-See L<File::Spec::Unix/rel2abs> for general documentation.
-
-Unlike C<File::Spec::Unix->rel2abs()>, this function will make
-checks against the local filesystem if necessary. See
-L</file_name_is_absolute> for details.
-
-=cut
-
-sub rel2abs {
- my ($self,$path,$base ) = @_;
-
- if ( ! $self->file_name_is_absolute( $path ) ) {
- if ( !defined( $base ) || $base eq '' ) {
- $base = cwd() ;
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- $path = $self->canonpath("$base$path") ;
- }
-
- return $path ;
-}
-
-
-=back
-
-=head1 SEE ALSO
-
-L<File::Spec>
-
-=cut
-
-1;
diff --git a/contrib/perl5/lib/File/Spec/OS2.pm b/contrib/perl5/lib/File/Spec/OS2.pm
deleted file mode 100644
index 20bf8c9..0000000
--- a/contrib/perl5/lib/File/Spec/OS2.pm
+++ /dev/null
@@ -1,62 +0,0 @@
-package File::Spec::OS2;
-
-use strict;
-use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
-
-$VERSION = '1.1';
-
-@ISA = qw(File::Spec::Unix);
-
-sub devnull {
- return "/dev/nul";
-}
-
-sub case_tolerant {
- return 1;
-}
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- return scalar($file =~ m{^([a-z]:)?[\\/]}is);
-}
-
-sub path {
- my $path = $ENV{PATH};
- $path =~ s:\\:/:g;
- my @path = split(';',$path);
- foreach (@path) { $_ = '.' if $_ eq '' }
- return @path;
-}
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- my $self = shift;
- foreach (@ENV{qw(TMPDIR TEMP TMP)}, qw(/tmp /)) {
- next unless defined && -d;
- $tmpdir = $_;
- last;
- }
- $tmpdir = '' unless defined $tmpdir;
- $tmpdir =~ s:\\:/:g;
- $tmpdir = $self->canonpath($tmpdir);
- return $tmpdir;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-File::Spec::OS2 - methods for OS/2 file specs
-
-=head1 SYNOPSIS
-
- require File::Spec::OS2; # Done internally by File::Spec if needed
-
-=head1 DESCRIPTION
-
-See File::Spec::Unix for a documentation of the methods provided
-there. This package overrides the implementation of these methods, not
-the semantics.
diff --git a/contrib/perl5/lib/File/Spec/Unix.pm b/contrib/perl5/lib/File/Spec/Unix.pm
deleted file mode 100644
index a81c533..0000000
--- a/contrib/perl5/lib/File/Spec/Unix.pm
+++ /dev/null
@@ -1,458 +0,0 @@
-package File::Spec::Unix;
-
-use strict;
-use vars qw($VERSION);
-
-$VERSION = '1.2';
-
-use Cwd;
-
-=head1 NAME
-
-File::Spec::Unix - methods used by File::Spec
-
-=head1 SYNOPSIS
-
- require File::Spec::Unix; # Done automatically by File::Spec
-
-=head1 DESCRIPTION
-
-Methods for manipulating file specifications.
-
-=head1 METHODS
-
-=over 2
-
-=item canonpath
-
-No physical check on the filesystem, but a logical cleanup of a
-path. On UNIX eliminated successive slashes and successive "/.".
-
- $cpath = File::Spec->canonpath( $path ) ;
-
-=cut
-
-sub canonpath {
- my ($self,$path) = @_;
- $path =~ s|/+|/|g unless($^O eq 'cygwin'); # xx////xx -> xx/xx
- $path =~ s|(/\.)+/|/|g; # xx/././xx -> xx/xx
- $path =~ s|^(\./)+||s unless $path eq "./"; # ./xx -> xx
- $path =~ s|^/(\.\./)+|/|s; # /../../xx -> xx
- $path =~ s|/\Z(?!\n)|| unless $path eq "/"; # xx/ -> xx
- return $path;
-}
-
-=item catdir
-
-Concatenate two or more directory names to form a complete path ending
-with a directory. But remove the trailing slash from the resulting
-string, because it doesn't look good, isn't necessary and confuses
-OS2. Of course, if this is the root directory, don't cut off the
-trailing slash :-)
-
-=cut
-
-sub catdir {
- my $self = shift;
- my @args = @_;
- foreach (@args) {
- # append a slash to each argument unless it has one there
- $_ .= "/" if $_ eq '' || substr($_,-1) ne "/";
- }
- return $self->canonpath(join('', @args));
-}
-
-=item catfile
-
-Concatenate one or more directory names and a filename to form a
-complete path ending with a filename
-
-=cut
-
-sub catfile {
- my $self = shift;
- my $file = pop @_;
- return $file unless @_;
- my $dir = $self->catdir(@_);
- $dir .= "/" unless substr($dir,-1) eq "/";
- return $dir.$file;
-}
-
-=item curdir
-
-Returns a string representation of the current directory. "." on UNIX.
-
-=cut
-
-sub curdir {
- return ".";
-}
-
-=item devnull
-
-Returns a string representation of the null device. "/dev/null" on UNIX.
-
-=cut
-
-sub devnull {
- return "/dev/null";
-}
-
-=item rootdir
-
-Returns a string representation of the root directory. "/" on UNIX.
-
-=cut
-
-sub rootdir {
- return "/";
-}
-
-=item tmpdir
-
-Returns a string representation of the first writable directory
-from the following list or "" if none are writable:
-
- $ENV{TMPDIR}
- /tmp
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- foreach ($ENV{TMPDIR}, "/tmp") {
- next unless defined && -d && -w _;
- $tmpdir = $_;
- last;
- }
- $tmpdir = '' unless defined $tmpdir;
- return $tmpdir;
-}
-
-=item updir
-
-Returns a string representation of the parent directory. ".." on UNIX.
-
-=cut
-
-sub updir {
- return "..";
-}
-
-=item no_upwards
-
-Given a list of file names, strip out those that refer to a parent
-directory. (Does not strip symlinks, only '.', '..', and equivalents.)
-
-=cut
-
-sub no_upwards {
- my $self = shift;
- return grep(!/^\.{1,2}\Z(?!\n)/s, @_);
-}
-
-=item case_tolerant
-
-Returns a true or false value indicating, respectively, that alphabetic
-is not or is significant when comparing file specifications.
-
-=cut
-
-sub case_tolerant {
- return 0;
-}
-
-=item file_name_is_absolute
-
-Takes as argument a path and returns true if it is an absolute path.
-
-This does not consult the local filesystem on Unix, Win32, or OS/2. It
-does sometimes on MacOS (see L<File::Spec::MacOS/file_name_is_absolute>).
-It does consult the working environment for VMS (see
-L<File::Spec::VMS/file_name_is_absolute>).
-
-=cut
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- return scalar($file =~ m:^/:s);
-}
-
-=item path
-
-Takes no argument, returns the environment variable PATH as an array.
-
-=cut
-
-sub path {
- my @path = split(':', $ENV{PATH});
- foreach (@path) { $_ = '.' if $_ eq '' }
- return @path;
-}
-
-=item join
-
-join is the same as catfile.
-
-=cut
-
-sub join {
- my $self = shift;
- return $self->catfile(@_);
-}
-
-=item splitpath
-
- ($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
-
-Splits a path in to volume, directory, and filename portions. On systems
-with no concept of volume, returns undef for volume.
-
-For systems with no syntax differentiating filenames from directories,
-assumes that the last file is a path unless $no_file is true or a
-trailing separator or /. or /.. is present. On Unix this means that $no_file
-true makes this return ( '', $path, '' ).
-
-The directory portion may or may not be returned with a trailing '/'.
-
-The results can be passed to L</catpath()> to get back a path equivalent to
-(usually identical to) the original path.
-
-=cut
-
-sub splitpath {
- my ($self,$path, $nofile) = @_;
-
- my ($volume,$directory,$file) = ('','','');
-
- if ( $nofile ) {
- $directory = $path;
- }
- else {
- $path =~ m|^ ( (?: .* / (?: \.\.?\Z(?!\n) )? )? ) ([^/]*) |xs;
- $directory = $1;
- $file = $2;
- }
-
- return ($volume,$directory,$file);
-}
-
-
-=item splitdir
-
-The opposite of L</catdir()>.
-
- @dirs = File::Spec->splitdir( $directories );
-
-$directories must be only the directory portion of the path on systems
-that have the concept of a volume or that have path syntax that differentiates
-files from directories.
-
-Unlike just splitting the directories on the separator, empty
-directory names (C<''>) can be returned, because these are significant
-on some OSs (e.g. MacOS).
-
-On Unix,
-
- File::Spec->splitdir( "/a/b//c/" );
-
-Yields:
-
- ( '', 'a', 'b', '', 'c', '' )
-
-=cut
-
-sub splitdir {
- my ($self,$directories) = @_ ;
- #
- # split() likes to forget about trailing null fields, so here we
- # check to be sure that there will not be any before handling the
- # simple case.
- #
- if ( $directories !~ m|/\Z(?!\n)| ) {
- return split( m|/|, $directories );
- }
- else {
- #
- # since there was a trailing separator, add a file name to the end,
- # then do the split, then replace it with ''.
- #
- my( @directories )= split( m|/|, "${directories}dummy" ) ;
- $directories[ $#directories ]= '' ;
- return @directories ;
- }
-}
-
-
-=item catpath
-
-Takes volume, directory and file portions and returns an entire path. Under
-Unix, $volume is ignored, and directory and file are catenated. A '/' is
-inserted if need be. On other OSs, $volume is significant.
-
-=cut
-
-sub catpath {
- my ($self,$volume,$directory,$file) = @_;
-
- if ( $directory ne '' &&
- $file ne '' &&
- substr( $directory, -1 ) ne '/' &&
- substr( $file, 0, 1 ) ne '/'
- ) {
- $directory .= "/$file" ;
- }
- else {
- $directory .= $file ;
- }
-
- return $directory ;
-}
-
-=item abs2rel
-
-Takes a destination path and an optional base path returns a relative path
-from the base path to the destination path:
-
- $rel_path = File::Spec->abs2rel( $path ) ;
- $rel_path = File::Spec->abs2rel( $path, $base ) ;
-
-If $base is not present or '', then L<cwd()> is used. If $base is relative,
-then it is converted to absolute form using L</rel2abs()>. This means that it
-is taken to be relative to L<cwd()>.
-
-On systems with the concept of a volume, this assumes that both paths
-are on the $destination volume, and ignores the $base volume.
-
-On systems that have a grammar that indicates filenames, this ignores the
-$base filename as well. Otherwise all path components are assumed to be
-directories.
-
-If $path is relative, it is converted to absolute form using L</rel2abs()>.
-This means that it is taken to be relative to L<cwd()>.
-
-No checks against the filesystem are made on most systems. On MacOS,
-the filesystem may be consulted (see
-L<File::Spec::MacOS/file_name_is_absolute>). On VMS, there is
-interaction with the working environment, as logicals and
-macros are expanded.
-
-Based on code written by Shigio Yamaguchi.
-
-=cut
-
-sub abs2rel {
- my($self,$path,$base) = @_;
-
- # Clean up $path
- if ( ! $self->file_name_is_absolute( $path ) ) {
- $path = $self->rel2abs( $path ) ;
- }
- else {
- $path = $self->canonpath( $path ) ;
- }
-
- # Figure out the effective $base and clean it up.
- if ( !defined( $base ) || $base eq '' ) {
- $base = cwd() ;
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- # Now, remove all leading components that are the same
- my @pathchunks = $self->splitdir( $path);
- my @basechunks = $self->splitdir( $base);
-
- while (@pathchunks && @basechunks && $pathchunks[0] eq $basechunks[0]) {
- shift @pathchunks ;
- shift @basechunks ;
- }
-
- $path = CORE::join( '/', @pathchunks );
- $base = CORE::join( '/', @basechunks );
-
- # $base now contains the directories the resulting relative path
- # must ascend out of before it can descend to $path_directory. So,
- # replace all names with $parentDir
- $base =~ s|[^/]+|..|g ;
-
- # Glue the two together, using a separator if necessary, and preventing an
- # empty result.
- if ( $path ne '' && $base ne '' ) {
- $path = "$base/$path" ;
- } else {
- $path = "$base$path" ;
- }
-
- return $self->canonpath( $path ) ;
-}
-
-=item rel2abs
-
-Converts a relative path to an absolute path.
-
- $abs_path = File::Spec->rel2abs( $path ) ;
- $abs_path = File::Spec->rel2abs( $path, $base ) ;
-
-If $base is not present or '', then L<cwd()> is used. If $base is relative,
-then it is converted to absolute form using L</rel2abs()>. This means that it
-is taken to be relative to L<cwd()>.
-
-On systems with the concept of a volume, this assumes that both paths
-are on the $base volume, and ignores the $path volume.
-
-On systems that have a grammar that indicates filenames, this ignores the
-$base filename as well. Otherwise all path components are assumed to be
-directories.
-
-If $path is absolute, it is cleaned up and returned using L</canonpath()>.
-
-No checks against the filesystem are made on most systems. On MacOS,
-the filesystem may be consulted (see
-L<File::Spec::MacOS/file_name_is_absolute>). On VMS, there is
-interaction with the working environment, as logicals and
-macros are expanded.
-
-Based on code written by Shigio Yamaguchi.
-
-=cut
-
-sub rel2abs {
- my ($self,$path,$base ) = @_;
-
- # Clean up $path
- if ( ! $self->file_name_is_absolute( $path ) ) {
- # Figure out the effective $base and clean it up.
- if ( !defined( $base ) || $base eq '' ) {
- $base = cwd() ;
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- # Glom them together
- $path = $self->catdir( $base, $path ) ;
- }
-
- return $self->canonpath( $path ) ;
-}
-
-
-=back
-
-=head1 SEE ALSO
-
-L<File::Spec>
-
-=cut
-
-1;
diff --git a/contrib/perl5/lib/File/Spec/VMS.pm b/contrib/perl5/lib/File/Spec/VMS.pm
deleted file mode 100644
index 60b0ec8..0000000
--- a/contrib/perl5/lib/File/Spec/VMS.pm
+++ /dev/null
@@ -1,505 +0,0 @@
-package File::Spec::VMS;
-
-use strict;
-use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
-
-$VERSION = '1.1';
-
-@ISA = qw(File::Spec::Unix);
-
-use Cwd;
-use File::Basename;
-use VMS::Filespec;
-
-=head1 NAME
-
-File::Spec::VMS - methods for VMS file specs
-
-=head1 SYNOPSIS
-
- require File::Spec::VMS; # Done internally by File::Spec if needed
-
-=head1 DESCRIPTION
-
-See File::Spec::Unix for a documentation of the methods provided
-there. This package overrides the implementation of these methods, not
-the semantics.
-
-=over
-
-=item eliminate_macros
-
-Expands MM[KS]/Make macros in a text string, using the contents of
-identically named elements of C<%$self>, and returns the result
-as a file specification in Unix syntax.
-
-=cut
-
-sub eliminate_macros {
- my($self,$path) = @_;
- return '' unless $path;
- $self = {} unless ref $self;
-
- if ($path =~ /\s/) {
- return join ' ', map { $self->eliminate_macros($_) } split /\s+/, $path;
- }
-
- my($npath) = unixify($path);
- my($complex) = 0;
- my($head,$macro,$tail);
-
- # perform m##g in scalar context so it acts as an iterator
- while ($npath =~ m#(.*?)\$\((\S+?)\)(.*)#gs) {
- if ($self->{$2}) {
- ($head,$macro,$tail) = ($1,$2,$3);
- if (ref $self->{$macro}) {
- if (ref $self->{$macro} eq 'ARRAY') {
- $macro = join ' ', @{$self->{$macro}};
- }
- else {
- print "Note: can't expand macro \$($macro) containing ",ref($self->{$macro}),
- "\n\t(using MMK-specific deferred substitutuon; MMS will break)\n";
- $macro = "\cB$macro\cB";
- $complex = 1;
- }
- }
- else { ($macro = unixify($self->{$macro})) =~ s#/\Z(?!\n)##; }
- $npath = "$head$macro$tail";
- }
- }
- if ($complex) { $npath =~ s#\cB(.*?)\cB#\${$1}#gs; }
- $npath;
-}
-
-=item fixpath
-
-Catchall routine to clean up problem MM[SK]/Make macros. Expands macros
-in any directory specification, in order to avoid juxtaposing two
-VMS-syntax directories when MM[SK] is run. Also expands expressions which
-are all macro, so that we can tell how long the expansion is, and avoid
-overrunning DCL's command buffer when MM[KS] is running.
-
-If optional second argument has a TRUE value, then the return string is
-a VMS-syntax directory specification, if it is FALSE, the return string
-is a VMS-syntax file specification, and if it is not specified, fixpath()
-checks to see whether it matches the name of a directory in the current
-default directory, and returns a directory or file specification accordingly.
-
-=cut
-
-sub fixpath {
- my($self,$path,$force_path) = @_;
- return '' unless $path;
- $self = bless {} unless ref $self;
- my($fixedpath,$prefix,$name);
-
- if ($path =~ /\s/) {
- return join ' ',
- map { $self->fixpath($_,$force_path) }
- split /\s+/, $path;
- }
-
- if ($path =~ m#^\$\([^\)]+\)\Z(?!\n)#s || $path =~ m#[/:>\]]#) {
- if ($force_path or $path =~ /(?:DIR\)|\])\Z(?!\n)/) {
- $fixedpath = vmspath($self->eliminate_macros($path));
- }
- else {
- $fixedpath = vmsify($self->eliminate_macros($path));
- }
- }
- elsif ((($prefix,$name) = ($path =~ m#^\$\(([^\)]+)\)(.+)#s)) && $self->{$prefix}) {
- my($vmspre) = $self->eliminate_macros("\$($prefix)");
- # is it a dir or just a name?
- $vmspre = ($vmspre =~ m|/| or $prefix =~ /DIR\Z(?!\n)/) ? vmspath($vmspre) : '';
- $fixedpath = ($vmspre ? $vmspre : $self->{$prefix}) . $name;
- $fixedpath = vmspath($fixedpath) if $force_path;
- }
- else {
- $fixedpath = $path;
- $fixedpath = vmspath($fixedpath) if $force_path;
- }
- # No hints, so we try to guess
- if (!defined($force_path) and $fixedpath !~ /[:>(.\]]/) {
- $fixedpath = vmspath($fixedpath) if -d $fixedpath;
- }
-
- # Trim off root dirname if it's had other dirs inserted in front of it.
- $fixedpath =~ s/\.000000([\]>])/$1/;
- # Special case for VMS absolute directory specs: these will have had device
- # prepended during trip through Unix syntax in eliminate_macros(), since
- # Unix syntax has no way to express "absolute from the top of this device's
- # directory tree".
- if ($path =~ /^[\[>][^.\-]/) { $fixedpath =~ s/^[^\[<]+//; }
- $fixedpath;
-}
-
-=back
-
-=head2 Methods always loaded
-
-=over
-
-=item canonpath (override)
-
-Removes redundant portions of file specifications according to VMS syntax.
-
-=cut
-
-sub canonpath {
- my($self,$path) = @_;
-
- if ($path =~ m|/|) { # Fake Unix
- my $pathify = $path =~ m|/\Z(?!\n)|;
- $path = $self->SUPER::canonpath($path);
- if ($pathify) { return vmspath($path); }
- else { return vmsify($path); }
- }
- else {
- $path =~ s-\]\[--g; $path =~ s/><//g; # foo.][bar ==> foo.bar
- $path =~ s/([\[<])000000\./$1/; # [000000.foo ==> foo
- 1 while $path =~ s{([\[<-])\.-}{$1-}; # [.-.- ==> [--
- $path =~ s/\.[^\[<\.]+\.-([\]\>])/$1/; # bar.foo.-] ==> bar]
- $path =~ s/([\[<])(-+)/$1 . "\cx" x length($2)/e; # encode leading '-'s
- $path =~ s/([\[<\.])([^\[<\.\cx]+)\.-\.?/$1/g; # bar.-.foo ==> foo
- $path =~ s/([\[<])(\cx+)/$1 . '-' x length($2)/e; # then decode
- return $path;
- }
-}
-
-=item catdir
-
-Concatenates a list of file specifications, and returns the result as a
-VMS-syntax directory specification. No check is made for "impossible"
-cases (e.g. elements other than the first being absolute filespecs).
-
-=cut
-
-sub catdir {
- my ($self,@dirs) = @_;
- my $dir = pop @dirs;
- @dirs = grep($_,@dirs);
- my $rslt;
- if (@dirs) {
- my $path = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs));
- my ($spath,$sdir) = ($path,$dir);
- $spath =~ s/\.dir\Z(?!\n)//; $sdir =~ s/\.dir\Z(?!\n)//;
- $sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+\Z(?!\n)/s;
- $rslt = $self->fixpath($self->eliminate_macros($spath)."/$sdir",1);
-
- # Special case for VMS absolute directory specs: these will have had device
- # prepended during trip through Unix syntax in eliminate_macros(), since
- # Unix syntax has no way to express "absolute from the top of this device's
- # directory tree".
- if ($spath =~ /^[\[<][^.\-]/s) { $rslt =~ s/^[^\[<]+//s; }
- }
- else {
- if (not defined $dir or not length $dir) { $rslt = ''; }
- elsif ($dir =~ /^\$\([^\)]+\)\Z(?!\n)/s) { $rslt = $dir; }
- else { $rslt = vmspath($dir); }
- }
- return $self->canonpath($rslt);
-}
-
-=item catfile
-
-Concatenates a list of file specifications, and returns the result as a
-VMS-syntax file specification.
-
-=cut
-
-sub catfile {
- my ($self,@files) = @_;
- my $file = pop @files;
- @files = grep($_,@files);
- my $rslt;
- if (@files) {
- my $path = (@files == 1 ? $files[0] : $self->catdir(@files));
- my $spath = $path;
- $spath =~ s/\.dir\Z(?!\n)//;
- if ($spath =~ /^[^\)\]\/:>]+\)\Z(?!\n)/s && basename($file) eq $file) {
- $rslt = "$spath$file";
- }
- else {
- $rslt = $self->eliminate_macros($spath);
- $rslt = vmsify($rslt.($rslt ? '/' : '').unixify($file));
- }
- }
- else { $rslt = (defined($file) && length($file)) ? vmsify($file) : ''; }
- return $self->canonpath($rslt);
-}
-
-
-=item curdir (override)
-
-Returns a string representation of the current directory: '[]'
-
-=cut
-
-sub curdir {
- return '[]';
-}
-
-=item devnull (override)
-
-Returns a string representation of the null device: '_NLA0:'
-
-=cut
-
-sub devnull {
- return "_NLA0:";
-}
-
-=item rootdir (override)
-
-Returns a string representation of the root directory: 'SYS$DISK:[000000]'
-
-=cut
-
-sub rootdir {
- return 'SYS$DISK:[000000]';
-}
-
-=item tmpdir (override)
-
-Returns a string representation of the first writable directory
-from the following list or '' if none are writable:
-
- sys$scratch:
- $ENV{TMPDIR}
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- foreach ('sys$scratch:', $ENV{TMPDIR}) {
- next unless defined && -d && -w _;
- $tmpdir = $_;
- last;
- }
- $tmpdir = '' unless defined $tmpdir;
- return $tmpdir;
-}
-
-=item updir (override)
-
-Returns a string representation of the parent directory: '[-]'
-
-=cut
-
-sub updir {
- return '[-]';
-}
-
-=item case_tolerant (override)
-
-VMS file specification syntax is case-tolerant.
-
-=cut
-
-sub case_tolerant {
- return 1;
-}
-
-=item path (override)
-
-Translate logical name DCL$PATH as a searchlist, rather than trying
-to C<split> string value of C<$ENV{'PATH'}>.
-
-=cut
-
-sub path {
- my (@dirs,$dir,$i);
- while ($dir = $ENV{'DCL$PATH;' . $i++}) { push(@dirs,$dir); }
- return @dirs;
-}
-
-=item file_name_is_absolute (override)
-
-Checks for VMS directory spec as well as Unix separators.
-
-=cut
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- # If it's a logical name, expand it.
- $file = $ENV{$file} while $file =~ /^[\w\$\-]+\Z(?!\n)/s && $ENV{$file};
- return scalar($file =~ m!^/!s ||
- $file =~ m![<\[][^.\-\]>]! ||
- $file =~ /:[^<\[]/);
-}
-
-=item splitpath (override)
-
-Splits using VMS syntax.
-
-=cut
-
-sub splitpath {
- my($self,$path) = @_;
- my($dev,$dir,$file) = ('','','');
-
- vmsify($path) =~ /(.+:)?([\[<].*[\]>])?(.*)/s;
- return ($1 || '',$2 || '',$3);
-}
-
-=item splitdir (override)
-
-Split dirspec using VMS syntax.
-
-=cut
-
-sub splitdir {
- my($self,$dirspec) = @_;
- $dirspec =~ s/\]\[//g; $dirspec =~ s/\-\-/-.-/g;
- $dirspec = "[$dirspec]" unless $dirspec =~ /[\[<]/; # make legal
- my(@dirs) = split('\.', vmspath($dirspec));
- $dirs[0] =~ s/^[\[<]//s; $dirs[-1] =~ s/[\]>]\Z(?!\n)//s;
- @dirs;
-}
-
-
-=item catpath (override)
-
-Construct a complete filespec using VMS syntax
-
-=cut
-
-sub catpath {
- my($self,$dev,$dir,$file) = @_;
- if ($dev =~ m|^/+([^/]+)|) { $dev = "$1:"; }
- else { $dev .= ':' unless $dev eq '' or $dev =~ /:\Z(?!\n)/; }
- if (length($dev) or length($dir)) {
- $dir = "[$dir]" unless $dir =~ /[\[<\/]/;
- $dir = vmspath($dir);
- }
- "$dev$dir$file";
-}
-
-=item abs2rel (override)
-
-Use VMS syntax when converting filespecs.
-
-=cut
-
-sub abs2rel {
- my $self = shift;
-
- return vmspath(File::Spec::Unix::abs2rel( $self, @_ ))
- if ( join( '', @_ ) =~ m{/} ) ;
-
- my($path,$base) = @_;
-
- # Note: we use '/' to glue things together here, then let canonpath()
- # clean them up at the end.
-
- # Clean up $path
- if ( ! $self->file_name_is_absolute( $path ) ) {
- $path = $self->rel2abs( $path ) ;
- }
- else {
- $path = $self->canonpath( $path ) ;
- }
-
- # Figure out the effective $base and clean it up.
- if ( !defined( $base ) || $base eq '' ) {
- $base = cwd() ;
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- # Split up paths
- my ( $path_directories, $path_file ) =
- ($self->splitpath( $path, 1 ))[1,2] ;
-
- $path_directories = $1
- if $path_directories =~ /^\[(.*)\]\Z(?!\n)/s ;
-
- my $base_directories = ($self->splitpath( $base, 1 ))[1] ;
-
- $base_directories = $1
- if $base_directories =~ /^\[(.*)\]\Z(?!\n)/s ;
-
- # Now, remove all leading components that are the same
- my @pathchunks = $self->splitdir( $path_directories );
- my @basechunks = $self->splitdir( $base_directories );
-
- while ( @pathchunks &&
- @basechunks &&
- lc( $pathchunks[0] ) eq lc( $basechunks[0] )
- ) {
- shift @pathchunks ;
- shift @basechunks ;
- }
-
- # @basechunks now contains the directories to climb out of,
- # @pathchunks now has the directories to descend in to.
- $path_directories = '-.' x @basechunks . join( '.', @pathchunks ) ;
- $path_directories =~ s{\.\Z(?!\n)}{} ;
- return $self->canonpath( $self->catpath( '', $path_directories, $path_file ) ) ;
-}
-
-
-=item rel2abs (override)
-
-Use VMS syntax when converting filespecs.
-
-=cut
-
-sub rel2abs {
- my $self = shift ;
- return vmspath(File::Spec::Unix::rel2abs( $self, @_ ))
- if ( join( '', @_ ) =~ m{/} ) ;
-
- my ($path,$base ) = @_;
- # Clean up and split up $path
- if ( ! $self->file_name_is_absolute( $path ) ) {
- # Figure out the effective $base and clean it up.
- if ( !defined( $base ) || $base eq '' ) {
- $base = cwd() ;
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- # Split up paths
- my ( $path_directories, $path_file ) =
- ($self->splitpath( $path ))[1,2] ;
-
- my ( $base_volume, $base_directories ) =
- $self->splitpath( $base ) ;
-
- $path_directories = '' if $path_directories eq '[]' ||
- $path_directories eq '<>';
- my $sep = '' ;
- $sep = '.'
- if ( $base_directories =~ m{[^.\]>]\Z(?!\n)} &&
- $path_directories =~ m{^[^.\[<]}s
- ) ;
- $base_directories = "$base_directories$sep$path_directories";
- $base_directories =~ s{\.?[\]>][\[<]\.?}{.};
-
- $path = $self->catpath( $base_volume, $base_directories, $path_file );
- }
-
- return $self->canonpath( $path ) ;
-}
-
-
-=back
-
-=head1 SEE ALSO
-
-L<File::Spec>
-
-=cut
-
-1;
diff --git a/contrib/perl5/lib/File/Spec/Win32.pm b/contrib/perl5/lib/File/Spec/Win32.pm
deleted file mode 100644
index 3c01985..0000000
--- a/contrib/perl5/lib/File/Spec/Win32.pm
+++ /dev/null
@@ -1,355 +0,0 @@
-package File::Spec::Win32;
-
-use strict;
-use Cwd;
-use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
-
-$VERSION = '1.2';
-
-@ISA = qw(File::Spec::Unix);
-
-=head1 NAME
-
-File::Spec::Win32 - methods for Win32 file specs
-
-=head1 SYNOPSIS
-
- require File::Spec::Win32; # Done internally by File::Spec if needed
-
-=head1 DESCRIPTION
-
-See File::Spec::Unix for a documentation of the methods provided
-there. This package overrides the implementation of these methods, not
-the semantics.
-
-=over
-
-=item devnull
-
-Returns a string representation of the null device.
-
-=cut
-
-sub devnull {
- return "nul";
-}
-
-=item tmpdir
-
-Returns a string representation of the first existing directory
-from the following list:
-
- $ENV{TMPDIR}
- $ENV{TEMP}
- $ENV{TMP}
- C:/temp
- /tmp
- /
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- my $self = shift;
- foreach (@ENV{qw(TMPDIR TEMP TMP)}, qw(C:/temp /tmp /)) {
- next unless defined && -d;
- $tmpdir = $_;
- last;
- }
- $tmpdir = '' unless defined $tmpdir;
- $tmpdir = $self->canonpath($tmpdir);
- return $tmpdir;
-}
-
-sub case_tolerant {
- return 1;
-}
-
-sub file_name_is_absolute {
- my ($self,$file) = @_;
- return scalar($file =~ m{^([a-z]:)?[\\/]}is);
-}
-
-=item catfile
-
-Concatenate one or more directory names and a filename to form a
-complete path ending with a filename
-
-=cut
-
-sub catfile {
- my $self = shift;
- my $file = pop @_;
- return $file unless @_;
- my $dir = $self->catdir(@_);
- $dir .= "\\" unless substr($dir,-1) eq "\\";
- return $dir.$file;
-}
-
-sub path {
- my $path = $ENV{'PATH'} || $ENV{'Path'} || $ENV{'path'};
- my @path = split(';',$path);
- foreach (@path) { $_ = '.' if $_ eq '' }
- return @path;
-}
-
-=item canonpath
-
-No physical check on the filesystem, but a logical cleanup of a
-path. On UNIX eliminated successive slashes and successive "/.".
-
-=cut
-
-sub canonpath {
- my ($self,$path) = @_;
- $path =~ s/^([a-z]:)/\u$1/s;
- $path =~ s|/|\\|g;
- $path =~ s|([^\\])\\+|$1\\|g; # xx////xx -> xx/xx
- $path =~ s|(\\\.)+\\|\\|g; # xx/././xx -> xx/xx
- $path =~ s|^(\.\\)+||s unless $path eq ".\\"; # ./xx -> xx
- $path =~ s|\\\Z(?!\n)||
- unless $path =~ m#^([A-Z]:)?\\\Z(?!\n)#s; # xx/ -> xx
- return $path;
-}
-
-=item splitpath
-
- ($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
-
-Splits a path in to volume, directory, and filename portions. Assumes that
-the last file is a path unless the path ends in '\\', '\\.', '\\..'
-or $no_file is true. On Win32 this means that $no_file true makes this return
-( $volume, $path, undef ).
-
-Separators accepted are \ and /.
-
-Volumes can be drive letters or UNC sharenames (\\server\share).
-
-The results can be passed to L</catpath> to get back a path equivalent to
-(usually identical to) the original path.
-
-=cut
-
-sub splitpath {
- my ($self,$path, $nofile) = @_;
- my ($volume,$directory,$file) = ('','','');
- if ( $nofile ) {
- $path =~
- m{^( (?:[a-zA-Z]:|(?:\\\\|//)[^\\/]+[\\/][^\\/]+)? )
- (.*)
- }xs;
- $volume = $1;
- $directory = $2;
- }
- else {
- $path =~
- m{^ ( (?: [a-zA-Z]: |
- (?:\\\\|//)[^\\/]+[\\/][^\\/]+
- )?
- )
- ( (?:.*[\\\\/](?:\.\.?\Z(?!\n))?)? )
- (.*)
- }xs;
- $volume = $1;
- $directory = $2;
- $file = $3;
- }
-
- return ($volume,$directory,$file);
-}
-
-
-=item splitdir
-
-The opposite of L</catdir()>.
-
- @dirs = File::Spec->splitdir( $directories );
-
-$directories must be only the directory portion of the path on systems
-that have the concept of a volume or that have path syntax that differentiates
-files from directories.
-
-Unlike just splitting the directories on the separator, leading empty and
-trailing directory entries can be returned, because these are significant
-on some OSs. So,
-
- File::Spec->splitdir( "/a/b/c" );
-
-Yields:
-
- ( '', 'a', 'b', '', 'c', '' )
-
-=cut
-
-sub splitdir {
- my ($self,$directories) = @_ ;
- #
- # split() likes to forget about trailing null fields, so here we
- # check to be sure that there will not be any before handling the
- # simple case.
- #
- if ( $directories !~ m|[\\/]\Z(?!\n)| ) {
- return split( m|[\\/]|, $directories );
- }
- else {
- #
- # since there was a trailing separator, add a file name to the end,
- # then do the split, then replace it with ''.
- #
- my( @directories )= split( m|[\\/]|, "${directories}dummy" ) ;
- $directories[ $#directories ]= '' ;
- return @directories ;
- }
-}
-
-
-=item catpath
-
-Takes volume, directory and file portions and returns an entire path. Under
-Unix, $volume is ignored, and this is just like catfile(). On other OSs,
-the $volume become significant.
-
-=cut
-
-sub catpath {
- my ($self,$volume,$directory,$file) = @_;
-
- # If it's UNC, make sure the glue separator is there, reusing
- # whatever separator is first in the $volume
- $volume .= $1
- if ( $volume =~ m@^([\\/])[\\/][^\\/]+[\\/][^\\/]+\Z(?!\n)@s &&
- $directory =~ m@^[^\\/]@s
- ) ;
-
- $volume .= $directory ;
-
- # If the volume is not just A:, make sure the glue separator is
- # there, reusing whatever separator is first in the $volume if possible.
- if ( $volume !~ m@^[a-zA-Z]:\Z(?!\n)@s &&
- $volume =~ m@[^\\/]\Z(?!\n)@ &&
- $file =~ m@[^\\/]@
- ) {
- $volume =~ m@([\\/])@ ;
- my $sep = $1 ? $1 : '\\' ;
- $volume .= $sep ;
- }
-
- $volume .= $file ;
-
- return $volume ;
-}
-
-
-sub abs2rel {
- my($self,$path,$base) = @_;
-
- # Clean up $path
- if ( ! $self->file_name_is_absolute( $path ) ) {
- $path = $self->rel2abs( $path ) ;
- }
- else {
- $path = $self->canonpath( $path ) ;
- }
-
- # Figure out the effective $base and clean it up.
- if ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- elsif ( !defined( $base ) || $base eq '' ) {
- $base = cwd() ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- # Split up paths
- my ( $path_volume, $path_directories, $path_file ) =
- $self->splitpath( $path, 1 ) ;
-
- my $base_directories = ($self->splitpath( $base, 1 ))[1] ;
-
- # Now, remove all leading components that are the same
- my @pathchunks = $self->splitdir( $path_directories );
- my @basechunks = $self->splitdir( $base_directories );
-
- while ( @pathchunks &&
- @basechunks &&
- lc( $pathchunks[0] ) eq lc( $basechunks[0] )
- ) {
- shift @pathchunks ;
- shift @basechunks ;
- }
-
- # No need to catdir, we know these are well formed.
- $path_directories = CORE::join( '\\', @pathchunks );
- $base_directories = CORE::join( '\\', @basechunks );
-
- # $base_directories now contains the directories the resulting relative
- # path must ascend out of before it can descend to $path_directory. So,
- # replace all names with $parentDir
-
- #FA Need to replace between backslashes...
- $base_directories =~ s|[^\\]+|..|g ;
-
- # Glue the two together, using a separator if necessary, and preventing an
- # empty result.
-
- #FA Must check that new directories are not empty.
- if ( $path_directories ne '' && $base_directories ne '' ) {
- $path_directories = "$base_directories\\$path_directories" ;
- } else {
- $path_directories = "$base_directories$path_directories" ;
- }
-
- # It makes no sense to add a relative path to a UNC volume
- $path_volume = '' unless $path_volume =~ m{^[A-Z]:}is ;
-
- return $self->canonpath(
- $self->catpath($path_volume, $path_directories, $path_file )
- ) ;
-}
-
-
-sub rel2abs {
- my ($self,$path,$base ) = @_;
-
- if ( ! $self->file_name_is_absolute( $path ) ) {
-
- if ( !defined( $base ) || $base eq '' ) {
- $base = cwd() ;
- }
- elsif ( ! $self->file_name_is_absolute( $base ) ) {
- $base = $self->rel2abs( $base ) ;
- }
- else {
- $base = $self->canonpath( $base ) ;
- }
-
- my ( $path_directories, $path_file ) =
- ($self->splitpath( $path, 1 ))[1,2] ;
-
- my ( $base_volume, $base_directories ) =
- $self->splitpath( $base, 1 ) ;
-
- $path = $self->catpath(
- $base_volume,
- $self->catdir( $base_directories, $path_directories ),
- $path_file
- ) ;
- }
-
- return $self->canonpath( $path ) ;
-}
-
-=back
-
-=head1 SEE ALSO
-
-L<File::Spec>
-
-=cut
-
-1;
diff --git a/contrib/perl5/lib/File/Temp.pm b/contrib/perl5/lib/File/Temp.pm
deleted file mode 100644
index b686682..0000000
--- a/contrib/perl5/lib/File/Temp.pm
+++ /dev/null
@@ -1,1863 +0,0 @@
-package File::Temp;
-
-=head1 NAME
-
-File::Temp - return name and handle of a temporary file safely
-
-=begin __INTERNALS
-
-=head1 PORTABILITY
-
-This module is designed to be portable across operating systems
-and it currently supports Unix, VMS, DOS, OS/2 and Windows. When
-porting to a new OS there are generally three main issues
-that have to be solved:
-
-=over 4
-
-=item *
-
-Can the OS unlink an open file? If it can not then the
-C<_can_unlink_opened_file> method should be modified.
-
-=item *
-
-Are the return values from C<stat> reliable? By default all the
-return values from C<stat> are compared when unlinking a temporary
-file using the filename and the handle. Operating systems other than
-unix do not always have valid entries in all fields. If C<unlink0> fails
-then the C<stat> comparison should be modified accordingly.
-
-=item *
-
-Security. Systems that can not support a test for the sticky bit
-on a directory can not use the MEDIUM and HIGH security tests.
-The C<_can_do_level> method should be modified accordingly.
-
-=back
-
-=end __INTERNALS
-
-=head1 SYNOPSIS
-
- use File::Temp qw/ tempfile tempdir /;
-
- $dir = tempdir( CLEANUP => 1 );
- ($fh, $filename) = tempfile( DIR => $dir );
-
- ($fh, $filename) = tempfile( $template, DIR => $dir);
- ($fh, $filename) = tempfile( $template, SUFFIX => '.dat');
-
- $fh = tempfile();
-
-MkTemp family:
-
- use File::Temp qw/ :mktemp /;
-
- ($fh, $file) = mkstemp( "tmpfileXXXXX" );
- ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix);
-
- $tmpdir = mkdtemp( $template );
-
- $unopened_file = mktemp( $template );
-
-POSIX functions:
-
- use File::Temp qw/ :POSIX /;
-
- $file = tmpnam();
- $fh = tmpfile();
-
- ($fh, $file) = tmpnam();
- ($fh, $file) = tmpfile();
-
-
-Compatibility functions:
-
- $unopened_file = File::Temp::tempnam( $dir, $pfx );
-
-=begin later
-
-Objects (NOT YET IMPLEMENTED):
-
- require File::Temp;
-
- $fh = new File::Temp($template);
- $fname = $fh->filename;
-
-=end later
-
-=head1 DESCRIPTION
-
-C<File::Temp> can be used to create and open temporary files in a safe way.
-The tempfile() function can be used to return the name and the open
-filehandle of a temporary file. The tempdir() function can
-be used to create a temporary directory.
-
-The security aspect of temporary file creation is emphasized such that
-a filehandle and filename are returned together. This helps guarantee
-that a race condition can not occur where the temporary file is
-created by another process between checking for the existence of the
-file and its opening. Additional security levels are provided to
-check, for example, that the sticky bit is set on world writable
-directories. See L<"safe_level"> for more information.
-
-For compatibility with popular C library functions, Perl implementations of
-the mkstemp() family of functions are provided. These are, mkstemp(),
-mkstemps(), mkdtemp() and mktemp().
-
-Additionally, implementations of the standard L<POSIX|POSIX>
-tmpnam() and tmpfile() functions are provided if required.
-
-Implementations of mktemp(), tmpnam(), and tempnam() are provided,
-but should be used with caution since they return only a filename
-that was valid when function was called, so cannot guarantee
-that the file will not exist by the time the caller opens the filename.
-
-=cut
-
-# 5.6.0 gives us S_IWOTH, S_IWGRP, our and auto-vivifying filehandls
-# People would like a version on 5.005 so give them what they want :-)
-use 5.005;
-use strict;
-use Carp;
-use File::Spec 0.8;
-use File::Path qw/ rmtree /;
-use Fcntl 1.03;
-use Errno;
-require VMS::Stdio if $^O eq 'VMS';
-
-# Need the Symbol package if we are running older perl
-require Symbol if $] < 5.006;
-
-
-# use 'our' on v5.6.0
-use vars qw($VERSION @EXPORT_OK %EXPORT_TAGS $DEBUG);
-
-$DEBUG = 0;
-
-# We are exporting functions
-
-use base qw/Exporter/;
-
-# Export list - to allow fine tuning of export table
-
-@EXPORT_OK = qw{
- tempfile
- tempdir
- tmpnam
- tmpfile
- mktemp
- mkstemp
- mkstemps
- mkdtemp
- unlink0
- };
-
-# Groups of functions for export
-
-%EXPORT_TAGS = (
- 'POSIX' => [qw/ tmpnam tmpfile /],
- 'mktemp' => [qw/ mktemp mkstemp mkstemps mkdtemp/],
- );
-
-# add contents of these tags to @EXPORT
-Exporter::export_tags('POSIX','mktemp');
-
-# Version number
-
-$VERSION = '0.12';
-
-# This is a list of characters that can be used in random filenames
-
-my @CHARS = (qw/ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
- a b c d e f g h i j k l m n o p q r s t u v w x y z
- 0 1 2 3 4 5 6 7 8 9 _
- /);
-
-# Maximum number of tries to make a temp file before failing
-
-use constant MAX_TRIES => 10;
-
-# Minimum number of X characters that should be in a template
-use constant MINX => 4;
-
-# Default template when no template supplied
-
-use constant TEMPXXX => 'X' x 10;
-
-# Constants for the security level
-
-use constant STANDARD => 0;
-use constant MEDIUM => 1;
-use constant HIGH => 2;
-
-# OPENFLAGS. If we defined the flag to use with Sysopen here this gives
-# us an optimisation when many temporary files are requested
-
-my $OPENFLAGS = O_CREAT | O_EXCL | O_RDWR;
-
-for my $oflag (qw/ FOLLOW BINARY LARGEFILE EXLOCK NOINHERIT /) {
- my ($bit, $func) = (0, "Fcntl::O_" . $oflag);
- no strict 'refs';
- $OPENFLAGS |= $bit if eval {
- # Make sure that redefined die handlers do not cause problems
- # eg CGI::Carp
- local $SIG{__DIE__} = sub {};
- local $SIG{__WARN__} = sub {};
- $bit = &$func();
- 1;
- };
-}
-
-# On some systems the O_TEMPORARY flag can be used to tell the OS
-# to automatically remove the file when it is closed. This is fine
-# in most cases but not if tempfile is called with UNLINK=>0 and
-# the filename is requested -- in the case where the filename is to
-# be passed to another routine. This happens on windows. We overcome
-# this by using a second open flags variable
-
-my $OPENTEMPFLAGS = $OPENFLAGS;
-for my $oflag (qw/ TEMPORARY /) {
- my ($bit, $func) = (0, "Fcntl::O_" . $oflag);
- no strict 'refs';
- $OPENTEMPFLAGS |= $bit if eval {
- # Make sure that redefined die handlers do not cause problems
- # eg CGI::Carp
- local $SIG{__DIE__} = sub {};
- local $SIG{__WARN__} = sub {};
- $bit = &$func();
- 1;
- };
-}
-
-# INTERNAL ROUTINES - not to be used outside of package
-
-# Generic routine for getting a temporary filename
-# modelled on OpenBSD _gettemp() in mktemp.c
-
-# The template must contain X's that are to be replaced
-# with the random values
-
-# Arguments:
-
-# TEMPLATE - string containing the XXXXX's that is converted
-# to a random filename and opened if required
-
-# Optionally, a hash can also be supplied containing specific options
-# "open" => if true open the temp file, else just return the name
-# default is 0
-# "mkdir"=> if true, we are creating a temp directory rather than tempfile
-# default is 0
-# "suffixlen" => number of characters at end of PATH to be ignored.
-# default is 0.
-# "unlink_on_close" => indicates that, if possible, the OS should remove
-# the file as soon as it is closed. Usually indicates
-# use of the O_TEMPORARY flag to sysopen.
-# Usually irrelevant on unix
-
-# Optionally a reference to a scalar can be passed into the function
-# On error this will be used to store the reason for the error
-# "ErrStr" => \$errstr
-
-# "open" and "mkdir" can not both be true
-# "unlink_on_close" is not used when "mkdir" is true.
-
-# The default options are equivalent to mktemp().
-
-# Returns:
-# filehandle - open file handle (if called with doopen=1, else undef)
-# temp name - name of the temp file or directory
-
-# For example:
-# ($fh, $name) = _gettemp($template, "open" => 1);
-
-# for the current version, failures are associated with
-# stored in an error string and returned to give the reason whilst debugging
-# This routine is not called by any external function
-sub _gettemp {
-
- croak 'Usage: ($fh, $name) = _gettemp($template, OPTIONS);'
- unless scalar(@_) >= 1;
-
- # the internal error string - expect it to be overridden
- # Need this in case the caller decides not to supply us a value
- # need an anonymous scalar
- my $tempErrStr;
-
- # Default options
- my %options = (
- "open" => 0,
- "mkdir" => 0,
- "suffixlen" => 0,
- "unlink_on_close" => 0,
- "ErrStr" => \$tempErrStr,
- );
-
- # Read the template
- my $template = shift;
- if (ref($template)) {
- # Use a warning here since we have not yet merged ErrStr
- carp "File::Temp::_gettemp: template must not be a reference";
- return ();
- }
-
- # Check that the number of entries on stack are even
- if (scalar(@_) % 2 != 0) {
- # Use a warning here since we have not yet merged ErrStr
- carp "File::Temp::_gettemp: Must have even number of options";
- return ();
- }
-
- # Read the options and merge with defaults
- %options = (%options, @_) if @_;
-
- # Make sure the error string is set to undef
- ${$options{ErrStr}} = undef;
-
- # Can not open the file and make a directory in a single call
- if ($options{"open"} && $options{"mkdir"}) {
- ${$options{ErrStr}} = "doopen and domkdir can not both be true\n";
- return ();
- }
-
- # Find the start of the end of the Xs (position of last X)
- # Substr starts from 0
- my $start = length($template) - 1 - $options{"suffixlen"};
-
- # Check that we have at least MINX x X (eg 'XXXX") at the end of the string
- # (taking suffixlen into account). Any fewer is insecure.
-
- # Do it using substr - no reason to use a pattern match since
- # we know where we are looking and what we are looking for
-
- if (substr($template, $start - MINX + 1, MINX) ne 'X' x MINX) {
- ${$options{ErrStr}} = "The template must contain at least ".
- MINX . " 'X' characters\n";
- return ();
- }
-
- # Replace all the X at the end of the substring with a
- # random character or just all the XX at the end of a full string.
- # Do it as an if, since the suffix adjusts which section to replace
- # and suffixlen=0 returns nothing if used in the substr directly
- # and generate a full path from the template
-
- my $path = _replace_XX($template, $options{"suffixlen"});
-
-
- # Split the path into constituent parts - eventually we need to check
- # whether the directory exists
- # We need to know whether we are making a temp directory
- # or a tempfile
-
- my ($volume, $directories, $file);
- my $parent; # parent directory
- if ($options{"mkdir"}) {
- # There is no filename at the end
- ($volume, $directories, $file) = File::Spec->splitpath( $path, 1);
-
- # The parent is then $directories without the last directory
- # Split the directory and put it back together again
- my @dirs = File::Spec->splitdir($directories);
-
- # If @dirs only has one entry that means we are in the current
- # directory
- if ($#dirs == 0) {
- $parent = File::Spec->curdir;
- } else {
-
- if ($^O eq 'VMS') { # need volume to avoid relative dir spec
- $parent = File::Spec->catdir($volume, @dirs[0..$#dirs-1]);
- $parent = 'sys$disk:[]' if $parent eq '';
- } else {
-
- # Put it back together without the last one
- $parent = File::Spec->catdir(@dirs[0..$#dirs-1]);
-
- # ...and attach the volume (no filename)
- $parent = File::Spec->catpath($volume, $parent, '');
- }
-
- }
-
- } else {
-
- # Get rid of the last filename (use File::Basename for this?)
- ($volume, $directories, $file) = File::Spec->splitpath( $path );
-
- # Join up without the file part
- $parent = File::Spec->catpath($volume,$directories,'');
-
- # If $parent is empty replace with curdir
- $parent = File::Spec->curdir
- unless $directories ne '';
-
- }
-
- # Check that the parent directories exist
- # Do this even for the case where we are simply returning a name
- # not a file -- no point returning a name that includes a directory
- # that does not exist or is not writable
-
- unless (-d $parent) {
- ${$options{ErrStr}} = "Parent directory ($parent) is not a directory";
- return ();
- }
- unless (-w _) {
- ${$options{ErrStr}} = "Parent directory ($parent) is not writable\n";
- return ();
- }
-
-
- # Check the stickiness of the directory and chown giveaway if required
- # If the directory is world writable the sticky bit
- # must be set
-
- if (File::Temp->safe_level == MEDIUM) {
- my $safeerr;
- unless (_is_safe($parent,\$safeerr)) {
- ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)";
- return ();
- }
- } elsif (File::Temp->safe_level == HIGH) {
- my $safeerr;
- unless (_is_verysafe($parent, \$safeerr)) {
- ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)";
- return ();
- }
- }
-
-
- # Now try MAX_TRIES time to open the file
- for (my $i = 0; $i < MAX_TRIES; $i++) {
-
- # Try to open the file if requested
- if ($options{"open"}) {
- my $fh;
-
- # If we are running before perl5.6.0 we can not auto-vivify
- if ($] < 5.006) {
- $fh = &Symbol::gensym;
- }
-
- # Try to make sure this will be marked close-on-exec
- # XXX: Win32 doesn't respect this, nor the proper fcntl,
- # but may have O_NOINHERIT. This may or may not be in Fcntl.
- local $^F = 2;
-
- # Store callers umask
- my $umask = umask();
-
- # Set a known umask
- umask(066);
-
- # Attempt to open the file
- my $open_success = undef;
- if ( $^O eq 'VMS' and $options{"unlink_on_close"} ) {
- # make it auto delete on close by setting FAB$V_DLT bit
- $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, 0600, 'fop=dlt');
- $open_success = $fh;
- } else {
- my $flags = ( $options{"unlink_on_close"} ?
- $OPENTEMPFLAGS :
- $OPENFLAGS );
- $open_success = sysopen($fh, $path, $flags, 0600);
- }
- if ( $open_success ) {
-
- # Reset umask
- umask($umask);
-
- # Opened successfully - return file handle and name
- return ($fh, $path);
-
- } else {
- # Reset umask
- umask($umask);
-
- # Error opening file - abort with error
- # if the reason was anything but EEXIST
- unless ($!{EEXIST}) {
- ${$options{ErrStr}} = "Could not create temp file $path: $!";
- return ();
- }
-
- # Loop round for another try
-
- }
- } elsif ($options{"mkdir"}) {
-
- # Store callers umask
- my $umask = umask();
-
- # Set a known umask
- umask(066);
-
- # Open the temp directory
- if (mkdir( $path, 0700)) {
- # created okay
- # Reset umask
- umask($umask);
-
- return undef, $path;
- } else {
-
- # Reset umask
- umask($umask);
-
- # Abort with error if the reason for failure was anything
- # except EEXIST
- unless ($!{EEXIST}) {
- ${$options{ErrStr}} = "Could not create directory $path: $!";
- return ();
- }
-
- # Loop round for another try
-
- }
-
- } else {
-
- # Return true if the file can not be found
- # Directory has been checked previously
-
- return (undef, $path) unless -e $path;
-
- # Try again until MAX_TRIES
-
- }
-
- # Did not successfully open the tempfile/dir
- # so try again with a different set of random letters
- # No point in trying to increment unless we have only
- # 1 X say and the randomness could come up with the same
- # file MAX_TRIES in a row.
-
- # Store current attempt - in principal this implies that the
- # 3rd time around the open attempt that the first temp file
- # name could be generated again. Probably should store each
- # attempt and make sure that none are repeated
-
- my $original = $path;
- my $counter = 0; # Stop infinite loop
- my $MAX_GUESS = 50;
-
- do {
-
- # Generate new name from original template
- $path = _replace_XX($template, $options{"suffixlen"});
-
- $counter++;
-
- } until ($path ne $original || $counter > $MAX_GUESS);
-
- # Check for out of control looping
- if ($counter > $MAX_GUESS) {
- ${$options{ErrStr}} = "Tried to get a new temp name different to the previous value $MAX_GUESS times.\nSomething wrong with template?? ($template)";
- return ();
- }
-
- }
-
- # If we get here, we have run out of tries
- ${ $options{ErrStr} } = "Have exceeded the maximum number of attempts ("
- . MAX_TRIES . ") to open temp file/dir";
-
- return ();
-
-}
-
-# Internal routine to return a random character from the
-# character list. Does not do an srand() since rand()
-# will do one automatically
-
-# No arguments. Return value is the random character
-
-# No longer called since _replace_XX runs a few percent faster if
-# I inline the code. This is important if we are creating thousands of
-# temporary files.
-
-sub _randchar {
-
- $CHARS[ int( rand( $#CHARS ) ) ];
-
-}
-
-# Internal routine to replace the XXXX... with random characters
-# This has to be done by _gettemp() every time it fails to
-# open a temp file/dir
-
-# Arguments: $template (the template with XXX),
-# $ignore (number of characters at end to ignore)
-
-# Returns: modified template
-
-sub _replace_XX {
-
- croak 'Usage: _replace_XX($template, $ignore)'
- unless scalar(@_) == 2;
-
- my ($path, $ignore) = @_;
-
- # Do it as an if, since the suffix adjusts which section to replace
- # and suffixlen=0 returns nothing if used in the substr directly
- # Alternatively, could simply set $ignore to length($path)-1
- # Don't want to always use substr when not required though.
-
- if ($ignore) {
- substr($path, 0, - $ignore) =~ s/X(?=X*\z)/$CHARS[ int( rand( $#CHARS ) ) ]/ge;
- } else {
- $path =~ s/X(?=X*\z)/$CHARS[ int( rand( $#CHARS ) ) ]/ge;
- }
-
- return $path;
-}
-
-# internal routine to check to see if the directory is safe
-# First checks to see if the directory is not owned by the
-# current user or root. Then checks to see if anyone else
-# can write to the directory and if so, checks to see if
-# it has the sticky bit set
-
-# Will not work on systems that do not support sticky bit
-
-#Args: directory path to check
-# Optionally: reference to scalar to contain error message
-# Returns true if the path is safe and false otherwise.
-# Returns undef if can not even run stat() on the path
-
-# This routine based on version written by Tom Christiansen
-
-# Presumably, by the time we actually attempt to create the
-# file or directory in this directory, it may not be safe
-# anymore... Have to run _is_safe directly after the open.
-
-sub _is_safe {
-
- my $path = shift;
- my $err_ref = shift;
-
- # Stat path
- my @info = stat($path);
- unless (scalar(@info)) {
- $$err_ref = "stat(path) returned no values";
- return 0;
- };
- return 1 if $^O eq 'VMS'; # owner delete control at file level
-
- # Check to see whether owner is neither superuser (or a system uid) nor me
- # Use the real uid from the $< variable
- # UID is in [4]
- if ($info[4] > File::Temp->top_system_uid() && $info[4] != $<) {
-
- Carp::cluck(sprintf "uid=$info[4] topuid=%s \$<=$< path='$path'",
- File::Temp->top_system_uid());
-
- $$err_ref = "Directory owned neither by root nor the current user"
- if ref($err_ref);
- return 0;
- }
-
- # check whether group or other can write file
- # use 066 to detect either reading or writing
- # use 022 to check writability
- # Do it with S_IWOTH and S_IWGRP for portability (maybe)
- # mode is in info[2]
- if (($info[2] & &Fcntl::S_IWGRP) || # Is group writable?
- ($info[2] & &Fcntl::S_IWOTH) ) { # Is world writable?
- # Must be a directory
- unless (-d _) {
- $$err_ref = "Path ($path) is not a directory"
- if ref($err_ref);
- return 0;
- }
- # Must have sticky bit set
- unless (-k _) {
- $$err_ref = "Sticky bit not set on $path when dir is group|world writable"
- if ref($err_ref);
- return 0;
- }
- }
-
- return 1;
-}
-
-# Internal routine to check whether a directory is safe
-# for temp files. Safer than _is_safe since it checks for
-# the possibility of chown giveaway and if that is a possibility
-# checks each directory in the path to see if it is safe (with _is_safe)
-
-# If _PC_CHOWN_RESTRICTED is not set, does the full test of each
-# directory anyway.
-
-# Takes optional second arg as scalar ref to error reason
-
-sub _is_verysafe {
-
- # Need POSIX - but only want to bother if really necessary due to overhead
- require POSIX;
-
- my $path = shift;
- print "_is_verysafe testing $path\n" if $DEBUG;
- return 1 if $^O eq 'VMS'; # owner delete control at file level
-
- my $err_ref = shift;
-
- # Should Get the value of _PC_CHOWN_RESTRICTED if it is defined
- # and If it is not there do the extensive test
- my $chown_restricted;
- $chown_restricted = &POSIX::_PC_CHOWN_RESTRICTED()
- if eval { &POSIX::_PC_CHOWN_RESTRICTED(); 1};
-
- # If chown_resticted is set to some value we should test it
- if (defined $chown_restricted) {
-
- # Return if the current directory is safe
- return _is_safe($path,$err_ref) if POSIX::sysconf( $chown_restricted );
-
- }
-
- # To reach this point either, the _PC_CHOWN_RESTRICTED symbol
- # was not avialable or the symbol was there but chown giveaway
- # is allowed. Either way, we now have to test the entire tree for
- # safety.
-
- # Convert path to an absolute directory if required
- unless (File::Spec->file_name_is_absolute($path)) {
- $path = File::Spec->rel2abs($path);
- }
-
- # Split directory into components - assume no file
- my ($volume, $directories, undef) = File::Spec->splitpath( $path, 1);
-
- # Slightly less efficient than having a a function in File::Spec
- # to chop off the end of a directory or even a function that
- # can handle ../ in a directory tree
- # Sometimes splitdir() returns a blank at the end
- # so we will probably check the bottom directory twice in some cases
- my @dirs = File::Spec->splitdir($directories);
-
- # Concatenate one less directory each time around
- foreach my $pos (0.. $#dirs) {
- # Get a directory name
- my $dir = File::Spec->catpath($volume,
- File::Spec->catdir(@dirs[0.. $#dirs - $pos]),
- ''
- );
-
- print "TESTING DIR $dir\n" if $DEBUG;
-
- # Check the directory
- return 0 unless _is_safe($dir,$err_ref);
-
- }
-
- return 1;
-}
-
-
-
-# internal routine to determine whether unlink works on this
-# platform for files that are currently open.
-# Returns true if we can, false otherwise.
-
-# Currently WinNT, OS/2 and VMS can not unlink an opened file
-# On VMS this is because the O_EXCL flag is used to open the
-# temporary file. Currently I do not know enough about the issues
-# on VMS to decide whether O_EXCL is a requirement.
-
-sub _can_unlink_opened_file {
-
- if ($^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'VMS' || $^O eq 'dos') {
- return 0;
- } else {
- return 1;
- }
-
-}
-
-# internal routine to decide which security levels are allowed
-# see safe_level() for more information on this
-
-# Controls whether the supplied security level is allowed
-
-# $cando = _can_do_level( $level )
-
-sub _can_do_level {
-
- # Get security level
- my $level = shift;
-
- # Always have to be able to do STANDARD
- return 1 if $level == STANDARD;
-
- # Currently, the systems that can do HIGH or MEDIUM are identical
- if ( $^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'cygwin' || $^O eq 'dos') {
- return 0;
- } else {
- return 1;
- }
-
-}
-
-# This routine sets up a deferred unlinking of a specified
-# filename and filehandle. It is used in the following cases:
-# - Called by unlink0 if an opened file can not be unlinked
-# - Called by tempfile() if files are to be removed on shutdown
-# - Called by tempdir() if directories are to be removed on shutdown
-
-# Arguments:
-# _deferred_unlink( $fh, $fname, $isdir );
-#
-# - filehandle (so that it can be expclicitly closed if open
-# - filename (the thing we want to remove)
-# - isdir (flag to indicate that we are being given a directory)
-# [and hence no filehandle]
-
-# Status is not referred to since all the magic is done with an END block
-
-{
- # Will set up two lexical variables to contain all the files to be
- # removed. One array for files, another for directories
- # They will only exist in this block
- # This means we only have to set up a single END block to remove all files
- # @files_to_unlink contains an array ref with the filehandle and filename
- my (@files_to_unlink, @dirs_to_unlink);
-
- # Set up an end block to use these arrays
- END {
- # Files
- foreach my $file (@files_to_unlink) {
- # close the filehandle without checking its state
- # in order to make real sure that this is closed
- # if its already closed then I dont care about the answer
- # probably a better way to do this
- close($file->[0]); # file handle is [0]
-
- if (-f $file->[1]) { # file name is [1]
- unlink $file->[1] or warn "Error removing ".$file->[1];
- }
- }
- # Dirs
- foreach my $dir (@dirs_to_unlink) {
- if (-d $dir) {
- rmtree($dir, $DEBUG, 1);
- }
- }
-
- }
-
- # This is the sub called to register a file for deferred unlinking
- # This could simply store the input parameters and defer everything
- # until the END block. For now we do a bit of checking at this
- # point in order to make sure that (1) we have a file/dir to delete
- # and (2) we have been called with the correct arguments.
- sub _deferred_unlink {
-
- croak 'Usage: _deferred_unlink($fh, $fname, $isdir)'
- unless scalar(@_) == 3;
-
- my ($fh, $fname, $isdir) = @_;
-
- warn "Setting up deferred removal of $fname\n"
- if $DEBUG;
-
- # If we have a directory, check that it is a directory
- if ($isdir) {
-
- if (-d $fname) {
-
- # Directory exists so store it
- # first on VMS turn []foo into [.foo] for rmtree
- $fname = VMS::Filespec::vmspath($fname) if $^O eq 'VMS';
- push (@dirs_to_unlink, $fname);
-
- } else {
- carp "Request to remove directory $fname could not be completed since it does not exist!\n" if $^W;
- }
-
- } else {
-
- if (-f $fname) {
-
- # file exists so store handle and name for later removal
- push(@files_to_unlink, [$fh, $fname]);
-
- } else {
- carp "Request to remove file $fname could not be completed since it is not there!\n" if $^W;
- }
-
- }
-
- }
-
-
-}
-
-=head1 FUNCTIONS
-
-This section describes the recommended interface for generating
-temporary files and directories.
-
-=over 4
-
-=item B<tempfile>
-
-This is the basic function to generate temporary files.
-The behaviour of the file can be changed using various options:
-
- ($fh, $filename) = tempfile();
-
-Create a temporary file in the directory specified for temporary
-files, as specified by the tmpdir() function in L<File::Spec>.
-
- ($fh, $filename) = tempfile($template);
-
-Create a temporary file in the current directory using the supplied
-template. Trailing `X' characters are replaced with random letters to
-generate the filename. At least four `X' characters must be present
-in the template.
-
- ($fh, $filename) = tempfile($template, SUFFIX => $suffix)
-
-Same as previously, except that a suffix is added to the template
-after the `X' translation. Useful for ensuring that a temporary
-filename has a particular extension when needed by other applications.
-But see the WARNING at the end.
-
- ($fh, $filename) = tempfile($template, DIR => $dir);
-
-Translates the template as before except that a directory name
-is specified.
-
- ($fh, $filename) = tempfile($template, UNLINK => 1);
-
-Return the filename and filehandle as before except that the file is
-automatically removed when the program exits. Default is for the file
-to be removed if a file handle is requested and to be kept if the
-filename is requested. In a scalar context (where no filename is
-returned) the file is always deleted either on exit or when it is closed.
-
-If the template is not specified, a template is always
-automatically generated. This temporary file is placed in tmpdir()
-(L<File::Spec>) unless a directory is specified explicitly with the
-DIR option.
-
- $fh = tempfile( $template, DIR => $dir );
-
-If called in scalar context, only the filehandle is returned
-and the file will automatically be deleted when closed (see
-the description of tmpfile() elsewhere in this document).
-This is the preferred mode of operation, as if you only
-have a filehandle, you can never create a race condition
-by fumbling with the filename. On systems that can not unlink
-an open file or can not mark a file as temporary when it is opened
-(for example, Windows NT uses the C<O_TEMPORARY> flag))
-the file is marked for deletion when the program ends (equivalent
-to setting UNLINK to 1). The C<UNLINK> flag is ignored if present.
-
- (undef, $filename) = tempfile($template, OPEN => 0);
-
-This will return the filename based on the template but
-will not open this file. Cannot be used in conjunction with
-UNLINK set to true. Default is to always open the file
-to protect from possible race conditions. A warning is issued
-if warnings are turned on. Consider using the tmpnam()
-and mktemp() functions described elsewhere in this document
-if opening the file is not required.
-
-Options can be combined as required.
-
-=cut
-
-sub tempfile {
-
- # Can not check for argument count since we can have any
- # number of args
-
- # Default options
- my %options = (
- "DIR" => undef, # Directory prefix
- "SUFFIX" => '', # Template suffix
- "UNLINK" => 0, # Do not unlink file on exit
- "OPEN" => 1, # Open file
- );
-
- # Check to see whether we have an odd or even number of arguments
- my $template = (scalar(@_) % 2 == 1 ? shift(@_) : undef);
-
- # Read the options and merge with defaults
- %options = (%options, @_) if @_;
-
- # First decision is whether or not to open the file
- if (! $options{"OPEN"}) {
-
- warn "tempfile(): temporary filename requested but not opened.\nPossibly unsafe, consider using tempfile() with OPEN set to true\n"
- if $^W;
-
- }
-
- if ($options{"DIR"} and $^O eq 'VMS') {
-
- # on VMS turn []foo into [.foo] for concatenation
- $options{"DIR"} = VMS::Filespec::vmspath($options{"DIR"});
- }
-
- # Construct the template
-
- # Have a choice of trying to work around the mkstemp/mktemp/tmpnam etc
- # functions or simply constructing a template and using _gettemp()
- # explicitly. Go for the latter
-
- # First generate a template if not defined and prefix the directory
- # If no template must prefix the temp directory
- if (defined $template) {
- if ($options{"DIR"}) {
-
- $template = File::Spec->catfile($options{"DIR"}, $template);
-
- }
-
- } else {
-
- if ($options{"DIR"}) {
-
- $template = File::Spec->catfile($options{"DIR"}, TEMPXXX);
-
- } else {
-
- $template = File::Spec->catfile(File::Spec->tmpdir, TEMPXXX);
-
- }
-
- }
-
- # Now add a suffix
- $template .= $options{"SUFFIX"};
-
- # Determine whether we should tell _gettemp to unlink the file
- # On unix this is irrelevant and can be worked out after the file is
- # opened (simply by unlinking the open filehandle). On Windows or VMS
- # we have to indicate temporary-ness when we open the file. In general
- # we only want a true temporary file if we are returning just the
- # filehandle - if the user wants the filename they probably do not
- # want the file to disappear as soon as they close it.
- # For this reason, tie unlink_on_close to the return context regardless
- # of OS.
- my $unlink_on_close = ( wantarray ? 0 : 1);
-
- # Create the file
- my ($fh, $path, $errstr);
- croak "Error in tempfile() using $template: $errstr"
- unless (($fh, $path) = _gettemp($template,
- "open" => $options{'OPEN'},
- "mkdir"=> 0 ,
- "unlink_on_close" => $unlink_on_close,
- "suffixlen" => length($options{'SUFFIX'}),
- "ErrStr" => \$errstr,
- ) );
-
- # Set up an exit handler that can do whatever is right for the
- # system. This removes files at exit when requested explicitly or when
- # system is asked to unlink_on_close but is unable to do so because
- # of OS limitations.
- # The latter should be achieved by using a tied filehandle.
- # Do not check return status since this is all done with END blocks.
- _deferred_unlink($fh, $path, 0) if $options{"UNLINK"};
-
- # Return
- if (wantarray()) {
-
- if ($options{'OPEN'}) {
- return ($fh, $path);
- } else {
- return (undef, $path);
- }
-
- } else {
-
- # Unlink the file. It is up to unlink0 to decide what to do with
- # this (whether to unlink now or to defer until later)
- unlink0($fh, $path) or croak "Error unlinking file $path using unlink0";
-
- # Return just the filehandle.
- return $fh;
- }
-
-
-}
-
-=item B<tempdir>
-
-This is the recommended interface for creation of temporary directories.
-The behaviour of the function depends on the arguments:
-
- $tempdir = tempdir();
-
-Create a directory in tmpdir() (see L<File::Spec|File::Spec>).
-
- $tempdir = tempdir( $template );
-
-Create a directory from the supplied template. This template is
-similar to that described for tempfile(). `X' characters at the end
-of the template are replaced with random letters to construct the
-directory name. At least four `X' characters must be in the template.
-
- $tempdir = tempdir ( DIR => $dir );
-
-Specifies the directory to use for the temporary directory.
-The temporary directory name is derived from an internal template.
-
- $tempdir = tempdir ( $template, DIR => $dir );
-
-Prepend the supplied directory name to the template. The template
-should not include parent directory specifications itself. Any parent
-directory specifications are removed from the template before
-prepending the supplied directory.
-
- $tempdir = tempdir ( $template, TMPDIR => 1 );
-
-Using the supplied template, creat the temporary directory in
-a standard location for temporary files. Equivalent to doing
-
- $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir);
-
-but shorter. Parent directory specifications are stripped from the
-template itself. The C<TMPDIR> option is ignored if C<DIR> is set
-explicitly. Additionally, C<TMPDIR> is implied if neither a template
-nor a directory are supplied.
-
- $tempdir = tempdir( $template, CLEANUP => 1);
-
-Create a temporary directory using the supplied template, but
-attempt to remove it (and all files inside it) when the program
-exits. Note that an attempt will be made to remove all files from
-the directory even if they were not created by this module (otherwise
-why ask to clean it up?). The directory removal is made with
-the rmtree() function from the L<File::Path|File::Path> module.
-Of course, if the template is not specified, the temporary directory
-will be created in tmpdir() and will also be removed at program exit.
-
-=cut
-
-# '
-
-sub tempdir {
-
- # Can not check for argument count since we can have any
- # number of args
-
- # Default options
- my %options = (
- "CLEANUP" => 0, # Remove directory on exit
- "DIR" => '', # Root directory
- "TMPDIR" => 0, # Use tempdir with template
- );
-
- # Check to see whether we have an odd or even number of arguments
- my $template = (scalar(@_) % 2 == 1 ? shift(@_) : undef );
-
- # Read the options and merge with defaults
- %options = (%options, @_) if @_;
-
- # Modify or generate the template
-
- # Deal with the DIR and TMPDIR options
- if (defined $template) {
-
- # Need to strip directory path if using DIR or TMPDIR
- if ($options{'TMPDIR'} || $options{'DIR'}) {
-
- # Strip parent directory from the filename
- #
- # There is no filename at the end
- $template = VMS::Filespec::vmspath($template) if $^O eq 'VMS';
- my ($volume, $directories, undef) = File::Spec->splitpath( $template, 1);
-
- # Last directory is then our template
- $template = (File::Spec->splitdir($directories))[-1];
-
- # Prepend the supplied directory or temp dir
- if ($options{"DIR"}) {
-
- $template = File::Spec->catdir($options{"DIR"}, $template);
-
- } elsif ($options{TMPDIR}) {
-
- # Prepend tmpdir
- $template = File::Spec->catdir(File::Spec->tmpdir, $template);
-
- }
-
- }
-
- } else {
-
- if ($options{"DIR"}) {
-
- $template = File::Spec->catdir($options{"DIR"}, TEMPXXX);
-
- } else {
-
- $template = File::Spec->catdir(File::Spec->tmpdir, TEMPXXX);
-
- }
-
- }
-
- # Create the directory
- my $tempdir;
- my $suffixlen = 0;
- if ($^O eq 'VMS') { # dir names can end in delimiters
- $template =~ m/([\.\]:>]+)$/;
- $suffixlen = length($1);
- }
-
- my $errstr;
- croak "Error in tempdir() using $template: $errstr"
- unless ((undef, $tempdir) = _gettemp($template,
- "open" => 0,
- "mkdir"=> 1 ,
- "suffixlen" => $suffixlen,
- "ErrStr" => \$errstr,
- ) );
-
- # Install exit handler; must be dynamic to get lexical
- if ( $options{'CLEANUP'} && -d $tempdir) {
- _deferred_unlink(undef, $tempdir, 1);
- }
-
- # Return the dir name
- return $tempdir;
-
-}
-
-=back
-
-=head1 MKTEMP FUNCTIONS
-
-The following functions are Perl implementations of the
-mktemp() family of temp file generation system calls.
-
-=over 4
-
-=item B<mkstemp>
-
-Given a template, returns a filehandle to the temporary file and the name
-of the file.
-
- ($fh, $name) = mkstemp( $template );
-
-In scalar context, just the filehandle is returned.
-
-The template may be any filename with some number of X's appended
-to it, for example F</tmp/temp.XXXX>. The trailing X's are replaced
-with unique alphanumeric combinations.
-
-=cut
-
-
-
-sub mkstemp {
-
- croak "Usage: mkstemp(template)"
- if scalar(@_) != 1;
-
- my $template = shift;
-
- my ($fh, $path, $errstr);
- croak "Error in mkstemp using $template: $errstr"
- unless (($fh, $path) = _gettemp($template,
- "open" => 1,
- "mkdir"=> 0 ,
- "suffixlen" => 0,
- "ErrStr" => \$errstr,
- ) );
-
- if (wantarray()) {
- return ($fh, $path);
- } else {
- return $fh;
- }
-
-}
-
-
-=item B<mkstemps>
-
-Similar to mkstemp(), except that an extra argument can be supplied
-with a suffix to be appended to the template.
-
- ($fh, $name) = mkstemps( $template, $suffix );
-
-For example a template of C<testXXXXXX> and suffix of C<.dat>
-would generate a file similar to F<testhGji_w.dat>.
-
-Returns just the filehandle alone when called in scalar context.
-
-=cut
-
-sub mkstemps {
-
- croak "Usage: mkstemps(template, suffix)"
- if scalar(@_) != 2;
-
-
- my $template = shift;
- my $suffix = shift;
-
- $template .= $suffix;
-
- my ($fh, $path, $errstr);
- croak "Error in mkstemps using $template: $errstr"
- unless (($fh, $path) = _gettemp($template,
- "open" => 1,
- "mkdir"=> 0 ,
- "suffixlen" => length($suffix),
- "ErrStr" => \$errstr,
- ) );
-
- if (wantarray()) {
- return ($fh, $path);
- } else {
- return $fh;
- }
-
-}
-
-=item B<mkdtemp>
-
-Create a directory from a template. The template must end in
-X's that are replaced by the routine.
-
- $tmpdir_name = mkdtemp($template);
-
-Returns the name of the temporary directory created.
-Returns undef on failure.
-
-Directory must be removed by the caller.
-
-=cut
-
-#' # for emacs
-
-sub mkdtemp {
-
- croak "Usage: mkdtemp(template)"
- if scalar(@_) != 1;
-
- my $template = shift;
- my $suffixlen = 0;
- if ($^O eq 'VMS') { # dir names can end in delimiters
- $template =~ m/([\.\]:>]+)$/;
- $suffixlen = length($1);
- }
- my ($junk, $tmpdir, $errstr);
- croak "Error creating temp directory from template $template\: $errstr"
- unless (($junk, $tmpdir) = _gettemp($template,
- "open" => 0,
- "mkdir"=> 1 ,
- "suffixlen" => $suffixlen,
- "ErrStr" => \$errstr,
- ) );
-
- return $tmpdir;
-
-}
-
-=item B<mktemp>
-
-Returns a valid temporary filename but does not guarantee
-that the file will not be opened by someone else.
-
- $unopened_file = mktemp($template);
-
-Template is the same as that required by mkstemp().
-
-=cut
-
-sub mktemp {
-
- croak "Usage: mktemp(template)"
- if scalar(@_) != 1;
-
- my $template = shift;
-
- my ($tmpname, $junk, $errstr);
- croak "Error getting name to temp file from template $template: $errstr"
- unless (($junk, $tmpname) = _gettemp($template,
- "open" => 0,
- "mkdir"=> 0 ,
- "suffixlen" => 0,
- "ErrStr" => \$errstr,
- ) );
-
- return $tmpname;
-}
-
-=back
-
-=head1 POSIX FUNCTIONS
-
-This section describes the re-implementation of the tmpnam()
-and tmpfile() functions described in L<POSIX>
-using the mkstemp() from this module.
-
-Unlike the L<POSIX|POSIX> implementations, the directory used
-for the temporary file is not specified in a system include
-file (C<P_tmpdir>) but simply depends on the choice of tmpdir()
-returned by L<File::Spec|File::Spec>. On some implementations this
-location can be set using the C<TMPDIR> environment variable, which
-may not be secure.
-If this is a problem, simply use mkstemp() and specify a template.
-
-=over 4
-
-=item B<tmpnam>
-
-When called in scalar context, returns the full name (including path)
-of a temporary file (uses mktemp()). The only check is that the file does
-not already exist, but there is no guarantee that that condition will
-continue to apply.
-
- $file = tmpnam();
-
-When called in list context, a filehandle to the open file and
-a filename are returned. This is achieved by calling mkstemp()
-after constructing a suitable template.
-
- ($fh, $file) = tmpnam();
-
-If possible, this form should be used to prevent possible
-race conditions.
-
-See L<File::Spec/tmpdir> for information on the choice of temporary
-directory for a particular operating system.
-
-=cut
-
-sub tmpnam {
-
- # Retrieve the temporary directory name
- my $tmpdir = File::Spec->tmpdir;
-
- croak "Error temporary directory is not writable"
- if $tmpdir eq '';
-
- # Use a ten character template and append to tmpdir
- my $template = File::Spec->catfile($tmpdir, TEMPXXX);
-
- if (wantarray() ) {
- return mkstemp($template);
- } else {
- return mktemp($template);
- }
-
-}
-
-=item B<tmpfile>
-
-In scalar context, returns the filehandle of a temporary file.
-
- $fh = tmpfile();
-
-The file is removed when the filehandle is closed or when the program
-exits. No access to the filename is provided.
-
-If the temporary file can not be created undef is returned.
-Currently this command will probably not work when the temporary
-directory is on an NFS file system.
-
-=cut
-
-sub tmpfile {
-
- # Simply call tmpnam() in a list context
- my ($fh, $file) = tmpnam();
-
- # Make sure file is removed when filehandle is closed
- # This will fail on NFS
- unlink0($fh, $file)
- or return undef;
-
- return $fh;
-
-}
-
-=back
-
-=head1 ADDITIONAL FUNCTIONS
-
-These functions are provided for backwards compatibility
-with common tempfile generation C library functions.
-
-They are not exported and must be addressed using the full package
-name.
-
-=over 4
-
-=item B<tempnam>
-
-Return the name of a temporary file in the specified directory
-using a prefix. The file is guaranteed not to exist at the time
-the function was called, but such guarantees are good for one
-clock tick only. Always use the proper form of C<sysopen>
-with C<O_CREAT | O_EXCL> if you must open such a filename.
-
- $filename = File::Temp::tempnam( $dir, $prefix );
-
-Equivalent to running mktemp() with $dir/$prefixXXXXXXXX
-(using unix file convention as an example)
-
-Because this function uses mktemp(), it can suffer from race conditions.
-
-=cut
-
-sub tempnam {
-
- croak 'Usage tempnam($dir, $prefix)' unless scalar(@_) == 2;
-
- my ($dir, $prefix) = @_;
-
- # Add a string to the prefix
- $prefix .= 'XXXXXXXX';
-
- # Concatenate the directory to the file
- my $template = File::Spec->catfile($dir, $prefix);
-
- return mktemp($template);
-
-}
-
-=back
-
-=head1 UTILITY FUNCTIONS
-
-Useful functions for dealing with the filehandle and filename.
-
-=over 4
-
-=item B<unlink0>
-
-Given an open filehandle and the associated filename, make a safe
-unlink. This is achieved by first checking that the filename and
-filehandle initially point to the same file and that the number of
-links to the file is 1 (all fields returned by stat() are compared).
-Then the filename is unlinked and the filehandle checked once again to
-verify that the number of links on that file is now 0. This is the
-closest you can come to making sure that the filename unlinked was the
-same as the file whose descriptor you hold.
-
- unlink0($fh, $path) or die "Error unlinking file $path safely";
-
-Returns false on error. The filehandle is not closed since on some
-occasions this is not required.
-
-On some platforms, for example Windows NT, it is not possible to
-unlink an open file (the file must be closed first). On those
-platforms, the actual unlinking is deferred until the program ends and
-good status is returned. A check is still performed to make sure that
-the filehandle and filename are pointing to the same thing (but not at
-the time the end block is executed since the deferred removal may not
-have access to the filehandle).
-
-Additionally, on Windows NT not all the fields returned by stat() can
-be compared. For example, the C<dev> and C<rdev> fields seem to be
-different. Also, it seems that the size of the file returned by stat()
-does not always agree, with C<stat(FH)> being more accurate than
-C<stat(filename)>, presumably because of caching issues even when
-using autoflush (this is usually overcome by waiting a while after
-writing to the tempfile before attempting to C<unlink0> it).
-
-Finally, on NFS file systems the link count of the file handle does
-not always go to zero immediately after unlinking. Currently, this
-command is expected to fail on NFS disks.
-
-=cut
-
-sub unlink0 {
-
- croak 'Usage: unlink0(filehandle, filename)'
- unless scalar(@_) == 2;
-
- # Read args
- my ($fh, $path) = @_;
-
- warn "Unlinking $path using unlink0\n"
- if $DEBUG;
-
- # Stat the filehandle
- my @fh = stat $fh;
-
- if ($fh[3] > 1 && $^W) {
- carp "unlink0: fstat found too many links; SB=@fh" if $^W;
- }
-
- # Stat the path
- my @path = stat $path;
-
- unless (@path) {
- carp "unlink0: $path is gone already" if $^W;
- return;
- }
-
- # this is no longer a file, but may be a directory, or worse
- unless (-f _) {
- confess "panic: $path is no longer a file: SB=@fh";
- }
-
- # Do comparison of each member of the array
- # On WinNT dev and rdev seem to be different
- # depending on whether it is a file or a handle.
- # Cannot simply compare all members of the stat return
- # Select the ones we can use
- my @okstat = (0..$#fh); # Use all by default
- if ($^O eq 'MSWin32') {
- @okstat = (1,2,3,4,5,7,8,9,10);
- } elsif ($^O eq 'os2') {
- @okstat = (0, 2..$#fh);
- } elsif ($^O eq 'VMS') { # device and file ID are sufficient
- @okstat = (0, 1);
- } elsif ($^O eq 'dos') {
- @okstat = (0,2..7,11..$#fh);
- }
-
- # Now compare each entry explicitly by number
- for (@okstat) {
- print "Comparing: $_ : $fh[$_] and $path[$_]\n" if $DEBUG;
- # Use eq rather than == since rdev, blksize, and blocks (6, 11,
- # and 12) will be '' on platforms that do not support them. This
- # is fine since we are only comparing integers.
- unless ($fh[$_] eq $path[$_]) {
- warn "Did not match $_ element of stat\n" if $DEBUG;
- return 0;
- }
- }
-
- # attempt remove the file (does not work on some platforms)
- if (_can_unlink_opened_file()) {
- # XXX: do *not* call this on a directory; possible race
- # resulting in recursive removal
- croak "unlink0: $path has become a directory!" if -d $path;
- unlink($path) or return 0;
-
- # Stat the filehandle
- @fh = stat $fh;
-
- print "Link count = $fh[3] \n" if $DEBUG;
-
- # Make sure that the link count is zero
- # - Cygwin provides deferred unlinking, however,
- # on Win9x the link count remains 1
- # On NFS the link count may still be 1 but we cant know that
- # we are on NFS
- return ( $fh[3] == 0 or $^O eq 'cygwin' ? 1 : 0);
-
- } else {
- _deferred_unlink($fh, $path, 0);
- return 1;
- }
-
-}
-
-=back
-
-=head1 PACKAGE VARIABLES
-
-These functions control the global state of the package.
-
-=over 4
-
-=item B<safe_level>
-
-Controls the lengths to which the module will go to check the safety of the
-temporary file or directory before proceeding.
-Options are:
-
-=over 8
-
-=item STANDARD
-
-Do the basic security measures to ensure the directory exists and
-is writable, that the umask() is fixed before opening of the file,
-that temporary files are opened only if they do not already exist, and
-that possible race conditions are avoided. Finally the L<unlink0|"unlink0">
-function is used to remove files safely.
-
-=item MEDIUM
-
-In addition to the STANDARD security, the output directory is checked
-to make sure that it is owned either by root or the user running the
-program. If the directory is writable by group or by other, it is then
-checked to make sure that the sticky bit is set.
-
-Will not work on platforms that do not support the C<-k> test
-for sticky bit.
-
-=item HIGH
-
-In addition to the MEDIUM security checks, also check for the
-possibility of ``chown() giveaway'' using the L<POSIX|POSIX>
-sysconf() function. If this is a possibility, each directory in the
-path is checked in turn for safeness, recursively walking back to the
-root directory.
-
-For platforms that do not support the L<POSIX|POSIX>
-C<_PC_CHOWN_RESTRICTED> symbol (for example, Windows NT) it is
-assumed that ``chown() giveaway'' is possible and the recursive test
-is performed.
-
-=back
-
-The level can be changed as follows:
-
- File::Temp->safe_level( File::Temp::HIGH );
-
-The level constants are not exported by the module.
-
-Currently, you must be running at least perl v5.6.0 in order to
-run with MEDIUM or HIGH security. This is simply because the
-safety tests use functions from L<Fcntl|Fcntl> that are not
-available in older versions of perl. The problem is that the version
-number for Fcntl is the same in perl 5.6.0 and in 5.005_03 even though
-they are different versions.
-
-On systems that do not support the HIGH or MEDIUM safety levels
-(for example Win NT or OS/2) any attempt to change the level will
-be ignored. The decision to ignore rather than raise an exception
-allows portable programs to be written with high security in mind
-for the systems that can support this without those programs failing
-on systems where the extra tests are irrelevant.
-
-If you really need to see whether the change has been accepted
-simply examine the return value of C<safe_level>.
-
- $newlevel = File::Temp->safe_level( File::Temp::HIGH );
- die "Could not change to high security"
- if $newlevel != File::Temp::HIGH;
-
-=cut
-
-{
- # protect from using the variable itself
- my $LEVEL = STANDARD;
- sub safe_level {
- my $self = shift;
- if (@_) {
- my $level = shift;
- if (($level != STANDARD) && ($level != MEDIUM) && ($level != HIGH)) {
- carp "safe_level: Specified level ($level) not STANDARD, MEDIUM or HIGH - ignoring\n" if $^W;
- } else {
- # Dont allow this on perl 5.005 or earlier
- if ($] < 5.006 && $level != STANDARD) {
- # Cant do MEDIUM or HIGH checks
- croak "Currently requires perl 5.006 or newer to do the safe checks";
- }
- # Check that we are allowed to change level
- # Silently ignore if we can not.
- $LEVEL = $level if _can_do_level($level);
- }
- }
- return $LEVEL;
- }
-}
-
-=item TopSystemUID
-
-This is the highest UID on the current system that refers to a root
-UID. This is used to make sure that the temporary directory is
-owned by a system UID (C<root>, C<bin>, C<sys> etc) rather than
-simply by root.
-
-This is required since on many unix systems C</tmp> is not owned
-by root.
-
-Default is to assume that any UID less than or equal to 10 is a root
-UID.
-
- File::Temp->top_system_uid(10);
- my $topid = File::Temp->top_system_uid;
-
-This value can be adjusted to reduce security checking if required.
-The value is only relevant when C<safe_level> is set to MEDIUM or higher.
-
-=back
-
-=cut
-
-{
- my $TopSystemUID = 10;
- sub top_system_uid {
- my $self = shift;
- if (@_) {
- my $newuid = shift;
- croak "top_system_uid: UIDs should be numeric"
- unless $newuid =~ /^\d+$/s;
- $TopSystemUID = $newuid;
- }
- return $TopSystemUID;
- }
-}
-
-=head1 WARNING
-
-For maximum security, endeavour always to avoid ever looking at,
-touching, or even imputing the existence of the filename. You do not
-know that that filename is connected to the same file as the handle
-you have, and attempts to check this can only trigger more race
-conditions. It's far more secure to use the filehandle alone and
-dispense with the filename altogether.
-
-If you need to pass the handle to something that expects a filename
-then, on a unix system, use C<"/dev/fd/" . fileno($fh)> for arbitrary
-programs, or more generally C<< "+<=&" . fileno($fh) >> for Perl
-programs. You will have to clear the close-on-exec bit on that file
-descriptor before passing it to another process.
-
- use Fcntl qw/F_SETFD F_GETFD/;
- fcntl($tmpfh, F_SETFD, 0)
- or die "Can't clear close-on-exec flag on temp fh: $!\n";
-
-=head2 Temporary files and NFS
-
-Some problems are associated with using temporary files that reside
-on NFS file systems and it is recommended that a local filesystem
-is used whenever possible. Some of the security tests will most probably
-fail when the temp file is not local. Additionally, be aware that
-the performance of I/O operations over NFS will not be as good as for
-a local disk.
-
-=head1 HISTORY
-
-Originally began life in May 1999 as an XS interface to the system
-mkstemp() function. In March 2000, the OpenBSD mkstemp() code was
-translated to Perl for total control of the code's
-security checking, to ensure the presence of the function regardless of
-operating system and to help with portability.
-
-=head1 SEE ALSO
-
-L<POSIX/tmpnam>, L<POSIX/tmpfile>, L<File::Spec>, L<File::Path>
-
-See L<IO::File> and L<File::MkTemp> for different implementations of
-temporary file handling.
-
-=head1 AUTHOR
-
-Tim Jenness E<lt>t.jenness@jach.hawaii.eduE<gt>
-
-Copyright (C) 1999-2001 Tim Jenness and the UK Particle Physics and
-Astronomy Research Council. All Rights Reserved. This program is free
-software; you can redistribute it and/or modify it under the same
-terms as Perl itself.
-
-Original Perl implementation loosely based on the OpenBSD C code for
-mkstemp(). Thanks to Tom Christiansen for suggesting that this module
-should be written and providing ideas for code improvements and
-security enhancements.
-
-=cut
-
-
-1;
diff --git a/contrib/perl5/lib/File/stat.pm b/contrib/perl5/lib/File/stat.pm
deleted file mode 100644
index 0cf7a0b..0000000
--- a/contrib/perl5/lib/File/stat.pm
+++ /dev/null
@@ -1,115 +0,0 @@
-package File::stat;
-use strict;
-
-use 5.005_64;
-our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-
-BEGIN {
- use Exporter ();
- @EXPORT = qw(stat lstat);
- @EXPORT_OK = qw( $st_dev $st_ino $st_mode
- $st_nlink $st_uid $st_gid
- $st_rdev $st_size
- $st_atime $st_mtime $st_ctime
- $st_blksize $st_blocks
- );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
-}
-use vars @EXPORT_OK;
-
-# Class::Struct forbids use of @ISA
-sub import { goto &Exporter::import }
-
-use Class::Struct qw(struct);
-struct 'File::stat' => [
- map { $_ => '$' } qw{
- dev ino mode nlink uid gid rdev size
- atime mtime ctime blksize blocks
- }
-];
-
-sub populate (@) {
- return unless @_;
- my $stob = new();
- @$stob = (
- $st_dev, $st_ino, $st_mode, $st_nlink, $st_uid, $st_gid, $st_rdev,
- $st_size, $st_atime, $st_mtime, $st_ctime, $st_blksize, $st_blocks )
- = @_;
- return $stob;
-}
-
-sub lstat ($) { populate(CORE::lstat(shift)) }
-
-sub stat ($) {
- my $arg = shift;
- my $st = populate(CORE::stat $arg);
- return $st if $st;
- no strict 'refs';
- require Symbol;
- return populate(CORE::stat \*{Symbol::qualify($arg)});
-}
-
-1;
-__END__
-
-=head1 NAME
-
-File::stat - by-name interface to Perl's built-in stat() functions
-
-=head1 SYNOPSIS
-
- use File::stat;
- $st = stat($file) or die "No $file: $!";
- if ( ($st->mode & 0111) && $st->nlink > 1) ) {
- print "$file is executable with lotsa links\n";
- }
-
- use File::stat qw(:FIELDS);
- stat($file) or die "No $file: $!";
- if ( ($st_mode & 0111) && $st_nlink > 1) ) {
- print "$file is executable with lotsa links\n";
- }
-
-=head1 DESCRIPTION
-
-This module's default exports override the core stat()
-and lstat() functions, replacing them with versions that return
-"File::stat" objects. This object has methods that
-return the similarly named structure field name from the
-stat(2) function; namely,
-dev,
-ino,
-mode,
-nlink,
-uid,
-gid,
-rdev,
-size,
-atime,
-mtime,
-ctime,
-blksize,
-and
-blocks.
-
-You may also import all the structure fields directly into your namespace
-as regular variables using the :FIELDS import tag. (Note that this still
-overrides your stat() and lstat() functions.) Access these fields as
-variables named with a preceding C<st_> in front their method names.
-Thus, C<$stat_obj-E<gt>dev()> corresponds to $st_dev if you import
-the fields.
-
-To access this functionality without the core overrides,
-pass the C<use> an empty import list, and then access
-function functions with their full qualified names.
-On the other hand, the built-ins are still available
-via the C<CORE::> pseudo-package.
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/contrib/perl5/lib/FileCache.pm b/contrib/perl5/lib/FileCache.pm
deleted file mode 100644
index e1c5ec4..0000000
--- a/contrib/perl5/lib/FileCache.pm
+++ /dev/null
@@ -1,78 +0,0 @@
-package FileCache;
-
-=head1 NAME
-
-FileCache - keep more files open than the system permits
-
-=head1 SYNOPSIS
-
- cacheout $path;
- print $path @data;
-
-=head1 DESCRIPTION
-
-The C<cacheout> function will make sure that there's a filehandle open
-for writing available as the pathname you give it. It automatically
-closes and re-opens files if you exceed your system file descriptor
-maximum.
-
-=head1 BUGS
-
-F<sys/param.h> lies with its C<NOFILE> define on some systems,
-so you may have to set $FileCache::cacheout_maxopen yourself.
-
-=cut
-
-require 5.000;
-use Carp;
-use Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(
- cacheout
-);
-
-# Open in their package.
-
-sub cacheout_open {
- my $pack = caller(1);
- open(*{$pack . '::' . $_[0]}, $_[1]);
-}
-
-sub cacheout_close {
- my $pack = caller(1);
- close(*{$pack . '::' . $_[0]});
-}
-
-# But only this sub name is visible to them.
-
-$cacheout_seq = 0;
-$cacheout_numopen = 0;
-
-sub cacheout {
- ($file) = @_;
- unless (defined $cacheout_maxopen) {
- if (open(PARAM,'/usr/include/sys/param.h')) {
- local ($_, $.);
- while (<PARAM>) {
- $cacheout_maxopen = $1 - 4
- if /^\s*#\s*define\s+NOFILE\s+(\d+)/;
- }
- close PARAM;
- }
- $cacheout_maxopen = 16 unless $cacheout_maxopen;
- }
- if (!$isopen{$file}) {
- if (++$cacheout_numopen > $cacheout_maxopen) {
- my @lru = sort {$isopen{$a} <=> $isopen{$b};} keys(%isopen);
- splice(@lru, $cacheout_maxopen / 3);
- $cacheout_numopen -= @lru;
- for (@lru) { &cacheout_close($_); delete $isopen{$_}; }
- }
- cacheout_open($file, ($saw{$file}++ ? '>>' : '>') . $file)
- or croak("Can't create $file: $!");
- }
- $isopen{$file} = ++$cacheout_seq;
-}
-
-1;
diff --git a/contrib/perl5/lib/FileHandle.pm b/contrib/perl5/lib/FileHandle.pm
deleted file mode 100644
index 5eb3a89..0000000
--- a/contrib/perl5/lib/FileHandle.pm
+++ /dev/null
@@ -1,262 +0,0 @@
-package FileHandle;
-
-use 5.005_64;
-use strict;
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK);
-
-$VERSION = "2.00";
-
-require IO::File;
-@ISA = qw(IO::File);
-
-@EXPORT = qw(_IOFBF _IOLBF _IONBF);
-
-@EXPORT_OK = qw(
- pipe
-
- autoflush
- output_field_separator
- output_record_separator
- input_record_separator
- input_line_number
- format_page_number
- format_lines_per_page
- format_lines_left
- format_name
- format_top_name
- format_line_break_characters
- format_formfeed
-
- print
- printf
- getline
- getlines
-);
-
-#
-# Everything we're willing to export, we must first import.
-#
-import IO::Handle grep { !defined(&$_) } @EXPORT, @EXPORT_OK;
-
-#
-# Some people call "FileHandle::function", so all the functions
-# that were in the old FileHandle class must be imported, too.
-#
-{
- no strict 'refs';
-
- my %import = (
- 'IO::Handle' =>
- [qw(DESTROY new_from_fd fdopen close fileno getc ungetc gets
- eof flush error clearerr setbuf setvbuf _open_mode_string)],
- 'IO::Seekable' =>
- [qw(seek tell getpos setpos)],
- 'IO::File' =>
- [qw(new new_tmpfile open)]
- );
- for my $pkg (keys %import) {
- for my $func (@{$import{$pkg}}) {
- my $c = *{"${pkg}::$func"}{CODE}
- or die "${pkg}::$func missing";
- *$func = $c;
- }
- }
-}
-
-#
-# Specialized importer for Fcntl magic.
-#
-sub import {
- my $pkg = shift;
- my $callpkg = caller;
- require Exporter;
- Exporter::export($pkg, $callpkg, @_);
-
- #
- # If the Fcntl extension is available,
- # export its constants.
- #
- eval {
- require Fcntl;
- Exporter::export('Fcntl', $callpkg);
- };
-}
-
-################################################
-# This is the only exported function we define;
-# the rest come from other classes.
-#
-
-sub pipe {
- my $r = new IO::Handle;
- my $w = new IO::Handle;
- CORE::pipe($r, $w) or return undef;
- ($r, $w);
-}
-
-# Rebless standard file handles
-bless *STDIN{IO}, "FileHandle" if ref *STDIN{IO} eq "IO::Handle";
-bless *STDOUT{IO}, "FileHandle" if ref *STDOUT{IO} eq "IO::Handle";
-bless *STDERR{IO}, "FileHandle" if ref *STDERR{IO} eq "IO::Handle";
-
-1;
-
-__END__
-
-=head1 NAME
-
-FileHandle - supply object methods for filehandles
-
-=head1 SYNOPSIS
-
- use FileHandle;
-
- $fh = new FileHandle;
- if ($fh->open("< file")) {
- print <$fh>;
- $fh->close;
- }
-
- $fh = new FileHandle "> FOO";
- if (defined $fh) {
- print $fh "bar\n";
- $fh->close;
- }
-
- $fh = new FileHandle "file", "r";
- if (defined $fh) {
- print <$fh>;
- undef $fh; # automatically closes the file
- }
-
- $fh = new FileHandle "file", O_WRONLY|O_APPEND;
- if (defined $fh) {
- print $fh "corge\n";
- undef $fh; # automatically closes the file
- }
-
- $pos = $fh->getpos;
- $fh->setpos($pos);
-
- $fh->setvbuf($buffer_var, _IOLBF, 1024);
-
- ($readfh, $writefh) = FileHandle::pipe;
-
- autoflush STDOUT 1;
-
-=head1 DESCRIPTION
-
-NOTE: This class is now a front-end to the IO::* classes.
-
-C<FileHandle::new> creates a C<FileHandle>, which is a reference to a
-newly created symbol (see the C<Symbol> package). If it receives any
-parameters, they are passed to C<FileHandle::open>; if the open fails,
-the C<FileHandle> object is destroyed. Otherwise, it is returned to
-the caller.
-
-C<FileHandle::new_from_fd> creates a C<FileHandle> like C<new> does.
-It requires two parameters, which are passed to C<FileHandle::fdopen>;
-if the fdopen fails, the C<FileHandle> object is destroyed.
-Otherwise, it is returned to the caller.
-
-C<FileHandle::open> accepts one parameter or two. With one parameter,
-it is just a front end for the built-in C<open> function. With two
-parameters, the first parameter is a filename that may include
-whitespace or other special characters, and the second parameter is
-the open mode, optionally followed by a file permission value.
-
-If C<FileHandle::open> receives a Perl mode string (">", "+<", etc.)
-or a POSIX fopen() mode string ("w", "r+", etc.), it uses the basic
-Perl C<open> operator.
-
-If C<FileHandle::open> is given a numeric mode, it passes that mode
-and the optional permissions value to the Perl C<sysopen> operator.
-For convenience, C<FileHandle::import> tries to import the O_XXX
-constants from the Fcntl module. If dynamic loading is not available,
-this may fail, but the rest of FileHandle will still work.
-
-C<FileHandle::fdopen> is like C<open> except that its first parameter
-is not a filename but rather a file handle name, a FileHandle object,
-or a file descriptor number.
-
-If the C functions fgetpos() and fsetpos() are available, then
-C<FileHandle::getpos> returns an opaque value that represents the
-current position of the FileHandle, and C<FileHandle::setpos> uses
-that value to return to a previously visited position.
-
-If the C function setvbuf() is available, then C<FileHandle::setvbuf>
-sets the buffering policy for the FileHandle. The calling sequence
-for the Perl function is the same as its C counterpart, including the
-macros C<_IOFBF>, C<_IOLBF>, and C<_IONBF>, except that the buffer
-parameter specifies a scalar variable to use as a buffer. WARNING: A
-variable used as a buffer by C<FileHandle::setvbuf> must not be
-modified in any way until the FileHandle is closed or until
-C<FileHandle::setvbuf> is called again, or memory corruption may
-result!
-
-See L<perlfunc> for complete descriptions of each of the following
-supported C<FileHandle> methods, which are just front ends for the
-corresponding built-in functions:
-
- close
- fileno
- getc
- gets
- eof
- clearerr
- seek
- tell
-
-See L<perlvar> for complete descriptions of each of the following
-supported C<FileHandle> methods:
-
- autoflush
- output_field_separator
- output_record_separator
- input_record_separator
- input_line_number
- format_page_number
- format_lines_per_page
- format_lines_left
- format_name
- format_top_name
- format_line_break_characters
- format_formfeed
-
-Furthermore, for doing normal I/O you might need these:
-
-=over
-
-=item $fh->print
-
-See L<perlfunc/print>.
-
-=item $fh->printf
-
-See L<perlfunc/printf>.
-
-=item $fh->getline
-
-This works like <$fh> described in L<perlop/"I/O Operators">
-except that it's more readable and can be safely called in a
-list context but still returns just one line.
-
-=item $fh->getlines
-
-This works like <$fh> when called in a list context to
-read all the remaining lines in a file, except that it's more readable.
-It will also croak() if accidentally called in a scalar context.
-
-=back
-
-There are many other functions available since FileHandle is descended
-from IO::File, IO::Seekable, and IO::Handle. Please see those
-respective pages for documentation on more functions.
-
-=head1 SEE ALSO
-
-The B<IO> extension,
-L<perlfunc>,
-L<perlop/"I/O Operators">.
-
-=cut
diff --git a/contrib/perl5/lib/FindBin.pm b/contrib/perl5/lib/FindBin.pm
deleted file mode 100644
index 5d4c575..0000000
--- a/contrib/perl5/lib/FindBin.pm
+++ /dev/null
@@ -1,169 +0,0 @@
-# FindBin.pm
-#
-# Copyright (c) 1995 Graham Barr & Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or modify it
-# under the same terms as Perl itself.
-
-=head1 NAME
-
-FindBin - Locate directory of original perl script
-
-=head1 SYNOPSIS
-
- use FindBin;
- use lib "$FindBin::Bin/../lib";
-
- or
-
- use FindBin qw($Bin);
- use lib "$Bin/../lib";
-
-=head1 DESCRIPTION
-
-Locates the full path to the script bin directory to allow the use
-of paths relative to the bin directory.
-
-This allows a user to setup a directory tree for some software with
-directories E<lt>rootE<gt>/bin and E<lt>rootE<gt>/lib and then the above example will allow
-the use of modules in the lib directory without knowing where the software
-tree is installed.
-
-If perl is invoked using the B<-e> option or the perl script is read from
-C<STDIN> then FindBin sets both C<$Bin> and C<$RealBin> to the current
-directory.
-
-=head1 EXPORTABLE VARIABLES
-
- $Bin - path to bin directory from where script was invoked
- $Script - basename of script from which perl was invoked
- $RealBin - $Bin with all links resolved
- $RealScript - $Script with all links resolved
-
-=head1 KNOWN BUGS
-
-if perl is invoked as
-
- perl filename
-
-and I<filename> does not have executable rights and a program called I<filename>
-exists in the users C<$ENV{PATH}> which satisfies both B<-x> and B<-T> then FindBin
-assumes that it was invoked via the C<$ENV{PATH}>.
-
-Workaround is to invoke perl as
-
- perl ./filename
-
-=head1 AUTHORS
-
-FindBin is supported as part of the core perl distribution. Please send bug
-reports to E<lt>F<perlbug@perl.org>E<gt> using the perlbug program included with perl.
-
-Graham Barr E<lt>F<gbarr@pobox.com>E<gt>
-Nick Ing-Simmons E<lt>F<nik@tiuk.ti.com>E<gt>
-
-=head1 COPYRIGHT
-
-Copyright (c) 1995 Graham Barr & Nick Ing-Simmons. All rights reserved.
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
-
-package FindBin;
-use Carp;
-require 5.000;
-require Exporter;
-use Cwd qw(getcwd abs_path);
-use Config;
-use File::Basename;
-use File::Spec;
-
-@EXPORT_OK = qw($Bin $Script $RealBin $RealScript $Dir $RealDir);
-%EXPORT_TAGS = (ALL => [qw($Bin $Script $RealBin $RealScript $Dir $RealDir)]);
-@ISA = qw(Exporter);
-
-$VERSION = "1.42";
-
-BEGIN
-{
- *Dir = \$Bin;
- *RealDir = \$RealBin;
-
- if($0 eq '-e' || $0 eq '-')
- {
- # perl invoked with -e or script is on C<STDIN>
-
- $Script = $RealScript = $0;
- $Bin = $RealBin = getcwd();
- }
- else
- {
- my $script = $0;
-
- if ($^O eq 'VMS')
- {
- ($Bin,$Script) = VMS::Filespec::rmsexpand($0) =~ /(.*\])(.*)/s;
- ($RealBin,$RealScript) = ($Bin,$Script);
- }
- else
- {
- my $IsWin32 = $^O eq 'MSWin32';
- unless(($script =~ m#/# || ($IsWin32 && $script =~ m#\\#))
- && -f $script)
- {
- my $dir;
- foreach $dir (File::Spec->path)
- {
- my $scr = File::Spec->catfile($dir, $script);
- if(-r $scr && (!$IsWin32 || -x _))
- {
- $script = $scr;
-
- if (-f $0)
- {
- # $script has been found via PATH but perl could have
- # been invoked as 'perl file'. Do a dumb check to see
- # if $script is a perl program, if not then $script = $0
- #
- # well we actually only check that it is an ASCII file
- # we know its executable so it is probably a script
- # of some sort.
-
- $script = $0 unless(-T $script);
- }
- last;
- }
- }
- }
-
- croak("Cannot find current script '$0'") unless(-f $script);
-
- # Ensure $script contains the complete path incase we C<chdir>
-
- $script = File::Spec->catfile(getcwd(), $script)
- unless File::Spec->file_name_is_absolute($script);
-
- ($Script,$Bin) = fileparse($script);
-
- # Resolve $script if it is a link
- while(1)
- {
- my $linktext = readlink($script);
-
- ($RealScript,$RealBin) = fileparse($script);
- last unless defined $linktext;
-
- $script = (File::Spec->file_name_is_absolute($linktext))
- ? $linktext
- : File::Spec->catfile($RealBin, $linktext);
- }
-
- # Get absolute paths to directories
- $Bin = abs_path($Bin) if($Bin);
- $RealBin = abs_path($RealBin) if($RealBin);
- }
- }
-}
-
-1; # Keep require happy
-
diff --git a/contrib/perl5/lib/Getopt/Long.pm b/contrib/perl5/lib/Getopt/Long.pm
deleted file mode 100644
index 472527d..0000000
--- a/contrib/perl5/lib/Getopt/Long.pm
+++ /dev/null
@@ -1,1890 +0,0 @@
-# GetOpt::Long.pm -- Universal options parsing
-
-package Getopt::Long;
-
-# RCS Status : $Id: GetoptLong.pl,v 2.26 2001-01-31 10:20:29+01 jv Exp $
-# Author : Johan Vromans
-# Created On : Tue Sep 11 15:00:12 1990
-# Last Modified By: Johan Vromans
-# Last Modified On: Sat Jan 6 17:12:27 2001
-# Update Count : 748
-# Status : Released
-
-################ Copyright ################
-
-# This program is Copyright 1990,2001 by Johan Vromans.
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the Perl Artistic License or the
-# GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any
-# later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# If you do not have a copy of the GNU General Public License write to
-# the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
-# MA 02139, USA.
-
-################ Module Preamble ################
-
-use 5.004;
-
-use strict;
-
-use vars qw($VERSION $VERSION_STRING);
-$VERSION = 2.25;
-$VERSION_STRING = "2.25";
-
-use Exporter;
-use AutoLoader qw(AUTOLOAD);
-
-use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-@ISA = qw(Exporter);
-%EXPORT_TAGS = qw();
-BEGIN {
- # Init immediately so their contents can be used in the 'use vars' below.
- @EXPORT = qw(&GetOptions $REQUIRE_ORDER $PERMUTE $RETURN_IN_ORDER);
- @EXPORT_OK = qw();
-}
-
-# User visible variables.
-use vars @EXPORT, @EXPORT_OK;
-use vars qw($error $debug $major_version $minor_version);
-# Deprecated visible variables.
-use vars qw($autoabbrev $getopt_compat $ignorecase $bundling $order
- $passthrough);
-# Official invisible variables.
-use vars qw($genprefix $caller $gnu_compat);
-
-# Public subroutines.
-sub Configure (@);
-sub config (@); # deprecated name
-sub GetOptions;
-
-# Private subroutines.
-sub ConfigDefaults ();
-sub FindOption ($$$$$$$);
-sub Croak (@); # demand loading the real Croak
-
-################ Local Variables ################
-
-################ Resident subroutines ################
-
-sub ConfigDefaults () {
- # Handle POSIX compliancy.
- if ( defined $ENV{"POSIXLY_CORRECT"} ) {
- $genprefix = "(--|-)";
- $autoabbrev = 0; # no automatic abbrev of options
- $bundling = 0; # no bundling of single letter switches
- $getopt_compat = 0; # disallow '+' to start options
- $order = $REQUIRE_ORDER;
- }
- else {
- $genprefix = "(--|-|\\+)";
- $autoabbrev = 1; # automatic abbrev of options
- $bundling = 0; # bundling off by default
- $getopt_compat = 1; # allow '+' to start options
- $order = $PERMUTE;
- }
- # Other configurable settings.
- $debug = 0; # for debugging
- $error = 0; # error tally
- $ignorecase = 1; # ignore case when matching options
- $passthrough = 0; # leave unrecognized options alone
- $gnu_compat = 0; # require --opt=val if value is optional
-}
-
-# Override import.
-sub import {
- my $pkg = shift; # package
- my @syms = (); # symbols to import
- my @config = (); # configuration
- my $dest = \@syms; # symbols first
- for ( @_ ) {
- if ( $_ eq ':config' ) {
- $dest = \@config; # config next
- next;
- }
- push (@$dest, $_); # push
- }
- # Hide one level and call super.
- local $Exporter::ExportLevel = 1;
- $pkg->SUPER::import(@syms);
- # And configure.
- Configure (@config) if @config;
-}
-
-################ Initialization ################
-
-# Values for $order. See GNU getopt.c for details.
-($REQUIRE_ORDER, $PERMUTE, $RETURN_IN_ORDER) = (0..2);
-# Version major/minor numbers.
-($major_version, $minor_version) = $VERSION =~ /^(\d+)\.(\d+)/;
-
-ConfigDefaults();
-
-################ OO Interface ################
-
-package Getopt::Long::Parser;
-
-# NOTE: The object oriented routines use $error for thread locking.
-my $_lock = sub {
- lock ($Getopt::Long::error) if $] >= 5.005
-};
-
-# Store a copy of the default configuration. Since ConfigDefaults has
-# just been called, what we get from Configure is the default.
-my $default_config = do {
- &$_lock;
- Getopt::Long::Configure ()
-};
-
-sub new {
- my $that = shift;
- my $class = ref($that) || $that;
- my %atts = @_;
-
- # Register the callers package.
- my $self = { caller_pkg => (caller)[0] };
-
- bless ($self, $class);
-
- # Process config attributes.
- if ( defined $atts{config} ) {
- &$_lock;
- my $save = Getopt::Long::Configure ($default_config, @{$atts{config}});
- $self->{settings} = Getopt::Long::Configure ($save);
- delete ($atts{config});
- }
- # Else use default config.
- else {
- $self->{settings} = $default_config;
- }
-
- if ( %atts ) { # Oops
- Getopt::Long::Croak(__PACKAGE__.": unhandled attributes: ".
- join(" ", sort(keys(%atts))));
- }
-
- $self;
-}
-
-sub configure {
- my ($self) = shift;
-
- &$_lock;
-
- # Restore settings, merge new settings in.
- my $save = Getopt::Long::Configure ($self->{settings}, @_);
-
- # Restore orig config and save the new config.
- $self->{settings} = Configure ($save);
-}
-
-sub getoptions {
- my ($self) = shift;
-
- &$_lock;
-
- # Restore config settings.
- my $save = Getopt::Long::Configure ($self->{settings});
-
- # Call main routine.
- my $ret = 0;
- $Getopt::Long::caller = $self->{caller_pkg};
- eval { $ret = Getopt::Long::GetOptions (@_); };
-
- # Restore saved settings.
- Getopt::Long::Configure ($save);
-
- # Handle errors and return value.
- die ($@) if $@;
- return $ret;
-}
-
-package Getopt::Long;
-
-################ Package return ################
-
-1;
-
-__END__
-
-################ AutoLoading subroutines ################
-
-# RCS Status : $Id: GetoptLongAl.pl,v 2.30 2001-01-31 10:21:11+01 jv Exp $
-# Author : Johan Vromans
-# Created On : Fri Mar 27 11:50:30 1998
-# Last Modified By: Johan Vromans
-# Last Modified On: Tue Dec 26 18:01:16 2000
-# Update Count : 98
-# Status : Released
-
-sub GetOptions {
-
- my @optionlist = @_; # local copy of the option descriptions
- my $argend = '--'; # option list terminator
- my %opctl = (); # table of arg.specs (long and abbrevs)
- my %bopctl = (); # table of arg.specs (bundles)
- my $pkg = $caller || (caller)[0]; # current context
- # Needed if linkage is omitted.
- my %aliases= (); # alias table
- my @ret = (); # accum for non-options
- my %linkage; # linkage
- my $userlinkage; # user supplied HASH
- my $opt; # current option
- my $genprefix = $genprefix; # so we can call the same module many times
- my @opctl; # the possible long option names
-
- $error = '';
-
- print STDERR ("GetOpt::Long $Getopt::Long::VERSION ",
- "called from package \"$pkg\".",
- "\n ",
- 'GetOptionsAl $Revision: 2.30 $ ',
- "\n ",
- "ARGV: (@ARGV)",
- "\n ",
- "autoabbrev=$autoabbrev,".
- "bundling=$bundling,",
- "getopt_compat=$getopt_compat,",
- "gnu_compat=$gnu_compat,",
- "order=$order,",
- "\n ",
- "ignorecase=$ignorecase,",
- "passthrough=$passthrough,",
- "genprefix=\"$genprefix\".",
- "\n")
- if $debug;
-
- # Check for ref HASH as first argument.
- # First argument may be an object. It's OK to use this as long
- # as it is really a hash underneath.
- $userlinkage = undef;
- if ( ref($optionlist[0]) and
- "$optionlist[0]" =~ /^(?:.*\=)?HASH\([^\(]*\)$/ ) {
- $userlinkage = shift (@optionlist);
- print STDERR ("=> user linkage: $userlinkage\n") if $debug;
- }
-
- # See if the first element of the optionlist contains option
- # starter characters.
- # Be careful not to interpret '<>' as option starters.
- if ( $optionlist[0] =~ /^\W+$/
- && !($optionlist[0] eq '<>'
- && @optionlist > 0
- && ref($optionlist[1])) ) {
- $genprefix = shift (@optionlist);
- # Turn into regexp. Needs to be parenthesized!
- $genprefix =~ s/(\W)/\\$1/g;
- $genprefix = "([" . $genprefix . "])";
- }
-
- # Verify correctness of optionlist.
- %opctl = ();
- %bopctl = ();
- while ( @optionlist > 0 ) {
- my $opt = shift (@optionlist);
-
- # Strip leading prefix so people can specify "--foo=i" if they like.
- $opt = $+ if $opt =~ /^$genprefix+(.*)$/s;
-
- if ( $opt eq '<>' ) {
- if ( (defined $userlinkage)
- && !(@optionlist > 0 && ref($optionlist[0]))
- && (exists $userlinkage->{$opt})
- && ref($userlinkage->{$opt}) ) {
- unshift (@optionlist, $userlinkage->{$opt});
- }
- unless ( @optionlist > 0
- && ref($optionlist[0]) && ref($optionlist[0]) eq 'CODE' ) {
- $error .= "Option spec <> requires a reference to a subroutine\n";
- next;
- }
- $linkage{'<>'} = shift (@optionlist);
- next;
- }
-
- # Match option spec. Allow '?' as an alias only.
- if ( $opt !~ /^((\w+[-\w]*)(\|(\?|\w[-\w]*)?)*)?([!~+]|[=:][infse][@%]?)?$/ ) {
- $error .= "Error in option spec: \"$opt\"\n";
- next;
- }
- my ($o, $c, $a) = ($1, $5);
- $c = '' unless defined $c;
-
- # $linko keeps track of the primary name the user specified.
- # This name will be used for the internal or external linkage.
- # In other words, if the user specifies "FoO|BaR", it will
- # match any case combinations of 'foo' and 'bar', but if a global
- # variable needs to be set, it will be $opt_FoO in the exact case
- # as specified.
- my $linko;
-
- if ( ! defined $o ) {
- # empty -> '-' option
- $linko = $o = '';
- $opctl{''} = $c;
- $bopctl{''} = $c if $bundling;
- }
- else {
- # Handle alias names
- my @o = split (/\|/, $o);
- $linko = $o = $o[0];
- # Force an alias if the option name is not locase.
- $a = $o unless $o eq lc($o);
- $o = lc ($o)
- if $ignorecase > 1
- || ($ignorecase
- && ($bundling ? length($o) > 1 : 1));
-
- foreach ( @o ) {
- if ( $bundling && length($_) == 1 ) {
- $_ = lc ($_) if $ignorecase > 1;
- if ( $c eq '!' ) {
- $opctl{"no$_"} = $c;
- warn ("Ignoring '!' modifier for short option $_\n");
- $opctl{$_} = $bopctl{$_} = '';
- }
- else {
- $opctl{$_} = $bopctl{$_} = $c;
- }
- }
- else {
- $_ = lc ($_) if $ignorecase;
- if ( $c eq '!' ) {
- $opctl{"no$_"} = $c;
- $opctl{$_} = ''
- }
- else {
- $opctl{$_} = $c;
- }
- }
- if ( defined $a ) {
- # Note alias.
- $aliases{$_} = $a;
- }
- else {
- # Set primary name.
- $a = $_;
- }
- }
- }
-
- # If no linkage is supplied in the @optionlist, copy it from
- # the userlinkage if available.
- if ( defined $userlinkage ) {
- unless ( @optionlist > 0 && ref($optionlist[0]) ) {
- if ( exists $userlinkage->{$linko} &&
- ref($userlinkage->{$linko}) ) {
- print STDERR ("=> found userlinkage for \"$linko\": ",
- "$userlinkage->{$linko}\n")
- if $debug;
- unshift (@optionlist, $userlinkage->{$linko});
- }
- else {
- # Do nothing. Being undefined will be handled later.
- next;
- }
- }
- }
-
- # Copy the linkage. If omitted, link to global variable.
- if ( @optionlist > 0 && ref($optionlist[0]) ) {
- print STDERR ("=> link \"$linko\" to $optionlist[0]\n")
- if $debug;
- if ( ref($optionlist[0]) =~ /^(SCALAR|CODE)$/ ) {
- $linkage{$linko} = shift (@optionlist);
- }
- elsif ( ref($optionlist[0]) =~ /^(ARRAY)$/ ) {
- $linkage{$linko} = shift (@optionlist);
- $opctl{$o} .= '@'
- if $opctl{$o} ne '' and $opctl{$o} !~ /\@$/;
- $bopctl{$o} .= '@'
- if $bundling and defined $bopctl{$o} and
- $bopctl{$o} ne '' and $bopctl{$o} !~ /\@$/;
- }
- elsif ( ref($optionlist[0]) =~ /^(HASH)$/ ) {
- $linkage{$linko} = shift (@optionlist);
- $opctl{$o} .= '%'
- if $opctl{$o} ne '' and $opctl{$o} !~ /\%$/;
- $bopctl{$o} .= '%'
- if $bundling and defined $bopctl{$o} and
- $bopctl{$o} ne '' and $bopctl{$o} !~ /\%$/;
- }
- else {
- $error .= "Invalid option linkage for \"$opt\"\n";
- }
- }
- else {
- # Link to global $opt_XXX variable.
- # Make sure a valid perl identifier results.
- my $ov = $linko;
- $ov =~ s/\W/_/g;
- if ( $c =~ /@/ ) {
- print STDERR ("=> link \"$linko\" to \@$pkg","::opt_$ov\n")
- if $debug;
- eval ("\$linkage{\$linko} = \\\@".$pkg."::opt_$ov;");
- }
- elsif ( $c =~ /%/ ) {
- print STDERR ("=> link \"$linko\" to \%$pkg","::opt_$ov\n")
- if $debug;
- eval ("\$linkage{\$linko} = \\\%".$pkg."::opt_$ov;");
- }
- else {
- print STDERR ("=> link \"$linko\" to \$$pkg","::opt_$ov\n")
- if $debug;
- eval ("\$linkage{\$linko} = \\\$".$pkg."::opt_$ov;");
- }
- }
- }
-
- # Bail out if errors found.
- die ($error) if $error;
- $error = 0;
-
- # Sort the possible long option names.
- @opctl = sort(keys (%opctl)) if $autoabbrev;
-
- # Show the options tables if debugging.
- if ( $debug ) {
- my ($arrow, $k, $v);
- $arrow = "=> ";
- while ( ($k,$v) = each(%opctl) ) {
- print STDERR ($arrow, "\$opctl{\"$k\"} = \"$v\"\n");
- $arrow = " ";
- }
- $arrow = "=> ";
- while ( ($k,$v) = each(%bopctl) ) {
- print STDERR ($arrow, "\$bopctl{\"$k\"} = \"$v\"\n");
- $arrow = " ";
- }
- }
-
- # Process argument list
- my $goon = 1;
- while ( $goon && @ARGV > 0 ) {
-
- #### Get next argument ####
-
- $opt = shift (@ARGV);
- print STDERR ("=> option \"", $opt, "\"\n") if $debug;
-
- #### Determine what we have ####
-
- # Double dash is option list terminator.
- if ( $opt eq $argend ) {
- # Finish. Push back accumulated arguments and return.
- unshift (@ARGV, @ret)
- if $order == $PERMUTE;
- return ($error == 0);
- }
-
- my $tryopt = $opt;
- my $found; # success status
- my $dsttype; # destination type ('@' or '%')
- my $incr; # destination increment
- my $key; # key (if hash type)
- my $arg; # option argument
-
- ($found, $opt, $arg, $dsttype, $incr, $key) =
- FindOption ($genprefix, $argend, $opt,
- \%opctl, \%bopctl, \@opctl, \%aliases);
-
- if ( $found ) {
-
- # FindOption undefines $opt in case of errors.
- next unless defined $opt;
-
- if ( defined $arg ) {
- if ( defined $aliases{$opt} ) {
- print STDERR ("=> alias \"$opt\" -> \"$aliases{$opt}\"\n")
- if $debug;
- $opt = $aliases{$opt};
- }
-
- if ( defined $linkage{$opt} ) {
- print STDERR ("=> ref(\$L{$opt}) -> ",
- ref($linkage{$opt}), "\n") if $debug;
-
- if ( ref($linkage{$opt}) eq 'SCALAR' ) {
- if ( $incr ) {
- print STDERR ("=> \$\$L{$opt} += \"$arg\"\n")
- if $debug;
- if ( defined ${$linkage{$opt}} ) {
- ${$linkage{$opt}} += $arg;
- }
- else {
- ${$linkage{$opt}} = $arg;
- }
- }
- else {
- print STDERR ("=> \$\$L{$opt} = \"$arg\"\n")
- if $debug;
- ${$linkage{$opt}} = $arg;
- }
- }
- elsif ( ref($linkage{$opt}) eq 'ARRAY' ) {
- print STDERR ("=> push(\@{\$L{$opt}, \"$arg\")\n")
- if $debug;
- push (@{$linkage{$opt}}, $arg);
- }
- elsif ( ref($linkage{$opt}) eq 'HASH' ) {
- print STDERR ("=> \$\$L{$opt}->{$key} = \"$arg\"\n")
- if $debug;
- $linkage{$opt}->{$key} = $arg;
- }
- elsif ( ref($linkage{$opt}) eq 'CODE' ) {
- print STDERR ("=> &L{$opt}(\"$opt\", \"$arg\")\n")
- if $debug;
- local ($@);
- eval {
- &{$linkage{$opt}}($opt, $arg);
- };
- print STDERR ("=> die($@)\n") if $debug && $@ ne '';
- if ( $@ =~ /^!/ ) {
- if ( $@ =~ /^!FINISH\b/ ) {
- $goon = 0;
- }
- }
- elsif ( $@ ne '' ) {
- warn ($@);
- $error++;
- }
- }
- else {
- print STDERR ("Invalid REF type \"", ref($linkage{$opt}),
- "\" in linkage\n");
- Croak ("Getopt::Long -- internal error!\n");
- }
- }
- # No entry in linkage means entry in userlinkage.
- elsif ( $dsttype eq '@' ) {
- if ( defined $userlinkage->{$opt} ) {
- print STDERR ("=> push(\@{\$L{$opt}}, \"$arg\")\n")
- if $debug;
- push (@{$userlinkage->{$opt}}, $arg);
- }
- else {
- print STDERR ("=>\$L{$opt} = [\"$arg\"]\n")
- if $debug;
- $userlinkage->{$opt} = [$arg];
- }
- }
- elsif ( $dsttype eq '%' ) {
- if ( defined $userlinkage->{$opt} ) {
- print STDERR ("=> \$L{$opt}->{$key} = \"$arg\"\n")
- if $debug;
- $userlinkage->{$opt}->{$key} = $arg;
- }
- else {
- print STDERR ("=>\$L{$opt} = {$key => \"$arg\"}\n")
- if $debug;
- $userlinkage->{$opt} = {$key => $arg};
- }
- }
- else {
- if ( $incr ) {
- print STDERR ("=> \$L{$opt} += \"$arg\"\n")
- if $debug;
- if ( defined $userlinkage->{$opt} ) {
- $userlinkage->{$opt} += $arg;
- }
- else {
- $userlinkage->{$opt} = $arg;
- }
- }
- else {
- print STDERR ("=>\$L{$opt} = \"$arg\"\n") if $debug;
- $userlinkage->{$opt} = $arg;
- }
- }
- }
- }
-
- # Not an option. Save it if we $PERMUTE and don't have a <>.
- elsif ( $order == $PERMUTE ) {
- # Try non-options call-back.
- my $cb;
- if ( (defined ($cb = $linkage{'<>'})) ) {
- local ($@);
- eval {
- &$cb ($tryopt);
- };
- print STDERR ("=> die($@)\n") if $debug && $@ ne '';
- if ( $@ =~ /^!/ ) {
- if ( $@ =~ /^!FINISH\b/ ) {
- $goon = 0;
- }
- }
- elsif ( $@ ne '' ) {
- warn ($@);
- $error++;
- }
- }
- else {
- print STDERR ("=> saving \"$tryopt\" ",
- "(not an option, may permute)\n") if $debug;
- push (@ret, $tryopt);
- }
- next;
- }
-
- # ...otherwise, terminate.
- else {
- # Push this one back and exit.
- unshift (@ARGV, $tryopt);
- return ($error == 0);
- }
-
- }
-
- # Finish.
- if ( $order == $PERMUTE ) {
- # Push back accumulated arguments
- print STDERR ("=> restoring \"", join('" "', @ret), "\"\n")
- if $debug && @ret > 0;
- unshift (@ARGV, @ret) if @ret > 0;
- }
-
- return ($error == 0);
-}
-
-# Option lookup.
-sub FindOption ($$$$$$$) {
-
- # returns (1, $opt, $arg, $dsttype, $incr, $key) if okay,
- # returns (0) otherwise.
-
- my ($prefix, $argend, $opt, $opctl, $bopctl, $names, $aliases) = @_;
- my $key; # hash key for a hash option
- my $arg;
-
- print STDERR ("=> find \"$opt\", prefix=\"$prefix\"\n") if $debug;
-
- return 0 unless $opt =~ /^$prefix(.*)$/s;
- return 0 if $opt eq "-" && !defined $opctl->{""};
-
- $opt = $+;
- my ($starter) = $1;
-
- print STDERR ("=> split \"$starter\"+\"$opt\"\n") if $debug;
-
- my $optarg = undef; # value supplied with --opt=value
- my $rest = undef; # remainder from unbundling
-
- # If it is a long option, it may include the value.
- if (($starter eq "--" || ($getopt_compat && !$bundling))
- && $opt =~ /^([^=]+)=(.*)$/s ) {
- $opt = $1;
- $optarg = $2;
- print STDERR ("=> option \"", $opt,
- "\", optarg = \"$optarg\"\n") if $debug;
- }
-
- #### Look it up ###
-
- my $tryopt = $opt; # option to try
- my $optbl = $opctl; # table to look it up (long names)
- my $type;
- my $dsttype = '';
- my $incr = 0;
-
- if ( $bundling && $starter eq '-' ) {
- # Unbundle single letter option.
- $rest = length ($tryopt) > 0 ? substr ($tryopt, 1) : "";
- $tryopt = substr ($tryopt, 0, 1);
- $tryopt = lc ($tryopt) if $ignorecase > 1;
- print STDERR ("=> $starter$tryopt unbundled from ",
- "$starter$tryopt$rest\n") if $debug;
- $rest = undef unless $rest ne '';
- $optbl = $bopctl; # look it up in the short names table
-
- # If bundling == 2, long options can override bundles.
- if ( $bundling == 2 and
- defined ($rest) and
- defined ($type = $opctl->{$tryopt.$rest}) ) {
- print STDERR ("=> $starter$tryopt rebundled to ",
- "$starter$tryopt$rest\n") if $debug;
- $tryopt .= $rest;
- undef $rest;
- }
- }
-
- # Try auto-abbreviation.
- elsif ( $autoabbrev ) {
- # Downcase if allowed.
- $tryopt = $opt = lc ($opt) if $ignorecase;
- # Turn option name into pattern.
- my $pat = quotemeta ($opt);
- # Look up in option names.
- my @hits = grep (/^$pat/, @{$names});
- print STDERR ("=> ", scalar(@hits), " hits (@hits) with \"$pat\" ",
- "out of ", scalar(@{$names}), "\n") if $debug;
-
- # Check for ambiguous results.
- unless ( (@hits <= 1) || (grep ($_ eq $opt, @hits) == 1) ) {
- # See if all matches are for the same option.
- my %hit;
- foreach ( @hits ) {
- $_ = $aliases->{$_} if defined $aliases->{$_};
- $hit{$_} = 1;
- }
- # Now see if it really is ambiguous.
- unless ( keys(%hit) == 1 ) {
- return (0) if $passthrough;
- warn ("Option ", $opt, " is ambiguous (",
- join(", ", @hits), ")\n");
- $error++;
- undef $opt;
- return (1, $opt,$arg,$dsttype,$incr,$key);
- }
- @hits = keys(%hit);
- }
-
- # Complete the option name, if appropriate.
- if ( @hits == 1 && $hits[0] ne $opt ) {
- $tryopt = $hits[0];
- $tryopt = lc ($tryopt) if $ignorecase;
- print STDERR ("=> option \"$opt\" -> \"$tryopt\"\n")
- if $debug;
- }
- }
-
- # Map to all lowercase if ignoring case.
- elsif ( $ignorecase ) {
- $tryopt = lc ($opt);
- }
-
- # Check validity by fetching the info.
- $type = $optbl->{$tryopt} unless defined $type;
- unless ( defined $type ) {
- return (0) if $passthrough;
- warn ("Unknown option: ", $opt, "\n");
- $error++;
- return (1, $opt,$arg,$dsttype,$incr,$key);
- }
- # Apparently valid.
- $opt = $tryopt;
- print STDERR ("=> found \"$type\" for \"", $opt, "\"\n") if $debug;
-
- #### Determine argument status ####
-
- # If it is an option w/o argument, we're almost finished with it.
- if ( $type eq '' || $type eq '!' || $type eq '+' ) {
- if ( defined $optarg ) {
- return (0) if $passthrough;
- warn ("Option ", $opt, " does not take an argument\n");
- $error++;
- undef $opt;
- }
- elsif ( $type eq '' || $type eq '+' ) {
- $arg = 1; # supply explicit value
- $incr = $type eq '+';
- }
- else {
- substr ($opt, 0, 2) = ''; # strip NO prefix
- $arg = 0; # supply explicit value
- }
- unshift (@ARGV, $starter.$rest) if defined $rest;
- return (1, $opt,$arg,$dsttype,$incr,$key);
- }
-
- # Get mandatory status and type info.
- my $mand;
- ($mand, $type, $dsttype, $key) = $type =~ /^(.)(.)([@%]?)$/;
-
- # Check if there is an option argument available.
- if ( $gnu_compat ) {
- return (1, $opt, $optarg, $dsttype, $incr, $key)
- if defined $optarg;
- return (1, $opt, $type eq "s" ? '' : 0, $dsttype, $incr, $key)
- if $mand eq ':';
- }
-
- # Check if there is an option argument available.
- if ( defined $optarg
- ? ($optarg eq '')
- : !(defined $rest || @ARGV > 0) ) {
- # Complain if this option needs an argument.
- if ( $mand eq "=" ) {
- return (0) if $passthrough;
- warn ("Option ", $opt, " requires an argument\n");
- $error++;
- undef $opt;
- }
- return (1, $opt, $type eq "s" ? '' : 0, $dsttype, $incr, $key);
- }
-
- # Get (possibly optional) argument.
- $arg = (defined $rest ? $rest
- : (defined $optarg ? $optarg : shift (@ARGV)));
-
- # Get key if this is a "name=value" pair for a hash option.
- $key = undef;
- if ($dsttype eq '%' && defined $arg) {
- ($key, $arg) = ($arg =~ /^([^=]*)=(.*)$/s) ? ($1, $2) : ($arg, 1);
- }
-
- #### Check if the argument is valid for this option ####
-
- if ( $type eq "s" ) { # string
- # A mandatory string takes anything.
- return (1, $opt,$arg,$dsttype,$incr,$key) if $mand eq "=";
-
- # An optional string takes almost anything.
- return (1, $opt,$arg,$dsttype,$incr,$key)
- if defined $optarg || defined $rest;
- return (1, $opt,$arg,$dsttype,$incr,$key) if $arg eq "-"; # ??
-
- # Check for option or option list terminator.
- if ($arg eq $argend ||
- $arg =~ /^$prefix.+/) {
- # Push back.
- unshift (@ARGV, $arg);
- # Supply empty value.
- $arg = '';
- }
- }
-
- elsif ( $type eq "n" || $type eq "i" ) { # numeric/integer
- if ( $bundling && defined $rest && $rest =~ /^([-+]?[0-9]+)(.*)$/s ) {
- $arg = $1;
- $rest = $2;
- unshift (@ARGV, $starter.$rest) if defined $rest && $rest ne '';
- }
- elsif ( $arg !~ /^[-+]?[0-9]+$/ ) {
- if ( defined $optarg || $mand eq "=" ) {
- if ( $passthrough ) {
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg)
- unless defined $optarg;
- return (0);
- }
- warn ("Value \"", $arg, "\" invalid for option ",
- $opt, " (number expected)\n");
- $error++;
- undef $opt;
- # Push back.
- unshift (@ARGV, $starter.$rest) if defined $rest;
- }
- else {
- # Push back.
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg);
- # Supply default value.
- $arg = 0;
- }
- }
- }
-
- elsif ( $type eq "f" ) { # real number, int is also ok
- # We require at least one digit before a point or 'e',
- # and at least one digit following the point and 'e'.
- # [-]NN[.NN][eNN]
- if ( $bundling && defined $rest &&
- $rest =~ /^([-+]?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9]+)?)(.*)$/s ) {
- $arg = $1;
- $rest = $+;
- unshift (@ARGV, $starter.$rest) if defined $rest && $rest ne '';
- }
- elsif ( $arg !~ /^[-+]?[0-9.]+(\.[0-9]+)?([eE][-+]?[0-9]+)?$/ ) {
- if ( defined $optarg || $mand eq "=" ) {
- if ( $passthrough ) {
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg)
- unless defined $optarg;
- return (0);
- }
- warn ("Value \"", $arg, "\" invalid for option ",
- $opt, " (real number expected)\n");
- $error++;
- undef $opt;
- # Push back.
- unshift (@ARGV, $starter.$rest) if defined $rest;
- }
- else {
- # Push back.
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg);
- # Supply default value.
- $arg = 0.0;
- }
- }
- }
- else {
- Croak ("GetOpt::Long internal error (Can't happen)\n");
- }
- return (1, $opt, $arg, $dsttype, $incr, $key);
-}
-
-# Getopt::Long Configuration.
-sub Configure (@) {
- my (@options) = @_;
-
- my $prevconfig =
- [ $error, $debug, $major_version, $minor_version,
- $autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
- $gnu_compat, $passthrough, $genprefix ];
-
- if ( ref($options[0]) eq 'ARRAY' ) {
- ( $error, $debug, $major_version, $minor_version,
- $autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
- $gnu_compat, $passthrough, $genprefix ) = @{shift(@options)};
- }
-
- my $opt;
- foreach $opt ( @options ) {
- my $try = lc ($opt);
- my $action = 1;
- if ( $try =~ /^no_?(.*)$/s ) {
- $action = 0;
- $try = $+;
- }
- if ( ($try eq 'default' or $try eq 'defaults') && $action ) {
- ConfigDefaults ();
- }
- elsif ( ($try eq 'posix_default' or $try eq 'posix_defaults') ) {
- local $ENV{POSIXLY_CORRECT};
- $ENV{POSIXLY_CORRECT} = 1 if $action;
- ConfigDefaults ();
- }
- elsif ( $try eq 'auto_abbrev' or $try eq 'autoabbrev' ) {
- $autoabbrev = $action;
- }
- elsif ( $try eq 'getopt_compat' ) {
- $getopt_compat = $action;
- }
- elsif ( $try eq 'gnu_getopt' ) {
- if ( $action ) {
- $gnu_compat = 1;
- $bundling = 1;
- $getopt_compat = 0;
- $permute = 1;
- }
- }
- elsif ( $try eq 'gnu_compat' ) {
- $gnu_compat = $action;
- }
- elsif ( $try eq 'ignorecase' or $try eq 'ignore_case' ) {
- $ignorecase = $action;
- }
- elsif ( $try eq 'ignore_case_always' ) {
- $ignorecase = $action ? 2 : 0;
- }
- elsif ( $try eq 'bundling' ) {
- $bundling = $action;
- }
- elsif ( $try eq 'bundling_override' ) {
- $bundling = $action ? 2 : 0;
- }
- elsif ( $try eq 'require_order' ) {
- $order = $action ? $REQUIRE_ORDER : $PERMUTE;
- }
- elsif ( $try eq 'permute' ) {
- $order = $action ? $PERMUTE : $REQUIRE_ORDER;
- }
- elsif ( $try eq 'pass_through' or $try eq 'passthrough' ) {
- $passthrough = $action;
- }
- elsif ( $try =~ /^prefix=(.+)$/ && $action ) {
- $genprefix = $1;
- # Turn into regexp. Needs to be parenthesized!
- $genprefix = "(" . quotemeta($genprefix) . ")";
- eval { '' =~ /$genprefix/; };
- Croak ("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
- }
- elsif ( $try =~ /^prefix_pattern=(.+)$/ && $action ) {
- $genprefix = $1;
- # Parenthesize if needed.
- $genprefix = "(" . $genprefix . ")"
- unless $genprefix =~ /^\(.*\)$/;
- eval { '' =~ /$genprefix/; };
- Croak ("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
- }
- elsif ( $try eq 'debug' ) {
- $debug = $action;
- }
- else {
- Croak ("Getopt::Long: unknown config parameter \"$opt\"")
- }
- }
- $prevconfig;
-}
-
-# Deprecated name.
-sub config (@) {
- Configure (@_);
-}
-
-# To prevent Carp from being loaded unnecessarily.
-sub Croak (@) {
- require 'Carp.pm';
- $Carp::CarpLevel = 1;
- Carp::croak(@_);
-};
-
-################ Documentation ################
-
-=head1 NAME
-
-Getopt::Long - Extended processing of command line options
-
-=head1 SYNOPSIS
-
- use Getopt::Long;
- $result = GetOptions (...option-descriptions...);
-
-=head1 DESCRIPTION
-
-The Getopt::Long module implements an extended getopt function called
-GetOptions(). This function adheres to the POSIX syntax for command
-line options, with GNU extensions. In general, this means that options
-have long names instead of single letters, and are introduced with a
-double dash "--". Support for bundling of command line options, as was
-the case with the more traditional single-letter approach, is provided
-but not enabled by default.
-
-=head1 Command Line Options, an Introduction
-
-Command line operated programs traditionally take their arguments from
-the command line, for example filenames or other information that the
-program needs to know. Besides arguments, these programs often take
-command line I<options> as well. Options are not necessary for the
-program to work, hence the name 'option', but are used to modify its
-default behaviour. For example, a program could do its job quietly,
-but with a suitable option it could provide verbose information about
-what it did.
-
-Command line options come in several flavours. Historically, they are
-preceded by a single dash C<->, and consist of a single letter.
-
- -l -a -c
-
-Usually, these single-character options can be bundled:
-
- -lac
-
-Options can have values, the value is placed after the option
-character. Sometimes with whitespace in between, sometimes not:
-
- -s 24 -s24
-
-Due to the very cryptic nature of these options, another style was
-developed that used long names. So instead of a cryptic C<-l> one
-could use the more descriptive C<--long>. To distinguish between a
-bundle of single-character options and a long one, two dashes are used
-to precede the option name. Early implementations of long options used
-a plus C<+> instead. Also, option values could be specified either
-like
-
- --size=24
-
-or
-
- --size 24
-
-The C<+> form is now obsolete and strongly deprecated.
-
-=head1 Getting Started with Getopt::Long
-
-Getopt::Long is the Perl5 successor of C<newgetopt.pl>. This was
-the first Perl module that provided support for handling the new style
-of command line options, hence the name Getopt::Long. This module
-also supports single-character options and bundling. In this case, the
-options are restricted to alphabetic characters only, and the
-characters C<?> and C<->.
-
-To use Getopt::Long from a Perl program, you must include the
-following line in your Perl program:
-
- use Getopt::Long;
-
-This will load the core of the Getopt::Long module and prepare your
-program for using it. Most of the actual Getopt::Long code is not
-loaded until you really call one of its functions.
-
-In the default configuration, options names may be abbreviated to
-uniqueness, case does not matter, and a single dash is sufficient,
-even for long option names. Also, options may be placed between
-non-option arguments. See L<Configuring Getopt::Long> for more
-details on how to configure Getopt::Long.
-
-=head2 Simple options
-
-The most simple options are the ones that take no values. Their mere
-presence on the command line enables the option. Popular examples are:
-
- --all --verbose --quiet --debug
-
-Handling simple options is straightforward:
-
- my $verbose = ''; # option variable with default value (false)
- my $all = ''; # option variable with default value (false)
- GetOptions ('verbose' => \$verbose, 'all' => \$all);
-
-The call to GetOptions() parses the command line arguments that are
-present in C<@ARGV> and sets the option variable to the value C<1> if
-the option did occur on the command line. Otherwise, the option
-variable is not touched. Setting the option value to true is often
-called I<enabling> the option.
-
-The option name as specified to the GetOptions() function is called
-the option I<specification>. Later we'll see that this specification
-can contain more than just the option name. The reference to the
-variable is called the option I<destination>.
-
-GetOptions() will return a true value if the command line could be
-processed successfully. Otherwise, it will write error messages to
-STDERR, and return a false result.
-
-=head2 A little bit less simple options
-
-Getopt::Long supports two useful variants of simple options:
-I<negatable> options and I<incremental> options.
-
-A negatable option is specified with a exclamation mark C<!> after the
-option name:
-
- my $verbose = ''; # option variable with default value (false)
- GetOptions ('verbose!' => \$verbose);
-
-Now, using C<--verbose> on the command line will enable C<$verbose>,
-as expected. But it is also allowed to use C<--noverbose>, which will
-disable C<$verbose> by setting its value to C<0>. Using a suitable
-default value, the program can find out whether C<$verbose> is false
-by default, or disabled by using C<--noverbose>.
-
-An incremental option is specified with a plus C<+> after the
-option name:
-
- my $verbose = ''; # option variable with default value (false)
- GetOptions ('verbose+' => \$verbose);
-
-Using C<--verbose> on the command line will increment the value of
-C<$verbose>. This way the program can keep track of how many times the
-option occurred on the command line. For example, each occurrence of
-C<--verbose> could increase the verbosity level of the program.
-
-=head2 Mixing command line option with other arguments
-
-Usually programs take command line options as well as other arguments,
-for example, file names. It is good practice to always specify the
-options first, and the other arguments last. Getopt::Long will,
-however, allow the options and arguments to be mixed and 'filter out'
-all the options before passing the rest of the arguments to the
-program. To stop Getopt::Long from processing further arguments,
-insert a double dash C<--> on the command line:
-
- --size 24 -- --all
-
-In this example, C<--all> will I<not> be treated as an option, but
-passed to the program unharmed, in C<@ARGV>.
-
-=head2 Options with values
-
-For options that take values it must be specified whether the option
-value is required or not, and what kind of value the option expects.
-
-Three kinds of values are supported: integer numbers, floating point
-numbers, and strings.
-
-If the option value is required, Getopt::Long will take the
-command line argument that follows the option and assign this to the
-option variable. If, however, the option value is specified as
-optional, this will only be done if that value does not look like a
-valid command line option itself.
-
- my $tag = ''; # option variable with default value
- GetOptions ('tag=s' => \$tag);
-
-In the option specification, the option name is followed by an equals
-sign C<=> and the letter C<s>. The equals sign indicates that this
-option requires a value. The letter C<s> indicates that this value is
-an arbitrary string. Other possible value types are C<i> for integer
-values, and C<f> for floating point values. Using a colon C<:> instead
-of the equals sign indicates that the option value is optional. In
-this case, if no suitable value is supplied, string valued options get
-an empty string C<''> assigned, while numeric options are set to C<0>.
-
-=head2 Options with multiple values
-
-Options sometimes take several values. For example, a program could
-use multiple directories to search for library files:
-
- --library lib/stdlib --library lib/extlib
-
-To accomplish this behaviour, simply specify an array reference as the
-destination for the option:
-
- my @libfiles = ();
- GetOptions ("library=s" => \@libfiles);
-
-Used with the example above, C<@libfiles> would contain two strings
-upon completion: C<"lib/srdlib"> and C<"lib/extlib">, in that order.
-It is also possible to specify that only integer or floating point
-numbers are acceptible values.
-
-Often it is useful to allow comma-separated lists of values as well as
-multiple occurrences of the options. This is easy using Perl's split()
-and join() operators:
-
- my @libfiles = ();
- GetOptions ("library=s" => \@libfiles);
- @libfiles = split(/,/,join(',',@libfiles));
-
-Of course, it is important to choose the right separator string for
-each purpose.
-
-=head2 Options with hash values
-
-If the option destination is a reference to a hash, the option will
-take, as value, strings of the form I<key>C<=>I<value>. The value will
-be stored with the specified key in the hash.
-
- my %defines = ();
- GetOptions ("define=s" => \%defines);
-
-When used with command line options:
-
- --define os=linux --define vendor=redhat
-
-the hash C<%defines> will contain two keys, C<"os"> with value
-C<"linux> and C<"vendor"> with value C<"redhat">.
-It is also possible to specify that only integer or floating point
-numbers are acceptible values. The keys are always taken to be strings.
-
-=head2 User-defined subroutines to handle options
-
-Ultimate control over what should be done when (actually: each time)
-an option is encountered on the command line can be achieved by
-designating a reference to a subroutine (or an anonymous subroutine)
-as the option destination. When GetOptions() encounters the option, it
-will call the subroutine with two arguments: the name of the option,
-and the value to be assigned. It is up to the subroutine to store the
-value, or do whatever it thinks is appropriate.
-
-A trivial application of this mechanism is to implement options that
-are related to each other. For example:
-
- my $verbose = ''; # option variable with default value (false)
- GetOptions ('verbose' => \$verbose,
- 'quiet' => sub { $verbose = 0 });
-
-Here C<--verbose> and C<--quiet> control the same variable
-C<$verbose>, but with opposite values.
-
-If the subroutine needs to signal an error, it should call die() with
-the desired error message as its argument. GetOptions() will catch the
-die(), issue the error message, and record that an error result must
-be returned upon completion.
-
-If the text of the error message starts with an exclamantion mark C<!>
-it is interpreted specially by GetOptions(). There is currently one
-special command implemented: C<die("!FINISH")> will cause GetOptions()
-to stop processing options, as if it encountered a double dash C<-->.
-
-=head2 Options with multiple names
-
-Often it is user friendly to supply alternate mnemonic names for
-options. For example C<--height> could be an alternate name for
-C<--length>. Alternate names can be included in the option
-specification, separated by vertical bar C<|> characters. To implement
-the above example:
-
- GetOptions ('length|height=f' => \$length);
-
-The first name is called the I<primary> name, the other names are
-called I<aliases>.
-
-Multiple alternate names are possible.
-
-=head2 Case and abbreviations
-
-Without additional configuration, GetOptions() will ignore the case of
-option names, and allow the options to be abbreviated to uniqueness.
-
- GetOptions ('length|height=f' => \$length, "head" => \$head);
-
-This call will allow C<--l> and C<--L> for the length option, but
-requires a least C<--hea> and C<--hei> for the head and height options.
-
-=head2 Summary of Option Specifications
-
-Each option specifier consists of two parts: the name specification
-and the argument specification.
-
-The name specification contains the name of the option, optionally
-followed by a list of alternative names separated by vertical bar
-characters.
-
- length option name is "length"
- length|size|l name is "length", aliases are "size" and "l"
-
-The argument specification is optional. If omitted, the option is
-considered boolean, a value of 1 will be assigned when the option is
-used on the command line.
-
-The argument specification can be
-
-=over
-
-=item !
-
-The option does not take an argument and may be negated, i.e. prefixed
-by "no". E.g. C<"foo!"> will allow C<--foo> (a value of 1 will be
-assigned) and C<--nofoo> (a value of 0 will be assigned). If the
-option has aliases, this applies to the aliases as well.
-
-Using negation on a single letter option when bundling is in effect is
-pointless and will result in a warning.
-
-=item +
-
-The option does not take an argument and will be incremented by 1
-every time it appears on the command line. E.g. C<"more+">, when used
-with C<--more --more --more>, will increment the value three times,
-resulting in a value of 3 (provided it was 0 or undefined at first).
-
-The C<+> specifier is ignored if the option destination is not a scalar.
-
-=item = I<type> [ I<desttype> ]
-
-The option requires an argument of the given type. Supported types
-are:
-
-=over
-
-=item s
-
-String. An arbitrary sequence of characters. It is valid for the
-argument to start with C<-> or C<-->.
-
-=item i
-
-Integer. An optional leading plus or minus sign, followed by a
-sequence of digits.
-
-=item f
-
-Real number. For example C<3.14>, C<-6.23E24> and so on.
-
-=back
-
-The I<desttype> can be C<@> or C<%> to specify that the option is
-list or a hash valued. This is only needed when the destination for
-the option value is not otherwise specified. It should be omitted when
-not needed.
-
-=item : I<type> [ I<desttype> ]
-
-Like C<=>, but designates the argument as optional.
-If omitted, an empty string will be assigned to string values options,
-and the value zero to numeric options.
-
-Note that if a string argument starts with C<-> or C<-->, it will be
-considered an option on itself.
-
-=back
-
-=head1 Advanced Possibilities
-
-=head2 Object oriented interface
-
-Getopt::Long can be used in an object oriented way as well:
-
- use Getopt::Long;
- $p = new Getopt::Long::Parser;
- $p->configure(...configuration options...);
- if ($p->getoptions(...options descriptions...)) ...
-
-Configuration options can be passed to the constructor:
-
- $p = new Getopt::Long::Parser
- config => [...configuration options...];
-
-For thread safety, each method call will acquire an exclusive lock to
-the Getopt::Long module. So don't call these methods from a callback
-routine!
-
-=head2 Documentation and help texts
-
-Getopt::Long encourages the use of Pod::Usage to produce help
-messages. For example:
-
- use Getopt::Long;
- use Pod::Usage;
-
- my $man = 0;
- my $help = 0;
-
- GetOptions('help|?' => \$help, man => \$man) or pod2usage(2);
- pod2usage(1) if $help;
- pod2usage(-exitstatus => 0, -verbose => 2) if $man;
-
- __END__
-
- =head1 NAME
-
- sample - Using GetOpt::Long and Pod::Usage
-
- =head1 SYNOPSIS
-
- sample [options] [file ...]
-
- Options:
- -help brief help message
- -man full documentation
-
- =head1 OPTIONS
-
- =over 8
-
- =item B<-help>
-
- Print a brief help message and exits.
-
- =item B<-man>
-
- Prints the manual page and exits.
-
- =back
-
- =head1 DESCRIPTION
-
- B<This program> will read the given input file(s) and do someting
- useful with the contents thereof.
-
- =cut
-
-See L<Pod::Usage> for details.
-
-=head2 Storing options in a hash
-
-Sometimes, for example when there are a lot of options, having a
-separate variable for each of them can be cumbersome. GetOptions()
-supports, as an alternative mechanism, storing options in a hash.
-
-To obtain this, a reference to a hash must be passed I<as the first
-argument> to GetOptions(). For each option that is specified on the
-command line, the option value will be stored in the hash with the
-option name as key. Options that are not actually used on the command
-line will not be put in the hash, on other words,
-C<exists($h{option})> (or defined()) can be used to test if an option
-was used. The drawback is that warnings will be issued if the program
-runs under C<use strict> and uses C<$h{option}> without testing with
-exists() or defined() first.
-
- my %h = ();
- GetOptions (\%h, 'length=i'); # will store in $h{length}
-
-For options that take list or hash values, it is necessary to indicate
-this by appending an C<@> or C<%> sign after the type:
-
- GetOptions (\%h, 'colours=s@'); # will push to @{$h{colours}}
-
-To make things more complicated, the hash may contain references to
-the actual destinations, for example:
-
- my $len = 0;
- my %h = ('length' => \$len);
- GetOptions (\%h, 'length=i'); # will store in $len
-
-This example is fully equivalent with:
-
- my $len = 0;
- GetOptions ('length=i' => \$len); # will store in $len
-
-Any mixture is possible. For example, the most frequently used options
-could be stored in variables while all other options get stored in the
-hash:
-
- my $verbose = 0; # frequently referred
- my $debug = 0; # frequently referred
- my %h = ('verbose' => \$verbose, 'debug' => \$debug);
- GetOptions (\%h, 'verbose', 'debug', 'filter', 'size=i');
- if ( $verbose ) { ... }
- if ( exists $h{filter} ) { ... option 'filter' was specified ... }
-
-=head2 Bundling
-
-With bundling it is possible to set several single-character options
-at once. For example if C<a>, C<v> and C<x> are all valid options,
-
- -vax
-
-would set all three.
-
-Getopt::Long supports two levels of bundling. To enable bundling, a
-call to Getopt::Long::Configure is required.
-
-The first level of bundling can be enabled with:
-
- Getopt::Long::Configure ("bundling");
-
-Configured this way, single-character options can be bundled but long
-options B<must> always start with a double dash C<--> to avoid
-abiguity. For example, when C<vax>, C<a>, C<v> and C<x> are all valid
-options,
-
- -vax
-
-would set C<a>, C<v> and C<x>, but
-
- --vax
-
-would set C<vax>.
-
-The second level of bundling lifts this restriction. It can be enabled
-with:
-
- Getopt::Long::Configure ("bundling_override");
-
-Now, C<-vax> would set the option C<vax>.
-
-When any level of bundling is enabled, option values may be inserted
-in the bundle. For example:
-
- -h24w80
-
-is equivalent to
-
- -h 24 -w 80
-
-When configured for bundling, single-character options are matched
-case sensitive while long options are matched case insensitive. To
-have the single-character options matched case insensitive as well,
-use:
-
- Getopt::Long::Configure ("bundling", "ignorecase_always");
-
-It goes without saying that bundling can be quite confusing.
-
-=head2 The lonesome dash
-
-Normally, a lone dash C<-> on the command line will not be considered
-an option. Option processing will terminate (unless "permute" is
-configured) and the dash will be left in C<@ARGV>.
-
-It is possible to get special treatment for a lone dash. This can be
-achieved by adding an option specification with an empty name, for
-example:
-
- GetOptions ('' => \$stdio);
-
-A lone dash on the command line will now be a legal option, and using
-it will set variable C<$stdio>.
-
-=head2 Argument call-back
-
-A special option 'name' C<<>> can be used to designate a subroutine
-to handle non-option arguments. When GetOptions() encounters an
-argument that does not look like an option, it will immediately call this
-subroutine and passes it the argument as a parameter.
-
-For example:
-
- my $width = 80;
- sub process { ... }
- GetOptions ('width=i' => \$width, '<>' => \&process);
-
-When applied to the following command line:
-
- arg1 --width=72 arg2 --width=60 arg3
-
-This will call
-C<process("arg1")> while C<$width> is C<80>,
-C<process("arg2")> while C<$width> is C<72>, and
-C<process("arg3")> while C<$width> is C<60>.
-
-This feature requires configuration option B<permute>, see section
-L<Configuring Getopt::Long>.
-
-
-=head1 Configuring Getopt::Long
-
-Getopt::Long can be configured by calling subroutine
-Getopt::Long::Configure(). This subroutine takes a list of quoted
-strings, each specifying a configuration option to be enabled, e.g.
-C<ignore_case>, or disabled, e.g. C<no_ignore_case>. Case does not
-matter. Multiple calls to Configure() are possible.
-
-Alternatively, as of version 2.24, the configuration options may be
-passed together with the C<use> statement:
-
- use Getopt::Long qw(:config no_ignore_case bundling);
-
-The following options are available:
-
-=over 12
-
-=item default
-
-This option causes all configuration options to be reset to their
-default values.
-
-=item posix_default
-
-This option causes all configuration options to be reset to their
-default values as if the environment variable POSIXLY_CORRECT had
-been set.
-
-=item auto_abbrev
-
-Allow option names to be abbreviated to uniqueness.
-Default is enabled unless environment variable
-POSIXLY_CORRECT has been set, in which case C<auto_abbrev> is disabled.
-
-=item getopt_compat
-
-Allow C<+> to start options.
-Default is enabled unless environment variable
-POSIXLY_CORRECT has been set, in which case C<getopt_compat> is disabled.
-
-=item gnu_compat
-
-C<gnu_compat> controls whether C<--opt=> is allowed, and what it should
-do. Without C<gnu_compat>, C<--opt=> gives an error. With C<gnu_compat>,
-C<--opt=> will give option C<opt> and empty value.
-This is the way GNU getopt_long() does it.
-
-=item gnu_getopt
-
-This is a short way of setting C<gnu_compat> C<bundling> C<permute>
-C<no_getopt_compat>. With C<gnu_getopt>, command line handling should be
-fully compatible with GNU getopt_long().
-
-=item require_order
-
-Whether command line arguments are allowed to be mixed with options.
-Default is disabled unless environment variable
-POSIXLY_CORRECT has been set, in which case C<require_order> is enabled.
-
-See also C<permute>, which is the opposite of C<require_order>.
-
-=item permute
-
-Whether command line arguments are allowed to be mixed with options.
-Default is enabled unless environment variable
-POSIXLY_CORRECT has been set, in which case C<permute> is disabled.
-Note that C<permute> is the opposite of C<require_order>.
-
-If C<permute> is enabled, this means that
-
- --foo arg1 --bar arg2 arg3
-
-is equivalent to
-
- --foo --bar arg1 arg2 arg3
-
-If an argument call-back routine is specified, C<@ARGV> will always be
-empty upon succesful return of GetOptions() since all options have been
-processed. The only exception is when C<--> is used:
-
- --foo arg1 --bar arg2 -- arg3
-
-will call the call-back routine for arg1 and arg2, and terminate
-GetOptions() leaving C<"arg2"> in C<@ARGV>.
-
-If C<require_order> is enabled, options processing
-terminates when the first non-option is encountered.
-
- --foo arg1 --bar arg2 arg3
-
-is equivalent to
-
- --foo -- arg1 --bar arg2 arg3
-
-If C<pass_through> is also enabled, options processing will terminate
-at the first unrecognized option, or non-option, whichever comes
-first.
-
-=item bundling (default: disabled)
-
-Enabling this option will allow single-character options to be bundled.
-To distinguish bundles from long option names, long options I<must> be
-introduced with C<--> and single-character options (and bundles) with
-C<->.
-
-Note: disabling C<bundling> also disables C<bundling_override>.
-
-=item bundling_override (default: disabled)
-
-If C<bundling_override> is enabled, bundling is enabled as with
-C<bundling> but now long option names override option bundles.
-
-Note: disabling C<bundling_override> also disables C<bundling>.
-
-B<Note:> Using option bundling can easily lead to unexpected results,
-especially when mixing long options and bundles. Caveat emptor.
-
-=item ignore_case (default: enabled)
-
-If enabled, case is ignored when matching long option names. Single
-character options will be treated case-sensitive.
-
-Note: disabling C<ignore_case> also disables C<ignore_case_always>.
-
-=item ignore_case_always (default: disabled)
-
-When bundling is in effect, case is ignored on single-character
-options also.
-
-Note: disabling C<ignore_case_always> also disables C<ignore_case>.
-
-=item pass_through (default: disabled)
-
-Options that are unknown, ambiguous or supplied with an invalid option
-value are passed through in C<@ARGV> instead of being flagged as
-errors. This makes it possible to write wrapper scripts that process
-only part of the user supplied command line arguments, and pass the
-remaining options to some other program.
-
-If C<require_order> is enabled, options processing will terminate at
-the first unrecognized option, or non-option, whichever comes first.
-However, if C<permute> is enabled instead, results can become confusing.
-
-=item prefix
-
-The string that starts options. If a constant string is not
-sufficient, see C<prefix_pattern>.
-
-=item prefix_pattern
-
-A Perl pattern that identifies the strings that introduce options.
-Default is C<(--|-|\+)> unless environment variable
-POSIXLY_CORRECT has been set, in which case it is C<(--|-)>.
-
-=item debug (default: disabled)
-
-Enable debugging output.
-
-=back
-
-=head1 Return values and Errors
-
-Configuration errors and errors in the option definitions are
-signalled using die() and will terminate the calling program unless
-the call to Getopt::Long::GetOptions() was embedded in C<eval { ...
-}>, or die() was trapped using C<$SIG{__DIE__}>.
-
-GetOptions returns true to indicate success.
-It returns false when the function detected one or more errors during
-option parsing. These errors are signalled using warn() and can be
-trapped with C<$SIG{__WARN__}>.
-
-Errors that can't happen are signalled using Carp::croak().
-
-=head1 Legacy
-
-The earliest development of C<newgetopt.pl> started in 1990, with Perl
-version 4. As a result, its development, and the development of
-Getopt::Long, has gone through several stages. Since backward
-compatibility has always been extremely important, the current version
-of Getopt::Long still supports a lot of constructs that nowadays are
-no longer necessary or otherwise unwanted. This section describes
-briefly some of these 'features'.
-
-=head2 Default destinations
-
-When no destination is specified for an option, GetOptions will store
-the resultant value in a global variable named C<opt_>I<XXX>, where
-I<XXX> is the primary name of this option. When a progam executes
-under C<use strict> (recommended), these variables must be
-pre-declared with our() or C<use vars>.
-
- our $opt_length = 0;
- GetOptions ('length=i'); # will store in $opt_length
-
-To yield a usable Perl variable, characters that are not part of the
-syntax for variables are translated to underscores. For example,
-C<--fpp-struct-return> will set the variable
-C<$opt_fpp_struct_return>. Note that this variable resides in the
-namespace of the calling program, not necessarily C<main>. For
-example:
-
- GetOptions ("size=i", "sizes=i@");
-
-with command line "-size 10 -sizes 24 -sizes 48" will perform the
-equivalent of the assignments
-
- $opt_size = 10;
- @opt_sizes = (24, 48);
-
-=head2 Alternative option starters
-
-A string of alternative option starter characters may be passed as the
-first argument (or the first argument after a leading hash reference
-argument).
-
- my $len = 0;
- GetOptions ('/', 'length=i' => $len);
-
-Now the command line may look like:
-
- /length 24 -- arg
-
-Note that to terminate options processing still requires a double dash
-C<-->.
-
-GetOptions() will not interpret a leading C<< "<>" >> as option starters
-if the next argument is a reference. To force C<< "<" >> and C<< ">" >> as
-option starters, use C<< "><" >>. Confusing? Well, B<using a starter
-argument is strongly deprecated> anyway.
-
-=head2 Configuration variables
-
-Previous versions of Getopt::Long used variables for the purpose of
-configuring. Although manipulating these variables still work, it is
-strongly encouraged to use the C<Configure> routine that was introduced
-in version 2.17. Besides, it is much easier.
-
-=head1 Trouble Shooting
-
-=head2 Warning: Ignoring '!' modifier for short option
-
-This warning is issued when the '!' modifier is applied to a short
-(one-character) option and bundling is in effect. E.g.,
-
- Getopt::Long::Configure("bundling");
- GetOptions("foo|f!" => \$foo);
-
-Note that older Getopt::Long versions did not issue a warning, because
-the '!' modifier was applied to the first name only. This bug was
-fixed in 2.22.
-
-Solution: separate the long and short names and apply the '!' to the
-long names only, e.g.,
-
- GetOptions("foo!" => \$foo, "f" => \$foo);
-
-=head2 GetOptions does not return a false result when an option is not supplied
-
-That's why they're called 'options'.
-
-=head1 AUTHOR
-
-Johan Vromans <jvromans@squirrel.nl>
-
-=head1 COPYRIGHT AND DISCLAIMER
-
-This program is Copyright 2000,1990 by Johan Vromans.
-This program is free software; you can redistribute it and/or
-modify it under the terms of the Perl Artistic License or the
-GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-If you do not have a copy of the GNU General Public License write to
-the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
-MA 02139, USA.
-
-=cut
-
-# Local Variables:
-# eval: (load-file "pod.el")
-# End:
diff --git a/contrib/perl5/lib/Getopt/Std.pm b/contrib/perl5/lib/Getopt/Std.pm
deleted file mode 100644
index e5b369c..0000000
--- a/contrib/perl5/lib/Getopt/Std.pm
+++ /dev/null
@@ -1,176 +0,0 @@
-package Getopt::Std;
-require 5.000;
-require Exporter;
-
-=head1 NAME
-
-getopt - Process single-character switches with switch clustering
-
-getopts - Process single-character switches with switch clustering
-
-=head1 SYNOPSIS
-
- use Getopt::Std;
-
- getopt('oDI'); # -o, -D & -I take arg. Sets opt_* as a side effect.
- getopt('oDI', \%opts); # -o, -D & -I take arg. Values in %opts
- getopts('oif:'); # -o & -i are boolean flags, -f takes an argument
- # Sets opt_* as a side effect.
- getopts('oif:', \%opts); # options as above. Values in %opts
-
-=head1 DESCRIPTION
-
-The getopt() functions processes single-character switches with switch
-clustering. Pass one argument which is a string containing all switches
-that take an argument. For each switch found, sets $opt_x (where x is the
-switch name) to the value of the argument, or 1 if no argument. Switches
-which take an argument don't care whether there is a space between the
-switch and the argument.
-
-Note that, if your code is running under the recommended C<use strict
-'vars'> pragma, you will need to declare these package variables
-with "our":
-
- our($opt_foo, $opt_bar);
-
-For those of you who don't like additional global variables being created, getopt()
-and getopts() will also accept a hash reference as an optional second argument.
-Hash keys will be x (where x is the switch name) with key values the value of
-the argument or 1 if no argument is specified.
-
-To allow programs to process arguments that look like switches, but aren't,
-both functions will stop processing switches when they see the argument
-C<-->. The C<--> will be removed from @ARGV.
-
-=cut
-
-@ISA = qw(Exporter);
-@EXPORT = qw(getopt getopts);
-$VERSION = '1.02';
-
-# Process single-character switches with switch clustering. Pass one argument
-# which is a string containing all switches that take an argument. For each
-# switch found, sets $opt_x (where x is the switch name) to the value of the
-# argument, or 1 if no argument. Switches which take an argument don't care
-# whether there is a space between the switch and the argument.
-
-# Usage:
-# getopt('oDI'); # -o, -D & -I take arg. Sets opt_* as a side effect.
-
-sub getopt ($;$) {
- local($argumentative, $hash) = @_;
- local($_,$first,$rest);
- local @EXPORT;
-
- while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
- ($first,$rest) = ($1,$2);
- if (/^--$/) { # early exit if --
- shift @ARGV;
- last;
- }
- if (index($argumentative,$first) >= 0) {
- if ($rest ne '') {
- shift(@ARGV);
- }
- else {
- shift(@ARGV);
- $rest = shift(@ARGV);
- }
- if (ref $hash) {
- $$hash{$first} = $rest;
- }
- else {
- ${"opt_$first"} = $rest;
- push( @EXPORT, "\$opt_$first" );
- }
- }
- else {
- if (ref $hash) {
- $$hash{$first} = 1;
- }
- else {
- ${"opt_$first"} = 1;
- push( @EXPORT, "\$opt_$first" );
- }
- if ($rest ne '') {
- $ARGV[0] = "-$rest";
- }
- else {
- shift(@ARGV);
- }
- }
- }
- unless (ref $hash) {
- local $Exporter::ExportLevel = 1;
- import Getopt::Std;
- }
-}
-
-# Usage:
-# getopts('a:bc'); # -a takes arg. -b & -c not. Sets opt_* as a
-# # side effect.
-
-sub getopts ($;$) {
- local($argumentative, $hash) = @_;
- local(@args,$_,$first,$rest);
- local($errs) = 0;
- local @EXPORT;
-
- @args = split( / */, $argumentative );
- while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
- ($first,$rest) = ($1,$2);
- if (/^--$/) { # early exit if --
- shift @ARGV;
- last;
- }
- $pos = index($argumentative,$first);
- if ($pos >= 0) {
- if (defined($args[$pos+1]) and ($args[$pos+1] eq ':')) {
- shift(@ARGV);
- if ($rest eq '') {
- ++$errs unless @ARGV;
- $rest = shift(@ARGV);
- }
- if (ref $hash) {
- $$hash{$first} = $rest;
- }
- else {
- ${"opt_$first"} = $rest;
- push( @EXPORT, "\$opt_$first" );
- }
- }
- else {
- if (ref $hash) {
- $$hash{$first} = 1;
- }
- else {
- ${"opt_$first"} = 1;
- push( @EXPORT, "\$opt_$first" );
- }
- if ($rest eq '') {
- shift(@ARGV);
- }
- else {
- $ARGV[0] = "-$rest";
- }
- }
- }
- else {
- warn "Unknown option: $first\n";
- ++$errs;
- if ($rest ne '') {
- $ARGV[0] = "-$rest";
- }
- else {
- shift(@ARGV);
- }
- }
- }
- unless (ref $hash) {
- local $Exporter::ExportLevel = 1;
- import Getopt::Std;
- }
- $errs == 0;
-}
-
-1;
diff --git a/contrib/perl5/lib/I18N/Collate.pm b/contrib/perl5/lib/I18N/Collate.pm
deleted file mode 100644
index 64a03a2..0000000
--- a/contrib/perl5/lib/I18N/Collate.pm
+++ /dev/null
@@ -1,190 +0,0 @@
-package I18N::Collate;
-
-=head1 NAME
-
-I18N::Collate - compare 8-bit scalar data according to the current locale
-
- ***
-
- WARNING: starting from the Perl version 5.003_06
- the I18N::Collate interface for comparing 8-bit scalar data
- according to the current locale
-
- HAS BEEN DEPRECATED
-
- That is, please do not use it anymore for any new applications
- and please migrate the old applications away from it because its
- functionality was integrated into the Perl core language in the
- release 5.003_06.
-
- See the perllocale manual page for further information.
-
- ***
-
-=head1 SYNOPSIS
-
- use I18N::Collate;
- setlocale(LC_COLLATE, 'locale-of-your-choice');
- $s1 = new I18N::Collate "scalar_data_1";
- $s2 = new I18N::Collate "scalar_data_2";
-
-=head1 DESCRIPTION
-
-This module provides you with objects that will collate
-according to your national character set, provided that the
-POSIX setlocale() function is supported on your system.
-
-You can compare $s1 and $s2 above with
-
- $s1 le $s2
-
-to extract the data itself, you'll need a dereference: $$s1
-
-This module uses POSIX::setlocale(). The basic collation conversion is
-done by strxfrm() which terminates at NUL characters being a decent C
-routine. collate_xfrm() handles embedded NUL characters gracefully.
-
-The available locales depend on your operating system; try whether
-C<locale -a> shows them or man pages for "locale" or "nlsinfo" or the
-direct approach C<ls /usr/lib/nls/loc> or C<ls /usr/lib/nls> or
-C<ls /usr/lib/locale>. Not all the locales that your vendor supports
-are necessarily installed: please consult your operating system's
-documentation and possibly your local system administration. The
-locale names are probably something like C<xx_XX.(ISO)?8859-N> or
-C<xx_XX.(ISO)?8859N>, for example C<fr_CH.ISO8859-1> is the Swiss (CH)
-variant of French (fr), ISO Latin (8859) 1 (-1) which is the Western
-European character set.
-
-=cut
-
-# I18N::Collate.pm
-#
-# Author: Jarkko Hietaniemi <F<jhi@iki.fi>>
-# Helsinki University of Technology, Finland
-#
-# Acks: Guy Decoux <F<decoux@moulon.inra.fr>> understood
-# overloading magic much deeper than I and told
-# how to cut the size of this code by more than half.
-# (my first version did overload all of lt gt eq le ge cmp)
-#
-# Purpose: compare 8-bit scalar data according to the current locale
-#
-# Requirements: Perl5 POSIX::setlocale() and POSIX::strxfrm()
-#
-# Exports: setlocale 1)
-# collate_xfrm 2)
-#
-# Overloads: cmp # 3)
-#
-# Usage: use I18N::Collate;
-# setlocale(LC_COLLATE, 'locale-of-your-choice'); # 4)
-# $s1 = new I18N::Collate "scalar_data_1";
-# $s2 = new I18N::Collate "scalar_data_2";
-#
-# now you can compare $s1 and $s2: $s1 le $s2
-# to extract the data itself, you need to deref: $$s1
-#
-# Notes:
-# 1) this uses POSIX::setlocale
-# 2) the basic collation conversion is done by strxfrm() which
-# terminates at NUL characters being a decent C routine.
-# collate_xfrm handles embedded NUL characters gracefully.
-# 3) due to cmp and overload magic, lt le eq ge gt work also
-# 4) the available locales depend on your operating system;
-# try whether "locale -a" shows them or man pages for
-# "locale" or "nlsinfo" work or the more direct
-# approach "ls /usr/lib/nls/loc" or "ls /usr/lib/nls".
-# Not all the locales that your vendor supports
-# are necessarily installed: please consult your
-# operating system's documentation.
-# The locale names are probably something like
-# 'xx_XX.(ISO)?8859-N' or 'xx_XX.(ISO)?8859N',
-# for example 'fr_CH.ISO8859-1' is the Swiss (CH)
-# variant of French (fr), ISO Latin (8859) 1 (-1)
-# which is the Western European character set.
-#
-# Updated: 19961005
-#
-# ---
-
-use POSIX qw(strxfrm LC_COLLATE);
-use warnings::register;
-
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(collate_xfrm setlocale LC_COLLATE);
-@EXPORT_OK = qw();
-
-use overload qw(
-fallback 1
-cmp collate_cmp
-);
-
-sub new {
- my $new = $_[1];
-
- if (warnings::enabled() && $] >= 5.003_06) {
- unless ($please_use_I18N_Collate_even_if_deprecated) {
- warnings::warn <<___EOD___;
-***
-
- WARNING: starting from the Perl version 5.003_06
- the I18N::Collate interface for comparing 8-bit scalar data
- according to the current locale
-
- HAS BEEN DEPRECATED
-
- That is, please do not use it anymore for any new applications
- and please migrate the old applications away from it because its
- functionality was integrated into the Perl core language in the
- release 5.003_06.
-
- See the perllocale manual page for further information.
-
-***
-___EOD___
- $please_use_I18N_Collate_even_if_deprecated++;
- }
- }
-
- bless \$new;
-}
-
-sub setlocale {
- my ($category, $locale) = @_[0,1];
-
- POSIX::setlocale($category, $locale) if (defined $category);
- # the current $LOCALE
- $LOCALE = $locale || $ENV{'LC_COLLATE'} || $ENV{'LC_ALL'} || '';
-}
-
-sub C {
- my $s = ${$_[0]};
-
- $C->{$LOCALE}->{$s} = collate_xfrm($s)
- unless (defined $C->{$LOCALE}->{$s}); # cache when met
-
- $C->{$LOCALE}->{$s};
-}
-
-sub collate_xfrm {
- my $s = $_[0];
- my $x = '';
-
- for (split(/(\000+)/, $s)) {
- $x .= (/^\000/) ? $_ : strxfrm("$_\000");
- }
-
- $x;
-}
-
-sub collate_cmp {
- &C($_[0]) cmp &C($_[1]);
-}
-
-# init $LOCALE
-
-&I18N::Collate::setlocale();
-
-1; # keep require happy
diff --git a/contrib/perl5/lib/IPC/Open2.pm b/contrib/perl5/lib/IPC/Open2.pm
deleted file mode 100644
index a5a3561..0000000
--- a/contrib/perl5/lib/IPC/Open2.pm
+++ /dev/null
@@ -1,118 +0,0 @@
-package IPC::Open2;
-
-use strict;
-our ($VERSION, @ISA, @EXPORT);
-
-require 5.000;
-require Exporter;
-
-$VERSION = 1.01;
-@ISA = qw(Exporter);
-@EXPORT = qw(open2);
-
-=head1 NAME
-
-IPC::Open2, open2 - open a process for both reading and writing
-
-=head1 SYNOPSIS
-
- use IPC::Open2;
-
- $pid = open2(\*RDRFH, \*WTRFH, 'some cmd and args');
- # or without using the shell
- $pid = open2(\*RDRFH, \*WTRFH, 'some', 'cmd', 'and', 'args');
-
- # or with handle autovivification
- my($rdrfh, $wtrfh);
- $pid = open2($rdrfh, $wtrfh, 'some cmd and args');
- # or without using the shell
- $pid = open2($rdrfh, $wtrfh, 'some', 'cmd', 'and', 'args');
-
-=head1 DESCRIPTION
-
-The open2() function runs the given $cmd and connects $rdrfh for
-reading and $wtrfh for writing. It's what you think should work
-when you try
-
- $pid = open(HANDLE, "|cmd args|");
-
-The write filehandle will have autoflush turned on.
-
-If $rdrfh is a string (that is, a bareword filehandle rather than a glob
-or a reference) and it begins with C<< >& >>, then the child will send output
-directly to that file handle. If $wtrfh is a string that begins with
-C<< <& >>, then $wtrfh will be closed in the parent, and the child will read
-from it directly. In both cases, there will be a dup(2) instead of a
-pipe(2) made.
-
-If either reader or writer is the null string, this will be replaced
-by an autogenerated filehandle. If so, you must pass a valid lvalue
-in the parameter slot so it can be overwritten in the caller, or
-an exception will be raised.
-
-open2() returns the process ID of the child process. It doesn't return on
-failure: it just raises an exception matching C</^open2:/>. However,
-C<exec> failures in the child are not detected. You'll have to
-trap SIGPIPE yourself.
-
-open2() does not wait for and reap the child process after it exits.
-Except for short programs where it's acceptable to let the operating system
-take care of this, you need to do this yourself. This is normally as
-simple as calling C<waitpid $pid, 0> when you're done with the process.
-Failing to do this can result in an accumulation of defunct or "zombie"
-processes. See L<perlfunc/waitpid> for more information.
-
-This whole affair is quite dangerous, as you may block forever. It
-assumes it's going to talk to something like B<bc>, both writing
-to it and reading from it. This is presumably safe because you
-"know" that commands like B<bc> will read a line at a time and
-output a line at a time. Programs like B<sort> that read their
-entire input stream first, however, are quite apt to cause deadlock.
-
-The big problem with this approach is that if you don't have control
-over source code being run in the child process, you can't control
-what it does with pipe buffering. Thus you can't just open a pipe to
-C<cat -v> and continually read and write a line from it.
-
-The IO::Pty and Expect modules from CPAN can help with this, as they
-provide a real tty (well, a pseudo-tty, actually), which gets you
-back to line buffering in the invoked command again.
-
-=head1 WARNING
-
-The order of arguments differs from that of open3().
-
-=head1 SEE ALSO
-
-See L<IPC::Open3> for an alternative that handles STDERR as well. This
-function is really just a wrapper around open3().
-
-=cut
-
-# &open2: tom christiansen, <tchrist@convex.com>
-#
-# usage: $pid = open2('rdr', 'wtr', 'some cmd and args');
-# or $pid = open2('rdr', 'wtr', 'some', 'cmd', 'and', 'args');
-#
-# spawn the given $cmd and connect $rdr for
-# reading and $wtr for writing. return pid
-# of child, or 0 on failure.
-#
-# WARNING: this is dangerous, as you may block forever
-# unless you are very careful.
-#
-# $wtr is left unbuffered.
-#
-# abort program if
-# rdr or wtr are null
-# a system call fails
-
-require IPC::Open3;
-
-sub open2 {
- local $Carp::CarpLevel = $Carp::CarpLevel + 1;
- return IPC::Open3::_open3('open2', scalar caller,
- $_[1], $_[0], '>&STDERR', @_[2 .. $#_]);
-}
-
-1
diff --git a/contrib/perl5/lib/IPC/Open3.pm b/contrib/perl5/lib/IPC/Open3.pm
deleted file mode 100644
index 5c9c69a..0000000
--- a/contrib/perl5/lib/IPC/Open3.pm
+++ /dev/null
@@ -1,333 +0,0 @@
-package IPC::Open3;
-
-use strict;
-no strict 'refs'; # because users pass me bareword filehandles
-our ($VERSION, @ISA, @EXPORT);
-
-require Exporter;
-
-use Carp;
-use Symbol qw(gensym qualify);
-
-$VERSION = 1.0103;
-@ISA = qw(Exporter);
-@EXPORT = qw(open3);
-
-=head1 NAME
-
-IPC::Open3, open3 - open a process for reading, writing, and error handling
-
-=head1 SYNOPSIS
-
- $pid = open3(\*WTRFH, \*RDRFH, \*ERRFH,
- 'some cmd and args', 'optarg', ...);
-
- my($wtr, $rdr, $err);
- $pid = open3($wtr, $rdr, $err,
- 'some cmd and args', 'optarg', ...);
-
-=head1 DESCRIPTION
-
-Extremely similar to open2(), open3() spawns the given $cmd and
-connects RDRFH for reading, WTRFH for writing, and ERRFH for errors. If
-ERRFH is false, or the same file descriptor as RDRFH, then STDOUT and
-STDERR of the child are on the same filehandle. The WTRFH will have
-autoflush turned on.
-
-If WTRFH begins with C<< <& >>, then WTRFH will be closed in the parent, and
-the child will read from it directly. If RDRFH or ERRFH begins with
-C<< >& >>, then the child will send output directly to that filehandle.
-In both cases, there will be a dup(2) instead of a pipe(2) made.
-
-If either reader or writer is the null string, this will be replaced
-by an autogenerated filehandle. If so, you must pass a valid lvalue
-in the parameter slot so it can be overwritten in the caller, or
-an exception will be raised.
-
-The filehandles may also be integers, in which case they are understood
-as file descriptors.
-
-open3() returns the process ID of the child process. It doesn't return on
-failure: it just raises an exception matching C</^open3:/>. However,
-C<exec> failures in the child are not detected. You'll have to
-trap SIGPIPE yourself.
-
-open3() does not wait for and reap the child process after it exits.
-Except for short programs where it's acceptable to let the operating system
-take care of this, you need to do this yourself. This is normally as
-simple as calling C<waitpid $pid, 0> when you're done with the process.
-Failing to do this can result in an accumulation of defunct or "zombie"
-processes. See L<perlfunc/waitpid> for more information.
-
-If you try to read from the child's stdout writer and their stderr
-writer, you'll have problems with blocking, which means you'll want
-to use select() or the IO::Select, which means you'd best use
-sysread() instead of readline() for normal stuff.
-
-This is very dangerous, as you may block forever. It assumes it's
-going to talk to something like B<bc>, both writing to it and reading
-from it. This is presumably safe because you "know" that commands
-like B<bc> will read a line at a time and output a line at a time.
-Programs like B<sort> that read their entire input stream first,
-however, are quite apt to cause deadlock.
-
-The big problem with this approach is that if you don't have control
-over source code being run in the child process, you can't control
-what it does with pipe buffering. Thus you can't just open a pipe to
-C<cat -v> and continually read and write a line from it.
-
-=head1 WARNING
-
-The order of arguments differs from that of open2().
-
-=cut
-
-# &open3: Marc Horowitz <marc@mit.edu>
-# derived mostly from &open2 by tom christiansen, <tchrist@convex.com>
-# fixed for 5.001 by Ulrich Kunitz <kunitz@mai-koeln.com>
-# ported to Win32 by Ron Schmidt, Merrill Lynch almost ended my career
-# fixed for autovivving FHs, tchrist again
-# allow fd numbers to be used, by Frank Tobin
-#
-# $Id: open3.pl,v 1.1 1993/11/23 06:26:15 marc Exp $
-#
-# usage: $pid = open3('wtr', 'rdr', 'err' 'some cmd and args', 'optarg', ...);
-#
-# spawn the given $cmd and connect rdr for
-# reading, wtr for writing, and err for errors.
-# if err is '', or the same as rdr, then stdout and
-# stderr of the child are on the same fh. returns pid
-# of child (or dies on failure).
-
-
-# if wtr begins with '<&', then wtr will be closed in the parent, and
-# the child will read from it directly. if rdr or err begins with
-# '>&', then the child will send output directly to that fd. In both
-# cases, there will be a dup() instead of a pipe() made.
-
-
-# WARNING: this is dangerous, as you may block forever
-# unless you are very careful.
-#
-# $wtr is left unbuffered.
-#
-# abort program if
-# rdr or wtr are null
-# a system call fails
-
-our $Me = 'open3 (bug)'; # you should never see this, it's always localized
-
-# Fatal.pm needs to be fixed WRT prototypes.
-
-sub xfork {
- my $pid = fork;
- defined $pid or croak "$Me: fork failed: $!";
- return $pid;
-}
-
-sub xpipe {
- pipe $_[0], $_[1] or croak "$Me: pipe($_[0], $_[1]) failed: $!";
-}
-
-# I tried using a * prototype character for the filehandle but it still
-# disallows a bearword while compiling under strict subs.
-
-sub xopen {
- open $_[0], $_[1] or croak "$Me: open($_[0], $_[1]) failed: $!";
-}
-
-sub xclose {
- close $_[0] or croak "$Me: close($_[0]) failed: $!";
-}
-
-sub fh_is_fd {
- return $_[0] =~ /\A=?(\d+)\z/;
-}
-
-sub xfileno {
- return $1 if $_[0] =~ /\A=?(\d+)\z/; # deal with fh just being an fd
- return fileno $_[0];
-}
-
-my $do_spawn = $^O eq 'os2' || $^O eq 'MSWin32';
-
-sub _open3 {
- local $Me = shift;
- my($package, $dad_wtr, $dad_rdr, $dad_err, @cmd) = @_;
- my($dup_wtr, $dup_rdr, $dup_err, $kidpid);
-
- # simulate autovivification of filehandles because
- # it's too ugly to use @_ throughout to make perl do it for us
- # tchrist 5-Mar-00
-
- unless (eval {
- $dad_wtr = $_[1] = gensym unless defined $dad_wtr && length $dad_wtr;
- $dad_rdr = $_[2] = gensym unless defined $dad_rdr && length $dad_rdr;
- 1; })
- {
- # must strip crud for croak to add back, or looks ugly
- $@ =~ s/(?<=value attempted) at .*//s;
- croak "$Me: $@";
- }
-
- $dad_err ||= $dad_rdr;
-
- $dup_wtr = ($dad_wtr =~ s/^[<>]&//);
- $dup_rdr = ($dad_rdr =~ s/^[<>]&//);
- $dup_err = ($dad_err =~ s/^[<>]&//);
-
- # force unqualified filehandles into caller's package
- $dad_wtr = qualify $dad_wtr, $package unless fh_is_fd($dad_wtr);
- $dad_rdr = qualify $dad_rdr, $package unless fh_is_fd($dad_rdr);
- $dad_err = qualify $dad_err, $package unless fh_is_fd($dad_err);
-
- my $kid_rdr = gensym;
- my $kid_wtr = gensym;
- my $kid_err = gensym;
-
- xpipe $kid_rdr, $dad_wtr if !$dup_wtr;
- xpipe $dad_rdr, $kid_wtr if !$dup_rdr;
- xpipe $dad_err, $kid_err if !$dup_err && $dad_err ne $dad_rdr;
-
- $kidpid = $do_spawn ? -1 : xfork;
- if ($kidpid == 0) { # Kid
- # If she wants to dup the kid's stderr onto her stdout I need to
- # save a copy of her stdout before I put something else there.
- if ($dad_rdr ne $dad_err && $dup_err
- && xfileno($dad_err) == fileno(STDOUT)) {
- my $tmp = gensym;
- xopen($tmp, ">&$dad_err");
- $dad_err = $tmp;
- }
-
- if ($dup_wtr) {
- xopen \*STDIN, "<&$dad_wtr" if fileno(STDIN) != xfileno($dad_wtr);
- } else {
- xclose $dad_wtr;
- xopen \*STDIN, "<&=" . fileno $kid_rdr;
- }
- if ($dup_rdr) {
- xopen \*STDOUT, ">&$dad_rdr" if fileno(STDOUT) != xfileno($dad_rdr);
- } else {
- xclose $dad_rdr;
- xopen \*STDOUT, ">&=" . fileno $kid_wtr;
- }
- if ($dad_rdr ne $dad_err) {
- if ($dup_err) {
- # I have to use a fileno here because in this one case
- # I'm doing a dup but the filehandle might be a reference
- # (from the special case above).
- xopen \*STDERR, ">&" . xfileno($dad_err)
- if fileno(STDERR) != xfileno($dad_err);
- } else {
- xclose $dad_err;
- xopen \*STDERR, ">&=" . fileno $kid_err;
- }
- } else {
- xopen \*STDERR, ">&STDOUT" if fileno(STDERR) != fileno(STDOUT);
- }
- local($")=(" ");
- exec @cmd # XXX: wrong process to croak from
- or croak "$Me: exec of @cmd failed";
- } elsif ($do_spawn) {
- # All the bookkeeping of coincidence between handles is
- # handled in spawn_with_handles.
-
- my @close;
- if ($dup_wtr) {
- $kid_rdr = \*{$dad_wtr};
- push @close, $kid_rdr;
- } else {
- push @close, \*{$dad_wtr}, $kid_rdr;
- }
- if ($dup_rdr) {
- $kid_wtr = \*{$dad_rdr};
- push @close, $kid_wtr;
- } else {
- push @close, \*{$dad_rdr}, $kid_wtr;
- }
- if ($dad_rdr ne $dad_err) {
- if ($dup_err) {
- $kid_err = \*{$dad_err};
- push @close, $kid_err;
- } else {
- push @close, \*{$dad_err}, $kid_err;
- }
- } else {
- $kid_err = $kid_wtr;
- }
- require IO::Pipe;
- $kidpid = eval {
- spawn_with_handles( [ { mode => 'r',
- open_as => $kid_rdr,
- handle => \*STDIN },
- { mode => 'w',
- open_as => $kid_wtr,
- handle => \*STDOUT },
- { mode => 'w',
- open_as => $kid_err,
- handle => \*STDERR },
- ], \@close, @cmd);
- };
- die "$Me: $@" if $@;
- }
-
- xclose $kid_rdr if !$dup_wtr;
- xclose $kid_wtr if !$dup_rdr;
- xclose $kid_err if !$dup_err && $dad_rdr ne $dad_err;
- # If the write handle is a dup give it away entirely, close my copy
- # of it.
- xclose $dad_wtr if $dup_wtr;
-
- select((select($dad_wtr), $| = 1)[0]); # unbuffer pipe
- $kidpid;
-}
-
-sub open3 {
- if (@_ < 4) {
- local $" = ', ';
- croak "open3(@_): not enough arguments";
- }
- return _open3 'open3', scalar caller, @_
-}
-
-sub spawn_with_handles {
- my $fds = shift; # Fields: handle, mode, open_as
- my $close_in_child = shift;
- my ($fd, $pid, @saved_fh, $saved, %saved, @errs);
- require Fcntl;
-
- foreach $fd (@$fds) {
- $fd->{tmp_copy} = IO::Handle->new_from_fd($fd->{handle}, $fd->{mode});
- $saved{fileno $fd->{handle}} = $fd->{tmp_copy};
- }
- foreach $fd (@$fds) {
- bless $fd->{handle}, 'IO::Handle'
- unless eval { $fd->{handle}->isa('IO::Handle') } ;
- # If some of handles to redirect-to coincide with handles to
- # redirect, we need to use saved variants:
- $fd->{handle}->fdopen($saved{fileno $fd->{open_as}} || $fd->{open_as},
- $fd->{mode});
- }
- unless ($^O eq 'MSWin32') {
- # Stderr may be redirected below, so we save the err text:
- foreach $fd (@$close_in_child) {
- fcntl($fd, Fcntl::F_SETFD(), 1) or push @errs, "fcntl $fd: $!"
- unless $saved{fileno $fd}; # Do not close what we redirect!
- }
- }
-
- unless (@errs) {
- $pid = eval { system 1, @_ }; # 1 == P_NOWAIT
- push @errs, "IO::Pipe: Can't spawn-NOWAIT: $!" if !$pid || $pid < 0;
- }
-
- foreach $fd (@$fds) {
- $fd->{handle}->fdopen($fd->{tmp_copy}, $fd->{mode});
- $fd->{tmp_copy}->close or croak "Can't close: $!";
- }
- croak join "\n", @errs if @errs;
- return $pid;
-}
-
-1; # so require is happy
diff --git a/contrib/perl5/lib/Math/BigFloat.pm b/contrib/perl5/lib/Math/BigFloat.pm
deleted file mode 100644
index 1eefac2..0000000
--- a/contrib/perl5/lib/Math/BigFloat.pm
+++ /dev/null
@@ -1,398 +0,0 @@
-package Math::BigFloat;
-
-use Math::BigInt;
-
-use Exporter; # just for use to be happy
-@ISA = (Exporter);
-$VERSION = '0.02';
-
-use overload
-'+' => sub {new Math::BigFloat &fadd},
-'-' => sub {new Math::BigFloat
- $_[2]? fsub($_[1],${$_[0]}) : fsub(${$_[0]},$_[1])},
-'<=>' => sub {$_[2]? fcmp($_[1],${$_[0]}) : fcmp(${$_[0]},$_[1])},
-'cmp' => sub {$_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])},
-'*' => sub {new Math::BigFloat &fmul},
-'/' => sub {new Math::BigFloat
- $_[2]? scalar fdiv($_[1],${$_[0]}) :
- scalar fdiv(${$_[0]},$_[1])},
-'%' => sub {new Math::BigFloat
- $_[2]? scalar fmod($_[1],${$_[0]}) :
- scalar fmod(${$_[0]},$_[1])},
-'neg' => sub {new Math::BigFloat &fneg},
-'abs' => sub {new Math::BigFloat &fabs},
-
-qw(
-"" stringify
-0+ numify) # Order of arguments unsignificant
-;
-
-sub new {
- my ($class) = shift;
- my ($foo) = fnorm(shift);
- bless \$foo, $class;
-}
-
-sub numify { 0 + "${$_[0]}" } # Not needed, additional overhead
- # comparing to direct compilation based on
- # stringify
-sub stringify {
- my $n = ${$_[0]};
-
- my $minus = ($n =~ s/^([+-])// && $1 eq '-');
- $n =~ s/E//;
-
- $n =~ s/([-+]\d+)$//;
-
- my $e = $1;
- my $ln = length($n);
-
- if ( defined $e )
- {
- if ($e > 0) {
- $n .= "0" x $e . '.';
- } elsif (abs($e) < $ln) {
- substr($n, $ln + $e, 0) = '.';
- } else {
- $n = '.' . ("0" x (abs($e) - $ln)) . $n;
- }
- }
- $n = "-$n" if $minus;
-
- # 1 while $n =~ s/(.*\d)(\d\d\d)/$1,$2/;
-
- return $n;
-}
-
-$div_scale = 40;
-
-# Rounding modes one of 'even', 'odd', '+inf', '-inf', 'zero' or 'trunc'.
-
-$rnd_mode = 'even';
-
-sub fadd; sub fsub; sub fmul; sub fdiv;
-sub fneg; sub fabs; sub fcmp;
-sub fround; sub ffround;
-sub fnorm; sub fsqrt;
-
-# Convert a number to canonical string form.
-# Takes something that looks like a number and converts it to
-# the form /^[+-]\d+E[+-]\d+$/.
-sub fnorm { #(string) return fnum_str
- local($_) = @_;
- s/\s+//g; # strip white space
- no warnings; # $4 and $5 below might legitimately be undefined
- if (/^([+-]?)(\d*)(\.(\d*))?([Ee]([+-]?\d+))?$/ && "$2$4" ne '') {
- &norm(($1 ? "$1$2$4" : "+$2$4"),(($4 ne '') ? $6-length($4) : $6));
- } else {
- 'NaN';
- }
-}
-
-# normalize number -- for internal use
-sub norm { #(mantissa, exponent) return fnum_str
- local($_, $exp) = @_;
- $exp = 0 unless defined $exp;
- if ($_ eq 'NaN') {
- 'NaN';
- } else {
- s/^([+-])0+/$1/; # strip leading zeros
- if (length($_) == 1) {
- '+0E+0';
- } else {
- $exp += length($1) if (s/(0+)$//); # strip trailing zeros
- sprintf("%sE%+ld", $_, $exp);
- }
- }
-}
-
-# negation
-sub fneg { #(fnum_str) return fnum_str
- local($_) = fnorm($_[$[]);
- vec($_,0,8) ^= ord('+') ^ ord('-') unless $_ eq '+0E+0'; # flip sign
- s/^H/N/;
- $_;
-}
-
-# absolute value
-sub fabs { #(fnum_str) return fnum_str
- local($_) = fnorm($_[$[]);
- s/^-/+/; # mash sign
- $_;
-}
-
-# multiplication
-sub fmul { #(fnum_str, fnum_str) return fnum_str
- local($x,$y) = (fnorm($_[$[]),fnorm($_[$[+1]));
- if ($x eq 'NaN' || $y eq 'NaN') {
- 'NaN';
- } else {
- local($xm,$xe) = split('E',$x);
- local($ym,$ye) = split('E',$y);
- &norm(Math::BigInt::bmul($xm,$ym),$xe+$ye);
- }
-}
-
-# addition
-sub fadd { #(fnum_str, fnum_str) return fnum_str
- local($x,$y) = (fnorm($_[$[]),fnorm($_[$[+1]));
- if ($x eq 'NaN' || $y eq 'NaN') {
- 'NaN';
- } else {
- local($xm,$xe) = split('E',$x);
- local($ym,$ye) = split('E',$y);
- ($xm,$xe,$ym,$ye) = ($ym,$ye,$xm,$xe) if ($xe < $ye);
- &norm(Math::BigInt::badd($ym,$xm.('0' x ($xe-$ye))),$ye);
- }
-}
-
-# subtraction
-sub fsub { #(fnum_str, fnum_str) return fnum_str
- fadd($_[$[],fneg($_[$[+1]));
-}
-
-# division
-# args are dividend, divisor, scale (optional)
-# result has at most max(scale, length(dividend), length(divisor)) digits
-sub fdiv #(fnum_str, fnum_str[,scale]) return fnum_str
-{
- local($x,$y,$scale) = (fnorm($_[$[]),fnorm($_[$[+1]),$_[$[+2]);
- if ($x eq 'NaN' || $y eq 'NaN' || $y eq '+0E+0') {
- 'NaN';
- } else {
- local($xm,$xe) = split('E',$x);
- local($ym,$ye) = split('E',$y);
- $scale = $div_scale if (!$scale);
- $scale = length($xm)-1 if (length($xm)-1 > $scale);
- $scale = length($ym)-1 if (length($ym)-1 > $scale);
- $scale = $scale + length($ym) - length($xm);
- &norm(&round(Math::BigInt::bdiv($xm.('0' x $scale),$ym),
- Math::BigInt::babs($ym)),
- $xe-$ye-$scale);
- }
-}
-
-# modular division
-# args are dividend, divisor
-sub fmod #(fnum_str, fnum_str) return fnum_str
-{
- local($x,$y) = (fnorm($_[$[]),fnorm($_[$[+1]));
- if ($x eq 'NaN' || $y eq 'NaN' || $y eq '+0E+0') {
- 'NaN';
- } else {
- local($xm,$xe) = split('E',$x);
- local($ym,$ye) = split('E',$y);
- if ( $xe < $ye )
- {
- $ym .= ('0' x ($ye-$xe));
- }
- else
- {
- $xm .= ('0' x ($xe-$ye));
- }
- &norm(Math::BigInt::bmod($xm,$ym));
- }
-}
-# round int $q based on fraction $r/$base using $rnd_mode
-sub round { #(int_str, int_str, int_str) return int_str
- local($q,$r,$base) = @_;
- if ($q eq 'NaN' || $r eq 'NaN') {
- 'NaN';
- } elsif ($rnd_mode eq 'trunc') {
- $q; # just truncate
- } else {
- local($cmp) = Math::BigInt::bcmp(Math::BigInt::bmul($r,'+2'),$base);
- if ( $cmp < 0 ||
- ($cmp == 0 && (
- ($rnd_mode eq 'zero' ) ||
- ($rnd_mode eq '-inf' && (substr($q,$[,1) eq '+')) ||
- ($rnd_mode eq '+inf' && (substr($q,$[,1) eq '-')) ||
- ($rnd_mode eq 'even' && $q =~ /[24680]$/ ) ||
- ($rnd_mode eq 'odd' && $q =~ /[13579]$/ ) )
- )
- ) {
- $q; # round down
- } else {
- Math::BigInt::badd($q, ((substr($q,$[,1) eq '-') ? '-1' : '+1'));
- # round up
- }
- }
-}
-
-# round the mantissa of $x to $scale digits
-sub fround { #(fnum_str, scale) return fnum_str
- local($x,$scale) = (fnorm($_[$[]),$_[$[+1]);
- if ($x eq 'NaN' || $scale <= 0) {
- $x;
- } else {
- local($xm,$xe) = split('E',$x);
- if (length($xm)-1 <= $scale) {
- $x;
- } else {
- &norm(&round(substr($xm,$[,$scale+1),
- "+0".substr($xm,$[+$scale+1),"+1"."0" x length(substr($xm,$[+$scale+1))),
- $xe+length($xm)-$scale-1);
- }
- }
-}
-
-# round $x at the 10 to the $scale digit place
-sub ffround { #(fnum_str, scale) return fnum_str
- local($x,$scale) = (fnorm($_[$[]),$_[$[+1]);
- if ($x eq 'NaN') {
- 'NaN';
- } else {
- local($xm,$xe) = split('E',$x);
- if ($xe >= $scale) {
- $x;
- } else {
- $xe = length($xm)+$xe-$scale;
- if ($xe < 1) {
- '+0E+0';
- } elsif ($xe == 1) {
- # The first substr preserves the sign, passing a non-
- # normalized "-0" to &round when rounding -0.006 (for
- # example), purely so &round won't lose the sign.
- &norm(&round(substr($xm,$[,1).'0',
- "+0".substr($xm,$[+1),
- "+1"."0" x length(substr($xm,$[+1))), $scale);
- } else {
- &norm(&round(substr($xm,$[,$xe),
- "+0".substr($xm,$[+$xe),
- "+1"."0" x length(substr($xm,$[+$xe))), $scale);
- }
- }
- }
-}
-
-# compare 2 values returns one of undef, <0, =0, >0
-# returns undef if either or both input value are not numbers
-sub fcmp #(fnum_str, fnum_str) return cond_code
-{
- local($x, $y) = (fnorm($_[$[]),fnorm($_[$[+1]));
- if ($x eq "NaN" || $y eq "NaN") {
- undef;
- } else {
- local($xm,$xe,$ym,$ye) = split('E', $x."E$y");
- if ($xm eq '+0' || $ym eq '+0') {
- return $xm <=> $ym;
- }
- if ( $xe < $ye ) # adjust the exponents to be equal
- {
- $ym .= '0' x ($ye - $xe);
- $ye = $xe;
- }
- elsif ( $ye < $xe ) # same here
- {
- $xm .= '0' x ($xe - $ye);
- $xe = $ye;
- }
- return Math::BigInt::cmp($xm,$ym);
- }
-}
-
-# square root by Newtons method.
-sub fsqrt { #(fnum_str[, scale]) return fnum_str
- local($x, $scale) = (fnorm($_[$[]), $_[$[+1]);
- if ($x eq 'NaN' || $x =~ /^-/) {
- 'NaN';
- } elsif ($x eq '+0E+0') {
- '+0E+0';
- } else {
- local($xm, $xe) = split('E',$x);
- $scale = $div_scale if (!$scale);
- $scale = length($xm)-1 if ($scale < length($xm)-1);
- local($gs, $guess) = (1, sprintf("1E%+d", (length($xm)+$xe-1)/2));
- while ($gs < 2*$scale) {
- $guess = fmul(fadd($guess,fdiv($x,$guess,$gs*2)),".5");
- $gs *= 2;
- }
- new Math::BigFloat &fround($guess, $scale);
- }
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Math::BigFloat - Arbitrary length float math package
-
-=head1 SYNOPSIS
-
- use Math::BigFloat;
- $f = Math::BigFloat->new($string);
-
- $f->fadd(NSTR) return NSTR addition
- $f->fsub(NSTR) return NSTR subtraction
- $f->fmul(NSTR) return NSTR multiplication
- $f->fdiv(NSTR[,SCALE]) returns NSTR division to SCALE places
- $f->fmod(NSTR) returns NSTR modular remainder
- $f->fneg() return NSTR negation
- $f->fabs() return NSTR absolute value
- $f->fcmp(NSTR) return CODE compare undef,<0,=0,>0
- $f->fround(SCALE) return NSTR round to SCALE digits
- $f->ffround(SCALE) return NSTR round at SCALEth place
- $f->fnorm() return (NSTR) normalize
- $f->fsqrt([SCALE]) return NSTR sqrt to SCALE places
-
-=head1 DESCRIPTION
-
-All basic math operations are overloaded if you declare your big
-floats as
-
- $float = new Math::BigFloat "2.123123123123123123123123123123123";
-
-=over 2
-
-=item number format
-
-canonical strings have the form /[+-]\d+E[+-]\d+/ . Input values can
-have embedded whitespace.
-
-=item Error returns 'NaN'
-
-An input parameter was "Not a Number" or divide by zero or sqrt of
-negative number.
-
-=item Division is computed to
-
-C<max($Math::BigFloat::div_scale,length(dividend)+length(divisor))>
-digits by default.
-Also used for default sqrt scale.
-
-=item Rounding is performed
-
-according to the value of
-C<$Math::BigFloat::rnd_mode>:
-
- trunc truncate the value
- zero round towards 0
- +inf round towards +infinity (round up)
- -inf round towards -infinity (round down)
- even round to the nearest, .5 to the even digit
- odd round to the nearest, .5 to the odd digit
-
-The default is C<even> rounding.
-
-=back
-
-=head1 BUGS
-
-The current version of this module is a preliminary version of the
-real thing that is currently (as of perl5.002) under development.
-
-The printf subroutine does not use the value of
-C<$Math::BigFloat::rnd_mode> when rounding values for printing.
-Consequently, the way to print rounded values is
-to specify the number of digits both as an
-argument to C<ffround> and in the C<%f> printf string,
-as follows:
-
- printf "%.3f\n", $bigfloat->ffround(-3);
-
-=head1 AUTHOR
-
-Mark Biggar
-Patches by John Peacock Apr 2001
-=cut
diff --git a/contrib/perl5/lib/Math/BigInt.pm b/contrib/perl5/lib/Math/BigInt.pm
deleted file mode 100644
index 066577d..0000000
--- a/contrib/perl5/lib/Math/BigInt.pm
+++ /dev/null
@@ -1,519 +0,0 @@
-package Math::BigInt;
-$VERSION='0.01';
-
-use overload
-'+' => sub {new Math::BigInt &badd},
-'-' => sub {new Math::BigInt
- $_[2]? bsub($_[1],${$_[0]}) : bsub(${$_[0]},$_[1])},
-'<=>' => sub {$_[2]? bcmp($_[1],${$_[0]}) : bcmp(${$_[0]},$_[1])},
-'cmp' => sub {$_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])},
-'*' => sub {new Math::BigInt &bmul},
-'/' => sub {new Math::BigInt
- $_[2]? scalar bdiv($_[1],${$_[0]}) :
- scalar bdiv(${$_[0]},$_[1])},
-'%' => sub {new Math::BigInt
- $_[2]? bmod($_[1],${$_[0]}) : bmod(${$_[0]},$_[1])},
-'**' => sub {new Math::BigInt
- $_[2]? bpow($_[1],${$_[0]}) : bpow(${$_[0]},$_[1])},
-'neg' => sub {new Math::BigInt &bneg},
-'abs' => sub {new Math::BigInt &babs},
-'<<' => sub {new Math::BigInt
- $_[2]? blsft($_[1],${$_[0]}) : blsft(${$_[0]},$_[1])},
-'>>' => sub {new Math::BigInt
- $_[2]? brsft($_[1],${$_[0]}) : brsft(${$_[0]},$_[1])},
-'&' => sub {new Math::BigInt &band},
-'|' => sub {new Math::BigInt &bior},
-'^' => sub {new Math::BigInt &bxor},
-'~' => sub {new Math::BigInt &bnot},
-
-qw(
-"" stringify
-0+ numify) # Order of arguments unsignificant
-;
-
-$NaNOK=1;
-
-sub new {
- my($class) = shift;
- my($foo) = bnorm(shift);
- die "Not a number initialized to Math::BigInt" if !$NaNOK && $foo eq "NaN";
- bless \$foo, $class;
-}
-sub stringify { "${$_[0]}" }
-sub numify { 0 + "${$_[0]}" } # Not needed, additional overhead
- # comparing to direct compilation based on
- # stringify
-sub import {
- shift;
- return unless @_;
- die "unknown import: @_" unless @_ == 1 and $_[0] eq ':constant';
- overload::constant integer => sub {Math::BigInt->new(shift)};
-}
-
-$zero = 0;
-
-# overcome a floating point problem on certain osnames (posix-bc, os390)
-BEGIN {
- my $x = 100000.0;
- my $use_mult = int($x*1e-5)*1e5 == $x ? 1 : 0;
-}
-
-# normalize string form of number. Strip leading zeros. Strip any
-# white space and add a sign, if missing.
-# Strings that are not numbers result the value 'NaN'.
-
-sub bnorm { #(num_str) return num_str
- local($_) = @_;
- s/\s+//g; # strip white space
- if (s/^([+-]?)0*(\d+)$/$1$2/) { # test if number
- substr($_,$[,0) = '+' unless $1; # Add missing sign
- s/^-0/+0/;
- $_;
- } else {
- 'NaN';
- }
-}
-
-# Convert a number from string format to internal base 100000 format.
-# Assumes normalized value as input.
-sub internal { #(num_str) return int_num_array
- local($d) = @_;
- ($is,$il) = (substr($d,$[,1),length($d)-2);
- substr($d,$[,1) = '';
- ($is, reverse(unpack("a" . ($il%5+1) . ("a5" x ($il/5)), $d)));
-}
-
-# Convert a number from internal base 100000 format to string format.
-# This routine scribbles all over input array.
-sub external { #(int_num_array) return num_str
- $es = shift;
- grep($_ > 9999 || ($_ = substr('0000'.$_,-5)), @_); # zero pad
- &bnorm(join('', $es, reverse(@_))); # reverse concat and normalize
-}
-
-# Negate input value.
-sub bneg { #(num_str) return num_str
- local($_) = &bnorm(@_);
- return $_ if $_ eq '+0' or $_ eq 'NaN';
- vec($_,0,8) ^= ord('+') ^ ord('-');
- $_;
-}
-
-# Returns the absolute value of the input.
-sub babs { #(num_str) return num_str
- &abs(&bnorm(@_));
-}
-
-sub abs { # post-normalized abs for internal use
- local($_) = @_;
- s/^-/+/;
- $_;
-}
-
-# Compares 2 values. Returns one of undef, <0, =0, >0. (suitable for sort)
-sub bcmp { #(num_str, num_str) return cond_code
- local($x,$y) = (&bnorm($_[$[]),&bnorm($_[$[+1]));
- if ($x eq 'NaN') {
- undef;
- } elsif ($y eq 'NaN') {
- undef;
- } else {
- &cmp($x,$y) <=> 0;
- }
-}
-
-sub cmp { # post-normalized compare for internal use
- local($cx, $cy) = @_;
-
- return 0 if ($cx eq $cy);
-
- local($sx, $sy) = (substr($cx, 0, 1), substr($cy, 0, 1));
- local($ld);
-
- if ($sx eq '+') {
- return 1 if ($sy eq '-' || $cy eq '+0');
- $ld = length($cx) - length($cy);
- return $ld if ($ld);
- return $cx cmp $cy;
- } else { # $sx eq '-'
- return -1 if ($sy eq '+');
- $ld = length($cy) - length($cx);
- return $ld if ($ld);
- return $cy cmp $cx;
- }
-}
-
-sub badd { #(num_str, num_str) return num_str
- local(*x, *y); ($x, $y) = (&bnorm($_[$[]),&bnorm($_[$[+1]));
- if ($x eq 'NaN') {
- 'NaN';
- } elsif ($y eq 'NaN') {
- 'NaN';
- } else {
- @x = &internal($x); # convert to internal form
- @y = &internal($y);
- local($sx, $sy) = (shift @x, shift @y); # get signs
- if ($sx eq $sy) {
- &external($sx, &add(*x, *y)); # if same sign add
- } else {
- ($x, $y) = (&abs($x),&abs($y)); # make abs
- if (&cmp($y,$x) > 0) {
- &external($sy, &sub(*y, *x));
- } else {
- &external($sx, &sub(*x, *y));
- }
- }
- }
-}
-
-sub bsub { #(num_str, num_str) return num_str
- &badd($_[$[],&bneg($_[$[+1]));
-}
-
-# GCD -- Euclids algorithm Knuth Vol 2 pg 296
-sub bgcd { #(num_str, num_str) return num_str
- local($x,$y) = (&bnorm($_[$[]),&bnorm($_[$[+1]));
- if ($x eq 'NaN' || $y eq 'NaN') {
- 'NaN';
- } else {
- ($x, $y) = ($y,&bmod($x,$y)) while $y ne '+0';
- $x;
- }
-}
-
-# routine to add two base 1e5 numbers
-# stolen from Knuth Vol 2 Algorithm A pg 231
-# there are separate routines to add and sub as per Kunth pg 233
-sub add { #(int_num_array, int_num_array) return int_num_array
- local(*x, *y) = @_;
- $car = 0;
- for $x (@x) {
- last unless @y || $car;
- $x -= 1e5 if $car = (($x += (@y ? shift(@y) : 0) + $car) >= 1e5) ? 1 : 0;
- }
- for $y (@y) {
- last unless $car;
- $y -= 1e5 if $car = (($y += $car) >= 1e5) ? 1 : 0;
- }
- (@x, @y, $car);
-}
-
-# subtract base 1e5 numbers -- stolen from Knuth Vol 2 pg 232, $x > $y
-sub sub { #(int_num_array, int_num_array) return int_num_array
- local(*sx, *sy) = @_;
- $bar = 0;
- for $sx (@sx) {
- last unless @sy || $bar;
- $sx += 1e5 if $bar = (($sx -= (@sy ? shift(@sy) : 0) + $bar) < 0);
- }
- @sx;
-}
-
-# multiply two numbers -- stolen from Knuth Vol 2 pg 233
-sub bmul { #(num_str, num_str) return num_str
- local(*x, *y); ($x, $y) = (&bnorm($_[$[]), &bnorm($_[$[+1]));
- if ($x eq 'NaN') {
- 'NaN';
- } elsif ($y eq 'NaN') {
- 'NaN';
- } else {
- @x = &internal($x);
- @y = &internal($y);
- &external(&mul(*x,*y));
- }
-}
-
-# multiply two numbers in internal representation
-# destroys the arguments, supposes that two arguments are different
-sub mul { #(*int_num_array, *int_num_array) return int_num_array
- local(*x, *y) = (shift, shift);
- local($signr) = (shift @x ne shift @y) ? '-' : '+';
- @prod = ();
- for $x (@x) {
- ($car, $cty) = (0, $[);
- for $y (@y) {
- $prod = $x * $y + ($prod[$cty] || 0) + $car;
- if ($use_mult) {
- $prod[$cty++] =
- $prod - ($car = int($prod * 1e-5)) * 1e5;
- }
- else {
- $prod[$cty++] =
- $prod - ($car = int($prod / 1e5)) * 1e5;
- }
- }
- $prod[$cty] += $car if $car;
- $x = shift @prod;
- }
- ($signr, @x, @prod);
-}
-
-# modulus
-sub bmod { #(num_str, num_str) return num_str
- (&bdiv(@_))[$[+1];
-}
-
-sub bdiv { #(dividend: num_str, divisor: num_str) return num_str
- local (*x, *y); ($x, $y) = (&bnorm($_[$[]), &bnorm($_[$[+1]));
- return wantarray ? ('NaN','NaN') : 'NaN'
- if ($x eq 'NaN' || $y eq 'NaN' || $y eq '+0');
- return wantarray ? ('+0',$x) : '+0' if (&cmp(&abs($x),&abs($y)) < 0);
- @x = &internal($x); @y = &internal($y);
- $srem = $y[$[];
- $sr = (shift @x ne shift @y) ? '-' : '+';
- $car = $bar = $prd = 0;
- if (($dd = int(1e5/($y[$#y]+1))) != 1) {
- for $x (@x) {
- $x = $x * $dd + $car;
- if ($use_mult) {
- $x -= ($car = int($x * 1e-5)) * 1e5;
- }
- else {
- $x -= ($car = int($x / 1e5)) * 1e5;
- }
- }
- push(@x, $car); $car = 0;
- for $y (@y) {
- $y = $y * $dd + $car;
- if ($use_mult) {
- $y -= ($car = int($y * 1e-5)) * 1e5;
- }
- else {
- $y -= ($car = int($y / 1e5)) * 1e5;
- }
- }
- }
- else {
- push(@x, 0);
- }
- @q = (); ($v2,$v1) = @y[-2,-1];
- $v2 = 0 unless $v2;
- while ($#x > $#y) {
- ($u2,$u1,$u0) = @x[-3..-1];
- $u2 = 0 unless $u2;
- $q = (($u0 == $v1) ? 99999 : int(($u0*1e5+$u1)/$v1));
- --$q while ($v2*$q > ($u0*1e5+$u1-$q*$v1)*1e5+$u2);
- if ($q) {
- ($car, $bar) = (0,0);
- for ($y = $[, $x = $#x-$#y+$[-1; $y <= $#y; ++$y,++$x) {
- $prd = $q * $y[$y] + $car;
- if ($use_mult) {
- $prd -= ($car = int($prd * 1e-5)) * 1e5;
- }
- else {
- $prd -= ($car = int($prd / 1e5)) * 1e5;
- }
- $x[$x] += 1e5 if ($bar = (($x[$x] -= $prd + $bar) < 0));
- }
- if ($x[$#x] < $car + $bar) {
- $car = 0; --$q;
- for ($y = $[, $x = $#x-$#y+$[-1; $y <= $#y; ++$y,++$x) {
- $x[$x] -= 1e5
- if ($car = (($x[$x] += $y[$y] + $car) > 1e5));
- }
- }
- }
- pop(@x); unshift(@q, $q);
- }
- if (wantarray) {
- @d = ();
- if ($dd != 1) {
- $car = 0;
- for $x (reverse @x) {
- $prd = $car * 1e5 + $x;
- $car = $prd - ($tmp = int($prd / $dd)) * $dd;
- unshift(@d, $tmp);
- }
- }
- else {
- @d = @x;
- }
- (&external($sr, @q), &external($srem, @d, $zero));
- } else {
- &external($sr, @q);
- }
-}
-
-# compute power of two numbers -- stolen from Knuth Vol 2 pg 233
-sub bpow { #(num_str, num_str) return num_str
- local(*x, *y); ($x, $y) = (&bnorm($_[$[]), &bnorm($_[$[+1]));
- if ($x eq 'NaN') {
- 'NaN';
- } elsif ($y eq 'NaN') {
- 'NaN';
- } elsif ($x eq '+1') {
- '+1';
- } elsif ($x eq '-1') {
- &bmod($x,2) ? '-1': '+1';
- } elsif ($y =~ /^-/) {
- 'NaN';
- } elsif ($x eq '+0' && $y eq '+0') {
- 'NaN';
- } else {
- @x = &internal($x);
- local(@pow2)=@x;
- local(@pow)=&internal("+1");
- local($y1,$res,@tmp1,@tmp2)=(1); # need tmp to send to mul
- while ($y ne '+0') {
- ($y,$res)=&bdiv($y,2);
- if ($res ne '+0') {@tmp=@pow2; @pow=&mul(*pow,*tmp);}
- if ($y ne '+0') {@tmp=@pow2;@pow2=&mul(*pow2,*tmp);}
- }
- &external(@pow);
- }
-}
-
-# compute x << y, y >= 0
-sub blsft { #(num_str, num_str) return num_str
- &bmul($_[$[], &bpow(2, $_[$[+1]));
-}
-
-# compute x >> y, y >= 0
-sub brsft { #(num_str, num_str) return num_str
- &bdiv($_[$[], &bpow(2, $_[$[+1]));
-}
-
-# compute x & y
-sub band { #(num_str, num_str) return num_str
- local($x,$y,$r,$m,$xr,$yr) = (&bnorm($_[$[]),&bnorm($_[$[+1]),0,1);
- if ($x eq 'NaN' || $y eq 'NaN') {
- 'NaN';
- } else {
- while ($x ne '+0' && $y ne '+0') {
- ($x, $xr) = &bdiv($x, 0x10000);
- ($y, $yr) = &bdiv($y, 0x10000);
- $r = &badd(&bmul(int $xr & $yr, $m), $r);
- $m = &bmul($m, 0x10000);
- }
- $r;
- }
-}
-
-# compute x | y
-sub bior { #(num_str, num_str) return num_str
- local($x,$y,$r,$m,$xr,$yr) = (&bnorm($_[$[]),&bnorm($_[$[+1]),0,1);
- if ($x eq 'NaN' || $y eq 'NaN') {
- 'NaN';
- } else {
- while ($x ne '+0' || $y ne '+0') {
- ($x, $xr) = &bdiv($x, 0x10000);
- ($y, $yr) = &bdiv($y, 0x10000);
- $r = &badd(&bmul(int $xr | $yr, $m), $r);
- $m = &bmul($m, 0x10000);
- }
- $r;
- }
-}
-
-# compute x ^ y
-sub bxor { #(num_str, num_str) return num_str
- local($x,$y,$r,$m,$xr,$yr) = (&bnorm($_[$[]),&bnorm($_[$[+1]),0,1);
- if ($x eq 'NaN' || $y eq 'NaN') {
- 'NaN';
- } else {
- while ($x ne '+0' || $y ne '+0') {
- ($x, $xr) = &bdiv($x, 0x10000);
- ($y, $yr) = &bdiv($y, 0x10000);
- $r = &badd(&bmul(int $xr ^ $yr, $m), $r);
- $m = &bmul($m, 0x10000);
- }
- $r;
- }
-}
-
-# represent ~x as twos-complement number
-sub bnot { #(num_str) return num_str
- &bsub(-1,$_[$[]);
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Math::BigInt - Arbitrary size integer math package
-
-=head1 SYNOPSIS
-
- use Math::BigInt;
- $i = Math::BigInt->new($string);
-
- $i->bneg return BINT negation
- $i->babs return BINT absolute value
- $i->bcmp(BINT) return CODE compare numbers (undef,<0,=0,>0)
- $i->badd(BINT) return BINT addition
- $i->bsub(BINT) return BINT subtraction
- $i->bmul(BINT) return BINT multiplication
- $i->bdiv(BINT) return (BINT,BINT) division (quo,rem) just quo if scalar
- $i->bmod(BINT) return BINT modulus
- $i->bgcd(BINT) return BINT greatest common divisor
- $i->bnorm return BINT normalization
- $i->blsft(BINT) return BINT left shift
- $i->brsft(BINT) return (BINT,BINT) right shift (quo,rem) just quo if scalar
- $i->band(BINT) return BINT bit-wise and
- $i->bior(BINT) return BINT bit-wise inclusive or
- $i->bxor(BINT) return BINT bit-wise exclusive or
- $i->bnot return BINT bit-wise not
-
-=head1 DESCRIPTION
-
-All basic math operations are overloaded if you declare your big
-integers as
-
- $i = new Math::BigInt '123 456 789 123 456 789';
-
-
-=over 2
-
-=item Canonical notation
-
-Big integer value are strings of the form C</^[+-]\d+$/> with leading
-zeros suppressed.
-
-=item Input
-
-Input values to these routines may be strings of the form
-C</^\s*[+-]?[\d\s]+$/>.
-
-=item Output
-
-Output values always always in canonical form
-
-=back
-
-Actual math is done in an internal format consisting of an array
-whose first element is the sign (/^[+-]$/) and whose remaining
-elements are base 100000 digits with the least significant digit first.
-The string 'NaN' is used to represent the result when input arguments
-are not numbers, as well as the result of dividing by zero.
-
-=head1 EXAMPLES
-
- '+0' canonical zero value
- ' -123 123 123' canonical value '-123123123'
- '1 23 456 7890' canonical value '+1234567890'
-
-
-=head1 Autocreating constants
-
-After C<use Math::BigInt ':constant'> all the integer decimal constants
-in the given scope are converted to C<Math::BigInt>. This conversion
-happens at compile time.
-
-In particular
-
- perl -MMath::BigInt=:constant -e 'print 2**100'
-
-print the integer value of C<2**100>. Note that without conversion of
-constants the expression 2**100 will be calculated as floating point number.
-
-=head1 BUGS
-
-The current version of this module is a preliminary version of the
-real thing that is currently (as of perl5.002) under development.
-
-=head1 AUTHOR
-
-Mark Biggar, overloaded interface by Ilya Zakharevich.
-
-=cut
diff --git a/contrib/perl5/lib/Math/Complex.pm b/contrib/perl5/lib/Math/Complex.pm
deleted file mode 100644
index 9812513..0000000
--- a/contrib/perl5/lib/Math/Complex.pm
+++ /dev/null
@@ -1,1889 +0,0 @@
-#
-# Complex numbers and associated mathematical functions
-# -- Raphael Manfredi Since Sep 1996
-# -- Jarkko Hietaniemi Since Mar 1997
-# -- Daniel S. Lewart Since Sep 1997
-#
-
-package Math::Complex;
-
-our($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $Inf);
-
-$VERSION = 1.31;
-
-BEGIN {
- unless ($^O eq 'unicosmk') {
- my $e = $!;
- # We do want an arithmetic overflow, Inf INF inf Infinity:.
- undef $Inf unless eval <<'EOE' and $Inf =~ /^inf(?:inity)?$/i;
- local $SIG{FPE} = sub {die};
- my $t = CORE::exp 30;
- $Inf = CORE::exp $t;
-EOE
- if (!defined $Inf) { # Try a different method
- undef $Inf unless eval <<'EOE' and $Inf =~ /^inf(?:inity)?$/i;
- local $SIG{FPE} = sub {die};
- my $t = 1;
- $Inf = $t + "1e99999999999999999999999999999999";
-EOE
- }
- $! = $e; # Clear ERANGE.
- }
- $Inf = "Inf" if !defined $Inf || !($Inf > 0); # Desperation.
-}
-
-use strict;
-
-my $i;
-my %LOGN;
-
-require Exporter;
-
-@ISA = qw(Exporter);
-
-my @trig = qw(
- pi
- tan
- csc cosec sec cot cotan
- asin acos atan
- acsc acosec asec acot acotan
- sinh cosh tanh
- csch cosech sech coth cotanh
- asinh acosh atanh
- acsch acosech asech acoth acotanh
- );
-
-@EXPORT = (qw(
- i Re Im rho theta arg
- sqrt log ln
- log10 logn cbrt root
- cplx cplxe
- ),
- @trig);
-
-%EXPORT_TAGS = (
- 'trig' => [@trig],
-);
-
-use overload
- '+' => \&plus,
- '-' => \&minus,
- '*' => \&multiply,
- '/' => \&divide,
- '**' => \&power,
- '==' => \&numeq,
- '<=>' => \&spaceship,
- 'neg' => \&negate,
- '~' => \&conjugate,
- 'abs' => \&abs,
- 'sqrt' => \&sqrt,
- 'exp' => \&exp,
- 'log' => \&log,
- 'sin' => \&sin,
- 'cos' => \&cos,
- 'tan' => \&tan,
- 'atan2' => \&atan2,
- qw("" stringify);
-
-#
-# Package "privates"
-#
-
-my %DISPLAY_FORMAT = ('style' => 'cartesian',
- 'polar_pretty_print' => 1);
-my $eps = 1e-14; # Epsilon
-
-#
-# Object attributes (internal):
-# cartesian [real, imaginary] -- cartesian form
-# polar [rho, theta] -- polar form
-# c_dirty cartesian form not up-to-date
-# p_dirty polar form not up-to-date
-# display display format (package's global when not set)
-#
-
-# Die on bad *make() arguments.
-
-sub _cannot_make {
- die "@{[(caller(1))[3]]}: Cannot take $_[0] of $_[1].\n";
-}
-
-#
-# ->make
-#
-# Create a new complex number (cartesian form)
-#
-sub make {
- my $self = bless {}, shift;
- my ($re, $im) = @_;
- my $rre = ref $re;
- if ( $rre ) {
- if ( $rre eq ref $self ) {
- $re = Re($re);
- } else {
- _cannot_make("real part", $rre);
- }
- }
- my $rim = ref $im;
- if ( $rim ) {
- if ( $rim eq ref $self ) {
- $im = Im($im);
- } else {
- _cannot_make("imaginary part", $rim);
- }
- }
- $self->{'cartesian'} = [ $re, $im ];
- $self->{c_dirty} = 0;
- $self->{p_dirty} = 1;
- $self->display_format('cartesian');
- return $self;
-}
-
-#
-# ->emake
-#
-# Create a new complex number (exponential form)
-#
-sub emake {
- my $self = bless {}, shift;
- my ($rho, $theta) = @_;
- my $rrh = ref $rho;
- if ( $rrh ) {
- if ( $rrh eq ref $self ) {
- $rho = rho($rho);
- } else {
- _cannot_make("rho", $rrh);
- }
- }
- my $rth = ref $theta;
- if ( $rth ) {
- if ( $rth eq ref $self ) {
- $theta = theta($theta);
- } else {
- _cannot_make("theta", $rth);
- }
- }
- if ($rho < 0) {
- $rho = -$rho;
- $theta = ($theta <= 0) ? $theta + pi() : $theta - pi();
- }
- $self->{'polar'} = [$rho, $theta];
- $self->{p_dirty} = 0;
- $self->{c_dirty} = 1;
- $self->display_format('polar');
- return $self;
-}
-
-sub new { &make } # For backward compatibility only.
-
-#
-# cplx
-#
-# Creates a complex number from a (re, im) tuple.
-# This avoids the burden of writing Math::Complex->make(re, im).
-#
-sub cplx {
- my ($re, $im) = @_;
- return __PACKAGE__->make($re, defined $im ? $im : 0);
-}
-
-#
-# cplxe
-#
-# Creates a complex number from a (rho, theta) tuple.
-# This avoids the burden of writing Math::Complex->emake(rho, theta).
-#
-sub cplxe {
- my ($rho, $theta) = @_;
- return __PACKAGE__->emake($rho, defined $theta ? $theta : 0);
-}
-
-#
-# pi
-#
-# The number defined as pi = 180 degrees
-#
-sub pi () { 4 * CORE::atan2(1, 1) }
-
-#
-# pit2
-#
-# The full circle
-#
-sub pit2 () { 2 * pi }
-
-#
-# pip2
-#
-# The quarter circle
-#
-sub pip2 () { pi / 2 }
-
-#
-# deg1
-#
-# One degree in radians, used in stringify_polar.
-#
-
-sub deg1 () { pi / 180 }
-
-#
-# uplog10
-#
-# Used in log10().
-#
-sub uplog10 () { 1 / CORE::log(10) }
-
-#
-# i
-#
-# The number defined as i*i = -1;
-#
-sub i () {
- return $i if ($i);
- $i = bless {};
- $i->{'cartesian'} = [0, 1];
- $i->{'polar'} = [1, pip2];
- $i->{c_dirty} = 0;
- $i->{p_dirty} = 0;
- return $i;
-}
-
-#
-# ip2
-#
-# Half of i.
-#
-sub ip2 () { i / 2 }
-
-#
-# Attribute access/set routines
-#
-
-sub cartesian {$_[0]->{c_dirty} ?
- $_[0]->update_cartesian : $_[0]->{'cartesian'}}
-sub polar {$_[0]->{p_dirty} ?
- $_[0]->update_polar : $_[0]->{'polar'}}
-
-sub set_cartesian { $_[0]->{p_dirty}++; $_[0]->{'cartesian'} = $_[1] }
-sub set_polar { $_[0]->{c_dirty}++; $_[0]->{'polar'} = $_[1] }
-
-#
-# ->update_cartesian
-#
-# Recompute and return the cartesian form, given accurate polar form.
-#
-sub update_cartesian {
- my $self = shift;
- my ($r, $t) = @{$self->{'polar'}};
- $self->{c_dirty} = 0;
- return $self->{'cartesian'} = [$r * CORE::cos($t), $r * CORE::sin($t)];
-}
-
-#
-#
-# ->update_polar
-#
-# Recompute and return the polar form, given accurate cartesian form.
-#
-sub update_polar {
- my $self = shift;
- my ($x, $y) = @{$self->{'cartesian'}};
- $self->{p_dirty} = 0;
- return $self->{'polar'} = [0, 0] if $x == 0 && $y == 0;
- return $self->{'polar'} = [CORE::sqrt($x*$x + $y*$y),
- CORE::atan2($y, $x)];
-}
-
-#
-# (plus)
-#
-# Computes z1+z2.
-#
-sub plus {
- my ($z1, $z2, $regular) = @_;
- my ($re1, $im1) = @{$z1->cartesian};
- $z2 = cplx($z2) unless ref $z2;
- my ($re2, $im2) = ref $z2 ? @{$z2->cartesian} : ($z2, 0);
- unless (defined $regular) {
- $z1->set_cartesian([$re1 + $re2, $im1 + $im2]);
- return $z1;
- }
- return (ref $z1)->make($re1 + $re2, $im1 + $im2);
-}
-
-#
-# (minus)
-#
-# Computes z1-z2.
-#
-sub minus {
- my ($z1, $z2, $inverted) = @_;
- my ($re1, $im1) = @{$z1->cartesian};
- $z2 = cplx($z2) unless ref $z2;
- my ($re2, $im2) = @{$z2->cartesian};
- unless (defined $inverted) {
- $z1->set_cartesian([$re1 - $re2, $im1 - $im2]);
- return $z1;
- }
- return $inverted ?
- (ref $z1)->make($re2 - $re1, $im2 - $im1) :
- (ref $z1)->make($re1 - $re2, $im1 - $im2);
-
-}
-
-#
-# (multiply)
-#
-# Computes z1*z2.
-#
-sub multiply {
- my ($z1, $z2, $regular) = @_;
- if ($z1->{p_dirty} == 0 and ref $z2 and $z2->{p_dirty} == 0) {
- # if both polar better use polar to avoid rounding errors
- my ($r1, $t1) = @{$z1->polar};
- my ($r2, $t2) = @{$z2->polar};
- my $t = $t1 + $t2;
- if ($t > pi()) { $t -= pit2 }
- elsif ($t <= -pi()) { $t += pit2 }
- unless (defined $regular) {
- $z1->set_polar([$r1 * $r2, $t]);
- return $z1;
- }
- return (ref $z1)->emake($r1 * $r2, $t);
- } else {
- my ($x1, $y1) = @{$z1->cartesian};
- if (ref $z2) {
- my ($x2, $y2) = @{$z2->cartesian};
- return (ref $z1)->make($x1*$x2-$y1*$y2, $x1*$y2+$y1*$x2);
- } else {
- return (ref $z1)->make($x1*$z2, $y1*$z2);
- }
- }
-}
-
-#
-# _divbyzero
-#
-# Die on division by zero.
-#
-sub _divbyzero {
- my $mess = "$_[0]: Division by zero.\n";
-
- if (defined $_[1]) {
- $mess .= "(Because in the definition of $_[0], the divisor ";
- $mess .= "$_[1] " unless ("$_[1]" eq '0');
- $mess .= "is 0)\n";
- }
-
- my @up = caller(1);
-
- $mess .= "Died at $up[1] line $up[2].\n";
-
- die $mess;
-}
-
-#
-# (divide)
-#
-# Computes z1/z2.
-#
-sub divide {
- my ($z1, $z2, $inverted) = @_;
- if ($z1->{p_dirty} == 0 and ref $z2 and $z2->{p_dirty} == 0) {
- # if both polar better use polar to avoid rounding errors
- my ($r1, $t1) = @{$z1->polar};
- my ($r2, $t2) = @{$z2->polar};
- my $t;
- if ($inverted) {
- _divbyzero "$z2/0" if ($r1 == 0);
- $t = $t2 - $t1;
- if ($t > pi()) { $t -= pit2 }
- elsif ($t <= -pi()) { $t += pit2 }
- return (ref $z1)->emake($r2 / $r1, $t);
- } else {
- _divbyzero "$z1/0" if ($r2 == 0);
- $t = $t1 - $t2;
- if ($t > pi()) { $t -= pit2 }
- elsif ($t <= -pi()) { $t += pit2 }
- return (ref $z1)->emake($r1 / $r2, $t);
- }
- } else {
- my ($d, $x2, $y2);
- if ($inverted) {
- ($x2, $y2) = @{$z1->cartesian};
- $d = $x2*$x2 + $y2*$y2;
- _divbyzero "$z2/0" if $d == 0;
- return (ref $z1)->make(($x2*$z2)/$d, -($y2*$z2)/$d);
- } else {
- my ($x1, $y1) = @{$z1->cartesian};
- if (ref $z2) {
- ($x2, $y2) = @{$z2->cartesian};
- $d = $x2*$x2 + $y2*$y2;
- _divbyzero "$z1/0" if $d == 0;
- my $u = ($x1*$x2 + $y1*$y2)/$d;
- my $v = ($y1*$x2 - $x1*$y2)/$d;
- return (ref $z1)->make($u, $v);
- } else {
- _divbyzero "$z1/0" if $z2 == 0;
- return (ref $z1)->make($x1/$z2, $y1/$z2);
- }
- }
- }
-}
-
-#
-# (power)
-#
-# Computes z1**z2 = exp(z2 * log z1)).
-#
-sub power {
- my ($z1, $z2, $inverted) = @_;
- if ($inverted) {
- return 1 if $z1 == 0 || $z2 == 1;
- return 0 if $z2 == 0 && Re($z1) > 0;
- } else {
- return 1 if $z2 == 0 || $z1 == 1;
- return 0 if $z1 == 0 && Re($z2) > 0;
- }
- my $w = $inverted ? &exp($z1 * &log($z2))
- : &exp($z2 * &log($z1));
- # If both arguments cartesian, return cartesian, else polar.
- return $z1->{c_dirty} == 0 &&
- (not ref $z2 or $z2->{c_dirty} == 0) ?
- cplx(@{$w->cartesian}) : $w;
-}
-
-#
-# (spaceship)
-#
-# Computes z1 <=> z2.
-# Sorts on the real part first, then on the imaginary part. Thus 2-4i < 3+8i.
-#
-sub spaceship {
- my ($z1, $z2, $inverted) = @_;
- my ($re1, $im1) = ref $z1 ? @{$z1->cartesian} : ($z1, 0);
- my ($re2, $im2) = ref $z2 ? @{$z2->cartesian} : ($z2, 0);
- my $sgn = $inverted ? -1 : 1;
- return $sgn * ($re1 <=> $re2) if $re1 != $re2;
- return $sgn * ($im1 <=> $im2);
-}
-
-#
-# (numeq)
-#
-# Computes z1 == z2.
-#
-# (Required in addition to spaceship() because of NaNs.)
-sub numeq {
- my ($z1, $z2, $inverted) = @_;
- my ($re1, $im1) = ref $z1 ? @{$z1->cartesian} : ($z1, 0);
- my ($re2, $im2) = ref $z2 ? @{$z2->cartesian} : ($z2, 0);
- return $re1 == $re2 && $im1 == $im2 ? 1 : 0;
-}
-
-#
-# (negate)
-#
-# Computes -z.
-#
-sub negate {
- my ($z) = @_;
- if ($z->{c_dirty}) {
- my ($r, $t) = @{$z->polar};
- $t = ($t <= 0) ? $t + pi : $t - pi;
- return (ref $z)->emake($r, $t);
- }
- my ($re, $im) = @{$z->cartesian};
- return (ref $z)->make(-$re, -$im);
-}
-
-#
-# (conjugate)
-#
-# Compute complex's conjugate.
-#
-sub conjugate {
- my ($z) = @_;
- if ($z->{c_dirty}) {
- my ($r, $t) = @{$z->polar};
- return (ref $z)->emake($r, -$t);
- }
- my ($re, $im) = @{$z->cartesian};
- return (ref $z)->make($re, -$im);
-}
-
-#
-# (abs)
-#
-# Compute or set complex's norm (rho).
-#
-sub abs {
- my ($z, $rho) = @_;
- unless (ref $z) {
- if (@_ == 2) {
- $_[0] = $_[1];
- } else {
- return CORE::abs($z);
- }
- }
- if (defined $rho) {
- $z->{'polar'} = [ $rho, ${$z->polar}[1] ];
- $z->{p_dirty} = 0;
- $z->{c_dirty} = 1;
- return $rho;
- } else {
- return ${$z->polar}[0];
- }
-}
-
-sub _theta {
- my $theta = $_[0];
-
- if ($$theta > pi()) { $$theta -= pit2 }
- elsif ($$theta <= -pi()) { $$theta += pit2 }
-}
-
-#
-# arg
-#
-# Compute or set complex's argument (theta).
-#
-sub arg {
- my ($z, $theta) = @_;
- return $z unless ref $z;
- if (defined $theta) {
- _theta(\$theta);
- $z->{'polar'} = [ ${$z->polar}[0], $theta ];
- $z->{p_dirty} = 0;
- $z->{c_dirty} = 1;
- } else {
- $theta = ${$z->polar}[1];
- _theta(\$theta);
- }
- return $theta;
-}
-
-#
-# (sqrt)
-#
-# Compute sqrt(z).
-#
-# It is quite tempting to use wantarray here so that in list context
-# sqrt() would return the two solutions. This, however, would
-# break things like
-#
-# print "sqrt(z) = ", sqrt($z), "\n";
-#
-# The two values would be printed side by side without no intervening
-# whitespace, quite confusing.
-# Therefore if you want the two solutions use the root().
-#
-sub sqrt {
- my ($z) = @_;
- my ($re, $im) = ref $z ? @{$z->cartesian} : ($z, 0);
- return $re < 0 ? cplx(0, CORE::sqrt(-$re)) : CORE::sqrt($re)
- if $im == 0;
- my ($r, $t) = @{$z->polar};
- return (ref $z)->emake(CORE::sqrt($r), $t/2);
-}
-
-#
-# cbrt
-#
-# Compute cbrt(z) (cubic root).
-#
-# Why are we not returning three values? The same answer as for sqrt().
-#
-sub cbrt {
- my ($z) = @_;
- return $z < 0 ?
- -CORE::exp(CORE::log(-$z)/3) :
- ($z > 0 ? CORE::exp(CORE::log($z)/3): 0)
- unless ref $z;
- my ($r, $t) = @{$z->polar};
- return 0 if $r == 0;
- return (ref $z)->emake(CORE::exp(CORE::log($r)/3), $t/3);
-}
-
-#
-# _rootbad
-#
-# Die on bad root.
-#
-sub _rootbad {
- my $mess = "Root $_[0] illegal, root rank must be positive integer.\n";
-
- my @up = caller(1);
-
- $mess .= "Died at $up[1] line $up[2].\n";
-
- die $mess;
-}
-
-#
-# root
-#
-# Computes all nth root for z, returning an array whose size is n.
-# `n' must be a positive integer.
-#
-# The roots are given by (for k = 0..n-1):
-#
-# z^(1/n) = r^(1/n) (cos ((t+2 k pi)/n) + i sin ((t+2 k pi)/n))
-#
-sub root {
- my ($z, $n) = @_;
- _rootbad($n) if ($n < 1 or int($n) != $n);
- my ($r, $t) = ref $z ?
- @{$z->polar} : (CORE::abs($z), $z >= 0 ? 0 : pi);
- my @root;
- my $k;
- my $theta_inc = pit2 / $n;
- my $rho = $r ** (1/$n);
- my $theta;
- my $cartesian = ref $z && $z->{c_dirty} == 0;
- for ($k = 0, $theta = $t / $n; $k < $n; $k++, $theta += $theta_inc) {
- my $w = cplxe($rho, $theta);
- # Yes, $cartesian is loop invariant.
- push @root, $cartesian ? cplx(@{$w->cartesian}) : $w;
- }
- return @root;
-}
-
-#
-# Re
-#
-# Return or set Re(z).
-#
-sub Re {
- my ($z, $Re) = @_;
- return $z unless ref $z;
- if (defined $Re) {
- $z->{'cartesian'} = [ $Re, ${$z->cartesian}[1] ];
- $z->{c_dirty} = 0;
- $z->{p_dirty} = 1;
- } else {
- return ${$z->cartesian}[0];
- }
-}
-
-#
-# Im
-#
-# Return or set Im(z).
-#
-sub Im {
- my ($z, $Im) = @_;
- return 0 unless ref $z;
- if (defined $Im) {
- $z->{'cartesian'} = [ ${$z->cartesian}[0], $Im ];
- $z->{c_dirty} = 0;
- $z->{p_dirty} = 1;
- } else {
- return ${$z->cartesian}[1];
- }
-}
-
-#
-# rho
-#
-# Return or set rho(w).
-#
-sub rho {
- Math::Complex::abs(@_);
-}
-
-#
-# theta
-#
-# Return or set theta(w).
-#
-sub theta {
- Math::Complex::arg(@_);
-}
-
-#
-# (exp)
-#
-# Computes exp(z).
-#
-sub exp {
- my ($z) = @_;
- my ($x, $y) = @{$z->cartesian};
- return (ref $z)->emake(CORE::exp($x), $y);
-}
-
-#
-# _logofzero
-#
-# Die on logarithm of zero.
-#
-sub _logofzero {
- my $mess = "$_[0]: Logarithm of zero.\n";
-
- if (defined $_[1]) {
- $mess .= "(Because in the definition of $_[0], the argument ";
- $mess .= "$_[1] " unless ($_[1] eq '0');
- $mess .= "is 0)\n";
- }
-
- my @up = caller(1);
-
- $mess .= "Died at $up[1] line $up[2].\n";
-
- die $mess;
-}
-
-#
-# (log)
-#
-# Compute log(z).
-#
-sub log {
- my ($z) = @_;
- unless (ref $z) {
- _logofzero("log") if $z == 0;
- return $z > 0 ? CORE::log($z) : cplx(CORE::log(-$z), pi);
- }
- my ($r, $t) = @{$z->polar};
- _logofzero("log") if $r == 0;
- if ($t > pi()) { $t -= pit2 }
- elsif ($t <= -pi()) { $t += pit2 }
- return (ref $z)->make(CORE::log($r), $t);
-}
-
-#
-# ln
-#
-# Alias for log().
-#
-sub ln { Math::Complex::log(@_) }
-
-#
-# log10
-#
-# Compute log10(z).
-#
-
-sub log10 {
- return Math::Complex::log($_[0]) * uplog10;
-}
-
-#
-# logn
-#
-# Compute logn(z,n) = log(z) / log(n)
-#
-sub logn {
- my ($z, $n) = @_;
- $z = cplx($z, 0) unless ref $z;
- my $logn = $LOGN{$n};
- $logn = $LOGN{$n} = CORE::log($n) unless defined $logn; # Cache log(n)
- return &log($z) / $logn;
-}
-
-#
-# (cos)
-#
-# Compute cos(z) = (exp(iz) + exp(-iz))/2.
-#
-sub cos {
- my ($z) = @_;
- return CORE::cos($z) unless ref $z;
- my ($x, $y) = @{$z->cartesian};
- my $ey = CORE::exp($y);
- my $sx = CORE::sin($x);
- my $cx = CORE::cos($x);
- my $ey_1 = $ey ? 1 / $ey : $Inf;
- return (ref $z)->make($cx * ($ey + $ey_1)/2,
- $sx * ($ey_1 - $ey)/2);
-}
-
-#
-# (sin)
-#
-# Compute sin(z) = (exp(iz) - exp(-iz))/2.
-#
-sub sin {
- my ($z) = @_;
- return CORE::sin($z) unless ref $z;
- my ($x, $y) = @{$z->cartesian};
- my $ey = CORE::exp($y);
- my $sx = CORE::sin($x);
- my $cx = CORE::cos($x);
- my $ey_1 = $ey ? 1 / $ey : $Inf;
- return (ref $z)->make($sx * ($ey + $ey_1)/2,
- $cx * ($ey - $ey_1)/2);
-}
-
-#
-# tan
-#
-# Compute tan(z) = sin(z) / cos(z).
-#
-sub tan {
- my ($z) = @_;
- my $cz = &cos($z);
- _divbyzero "tan($z)", "cos($z)" if $cz == 0;
- return &sin($z) / $cz;
-}
-
-#
-# sec
-#
-# Computes the secant sec(z) = 1 / cos(z).
-#
-sub sec {
- my ($z) = @_;
- my $cz = &cos($z);
- _divbyzero "sec($z)", "cos($z)" if ($cz == 0);
- return 1 / $cz;
-}
-
-#
-# csc
-#
-# Computes the cosecant csc(z) = 1 / sin(z).
-#
-sub csc {
- my ($z) = @_;
- my $sz = &sin($z);
- _divbyzero "csc($z)", "sin($z)" if ($sz == 0);
- return 1 / $sz;
-}
-
-#
-# cosec
-#
-# Alias for csc().
-#
-sub cosec { Math::Complex::csc(@_) }
-
-#
-# cot
-#
-# Computes cot(z) = cos(z) / sin(z).
-#
-sub cot {
- my ($z) = @_;
- my $sz = &sin($z);
- _divbyzero "cot($z)", "sin($z)" if ($sz == 0);
- return &cos($z) / $sz;
-}
-
-#
-# cotan
-#
-# Alias for cot().
-#
-sub cotan { Math::Complex::cot(@_) }
-
-#
-# acos
-#
-# Computes the arc cosine acos(z) = -i log(z + sqrt(z*z-1)).
-#
-sub acos {
- my $z = $_[0];
- return CORE::atan2(CORE::sqrt(1-$z*$z), $z)
- if (! ref $z) && CORE::abs($z) <= 1;
- $z = cplx($z, 0) unless ref $z;
- my ($x, $y) = @{$z->cartesian};
- return 0 if $x == 1 && $y == 0;
- my $t1 = CORE::sqrt(($x+1)*($x+1) + $y*$y);
- my $t2 = CORE::sqrt(($x-1)*($x-1) + $y*$y);
- my $alpha = ($t1 + $t2)/2;
- my $beta = ($t1 - $t2)/2;
- $alpha = 1 if $alpha < 1;
- if ($beta > 1) { $beta = 1 }
- elsif ($beta < -1) { $beta = -1 }
- my $u = CORE::atan2(CORE::sqrt(1-$beta*$beta), $beta);
- my $v = CORE::log($alpha + CORE::sqrt($alpha*$alpha-1));
- $v = -$v if $y > 0 || ($y == 0 && $x < -1);
- return (ref $z)->make($u, $v);
-}
-
-#
-# asin
-#
-# Computes the arc sine asin(z) = -i log(iz + sqrt(1-z*z)).
-#
-sub asin {
- my $z = $_[0];
- return CORE::atan2($z, CORE::sqrt(1-$z*$z))
- if (! ref $z) && CORE::abs($z) <= 1;
- $z = cplx($z, 0) unless ref $z;
- my ($x, $y) = @{$z->cartesian};
- return 0 if $x == 0 && $y == 0;
- my $t1 = CORE::sqrt(($x+1)*($x+1) + $y*$y);
- my $t2 = CORE::sqrt(($x-1)*($x-1) + $y*$y);
- my $alpha = ($t1 + $t2)/2;
- my $beta = ($t1 - $t2)/2;
- $alpha = 1 if $alpha < 1;
- if ($beta > 1) { $beta = 1 }
- elsif ($beta < -1) { $beta = -1 }
- my $u = CORE::atan2($beta, CORE::sqrt(1-$beta*$beta));
- my $v = -CORE::log($alpha + CORE::sqrt($alpha*$alpha-1));
- $v = -$v if $y > 0 || ($y == 0 && $x < -1);
- return (ref $z)->make($u, $v);
-}
-
-#
-# atan
-#
-# Computes the arc tangent atan(z) = i/2 log((i+z) / (i-z)).
-#
-sub atan {
- my ($z) = @_;
- return CORE::atan2($z, 1) unless ref $z;
- my ($x, $y) = ref $z ? @{$z->cartesian} : ($z, 0);
- return 0 if $x == 0 && $y == 0;
- _divbyzero "atan(i)" if ( $z == i);
- _logofzero "atan(-i)" if (-$z == i); # -i is a bad file test...
- my $log = &log((i + $z) / (i - $z));
- return ip2 * $log;
-}
-
-#
-# asec
-#
-# Computes the arc secant asec(z) = acos(1 / z).
-#
-sub asec {
- my ($z) = @_;
- _divbyzero "asec($z)", $z if ($z == 0);
- return acos(1 / $z);
-}
-
-#
-# acsc
-#
-# Computes the arc cosecant acsc(z) = asin(1 / z).
-#
-sub acsc {
- my ($z) = @_;
- _divbyzero "acsc($z)", $z if ($z == 0);
- return asin(1 / $z);
-}
-
-#
-# acosec
-#
-# Alias for acsc().
-#
-sub acosec { Math::Complex::acsc(@_) }
-
-#
-# acot
-#
-# Computes the arc cotangent acot(z) = atan(1 / z)
-#
-sub acot {
- my ($z) = @_;
- _divbyzero "acot(0)" if $z == 0;
- return ($z >= 0) ? CORE::atan2(1, $z) : CORE::atan2(-1, -$z)
- unless ref $z;
- _divbyzero "acot(i)" if ($z - i == 0);
- _logofzero "acot(-i)" if ($z + i == 0);
- return atan(1 / $z);
-}
-
-#
-# acotan
-#
-# Alias for acot().
-#
-sub acotan { Math::Complex::acot(@_) }
-
-#
-# cosh
-#
-# Computes the hyperbolic cosine cosh(z) = (exp(z) + exp(-z))/2.
-#
-sub cosh {
- my ($z) = @_;
- my $ex;
- unless (ref $z) {
- $ex = CORE::exp($z);
- return $ex ? ($ex + 1/$ex)/2 : $Inf;
- }
- my ($x, $y) = @{$z->cartesian};
- $ex = CORE::exp($x);
- my $ex_1 = $ex ? 1 / $ex : $Inf;
- return (ref $z)->make(CORE::cos($y) * ($ex + $ex_1)/2,
- CORE::sin($y) * ($ex - $ex_1)/2);
-}
-
-#
-# sinh
-#
-# Computes the hyperbolic sine sinh(z) = (exp(z) - exp(-z))/2.
-#
-sub sinh {
- my ($z) = @_;
- my $ex;
- unless (ref $z) {
- return 0 if $z == 0;
- $ex = CORE::exp($z);
- return $ex ? ($ex - 1/$ex)/2 : "-$Inf";
- }
- my ($x, $y) = @{$z->cartesian};
- my $cy = CORE::cos($y);
- my $sy = CORE::sin($y);
- $ex = CORE::exp($x);
- my $ex_1 = $ex ? 1 / $ex : $Inf;
- return (ref $z)->make(CORE::cos($y) * ($ex - $ex_1)/2,
- CORE::sin($y) * ($ex + $ex_1)/2);
-}
-
-#
-# tanh
-#
-# Computes the hyperbolic tangent tanh(z) = sinh(z) / cosh(z).
-#
-sub tanh {
- my ($z) = @_;
- my $cz = cosh($z);
- _divbyzero "tanh($z)", "cosh($z)" if ($cz == 0);
- return sinh($z) / $cz;
-}
-
-#
-# sech
-#
-# Computes the hyperbolic secant sech(z) = 1 / cosh(z).
-#
-sub sech {
- my ($z) = @_;
- my $cz = cosh($z);
- _divbyzero "sech($z)", "cosh($z)" if ($cz == 0);
- return 1 / $cz;
-}
-
-#
-# csch
-#
-# Computes the hyperbolic cosecant csch(z) = 1 / sinh(z).
-#
-sub csch {
- my ($z) = @_;
- my $sz = sinh($z);
- _divbyzero "csch($z)", "sinh($z)" if ($sz == 0);
- return 1 / $sz;
-}
-
-#
-# cosech
-#
-# Alias for csch().
-#
-sub cosech { Math::Complex::csch(@_) }
-
-#
-# coth
-#
-# Computes the hyperbolic cotangent coth(z) = cosh(z) / sinh(z).
-#
-sub coth {
- my ($z) = @_;
- my $sz = sinh($z);
- _divbyzero "coth($z)", "sinh($z)" if $sz == 0;
- return cosh($z) / $sz;
-}
-
-#
-# cotanh
-#
-# Alias for coth().
-#
-sub cotanh { Math::Complex::coth(@_) }
-
-#
-# acosh
-#
-# Computes the arc hyperbolic cosine acosh(z) = log(z + sqrt(z*z-1)).
-#
-sub acosh {
- my ($z) = @_;
- unless (ref $z) {
- $z = cplx($z, 0);
- }
- my ($re, $im) = @{$z->cartesian};
- if ($im == 0) {
- return CORE::log($re + CORE::sqrt($re*$re - 1))
- if $re >= 1;
- return cplx(0, CORE::atan2(CORE::sqrt(1 - $re*$re), $re))
- if CORE::abs($re) < 1;
- }
- my $t = &sqrt($z * $z - 1) + $z;
- # Try Taylor if looking bad (this usually means that
- # $z was large negative, therefore the sqrt is really
- # close to abs(z), summing that with z...)
- $t = 1/(2 * $z) - 1/(8 * $z**3) + 1/(16 * $z**5) - 5/(128 * $z**7)
- if $t == 0;
- my $u = &log($t);
- $u->Im(-$u->Im) if $re < 0 && $im == 0;
- return $re < 0 ? -$u : $u;
-}
-
-#
-# asinh
-#
-# Computes the arc hyperbolic sine asinh(z) = log(z + sqrt(z*z+1))
-#
-sub asinh {
- my ($z) = @_;
- unless (ref $z) {
- my $t = $z + CORE::sqrt($z*$z + 1);
- return CORE::log($t) if $t;
- }
- my $t = &sqrt($z * $z + 1) + $z;
- # Try Taylor if looking bad (this usually means that
- # $z was large negative, therefore the sqrt is really
- # close to abs(z), summing that with z...)
- $t = 1/(2 * $z) - 1/(8 * $z**3) + 1/(16 * $z**5) - 5/(128 * $z**7)
- if $t == 0;
- return &log($t);
-}
-
-#
-# atanh
-#
-# Computes the arc hyperbolic tangent atanh(z) = 1/2 log((1+z) / (1-z)).
-#
-sub atanh {
- my ($z) = @_;
- unless (ref $z) {
- return CORE::log((1 + $z)/(1 - $z))/2 if CORE::abs($z) < 1;
- $z = cplx($z, 0);
- }
- _divbyzero 'atanh(1)', "1 - $z" if (1 - $z == 0);
- _logofzero 'atanh(-1)' if (1 + $z == 0);
- return 0.5 * &log((1 + $z) / (1 - $z));
-}
-
-#
-# asech
-#
-# Computes the hyperbolic arc secant asech(z) = acosh(1 / z).
-#
-sub asech {
- my ($z) = @_;
- _divbyzero 'asech(0)', "$z" if ($z == 0);
- return acosh(1 / $z);
-}
-
-#
-# acsch
-#
-# Computes the hyperbolic arc cosecant acsch(z) = asinh(1 / z).
-#
-sub acsch {
- my ($z) = @_;
- _divbyzero 'acsch(0)', $z if ($z == 0);
- return asinh(1 / $z);
-}
-
-#
-# acosech
-#
-# Alias for acosh().
-#
-sub acosech { Math::Complex::acsch(@_) }
-
-#
-# acoth
-#
-# Computes the arc hyperbolic cotangent acoth(z) = 1/2 log((1+z) / (z-1)).
-#
-sub acoth {
- my ($z) = @_;
- _divbyzero 'acoth(0)' if ($z == 0);
- unless (ref $z) {
- return CORE::log(($z + 1)/($z - 1))/2 if CORE::abs($z) > 1;
- $z = cplx($z, 0);
- }
- _divbyzero 'acoth(1)', "$z - 1" if ($z - 1 == 0);
- _logofzero 'acoth(-1)', "1 + $z" if (1 + $z == 0);
- return &log((1 + $z) / ($z - 1)) / 2;
-}
-
-#
-# acotanh
-#
-# Alias for acot().
-#
-sub acotanh { Math::Complex::acoth(@_) }
-
-#
-# (atan2)
-#
-# Compute atan(z1/z2).
-#
-sub atan2 {
- my ($z1, $z2, $inverted) = @_;
- my ($re1, $im1, $re2, $im2);
- if ($inverted) {
- ($re1, $im1) = ref $z2 ? @{$z2->cartesian} : ($z2, 0);
- ($re2, $im2) = @{$z1->cartesian};
- } else {
- ($re1, $im1) = @{$z1->cartesian};
- ($re2, $im2) = ref $z2 ? @{$z2->cartesian} : ($z2, 0);
- }
- if ($im2 == 0) {
- return CORE::atan2($re1, $re2) if $im1 == 0;
- return ($im1<=>0) * pip2 if $re2 == 0;
- }
- my $w = atan($z1/$z2);
- my ($u, $v) = ref $w ? @{$w->cartesian} : ($w, 0);
- $u += pi if $re2 < 0;
- $u -= pit2 if $u > pi;
- return cplx($u, $v);
-}
-
-#
-# display_format
-# ->display_format
-#
-# Set (get if no argument) the display format for all complex numbers that
-# don't happen to have overridden it via ->display_format
-#
-# When called as an object method, this actually sets the display format for
-# the current object.
-#
-# Valid object formats are 'c' and 'p' for cartesian and polar. The first
-# letter is used actually, so the type can be fully spelled out for clarity.
-#
-sub display_format {
- my $self = shift;
- my %display_format = %DISPLAY_FORMAT;
-
- if (ref $self) { # Called as an object method
- if (exists $self->{display_format}) {
- my %obj = %{$self->{display_format}};
- @display_format{keys %obj} = values %obj;
- }
- }
- if (@_ == 1) {
- $display_format{style} = shift;
- } else {
- my %new = @_;
- @display_format{keys %new} = values %new;
- }
-
- if (ref $self) { # Called as an object method
- $self->{display_format} = { %display_format };
- return
- wantarray ?
- %{$self->{display_format}} :
- $self->{display_format}->{style};
- }
-
- # Called as a class method
- %DISPLAY_FORMAT = %display_format;
- return
- wantarray ?
- %DISPLAY_FORMAT :
- $DISPLAY_FORMAT{style};
-}
-
-#
-# (stringify)
-#
-# Show nicely formatted complex number under its cartesian or polar form,
-# depending on the current display format:
-#
-# . If a specific display format has been recorded for this object, use it.
-# . Otherwise, use the generic current default for all complex numbers,
-# which is a package global variable.
-#
-sub stringify {
- my ($z) = shift;
-
- my $style = $z->display_format;
-
- $style = $DISPLAY_FORMAT{style} unless defined $style;
-
- return $z->stringify_polar if $style =~ /^p/i;
- return $z->stringify_cartesian;
-}
-
-#
-# ->stringify_cartesian
-#
-# Stringify as a cartesian representation 'a+bi'.
-#
-sub stringify_cartesian {
- my $z = shift;
- my ($x, $y) = @{$z->cartesian};
- my ($re, $im);
-
- my %format = $z->display_format;
- my $format = $format{format};
-
- if ($x) {
- if ($x =~ /^NaN[QS]?$/i) {
- $re = $x;
- } else {
- if ($x =~ /^-?$Inf$/oi) {
- $re = $x;
- } else {
- $re = defined $format ? sprintf($format, $x) : $x;
- }
- }
- } else {
- undef $re;
- }
-
- if ($y) {
- if ($y =~ /^(NaN[QS]?)$/i) {
- $im = $y;
- } else {
- if ($y =~ /^-?$Inf$/oi) {
- $im = $y;
- } else {
- $im =
- defined $format ?
- sprintf($format, $y) :
- ($y == 1 ? "" : ($y == -1 ? "-" : $y));
- }
- }
- $im .= "i";
- } else {
- undef $im;
- }
-
- my $str = $re;
-
- if (defined $im) {
- if ($y < 0) {
- $str .= $im;
- } elsif ($y > 0 || $im =~ /^NaN[QS]?i$/i) {
- $str .= "+" if defined $re;
- $str .= $im;
- }
- } elsif (!defined $re) {
- $str = "0";
- }
-
- return $str;
-}
-
-
-#
-# ->stringify_polar
-#
-# Stringify as a polar representation '[r,t]'.
-#
-sub stringify_polar {
- my $z = shift;
- my ($r, $t) = @{$z->polar};
- my $theta;
-
- my %format = $z->display_format;
- my $format = $format{format};
-
- if ($t =~ /^NaN[QS]?$/i || $t =~ /^-?$Inf$/oi) {
- $theta = $t;
- } elsif ($t == pi) {
- $theta = "pi";
- } elsif ($r == 0 || $t == 0) {
- $theta = defined $format ? sprintf($format, $t) : $t;
- }
-
- return "[$r,$theta]" if defined $theta;
-
- #
- # Try to identify pi/n and friends.
- #
-
- $t -= int(CORE::abs($t) / pit2) * pit2;
-
- if ($format{polar_pretty_print} && $t) {
- my ($a, $b);
- for $a (2..9) {
- $b = $t * $a / pi;
- if ($b =~ /^-?\d+$/) {
- $b = $b < 0 ? "-" : "" if CORE::abs($b) == 1;
- $theta = "${b}pi/$a";
- last;
- }
- }
- }
-
- if (defined $format) {
- $r = sprintf($format, $r);
- $theta = sprintf($format, $theta) unless defined $theta;
- } else {
- $theta = $t unless defined $theta;
- }
-
- return "[$r,$theta]";
-}
-
-1;
-__END__
-
-=pod
-
-=head1 NAME
-
-Math::Complex - complex numbers and associated mathematical functions
-
-=head1 SYNOPSIS
-
- use Math::Complex;
-
- $z = Math::Complex->make(5, 6);
- $t = 4 - 3*i + $z;
- $j = cplxe(1, 2*pi/3);
-
-=head1 DESCRIPTION
-
-This package lets you create and manipulate complex numbers. By default,
-I<Perl> limits itself to real numbers, but an extra C<use> statement brings
-full complex support, along with a full set of mathematical functions
-typically associated with and/or extended to complex numbers.
-
-If you wonder what complex numbers are, they were invented to be able to solve
-the following equation:
-
- x*x = -1
-
-and by definition, the solution is noted I<i> (engineers use I<j> instead since
-I<i> usually denotes an intensity, but the name does not matter). The number
-I<i> is a pure I<imaginary> number.
-
-The arithmetics with pure imaginary numbers works just like you would expect
-it with real numbers... you just have to remember that
-
- i*i = -1
-
-so you have:
-
- 5i + 7i = i * (5 + 7) = 12i
- 4i - 3i = i * (4 - 3) = i
- 4i * 2i = -8
- 6i / 2i = 3
- 1 / i = -i
-
-Complex numbers are numbers that have both a real part and an imaginary
-part, and are usually noted:
-
- a + bi
-
-where C<a> is the I<real> part and C<b> is the I<imaginary> part. The
-arithmetic with complex numbers is straightforward. You have to
-keep track of the real and the imaginary parts, but otherwise the
-rules used for real numbers just apply:
-
- (4 + 3i) + (5 - 2i) = (4 + 5) + i(3 - 2) = 9 + i
- (2 + i) * (4 - i) = 2*4 + 4i -2i -i*i = 8 + 2i + 1 = 9 + 2i
-
-A graphical representation of complex numbers is possible in a plane
-(also called the I<complex plane>, but it's really a 2D plane).
-The number
-
- z = a + bi
-
-is the point whose coordinates are (a, b). Actually, it would
-be the vector originating from (0, 0) to (a, b). It follows that the addition
-of two complex numbers is a vectorial addition.
-
-Since there is a bijection between a point in the 2D plane and a complex
-number (i.e. the mapping is unique and reciprocal), a complex number
-can also be uniquely identified with polar coordinates:
-
- [rho, theta]
-
-where C<rho> is the distance to the origin, and C<theta> the angle between
-the vector and the I<x> axis. There is a notation for this using the
-exponential form, which is:
-
- rho * exp(i * theta)
-
-where I<i> is the famous imaginary number introduced above. Conversion
-between this form and the cartesian form C<a + bi> is immediate:
-
- a = rho * cos(theta)
- b = rho * sin(theta)
-
-which is also expressed by this formula:
-
- z = rho * exp(i * theta) = rho * (cos theta + i * sin theta)
-
-In other words, it's the projection of the vector onto the I<x> and I<y>
-axes. Mathematicians call I<rho> the I<norm> or I<modulus> and I<theta>
-the I<argument> of the complex number. The I<norm> of C<z> will be
-noted C<abs(z)>.
-
-The polar notation (also known as the trigonometric
-representation) is much more handy for performing multiplications and
-divisions of complex numbers, whilst the cartesian notation is better
-suited for additions and subtractions. Real numbers are on the I<x>
-axis, and therefore I<theta> is zero or I<pi>.
-
-All the common operations that can be performed on a real number have
-been defined to work on complex numbers as well, and are merely
-I<extensions> of the operations defined on real numbers. This means
-they keep their natural meaning when there is no imaginary part, provided
-the number is within their definition set.
-
-For instance, the C<sqrt> routine which computes the square root of
-its argument is only defined for non-negative real numbers and yields a
-non-negative real number (it is an application from B<R+> to B<R+>).
-If we allow it to return a complex number, then it can be extended to
-negative real numbers to become an application from B<R> to B<C> (the
-set of complex numbers):
-
- sqrt(x) = x >= 0 ? sqrt(x) : sqrt(-x)*i
-
-It can also be extended to be an application from B<C> to B<C>,
-whilst its restriction to B<R> behaves as defined above by using
-the following definition:
-
- sqrt(z = [r,t]) = sqrt(r) * exp(i * t/2)
-
-Indeed, a negative real number can be noted C<[x,pi]> (the modulus
-I<x> is always non-negative, so C<[x,pi]> is really C<-x>, a negative
-number) and the above definition states that
-
- sqrt([x,pi]) = sqrt(x) * exp(i*pi/2) = [sqrt(x),pi/2] = sqrt(x)*i
-
-which is exactly what we had defined for negative real numbers above.
-The C<sqrt> returns only one of the solutions: if you want the both,
-use the C<root> function.
-
-All the common mathematical functions defined on real numbers that
-are extended to complex numbers share that same property of working
-I<as usual> when the imaginary part is zero (otherwise, it would not
-be called an extension, would it?).
-
-A I<new> operation possible on a complex number that is
-the identity for real numbers is called the I<conjugate>, and is noted
-with an horizontal bar above the number, or C<~z> here.
-
- z = a + bi
- ~z = a - bi
-
-Simple... Now look:
-
- z * ~z = (a + bi) * (a - bi) = a*a + b*b
-
-We saw that the norm of C<z> was noted C<abs(z)> and was defined as the
-distance to the origin, also known as:
-
- rho = abs(z) = sqrt(a*a + b*b)
-
-so
-
- z * ~z = abs(z) ** 2
-
-If z is a pure real number (i.e. C<b == 0>), then the above yields:
-
- a * a = abs(a) ** 2
-
-which is true (C<abs> has the regular meaning for real number, i.e. stands
-for the absolute value). This example explains why the norm of C<z> is
-noted C<abs(z)>: it extends the C<abs> function to complex numbers, yet
-is the regular C<abs> we know when the complex number actually has no
-imaginary part... This justifies I<a posteriori> our use of the C<abs>
-notation for the norm.
-
-=head1 OPERATIONS
-
-Given the following notations:
-
- z1 = a + bi = r1 * exp(i * t1)
- z2 = c + di = r2 * exp(i * t2)
- z = <any complex or real number>
-
-the following (overloaded) operations are supported on complex numbers:
-
- z1 + z2 = (a + c) + i(b + d)
- z1 - z2 = (a - c) + i(b - d)
- z1 * z2 = (r1 * r2) * exp(i * (t1 + t2))
- z1 / z2 = (r1 / r2) * exp(i * (t1 - t2))
- z1 ** z2 = exp(z2 * log z1)
- ~z = a - bi
- abs(z) = r1 = sqrt(a*a + b*b)
- sqrt(z) = sqrt(r1) * exp(i * t/2)
- exp(z) = exp(a) * exp(i * b)
- log(z) = log(r1) + i*t
- sin(z) = 1/2i (exp(i * z1) - exp(-i * z))
- cos(z) = 1/2 (exp(i * z1) + exp(-i * z))
- atan2(z1, z2) = atan(z1/z2)
-
-The following extra operations are supported on both real and complex
-numbers:
-
- Re(z) = a
- Im(z) = b
- arg(z) = t
- abs(z) = r
-
- cbrt(z) = z ** (1/3)
- log10(z) = log(z) / log(10)
- logn(z, n) = log(z) / log(n)
-
- tan(z) = sin(z) / cos(z)
-
- csc(z) = 1 / sin(z)
- sec(z) = 1 / cos(z)
- cot(z) = 1 / tan(z)
-
- asin(z) = -i * log(i*z + sqrt(1-z*z))
- acos(z) = -i * log(z + i*sqrt(1-z*z))
- atan(z) = i/2 * log((i+z) / (i-z))
-
- acsc(z) = asin(1 / z)
- asec(z) = acos(1 / z)
- acot(z) = atan(1 / z) = -i/2 * log((i+z) / (z-i))
-
- sinh(z) = 1/2 (exp(z) - exp(-z))
- cosh(z) = 1/2 (exp(z) + exp(-z))
- tanh(z) = sinh(z) / cosh(z) = (exp(z) - exp(-z)) / (exp(z) + exp(-z))
-
- csch(z) = 1 / sinh(z)
- sech(z) = 1 / cosh(z)
- coth(z) = 1 / tanh(z)
-
- asinh(z) = log(z + sqrt(z*z+1))
- acosh(z) = log(z + sqrt(z*z-1))
- atanh(z) = 1/2 * log((1+z) / (1-z))
-
- acsch(z) = asinh(1 / z)
- asech(z) = acosh(1 / z)
- acoth(z) = atanh(1 / z) = 1/2 * log((1+z) / (z-1))
-
-I<arg>, I<abs>, I<log>, I<csc>, I<cot>, I<acsc>, I<acot>, I<csch>,
-I<coth>, I<acosech>, I<acotanh>, have aliases I<rho>, I<theta>, I<ln>,
-I<cosec>, I<cotan>, I<acosec>, I<acotan>, I<cosech>, I<cotanh>,
-I<acosech>, I<acotanh>, respectively. C<Re>, C<Im>, C<arg>, C<abs>,
-C<rho>, and C<theta> can be used also also mutators. The C<cbrt>
-returns only one of the solutions: if you want all three, use the
-C<root> function.
-
-The I<root> function is available to compute all the I<n>
-roots of some complex, where I<n> is a strictly positive integer.
-There are exactly I<n> such roots, returned as a list. Getting the
-number mathematicians call C<j> such that:
-
- 1 + j + j*j = 0;
-
-is a simple matter of writing:
-
- $j = ((root(1, 3))[1];
-
-The I<k>th root for C<z = [r,t]> is given by:
-
- (root(z, n))[k] = r**(1/n) * exp(i * (t + 2*k*pi)/n)
-
-The I<spaceship> comparison operator, E<lt>=E<gt>, is also defined. In
-order to ensure its restriction to real numbers is conform to what you
-would expect, the comparison is run on the real part of the complex
-number first, and imaginary parts are compared only when the real
-parts match.
-
-=head1 CREATION
-
-To create a complex number, use either:
-
- $z = Math::Complex->make(3, 4);
- $z = cplx(3, 4);
-
-if you know the cartesian form of the number, or
-
- $z = 3 + 4*i;
-
-if you like. To create a number using the polar form, use either:
-
- $z = Math::Complex->emake(5, pi/3);
- $x = cplxe(5, pi/3);
-
-instead. The first argument is the modulus, the second is the angle
-(in radians, the full circle is 2*pi). (Mnemonic: C<e> is used as a
-notation for complex numbers in the polar form).
-
-It is possible to write:
-
- $x = cplxe(-3, pi/4);
-
-but that will be silently converted into C<[3,-3pi/4]>, since the
-modulus must be non-negative (it represents the distance to the origin
-in the complex plane).
-
-It is also possible to have a complex number as either argument of
-either the C<make> or C<emake>: the appropriate component of
-the argument will be used.
-
- $z1 = cplx(-2, 1);
- $z2 = cplx($z1, 4);
-
-=head1 STRINGIFICATION
-
-When printed, a complex number is usually shown under its cartesian
-style I<a+bi>, but there are legitimate cases where the polar style
-I<[r,t]> is more appropriate.
-
-By calling the class method C<Math::Complex::display_format> and
-supplying either C<"polar"> or C<"cartesian"> as an argument, you
-override the default display style, which is C<"cartesian">. Not
-supplying any argument returns the current settings.
-
-This default can be overridden on a per-number basis by calling the
-C<display_format> method instead. As before, not supplying any argument
-returns the current display style for this number. Otherwise whatever you
-specify will be the new display style for I<this> particular number.
-
-For instance:
-
- use Math::Complex;
-
- Math::Complex::display_format('polar');
- $j = (root(1, 3))[1];
- print "j = $j\n"; # Prints "j = [1,2pi/3]"
- $j->display_format('cartesian');
- print "j = $j\n"; # Prints "j = -0.5+0.866025403784439i"
-
-The polar style attempts to emphasize arguments like I<k*pi/n>
-(where I<n> is a positive integer and I<k> an integer within [-9, +9]),
-this is called I<polar pretty-printing>.
-
-=head2 CHANGED IN PERL 5.6
-
-The C<display_format> class method and the corresponding
-C<display_format> object method can now be called using
-a parameter hash instead of just a one parameter.
-
-The old display format style, which can have values C<"cartesian"> or
-C<"polar">, can be changed using the C<"style"> parameter.
-
- $j->display_format(style => "polar");
-
-The one parameter calling convention also still works.
-
- $j->display_format("polar");
-
-There are two new display parameters.
-
-The first one is C<"format">, which is a sprintf()-style format string
-to be used for both numeric parts of the complex number(s). The is
-somewhat system-dependent but most often it corresponds to C<"%.15g">.
-You can revert to the default by setting the C<format> to C<undef>.
-
- # the $j from the above example
-
- $j->display_format('format' => '%.5f');
- print "j = $j\n"; # Prints "j = -0.50000+0.86603i"
- $j->display_format('format' => undef);
- print "j = $j\n"; # Prints "j = -0.5+0.86603i"
-
-Notice that this affects also the return values of the
-C<display_format> methods: in list context the whole parameter hash
-will be returned, as opposed to only the style parameter value.
-This is a potential incompatibility with earlier versions if you
-have been calling the C<display_format> method in list context.
-
-The second new display parameter is C<"polar_pretty_print">, which can
-be set to true or false, the default being true. See the previous
-section for what this means.
-
-=head1 USAGE
-
-Thanks to overloading, the handling of arithmetics with complex numbers
-is simple and almost transparent.
-
-Here are some examples:
-
- use Math::Complex;
-
- $j = cplxe(1, 2*pi/3); # $j ** 3 == 1
- print "j = $j, j**3 = ", $j ** 3, "\n";
- print "1 + j + j**2 = ", 1 + $j + $j**2, "\n";
-
- $z = -16 + 0*i; # Force it to be a complex
- print "sqrt($z) = ", sqrt($z), "\n";
-
- $k = exp(i * 2*pi/3);
- print "$j - $k = ", $j - $k, "\n";
-
- $z->Re(3); # Re, Im, arg, abs,
- $j->arg(2); # (the last two aka rho, theta)
- # can be used also as mutators.
-
-=head1 ERRORS DUE TO DIVISION BY ZERO OR LOGARITHM OF ZERO
-
-The division (/) and the following functions
-
- log ln log10 logn
- tan sec csc cot
- atan asec acsc acot
- tanh sech csch coth
- atanh asech acsch acoth
-
-cannot be computed for all arguments because that would mean dividing
-by zero or taking logarithm of zero. These situations cause fatal
-runtime errors looking like this
-
- cot(0): Division by zero.
- (Because in the definition of cot(0), the divisor sin(0) is 0)
- Died at ...
-
-or
-
- atanh(-1): Logarithm of zero.
- Died at...
-
-For the C<csc>, C<cot>, C<asec>, C<acsc>, C<acot>, C<csch>, C<coth>,
-C<asech>, C<acsch>, the argument cannot be C<0> (zero). For the the
-logarithmic functions and the C<atanh>, C<acoth>, the argument cannot
-be C<1> (one). For the C<atanh>, C<acoth>, the argument cannot be
-C<-1> (minus one). For the C<atan>, C<acot>, the argument cannot be
-C<i> (the imaginary unit). For the C<atan>, C<acoth>, the argument
-cannot be C<-i> (the negative imaginary unit). For the C<tan>,
-C<sec>, C<tanh>, the argument cannot be I<pi/2 + k * pi>, where I<k>
-is any integer.
-
-Note that because we are operating on approximations of real numbers,
-these errors can happen when merely `too close' to the singularities
-listed above.
-
-=head1 ERRORS DUE TO INDIGESTIBLE ARGUMENTS
-
-The C<make> and C<emake> accept both real and complex arguments.
-When they cannot recognize the arguments they will die with error
-messages like the following
-
- Math::Complex::make: Cannot take real part of ...
- Math::Complex::make: Cannot take real part of ...
- Math::Complex::emake: Cannot take rho of ...
- Math::Complex::emake: Cannot take theta of ...
-
-=head1 BUGS
-
-Saying C<use Math::Complex;> exports many mathematical routines in the
-caller environment and even overrides some (C<sqrt>, C<log>).
-This is construed as a feature by the Authors, actually... ;-)
-
-All routines expect to be given real or complex numbers. Don't attempt to
-use BigFloat, since Perl has currently no rule to disambiguate a '+'
-operation (for instance) between two overloaded entities.
-
-In Cray UNICOS there is some strange numerical instability that results
-in root(), cos(), sin(), cosh(), sinh(), losing accuracy fast. Beware.
-The bug may be in UNICOS math libs, in UNICOS C compiler, in Math::Complex.
-Whatever it is, it does not manifest itself anywhere else where Perl runs.
-
-=head1 AUTHORS
-
-Raphael Manfredi <F<Raphael_Manfredi@pobox.com>> and
-Jarkko Hietaniemi <F<jhi@iki.fi>>.
-
-Extensive patches by Daniel S. Lewart <F<d-lewart@uiuc.edu>>.
-
-=cut
-
-1;
-
-# eof
diff --git a/contrib/perl5/lib/Math/Trig.pm b/contrib/perl5/lib/Math/Trig.pm
deleted file mode 100644
index b28f150..0000000
--- a/contrib/perl5/lib/Math/Trig.pm
+++ /dev/null
@@ -1,456 +0,0 @@
-#
-# Trigonometric functions, mostly inherited from Math::Complex.
-# -- Jarkko Hietaniemi, since April 1997
-# -- Raphael Manfredi, September 1996 (indirectly: because of Math::Complex)
-#
-
-require Exporter;
-package Math::Trig;
-
-use 5.005_64;
-use strict;
-
-use Math::Complex qw(:trig);
-
-our($VERSION, $PACKAGE, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-
-@ISA = qw(Exporter);
-
-$VERSION = 1.00;
-
-my @angcnv = qw(rad2deg rad2grad
- deg2rad deg2grad
- grad2rad grad2deg);
-
-@EXPORT = (@{$Math::Complex::EXPORT_TAGS{'trig'}},
- @angcnv);
-
-my @rdlcnv = qw(cartesian_to_cylindrical
- cartesian_to_spherical
- cylindrical_to_cartesian
- cylindrical_to_spherical
- spherical_to_cartesian
- spherical_to_cylindrical);
-
-@EXPORT_OK = (@rdlcnv, 'great_circle_distance');
-
-%EXPORT_TAGS = ('radial' => [ @rdlcnv ]);
-
-sub pi2 () { 2 * pi }
-sub pip2 () { pi / 2 }
-
-sub DR () { pi2/360 }
-sub RD () { 360/pi2 }
-sub DG () { 400/360 }
-sub GD () { 360/400 }
-sub RG () { 400/pi2 }
-sub GR () { pi2/400 }
-
-#
-# Truncating remainder.
-#
-
-sub remt ($$) {
- # Oh yes, POSIX::fmod() would be faster. Possibly. If it is available.
- $_[0] - $_[1] * int($_[0] / $_[1]);
-}
-
-#
-# Angle conversions.
-#
-
-sub rad2rad($) { remt($_[0], pi2) }
-
-sub deg2deg($) { remt($_[0], 360) }
-
-sub grad2grad($) { remt($_[0], 400) }
-
-sub rad2deg ($;$) { my $d = RD * $_[0]; $_[1] ? $d : deg2deg($d) }
-
-sub deg2rad ($;$) { my $d = DR * $_[0]; $_[1] ? $d : rad2rad($d) }
-
-sub grad2deg ($;$) { my $d = GD * $_[0]; $_[1] ? $d : deg2deg($d) }
-
-sub deg2grad ($;$) { my $d = DG * $_[0]; $_[1] ? $d : grad2grad($d) }
-
-sub rad2grad ($;$) { my $d = RG * $_[0]; $_[1] ? $d : grad2grad($d) }
-
-sub grad2rad ($;$) { my $d = GR * $_[0]; $_[1] ? $d : rad2rad($d) }
-
-sub cartesian_to_spherical {
- my ( $x, $y, $z ) = @_;
-
- my $rho = sqrt( $x * $x + $y * $y + $z * $z );
-
- return ( $rho,
- atan2( $y, $x ),
- $rho ? acos( $z / $rho ) : 0 );
-}
-
-sub spherical_to_cartesian {
- my ( $rho, $theta, $phi ) = @_;
-
- return ( $rho * cos( $theta ) * sin( $phi ),
- $rho * sin( $theta ) * sin( $phi ),
- $rho * cos( $phi ) );
-}
-
-sub spherical_to_cylindrical {
- my ( $x, $y, $z ) = spherical_to_cartesian( @_ );
-
- return ( sqrt( $x * $x + $y * $y ), $_[1], $z );
-}
-
-sub cartesian_to_cylindrical {
- my ( $x, $y, $z ) = @_;
-
- return ( sqrt( $x * $x + $y * $y ), atan2( $y, $x ), $z );
-}
-
-sub cylindrical_to_cartesian {
- my ( $rho, $theta, $z ) = @_;
-
- return ( $rho * cos( $theta ), $rho * sin( $theta ), $z );
-}
-
-sub cylindrical_to_spherical {
- return ( cartesian_to_spherical( cylindrical_to_cartesian( @_ ) ) );
-}
-
-sub great_circle_distance {
- my ( $theta0, $phi0, $theta1, $phi1, $rho ) = @_;
-
- $rho = 1 unless defined $rho; # Default to the unit sphere.
-
- my $lat0 = pip2 - $phi0;
- my $lat1 = pip2 - $phi1;
-
- return $rho *
- acos(cos( $lat0 ) * cos( $lat1 ) * cos( $theta0 - $theta1 ) +
- sin( $lat0 ) * sin( $lat1 ) );
-}
-
-=pod
-
-=head1 NAME
-
-Math::Trig - trigonometric functions
-
-=head1 SYNOPSIS
-
- use Math::Trig;
-
- $x = tan(0.9);
- $y = acos(3.7);
- $z = asin(2.4);
-
- $halfpi = pi/2;
-
- $rad = deg2rad(120);
-
-=head1 DESCRIPTION
-
-C<Math::Trig> defines many trigonometric functions not defined by the
-core Perl which defines only the C<sin()> and C<cos()>. The constant
-B<pi> is also defined as are a few convenience functions for angle
-conversions.
-
-=head1 TRIGONOMETRIC FUNCTIONS
-
-The tangent
-
-=over 4
-
-=item B<tan>
-
-=back
-
-The cofunctions of the sine, cosine, and tangent (cosec/csc and cotan/cot
-are aliases)
-
-B<csc>, B<cosec>, B<sec>, B<sec>, B<cot>, B<cotan>
-
-The arcus (also known as the inverse) functions of the sine, cosine,
-and tangent
-
-B<asin>, B<acos>, B<atan>
-
-The principal value of the arc tangent of y/x
-
-B<atan2>(y, x)
-
-The arcus cofunctions of the sine, cosine, and tangent (acosec/acsc
-and acotan/acot are aliases)
-
-B<acsc>, B<acosec>, B<asec>, B<acot>, B<acotan>
-
-The hyperbolic sine, cosine, and tangent
-
-B<sinh>, B<cosh>, B<tanh>
-
-The cofunctions of the hyperbolic sine, cosine, and tangent (cosech/csch
-and cotanh/coth are aliases)
-
-B<csch>, B<cosech>, B<sech>, B<coth>, B<cotanh>
-
-The arcus (also known as the inverse) functions of the hyperbolic
-sine, cosine, and tangent
-
-B<asinh>, B<acosh>, B<atanh>
-
-The arcus cofunctions of the hyperbolic sine, cosine, and tangent
-(acsch/acosech and acoth/acotanh are aliases)
-
-B<acsch>, B<acosech>, B<asech>, B<acoth>, B<acotanh>
-
-The trigonometric constant B<pi> is also defined.
-
-$pi2 = 2 * B<pi>;
-
-=head2 ERRORS DUE TO DIVISION BY ZERO
-
-The following functions
-
- acoth
- acsc
- acsch
- asec
- asech
- atanh
- cot
- coth
- csc
- csch
- sec
- sech
- tan
- tanh
-
-cannot be computed for all arguments because that would mean dividing
-by zero or taking logarithm of zero. These situations cause fatal
-runtime errors looking like this
-
- cot(0): Division by zero.
- (Because in the definition of cot(0), the divisor sin(0) is 0)
- Died at ...
-
-or
-
- atanh(-1): Logarithm of zero.
- Died at...
-
-For the C<csc>, C<cot>, C<asec>, C<acsc>, C<acot>, C<csch>, C<coth>,
-C<asech>, C<acsch>, the argument cannot be C<0> (zero). For the
-C<atanh>, C<acoth>, the argument cannot be C<1> (one). For the
-C<atanh>, C<acoth>, the argument cannot be C<-1> (minus one). For the
-C<tan>, C<sec>, C<tanh>, C<sech>, the argument cannot be I<pi/2 + k *
-pi>, where I<k> is any integer.
-
-=head2 SIMPLE (REAL) ARGUMENTS, COMPLEX RESULTS
-
-Please note that some of the trigonometric functions can break out
-from the B<real axis> into the B<complex plane>. For example
-C<asin(2)> has no definition for plain real numbers but it has
-definition for complex numbers.
-
-In Perl terms this means that supplying the usual Perl numbers (also
-known as scalars, please see L<perldata>) as input for the
-trigonometric functions might produce as output results that no more
-are simple real numbers: instead they are complex numbers.
-
-The C<Math::Trig> handles this by using the C<Math::Complex> package
-which knows how to handle complex numbers, please see L<Math::Complex>
-for more information. In practice you need not to worry about getting
-complex numbers as results because the C<Math::Complex> takes care of
-details like for example how to display complex numbers. For example:
-
- print asin(2), "\n";
-
-should produce something like this (take or leave few last decimals):
-
- 1.5707963267949-1.31695789692482i
-
-That is, a complex number with the real part of approximately C<1.571>
-and the imaginary part of approximately C<-1.317>.
-
-=head1 PLANE ANGLE CONVERSIONS
-
-(Plane, 2-dimensional) angles may be converted with the following functions.
-
- $radians = deg2rad($degrees);
- $radians = grad2rad($gradians);
-
- $degrees = rad2deg($radians);
- $degrees = grad2deg($gradians);
-
- $gradians = deg2grad($degrees);
- $gradians = rad2grad($radians);
-
-The full circle is 2 I<pi> radians or I<360> degrees or I<400> gradians.
-The result is by default wrapped to be inside the [0, {2pi,360,400}[ circle.
-If you don't want this, supply a true second argument:
-
- $zillions_of_radians = deg2rad($zillions_of_degrees, 1);
- $negative_degrees = rad2deg($negative_radians, 1);
-
-You can also do the wrapping explicitly by rad2rad(), deg2deg(), and
-grad2grad().
-
-=head1 RADIAL COORDINATE CONVERSIONS
-
-B<Radial coordinate systems> are the B<spherical> and the B<cylindrical>
-systems, explained shortly in more detail.
-
-You can import radial coordinate conversion functions by using the
-C<:radial> tag:
-
- use Math::Trig ':radial';
-
- ($rho, $theta, $z) = cartesian_to_cylindrical($x, $y, $z);
- ($rho, $theta, $phi) = cartesian_to_spherical($x, $y, $z);
- ($x, $y, $z) = cylindrical_to_cartesian($rho, $theta, $z);
- ($rho_s, $theta, $phi) = cylindrical_to_spherical($rho_c, $theta, $z);
- ($x, $y, $z) = spherical_to_cartesian($rho, $theta, $phi);
- ($rho_c, $theta, $z) = spherical_to_cylindrical($rho_s, $theta, $phi);
-
-B<All angles are in radians>.
-
-=head2 COORDINATE SYSTEMS
-
-B<Cartesian> coordinates are the usual rectangular I<(x, y,
-z)>-coordinates.
-
-Spherical coordinates, I<(rho, theta, pi)>, are three-dimensional
-coordinates which define a point in three-dimensional space. They are
-based on a sphere surface. The radius of the sphere is B<rho>, also
-known as the I<radial> coordinate. The angle in the I<xy>-plane
-(around the I<z>-axis) is B<theta>, also known as the I<azimuthal>
-coordinate. The angle from the I<z>-axis is B<phi>, also known as the
-I<polar> coordinate. The `North Pole' is therefore I<0, 0, rho>, and
-the `Bay of Guinea' (think of the missing big chunk of Africa) I<0,
-pi/2, rho>. In geographical terms I<phi> is latitude (northward
-positive, southward negative) and I<theta> is longitude (eastward
-positive, westward negative).
-
-B<BEWARE>: some texts define I<theta> and I<phi> the other way round,
-some texts define the I<phi> to start from the horizontal plane, some
-texts use I<r> in place of I<rho>.
-
-Cylindrical coordinates, I<(rho, theta, z)>, are three-dimensional
-coordinates which define a point in three-dimensional space. They are
-based on a cylinder surface. The radius of the cylinder is B<rho>,
-also known as the I<radial> coordinate. The angle in the I<xy>-plane
-(around the I<z>-axis) is B<theta>, also known as the I<azimuthal>
-coordinate. The third coordinate is the I<z>, pointing up from the
-B<theta>-plane.
-
-=head2 3-D ANGLE CONVERSIONS
-
-Conversions to and from spherical and cylindrical coordinates are
-available. Please notice that the conversions are not necessarily
-reversible because of the equalities like I<pi> angles being equal to
-I<-pi> angles.
-
-=over 4
-
-=item cartesian_to_cylindrical
-
- ($rho, $theta, $z) = cartesian_to_cylindrical($x, $y, $z);
-
-=item cartesian_to_spherical
-
- ($rho, $theta, $phi) = cartesian_to_spherical($x, $y, $z);
-
-=item cylindrical_to_cartesian
-
- ($x, $y, $z) = cylindrical_to_cartesian($rho, $theta, $z);
-
-=item cylindrical_to_spherical
-
- ($rho_s, $theta, $phi) = cylindrical_to_spherical($rho_c, $theta, $z);
-
-Notice that when C<$z> is not 0 C<$rho_s> is not equal to C<$rho_c>.
-
-=item spherical_to_cartesian
-
- ($x, $y, $z) = spherical_to_cartesian($rho, $theta, $phi);
-
-=item spherical_to_cylindrical
-
- ($rho_c, $theta, $z) = spherical_to_cylindrical($rho_s, $theta, $phi);
-
-Notice that when C<$z> is not 0 C<$rho_c> is not equal to C<$rho_s>.
-
-=back
-
-=head1 GREAT CIRCLE DISTANCES
-
-You can compute spherical distances, called B<great circle distances>,
-by importing the C<great_circle_distance> function:
-
- use Math::Trig 'great_circle_distance'
-
- $distance = great_circle_distance($theta0, $phi0, $theta1, $phi1, [, $rho]);
-
-The I<great circle distance> is the shortest distance between two
-points on a sphere. The distance is in C<$rho> units. The C<$rho> is
-optional, it defaults to 1 (the unit sphere), therefore the distance
-defaults to radians.
-
-If you think geographically the I<theta> are longitudes: zero at the
-Greenwhich meridian, eastward positive, westward negative--and the
-I<phi> are latitudes: zero at the North Pole, northward positive,
-southward negative. B<NOTE>: this formula thinks in mathematics, not
-geographically: the I<phi> zero is at the North Pole, not at the
-Equator on the west coast of Africa (Bay of Guinea). You need to
-subtract your geographical coordinates from I<pi/2> (also known as 90
-degrees).
-
- $distance = great_circle_distance($lon0, pi/2 - $lat0,
- $lon1, pi/2 - $lat1, $rho);
-
-=head1 EXAMPLES
-
-To calculate the distance between London (51.3N 0.5W) and Tokyo (35.7N
-139.8E) in kilometers:
-
- use Math::Trig qw(great_circle_distance deg2rad);
-
- # Notice the 90 - latitude: phi zero is at the North Pole.
- @L = (deg2rad(-0.5), deg2rad(90 - 51.3));
- @T = (deg2rad(139.8),deg2rad(90 - 35.7));
-
- $km = great_circle_distance(@L, @T, 6378);
-
-The answer may be off by few percentages because of the irregular
-(slightly aspherical) form of the Earth. The used formula
-
- lat0 = 90 degrees - phi0
- lat1 = 90 degrees - phi1
- d = R * arccos(cos(lat0) * cos(lat1) * cos(lon1 - lon01) +
- sin(lat0) * sin(lat1))
-
-is also somewhat unreliable for small distances (for locations
-separated less than about five degrees) because it uses arc cosine
-which is rather ill-conditioned for values close to zero.
-
-=head1 BUGS
-
-Saying C<use Math::Trig;> exports many mathematical routines in the
-caller environment and even overrides some (C<sin>, C<cos>). This is
-construed as a feature by the Authors, actually... ;-)
-
-The code is not optimized for speed, especially because we use
-C<Math::Complex> and thus go quite near complex numbers while doing
-the computations even when the arguments are not. This, however,
-cannot be completely avoided if we want things like C<asin(2)> to give
-an answer instead of giving a fatal runtime error.
-
-=head1 AUTHORS
-
-Jarkko Hietaniemi <F<jhi@iki.fi>> and
-Raphael Manfredi <F<Raphael_Manfredi@pobox.com>>.
-
-=cut
-
-# eof
diff --git a/contrib/perl5/lib/Net/Ping.pm b/contrib/perl5/lib/Net/Ping.pm
deleted file mode 100644
index a2846fe..0000000
--- a/contrib/perl5/lib/Net/Ping.pm
+++ /dev/null
@@ -1,559 +0,0 @@
-package Net::Ping;
-
-# Author: mose@ccsn.edu (Russell Mosemann)
-#
-# Authors of the original pingecho():
-# karrer@bernina.ethz.ch (Andreas Karrer)
-# Paul.Marquess@btinternet.com (Paul Marquess)
-#
-# Copyright (c) 1996 Russell Mosemann. All rights reserved. This
-# program is free software; you may redistribute it and/or modify it
-# under the same terms as Perl itself.
-
-use 5.005_64;
-require Exporter;
-
-use strict;
-our(@ISA, @EXPORT, $VERSION, $def_timeout, $def_proto, $max_datasize);
-use FileHandle;
-use Socket qw( SOCK_DGRAM SOCK_STREAM SOCK_RAW PF_INET
- inet_aton sockaddr_in );
-use Carp;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(pingecho);
-$VERSION = 2.02;
-
-# Constants
-
-$def_timeout = 5; # Default timeout to wait for a reply
-$def_proto = "udp"; # Default protocol to use for pinging
-$max_datasize = 1024; # Maximum data bytes in a packet
-
-# Description: The pingecho() subroutine is provided for backward
-# compatibility with the original Net::Ping. It accepts a host
-# name/IP and an optional timeout in seconds. Create a tcp ping
-# object and try pinging the host. The result of the ping is returned.
-
-sub pingecho
-{
- my ($host, # Name or IP number of host to ping
- $timeout # Optional timeout in seconds
- ) = @_;
- my ($p); # A ping object
-
- $p = Net::Ping->new("tcp", $timeout);
- $p->ping($host); # Going out of scope closes the connection
-}
-
-# Description: The new() method creates a new ping object. Optional
-# parameters may be specified for the protocol to use, the timeout in
-# seconds and the size in bytes of additional data which should be
-# included in the packet.
-# After the optional parameters are checked, the data is constructed
-# and a socket is opened if appropriate. The object is returned.
-
-sub new
-{
- my ($this,
- $proto, # Optional protocol to use for pinging
- $timeout, # Optional timeout in seconds
- $data_size # Optional additional bytes of data
- ) = @_;
- my $class = ref($this) || $this;
- my $self = {};
- my ($cnt, # Count through data bytes
- $min_datasize # Minimum data bytes required
- );
-
- bless($self, $class);
-
- $proto = $def_proto unless $proto; # Determine the protocol
- croak("Protocol for ping must be \"tcp\", \"udp\" or \"icmp\"")
- unless $proto =~ m/^(tcp|udp|icmp)$/;
- $self->{"proto"} = $proto;
-
- $timeout = $def_timeout unless $timeout; # Determine the timeout
- croak("Default timeout for ping must be greater than 0 seconds")
- if $timeout <= 0;
- $self->{"timeout"} = $timeout;
-
- $min_datasize = ($proto eq "udp") ? 1 : 0; # Determine data size
- $data_size = $min_datasize unless defined($data_size) && $proto ne "tcp";
- croak("Data for ping must be from $min_datasize to $max_datasize bytes")
- if ($data_size < $min_datasize) || ($data_size > $max_datasize);
- $data_size-- if $self->{"proto"} eq "udp"; # We provide the first byte
- $self->{"data_size"} = $data_size;
-
- $self->{"data"} = ""; # Construct data bytes
- for ($cnt = 0; $cnt < $self->{"data_size"}; $cnt++)
- {
- $self->{"data"} .= chr($cnt % 256);
- }
-
- $self->{"seq"} = 0; # For counting packets
- if ($self->{"proto"} eq "udp") # Open a socket
- {
- $self->{"proto_num"} = (getprotobyname('udp'))[2] ||
- croak("Can't udp protocol by name");
- $self->{"port_num"} = (getservbyname('echo', 'udp'))[2] ||
- croak("Can't get udp echo port by name");
- $self->{"fh"} = FileHandle->new();
- socket($self->{"fh"}, &PF_INET(), &SOCK_DGRAM(),
- $self->{"proto_num"}) ||
- croak("udp socket error - $!");
- }
- elsif ($self->{"proto"} eq "icmp")
- {
- croak("icmp ping requires root privilege") if ($> and $^O ne 'VMS');
- $self->{"proto_num"} = (getprotobyname('icmp'))[2] ||
- croak("Can't get icmp protocol by name");
- $self->{"pid"} = $$ & 0xffff; # Save lower 16 bits of pid
- $self->{"fh"} = FileHandle->new();
- socket($self->{"fh"}, &PF_INET(), &SOCK_RAW(), $self->{"proto_num"}) ||
- croak("icmp socket error - $!");
- }
- elsif ($self->{"proto"} eq "tcp") # Just a file handle for now
- {
- $self->{"proto_num"} = (getprotobyname('tcp'))[2] ||
- croak("Can't get tcp protocol by name");
- $self->{"port_num"} = (getservbyname('echo', 'tcp'))[2] ||
- croak("Can't get tcp echo port by name");
- $self->{"fh"} = FileHandle->new();
- }
-
-
- return($self);
-}
-
-# Description: Ping a host name or IP number with an optional timeout.
-# First lookup the host, and return undef if it is not found. Otherwise
-# perform the specific ping method based on the protocol. Return the
-# result of the ping.
-
-sub ping
-{
- my ($self,
- $host, # Name or IP number of host to ping
- $timeout # Seconds after which ping times out
- ) = @_;
- my ($ip, # Packed IP number of $host
- $ret # The return value
- );
-
- croak("Usage: \$p->ping(\$host [, \$timeout])") unless @_ == 2 || @_ == 3;
- $timeout = $self->{"timeout"} unless $timeout;
- croak("Timeout must be greater than 0 seconds") if $timeout <= 0;
-
- $ip = inet_aton($host);
- return(undef) unless defined($ip); # Does host exist?
-
- if ($self->{"proto"} eq "udp")
- {
- $ret = $self->ping_udp($ip, $timeout);
- }
- elsif ($self->{"proto"} eq "icmp")
- {
- $ret = $self->ping_icmp($ip, $timeout);
- }
- elsif ($self->{"proto"} eq "tcp")
- {
- $ret = $self->ping_tcp($ip, $timeout);
- }
- else
- {
- croak("Unknown protocol \"$self->{proto}\" in ping()");
- }
- return($ret);
-}
-
-sub ping_icmp
-{
- my ($self,
- $ip, # Packed IP number of the host
- $timeout # Seconds after which ping times out
- ) = @_;
-
- my $ICMP_ECHOREPLY = 0; # ICMP packet types
- my $ICMP_ECHO = 8;
- my $icmp_struct = "C2 S3 A"; # Structure of a minimal ICMP packet
- my $subcode = 0; # No ICMP subcode for ECHO and ECHOREPLY
- my $flags = 0; # No special flags when opening a socket
- my $port = 0; # No port with ICMP
-
- my ($saddr, # sockaddr_in with port and ip
- $checksum, # Checksum of ICMP packet
- $msg, # ICMP packet to send
- $len_msg, # Length of $msg
- $rbits, # Read bits, filehandles for reading
- $nfound, # Number of ready filehandles found
- $finish_time, # Time ping should be finished
- $done, # set to 1 when we are done
- $ret, # Return value
- $recv_msg, # Received message including IP header
- $from_saddr, # sockaddr_in of sender
- $from_port, # Port packet was sent from
- $from_ip, # Packed IP of sender
- $from_type, # ICMP type
- $from_subcode, # ICMP subcode
- $from_chk, # ICMP packet checksum
- $from_pid, # ICMP packet id
- $from_seq, # ICMP packet sequence
- $from_msg # ICMP message
- );
-
- $self->{"seq"} = ($self->{"seq"} + 1) % 65536; # Increment sequence
- $checksum = 0; # No checksum for starters
- $msg = pack($icmp_struct . $self->{"data_size"}, $ICMP_ECHO, $subcode,
- $checksum, $self->{"pid"}, $self->{"seq"}, $self->{"data"});
- $checksum = Net::Ping->checksum($msg);
- $msg = pack($icmp_struct . $self->{"data_size"}, $ICMP_ECHO, $subcode,
- $checksum, $self->{"pid"}, $self->{"seq"}, $self->{"data"});
- $len_msg = length($msg);
- $saddr = sockaddr_in($port, $ip);
- send($self->{"fh"}, $msg, $flags, $saddr); # Send the message
-
- $rbits = "";
- vec($rbits, $self->{"fh"}->fileno(), 1) = 1;
- $ret = 0;
- $done = 0;
- $finish_time = time() + $timeout; # Must be done by this time
- while (!$done && $timeout > 0) # Keep trying if we have time
- {
- $nfound = select($rbits, undef, undef, $timeout); # Wait for packet
- $timeout = $finish_time - time(); # Get remaining time
- if (!defined($nfound)) # Hmm, a strange error
- {
- $ret = undef;
- $done = 1;
- }
- elsif ($nfound) # Got a packet from somewhere
- {
- $recv_msg = "";
- $from_saddr = recv($self->{"fh"}, $recv_msg, 1500, $flags);
- ($from_port, $from_ip) = sockaddr_in($from_saddr);
- ($from_type, $from_subcode, $from_chk,
- $from_pid, $from_seq, $from_msg) =
- unpack($icmp_struct . $self->{"data_size"},
- substr($recv_msg, length($recv_msg) - $len_msg,
- $len_msg));
- if (($from_type == $ICMP_ECHOREPLY) &&
- ($from_ip eq $ip) &&
- ($from_pid == $self->{"pid"}) && # Does the packet check out?
- ($from_seq == $self->{"seq"}))
- {
- $ret = 1; # It's a winner
- $done = 1;
- }
- }
- else # Oops, timed out
- {
- $done = 1;
- }
- }
- return($ret)
-}
-
-# Description: Do a checksum on the message. Basically sum all of
-# the short words and fold the high order bits into the low order bits.
-
-sub checksum
-{
- my ($class,
- $msg # The message to checksum
- ) = @_;
- my ($len_msg, # Length of the message
- $num_short, # The number of short words in the message
- $short, # One short word
- $chk # The checksum
- );
-
- $len_msg = length($msg);
- $num_short = int($len_msg / 2);
- $chk = 0;
- foreach $short (unpack("S$num_short", $msg))
- {
- $chk += $short;
- } # Add the odd byte in
- $chk += (unpack("C", substr($msg, $len_msg - 1, 1)) << 8) if $len_msg % 2;
- $chk = ($chk >> 16) + ($chk & 0xffff); # Fold high into low
- return(~(($chk >> 16) + $chk) & 0xffff); # Again and complement
-}
-
-# Description: Perform a tcp echo ping. Since a tcp connection is
-# host specific, we have to open and close each connection here. We
-# can't just leave a socket open. Because of the robust nature of
-# tcp, it will take a while before it gives up trying to establish a
-# connection. Therefore, we have to set the alarm to break out of the
-# connection sooner if the timeout expires. No data bytes are actually
-# sent since the successful establishment of a connection is proof
-# enough of the reachability of the remote host. Also, tcp is
-# expensive and doesn't need our help to add to the overhead.
-
-sub ping_tcp
-{
- my ($self,
- $ip, # Packed IP number of the host
- $timeout # Seconds after which ping times out
- ) = @_;
- my ($saddr, # sockaddr_in with port and ip
- $ret # The return value
- );
-
- socket($self->{"fh"}, &PF_INET(), &SOCK_STREAM(), $self->{"proto_num"}) ||
- croak("tcp socket error - $!");
- $saddr = sockaddr_in($self->{"port_num"}, $ip);
-
- $SIG{'ALRM'} = sub { die };
- alarm($timeout); # Interrupt connect() if we have to
-
- $ret = 0; # Default to unreachable
- eval <<'EOM' ;
- return unless connect($self->{"fh"}, $saddr);
- $ret = 1;
-EOM
- alarm(0);
- $self->{"fh"}->close();
- return($ret);
-}
-
-# Description: Perform a udp echo ping. Construct a message of
-# at least the one-byte sequence number and any additional data bytes.
-# Send the message out and wait for a message to come back. If we
-# get a message, make sure all of its parts match. If they do, we are
-# done. Otherwise go back and wait for the message until we run out
-# of time. Return the result of our efforts.
-
-sub ping_udp
-{
- my ($self,
- $ip, # Packed IP number of the host
- $timeout # Seconds after which ping times out
- ) = @_;
-
- my $flags = 0; # Nothing special on open
-
- my ($saddr, # sockaddr_in with port and ip
- $ret, # The return value
- $msg, # Message to be echoed
- $finish_time, # Time ping should be finished
- $done, # Set to 1 when we are done pinging
- $rbits, # Read bits, filehandles for reading
- $nfound, # Number of ready filehandles found
- $from_saddr, # sockaddr_in of sender
- $from_msg, # Characters echoed by $host
- $from_port, # Port message was echoed from
- $from_ip # Packed IP number of sender
- );
-
- $saddr = sockaddr_in($self->{"port_num"}, $ip);
- $self->{"seq"} = ($self->{"seq"} + 1) % 256; # Increment sequence
- $msg = chr($self->{"seq"}) . $self->{"data"}; # Add data if any
- send($self->{"fh"}, $msg, $flags, $saddr); # Send it
-
- $rbits = "";
- vec($rbits, $self->{"fh"}->fileno(), 1) = 1;
- $ret = 0; # Default to unreachable
- $done = 0;
- $finish_time = time() + $timeout; # Ping needs to be done by then
- while (!$done && $timeout > 0)
- {
- $nfound = select($rbits, undef, undef, $timeout); # Wait for response
- $timeout = $finish_time - time(); # Get remaining time
-
- if (!defined($nfound)) # Hmm, a strange error
- {
- $ret = undef;
- $done = 1;
- }
- elsif ($nfound) # A packet is waiting
- {
- $from_msg = "";
- $from_saddr = recv($self->{"fh"}, $from_msg, 1500, $flags)
- or last; # For example an unreachable host will make recv() fail.
- ($from_port, $from_ip) = sockaddr_in($from_saddr);
- if (($from_ip eq $ip) && # Does the packet check out?
- ($from_port == $self->{"port_num"}) &&
- ($from_msg eq $msg))
- {
- $ret = 1; # It's a winner
- $done = 1;
- }
- }
- else # Oops, timed out
- {
- $done = 1;
- }
- }
- return($ret);
-}
-
-# Description: Close the connection unless we are using the tcp
-# protocol, since it will already be closed.
-
-sub close
-{
- my ($self) = @_;
-
- $self->{"fh"}->close() unless $self->{"proto"} eq "tcp";
-}
-
-
-1;
-__END__
-
-=head1 NAME
-
-Net::Ping - check a remote host for reachability
-
-=head1 SYNOPSIS
-
- use Net::Ping;
-
- $p = Net::Ping->new();
- print "$host is alive.\n" if $p->ping($host);
- $p->close();
-
- $p = Net::Ping->new("icmp");
- foreach $host (@host_array)
- {
- print "$host is ";
- print "NOT " unless $p->ping($host, 2);
- print "reachable.\n";
- sleep(1);
- }
- $p->close();
-
- $p = Net::Ping->new("tcp", 2);
- while ($stop_time > time())
- {
- print "$host not reachable ", scalar(localtime()), "\n"
- unless $p->ping($host);
- sleep(300);
- }
- undef($p);
-
- # For backward compatibility
- print "$host is alive.\n" if pingecho($host);
-
-=head1 DESCRIPTION
-
-This module contains methods to test the reachability of remote
-hosts on a network. A ping object is first created with optional
-parameters, a variable number of hosts may be pinged multiple
-times and then the connection is closed.
-
-You may choose one of three different protocols to use for the
-ping. The "udp" protocol is the default. Note that a live remote host
-may still fail to be pingable by one or more of these protocols. For
-example, www.microsoft.com is generally alive but not pingable.
-
-With the "tcp" protocol the ping() method attempts to establish a
-connection to the remote host's echo port. If the connection is
-successfully established, the remote host is considered reachable. No
-data is actually echoed. This protocol does not require any special
-privileges but has higher overhead than the other two protocols.
-
-Specifying the "udp" protocol causes the ping() method to send a udp
-packet to the remote host's echo port. If the echoed packet is
-received from the remote host and the received packet contains the
-same data as the packet that was sent, the remote host is considered
-reachable. This protocol does not require any special privileges.
-
-It should be borne in mind that, for both tcp and udp ping, a host
-will be reported as unreachable if it is not running the
-appropriate echo service. For Unix-like systems see L<inetd(8)> for
-more information.
-
-If the "icmp" protocol is specified, the ping() method sends an icmp
-echo message to the remote host, which is what the UNIX ping program
-does. If the echoed message is received from the remote host and
-the echoed information is correct, the remote host is considered
-reachable. Specifying the "icmp" protocol requires that the program
-be run as root or that the program be setuid to root.
-
-=head2 Functions
-
-=over 4
-
-=item Net::Ping->new([$proto [, $def_timeout [, $bytes]]]);
-
-Create a new ping object. All of the parameters are optional. $proto
-specifies the protocol to use when doing a ping. The current choices
-are "tcp", "udp" or "icmp". The default is "udp".
-
-If a default timeout ($def_timeout) in seconds is provided, it is used
-when a timeout is not given to the ping() method (below). The timeout
-must be greater than 0 and the default, if not specified, is 5 seconds.
-
-If the number of data bytes ($bytes) is given, that many data bytes
-are included in the ping packet sent to the remote host. The number of
-data bytes is ignored if the protocol is "tcp". The minimum (and
-default) number of data bytes is 1 if the protocol is "udp" and 0
-otherwise. The maximum number of data bytes that can be specified is
-1024.
-
-=item $p->ping($host [, $timeout]);
-
-Ping the remote host and wait for a response. $host can be either the
-hostname or the IP number of the remote host. The optional timeout
-must be greater than 0 seconds and defaults to whatever was specified
-when the ping object was created. If the hostname cannot be found or
-there is a problem with the IP number, undef is returned. Otherwise,
-1 is returned if the host is reachable and 0 if it is not. For all
-practical purposes, undef and 0 and can be treated as the same case.
-
-=item $p->close();
-
-Close the network connection for this ping object. The network
-connection is also closed by "undef $p". The network connection is
-automatically closed if the ping object goes out of scope (e.g. $p is
-local to a subroutine and you leave the subroutine).
-
-=item pingecho($host [, $timeout]);
-
-To provide backward compatibility with the previous version of
-Net::Ping, a pingecho() subroutine is available with the same
-functionality as before. pingecho() uses the tcp protocol. The
-return values and parameters are the same as described for the ping()
-method. This subroutine is obsolete and may be removed in a future
-version of Net::Ping.
-
-=back
-
-=head1 WARNING
-
-pingecho() or a ping object with the tcp protocol use alarm() to
-implement the timeout. So, don't use alarm() in your program while
-you are using pingecho() or a ping object with the tcp protocol. The
-udp and icmp protocols do not use alarm() to implement the timeout.
-
-=head1 NOTES
-
-There will be less network overhead (and some efficiency in your
-program) if you specify either the udp or the icmp protocol. The tcp
-protocol will generate 2.5 times or more traffic for each ping than
-either udp or icmp. If many hosts are pinged frequently, you may wish
-to implement a small wait (e.g. 25ms or more) between each ping to
-avoid flooding your network with packets.
-
-The icmp protocol requires that the program be run as root or that it
-be setuid to root. The tcp and udp protocols do not require special
-privileges, but not all network devices implement the echo protocol
-for tcp or udp.
-
-Local hosts should normally respond to pings within milliseconds.
-However, on a very congested network it may take up to 3 seconds or
-longer to receive an echo packet from the remote host. If the timeout
-is set too low under these conditions, it will appear that the remote
-host is not reachable (which is almost the truth).
-
-Reachability doesn't necessarily mean that the remote host is actually
-functioning beyond its ability to echo packets.
-
-Because of a lack of anything better, this module uses its own
-routines to pack and unpack ICMP packets. It would be better for a
-separate module to be written which understands all of the different
-kinds of ICMP packets.
-
-=cut
diff --git a/contrib/perl5/lib/Net/hostent.pm b/contrib/perl5/lib/Net/hostent.pm
deleted file mode 100644
index 6cfde72..0000000
--- a/contrib/perl5/lib/Net/hostent.pm
+++ /dev/null
@@ -1,150 +0,0 @@
-package Net::hostent;
-use strict;
-
-use 5.005_64;
-our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-BEGIN {
- use Exporter ();
- @EXPORT = qw(gethostbyname gethostbyaddr gethost);
- @EXPORT_OK = qw(
- $h_name @h_aliases
- $h_addrtype $h_length
- @h_addr_list $h_addr
- );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
-}
-use vars @EXPORT_OK;
-
-# Class::Struct forbids use of @ISA
-sub import { goto &Exporter::import }
-
-use Class::Struct qw(struct);
-struct 'Net::hostent' => [
- name => '$',
- aliases => '@',
- addrtype => '$',
- 'length' => '$',
- addr_list => '@',
-];
-
-sub addr { shift->addr_list->[0] }
-
-sub populate (@) {
- return unless @_;
- my $hob = new();
- $h_name = $hob->[0] = $_[0];
- @h_aliases = @{ $hob->[1] } = split ' ', $_[1];
- $h_addrtype = $hob->[2] = $_[2];
- $h_length = $hob->[3] = $_[3];
- $h_addr = $_[4];
- @h_addr_list = @{ $hob->[4] } = @_[ (4 .. $#_) ];
- return $hob;
-}
-
-sub gethostbyname ($) { populate(CORE::gethostbyname(shift)) }
-
-sub gethostbyaddr ($;$) {
- my ($addr, $addrtype);
- $addr = shift;
- require Socket unless @_;
- $addrtype = @_ ? shift : Socket::AF_INET();
- populate(CORE::gethostbyaddr($addr, $addrtype))
-}
-
-sub gethost($) {
- if ($_[0] =~ /^\d+(?:\.\d+(?:\.\d+(?:\.\d+)?)?)?$/) {
- require Socket;
- &gethostbyaddr(Socket::inet_aton(shift));
- } else {
- &gethostbyname;
- }
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Net::hostent - by-name interface to Perl's built-in gethost*() functions
-
-=head1 SYNOPSIS
-
- use Net::hostnet;
-
-=head1 DESCRIPTION
-
-This module's default exports override the core gethostbyname() and
-gethostbyaddr() functions, replacing them with versions that return
-"Net::hostent" objects. This object has methods that return the similarly
-named structure field name from the C's hostent structure from F<netdb.h>;
-namely name, aliases, addrtype, length, and addr_list. The aliases and
-addr_list methods return array reference, the rest scalars. The addr
-method is equivalent to the zeroth element in the addr_list array
-reference.
-
-You may also import all the structure fields directly into your namespace
-as regular variables using the :FIELDS import tag. (Note that this still
-overrides your core functions.) Access these fields as variables named
-with a preceding C<h_>. Thus, C<$host_obj-E<gt>name()> corresponds to
-$h_name if you import the fields. Array references are available as
-regular array variables, so for example C<@{ $host_obj-E<gt>aliases()
-}> would be simply @h_aliases.
-
-The gethost() function is a simple front-end that forwards a numeric
-argument to gethostbyaddr() by way of Socket::inet_aton, and the rest
-to gethostbyname().
-
-To access this functionality without the core overrides,
-pass the C<use> an empty import list, and then access
-function functions with their full qualified names.
-On the other hand, the built-ins are still available
-via the C<CORE::> pseudo-package.
-
-=head1 EXAMPLES
-
- use Net::hostent;
- use Socket;
-
- @ARGV = ('netscape.com') unless @ARGV;
-
- for $host ( @ARGV ) {
-
- unless ($h = gethost($host)) {
- warn "$0: no such host: $host\n";
- next;
- }
-
- printf "\n%s is %s%s\n",
- $host,
- lc($h->name) eq lc($host) ? "" : "*really* ",
- $h->name;
-
- print "\taliases are ", join(", ", @{$h->aliases}), "\n"
- if @{$h->aliases};
-
- if ( @{$h->addr_list} > 1 ) {
- my $i;
- for $addr ( @{$h->addr_list} ) {
- printf "\taddr #%d is [%s]\n", $i++, inet_ntoa($addr);
- }
- } else {
- printf "\taddress is [%s]\n", inet_ntoa($h->addr);
- }
-
- if ($h = gethostbyaddr($h->addr)) {
- if (lc($h->name) ne lc($host)) {
- printf "\tThat addr reverses to host %s!\n", $h->name;
- $host = $h->name;
- redo;
- }
- }
- }
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/contrib/perl5/lib/Net/netent.pm b/contrib/perl5/lib/Net/netent.pm
deleted file mode 100644
index b21cd04..0000000
--- a/contrib/perl5/lib/Net/netent.pm
+++ /dev/null
@@ -1,168 +0,0 @@
-package Net::netent;
-use strict;
-
-use 5.005_64;
-our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-BEGIN {
- use Exporter ();
- @EXPORT = qw(getnetbyname getnetbyaddr getnet);
- @EXPORT_OK = qw(
- $n_name @n_aliases
- $n_addrtype $n_net
- );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
-}
-use vars @EXPORT_OK;
-
-# Class::Struct forbids use of @ISA
-sub import { goto &Exporter::import }
-
-use Class::Struct qw(struct);
-struct 'Net::netent' => [
- name => '$',
- aliases => '@',
- addrtype => '$',
- net => '$',
-];
-
-sub populate (@) {
- return unless @_;
- my $nob = new();
- $n_name = $nob->[0] = $_[0];
- @n_aliases = @{ $nob->[1] } = split ' ', $_[1];
- $n_addrtype = $nob->[2] = $_[2];
- $n_net = $nob->[3] = $_[3];
- return $nob;
-}
-
-sub getnetbyname ($) { populate(CORE::getnetbyname(shift)) }
-
-sub getnetbyaddr ($;$) {
- my ($net, $addrtype);
- $net = shift;
- require Socket if @_;
- $addrtype = @_ ? shift : Socket::AF_INET();
- populate(CORE::getnetbyaddr($net, $addrtype))
-}
-
-sub getnet($) {
- if ($_[0] =~ /^\d+(?:\.\d+(?:\.\d+(?:\.\d+)?)?)?$/) {
- require Socket;
- &getnetbyaddr(Socket::inet_aton(shift));
- } else {
- &getnetbyname;
- }
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Net::netent - by-name interface to Perl's built-in getnet*() functions
-
-=head1 SYNOPSIS
-
- use Net::netent qw(:FIELDS);
- getnetbyname("loopback") or die "bad net";
- printf "%s is %08X\n", $n_name, $n_net;
-
- use Net::netent;
-
- $n = getnetbyname("loopback") or die "bad net";
- { # there's gotta be a better way, eh?
- @bytes = unpack("C4", pack("N", $n->net));
- shift @bytes while @bytes && $bytes[0] == 0;
- }
- printf "%s is %08X [%d.%d.%d.%d]\n", $n->name, $n->net, @bytes;
-
-=head1 DESCRIPTION
-
-This module's default exports override the core getnetbyname() and
-getnetbyaddr() functions, replacing them with versions that return
-"Net::netent" objects. This object has methods that return the similarly
-named structure field name from the C's netent structure from F<netdb.h>;
-namely name, aliases, addrtype, and net. The aliases
-method returns an array reference, the rest scalars.
-
-You may also import all the structure fields directly into your namespace
-as regular variables using the :FIELDS import tag. (Note that this still
-overrides your core functions.) Access these fields as variables named
-with a preceding C<n_>. Thus, C<$net_obj-E<gt>name()> corresponds to
-$n_name if you import the fields. Array references are available as
-regular array variables, so for example C<@{ $net_obj-E<gt>aliases()
-}> would be simply @n_aliases.
-
-The getnet() function is a simple front-end that forwards a numeric
-argument to getnetbyaddr(), and the rest
-to getnetbyname().
-
-To access this functionality without the core overrides,
-pass the C<use> an empty import list, and then access
-function functions with their full qualified names.
-On the other hand, the built-ins are still available
-via the C<CORE::> pseudo-package.
-
-=head1 EXAMPLES
-
-The getnet() functions do this in the Perl core:
-
- sv_setiv(sv, (I32)nent->n_net);
-
-The gethost() functions do this in the Perl core:
-
- sv_setpvn(sv, hent->h_addr, len);
-
-That means that the address comes back in binary for the
-host functions, and as a regular perl integer for the net ones.
-This seems a bug, but here's how to deal with it:
-
- use strict;
- use Socket;
- use Net::netent;
-
- @ARGV = ('loopback') unless @ARGV;
-
- my($n, $net);
-
- for $net ( @ARGV ) {
-
- unless ($n = getnetbyname($net)) {
- warn "$0: no such net: $net\n";
- next;
- }
-
- printf "\n%s is %s%s\n",
- $net,
- lc($n->name) eq lc($net) ? "" : "*really* ",
- $n->name;
-
- print "\taliases are ", join(", ", @{$n->aliases}), "\n"
- if @{$n->aliases};
-
- # this is stupid; first, why is this not in binary?
- # second, why am i going through these convolutions
- # to make it looks right
- {
- my @a = unpack("C4", pack("N", $n->net));
- shift @a while @a && $a[0] == 0;
- printf "\taddr is %s [%d.%d.%d.%d]\n", $n->net, @a;
- }
-
- if ($n = getnetbyaddr($n->net)) {
- if (lc($n->name) ne lc($net)) {
- printf "\tThat addr reverses to net %s!\n", $n->name;
- $net = $n->name;
- redo;
- }
- }
- }
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/contrib/perl5/lib/Net/protoent.pm b/contrib/perl5/lib/Net/protoent.pm
deleted file mode 100644
index 00a76af..0000000
--- a/contrib/perl5/lib/Net/protoent.pm
+++ /dev/null
@@ -1,96 +0,0 @@
-package Net::protoent;
-use strict;
-
-use 5.005_64;
-our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-BEGIN {
- use Exporter ();
- @EXPORT = qw(getprotobyname getprotobynumber getprotoent);
- @EXPORT_OK = qw( $p_name @p_aliases $p_proto getproto );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
-}
-use vars @EXPORT_OK;
-
-# Class::Struct forbids use of @ISA
-sub import { goto &Exporter::import }
-
-use Class::Struct qw(struct);
-struct 'Net::protoent' => [
- name => '$',
- aliases => '@',
- proto => '$',
-];
-
-sub populate (@) {
- return unless @_;
- my $pob = new();
- $p_name = $pob->[0] = $_[0];
- @p_aliases = @{ $pob->[1] } = split ' ', $_[1];
- $p_proto = $pob->[2] = $_[2];
- return $pob;
-}
-
-sub getprotoent ( ) { populate(CORE::getprotoent()) }
-sub getprotobyname ($) { populate(CORE::getprotobyname(shift)) }
-sub getprotobynumber ($) { populate(CORE::getprotobynumber(shift)) }
-
-sub getproto ($;$) {
- no strict 'refs';
- return &{'getprotoby' . ($_[0]=~/^\d+$/ ? 'number' : 'name')}(@_);
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Net::protoent - by-name interface to Perl's built-in getproto*() functions
-
-=head1 SYNOPSIS
-
- use Net::protoent;
- $p = getprotobyname(shift || 'tcp') || die "no proto";
- printf "proto for %s is %d, aliases are %s\n",
- $p->name, $p->proto, "@{$p->aliases}";
-
- use Net::protoent qw(:FIELDS);
- getprotobyname(shift || 'tcp') || die "no proto";
- print "proto for $p_name is $p_proto, aliases are @p_aliases\n";
-
-=head1 DESCRIPTION
-
-This module's default exports override the core getprotoent(),
-getprotobyname(), and getnetbyport() functions, replacing them with
-versions that return "Net::protoent" objects. They take default
-second arguments of "tcp". This object has methods that return the
-similarly named structure field name from the C's protoent structure
-from F<netdb.h>; namely name, aliases, and proto. The aliases method
-returns an array reference, the rest scalars.
-
-You may also import all the structure fields directly into your namespace
-as regular variables using the :FIELDS import tag. (Note that this still
-overrides your core functions.) Access these fields as variables named
-with a preceding C<p_>. Thus, C<$proto_obj-E<gt>name()> corresponds to
-$p_name if you import the fields. Array references are available as
-regular array variables, so for example C<@{ $proto_obj-E<gt>aliases()
-}> would be simply @p_aliases.
-
-The getproto() function is a simple front-end that forwards a numeric
-argument to getprotobyport(), and the rest to getprotobyname().
-This function is not exported by default.
-
-To access this functionality without the core overrides,
-pass the C<use> an empty import list, and then access
-function functions with their full qualified names.
-On the other hand, the built-ins are still available
-via the C<CORE::> pseudo-package.
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/contrib/perl5/lib/Net/servent.pm b/contrib/perl5/lib/Net/servent.pm
deleted file mode 100644
index c892af0..0000000
--- a/contrib/perl5/lib/Net/servent.pm
+++ /dev/null
@@ -1,112 +0,0 @@
-package Net::servent;
-use strict;
-
-use 5.005_64;
-our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-BEGIN {
- use Exporter ();
- @EXPORT = qw(getservbyname getservbyport getservent getserv);
- @EXPORT_OK = qw( $s_name @s_aliases $s_port $s_proto );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
-}
-use vars @EXPORT_OK;
-
-# Class::Struct forbids use of @ISA
-sub import { goto &Exporter::import }
-
-use Class::Struct qw(struct);
-struct 'Net::servent' => [
- name => '$',
- aliases => '@',
- port => '$',
- proto => '$',
-];
-
-sub populate (@) {
- return unless @_;
- my $sob = new();
- $s_name = $sob->[0] = $_[0];
- @s_aliases = @{ $sob->[1] } = split ' ', $_[1];
- $s_port = $sob->[2] = $_[2];
- $s_proto = $sob->[3] = $_[3];
- return $sob;
-}
-
-sub getservent ( ) { populate(CORE::getservent()) }
-sub getservbyname ($;$) { populate(CORE::getservbyname(shift,shift||'tcp')) }
-sub getservbyport ($;$) { populate(CORE::getservbyport(shift,shift||'tcp')) }
-
-sub getserv ($;$) {
- no strict 'refs';
- return &{'getservby' . ($_[0]=~/^\d+$/ ? 'port' : 'name')}(@_);
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Net::servent - by-name interface to Perl's built-in getserv*() functions
-
-=head1 SYNOPSIS
-
- use Net::servent;
- $s = getservbyname(shift || 'ftp') || die "no service";
- printf "port for %s is %s, aliases are %s\n",
- $s->name, $s->port, "@{$s->aliases}";
-
- use Net::servent qw(:FIELDS);
- getservbyname(shift || 'ftp') || die "no service";
- print "port for $s_name is $s_port, aliases are @s_aliases\n";
-
-=head1 DESCRIPTION
-
-This module's default exports override the core getservent(),
-getservbyname(), and
-getnetbyport() functions, replacing them with versions that return
-"Net::servent" objects. They take default second arguments of "tcp". This object has methods that return the similarly
-named structure field name from the C's servent structure from F<netdb.h>;
-namely name, aliases, port, and proto. The aliases
-method returns an array reference, the rest scalars.
-
-You may also import all the structure fields directly into your namespace
-as regular variables using the :FIELDS import tag. (Note that this still
-overrides your core functions.) Access these fields as variables named
-with a preceding C<n_>. Thus, C<$serv_obj-E<gt>name()> corresponds to
-$s_name if you import the fields. Array references are available as
-regular array variables, so for example C<@{ $serv_obj-E<gt>aliases()
-}> would be simply @s_aliases.
-
-The getserv() function is a simple front-end that forwards a numeric
-argument to getservbyport(), and the rest to getservbyname().
-
-To access this functionality without the core overrides,
-pass the C<use> an empty import list, and then access
-function functions with their full qualified names.
-On the other hand, the built-ins are still available
-via the C<CORE::> pseudo-package.
-
-=head1 EXAMPLES
-
- use Net::servent qw(:FIELDS);
-
- while (@ARGV) {
- my ($service, $proto) = ((split m!/!, shift), 'tcp');
- my $valet = getserv($service, $proto);
- unless ($valet) {
- warn "$0: No service: $service/$proto\n"
- next;
- }
- printf "service $service/$proto is port %d\n", $valet->port;
- print "alias are @s_aliases\n" if @s_aliases;
- }
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/contrib/perl5/lib/Pod/Checker.pm b/contrib/perl5/lib/Pod/Checker.pm
deleted file mode 100644
index 0863c80..0000000
--- a/contrib/perl5/lib/Pod/Checker.pm
+++ /dev/null
@@ -1,1242 +0,0 @@
-#############################################################################
-# Pod/Checker.pm -- check pod documents for syntax errors
-#
-# Copyright (C) 1994-2000 by Bradford Appleton. All rights reserved.
-# This file is part of "PodParser". PodParser is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::Checker;
-
-use vars qw($VERSION);
-$VERSION = 1.2; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-
-use Pod::ParseUtils; ## for hyperlinks and lists
-
-=head1 NAME
-
-Pod::Checker, podchecker() - check pod documents for syntax errors
-
-=head1 SYNOPSIS
-
- use Pod::Checker;
-
- $syntax_okay = podchecker($filepath, $outputpath, %options);
-
- my $checker = new Pod::Checker %options;
- $checker->parse_from_file($filepath, \*STDERR);
-
-=head1 OPTIONS/ARGUMENTS
-
-C<$filepath> is the input POD to read and C<$outputpath> is
-where to write POD syntax error messages. Either argument may be a scalar
-indicating a file-path, or else a reference to an open filehandle.
-If unspecified, the input-file it defaults to C<\*STDIN>, and
-the output-file defaults to C<\*STDERR>.
-
-=head2 podchecker()
-
-This function can take a hash of options:
-
-=over 4
-
-=item B<-warnings> =E<gt> I<val>
-
-Turn warnings on/off. I<val> is usually 1 for on, but higher values
-trigger additional warnings. See L<"Warnings">.
-
-=back
-
-=head1 DESCRIPTION
-
-B<podchecker> will perform syntax checking of Perl5 POD format documentation.
-
-I<NOTE THAT THIS MODULE IS CURRENTLY IN THE BETA STAGE!>
-
-It is hoped that curious/ambitious user will help flesh out and add the
-additional features they wish to see in B<Pod::Checker> and B<podchecker>
-and verify that the checks are consistent with L<perlpod>.
-
-The following checks are currently preformed:
-
-=over 4
-
-=item *
-
-Unknown '=xxxx' commands, unknown 'XE<lt>...E<gt>' interior-sequences,
-and unterminated interior sequences.
-
-=item *
-
-Check for proper balancing of C<=begin> and C<=end>. The contents of such
-a block are generally ignored, i.e. no syntax checks are performed.
-
-=item *
-
-Check for proper nesting and balancing of C<=over>, C<=item> and C<=back>.
-
-=item *
-
-Check for same nested interior-sequences (e.g.
-C<LE<lt>...LE<lt>...E<gt>...E<gt>>).
-
-=item *
-
-Check for malformed or nonexisting entities C<EE<lt>...E<gt>>.
-
-=item *
-
-Check for correct syntax of hyperlinks C<LE<lt>...E<gt>>. See L<perlpod>
-for details.
-
-=item *
-
-Check for unresolved document-internal links. This check may also reveal
-misspelled links that seem to be internal links but should be links
-to something else.
-
-=back
-
-=head1 DIAGNOSTICS
-
-=head2 Errors
-
-=over 4
-
-=item * empty =headn
-
-A heading (C<=head1> or C<=head2>) without any text? That ain't no
-heading!
-
-=item * =over on line I<N> without closing =back
-
-The C<=over> command does not have a corresponding C<=back> before the
-next heading (C<=head1> or C<=head2>) or the end of the file.
-
-=item * =item without previous =over
-
-=item * =back without previous =over
-
-An C<=item> or C<=back> command has been found outside a
-C<=over>/C<=back> block.
-
-=item * No argument for =begin
-
-A C<=begin> command was found that is not followed by the formatter
-specification.
-
-=item * =end without =begin
-
-A standalone C<=end> command was found.
-
-=item * Nested =begin's
-
-There were at least two consecutive C<=begin> commands without
-the corresponding C<=end>. Only one C<=begin> may be active at
-a time.
-
-=item * =for without formatter specification
-
-There is no specification of the formatter after the C<=for> command.
-
-=item * unresolved internal link I<NAME>
-
-The given link to I<NAME> does not have a matching node in the current
-POD. This also happend when a single word node name is not enclosed in
-C<"">.
-
-=item * Unknown command "I<CMD>"
-
-An invalid POD command has been found. Valid are C<=head1>, C<=head2>,
-C<=over>, C<=item>, C<=back>, C<=begin>, C<=end>, C<=for>, C<=pod>,
-C<=cut>
-
-=item * Unknown interior-sequence "I<SEQ>"
-
-An invalid markup command has been encountered. Valid are:
-C<BE<lt>E<gt>>, C<CE<lt>E<gt>>, C<EE<lt>E<gt>>, C<FE<lt>E<gt>>,
-C<IE<lt>E<gt>>, C<LE<lt>E<gt>>, C<SE<lt>E<gt>>, C<XE<lt>E<gt>>,
-C<ZE<lt>E<gt>>
-
-=item * nested commands I<CMD>E<lt>...I<CMD>E<lt>...E<gt>...E<gt>
-
-Two nested identical markup commands have been found. Generally this
-does not make sense.
-
-=item * garbled entity I<STRING>
-
-The I<STRING> found cannot be interpreted as a character entity.
-
-=item * Entity number out of range
-
-An entity specified by number (dec, hex, oct) is out of range (1-255).
-
-=item * malformed link LE<lt>E<gt>
-
-The link found cannot be parsed because it does not conform to the
-syntax described in L<perlpod>.
-
-=item * nonempty ZE<lt>E<gt>
-
-The C<ZE<lt>E<gt>> sequence is supposed to be empty.
-
-=item * empty XE<lt>E<gt>
-
-The index entry specified contains nothing but whitespace.
-
-=item * Spurious text after =pod / =cut
-
-The commands C<=pod> and C<=cut> do not take any arguments.
-
-=item * Spurious character(s) after =back
-
-The C<=back> command does not take any arguments.
-
-=back
-
-=head2 Warnings
-
-These may not necessarily cause trouble, but indicate mediocre style.
-
-=over 4
-
-=item * multiple occurence of link target I<name>
-
-The POD file has some C<=item> and/or C<=head> commands that have
-the same text. Potential hyperlinks to such a text cannot be unique then.
-
-=item * line containing nothing but whitespace in paragraph
-
-There is some whitespace on a seemingly empty line. POD is very sensitive
-to such things, so this is flagged. B<vi> users switch on the B<list>
-option to avoid this problem.
-
-=begin _disabled_
-
-=item * file does not start with =head
-
-The file starts with a different POD directive than head.
-This is most probably something you do not want.
-
-=end _disabled_
-
-=item * previous =item has no contents
-
-There is a list C<=item> right above the flagged line that has no
-text contents. You probably want to delete empty items.
-
-=item * preceding non-item paragraph(s)
-
-A list introduced by C<=over> starts with a text or verbatim paragraph,
-but continues with C<=item>s. Move the non-item paragraph out of the
-C<=over>/C<=back> block.
-
-=item * =item type mismatch (I<one> vs. I<two>)
-
-A list started with e.g. a bulletted C<=item> and continued with a
-numbered one. This is obviously inconsistent. For most translators the
-type of the I<first> C<=item> determines the type of the list.
-
-=item * I<N> unescaped C<E<lt>E<gt>> in paragraph
-
-Angle brackets not written as C<E<lt>ltE<gt>> and C<E<lt>gtE<gt>>
-can potentially cause errors as they could be misinterpreted as
-markup commands. This is only printed when the -warnings level is
-greater than 1.
-
-=item * Unknown entity
-
-A character entity was found that does not belong to the standard
-ISO set or the POD specials C<verbar> and C<sol>.
-
-=item * No items in =over
-
-The list opened with C<=over> does not contain any items.
-
-=item * No argument for =item
-
-C<=item> without any parameters is deprecated. It should either be followed
-by C<*> to indicate an unordered list, by a number (optionally followed
-by a dot) to indicate an ordered (numbered) list or simple text for a
-definition list.
-
-=item * empty section in previous paragraph
-
-The previous section (introduced by a C<=head> command) does not contain
-any text. This usually indicates that something is missing. Note: A
-C<=head1> followed immediately by C<=head2> does not trigger this warning.
-
-=item * Verbatim paragraph in NAME section
-
-The NAME section (C<=head1 NAME>) should consist of a single paragraph
-with the script/module name, followed by a dash `-' and a very short
-description of what the thing is good for.
-
-=back
-
-=head2 Hyperlinks
-
-There are some warnings wrt. malformed hyperlinks.
-
-=over 4
-
-=item * ignoring leading/trailing whitespace in link
-
-There is whitespace at the beginning or the end of the contents of
-LE<lt>...E<gt>.
-
-=item * (section) in '$page' deprecated
-
-There is a section detected in the page name of LE<lt>...E<gt>, e.g.
-C<LE<gt>passwd(2)E<gt>>. POD hyperlinks may point to POD documents only.
-Please write C<CE<lt>passwd(2)E<gt>> instead. Some formatters are able
-to expand this to appropriate code. For links to (builtin) functions,
-please say C<LE<lt>perlfunc/mkdirE<gt>>, without ().
-
-=item * alternative text/node '%s' contains non-escaped | or /
-
-The characters C<|> and C</> are special in the LE<lt>...E<gt> context.
-Although the hyperlink parser does its best to determine which "/" is
-text and which is a delimiter in case of doubt, one ought to escape
-these literal characters like this:
-
- / E<sol>
- | E<verbar>
-
-=back
-
-=head1 RETURN VALUE
-
-B<podchecker> returns the number of POD syntax errors found or -1 if
-there were no POD commands at all found in the file.
-
-=head1 EXAMPLES
-
-I<[T.B.D.]>
-
-=head1 INTERFACE
-
-While checking, this module collects document properties, e.g. the nodes
-for hyperlinks (C<=headX>, C<=item>) and index entries (C<XE<lt>E<gt>>).
-POD translators can use this feature to syntax-check and get the nodes in
-a first pass before actually starting to convert. This is expensive in terms
-of execution time, but allows for very robust conversions.
-
-=cut
-
-#############################################################################
-
-use strict;
-#use diagnostics;
-use Carp;
-use Exporter;
-use Pod::Parser;
-
-use vars qw(@ISA @EXPORT);
-@ISA = qw(Pod::Parser);
-@EXPORT = qw(&podchecker);
-
-use vars qw(%VALID_COMMANDS %VALID_SEQUENCES);
-
-my %VALID_COMMANDS = (
- 'pod' => 1,
- 'cut' => 1,
- 'head1' => 1,
- 'head2' => 1,
- 'over' => 1,
- 'back' => 1,
- 'item' => 1,
- 'for' => 1,
- 'begin' => 1,
- 'end' => 1,
-);
-
-my %VALID_SEQUENCES = (
- 'I' => 1,
- 'B' => 1,
- 'S' => 1,
- 'C' => 1,
- 'L' => 1,
- 'F' => 1,
- 'X' => 1,
- 'Z' => 1,
- 'E' => 1,
-);
-
-# stolen from HTML::Entities
-my %ENTITIES = (
- # Some normal chars that have special meaning in SGML context
- amp => '&', # ampersand
-'gt' => '>', # greater than
-'lt' => '<', # less than
- quot => '"', # double quote
-
- # PUBLIC ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML
- AElig => 'Æ', # capital AE diphthong (ligature)
- Aacute => 'Á', # capital A, acute accent
- Acirc => 'Â', # capital A, circumflex accent
- Agrave => 'À', # capital A, grave accent
- Aring => 'Å', # capital A, ring
- Atilde => 'Ã', # capital A, tilde
- Auml => 'Ä', # capital A, dieresis or umlaut mark
- Ccedil => 'Ç', # capital C, cedilla
- ETH => 'Ð', # capital Eth, Icelandic
- Eacute => 'É', # capital E, acute accent
- Ecirc => 'Ê', # capital E, circumflex accent
- Egrave => 'È', # capital E, grave accent
- Euml => 'Ë', # capital E, dieresis or umlaut mark
- Iacute => 'Í', # capital I, acute accent
- Icirc => 'Î', # capital I, circumflex accent
- Igrave => 'Ì', # capital I, grave accent
- Iuml => 'Ï', # capital I, dieresis or umlaut mark
- Ntilde => 'Ñ', # capital N, tilde
- Oacute => 'Ó', # capital O, acute accent
- Ocirc => 'Ô', # capital O, circumflex accent
- Ograve => 'Ò', # capital O, grave accent
- Oslash => 'Ø', # capital O, slash
- Otilde => 'Õ', # capital O, tilde
- Ouml => 'Ö', # capital O, dieresis or umlaut mark
- THORN => 'Þ', # capital THORN, Icelandic
- Uacute => 'Ú', # capital U, acute accent
- Ucirc => 'Û', # capital U, circumflex accent
- Ugrave => 'Ù', # capital U, grave accent
- Uuml => 'Ü', # capital U, dieresis or umlaut mark
- Yacute => 'Ý', # capital Y, acute accent
- aacute => 'á', # small a, acute accent
- acirc => 'â', # small a, circumflex accent
- aelig => 'æ', # small ae diphthong (ligature)
- agrave => 'à', # small a, grave accent
- aring => 'å', # small a, ring
- atilde => 'ã', # small a, tilde
- auml => 'ä', # small a, dieresis or umlaut mark
- ccedil => 'ç', # small c, cedilla
- eacute => 'é', # small e, acute accent
- ecirc => 'ê', # small e, circumflex accent
- egrave => 'è', # small e, grave accent
- eth => 'ð', # small eth, Icelandic
- euml => 'ë', # small e, dieresis or umlaut mark
- iacute => 'í', # small i, acute accent
- icirc => 'î', # small i, circumflex accent
- igrave => 'ì', # small i, grave accent
- iuml => 'ï', # small i, dieresis or umlaut mark
- ntilde => 'ñ', # small n, tilde
- oacute => 'ó', # small o, acute accent
- ocirc => 'ô', # small o, circumflex accent
- ograve => 'ò', # small o, grave accent
- oslash => 'ø', # small o, slash
- otilde => 'õ', # small o, tilde
- ouml => 'ö', # small o, dieresis or umlaut mark
- szlig => 'ß', # small sharp s, German (sz ligature)
- thorn => 'þ', # small thorn, Icelandic
- uacute => 'ú', # small u, acute accent
- ucirc => 'û', # small u, circumflex accent
- ugrave => 'ù', # small u, grave accent
- uuml => 'ü', # small u, dieresis or umlaut mark
- yacute => 'ý', # small y, acute accent
- yuml => 'ÿ', # small y, dieresis or umlaut mark
-
- # Some extra Latin 1 chars that are listed in the HTML3.2 draft (21-May-96)
- copy => '©', # copyright sign
- reg => '®', # registered sign
- nbsp => "\240", # non breaking space
-
- # Additional ISO-8859/1 entities listed in rfc1866 (section 14)
- iexcl => '¡',
- cent => '¢',
- pound => '£',
- curren => '¤',
- yen => '¥',
- brvbar => '¦',
- sect => '§',
- uml => '¨',
- ordf => 'ª',
- laquo => '«',
-'not' => '¬', # not is a keyword in perl
- shy => '­',
- macr => '¯',
- deg => '°',
- plusmn => '±',
- sup1 => '¹',
- sup2 => '²',
- sup3 => '³',
- acute => '´',
- micro => 'µ',
- para => '¶',
- middot => '·',
- cedil => '¸',
- ordm => 'º',
- raquo => '»',
- frac14 => '¼',
- frac12 => '½',
- frac34 => '¾',
- iquest => '¿',
-'times' => '×', # times is a keyword in perl
- divide => '÷',
-
-# some POD special entities
- verbar => '|',
- sol => '/'
-);
-
-##---------------------------------------------------------------------------
-
-##---------------------------------
-## Function definitions begin here
-##---------------------------------
-
-sub podchecker( $ ; $ % ) {
- my ($infile, $outfile, %options) = @_;
- local $_;
-
- ## Set defaults
- $infile ||= \*STDIN;
- $outfile ||= \*STDERR;
-
- ## Now create a pod checker
- my $checker = new Pod::Checker(%options);
-
- ## Now check the pod document for errors
- $checker->parse_from_file($infile, $outfile);
-
- ## Return the number of errors found
- return $checker->num_errors();
-}
-
-##---------------------------------------------------------------------------
-
-##-------------------------------
-## Method definitions begin here
-##-------------------------------
-
-##################################
-
-=over 4
-
-=item C<Pod::Checker-E<gt>new( %options )>
-
-Return a reference to a new Pod::Checker object that inherits from
-Pod::Parser and is used for calling the required methods later. The
-following options are recognized:
-
-C<-warnings =E<gt> num>
- Print warnings if C<num> is true. The higher the value of C<num>,
-the more warnings are printed. Currently there are only levels 1 and 2.
-
-C<-quiet =E<gt> num>
- If C<num> is true, do not print any errors/warnings. This is useful
-when Pod::Checker is used to munge POD code into plain text from within
-POD formatters.
-
-=cut
-
-## sub new {
-## my $this = shift;
-## my $class = ref($this) || $this;
-## my %params = @_;
-## my $self = {%params};
-## bless $self, $class;
-## $self->initialize();
-## return $self;
-## }
-
-sub initialize {
- my $self = shift;
- ## Initialize number of errors, and setup an error function to
- ## increment this number and then print to the designated output.
- $self->{_NUM_ERRORS} = 0;
- $self->{-quiet} ||= 0;
- # set the error handling subroutine
- $self->errorsub($self->{-quiet} ? sub { 1; } : 'poderror');
- $self->{_commands} = 0; # total number of POD commands encountered
- $self->{_list_stack} = []; # stack for nested lists
- $self->{_have_begin} = ''; # stores =begin
- $self->{_links} = []; # stack for internal hyperlinks
- $self->{_nodes} = []; # stack for =head/=item nodes
- $self->{_index} = []; # text in X<>
- # print warnings?
- $self->{-warnings} = 1 unless(defined $self->{-warnings});
- $self->{_current_head1} = ''; # the current =head1 block
- $self->parseopts(-process_cut_cmd => 1, -warnings => $self->{-warnings});
-}
-
-##################################
-
-=item C<$checker-E<gt>poderror( @args )>
-
-=item C<$checker-E<gt>poderror( {%opts}, @args )>
-
-Internal method for printing errors and warnings. If no options are
-given, simply prints "@_". The following options are recognized and used
-to form the output:
-
- -msg
-
-A message to print prior to C<@args>.
-
- -line
-
-The line number the error occurred in.
-
- -file
-
-The file (name) the error occurred in.
-
- -severity
-
-The error level, should be 'WARNING' or 'ERROR'.
-
-=cut
-
-# Invoked as $self->poderror( @args ), or $self->poderror( {%opts}, @args )
-sub poderror {
- my $self = shift;
- my %opts = (ref $_[0]) ? %{shift()} : ();
-
- ## Retrieve options
- chomp( my $msg = ($opts{-msg} || "")."@_" );
- my $line = (exists $opts{-line}) ? " at line $opts{-line}" : "";
- my $file = (exists $opts{-file}) ? " in file $opts{-file}" : "";
- unless (exists $opts{-severity}) {
- ## See if can find severity in message prefix
- $opts{-severity} = $1 if ( $msg =~ s/^\**\s*([A-Z]{3,}):\s+// );
- }
- my $severity = (exists $opts{-severity}) ? "*** $opts{-severity}: " : "";
-
- ## Increment error count and print message "
- ++($self->{_NUM_ERRORS})
- if(!%opts || ($opts{-severity} && $opts{-severity} eq 'ERROR'));
- my $out_fh = $self->output_handle() || \*STDERR;
- print $out_fh ($severity, $msg, $line, $file, "\n")
- if($self->{-warnings} || !%opts || $opts{-severity} ne 'WARNING');
-}
-
-##################################
-
-=item C<$checker-E<gt>num_errors()>
-
-Set (if argument specified) and retrieve the number of errors found.
-
-=cut
-
-sub num_errors {
- return (@_ > 1) ? ($_[0]->{_NUM_ERRORS} = $_[1]) : $_[0]->{_NUM_ERRORS};
-}
-
-##################################
-
-=item C<$checker-E<gt>name()>
-
-Set (if argument specified) and retrieve the canonical name of POD as
-found in the C<=head1 NAME> section.
-
-=cut
-
-sub name {
- return (@_ > 1 && $_[1]) ?
- ($_[0]->{-name} = $_[1]) : $_[0]->{-name};
-}
-
-##################################
-
-=item C<$checker-E<gt>node()>
-
-Add (if argument specified) and retrieve the nodes (as defined by C<=headX>
-and C<=item>) of the current POD. The nodes are returned in the order of
-their occurence. They consist of plain text, each piece of whitespace is
-collapsed to a single blank.
-
-=cut
-
-sub node {
- my ($self,$text) = @_;
- if(defined $text) {
- $text =~ s/\s+$//s; # strip trailing whitespace
- $text =~ s/\s+/ /gs; # collapse whitespace
- # add node, order important!
- push(@{$self->{_nodes}}, $text);
- # keep also a uniqueness counter
- $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s);
- return $text;
- }
- @{$self->{_nodes}};
-}
-
-##################################
-
-=item C<$checker-E<gt>idx()>
-
-Add (if argument specified) and retrieve the index entries (as defined by
-C<XE<lt>E<gt>>) of the current POD. They consist of plain text, each piece
-of whitespace is collapsed to a single blank.
-
-=cut
-
-# set/return index entries of current POD
-sub idx {
- my ($self,$text) = @_;
- if(defined $text) {
- $text =~ s/\s+$//s; # strip trailing whitespace
- $text =~ s/\s+/ /gs; # collapse whitespace
- # add node, order important!
- push(@{$self->{_index}}, $text);
- # keep also a uniqueness counter
- $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s);
- return $text;
- }
- @{$self->{_index}};
-}
-
-##################################
-
-=item C<$checker-E<gt>hyperlink()>
-
-Add (if argument specified) and retrieve the hyperlinks (as defined by
-C<LE<lt>E<gt>>) of the current POD. They consist of an 2-item array: line
-number and C<Pod::Hyperlink> object.
-
-=back
-
-=cut
-
-# set/return hyperlinks of the current POD
-sub hyperlink {
- my $self = shift;
- if($_[0]) {
- push(@{$self->{_links}}, $_[0]);
- return $_[0];
- }
- @{$self->{_links}};
-}
-
-## overrides for Pod::Parser
-
-sub end_pod {
- ## Do some final checks and
- ## print the number of errors found
- my $self = shift;
- my $infile = $self->input_file();
- my $out_fh = $self->output_handle();
-
- if(@{$self->{_list_stack}}) {
- # _TODO_ display, but don't count them for now
- my $list;
- while(($list = $self->_close_list('EOF',$infile)) &&
- $list->indent() ne 'auto') {
- $self->poderror({ -line => 'EOF', -file => $infile,
- -severity => 'ERROR', -msg => "=over on line " .
- $list->start() . " without closing =back" }); #"
- }
- }
-
- # check validity of document internal hyperlinks
- # first build the node names from the paragraph text
- my %nodes;
- foreach($self->node()) {
- $nodes{$_} = 1;
- if(/^(\S+)\s+\S/) {
- # we have more than one word. Use the first as a node, too.
- # This is used heavily in perlfunc.pod
- $nodes{$1} ||= 2; # derived node
- }
- }
- foreach($self->idx()) {
- $nodes{$_} = 3; # index node
- }
- foreach($self->hyperlink()) {
- my ($line,$link) = @$_;
- # _TODO_ what if there is a link to the page itself by the name,
- # e.g. in Tk::Pod : L<Tk::Pod/"DESCRIPTION">
- if($link->node() && !$link->page() && $link->type() ne 'hyperlink') {
- my $node = $self->_check_ptree($self->parse_text($link->node(),
- $line), $line, $infile, 'L');
- if($node && !$nodes{$node}) {
- $self->poderror({ -line => $line || '', -file => $infile,
- -severity => 'ERROR',
- -msg => "unresolved internal link '$node'"});
- }
- }
- }
-
- # check the internal nodes for uniqueness. This pertains to
- # =headX, =item and X<...>
- foreach(grep($self->{_unique_nodes}->{$_} > 1,
- keys %{$self->{_unique_nodes}})) {
- $self->poderror({ -line => '-', -file => $infile,
- -severity => 'WARNING',
- -msg => "multiple occurence of link target '$_'"});
- }
-
- ## Print the number of errors found
- my $num_errors = $self->num_errors();
- if ($num_errors > 0) {
- printf $out_fh ("$infile has $num_errors pod syntax %s.\n",
- ($num_errors == 1) ? "error" : "errors");
- }
- elsif($self->{_commands} == 0) {
- print $out_fh "$infile does not contain any pod commands.\n";
- $self->num_errors(-1);
- }
- else {
- print $out_fh "$infile pod syntax OK.\n";
- }
-}
-
-# check a POD command directive
-sub command {
- my ($self, $cmd, $paragraph, $line_num, $pod_para) = @_;
- my ($file, $line) = $pod_para->file_line;
- ## Check the command syntax
- my $arg; # this will hold the command argument
- if (! $VALID_COMMANDS{$cmd}) {
- $self->poderror({ -line => $line, -file => $file, -severity => 'ERROR',
- -msg => "Unknown command '$cmd'" });
- }
- else { # found a valid command
- $self->{_commands}++; # delete this line if below is enabled again
-
- ##### following check disabled due to strong request
- #if(!$self->{_commands}++ && $cmd !~ /^head/) {
- # $self->poderror({ -line => $line, -file => $file,
- # -severity => 'WARNING',
- # -msg => "file does not start with =head" });
- #}
-
- # check syntax of particular command
- if($cmd eq 'over') {
- # check for argument
- $arg = $self->interpolate_and_check($paragraph, $line,$file);
- my $indent = 4; # default
- if($arg && $arg =~ /^\s*(\d+)\s*$/) {
- $indent = $1;
- }
- # start a new list
- $self->_open_list($indent,$line,$file);
- }
- elsif($cmd eq 'item') {
- # are we in a list?
- unless(@{$self->{_list_stack}}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "=item without previous =over" });
- # auto-open in case we encounter many more
- $self->_open_list('auto',$line,$file);
- }
- my $list = $self->{_list_stack}->[0];
- # check whether the previous item had some contents
- if(defined $self->{_list_item_contents} &&
- $self->{_list_item_contents} == 0) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "previous =item has no contents" });
- }
- if($list->{_has_par}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "preceding non-item paragraph(s)" });
- delete $list->{_has_par};
- }
- # check for argument
- $arg = $self->interpolate_and_check($paragraph, $line, $file);
- if($arg && $arg =~ /(\S+)/) {
- $arg =~ s/[\s\n]+$//;
- my $type;
- if($arg =~ /^[*]\s*(\S*.*)/) {
- $type = 'bullet';
- $self->{_list_item_contents} = $1 ? 1 : 0;
- $arg = $1;
- }
- elsif($arg =~ /^\d+\.?\s*(\S*)/) {
- $type = 'number';
- $self->{_list_item_contents} = $1 ? 1 : 0;
- $arg = $1;
- }
- else {
- $type = 'definition';
- $self->{_list_item_contents} = 1;
- }
- my $first = $list->type();
- if($first && $first ne $type) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "=item type mismatch ('$first' vs. '$type')"});
- }
- else { # first item
- $list->type($type);
- }
- }
- else {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "No argument for =item" });
- $arg = ' '; # empty
- $self->{_list_item_contents} = 0;
- }
- # add this item
- $list->item($arg);
- # remember this node
- $self->node($arg);
- }
- elsif($cmd eq 'back') {
- # check if we have an open list
- unless(@{$self->{_list_stack}}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "=back without previous =over" });
- }
- else {
- # check for spurious characters
- $arg = $self->interpolate_and_check($paragraph, $line,$file);
- if($arg && $arg =~ /\S/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "Spurious character(s) after =back" });
- }
- # close list
- my $list = $self->_close_list($line,$file);
- # check for empty lists
- if(!$list->item() && $self->{-warnings}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "No items in =over (at line " .
- $list->start() . ") / =back list"}); #"
- }
- }
- }
- elsif($cmd =~ /^head(\d+)/) {
- # check whether the previous =head section had some contents
- if(defined $self->{_commands_in_head} &&
- $self->{_commands_in_head} == 0 &&
- defined $self->{_last_head} &&
- $self->{_last_head} >= $1) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "empty section in previous paragraph"});
- }
- $self->{_commands_in_head} = -1;
- $self->{_last_head} = $1;
- # check if there is an open list
- if(@{$self->{_list_stack}}) {
- my $list;
- while(($list = $self->_close_list($line,$file)) &&
- $list->indent() ne 'auto') {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "=over on line ". $list->start() .
- " without closing =back (at $cmd)" });
- }
- }
- # remember this node
- $arg = $self->interpolate_and_check($paragraph, $line,$file);
- $arg =~ s/[\s\n]+$//s;
- $self->node($arg);
- unless(length($arg)) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "empty =$cmd"});
- }
- if($cmd eq 'head1') {
- $self->{_current_head1} = $arg;
- } else {
- $self->{_current_head1} = '';
- }
- }
- elsif($cmd eq 'begin') {
- if($self->{_have_begin}) {
- # already have a begin
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "Nested =begin's (first at line " .
- $self->{_have_begin} . ")"});
- }
- else {
- # check for argument
- $arg = $self->interpolate_and_check($paragraph, $line,$file);
- unless($arg && $arg =~ /(\S+)/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "No argument for =begin"});
- }
- # remember the =begin
- $self->{_have_begin} = "$line:$1";
- }
- }
- elsif($cmd eq 'end') {
- if($self->{_have_begin}) {
- # close the existing =begin
- $self->{_have_begin} = '';
- # check for spurious characters
- $arg = $self->interpolate_and_check($paragraph, $line,$file);
- # the closing argument is optional
- #if($arg && $arg =~ /\S/) {
- # $self->poderror({ -line => $line, -file => $file,
- # -severity => 'WARNING',
- # -msg => "Spurious character(s) after =end" });
- #}
- }
- else {
- # don't have a matching =begin
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "=end without =begin" });
- }
- }
- elsif($cmd eq 'for') {
- unless($paragraph =~ /\s*(\S+)\s*/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "=for without formatter specification" });
- }
- $arg = ''; # do not expand paragraph below
- }
- elsif($cmd =~ /^(pod|cut)$/) {
- # check for argument
- $arg = $self->interpolate_and_check($paragraph, $line,$file);
- if($arg && $arg =~ /(\S+)/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "Spurious text after =$cmd"});
- }
- }
- $self->{_commands_in_head}++;
- ## Check the interior sequences in the command-text
- $self->interpolate_and_check($paragraph, $line,$file)
- unless(defined $arg);
- }
-}
-
-sub _open_list
-{
- my ($self,$indent,$line,$file) = @_;
- my $list = Pod::List->new(
- -indent => $indent,
- -start => $line,
- -file => $file);
- unshift(@{$self->{_list_stack}}, $list);
- undef $self->{_list_item_contents};
- $list;
-}
-
-sub _close_list
-{
- my ($self,$line,$file) = @_;
- my $list = shift(@{$self->{_list_stack}});
- if(defined $self->{_list_item_contents} &&
- $self->{_list_item_contents} == 0) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "previous =item has no contents" });
- }
- undef $self->{_list_item_contents};
- $list;
-}
-
-# process a block of some text
-sub interpolate_and_check {
- my ($self, $paragraph, $line, $file) = @_;
- ## Check the interior sequences in the command-text
- # and return the text
- $self->_check_ptree(
- $self->parse_text($paragraph,$line), $line, $file, '');
-}
-
-sub _check_ptree {
- my ($self,$ptree,$line,$file,$nestlist) = @_;
- local($_);
- my $text = '';
- # process each node in the parse tree
- foreach(@$ptree) {
- # regular text chunk
- unless(ref) {
- my $count;
- # count the unescaped angle brackets
- # complain only when warning level is greater than 1
- my $i = $_;
- if($count = $i =~ tr/<>/<>/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "$count unescaped <> in paragraph" })
- if($self->{-warnings} && $self->{-warnings}>1);
- }
- $text .= $i;
- next;
- }
- # have an interior sequence
- my $cmd = $_->cmd_name();
- my $contents = $_->parse_tree();
- ($file,$line) = $_->file_line();
- # check for valid tag
- if (! $VALID_SEQUENCES{$cmd}) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => qq(Unknown interior-sequence '$cmd')});
- # expand it anyway
- $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
- next;
- }
- if($nestlist =~ /$cmd/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "nested commands $cmd<...$cmd<...>...>"});
- # _TODO_ should we add the contents anyway?
- # expand it anyway, see below
- }
- if($cmd eq 'E') {
- # preserve entities
- if(@$contents > 1 || ref $$contents[0] || $$contents[0] !~ /^\w+$/) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "garbled entity " . $_->raw_text()});
- next;
- }
- my $ent = $$contents[0];
- my $val;
- if($ent =~ /^0x[0-9a-f]+$/i) {
- # hexadec entity
- $val = hex($ent);
- }
- elsif($ent =~ /^0\d+$/) {
- # octal
- $val = oct($ent);
- }
- elsif($ent =~ /^\d+$/) {
- # numeric entity
- $val = $ent;
- }
- if(defined $val) {
- if($val>0 && $val<256) {
- $text .= chr($val);
- }
- else {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "Entity number out of range " . $_->raw_text()});
- }
- }
- elsif($ENTITIES{$ent}) {
- # known ISO entity
- $text .= $ENTITIES{$ent};
- }
- else {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => "Unknown entity " . $_->raw_text()});
- $text .= "E<$ent>";
- }
- }
- elsif($cmd eq 'L') {
- # try to parse the hyperlink
- my $link = Pod::Hyperlink->new($contents->raw_text());
- unless(defined $link) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "malformed link " . $_->raw_text() ." : $@"});
- next;
- }
- $link->line($line); # remember line
- if($self->{-warnings}) {
- foreach my $w ($link->warning()) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => $w });
- }
- }
- # check the link text
- $text .= $self->_check_ptree($self->parse_text($link->text(),
- $line), $line, $file, "$nestlist$cmd");
- # remember link
- $self->hyperlink([$line,$link]);
- }
- elsif($cmd =~ /[BCFIS]/) {
- # add the guts
- $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
- }
- elsif($cmd eq 'Z') {
- if(length($contents->raw_text())) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "Nonempty Z<>"});
- }
- }
- elsif($cmd eq 'X') {
- my $idx = $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
- if($idx =~ /^\s*$/s) {
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'ERROR',
- -msg => "Empty X<>"});
- }
- else {
- # remember this node
- $self->idx($idx);
- }
- }
- else {
- # not reached
- die "internal error";
- }
- }
- $text;
-}
-
-# process a block of verbatim text
-sub verbatim {
- ## Nothing particular to check
- my ($self, $paragraph, $line_num, $pod_para) = @_;
-
- $self->_preproc_par($paragraph);
-
- if($self->{_current_head1} eq 'NAME') {
- my ($file, $line) = $pod_para->file_line;
- $self->poderror({ -line => $line, -file => $file,
- -severity => 'WARNING',
- -msg => 'Verbatim paragraph in NAME section' });
- }
-}
-
-# process a block of regular text
-sub textblock {
- my ($self, $paragraph, $line_num, $pod_para) = @_;
- my ($file, $line) = $pod_para->file_line;
-
- $self->_preproc_par($paragraph);
-
- # skip this paragraph if in a =begin block
- unless($self->{_have_begin}) {
- my $block = $self->interpolate_and_check($paragraph, $line,$file);
- if($self->{_current_head1} eq 'NAME') {
- if($block =~ /^\s*(\S+?)\s*[,-]/) {
- # this is the canonical name
- $self->{-name} = $1 unless(defined $self->{-name});
- }
- }
- }
-}
-
-sub _preproc_par
-{
- my $self = shift;
- $_[0] =~ s/[\s\n]+$//;
- if($_[0]) {
- $self->{_commands_in_head}++;
- $self->{_list_item_contents}++ if(defined $self->{_list_item_contents});
- if(@{$self->{_list_stack}} && !$self->{_list_stack}->[0]->item()) {
- $self->{_list_stack}->[0]->{_has_par} = 1;
- }
- }
-}
-
-1;
-
-__END__
-
-=head1 AUTHOR
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt> (initial version),
-Marek Rouchal E<lt>marek@saftsack.fs.uni-bayreuth.deE<gt>
-
-Based on code for B<Pod::Text::pod2text()> written by
-Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
-
-=cut
-
diff --git a/contrib/perl5/lib/Pod/Find.pm b/contrib/perl5/lib/Pod/Find.pm
deleted file mode 100644
index 4a0ecb9..0000000
--- a/contrib/perl5/lib/Pod/Find.pm
+++ /dev/null
@@ -1,445 +0,0 @@
-#############################################################################
-# Pod/Find.pm -- finds files containing POD documentation
-#
-# Author: Marek Rouchal <marek@saftsack.fs.uni-bayreuth.de>
-#
-# Copyright (C) 1999-2000 by Marek Rouchal (and borrowing code
-# from Nick Ing-Simmon's PodToHtml). All rights reserved.
-# This file is part of "PodParser". Pod::Find is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::Find;
-
-use vars qw($VERSION);
-$VERSION = 0.21; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-use Carp;
-
-#############################################################################
-
-=head1 NAME
-
-Pod::Find - find POD documents in directory trees
-
-=head1 SYNOPSIS
-
- use Pod::Find qw(pod_find simplify_name);
- my %pods = pod_find({ -verbose => 1, -inc => 1 });
- foreach(keys %pods) {
- print "found library POD `$pods{$_}' in $_\n";
- }
-
- print "podname=",simplify_name('a/b/c/mymodule.pod'),"\n";
-
- $location = pod_where( { -inc => 1 }, "Pod::Find" );
-
-=head1 DESCRIPTION
-
-B<Pod::Find> provides a set of functions to locate POD files. Note that
-no function is exported by default to avoid pollution of your namespace,
-so be sure to specify them in the B<use> statement if you need them:
-
- use Pod::Find qw(pod_find);
-
-=cut
-
-use strict;
-#use diagnostics;
-use Exporter;
-use File::Spec;
-use File::Find;
-use Cwd;
-
-use vars qw(@ISA @EXPORT_OK $VERSION);
-@ISA = qw(Exporter);
-@EXPORT_OK = qw(&pod_find &simplify_name &pod_where &contains_pod);
-
-# package global variables
-my $SIMPLIFY_RX;
-
-=head2 C<pod_find( { %opts } , @directories )>
-
-The function B<pod_find> searches for POD documents in a given set of
-files and/or directories. It returns a hash with the file names as keys
-and the POD name as value. The POD name is derived from the file name
-and its position in the directory tree.
-
-E.g. when searching in F<$HOME/perl5lib>, the file
-F<$HOME/perl5lib/MyModule.pm> would get the POD name I<MyModule>,
-whereas F<$HOME/perl5lib/Myclass/Subclass.pm> would be
-I<Myclass::Subclass>. The name information can be used for POD
-translators.
-
-Only text files containing at least one valid POD command are found.
-
-A warning is printed if more than one POD file with the same POD name
-is found, e.g. F<CPAN.pm> in different directories. This usually
-indicates duplicate occurrences of modules in the I<@INC> search path.
-
-B<OPTIONS> The first argument for B<pod_find> may be a hash reference
-with options. The rest are either directories that are searched
-recursively or files. The POD names of files are the plain basenames
-with any Perl-like extension (.pm, .pl, .pod) stripped.
-
-=over 4
-
-=item C<-verbose =E<gt> 1>
-
-Print progress information while scanning.
-
-=item C<-perl =E<gt> 1>
-
-Apply Perl-specific heuristics to find the correct PODs. This includes
-stripping Perl-like extensions, omitting subdirectories that are numeric
-but do I<not> match the current Perl interpreter's version id, suppressing
-F<site_perl> as a module hierarchy name etc.
-
-=item C<-script =E<gt> 1>
-
-Search for PODs in the current Perl interpreter's installation
-B<scriptdir>. This is taken from the local L<Config|Config> module.
-
-=item C<-inc =E<gt> 1>
-
-Search for PODs in the current Perl interpreter's I<@INC> paths. This
-automatically considers paths specified in the C<PERL5LIB> environment
-as this is prepended to I<@INC> by the Perl interpreter itself.
-
-=back
-
-=cut
-
-# return a hash of the POD files found
-# first argument may be a hashref (options),
-# rest is a list of directories to search recursively
-sub pod_find
-{
- my %opts;
- if(ref $_[0]) {
- %opts = %{shift()};
- }
-
- $opts{-verbose} ||= 0;
- $opts{-perl} ||= 0;
-
- my (@search) = @_;
-
- if($opts{-script}) {
- require Config;
- push(@search, $Config::Config{scriptdir});
- $opts{-perl} = 1;
- }
-
- if($opts{-inc}) {
- push(@search, grep($_ ne '.',@INC));
- $opts{-perl} = 1;
- }
-
- if($opts{-perl}) {
- require Config;
- # this code simplifies the POD name for Perl modules:
- # * remove "site_perl"
- # * remove e.g. "i586-linux" (from 'archname')
- # * remove e.g. 5.00503
- # * remove pod/ if followed by *.pod (e.g. in pod/perlfunc.pod)
- $SIMPLIFY_RX =
- qq!^(?i:site(_perl)?/|\Q$Config::Config{archname}\E/|\\d+\\.\\d+([_.]?\\d+)?/|pod/(?=.*?\\.pod\\z))*!;
-
- }
-
- my %dirs_visited;
- my %pods;
- my %names;
- my $pwd = cwd();
-
- foreach my $try (@search) {
- unless(File::Spec->file_name_is_absolute($try)) {
- # make path absolute
- $try = File::Spec->catfile($pwd,$try);
- }
- # simplify path
- # on VMS canonpath will vmsify:[the.path], but File::Find::find
- # wants /unixy/paths
- $try = File::Spec->canonpath($try) if ($^O ne 'VMS');
- my $name;
- if(-f $try) {
- if($name = _check_and_extract_name($try, $opts{-verbose})) {
- _check_for_duplicates($try, $name, \%names, \%pods);
- }
- next;
- }
- my $root_rx = qq!^\Q$try\E/!;
- File::Find::find( sub {
- my $item = $File::Find::name;
- if(-d) {
- if($dirs_visited{$item}) {
- warn "Directory '$item' already seen, skipping.\n"
- if($opts{-verbose});
- $File::Find::prune = 1;
- return;
- }
- else {
- $dirs_visited{$item} = 1;
- }
- if($opts{-perl} && /^(\d+\.[\d_]+)\z/s && eval "$1" != $]) {
- $File::Find::prune = 1;
- warn "Perl $] version mismatch on $_, skipping.\n"
- if($opts{-verbose});
- }
- return;
- }
- if($name = _check_and_extract_name($item, $opts{-verbose}, $root_rx)) {
- _check_for_duplicates($item, $name, \%names, \%pods);
- }
- }, $try); # end of File::Find::find
- }
- chdir $pwd;
- %pods;
-}
-
-sub _check_for_duplicates {
- my ($file, $name, $names_ref, $pods_ref) = @_;
- if($$names_ref{$name}) {
- warn "Duplicate POD found (shadowing?): $name ($file)\n";
- warn " Already seen in ",
- join(' ', grep($$pods_ref{$_} eq $name, keys %$pods_ref)),"\n";
- }
- else {
- $$names_ref{$name} = 1;
- }
- $$pods_ref{$file} = $name;
-}
-
-sub _check_and_extract_name {
- my ($file, $verbose, $root_rx) = @_;
-
- # check extension or executable flag
- # this involves testing the .bat extension on Win32!
- unless(-f $file && -T _ && ($file =~ /\.(pod|pm|plx?)\z/i || -x _ )) {
- return undef;
- }
-
- return undef unless contains_pod($file,$verbose);
-
- # strip non-significant path components
- # TODO what happens on e.g. Win32?
- my $name = $file;
- if(defined $root_rx) {
- $name =~ s!$root_rx!!s;
- $name =~ s!$SIMPLIFY_RX!!os if(defined $SIMPLIFY_RX);
- }
- else {
- $name =~ s:^.*/::s;
- }
- _simplify($name);
- $name =~ s!/+!::!g; #/
- $name;
-}
-
-=head2 C<simplify_name( $str )>
-
-The function B<simplify_name> is equivalent to B<basename>, but also
-strips Perl-like extensions (.pm, .pl, .pod) and extensions like
-F<.bat>, F<.cmd> on Win32 and OS/2, or F<.com> on VMS, respectively.
-
-=cut
-
-# basic simplification of the POD name:
-# basename & strip extension
-sub simplify_name {
- my ($str) = @_;
- # remove all path components
- $str =~ s:^.*/::s;
- _simplify($str);
- $str;
-}
-
-# internal sub only
-sub _simplify {
- # strip Perl's own extensions
- $_[0] =~ s/\.(pod|pm|plx?)\z//i;
- # strip meaningless extensions on Win32 and OS/2
- $_[0] =~ s/\.(bat|exe|cmd)\z//i if($^O =~ /mswin|os2/i);
- # strip meaningless extensions on VMS
- $_[0] =~ s/\.(com)\z//i if($^O eq 'VMS');
-}
-
-# contribution from Tim Jenness <t.jenness@jach.hawaii.edu>
-
-=head2 C<pod_where( { %opts }, $pod )>
-
-Returns the location of a pod document given a search directory
-and a module (e.g. C<File::Find>) or script (e.g. C<perldoc>) name.
-
-Options:
-
-=over 4
-
-=item C<-inc =E<gt> 1>
-
-Search @INC for the pod and also the C<scriptdir> defined in the
-L<Config|Config> module.
-
-=item C<-dirs =E<gt> [ $dir1, $dir2, ... ]>
-
-Reference to an array of search directories. These are searched in order
-before looking in C<@INC> (if B<-inc>). Current directory is used if
-none are specified.
-
-=item C<-verbose =E<gt> 1>
-
-List directories as they are searched
-
-=back
-
-Returns the full path of the first occurence to the file.
-Package names (eg 'A::B') are automatically converted to directory
-names in the selected directory. (eg on unix 'A::B' is converted to
-'A/B'). Additionally, '.pm', '.pl' and '.pod' are appended to the
-search automatically if required.
-
-A subdirectory F<pod/> is also checked if it exists in any of the given
-search directories. This ensures that e.g. L<perlfunc|perlfunc> is
-found.
-
-It is assumed that if a module name is supplied, that that name
-matches the file name. Pods are not opened to check for the 'NAME'
-entry.
-
-A check is made to make sure that the file that is found does
-contain some pod documentation.
-
-=cut
-
-sub pod_where {
-
- # default options
- my %options = (
- '-inc' => 0,
- '-verbose' => 0,
- '-dirs' => [ '.' ],
- );
-
- # Check for an options hash as first argument
- if (defined $_[0] && ref($_[0]) eq 'HASH') {
- my $opt = shift;
-
- # Merge default options with supplied options
- %options = (%options, %$opt);
- }
-
- # Check usage
- carp 'Usage: pod_where({options}, $pod)' unless (scalar(@_));
-
- # Read argument
- my $pod = shift;
-
- # Split on :: and then join the name together using File::Spec
- my @parts = split (/::/, $pod);
-
- # Get full directory list
- my @search_dirs = @{ $options{'-dirs'} };
-
- if ($options{'-inc'}) {
-
- require Config;
-
- # Add @INC
- push (@search_dirs, @INC) if $options{'-inc'};
-
- # Add location of pod documentation for perl man pages (eg perlfunc)
- # This is a pod directory in the private install tree
- #my $perlpoddir = File::Spec->catdir($Config::Config{'installprivlib'},
- # 'pod');
- #push (@search_dirs, $perlpoddir)
- # if -d $perlpoddir;
-
- # Add location of binaries such as pod2text
- push (@search_dirs, $Config::Config{'scriptdir'})
- if -d $Config::Config{'scriptdir'};
- }
-
- # Loop over directories
- Dir: foreach my $dir ( @search_dirs ) {
-
- # Don't bother if cant find the directory
- if (-d $dir) {
- warn "Looking in directory $dir\n"
- if $options{'-verbose'};
-
- # Now concatenate this directory with the pod we are searching for
- my $fullname = File::Spec->catfile($dir, @parts);
- warn "Filename is now $fullname\n"
- if $options{'-verbose'};
-
- # Loop over possible extensions
- foreach my $ext ('', '.pod', '.pm', '.pl') {
- my $fullext = $fullname . $ext;
- if (-f $fullext &&
- contains_pod($fullext, $options{'-verbose'}) ) {
- warn "FOUND: $fullext\n" if $options{'-verbose'};
- return $fullext;
- }
- }
- } else {
- warn "Directory $dir does not exist\n"
- if $options{'-verbose'};
- next Dir;
- }
- if(-d File::Spec->catdir($dir,'pod')) {
- $dir = File::Spec->catdir($dir,'pod');
- redo Dir;
- }
- }
- # No match;
- return undef;
-}
-
-=head2 C<contains_pod( $file , $verbose )>
-
-Returns true if the supplied filename (not POD module) contains some pod
-information.
-
-=cut
-
-sub contains_pod {
- my $file = shift;
- my $verbose = 0;
- $verbose = shift if @_;
-
- # check for one line of POD
- unless(open(POD,"<$file")) {
- warn "Error: $file is unreadable: $!\n";
- return undef;
- }
-
- local $/ = undef;
- my $pod = <POD>;
- close(POD) || die "Error closing $file: $!\n";
- unless($pod =~ /\n=(head\d|pod|over|item)\b/s) {
- warn "No POD in $file, skipping.\n"
- if($verbose);
- return 0;
- }
-
- return 1;
-}
-
-=head1 AUTHOR
-
-Marek Rouchal E<lt>marek@saftsack.fs.uni-bayreuth.deE<gt>,
-heavily borrowing code from Nick Ing-Simmons' PodToHtml.
-
-Tim Jenness E<lt>t.jenness@jach.hawaii.eduE<gt> provided
-C<pod_where> and C<contains_pod>.
-
-=head1 SEE ALSO
-
-L<Pod::Parser>, L<Pod::Checker>, L<perldoc>
-
-=cut
-
-1;
-
diff --git a/contrib/perl5/lib/Pod/Functions.pm b/contrib/perl5/lib/Pod/Functions.pm
deleted file mode 100644
index 44619d5..0000000
--- a/contrib/perl5/lib/Pod/Functions.pm
+++ /dev/null
@@ -1,302 +0,0 @@
-package Pod::Functions;
-
-#:vi:set ts=20
-
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(%Kinds %Type %Flavor %Type_Description @Type_Order);
-
-%Type_Description = (
- 'ARRAY' => 'Functions for real @ARRAYs',
- 'Binary' => 'Functions for fixed length data or records',
- 'File' => 'Functions for filehandles, files, or directories',
- 'Flow' => 'Keywords related to control flow of your perl program',
- 'HASH' => 'Functions for real %HASHes',
- 'I/O' => 'Input and output functions',
- 'LIST' => 'Functions for list data',
- 'Math' => 'Numeric functions',
- 'Misc' => 'Miscellaneous functions',
- 'Modules' => 'Keywords related to perl modules',
- 'Network' => 'Fetching network info',
- 'Objects' => 'Keywords related to classes and object-orientedness',
- 'Process' => 'Functions for processes and process groups',
- 'Regexp' => 'Regular expressions and pattern matching',
- 'Socket' => 'Low-level socket functions',
- 'String' => 'Functions for SCALARs or strings',
- 'SysV' => 'System V interprocess communication functions',
- 'Time' => 'Time-related functions',
- 'User' => 'Fetching user and group info',
- 'Namespace' => 'Keywords altering or affecting scoping of identifiers',
-);
-
-@Type_Order = qw{
- String
- Regexp
- Math
- ARRAY
- LIST
- HASH
- I/O
- Binary
- File
- Flow
- Namespace
- Misc
- Process
- Modules
- Objects
- Socket
- SysV
- User
- Network
- Time
-};
-
-while (<DATA>) {
- chomp;
- s/#.*//;
- next unless $_;
- ($name, $type, $text) = split " ", $_, 3;
- $Type{$name} = $type;
- $Flavor{$name} = $text;
- for $type ( split /[,\s]+/, $type ) {
- push @{$Kinds{$type}}, $name;
- }
-}
-
-close DATA;
-
-unless (caller) {
- foreach $type ( @Type_Order ) {
- $list = join(", ", sort @{$Kinds{$type}});
- $typedesc = $Type_Description{$type} . ":";
- write;
- }
-}
-
-format =
-
-^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- $typedesc
-~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- $typedesc
- ~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- $list
-.
-
-1
-
-__DATA__
--X File a file test (-r, -x, etc)
-abs Math absolute value function
-accept Socket accept an incoming socket connect
-alarm Process schedule a SIGALRM
-atan2 Math arctangent of Y/X in the range -PI to PI
-bind Socket binds an address to a socket
-binmode I/O prepare binary files for I/O
-bless Objects create an object
-caller Flow,Namespace get context of the current subroutine call
-chdir File change your current working directory
-chmod File changes the permissions on a list of files
-chomp String remove a trailing record separator from a string
-chop String remove the last character from a string
-chown File change the owership on a list of files
-chr String get character this number represents
-chroot File make directory new root for path lookups
-close I/O close file (or pipe or socket) handle
-closedir I/O close directory handle
-connect Socket connect to a remote socket
-continue Flow optional trailing block in a while or foreach
-cos Math cosine function
-crypt String one-way passwd-style encryption
-dbmclose Objects,I/O breaks binding on a tied dbm file
-dbmopen Objects,I/O create binding on a tied dbm file
-defined Misc test whether a value, variable, or function is defined
-delete HASH deletes a value from a hash
-die I/O,Flow raise an exception or bail out
-do Flow,Modules turn a BLOCK into a TERM
-dump Misc,Flow create an immediate core dump
-each HASH retrieve the next key/value pair from a hash
-endgrent User be done using group file
-endhostent User be done using hosts file
-endnetent User be done using networks file
-endprotoent Network be done using protocols file
-endpwent User be done using passwd file
-endservent Network be done using services file
-eof I/O test a filehandle for its end
-eval Flow,Misc catch exceptions or compile and run code
-exec Process abandon this program to run another
-exists HASH test whether a hash key is present
-exit Flow terminate this program
-exp Math raise I<e> to a power
-fcntl File file control system call
-fileno I/O return file descriptor from filehandle
-flock I/O lock an entire file with an advisory lock
-fork Process create a new process just like this one
-format I/O declare a picture format with use by the write() function
-formline Misc internal function used for formats
-getc I/O get the next character from the filehandle
-getgrent User get next group record
-getgrgid User get group record given group user ID
-getgrnam User get group record given group name
-gethostbyaddr Network get host record given its address
-gethostbyname Network get host record given name
-gethostent Network get next hosts record
-getlogin User return who logged in at this tty
-getnetbyaddr Network get network record given its address
-getnetbyname Network get networks record given name
-getnetent Network get next networks record
-getpeername Socket find the other end of a socket connection
-getpgrp Process get process group
-getppid Process get parent process ID
-getpriority Process get current nice value
-getprotobyname Network get protocol record given name
-getprotobynumber Network get protocol record numeric protocol
-getprotoent Network get next protocols record
-getpwent User get next passwd record
-getpwnam User get passwd record given user login name
-getpwuid User get passwd record given user ID
-getservbyname Network get services record given its name
-getservbyport Network get services record given numeric port
-getservent Network get next services record
-getsockname Socket retrieve the sockaddr for a given socket
-getsockopt Socket get socket options on a given socket
-glob File expand filenames using wildcards
-gmtime Time convert UNIX time into record or string using Greenwich time
-goto Flow create spaghetti code
-grep LIST locate elements in a list test true against a given criterion
-hex Math,String convert a string to a hexadecimal number
-import Modules,Namespace patch a module's namespace into your own
-index String find a substring within a string
-int Math get the integer portion of a number
-ioctl File system-dependent device control system call
-join LIST join a list into a string using a separator
-keys HASH retrieve list of indices from a hash
-kill Process send a signal to a process or process group
-last Flow exit a block prematurely
-lc String return lower-case version of a string
-lcfirst String return a string with just the next letter in lower case
-length String return the number of bytes in a string
-link File create a hard link in the filesytem
-listen Socket register your socket as a server
-local Misc,Namespace create a temporary value for a global variable (dynamic scoping)
-localtime Time convert UNIX time into record or string using local time
-lock Threads get a thread lock on a variable, subroutine, or method
-log Math retrieve the natural logarithm for a number
-lstat File stat a symbolic link
-m// Regexp match a string with a regular expression pattern
-map LIST apply a change to a list to get back a new list with the changes
-mkdir File create a directory
-msgctl SysV SysV IPC message control operations
-msgget SysV get SysV IPC message queue
-msgrcv SysV receive a SysV IPC message from a message queue
-msgsnd SysV send a SysV IPC message to a message queue
-my Misc,Namespace declare and assign a local variable (lexical scoping)
-next Flow iterate a block prematurely
-no Modules unimport some module symbols or semantics at compile time
-package Modules,Objects,Namespace declare a separate global namespace
-prototype Flow,Misc get the prototype (if any) of a subroutine
-oct String,Math convert a string to an octal number
-open File open a file, pipe, or descriptor
-opendir File open a directory
-ord String find a character's numeric representation
-pack Binary,String convert a list into a binary representation
-pipe Process open a pair of connected filehandles
-pop ARRAY remove the last element from an array and return it
-pos Regexp find or set the offset for the last/next m//g search
-print I/O output a list to a filehandle
-printf I/O output a formatted list to a filehandle
-push ARRAY append one or more elements to an array
-q/STRING/ String singly quote a string
-qq/STRING/ String doubly quote a string
-quotemeta Regexp quote regular expression magic characters
-qw/STRING/ LIST quote a list of words
-qx/STRING/ Process backquote quote a string
-qr/PATTERN/ Regexp Compile pattern
-rand Math retrieve the next pseudorandom number
-read I/O,Binary fixed-length buffered input from a filehandle
-readdir I/O get a directory from a directory handle
-readline I/O fetch a record from a file
-readlink File determine where a symbolic link is pointing
-recv Socket receive a message over a Socket
-redo Flow start this loop iteration over again
-ref Objects find out the type of thing being referenced
-rename File change a filename
-require Modules load in external functions from a library at runtime
-reset Misc clear all variables of a given name
-return Flow get out of a function early
-reverse String,LIST flip a string or a list
-rewinddir I/O reset directory handle
-rindex String right-to-left substring search
-rmdir File remove a directory
-s/// Regexp replace a pattern with a string
-scalar Misc force a scalar context
-seek I/O reposition file pointer for random-access I/O
-seekdir I/O reposition directory pointer
-select I/O reset default output or do I/O multiplexing
-semctl SysV SysV semaphore control operations
-semget SysV get set of SysV semaphores
-semop SysV SysV semaphore operations
-send Socket send a message over a socket
-setgrent User prepare group file for use
-sethostent Network prepare hosts file for use
-setnetent Network prepare networks file for use
-setpgrp Process set the process group of a process
-setpriority Process set a process's nice value
-setprotoent Network prepare protocols file for use
-setpwent User prepare passwd file for use
-setservent Network prepare services file for use
-setsockopt Socket set some socket options
-shift ARRAY remove the first element of an array, and return it
-shmctl SysV SysV shared memory operations
-shmget SysV get SysV shared memory segment identifier
-shmread SysV read SysV shared memory
-shmwrite SysV write SysV shared memory
-shutdown Socket close down just half of a socket connection
-sin Math return the sine of a number
-sleep Process block for some number of seconds
-socket Socket create a socket
-socketpair Socket create a pair of sockets
-sort LIST sort a list of values
-splice ARRAY add or remove elements anywhere in an array
-split Regexp split up a string using a regexp delimiter
-sprintf String formatted print into a string
-sqrt Math square root function
-srand Math seed the random number generator
-stat File get a file's status information
-study Regexp optimize input data for repeated searches
-sub Flow declare a subroutine, possibly anonymously
-substr String get or alter a portion of a stirng
-symlink File create a symbolic link to a file
-syscall I/O,Binary execute an arbitrary system call
-sysread I/O,Binary fixed-length unbuffered input from a filehandle
-sysseek I/O,Binary position I/O pointer on handle used with sysread and syswrite
-system Process run a separate program
-syswrite I/O,Binary fixed-length unbuffered output to a filehandle
-tell I/O get current seekpointer on a filehandle
-telldir I/O get current seekpointer on a directory handle
-tie Objects bind a variable to an object class
-time Time return number of seconds since 1970
-times Process,Time return elapsed time for self and child processes
-tr/// String transliterate a string
-truncate I/O shorten a file
-uc String return upper-case version of a string
-ucfirst String return a string with just the next letter in upper case
-umask File set file creation mode mask
-undef Misc remove a variable or function definition
-unlink File remove one link to a file
-unpack Binary,LIST convert binary structure into normal perl variables
-unshift ARRAY prepend more elements to the beginning of a list
-untie Objects break a tie binding to a variable
-use Modules,Namespace load a module and import its namespace
-use Objects load in a module at compile time
-utime File set a file's last access and modify times
-values HASH return a list of the values in a hash
-vec Binary test or set particular bits in a string
-wait Process wait for any child process to die
-waitpid Process wait for a particular child process to die
-wantarray Misc,Flow get void vs scalar vs list context of current subroutine call
-warn I/O print debugging info
-write I/O print a picture record
-y/// String transliterate a string
diff --git a/contrib/perl5/lib/Pod/Html.pm b/contrib/perl5/lib/Pod/Html.pm
deleted file mode 100644
index f70a42b..0000000
--- a/contrib/perl5/lib/Pod/Html.pm
+++ /dev/null
@@ -1,2025 +0,0 @@
-package Pod::Html;
-use strict;
-require Exporter;
-
-use vars qw($VERSION @ISA @EXPORT);
-$VERSION = 1.03;
-@ISA = qw(Exporter);
-@EXPORT = qw(pod2html htmlify);
-
-use Carp;
-use Config;
-use Cwd;
-use File::Spec::Unix;
-use Getopt::Long;
-use Pod::Functions;
-
-use locale; # make \w work right in non-ASCII lands
-
-=head1 NAME
-
-Pod::Html - module to convert pod files to HTML
-
-=head1 SYNOPSIS
-
- use Pod::Html;
- pod2html([options]);
-
-=head1 DESCRIPTION
-
-Converts files from pod format (see L<perlpod>) to HTML format. It
-can automatically generate indexes and cross-references, and it keeps
-a cache of things it knows how to cross-reference.
-
-=head1 ARGUMENTS
-
-Pod::Html takes the following arguments:
-
-=over 4
-
-=item backlink
-
- --backlink="Back to Top"
-
-Adds "Back to Top" links in front of every HEAD1 heading (except for
-the first). By default, no backlink are being generated.
-
-=item css
-
- --css=stylesheet
-
-Specify the URL of a cascading style sheet.
-
-=item flush
-
- --flush
-
-Flushes the item and directory caches.
-
-=item header
-
- --header
- --noheader
-
-Creates header and footer blocks containing the text of the NAME
-section. By default, no headers are being generated.
-
-=item help
-
- --help
-
-Displays the usage message.
-
-=item htmldir
-
- --htmldir=name
-
-Sets the directory in which the resulting HTML file is placed. This
-is used to generate relative links to other files. Not passing this
-causes all links to be absolute, since this is the value that tells
-Pod::Html the root of the documentation tree.
-
-=item htmlroot
-
- --htmlroot=name
-
-Sets the base URL for the HTML files. When cross-references are made,
-the HTML root is prepended to the URL.
-
-=item index
-
- --index
- --noindex
-
-Generate an index at the top of the HTML file. This is the default
-behaviour.
-
-=item infile
-
- --infile=name
-
-Specify the pod file to convert. Input is taken from STDIN if no
-infile is specified.
-
-=item libpods
-
- --libpods=name:...:name
-
-List of page names (eg, "perlfunc") which contain linkable C<=item>s.
-
-=item netscape
-
- --netscape
- --nonetscape
-
-Use Netscape HTML directives when applicable. By default, they will
-B<not> be used.
-
-=item outfile
-
- --outfile=name
-
-Specify the HTML file to create. Output goes to STDOUT if no outfile
-is specified.
-
-=item podpath
-
- --podpath=name:...:name
-
-Specify which subdirectories of the podroot contain pod files whose
-HTML converted forms can be linked-to in cross-references.
-
-=item podroot
-
- --podroot=name
-
-Specify the base directory for finding library pods.
-
-=item quiet
-
- --quiet
- --noquiet
-
-Don't display I<mostly harmless> warning messages. These messages
-will be displayed by default. But this is not the same as C<verbose>
-mode.
-
-=item recurse
-
- --recurse
- --norecurse
-
-Recurse into subdirectories specified in podpath (default behaviour).
-
-=item title
-
- --title=title
-
-Specify the title of the resulting HTML file.
-
-=item verbose
-
- --verbose
- --noverbose
-
-Display progress messages. By default, they won't be displayed.
-
-=back
-
-=head1 EXAMPLE
-
- pod2html("pod2html",
- "--podpath=lib:ext:pod:vms",
- "--podroot=/usr/src/perl",
- "--htmlroot=/perl/nmanual",
- "--libpods=perlfunc:perlguts:perlvar:perlrun:perlop",
- "--recurse",
- "--infile=foo.pod",
- "--outfile=/perl/nmanual/foo.html");
-
-=head1 ENVIRONMENT
-
-Uses $Config{pod2html} to setup default options.
-
-=head1 AUTHOR
-
-Tom Christiansen, E<lt>tchrist@perl.comE<gt>.
-
-=head1 SEE ALSO
-
-L<perlpod>
-
-=head1 COPYRIGHT
-
-This program is distributed under the Artistic License.
-
-=cut
-
-my $cache_ext = $^O eq 'VMS' ? ".tmp" : ".x~~";
-my $dircache = "pod2htmd$cache_ext";
-my $itemcache = "pod2htmi$cache_ext";
-
-my @begin_stack = (); # begin/end stack
-
-my @libpods = (); # files to search for links from C<> directives
-my $htmlroot = "/"; # http-server base directory from which all
- # relative paths in $podpath stem.
-my $htmldir = ""; # The directory to which the html pages
- # will (eventually) be written.
-my $htmlfile = ""; # write to stdout by default
-my $htmlfileurl = "" ; # The url that other files would use to
- # refer to this file. This is only used
- # to make relative urls that point to
- # other files.
-my $podfile = ""; # read from stdin by default
-my @podpath = (); # list of directories containing library pods.
-my $podroot = "."; # filesystem base directory from which all
- # relative paths in $podpath stem.
-my $css = ''; # Cascading style sheet
-my $recurse = 1; # recurse on subdirectories in $podpath.
-my $quiet = 0; # not quiet by default
-my $verbose = 0; # not verbose by default
-my $doindex = 1; # non-zero if we should generate an index
-my $backlink = ''; # text for "back to top" links
-my $listlevel = 0; # current list depth
-my @listend = (); # the text to use to end the list.
-my $after_lpar = 0; # set to true after a par in an =item
-my $ignore = 1; # whether or not to format text. we don't
- # format text until we hit our first pod
- # directive.
-
-my %items_named = (); # for the multiples of the same item in perlfunc
-my @items_seen = ();
-my $netscape = 0; # whether or not to use netscape directives.
-my $title; # title to give the pod(s)
-my $header = 0; # produce block header/footer
-my $top = 1; # true if we are at the top of the doc. used
- # to prevent the first <HR> directive.
-my $paragraph; # which paragraph we're processing (used
- # for error messages)
-my $ptQuote = 0; # status of double-quote conversion
-my %pages = (); # associative array used to find the location
- # of pages referenced by L<> links.
-my %sections = (); # sections within this page
-my %items = (); # associative array used to find the location
- # of =item directives referenced by C<> links
-my %local_items = (); # local items - avoid destruction of %items
-my $Is83; # is dos with short filenames (8.3)
-
-sub init_globals {
-$dircache = "pod2htmd$cache_ext";
-$itemcache = "pod2htmi$cache_ext";
-
-@begin_stack = (); # begin/end stack
-
-@libpods = (); # files to search for links from C<> directives
-$htmlroot = "/"; # http-server base directory from which all
- # relative paths in $podpath stem.
-$htmldir = ""; # The directory to which the html pages
- # will (eventually) be written.
-$htmlfile = ""; # write to stdout by default
-$podfile = ""; # read from stdin by default
-@podpath = (); # list of directories containing library pods.
-$podroot = "."; # filesystem base directory from which all
- # relative paths in $podpath stem.
-$css = ''; # Cascading style sheet
-$recurse = 1; # recurse on subdirectories in $podpath.
-$quiet = 0; # not quiet by default
-$verbose = 0; # not verbose by default
-$doindex = 1; # non-zero if we should generate an index
-$backlink = ''; # text for "back to top" links
-$listlevel = 0; # current list depth
-@listend = (); # the text to use to end the list.
-$after_lpar = 0; # set to true after a par in an =item
-$ignore = 1; # whether or not to format text. we don't
- # format text until we hit our first pod
- # directive.
-
-@items_seen = ();
-%items_named = ();
-$netscape = 0; # whether or not to use netscape directives.
-$header = 0; # produce block header/footer
-$title = ''; # title to give the pod(s)
-$top = 1; # true if we are at the top of the doc. used
- # to prevent the first <HR> directive.
-$paragraph = ''; # which paragraph we're processing (used
- # for error messages)
-%sections = (); # sections within this page
-
-# These are not reinitialised here but are kept as a cache.
-# See get_cache and related cache management code.
-#%pages = (); # associative array used to find the location
- # of pages referenced by L<> links.
-#%items = (); # associative array used to find the location
- # of =item directives referenced by C<> links
-%local_items = ();
-$Is83=$^O eq 'dos';
-}
-
-#
-# clean_data: global clean-up of pod data
-#
-sub clean_data($){
- my( $dataref ) = @_;
- my $i;
- for( $i = 0; $i <= $#$dataref; $i++ ){
- ${$dataref}[$i] =~ s/\s+\Z//;
-
- # have a look for all-space lines
- if( ${$dataref}[$i] =~ /^\s+$/m ){
- my @chunks = split( /^\s+$/m, ${$dataref}[$i] );
- splice( @$dataref, $i, 1, @chunks );
- }
- }
-}
-
-
-sub pod2html {
- local(@ARGV) = @_;
- local($/);
- local $_;
-
- init_globals();
-
- $Is83 = 0 if (defined (&Dos::UseLFN) && Dos::UseLFN());
-
- # cache of %pages and %items from last time we ran pod2html
-
- #undef $opt_help if defined $opt_help;
-
- # parse the command-line parameters
- parse_command_line();
-
- # set some variables to their default values if necessary
- local *POD;
- unless (@ARGV && $ARGV[0]) {
- $podfile = "-" unless $podfile; # stdin
- open(POD, "<$podfile")
- || die "$0: cannot open $podfile file for input: $!\n";
- } else {
- $podfile = $ARGV[0]; # XXX: might be more filenames
- *POD = *ARGV;
- }
- $htmlfile = "-" unless $htmlfile; # stdout
- $htmlroot = "" if $htmlroot eq "/"; # so we don't get a //
- $htmldir =~ s#/\z## ; # so we don't get a //
- if ( $htmlroot eq ''
- && defined( $htmldir )
- && $htmldir ne ''
- && substr( $htmlfile, 0, length( $htmldir ) ) eq $htmldir
- )
- {
- # Set the 'base' url for this file, so that we can use it
- # as the location from which to calculate relative links
- # to other files. If this is '', then absolute links will
- # be used throughout.
- $htmlfileurl= "$htmldir/" . substr( $htmlfile, length( $htmldir ) + 1);
- }
-
- # read the pod a paragraph at a time
- warn "Scanning for sections in input file(s)\n" if $verbose;
- $/ = "";
- my @poddata = <POD>;
- close(POD);
- clean_data( \@poddata );
-
- # scan the pod for =head[1-6] directives and build an index
- my $index = scan_headings(\%sections, @poddata);
-
- unless($index) {
- warn "No headings in $podfile\n" if $verbose;
- }
-
- # open the output file
- open(HTML, ">$htmlfile")
- || die "$0: cannot open $htmlfile file for output: $!\n";
-
- # put a title in the HTML file if one wasn't specified
- if ($title eq '') {
- TITLE_SEARCH: {
- for (my $i = 0; $i < @poddata; $i++) {
- if ($poddata[$i] =~ /^=head1\s*NAME\b/m) {
- for my $para ( @poddata[$i, $i+1] ) {
- last TITLE_SEARCH
- if ($title) = $para =~ /(\S+\s+-+.*\S)/s;
- }
- }
-
- }
- }
- }
- if (!$title and $podfile =~ /\.pod\z/) {
- # probably a split pod so take first =head[12] as title
- for (my $i = 0; $i < @poddata; $i++) {
- last if ($title) = $poddata[$i] =~ /^=head[12]\s*(.*)/;
- }
- warn "adopted '$title' as title for $podfile\n"
- if $verbose and $title;
- }
- if ($title) {
- $title =~ s/\s*\(.*\)//;
- } else {
- warn "$0: no title for $podfile" unless $quiet;
- $podfile =~ /^(.*)(\.[^.\/]+)?\z/s;
- $title = ($podfile eq "-" ? 'No Title' : $1);
- warn "using $title" if $verbose;
- }
- my $csslink = $css ? qq(\n<LINK REL="stylesheet" HREF="$css" TYPE="text/css">) : '';
- $csslink =~ s,\\,/,g;
- $csslink =~ s,(/.):,$1|,;
-
- my $block = $header ? <<END_OF_BLOCK : '';
-<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
-<TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
-<FONT SIZE=+1><STRONG><P CLASS=block>&nbsp;$title</P></STRONG></FONT>
-</TD></TR>
-</TABLE>
-END_OF_BLOCK
-
- print HTML <<END_OF_HEAD;
-<HTML>
-<HEAD>
-<TITLE>$title</TITLE>$csslink
-<LINK REV="made" HREF="mailto:$Config{perladmin}">
-</HEAD>
-
-<BODY>
-$block
-END_OF_HEAD
-
- # load/reload/validate/cache %pages and %items
- get_cache($dircache, $itemcache, \@podpath, $podroot, $recurse);
-
- # scan the pod for =item directives
- scan_items( \%local_items, "", @poddata);
-
- # put an index at the top of the file. note, if $doindex is 0 we
- # still generate an index, but surround it with an html comment.
- # that way some other program can extract it if desired.
- $index =~ s/--+/-/g;
- print HTML "<A NAME=\"__index__\"></A>\n";
- print HTML "<!-- INDEX BEGIN -->\n";
- print HTML "<!--\n" unless $doindex;
- print HTML $index;
- print HTML "-->\n" unless $doindex;
- print HTML "<!-- INDEX END -->\n\n";
- print HTML "<HR>\n" if $doindex and $index;
-
- # now convert this file
- my $after_item; # set to true after an =item
- warn "Converting input file $podfile\n" if $verbose;
- foreach my $i (0..$#poddata){
- $ptQuote = 0; # status of quote conversion
-
- $_ = $poddata[$i];
- $paragraph = $i+1;
- if (/^(=.*)/s) { # is it a pod directive?
- $ignore = 0;
- $after_item = 0;
- $_ = $1;
- if (/^=begin\s+(\S+)\s*(.*)/si) {# =begin
- process_begin($1, $2);
- } elsif (/^=end\s+(\S+)\s*(.*)/si) {# =end
- process_end($1, $2);
- } elsif (/^=cut/) { # =cut
- process_cut();
- } elsif (/^=pod/) { # =pod
- process_pod();
- } else {
- next if @begin_stack && $begin_stack[-1] ne 'html';
-
- 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 '';
- process_item( $1 );
- $after_item = 1;
- } elsif (/^=over\s*(.*)/) { # =over N
- process_over();
- } elsif (/^=back/) { # =back
- process_back();
- } elsif (/^=for\s+(\S+)\s*(.*)/si) {# =for
- process_for($1,$2);
- } else {
- /^=(\S*)\s*/;
- warn "$0: $podfile: unknown pod directive '$1' in "
- . "paragraph $paragraph. ignoring.\n";
- }
- }
- $top = 0;
- }
- else {
- next if $ignore;
- next if @begin_stack && $begin_stack[-1] ne 'html';
- my $text = $_;
- if( $text =~ /\A\s+/ ){
- process_pre( \$text );
- print HTML "<PRE>\n$text</PRE>\n";
-
- } else {
- process_text( \$text );
-
- # experimental: check for a paragraph where all lines
- # have some ...\t...\t...\n pattern
- if( $text =~ /\t/ ){
- my @lines = split( "\n", $text );
- if( @lines > 1 ){
- my $all = 2;
- foreach my $line ( @lines ){
- if( $line =~ /\S/ && $line !~ /\t/ ){
- $all--;
- last if $all == 0;
- }
- }
- if( $all > 0 ){
- $text =~ s/\t+/<TD>/g;
- $text =~ s/^/<TR><TD>/gm;
- $text = '<TABLE CELLSPACING=0 CELLPADDING=0>' .
- $text . '</TABLE>';
- }
- }
- }
- ## end of experimental
-
- if( $after_item ){
- print HTML "$text\n";
- $after_lpar = 1;
- } else {
- print HTML "<P>$text</P>\n";
- }
- }
- $after_item = 0;
- }
- }
-
- # finish off any pending directives
- finish_list();
-
- # link to page index
- print HTML "<P><A HREF=\"#__index__\"><SMALL>$backlink</SMALL></A></P>\n"
- if $doindex and $index and $backlink;
-
- print HTML <<END_OF_TAIL;
-$block
-</BODY>
-
-</HTML>
-END_OF_TAIL
-
- # close the html file
- close(HTML);
-
- warn "Finished\n" if $verbose;
-}
-
-##############################################################################
-
-my $usage; # see below
-sub usage {
- my $podfile = shift;
- warn "$0: $podfile: @_\n" if @_;
- die $usage;
-}
-
-$usage =<<END_OF_USAGE;
-Usage: $0 --help --htmlroot=<name> --infile=<name> --outfile=<name>
- --podpath=<name>:...:<name> --podroot=<name>
- --libpods=<name>:...:<name> --recurse --verbose --index
- --netscape --norecurse --noindex
-
- --backlink - set text for "back to top" links (default: none).
- --css - stylesheet URL
- --flush - flushes the item and directory caches.
- --[no]header - produce block header/footer (default is no headers).
- --help - prints this message.
- --htmldir - directory for resulting HTML files.
- --htmlroot - http-server base directory from which all relative paths
- in podpath stem (default is /).
- --[no]index - generate an index at the top of the resulting html
- (default behaviour).
- --infile - filename for the pod to convert (input taken from stdin
- by default).
- --libpods - colon-separated list of pages to search for =item pod
- directives in as targets of C<> and implicit links (empty
- by default). note, these are not filenames, but rather
- page names like those that appear in L<> links.
- --[no]netscape - will use netscape html directives when applicable.
- (default is not to use them).
- --outfile - filename for the resulting html file (output sent to
- stdout by default).
- --podpath - colon-separated list of directories containing library
- pods (empty by default).
- --podroot - filesystem base directory from which all relative paths
- in podpath stem (default is .).
- --[no]quiet - supress some benign warning messages (default is off).
- --[no]recurse - recurse on those subdirectories listed in podpath
- (default behaviour).
- --title - title that will appear in resulting html file.
- --[no]verbose - self-explanatory (off by default).
-
-END_OF_USAGE
-
-sub parse_command_line {
- my ($opt_backlink,$opt_css,$opt_flush,$opt_header,$opt_help,$opt_htmldir,
- $opt_htmlroot,$opt_index,$opt_infile,$opt_libpods,$opt_netscape,
- $opt_outfile,$opt_podpath,$opt_podroot,$opt_quiet,$opt_recurse,
- $opt_title,$opt_verbose);
-
- unshift @ARGV, split ' ', $Config{pod2html} if $Config{pod2html};
- my $result = GetOptions(
- 'backlink=s' => \$opt_backlink,
- 'css=s' => \$opt_css,
- 'flush' => \$opt_flush,
- 'header!' => \$opt_header,
- 'help' => \$opt_help,
- 'htmldir=s' => \$opt_htmldir,
- 'htmlroot=s' => \$opt_htmlroot,
- 'index!' => \$opt_index,
- 'infile=s' => \$opt_infile,
- 'libpods=s' => \$opt_libpods,
- 'netscape!' => \$opt_netscape,
- 'outfile=s' => \$opt_outfile,
- 'podpath=s' => \$opt_podpath,
- 'podroot=s' => \$opt_podroot,
- 'quiet!' => \$opt_quiet,
- 'recurse!' => \$opt_recurse,
- 'title=s' => \$opt_title,
- 'verbose!' => \$opt_verbose,
- );
- usage("-", "invalid parameters") if not $result;
-
- usage("-") if defined $opt_help; # see if the user asked for help
- $opt_help = ""; # just to make -w shut-up.
-
- @podpath = split(":", $opt_podpath) if defined $opt_podpath;
- @libpods = split(":", $opt_libpods) if defined $opt_libpods;
-
- $backlink = $opt_backlink if defined $opt_backlink;
- $css = $opt_css if defined $opt_css;
- $header = $opt_header if defined $opt_header;
- $htmldir = $opt_htmldir if defined $opt_htmldir;
- $htmlroot = $opt_htmlroot if defined $opt_htmlroot;
- $doindex = $opt_index if defined $opt_index;
- $podfile = $opt_infile if defined $opt_infile;
- $netscape = $opt_netscape if defined $opt_netscape;
- $htmlfile = $opt_outfile if defined $opt_outfile;
- $podroot = $opt_podroot if defined $opt_podroot;
- $quiet = $opt_quiet if defined $opt_quiet;
- $recurse = $opt_recurse if defined $opt_recurse;
- $title = $opt_title if defined $opt_title;
- $verbose = $opt_verbose if defined $opt_verbose;
-
- warn "Flushing item and directory caches\n"
- if $opt_verbose && defined $opt_flush;
- unlink($dircache, $itemcache) if defined $opt_flush;
-}
-
-
-my $saved_cache_key;
-
-sub get_cache {
- my($dircache, $itemcache, $podpath, $podroot, $recurse) = @_;
- my @cache_key_args = @_;
-
- # A first-level cache:
- # Don't bother reading the cache files if they still apply
- # and haven't changed since we last read them.
-
- my $this_cache_key = cache_key(@cache_key_args);
-
- return if $saved_cache_key and $this_cache_key eq $saved_cache_key;
-
- # load the cache of %pages and %items if possible. $tests will be
- # non-zero if successful.
- my $tests = 0;
- if (-f $dircache && -f $itemcache) {
- warn "scanning for item cache\n" if $verbose;
- $tests = load_cache($dircache, $itemcache, $podpath, $podroot);
- }
-
- # if we didn't succeed in loading the cache then we must (re)build
- # %pages and %items.
- if (!$tests) {
- warn "scanning directories in pod-path\n" if $verbose;
- scan_podpath($podroot, $recurse, 0);
- }
- $saved_cache_key = cache_key(@cache_key_args);
-}
-
-sub cache_key {
- my($dircache, $itemcache, $podpath, $podroot, $recurse) = @_;
- return join('!', $dircache, $itemcache, $recurse,
- @$podpath, $podroot, stat($dircache), stat($itemcache));
-}
-
-#
-# load_cache - tries to find if the caches stored in $dircache and $itemcache
-# are valid caches of %pages and %items. if they are valid then it loads
-# them and returns a non-zero value.
-#
-sub load_cache {
- my($dircache, $itemcache, $podpath, $podroot) = @_;
- my($tests);
- local $_;
-
- $tests = 0;
-
- open(CACHE, "<$itemcache") ||
- die "$0: error opening $itemcache for reading: $!\n";
- $/ = "\n";
-
- # is it the same podpath?
- $_ = <CACHE>;
- chomp($_);
- $tests++ if (join(":", @$podpath) eq $_);
-
- # is it the same podroot?
- $_ = <CACHE>;
- chomp($_);
- $tests++ if ($podroot eq $_);
-
- # load the cache if its good
- if ($tests != 2) {
- close(CACHE);
- return 0;
- }
-
- warn "loading item cache\n" if $verbose;
- while (<CACHE>) {
- /(.*?) (.*)$/;
- $items{$1} = $2;
- }
- close(CACHE);
-
- warn "scanning for directory cache\n" if $verbose;
- open(CACHE, "<$dircache") ||
- die "$0: error opening $dircache for reading: $!\n";
- $/ = "\n";
- $tests = 0;
-
- # is it the same podpath?
- $_ = <CACHE>;
- chomp($_);
- $tests++ if (join(":", @$podpath) eq $_);
-
- # is it the same podroot?
- $_ = <CACHE>;
- chomp($_);
- $tests++ if ($podroot eq $_);
-
- # load the cache if its good
- if ($tests != 2) {
- close(CACHE);
- return 0;
- }
-
- warn "loading directory cache\n" if $verbose;
- while (<CACHE>) {
- /(.*?) (.*)$/;
- $pages{$1} = $2;
- }
-
- close(CACHE);
-
- return 1;
-}
-
-#
-# scan_podpath - scans the directories specified in @podpath for directories,
-# .pod files, and .pm files. it also scans the pod files specified in
-# @libpods for =item directives.
-#
-sub scan_podpath {
- my($podroot, $recurse, $append) = @_;
- my($pwd, $dir);
- my($libpod, $dirname, $pod, @files, @poddata);
-
- unless($append) {
- %items = ();
- %pages = ();
- }
-
- # scan each directory listed in @podpath
- $pwd = getcwd();
- chdir($podroot)
- || die "$0: error changing to directory $podroot: $!\n";
- foreach $dir (@podpath) {
- scan_dir($dir, $recurse);
- }
-
- # scan the pods listed in @libpods for =item directives
- foreach $libpod (@libpods) {
- # if the page isn't defined then we won't know where to find it
- # on the system.
- next unless defined $pages{$libpod} && $pages{$libpod};
-
- # if there is a directory then use the .pod and .pm files within it.
- # NOTE: Only finds the first so-named directory in the tree.
-# if ($pages{$libpod} =~ /([^:]*[^(\.pod|\.pm)]):/) {
- if ($pages{$libpod} =~ /([^:]*(?<!\.pod)(?<!\.pm)):/) {
- # find all the .pod and .pm files within the directory
- $dirname = $1;
- opendir(DIR, $dirname) ||
- die "$0: error opening directory $dirname: $!\n";
- @files = grep(/(\.pod|\.pm)\z/ && ! -d $_, readdir(DIR));
- closedir(DIR);
-
- # scan each .pod and .pm file for =item directives
- foreach $pod (@files) {
- open(POD, "<$dirname/$pod") ||
- die "$0: error opening $dirname/$pod for input: $!\n";
- @poddata = <POD>;
- close(POD);
- clean_data( \@poddata );
-
- scan_items( \%items, "$dirname/$pod", @poddata);
- }
-
- # use the names of files as =item directives too.
-### Don't think this should be done this way - confuses issues.(WL)
-### foreach $pod (@files) {
-### $pod =~ /^(.*)(\.pod|\.pm)$/;
-### $items{$1} = "$dirname/$1.html" if $1;
-### }
- } elsif ($pages{$libpod} =~ /([^:]*\.pod):/ ||
- $pages{$libpod} =~ /([^:]*\.pm):/) {
- # scan the .pod or .pm file for =item directives
- $pod = $1;
- open(POD, "<$pod") ||
- die "$0: error opening $pod for input: $!\n";
- @poddata = <POD>;
- close(POD);
- clean_data( \@poddata );
-
- scan_items( \%items, "$pod", @poddata);
- } else {
- warn "$0: shouldn't be here (line ".__LINE__."\n";
- }
- }
- @poddata = (); # clean-up a bit
-
- chdir($pwd)
- || die "$0: error changing to directory $pwd: $!\n";
-
- # cache the item list for later use
- warn "caching items for later use\n" if $verbose;
- open(CACHE, ">$itemcache") ||
- die "$0: error open $itemcache for writing: $!\n";
-
- print CACHE join(":", @podpath) . "\n$podroot\n";
- foreach my $key (keys %items) {
- print CACHE "$key $items{$key}\n";
- }
-
- close(CACHE);
-
- # cache the directory list for later use
- warn "caching directories for later use\n" if $verbose;
- open(CACHE, ">$dircache") ||
- die "$0: error open $dircache for writing: $!\n";
-
- print CACHE join(":", @podpath) . "\n$podroot\n";
- foreach my $key (keys %pages) {
- print CACHE "$key $pages{$key}\n";
- }
-
- close(CACHE);
-}
-
-#
-# scan_dir - scans the directory specified in $dir for subdirectories, .pod
-# files, and .pm files. notes those that it finds. this information will
-# be used later in order to figure out where the pages specified in L<>
-# links are on the filesystem.
-#
-sub scan_dir {
- my($dir, $recurse) = @_;
- my($t, @subdirs, @pods, $pod, $dirname, @dirs);
- local $_;
-
- @subdirs = ();
- @pods = ();
-
- opendir(DIR, $dir) ||
- die "$0: error opening directory $dir: $!\n";
- while (defined($_ = readdir(DIR))) {
- if (-d "$dir/$_" && $_ ne "." && $_ ne "..") { # directory
- $pages{$_} = "" unless defined $pages{$_};
- $pages{$_} .= "$dir/$_:";
- push(@subdirs, $_);
- } elsif (/\.pod\z/) { # .pod
- s/\.pod\z//;
- $pages{$_} = "" unless defined $pages{$_};
- $pages{$_} .= "$dir/$_.pod:";
- push(@pods, "$dir/$_.pod");
- } elsif (/\.html\z/) { # .html
- s/\.html\z//;
- $pages{$_} = "" unless defined $pages{$_};
- $pages{$_} .= "$dir/$_.pod:";
- } elsif (/\.pm\z/) { # .pm
- s/\.pm\z//;
- $pages{$_} = "" unless defined $pages{$_};
- $pages{$_} .= "$dir/$_.pm:";
- push(@pods, "$dir/$_.pm");
- }
- }
- closedir(DIR);
-
- # recurse on the subdirectories if necessary
- if ($recurse) {
- foreach my $subdir (@subdirs) {
- scan_dir("$dir/$subdir", $recurse);
- }
- }
-}
-
-#
-# scan_headings - scan a pod file for head[1-6] tags, note the tags, and
-# build an index.
-#
-sub scan_headings {
- my($sections, @data) = @_;
- my($tag, $which_head, $otitle, $listdepth, $index);
-
- # here we need local $ignore = 0;
- # unfortunately, we can't have it, because $ignore is lexical
- $ignore = 0;
-
- $listdepth = 0;
- $index = "";
-
- # scan for =head directives, note their name, and build an index
- # pointing to each of them.
- foreach my $line (@data) {
- if ($line =~ /^=(head)([1-6])\s+(.*)/) {
- ($tag, $which_head, $otitle) = ($1,$2,$3);
-
- my $title = depod( $otitle );
- my $name = htmlify( $title );
- $$sections{$name} = 1;
- $title = process_text( \$otitle );
-
- while ($which_head != $listdepth) {
- if ($which_head > $listdepth) {
- $index .= "\n" . ("\t" x $listdepth) . "<UL>\n";
- $listdepth++;
- } elsif ($which_head < $listdepth) {
- $listdepth--;
- $index .= "\n" . ("\t" x $listdepth) . "</UL>\n";
- }
- }
-
- $index .= "\n" . ("\t" x $listdepth) . "<LI>" .
- "<A HREF=\"#" . $name . "\">" .
- $title . "</A></LI>";
- }
- }
-
- # finish off the lists
- while ($listdepth--) {
- $index .= "\n" . ("\t" x $listdepth) . "</UL>\n";
- }
-
- # get rid of bogus lists
- $index =~ s,\t*<UL>\s*</UL>\n,,g;
-
- $ignore = 1; # restore old value;
-
- return $index;
-}
-
-#
-# scan_items - scans the pod specified by $pod for =item directives. we
-# will use this information later on in resolving C<> links.
-#
-sub scan_items {
- my( $itemref, $pod, @poddata ) = @_;
- my($i, $item);
- local $_;
-
- $pod =~ s/\.pod\z//;
- $pod .= ".html" if $pod;
-
- foreach $i (0..$#poddata) {
- my $txt = depod( $poddata[$i] );
-
- # figure out what kind of item it is.
- # Build string for referencing this item.
- if ( $txt =~ /\A=item\s+\*\s*(.*)\Z/s ) { # bullet
- next unless $1;
- $item = $1;
- } elsif( $txt =~ /\A=item\s+(?>\d+\.?)\s*(.*)\Z/s ) { # numbered list
- $item = $1;
- } elsif( $txt =~ /\A=item\s+(.*)\Z/s ) { # plain item
- $item = $1;
- } else {
- next;
- }
- my $fid = fragment_id( $item );
- $$itemref{$fid} = "$pod" if $fid;
- }
-}
-
-#
-# process_head - convert a pod head[1-6] tag and convert it to HTML format.
-#
-sub process_head {
- my($tag, $heading, $hasindex) = @_;
-
- # figure out the level of the =head
- $tag =~ /head([1-6])/;
- my $level = $1;
-
- if( $listlevel ){
- warn "$0: $podfile: unterminated list at =head in paragraph $paragraph. ignoring.\n";
- while( $listlevel ){
- process_back();
- }
- }
-
- print HTML "<P>\n";
- if( $level == 1 && ! $top ){
- print HTML "<A HREF=\"#__index__\"><SMALL>$backlink</SMALL></A>\n"
- if $hasindex and $backlink;
- print HTML "<HR>\n"
- }
-
- my $name = htmlify( depod( $heading ) );
- my $convert = process_text( \$heading );
- print HTML "<H$level><A NAME=\"$name\">$convert</A></H$level>\n";
-}
-
-
-#
-# emit_item_tag - print an =item's text
-# Note: The global $EmittedItem is used for inhibiting self-references.
-#
-my $EmittedItem;
-
-sub emit_item_tag($$$){
- my( $otext, $text, $compact ) = @_;
- my $item = fragment_id( $text );
-
- $EmittedItem = $item;
- ### print STDERR "emit_item_tag=$item ($text)\n";
-
- print HTML '<STRONG>';
- if ($items_named{$item}++) {
- print HTML process_text( \$otext );
- } else {
- my $name = 'item_' . $item;
- print HTML qq{<A NAME="$name">}, process_text( \$otext ), '</A>';
- }
- print HTML "</STRONG><BR>\n";
- undef( $EmittedItem );
-}
-
-sub emit_li {
- my( $tag ) = @_;
- if( $items_seen[$listlevel]++ == 0 ){
- push( @listend, "</$tag>" );
- print HTML "<$tag>\n";
- }
- print HTML $tag eq 'DL' ? '<DT>' : '<LI>';
-}
-
-#
-# process_item - convert a pod item tag and convert it to HTML format.
-#
-sub process_item {
- my( $otext ) = @_;
-
- # lots of documents start a list without doing an =over. this is
- # bad! but, the proper thing to do seems to be to just assume
- # they did do an =over. so warn them once and then continue.
- if( $listlevel == 0 ){
- warn "$0: $podfile: unexpected =item directive in paragraph $paragraph. ignoring.\n";
- process_over();
- }
-
- # formatting: insert a paragraph if preceding item has >1 paragraph
- if( $after_lpar ){
- print HTML "<P></P>\n";
- $after_lpar = 0;
- }
-
- # remove formatting instructions from the text
- my $text = depod( $otext );
-
- # all the list variants:
- if( $text =~ /\A\*/ ){ # bullet
- emit_li( 'UL' );
- if ($text =~ /\A\*\s+(.+)\Z/s ) { # with additional text
- my $tag = $1;
- $otext =~ s/\A\*\s+//;
- emit_item_tag( $otext, $tag, 1 );
- }
-
- } elsif( $text =~ /\A\d+/ ){ # numbered list
- emit_li( 'OL' );
- if ($text =~ /\A(?>\d+\.?)\s*(.+)\Z/s ) { # with additional text
- my $tag = $1;
- $otext =~ s/\A\d+\.?\s*//;
- emit_item_tag( $otext, $tag, 1 );
- }
-
- } else { # definition list
- emit_li( 'DL' );
- if ($text =~ /\A(.+)\Z/s ){ # should have text
- emit_item_tag( $otext, $text, 1 );
- }
- print HTML '<DD>';
- }
- print HTML "\n";
-}
-
-#
-# process_over - process a pod over tag and start a corresponding HTML list.
-#
-sub process_over {
- # start a new list
- $listlevel++;
- push( @items_seen, 0 );
- $after_lpar = 0;
-}
-
-#
-# process_back - process a pod back tag and convert it to HTML format.
-#
-sub process_back {
- if( $listlevel == 0 ){
- warn "$0: $podfile: unexpected =back directive in paragraph $paragraph. ignoring.\n";
- return;
- }
-
- # close off the list. note, I check to see if $listend[$listlevel] is
- # defined because an =item directive may have never appeared and thus
- # $listend[$listlevel] may have never been initialized.
- $listlevel--;
- if( defined $listend[$listlevel] ){
- print HTML '<P></P>' if $after_lpar;
- print HTML $listend[$listlevel];
- print HTML "\n";
- pop( @listend );
- }
- $after_lpar = 0;
-
- # clean up item count
- pop( @items_seen );
-}
-
-#
-# process_cut - process a pod cut tag, thus start ignoring pod directives.
-#
-sub process_cut {
- $ignore = 1;
-}
-
-#
-# process_pod - process a pod pod tag, thus stop ignoring pod directives
-# until we see a corresponding cut.
-#
-sub process_pod {
- # no need to set $ignore to 0 cause the main loop did it
-}
-
-#
-# process_for - process a =for pod tag. if it's for html, spit
-# it out verbatim, if illustration, center it, otherwise ignore it.
-#
-sub process_for {
- my($whom, $text) = @_;
- if ( $whom =~ /^(pod2)?html$/i) {
- print HTML $text;
- } elsif ($whom =~ /^illustration$/i) {
- 1 while chomp $text;
- for my $ext (qw[.png .gif .jpeg .jpg .tga .pcl .bmp]) {
- $text .= $ext, last if -r "$text$ext";
- }
- print HTML qq{<p align = "center"><img src = "$text" alt = "$text illustration"></p>};
- }
-}
-
-#
-# process_begin - process a =begin pod tag. this pushes
-# whom we're beginning on the begin stack. if there's a
-# begin stack, we only print if it us.
-#
-sub process_begin {
- my($whom, $text) = @_;
- $whom = lc($whom);
- push (@begin_stack, $whom);
- if ( $whom =~ /^(pod2)?html$/) {
- print HTML $text if $text;
- }
-}
-
-#
-# process_end - process a =end pod tag. pop the
-# begin stack. die if we're mismatched.
-#
-sub process_end {
- my($whom, $text) = @_;
- $whom = lc($whom);
- if ($begin_stack[-1] ne $whom ) {
- die "Unmatched begin/end at chunk $paragraph\n"
- }
- pop( @begin_stack );
-}
-
-#
-# process_pre - indented paragraph, made into <PRE></PRE>
-#
-sub process_pre {
- my( $text ) = @_;
- my( $rest );
- return if $ignore;
-
- $rest = $$text;
-
- # insert spaces in place of tabs
- $rest =~ s#.*#
- my $line = $&;
- 1 while $line =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
- $line;
- #eg;
-
- # convert some special chars to HTML escapes
- $rest =~ s/&/&amp;/g;
- $rest =~ s/</&lt;/g;
- $rest =~ s/>/&gt;/g;
- $rest =~ s/"/&quot;/g;
-
- # try and create links for all occurrences of perl.* within
- # the preformatted text.
- $rest =~ s{
- (\s*)(perl\w+)
- }{
- if ( defined $pages{$2} ){ # is a link
- qq($1<A HREF="$htmlroot/$pages{$2}">$2</A>);
- } elsif (defined $pages{dosify($2)}) { # is a link
- qq($1<A HREF="$htmlroot/$pages{dosify($2)}">$2</A>);
- } else {
- "$1$2";
- }
- }xeg;
- $rest =~ s{
- (<A\ HREF="?) ([^>:]*:)? ([^>:]*) \.pod: ([^>:]*:)?
- }{
- my $url ;
- if ( $htmlfileurl ne '' ){
- # Here, we take advantage of the knowledge
- # that $htmlfileurl ne '' implies $htmlroot eq ''.
- # Since $htmlroot eq '', we need to prepend $htmldir
- # on the fron of the link to get the absolute path
- # of the link's target. We check for a leading '/'
- # to avoid corrupting links that are #, file:, etc.
- my $old_url = $3 ;
- $old_url = "$htmldir$old_url" if $old_url =~ m{^\/};
- $url = relativize_url( "$old_url.html", $htmlfileurl );
- } else {
- $url = "$3.html" ;
- }
- "$1$url" ;
- }xeg;
-
- # Look for embedded URLs and make them into links. We don't
- # relativize them since they are best left as the author intended.
-
- my $urls = '(' . join ('|', qw{
- http
- telnet
- mailto
- news
- gopher
- file
- wais
- ftp
- } )
- . ')';
-
- my $ltrs = '\w';
- my $gunk = '/#~:.?+=&%@!\-';
- my $punc = '.:?\-';
- my $any = "${ltrs}${gunk}${punc}";
-
- $rest =~ s{
- \b # start at word boundary
- ( # begin $1 {
- $urls : # need resource and a colon
- (?!:) # Ignore File::, among others.
- [$any] +? # followed by on or more
- # of any valid character, but
- # be conservative and take only
- # what you need to....
- ) # end $1 }
- (?= # look-ahead non-consumptive assertion
- [$punc]* # either 0 or more puntuation
- [^$any] # followed by a non-url char
- | # or else
- $ # then end of the string
- )
- }{<A HREF="$1">$1</A>}igox;
-
- # text should be as it is (verbatim)
- $$text = $rest;
-}
-
-
-#
-# pure text processing
-#
-# pure_text/inIS_text: differ with respect to automatic C<> recognition.
-# we don't want this to happen within IS
-#
-sub pure_text($){
- my $text = shift();
- process_puretext( $text, \$ptQuote, 1 );
-}
-
-sub inIS_text($){
- my $text = shift();
- process_puretext( $text, \$ptQuote, 0 );
-}
-
-#
-# process_puretext - process pure text (without pod-escapes) converting
-# double-quotes and handling implicit C<> links.
-#
-sub process_puretext {
- my($text, $quote, $notinIS) = @_;
-
- ## Guessing at func() or [$@%&]*var references in plain text is destined
- ## to produce some strange looking ref's. uncomment to disable:
- ## $notinIS = 0;
-
- my(@words, $lead, $trail);
-
- # convert double-quotes to single-quotes
- if( $$quote && $text =~ s/"/''/s ){
- $$quote = 0;
- }
- while ($text =~ s/"([^"]*)"/``$1''/sg) {};
- $$quote = 1 if $text =~ s/"/``/s;
-
- # keep track of leading and trailing white-space
- $lead = ($text =~ s/\A(\s+)//s ? $1 : "");
- $trail = ($text =~ s/(\s+)\Z//s ? $1 : "");
-
- # split at space/non-space boundaries
- @words = split( /(?<=\s)(?=\S)|(?<=\S)(?=\s)/, $text );
-
- # process each word individually
- foreach my $word (@words) {
- # skip space runs
- next if $word =~ /^\s*$/;
- # see if we can infer a link
- if( $notinIS && $word =~ /^(\w+)\((.*)\)$/ ) {
- # has parenthesis so should have been a C<> ref
- ## try for a pagename (perlXXX(1))?
- my( $func, $args ) = ( $1, $2 );
- if( $args =~ /^\d+$/ ){
- my $url = page_sect( $word, '' );
- if( defined $url ){
- $word = "<A HREF=\"$url\">the $word manpage</A>";
- next;
- }
- }
- ## try function name for a link, append tt'ed argument list
- $word = emit_C( $func, '', "($args)");
-
-#### disabled. either all (including $\W, $\w+{.*} etc.) or nothing.
-## } elsif( $notinIS && $word =~ /^[\$\@%&*]+\w+$/) {
-## # perl variables, should be a C<> ref
-## $word = emit_C( $word );
-
- } elsif ($word =~ m,^\w+://\w,) {
- # looks like a URL
- # Don't relativize it: leave it as the author intended
- $word = qq(<A HREF="$word">$word</A>);
- } elsif ($word =~ /[\w.-]+\@[\w-]+\.\w/) {
- # looks like an e-mail address
- my ($w1, $w2, $w3) = ("", $word, "");
- ($w1, $w2, $w3) = ("(", $1, ")$2") if $word =~ /^\((.*?)\)(,?)/;
- ($w1, $w2, $w3) = ("&lt;", $1, "&gt;$2") if $word =~ /^<(.*?)>(,?)/;
- $word = qq($w1<A HREF="mailto:$w2">$w2</A>$w3);
- } elsif ($word !~ /[a-z]/ && $word =~ /[A-Z]/) { # all uppercase?
- $word = html_escape($word) if $word =~ /["&<>]/;
- $word = "\n<FONT SIZE=-1>$word</FONT>" if $netscape;
- } else {
- $word = html_escape($word) if $word =~ /["&<>]/;
- }
- }
-
- # put everything back together
- return $lead . join( '', @words ) . $trail;
-}
-
-
-#
-# process_text - handles plaintext that appears in the input pod file.
-# there may be pod commands embedded within the text so those must be
-# converted to html commands.
-#
-
-sub process_text1($$;$$);
-sub pattern ($) { $_[0] ? '[^\S\n]+'.('>' x ($_[0] + 1)) : '>' }
-sub closing ($) { local($_) = shift; (defined && s/\s+$//) ? length : 0 }
-
-sub process_text {
- return if $ignore;
- my( $tref ) = @_;
- my $res = process_text1( 0, $tref );
- $$tref = $res;
-}
-
-sub process_text1($$;$$){
- my( $lev, $rstr, $func, $closing ) = @_;
- my $res = '';
-
- unless (defined $func) {
- $func = '';
- $lev++;
- }
-
- if( $func eq 'B' ){
- # B<text> - boldface
- $res = '<STRONG>' . process_text1( $lev, $rstr ) . '</STRONG>';
-
- } elsif( $func eq 'C' ){
- # C<code> - can be a ref or <CODE></CODE>
- # need to extract text
- my $par = go_ahead( $rstr, 'C', $closing );
-
- ## clean-up of the link target
- my $text = depod( $par );
-
- ### my $x = $par =~ /[BI]</ ? 'yes' : 'no' ;
- ### print STDERR "-->call emit_C($par) lev=$lev, par with BI=$x\n";
-
- $res = emit_C( $text, $lev > 1 || ($par =~ /[BI]</) );
-
- } elsif( $func eq 'E' ){
- # E<x> - convert to character
- $$rstr =~ s/^([^>]*)>//;
- my $escape = $1;
- $escape =~ s/^(\d+|X[\dA-F]+)$/#$1/i;
- $res = "&$escape;";
-
- } elsif( $func eq 'F' ){
- # F<filename> - italizice
- $res = '<EM>' . process_text1( $lev, $rstr ) . '</EM>';
-
- } elsif( $func eq 'I' ){
- # I<text> - italizice
- $res = '<EM>' . process_text1( $lev, $rstr ) . '</EM>';
-
- } elsif( $func eq 'L' ){
- # L<link> - link
- ## L<text|cross-ref> => produce text, use cross-ref for linking
- ## L<cross-ref> => make text from cross-ref
- ## need to extract text
- my $par = go_ahead( $rstr, 'L', $closing );
-
- # some L<>'s that shouldn't be:
- # a) full-blown URL's are emitted as-is
- if( $par =~ m{^\w+://}s ){
- return make_URL_href( $par );
- }
- # b) C<...> is stripped and treated as C<>
- if( $par =~ /^C<(.*)>$/ ){
- my $text = depod( $1 );
- return emit_C( $text, $lev > 1 || ($par =~ /[BI]</) );
- }
-
- # analyze the contents
- $par =~ s/\n/ /g; # undo word-wrapped tags
- my $opar = $par;
- my $linktext;
- if( $par =~ s{^([^|]+)\|}{} ){
- $linktext = $1;
- }
-
- # make sure sections start with a /
- $par =~ s{^"}{/"};
-
- my( $page, $section, $ident );
-
- # check for link patterns
- if( $par =~ m{^([^/]+?)/(?!")(.*?)$} ){ # name/ident
- # we've got a name/ident (no quotes)
- ( $page, $ident ) = ( $1, $2 );
- ### print STDERR "--> L<$par> to page $page, ident $ident\n";
-
- } elsif( $par =~ m{^(.*?)/"?(.*?)"?$} ){ # [name]/"section"
- # even though this should be a "section", we go for ident first
- ( $page, $ident ) = ( $1, $2 );
- ### print STDERR "--> L<$par> to page $page, section $section\n";
-
- } elsif( $par =~ /\s/ ){ # this must be a section with missing quotes
- ( $page, $section ) = ( '', $par );
- ### print STDERR "--> L<$par> to void page, section $section\n";
-
- } else {
- ( $page, $section ) = ( $par, '' );
- ### print STDERR "--> L<$par> to page $par, void section\n";
- }
-
- # now, either $section or $ident is defined. the convoluted logic
- # below tries to resolve L<> according to what the user specified.
- # failing this, we try to find the next best thing...
- my( $url, $ltext, $fid );
-
- RESOLVE: {
- if( defined $ident ){
- ## try to resolve $ident as an item
- ( $url, $fid ) = coderef( $page, $ident );
- if( $url ){
- if( ! defined( $linktext ) ){
- $linktext = $ident;
- $linktext .= " in " if $ident && $page;
- $linktext .= "the $page manpage" if $page;
- }
- ### print STDERR "got coderef url=$url\n";
- last RESOLVE;
- }
- ## no luck: go for a section (auto-quoting!)
- $section = $ident;
- }
- ## now go for a section
- my $htmlsection = htmlify( $section );
- $url = page_sect( $page, $htmlsection );
- if( $url ){
- if( ! defined( $linktext ) ){
- $linktext = $section;
- $linktext .= " in " if $section && $page;
- $linktext .= "the $page manpage" if $page;
- }
- ### print STDERR "got page/section url=$url\n";
- last RESOLVE;
- }
- ## no luck: go for an ident
- if( $section ){
- $ident = $section;
- } else {
- $ident = $page;
- $page = undef();
- }
- ( $url, $fid ) = coderef( $page, $ident );
- if( $url ){
- if( ! defined( $linktext ) ){
- $linktext = $ident;
- $linktext .= " in " if $ident && $page;
- $linktext .= "the $page manpage" if $page;
- }
- ### print STDERR "got section=>coderef url=$url\n";
- last RESOLVE;
- }
-
- # warning; show some text.
- $linktext = $opar unless defined $linktext;
- warn "$0: $podfile: cannot resolve L<$opar> in paragraph $paragraph.";
- }
-
- # now we have an URL or just plain code
- $$rstr = $linktext . '>' . $$rstr;
- if( defined( $url ) ){
- $res = "<A HREF=\"$url\">" . process_text1( $lev, $rstr ) . '</A>';
- } else {
- $res = '<EM>' . process_text1( $lev, $rstr ) . '</EM>';
- }
-
- } elsif( $func eq 'S' ){
- # S<text> - non-breaking spaces
- $res = process_text1( $lev, $rstr );
- $res =~ s/ /&nbsp;/g;
-
- } elsif( $func eq 'X' ){
- # X<> - ignore
- $$rstr =~ s/^[^>]*>//;
-
- } elsif( $func eq 'Z' ){
- # Z<> - empty
- warn "$0: $podfile: invalid X<> in paragraph $paragraph."
- unless $$rstr =~ s/^>//;
-
- } else {
- my $term = pattern $closing;
- while( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)//s ){
- # all others: either recurse into new function or
- # terminate at closing angle bracket(s)
- my $pt = $1;
- $pt .= $2 if !$3 && $lev == 1;
- $res .= $lev == 1 ? pure_text( $pt ) : inIS_text( $pt );
- return $res if !$3 && $lev > 1;
- if( $3 ){
- $res .= process_text1( $lev, $rstr, $3, closing $4 );
- }
- }
- if( $lev == 1 ){
- $res .= pure_text( $$rstr );
- } else {
- warn "$0: $podfile: undelimited $func<> in paragraph $paragraph.";
- }
- }
- return $res;
-}
-
-#
-# go_ahead: extract text of an IS (can be nested)
-#
-sub go_ahead($$$){
- my( $rstr, $func, $closing ) = @_;
- my $res = '';
- my @closing = ($closing);
- while( $$rstr =~
- s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|@{[pattern $closing[0]]})//s ){
- $res .= $1;
- unless( $3 ){
- shift @closing;
- return $res unless @closing;
- } else {
- unshift @closing, closing $4;
- }
- $res .= $2;
- }
- warn "$0: $podfile: undelimited $func<> in paragraph $paragraph.";
- return $res;
-}
-
-#
-# emit_C - output result of C<text>
-# $text is the depod-ed text
-#
-sub emit_C($;$$){
- my( $text, $nocode, $args ) = @_;
- $args = '' unless defined $args;
- my $res;
- my( $url, $fid ) = coderef( undef(), $text );
-
- # need HTML-safe text
- my $linktext = html_escape( "$text$args" );
-
- if( defined( $url ) &&
- (!defined( $EmittedItem ) || $EmittedItem ne $fid ) ){
- $res = "<A HREF=\"$url\"><CODE>$linktext</CODE></A>";
- } elsif( 0 && $nocode ){
- $res = $linktext;
- } else {
- $res = "<CODE>$linktext</CODE>";
- }
- return $res;
-}
-
-#
-# html_escape: make text safe for HTML
-#
-sub html_escape {
- my $rest = $_[0];
- $rest =~ s/&/&amp;/g;
- $rest =~ s/</&lt;/g;
- $rest =~ s/>/&gt;/g;
- $rest =~ s/"/&quot;/g;
- return $rest;
-}
-
-
-#
-# dosify - convert filenames to 8.3
-#
-sub dosify {
- my($str) = @_;
- return lc($str) if $^O eq 'VMS'; # VMS just needs casing
- if ($Is83) {
- $str = lc $str;
- $str =~ s/(\.\w+)/substr ($1,0,4)/ge;
- $str =~ s/(\w+)/substr ($1,0,8)/ge;
- }
- return $str;
-}
-
-#
-# page_sect - make an URL from the text of a L<>
-#
-sub page_sect($$) {
- my( $page, $section ) = @_;
- my( $linktext, $page83, $link); # work strings
-
- # check if we know that this is a section in this page
- if (!defined $pages{$page} && defined $sections{$page}) {
- $section = $page;
- $page = "";
- ### print STDERR "reset page='', section=$section\n";
- }
-
- $page83=dosify($page);
- $page=$page83 if (defined $pages{$page83});
- if ($page eq "") {
- $link = "#" . htmlify( $section );
- } elsif ( $page =~ /::/ ) {
- $page =~ s,::,/,g;
- # Search page cache for an entry keyed under the html page name,
- # then look to see what directory that page might be in. NOTE:
- # this will only find one page. A better solution might be to produce
- # an intermediate page that is an index to all such pages.
- my $page_name = $page ;
- $page_name =~ s,^.*/,,s ;
- if ( defined( $pages{ $page_name } ) &&
- $pages{ $page_name } =~ /([^:]*$page)\.(?:pod|pm):/
- ) {
- $page = $1 ;
- }
- else {
- # NOTE: This branch assumes that all A::B pages are located in
- # $htmlroot/A/B.html . This is often incorrect, since they are
- # often in $htmlroot/lib/A/B.html or such like. Perhaps we could
- # analyze the contents of %pages and figure out where any
- # cousins of A::B are, then assume that. So, if A::B isn't found,
- # but A::C is found in lib/A/C.pm, then A::B is assumed to be in
- # lib/A/B.pm. This is also limited, but it's an improvement.
- # Maybe a hints file so that the links point to the correct places
- # nonetheless?
-
- }
- $link = "$htmlroot/$page.html";
- $link .= "#" . htmlify( $section ) if ($section);
- } elsif (!defined $pages{$page}) {
- $link = "";
- } else {
- $section = htmlify( $section ) if $section ne "";
- ### print STDERR "...section=$section\n";
-
- # if there is a directory by the name of the page, then assume that an
- # appropriate section will exist in the subdirectory
-# if ($section ne "" && $pages{$page} =~ /([^:]*[^(\.pod|\.pm)]):/) {
- if ($section ne "" && $pages{$page} =~ /([^:]*(?<!\.pod)(?<!\.pm)):/) {
- $link = "$htmlroot/$1/$section.html";
- ### print STDERR "...link=$link\n";
-
- # since there is no directory by the name of the page, the section will
- # have to exist within a .html of the same name. thus, make sure there
- # is a .pod or .pm that might become that .html
- } else {
- $section = "#$section" if $section;
- ### print STDERR "...section=$section\n";
-
- # check if there is a .pod with the page name
- if ($pages{$page} =~ /([^:]*)\.pod:/) {
- $link = "$htmlroot/$1.html$section";
- } elsif ($pages{$page} =~ /([^:]*)\.pm:/) {
- $link = "$htmlroot/$1.html$section";
- } else {
- $link = "";
- }
- }
- }
-
- if ($link) {
- # Here, we take advantage of the knowledge that $htmlfileurl ne ''
- # implies $htmlroot eq ''. This means that the link in question
- # needs a prefix of $htmldir if it begins with '/'. The test for
- # the initial '/' is done to avoid '#'-only links, and to allow
- # for other kinds of links, like file:, ftp:, etc.
- my $url ;
- if ( $htmlfileurl ne '' ) {
- $link = "$htmldir$link" if $link =~ m{^/}s;
- $url = relativize_url( $link, $htmlfileurl );
-# print( " b: [$link,$htmlfileurl,$url]\n" );
- }
- else {
- $url = $link ;
- }
- return $url;
-
- } else {
- return undef();
- }
-}
-
-#
-# relativize_url - convert an absolute URL to one relative to a base URL.
-# Assumes both end in a filename.
-#
-sub relativize_url {
- my ($dest,$source) = @_ ;
-
- my ($dest_volume,$dest_directory,$dest_file) =
- File::Spec::Unix->splitpath( $dest ) ;
- $dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' ) ;
-
- my ($source_volume,$source_directory,$source_file) =
- File::Spec::Unix->splitpath( $source ) ;
- $source = File::Spec::Unix->catpath( $source_volume, $source_directory, '' ) ;
-
- my $rel_path = '' ;
- if ( $dest ne '' ) {
- $rel_path = File::Spec::Unix->abs2rel( $dest, $source ) ;
- }
-
- if ( $rel_path ne '' &&
- substr( $rel_path, -1 ) ne '/' &&
- substr( $dest_file, 0, 1 ) ne '#'
- ) {
- $rel_path .= "/$dest_file" ;
- }
- else {
- $rel_path .= "$dest_file" ;
- }
-
- return $rel_path ;
-}
-
-
-#
-# coderef - make URL from the text of a C<>
-#
-sub coderef($$){
- my( $page, $item ) = @_;
- my( $url );
-
- my $fid = fragment_id( $item );
- if( defined( $page ) ){
- # we have been given a $page...
- $page =~ s{::}{/}g;
-
- # Do we take it? Item could be a section!
- my $base = $items{$fid} || "";
- $base =~ s{[^/]*/}{};
- if( $base ne "$page.html" ){
- ### print STDERR "coderef( $page, $item ): items{$fid} = $items{$fid} = $base => discard page!\n";
- $page = undef();
- }
-
- } else {
- # no page - local items precede cached items
- if( defined( $fid ) ){
- if( exists $local_items{$fid} ){
- $page = $local_items{$fid};
- } else {
- $page = $items{$fid};
- }
- }
- }
-
- # if there was a pod file that we found earlier with an appropriate
- # =item directive, then create a link to that page.
- if( defined $page ){
- if( $page ){
- if( exists $pages{$page} and $pages{$page} =~ /([^:.]*)\.[^:]*:/){
- $page = $1 . '.html';
- }
- my $link = "$htmlroot/$page#item_$fid";
-
- # Here, we take advantage of the knowledge that $htmlfileurl
- # ne '' implies $htmlroot eq ''.
- if ( $htmlfileurl ne '' ) {
- $link = "$htmldir$link" ;
- $url = relativize_url( $link, $htmlfileurl ) ;
- } else {
- $url = $link ;
- }
- } else {
- $url = "#item_" . $fid;
- }
-
- confess "url has space: $url" if $url =~ /"[^"]*\s[^"]*"/;
- }
- return( $url, $fid );
-}
-
-
-
-#
-# Adapted from Nick Ing-Simmons' PodToHtml package.
-sub relative_url {
- my $source_file = shift ;
- my $destination_file = shift;
-
- my $source = URI::file->new_abs($source_file);
- my $uo = URI::file->new($destination_file,$source)->abs;
- return $uo->rel->as_string;
-}
-
-
-#
-# finish_list - finish off any pending HTML lists. this should be called
-# after the entire pod file has been read and converted.
-#
-sub finish_list {
- while ($listlevel > 0) {
- print HTML "</DL>\n";
- $listlevel--;
- }
-}
-
-#
-# htmlify - converts a pod section specification to a suitable section
-# specification for HTML. Note that we keep spaces and special characters
-# except ", ? (Netscape problem) and the hyphen (writer's problem...).
-#
-sub htmlify {
- my( $heading) = @_;
- $heading =~ s/(\s+)/ /g;
- $heading =~ s/\s+\Z//;
- $heading =~ s/\A\s+//;
- # The hyphen is a disgrace to the English language.
- $heading =~ s/[-"?]//g;
- $heading = lc( $heading );
- return $heading;
-}
-
-#
-# depod - convert text by eliminating all interior sequences
-# Note: can be called with copy or modify semantics
-#
-my %E2c;
-$E2c{lt} = '<';
-$E2c{gt} = '>';
-$E2c{sol} = '/';
-$E2c{verbar} = '|';
-$E2c{amp} = '&'; # in Tk's pods
-
-sub depod1($;$$);
-
-sub depod($){
- my $string;
- if( ref( $_[0] ) ){
- $string = ${$_[0]};
- ${$_[0]} = depod1( \$string );
- } else {
- $string = $_[0];
- depod1( \$string );
- }
-}
-
-sub depod1($;$$){
- my( $rstr, $func, $closing ) = @_;
- my $res = '';
- return $res unless defined $$rstr;
- if( ! defined( $func ) ){
- # skip to next begin of an interior sequence
- while( $$rstr =~ s/\A(.*?)([BCEFILSXZ])<(<+[^\S\n]+)?// ){
- # recurse into its text
- $res .= $1 . depod1( $rstr, $2, closing $3);
- }
- $res .= $$rstr;
- } elsif( $func eq 'E' ){
- # E<x> - convert to character
- $$rstr =~ s/^([^>]*)>//;
- $res .= $E2c{$1} || "";
- } elsif( $func eq 'X' ){
- # X<> - ignore
- $$rstr =~ s/^[^>]*>//;
- } elsif( $func eq 'Z' ){
- # Z<> - empty
- $$rstr =~ s/^>//;
- } else {
- # all others: either recurse into new function or
- # terminate at closing angle bracket
- my $term = pattern $closing;
- while( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)// ){
- $res .= $1;
- last unless $3;
- $res .= depod1( $rstr, $3, closing $4 );
- }
- ## If we're here and $2 ne '>': undelimited interior sequence.
- ## Ignored, as this is called without proper indication of where we are.
- ## Rely on process_text to produce diagnostics.
- }
- return $res;
-}
-
-#
-# fragment_id - construct a fragment identifier from:
-# a) =item text
-# b) contents of C<...>
-#
-my @hc;
-sub fragment_id {
- my $text = shift();
- $text =~ s/\s+\Z//s;
- if( $text ){
- # a method or function?
- return $1 if $text =~ /(\w+)\s*\(/;
- return $1 if $text =~ /->\s*(\w+)\s*\(?/;
-
- # a variable name?
- return $1 if $text =~ /^([$@%*]\S+)/;
-
- # some pattern matching operator?
- return $1 if $text =~ m|^(\w+/).*/\w*$|;
-
- # fancy stuff... like "do { }"
- return $1 if $text =~ m|^(\w+)\s*{.*}$|;
-
- # honour the perlfunc manpage: func [PAR[,[ ]PAR]...]
- # and some funnies with ... Module ...
- return $1 if $text =~ m{^([a-z\d]+)(\s+[A-Z\d,/& ]+)?$};
- return $1 if $text =~ m{^([a-z\d]+)\s+Module(\s+[A-Z\d,/& ]+)?$};
-
- # text? normalize!
- $text =~ s/\s+/_/sg;
- $text =~ s{(\W)}{
- defined( $hc[ord($1)] ) ? $hc[ord($1)]
- : ( $hc[ord($1)] = sprintf( "%%%02X", ord($1) ) ) }gxe;
- $text = substr( $text, 0, 50 );
- } else {
- return undef();
- }
-}
-
-#
-# make_URL_href - generate HTML href from URL
-# Special treatment for CGI queries.
-#
-sub make_URL_href($){
- my( $url ) = @_;
- if( $url !~
- s{^(http:[-\w/#~:.+=&%@!]+)(\?.*)$}{<A HREF="$1$2">$1</A>}i ){
- $url = "<A HREF=\"$url\">$url</A>";
- }
- return $url;
-}
-
-1;
diff --git a/contrib/perl5/lib/Pod/InputObjects.pm b/contrib/perl5/lib/Pod/InputObjects.pm
deleted file mode 100644
index 352373b..0000000
--- a/contrib/perl5/lib/Pod/InputObjects.pm
+++ /dev/null
@@ -1,933 +0,0 @@
-#############################################################################
-# Pod/InputObjects.pm -- package which defines objects for input streams
-# and paragraphs and commands when parsing POD docs.
-#
-# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
-# This file is part of "PodParser". PodParser is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::InputObjects;
-
-use vars qw($VERSION);
-$VERSION = 1.13; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-
-#############################################################################
-
-=head1 NAME
-
-Pod::InputObjects - objects representing POD input paragraphs, commands, etc.
-
-=head1 SYNOPSIS
-
- use Pod::InputObjects;
-
-=head1 REQUIRES
-
-perl5.004, Carp
-
-=head1 EXPORTS
-
-Nothing.
-
-=head1 DESCRIPTION
-
-This module defines some basic input objects used by B<Pod::Parser> when
-reading and parsing POD text from an input source. The following objects
-are defined:
-
-=over 4
-
-=begin __PRIVATE__
-
-=item package B<Pod::InputSource>
-
-An object corresponding to a source of POD input text. It is mostly a
-wrapper around a filehandle or C<IO::Handle>-type object (or anything
-that implements the C<getline()> method) which keeps track of some
-additional information relevant to the parsing of PODs.
-
-=end __PRIVATE__
-
-=item package B<Pod::Paragraph>
-
-An object corresponding to a paragraph of POD input text. It may be a
-plain paragraph, a verbatim paragraph, or a command paragraph (see
-L<perlpod>).
-
-=item package B<Pod::InteriorSequence>
-
-An object corresponding to an interior sequence command from the POD
-input text (see L<perlpod>).
-
-=item package B<Pod::ParseTree>
-
-An object corresponding to a tree of parsed POD text. Each "node" in
-a parse-tree (or I<ptree>) is either a text-string or a reference to
-a B<Pod::InteriorSequence> object. The nodes appear in the parse-tree
-in the order in which they were parsed from left-to-right.
-
-=back
-
-Each of these input objects are described in further detail in the
-sections which follow.
-
-=cut
-
-#############################################################################
-
-use strict;
-#use diagnostics;
-#use Carp;
-
-#############################################################################
-
-package Pod::InputSource;
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head1 B<Pod::InputSource>
-
-This object corresponds to an input source or stream of POD
-documentation. When parsing PODs, it is necessary to associate and store
-certain context information with each input source. All of this
-information is kept together with the stream itself in one of these
-C<Pod::InputSource> objects. Each such object is merely a wrapper around
-an C<IO::Handle> object of some kind (or at least something that
-implements the C<getline()> method). They have the following
-methods/attributes:
-
-=end __PRIVATE__
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head2 B<new()>
-
- my $pod_input1 = Pod::InputSource->new(-handle => $filehandle);
- my $pod_input2 = new Pod::InputSource(-handle => $filehandle,
- -name => $name);
- my $pod_input3 = new Pod::InputSource(-handle => \*STDIN);
- my $pod_input4 = Pod::InputSource->new(-handle => \*STDIN,
- -name => "(STDIN)");
-
-This is a class method that constructs a C<Pod::InputSource> object and
-returns a reference to the new input source object. It takes one or more
-keyword arguments in the form of a hash. The keyword C<-handle> is
-required and designates the corresponding input handle. The keyword
-C<-name> is optional and specifies the name associated with the input
-handle (typically a file name).
-
-=end __PRIVATE__
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- ## Any remaining arguments are treated as initial values for the
- ## hash that is used to represent this object. Note that we default
- ## certain values by specifying them *before* the arguments passed.
- ## If they are in the argument list, they will override the defaults.
- my $self = { -name => '(unknown)',
- -handle => undef,
- -was_cutting => 0,
- @_ };
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head2 B<name()>
-
- my $filename = $pod_input->name();
- $pod_input->name($new_filename_to_use);
-
-This method gets/sets the name of the input source (usually a filename).
-If no argument is given, it returns a string containing the name of
-the input source; otherwise it sets the name of the input source to the
-contents of the given argument.
-
-=end __PRIVATE__
-
-=cut
-
-sub name {
- (@_ > 1) and $_[0]->{'-name'} = $_[1];
- return $_[0]->{'-name'};
-}
-
-## allow 'filename' as an alias for 'name'
-*filename = \&name;
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head2 B<handle()>
-
- my $handle = $pod_input->handle();
-
-Returns a reference to the handle object from which input is read (the
-one used to contructed this input source object).
-
-=end __PRIVATE__
-
-=cut
-
-sub handle {
- return $_[0]->{'-handle'};
-}
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head2 B<was_cutting()>
-
- print "Yes.\n" if ($pod_input->was_cutting());
-
-The value of the C<cutting> state (that the B<cutting()> method would
-have returned) immediately before any input was read from this input
-stream. After all input from this stream has been read, the C<cutting>
-state is restored to this value.
-
-=end __PRIVATE__
-
-=cut
-
-sub was_cutting {
- (@_ > 1) and $_[0]->{-was_cutting} = $_[1];
- return $_[0]->{-was_cutting};
-}
-
-##---------------------------------------------------------------------------
-
-#############################################################################
-
-package Pod::Paragraph;
-
-##---------------------------------------------------------------------------
-
-=head1 B<Pod::Paragraph>
-
-An object representing a paragraph of POD input text.
-It has the following methods/attributes:
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::Paragraph-E<gt>B<new()>
-
- my $pod_para1 = Pod::Paragraph->new(-text => $text);
- my $pod_para2 = Pod::Paragraph->new(-name => $cmd,
- -text => $text);
- my $pod_para3 = new Pod::Paragraph(-text => $text);
- my $pod_para4 = new Pod::Paragraph(-name => $cmd,
- -text => $text);
- my $pod_para5 = Pod::Paragraph->new(-name => $cmd,
- -text => $text,
- -file => $filename,
- -line => $line_number);
-
-This is a class method that constructs a C<Pod::Paragraph> object and
-returns a reference to the new paragraph object. It may be given one or
-two keyword arguments. The C<-text> keyword indicates the corresponding
-text of the POD paragraph. The C<-name> keyword indicates the name of
-the corresponding POD command, such as C<head1> or C<item> (it should
-I<not> contain the C<=> prefix); this is needed only if the POD
-paragraph corresponds to a command paragraph. The C<-file> and C<-line>
-keywords indicate the filename and line number corresponding to the
-beginning of the paragraph
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- ## Any remaining arguments are treated as initial values for the
- ## hash that is used to represent this object. Note that we default
- ## certain values by specifying them *before* the arguments passed.
- ## If they are in the argument list, they will override the defaults.
- my $self = {
- -name => undef,
- -text => (@_ == 1) ? $_[0] : undef,
- -file => '<unknown-file>',
- -line => 0,
- -prefix => '=',
- -separator => ' ',
- -ptree => [],
- @_
- };
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<cmd_name()>
-
- my $para_cmd = $pod_para->cmd_name();
-
-If this paragraph is a command paragraph, then this method will return
-the name of the command (I<without> any leading C<=> prefix).
-
-=cut
-
-sub cmd_name {
- (@_ > 1) and $_[0]->{'-name'} = $_[1];
- return $_[0]->{'-name'};
-}
-
-## let name() be an alias for cmd_name()
-*name = \&cmd_name;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<text()>
-
- my $para_text = $pod_para->text();
-
-This method will return the corresponding text of the paragraph.
-
-=cut
-
-sub text {
- (@_ > 1) and $_[0]->{'-text'} = $_[1];
- return $_[0]->{'-text'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<raw_text()>
-
- my $raw_pod_para = $pod_para->raw_text();
-
-This method will return the I<raw> text of the POD paragraph, exactly
-as it appeared in the input.
-
-=cut
-
-sub raw_text {
- return $_[0]->{'-text'} unless (defined $_[0]->{'-name'});
- return $_[0]->{'-prefix'} . $_[0]->{'-name'} .
- $_[0]->{'-separator'} . $_[0]->{'-text'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<cmd_prefix()>
-
- my $prefix = $pod_para->cmd_prefix();
-
-If this paragraph is a command paragraph, then this method will return
-the prefix used to denote the command (which should be the string "="
-or "==").
-
-=cut
-
-sub cmd_prefix {
- return $_[0]->{'-prefix'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<cmd_separator()>
-
- my $separator = $pod_para->cmd_separator();
-
-If this paragraph is a command paragraph, then this method will return
-the text used to separate the command name from the rest of the
-paragraph (if any).
-
-=cut
-
-sub cmd_separator {
- return $_[0]->{'-separator'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<parse_tree()>
-
- my $ptree = $pod_parser->parse_text( $pod_para->text() );
- $pod_para->parse_tree( $ptree );
- $ptree = $pod_para->parse_tree();
-
-This method will get/set the corresponding parse-tree of the paragraph's text.
-
-=cut
-
-sub parse_tree {
- (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
- return $_[0]->{'-ptree'};
-}
-
-## let ptree() be an alias for parse_tree()
-*ptree = \&parse_tree;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<file_line()>
-
- my ($filename, $line_number) = $pod_para->file_line();
- my $position = $pod_para->file_line();
-
-Returns the current filename and line number for the paragraph
-object. If called in a list context, it returns a list of two
-elements: first the filename, then the line number. If called in
-a scalar context, it returns a string containing the filename, followed
-by a colon (':'), followed by the line number.
-
-=cut
-
-sub file_line {
- my @loc = ($_[0]->{'-file'} || '<unknown-file>',
- $_[0]->{'-line'} || 0);
- return (wantarray) ? @loc : join(':', @loc);
-}
-
-##---------------------------------------------------------------------------
-
-#############################################################################
-
-package Pod::InteriorSequence;
-
-##---------------------------------------------------------------------------
-
-=head1 B<Pod::InteriorSequence>
-
-An object representing a POD interior sequence command.
-It has the following methods/attributes:
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::InteriorSequence-E<gt>B<new()>
-
- my $pod_seq1 = Pod::InteriorSequence->new(-name => $cmd
- -ldelim => $delimiter);
- my $pod_seq2 = new Pod::InteriorSequence(-name => $cmd,
- -ldelim => $delimiter);
- my $pod_seq3 = new Pod::InteriorSequence(-name => $cmd,
- -ldelim => $delimiter,
- -file => $filename,
- -line => $line_number);
-
- my $pod_seq4 = new Pod::InteriorSequence(-name => $cmd, $ptree);
- my $pod_seq5 = new Pod::InteriorSequence($cmd, $ptree);
-
-This is a class method that constructs a C<Pod::InteriorSequence> object
-and returns a reference to the new interior sequence object. It should
-be given two keyword arguments. The C<-ldelim> keyword indicates the
-corresponding left-delimiter of the interior sequence (e.g. 'E<lt>').
-The C<-name> keyword indicates the name of the corresponding interior
-sequence command, such as C<I> or C<B> or C<C>. The C<-file> and
-C<-line> keywords indicate the filename and line number corresponding
-to the beginning of the interior sequence. If the C<$ptree> argument is
-given, it must be the last argument, and it must be either string, or
-else an array-ref suitable for passing to B<Pod::ParseTree::new> (or
-it may be a reference to an Pod::ParseTree object).
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- ## See if first argument has no keyword
- if (((@_ <= 2) or (@_ % 2)) and $_[0] !~ /^-\w/) {
- ## Yup - need an implicit '-name' before first parameter
- unshift @_, '-name';
- }
-
- ## See if odd number of args
- if ((@_ % 2) != 0) {
- ## Yup - need an implicit '-ptree' before the last parameter
- splice @_, $#_, 0, '-ptree';
- }
-
- ## Any remaining arguments are treated as initial values for the
- ## hash that is used to represent this object. Note that we default
- ## certain values by specifying them *before* the arguments passed.
- ## If they are in the argument list, they will override the defaults.
- my $self = {
- -name => (@_ == 1) ? $_[0] : undef,
- -file => '<unknown-file>',
- -line => 0,
- -ldelim => '<',
- -rdelim => '>',
- @_
- };
-
- ## Initialize contents if they havent been already
- my $ptree = $self->{'-ptree'} || new Pod::ParseTree();
- if ( ref $ptree =~ /^(ARRAY)?$/ ) {
- ## We have an array-ref, or a normal scalar. Pass it as an
- ## an argument to the ptree-constructor
- $ptree = new Pod::ParseTree($1 ? [$ptree] : $ptree);
- }
- $self->{'-ptree'} = $ptree;
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<cmd_name()>
-
- my $seq_cmd = $pod_seq->cmd_name();
-
-The name of the interior sequence command.
-
-=cut
-
-sub cmd_name {
- (@_ > 1) and $_[0]->{'-name'} = $_[1];
- return $_[0]->{'-name'};
-}
-
-## let name() be an alias for cmd_name()
-*name = \&cmd_name;
-
-##---------------------------------------------------------------------------
-
-## Private subroutine to set the parent pointer of all the given
-## children that are interior-sequences to be $self
-
-sub _set_child2parent_links {
- my ($self, @children) = @_;
- ## Make sure any sequences know who their parent is
- for (@children) {
- next unless (length and ref and ref ne 'SCALAR');
- if (UNIVERSAL::isa($_, 'Pod::InteriorSequence') or
- UNIVERSAL::can($_, 'nested'))
- {
- $_->nested($self);
- }
- }
-}
-
-## Private subroutine to unset child->parent links
-
-sub _unset_child2parent_links {
- my $self = shift;
- $self->{'-parent_sequence'} = undef;
- my $ptree = $self->{'-ptree'};
- for (@$ptree) {
- next unless (length and ref and ref ne 'SCALAR');
- $_->_unset_child2parent_links()
- if UNIVERSAL::isa($_, 'Pod::InteriorSequence');
- }
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<prepend()>
-
- $pod_seq->prepend($text);
- $pod_seq1->prepend($pod_seq2);
-
-Prepends the given string or parse-tree or sequence object to the parse-tree
-of this interior sequence.
-
-=cut
-
-sub prepend {
- my $self = shift;
- $self->{'-ptree'}->prepend(@_);
- _set_child2parent_links($self, @_);
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<append()>
-
- $pod_seq->append($text);
- $pod_seq1->append($pod_seq2);
-
-Appends the given string or parse-tree or sequence object to the parse-tree
-of this interior sequence.
-
-=cut
-
-sub append {
- my $self = shift;
- $self->{'-ptree'}->append(@_);
- _set_child2parent_links($self, @_);
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<nested()>
-
- $outer_seq = $pod_seq->nested || print "not nested";
-
-If this interior sequence is nested inside of another interior
-sequence, then the outer/parent sequence that contains it is
-returned. Otherwise C<undef> is returned.
-
-=cut
-
-sub nested {
- my $self = shift;
- (@_ == 1) and $self->{'-parent_sequence'} = shift;
- return $self->{'-parent_sequence'} || undef;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<raw_text()>
-
- my $seq_raw_text = $pod_seq->raw_text();
-
-This method will return the I<raw> text of the POD interior sequence,
-exactly as it appeared in the input.
-
-=cut
-
-sub raw_text {
- my $self = shift;
- my $text = $self->{'-name'} . $self->{'-ldelim'};
- for ( $self->{'-ptree'}->children ) {
- $text .= (ref $_) ? $_->raw_text : $_;
- }
- $text .= $self->{'-rdelim'};
- return $text;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<left_delimiter()>
-
- my $ldelim = $pod_seq->left_delimiter();
-
-The leftmost delimiter beginning the argument text to the interior
-sequence (should be "<").
-
-=cut
-
-sub left_delimiter {
- (@_ > 1) and $_[0]->{'-ldelim'} = $_[1];
- return $_[0]->{'-ldelim'};
-}
-
-## let ldelim() be an alias for left_delimiter()
-*ldelim = \&left_delimiter;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<right_delimiter()>
-
-The rightmost delimiter beginning the argument text to the interior
-sequence (should be ">").
-
-=cut
-
-sub right_delimiter {
- (@_ > 1) and $_[0]->{'-rdelim'} = $_[1];
- return $_[0]->{'-rdelim'};
-}
-
-## let rdelim() be an alias for right_delimiter()
-*rdelim = \&right_delimiter;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<parse_tree()>
-
- my $ptree = $pod_parser->parse_text($paragraph_text);
- $pod_seq->parse_tree( $ptree );
- $ptree = $pod_seq->parse_tree();
-
-This method will get/set the corresponding parse-tree of the interior
-sequence's text.
-
-=cut
-
-sub parse_tree {
- (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
- return $_[0]->{'-ptree'};
-}
-
-## let ptree() be an alias for parse_tree()
-*ptree = \&parse_tree;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<file_line()>
-
- my ($filename, $line_number) = $pod_seq->file_line();
- my $position = $pod_seq->file_line();
-
-Returns the current filename and line number for the interior sequence
-object. If called in a list context, it returns a list of two
-elements: first the filename, then the line number. If called in
-a scalar context, it returns a string containing the filename, followed
-by a colon (':'), followed by the line number.
-
-=cut
-
-sub file_line {
- my @loc = ($_[0]->{'-file'} || '<unknown-file>',
- $_[0]->{'-line'} || 0);
- return (wantarray) ? @loc : join(':', @loc);
-}
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::InteriorSequence::B<DESTROY()>
-
-This method performs any necessary cleanup for the interior-sequence.
-If you override this method then it is B<imperative> that you invoke
-the parent method from within your own method, otherwise
-I<interior-sequence storage will not be reclaimed upon destruction!>
-
-=cut
-
-sub DESTROY {
- ## We need to get rid of all child->parent pointers throughout the
- ## tree so their reference counts will go to zero and they can be
- ## garbage-collected
- _unset_child2parent_links(@_);
-}
-
-##---------------------------------------------------------------------------
-
-#############################################################################
-
-package Pod::ParseTree;
-
-##---------------------------------------------------------------------------
-
-=head1 B<Pod::ParseTree>
-
-This object corresponds to a tree of parsed POD text. As POD text is
-scanned from left to right, it is parsed into an ordered list of
-text-strings and B<Pod::InteriorSequence> objects (in order of
-appearance). A B<Pod::ParseTree> object corresponds to this list of
-strings and sequences. Each interior sequence in the parse-tree may
-itself contain a parse-tree (since interior sequences may be nested).
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::ParseTree-E<gt>B<new()>
-
- my $ptree1 = Pod::ParseTree->new;
- my $ptree2 = new Pod::ParseTree;
- my $ptree4 = Pod::ParseTree->new($array_ref);
- my $ptree3 = new Pod::ParseTree($array_ref);
-
-This is a class method that constructs a C<Pod::Parse_tree> object and
-returns a reference to the new parse-tree. If a single-argument is given,
-it must be a reference to an array, and is used to initialize the root
-(top) of the parse tree.
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- my $self = (@_ == 1 and ref $_[0]) ? $_[0] : [];
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<top()>
-
- my $top_node = $ptree->top();
- $ptree->top( $top_node );
- $ptree->top( @children );
-
-This method gets/sets the top node of the parse-tree. If no arguments are
-given, it returns the topmost node in the tree (the root), which is also
-a B<Pod::ParseTree>. If it is given a single argument that is a reference,
-then the reference is assumed to a parse-tree and becomes the new top node.
-Otherwise, if arguments are given, they are treated as the new list of
-children for the top node.
-
-=cut
-
-sub top {
- my $self = shift;
- if (@_ > 0) {
- @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_;
- }
- return $self;
-}
-
-## let parse_tree() & ptree() be aliases for the 'top' method
-*parse_tree = *ptree = \&top;
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<children()>
-
-This method gets/sets the children of the top node in the parse-tree.
-If no arguments are given, it returns the list (array) of children
-(each of which should be either a string or a B<Pod::InteriorSequence>.
-Otherwise, if arguments are given, they are treated as the new list of
-children for the top node.
-
-=cut
-
-sub children {
- my $self = shift;
- if (@_ > 0) {
- @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_;
- }
- return @{ $self };
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<prepend()>
-
-This method prepends the given text or parse-tree to the current parse-tree.
-If the first item on the parse-tree is text and the argument is also text,
-then the text is prepended to the first item (not added as a separate string).
-Otherwise the argument is added as a new string or parse-tree I<before>
-the current one.
-
-=cut
-
-use vars qw(@ptree); ## an alias used for performance reasons
-
-sub prepend {
- my $self = shift;
- local *ptree = $self;
- for (@_) {
- next unless length;
- if (@ptree and !(ref $ptree[0]) and !(ref $_)) {
- $ptree[0] = $_ . $ptree[0];
- }
- else {
- unshift @ptree, $_;
- }
- }
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<append()>
-
-This method appends the given text or parse-tree to the current parse-tree.
-If the last item on the parse-tree is text and the argument is also text,
-then the text is appended to the last item (not added as a separate string).
-Otherwise the argument is added as a new string or parse-tree I<after>
-the current one.
-
-=cut
-
-sub append {
- my $self = shift;
- local *ptree = $self;
- for (@_) {
- next unless length;
- if (@ptree and !(ref $ptree[-1]) and !(ref $_)) {
- $ptree[-1] .= $_;
- }
- else {
- push @ptree, $_;
- }
- }
-}
-
-=head2 $ptree-E<gt>B<raw_text()>
-
- my $ptree_raw_text = $ptree->raw_text();
-
-This method will return the I<raw> text of the POD parse-tree
-exactly as it appeared in the input.
-
-=cut
-
-sub raw_text {
- my $self = shift;
- my $text = "";
- for ( @$self ) {
- $text .= (ref $_) ? $_->raw_text : $_;
- }
- return $text;
-}
-
-##---------------------------------------------------------------------------
-
-## Private routines to set/unset child->parent links
-
-sub _unset_child2parent_links {
- my $self = shift;
- local *ptree = $self;
- for (@ptree) {
- next unless (length and ref and ref ne 'SCALAR');
- $_->_unset_child2parent_links()
- if UNIVERSAL::isa($_, 'Pod::InteriorSequence');
- }
-}
-
-sub _set_child2parent_links {
- ## nothing to do, Pod::ParseTrees cant have parent pointers
-}
-
-=head2 Pod::ParseTree::B<DESTROY()>
-
-This method performs any necessary cleanup for the parse-tree.
-If you override this method then it is B<imperative>
-that you invoke the parent method from within your own method,
-otherwise I<parse-tree storage will not be reclaimed upon destruction!>
-
-=cut
-
-sub DESTROY {
- ## We need to get rid of all child->parent pointers throughout the
- ## tree so their reference counts will go to zero and they can be
- ## garbage-collected
- _unset_child2parent_links(@_);
-}
-
-#############################################################################
-
-=head1 SEE ALSO
-
-See L<Pod::Parser>, L<Pod::Select>
-
-=head1 AUTHOR
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt>
-
-=cut
-
-1;
diff --git a/contrib/perl5/lib/Pod/LaTeX.pm b/contrib/perl5/lib/Pod/LaTeX.pm
deleted file mode 100644
index c909d21..0000000
--- a/contrib/perl5/lib/Pod/LaTeX.pm
+++ /dev/null
@@ -1,1591 +0,0 @@
-package Pod::LaTeX;
-
-# Copyright (C) 2000 by Tim Jenness <t.jenness@jach.hawaii.edu>
-# All Rights Reserved.
-
-=head1 NAME
-
-Pod::LaTeX - Convert Pod data to formatted Latex
-
-=head1 SYNOPSIS
-
- use Pod::LaTeX;
- my $parser = Pod::LaTeX->new ( );
-
- $parser->parse_from_filehandle;
-
- $parser->parse_from_file ('file.pod', 'file.tex');
-
-=head1 DESCRIPTION
-
-C<Pod::LaTeX> is a module to convert documentation in the Pod format
-into Latex. The L<B<pod2latex>|pod2latex> X<pod2latex> command uses
-this module for translation.
-
-C<Pod::LaTeX> is a derived class from L<Pod::Select|Pod::Select>.
-
-=cut
-
-
-use strict;
-require Pod::ParseUtils;
-use base qw/ Pod::Select /;
-
-# use Data::Dumper; # for debugging
-use Carp;
-
-use vars qw/ $VERSION %HTML_Escapes @LatexSections /;
-
-$VERSION = '0.53';
-
-# Definitions of =headN -> latex mapping
-@LatexSections = (qw/
- chapter
- section
- subsection
- subsubsection
- paragraph
- subparagraph
- /);
-
-# Standard escape sequences converted to Latex
-# Up to "yuml" these are taken from the original pod2latex
-# command written by Taro Kawagish (kawagish@imslab.co.jp)
-
-%HTML_Escapes = (
- 'amp' => '&', # ampersand
- 'lt' => '$<$', # ' left chevron, less-than
- 'gt' => '$>$', # ' right chevron, greater-than
- 'quot' => '"', # double quote
- 'sol' => '/',
- 'verbar' => '$|$',
-
- "Aacute" => "\\'{A}", # capital A, acute accent
- "aacute" => "\\'{a}", # small a, acute accent
- "Acirc" => "\\^{A}", # capital A, circumflex accent
- "acirc" => "\\^{a}", # small a, circumflex accent
- "AElig" => '\\AE', # capital AE diphthong (ligature)
- "aelig" => '\\ae', # small ae diphthong (ligature)
- "Agrave" => "\\`{A}", # capital A, grave accent
- "agrave" => "\\`{a}", # small a, grave accent
- "Aring" => '\\u{A}', # capital A, ring
- "aring" => '\\u{a}', # small a, ring
- "Atilde" => '\\~{A}', # capital A, tilde
- "atilde" => '\\~{a}', # small a, tilde
- "Auml" => '\\"{A}', # capital A, dieresis or umlaut mark
- "auml" => '\\"{a}', # small a, dieresis or umlaut mark
- "Ccedil" => '\\c{C}', # capital C, cedilla
- "ccedil" => '\\c{c}', # small c, cedilla
- "Eacute" => "\\'{E}", # capital E, acute accent
- "eacute" => "\\'{e}", # small e, acute accent
- "Ecirc" => "\\^{E}", # capital E, circumflex accent
- "ecirc" => "\\^{e}", # small e, circumflex accent
- "Egrave" => "\\`{E}", # capital E, grave accent
- "egrave" => "\\`{e}", # small e, grave accent
- "ETH" => '\\OE', # capital Eth, Icelandic
- "eth" => '\\oe', # small eth, Icelandic
- "Euml" => '\\"{E}', # capital E, dieresis or umlaut mark
- "euml" => '\\"{e}', # small e, dieresis or umlaut mark
- "Iacute" => "\\'{I}", # capital I, acute accent
- "iacute" => "\\'{i}", # small i, acute accent
- "Icirc" => "\\^{I}", # capital I, circumflex accent
- "icirc" => "\\^{i}", # small i, circumflex accent
- "Igrave" => "\\`{I}", # capital I, grave accent
- "igrave" => "\\`{i}", # small i, grave accent
- "Iuml" => '\\"{I}', # capital I, dieresis or umlaut mark
- "iuml" => '\\"{i}', # small i, dieresis or umlaut mark
- "Ntilde" => '\\~{N}', # capital N, tilde
- "ntilde" => '\\~{n}', # small n, tilde
- "Oacute" => "\\'{O}", # capital O, acute accent
- "oacute" => "\\'{o}", # small o, acute accent
- "Ocirc" => "\\^{O}", # capital O, circumflex accent
- "ocirc" => "\\^{o}", # small o, circumflex accent
- "Ograve" => "\\`{O}", # capital O, grave accent
- "ograve" => "\\`{o}", # small o, grave accent
- "Oslash" => "\\O", # capital O, slash
- "oslash" => "\\o", # small o, slash
- "Otilde" => "\\~{O}", # capital O, tilde
- "otilde" => "\\~{o}", # small o, tilde
- "Ouml" => '\\"{O}', # capital O, dieresis or umlaut mark
- "ouml" => '\\"{o}', # small o, dieresis or umlaut mark
- "szlig" => '\\ss{}', # small sharp s, German (sz ligature)
- "THORN" => '\\L', # capital THORN, Icelandic
- "thorn" => '\\l',, # small thorn, Icelandic
- "Uacute" => "\\'{U}", # capital U, acute accent
- "uacute" => "\\'{u}", # small u, acute accent
- "Ucirc" => "\\^{U}", # capital U, circumflex accent
- "ucirc" => "\\^{u}", # small u, circumflex accent
- "Ugrave" => "\\`{U}", # capital U, grave accent
- "ugrave" => "\\`{u}", # small u, grave accent
- "Uuml" => '\\"{U}', # capital U, dieresis or umlaut mark
- "uuml" => '\\"{u}', # small u, dieresis or umlaut mark
- "Yacute" => "\\'{Y}", # capital Y, acute accent
- "yacute" => "\\'{y}", # small y, acute accent
- "yuml" => '\\"{y}', # small y, dieresis or umlaut mark
-
- # Added by TimJ
-
- "iexcl" => '!`', # inverted exclamation mark
-# "cent" => ' ', # cent sign
- "pound" => '\pounds', # (UK) pound sign
-# "curren" => ' ', # currency sign
-# "yen" => ' ', # yen sign
-# "brvbar" => ' ', # broken vertical bar
- "sect" => '\S', # section sign
- "uml" => '\"{}', # diaresis
- "copy" => '\copyright', # Copyright symbol
-# "ordf" => ' ', # feminine ordinal indicator
- "laquo" => '$\ll$', # ' # left pointing double angle quotation mark
- "not" => '$\neg$', # ' # not sign
- "shy" => '-', # soft hyphen
-# "reg" => ' ', # registered trademark
- "macr" => '$^-$', # ' # macron, overline
- "deg" => '$^\circ$', # ' # degree sign
- "plusmn" => '$\pm$', # ' # plus-minus sign
- "sup2" => '$^2$', # ' # superscript 2
- "sup3" => '$^3$', # ' # superscript 3
- "acute" => "\\'{}", # acute accent
- "micro" => '$\mu$', # micro sign
- "para" => '\P', # pilcrow sign = paragraph sign
- "middot" => '$\cdot$', # middle dot = Georgian comma
- "cedil" => '\c{}', # cedilla
- "sup1" => '$^1$', # ' # superscript 1
-# "ordm" => ' ', # masculine ordinal indicator
- "raquo" => '$\gg$', # ' # right pointing double angle quotation mark
- "frac14" => '$\frac{1}{4}$', # ' # vulgar fraction one quarter
- "frac12" => '$\frac{1}{2}$', # ' # vulgar fraction one half
- "frac34" => '$\frac{3}{4}$', # ' # vulgar fraction three quarters
- "iquest" => "?'", # inverted question mark
- "times" => '$\times$', # ' # multiplication sign
- "divide" => '$\div$', # division sign
-
- # Greek letters using HTML codes
- "alpha" => '$\alpha$', # '
- "beta" => '$\beta$', # '
- "gamma" => '$\gamma$', # '
- "delta" => '$\delta$', # '
- "epsilon"=> '$\epsilon$', # '
- "zeta" => '$\zeta$', # '
- "eta" => '$\eta$', # '
- "theta" => '$\theta$', # '
- "iota" => '$\iota$', # '
- "kappa" => '$\kappa$', # '
- "lambda" => '$\lambda$', # '
- "mu" => '$\mu$', # '
- "nu" => '$\nu$', # '
- "xi" => '$\xi$', # '
- "omicron"=> '$o$', # '
- "pi" => '$\pi$', # '
- "rho" => '$\rho$', # '
- "sigma" => '$\sigma$', # '
- "tau" => '$\tau$', # '
- "upsilon"=> '$\upsilon$', # '
- "phi" => '$\phi$', # '
- "chi" => '$\chi$', # '
- "psi" => '$\psi$', # '
- "omega" => '$\omega$', # '
-
- "Alpha" => '$A$', # '
- "Beta" => '$B$', # '
- "Gamma" => '$\Gamma$', # '
- "Delta" => '$\Delta$', # '
- "Epsilon"=> '$E$', # '
- "Zeta" => '$Z$', # '
- "Eta" => '$H$', # '
- "Theta" => '$\Theta$', # '
- "Iota" => '$I$', # '
- "Kappa" => '$K$', # '
- "Lambda" => '$\Lambda$', # '
- "Mu" => '$M$', # '
- "Nu" => '$N$', # '
- "Xi" => '$\Xi$', # '
- "Omicron"=> '$O$', # '
- "Pi" => '$\Pi$', # '
- "Rho" => '$R$', # '
- "Sigma" => '$\Sigma$', # '
- "Tau" => '$T$', # '
- "Upsilon"=> '$\Upsilon$', # '
- "Phi" => '$\Phi$', # '
- "Chi" => '$X$', # '
- "Psi" => '$\Psi$', # '
- "Omega" => '$\Omega$', # '
-
-
-);
-
-
-=head1 OBJECT METHODS
-
-The following methods are provided in this module. Methods inherited
-from C<Pod::Select> are not described in the public interface.
-
-=over 4
-
-=begin __PRIVATE__
-
-=item C<initialize>
-
-Initialise the object. This method is subclassed from C<Pod::Parser>.
-The base class method is invoked. This method defines the default
-behaviour of the object unless overridden by supplying arguments to
-the constructor.
-
-Internal settings are defaulted as well as the public instance data.
-Internal hash values are accessed directly (rather than through
-a method) and start with an underscore.
-
-This method should not be invoked by the user directly.
-
-=end __PRIVATE__
-
-=cut
-
-
-
-# - An array for nested lists
-
-# Arguments have already been read by this point
-
-sub initialize {
- my $self = shift;
-
- # print Dumper($self);
-
- # Internals
- $self->{_Lists} = []; # For nested lists
- $self->{_suppress_all_para} = 0; # For =begin blocks
- $self->{_suppress_next_para} = 0; # For =for blocks
- $self->{_dont_modify_any_para}=0; # For =begin blocks
- $self->{_dont_modify_next_para}=0; # For =for blocks
- $self->{_CURRENT_HEAD1} = ''; # Name of current HEAD1 section
-
- # Options - only initialise if not already set
-
- # Cause the '=head1 NAME' field to be treated specially
- # The contents of the NAME paragraph will be converted
- # to a section title. All subsequent =head1 will be converted
- # to =head2 and down. Will not affect =head1's prior to NAME
- # Assumes: 'Module - purpose' format
- # Also creates a purpose field
- # The name is used for Labeling of the subsequent subsections
- $self->{ReplaceNAMEwithSection} = 0
- unless exists $self->{ReplaceNAMEwithSection};
- $self->{AddPreamble} = 1 # make full latex document
- unless exists $self->{AddPreamble};
- $self->{StartWithNewPage} = 0 # Start new page for pod section
- unless exists $self->{StartWithNewPage};
- $self->{TableOfContents} = 0 # Add table of contents
- unless exists $self->{TableOfContents}; # only relevent if AddPreamble=1
- $self->{AddPostamble} = 1 # Add closing latex code at end
- unless exists $self->{AddPostamble}; # effectively end{document} and index
- $self->{MakeIndex} = 1 # Add index (only relevant AddPostamble
- unless exists $self->{MakeIndex}; # and AddPreamble)
-
- $self->{UniqueLabels} = 1 # Use label unique for each pod
- unless exists $self->{UniqueLabels}; # either based on the filename
- # or supplied
-
- # Control the level of =head1. default is \section
- #
- $self->{Head1Level} = 1 # Offset in latex sections
- unless exists $self->{Head1Level}; # 0 is chapter, 2 is subsection
-
- # Control at which level numbering of sections is turned off
- # ie subsection becomes subsection*
- # The numbering is relative to the latex sectioning commands
- # and is independent of Pod heading level
- # default is to number \section but not \subsection
- $self->{LevelNoNum} = 2
- unless exists $self->{LevelNoNum};
-
- # Label to be used as prefix to all internal section names
- # If not defined will attempt to derive it from the filename
- # This can not happen when running parse_from_filehandle though
- # hence the ability to set the label externally
- # The label could then be Pod::Parser_DESCRIPTION or somesuch
-
- $self->{Label} = undef # label to be used as prefix
- unless exists $self->{Label}; # to all internal section names
-
- # These allow the caller to add arbritrary latex code to
- # start and end of document. AddPreamble and AddPostamble are ignored
- # if these are set.
- # Also MakeIndex and TableOfContents are also ignored.
- $self->{UserPreamble} = undef # User supplied start (AddPreamble =1)
- unless exists $self->{Label};
- $self->{UserPostamble} = undef # Use supplied end (AddPostamble=1)
- unless exists $self->{Label};
-
- # Run base initialize
- $self->SUPER::initialize;
-
-}
-
-=back
-
-=head2 Data Accessors
-
-The following methods are provided for accessing instance data. These
-methods should be used for accessing configuration parameters rather
-than assuming the object is a hash.
-
-Default values can be supplied by using these names as keys to a hash
-of arguments when using the C<new()> constructor.
-
-=over 4
-
-=item B<AddPreamble>
-
-Logical to control whether a C<latex> preamble is to be written.
-If true, a valid C<latex> preamble is written before the pod data is written.
-This is similar to:
-
- \documentclass{article}
- \begin{document}
-
-but will be more complicated if table of contents and indexing are required.
-Can be used to set or retrieve the current value.
-
- $add = $parser->AddPreamble();
- $parser->AddPreamble(1);
-
-If used in conjunction with C<AddPostamble> a full latex document will
-be written that could be immediately processed by C<latex>.
-
-=cut
-
-sub AddPreamble {
- my $self = shift;
- if (@_) {
- $self->{AddPreamble} = shift;
- }
- return $self->{AddPreamble};
-}
-
-=item B<AddPostamble>
-
-Logical to control whether a standard C<latex> ending is written to the output
-file after the document has been processed.
-In its simplest form this is simply:
-
- \end{document}
-
-but can be more complicated if a index is required.
-Can be used to set or retrieve the current value.
-
- $add = $parser->AddPostamble();
- $parser->AddPostamble(1);
-
-If used in conjunction with C<AddPreaamble> a full latex document will
-be written that could be immediately processed by C<latex>.
-
-=cut
-
-sub AddPostamble {
- my $self = shift;
- if (@_) {
- $self->{AddPostamble} = shift;
- }
- return $self->{AddPostamble};
-}
-
-=item B<Head1Level>
-
-The C<latex> sectioning level that should be used to correspond to
-a pod C<=head1> directive. This can be used, for example, to turn
-a C<=head1> into a C<latex> C<subsection>. This should hold a number
-corresponding to the required position in an array containing the
-following elements:
-
- [0] chapter
- [1] section
- [2] subsection
- [3] subsubsection
- [4] paragraph
- [5] subparagraph
-
-Can be used to set or retrieve the current value:
-
- $parser->Head1Level(2);
- $sect = $parser->Head1Level;
-
-Setting this number too high can result in sections that may not be reproducible
-in the expected way. For example, setting this to 4 would imply that C<=head3>
-do not have a corresponding C<latex> section (C<=head1> would correspond to
-a C<paragraph>).
-
-A check is made to ensure that the supplied value is an integer in the
-range 0 to 5.
-
-Default is for a value of 1 (i.e. a C<section>).
-
-=cut
-
-sub Head1Level {
- my $self = shift;
- if (@_) {
- my $arg = shift;
- if ($arg =~ /^\d$/ && $arg <= $#LatexSections) {
- $self->{Head1Level} = $arg;
- } else {
- carp "Head1Level supplied ($arg) must be integer in range 0 to ".$#LatexSections . "- Ignoring\n";
- }
- }
- return $self->{Head1Level};
-}
-
-=item B<Label>
-
-This is the label that is prefixed to all C<latex> label and index
-entries to make them unique. In general, pods have similarly titled
-sections (NAME, DESCRIPTION etc) and a C<latex> label will be multiply
-defined if more than one pod document is to be included in a single
-C<latex> file. To overcome this, this label is prefixed to a label
-whenever a label is required (joined with an underscore) or to an
-index entry (joined by an exclamation mark which is the normal index
-separator). For example, C<\label{text}> becomes C<\label{Label_text}>.
-
-Can be used to set or retrieve the current value:
-
- $label = $parser->Label;
- $parser->Label($label);
-
-This label is only used if C<UniqueLabels> is true.
-Its value is set automatically from the C<NAME> field
-if C<ReplaceNAMEwithSection> is true. If this is not the case
-it must be set manually before starting the parse.
-
-Default value is C<undef>.
-
-=cut
-
-sub Label {
- my $self = shift;
- if (@_) {
- $self->{Label} = shift;
- }
- return $self->{Label};
-}
-
-=item B<LevelNoNum>
-
-Control the point at which C<latex> section numbering is turned off.
-For example, this can be used to make sure that C<latex> sections
-are numbered but subsections are not.
-
-Can be used to set or retrieve the current value:
-
- $lev = $parser->LevelNoNum;
- $parser->LevelNoNum(2);
-
-The argument must be an integer between 0 and 5 and is the same as the
-number described in C<Head1Level> method description. The number has
-nothing to do with the pod heading number, only the C<latex> sectioning.
-
-Default is 2. (i.e. C<latex> subsections are written as C<subsection*>
-but sections are numbered).
-
-=cut
-
-sub LevelNoNum {
- my $self = shift;
- if (@_) {
- $self->{LevelNoNum} = shift;
- }
- return $self->{LevelNoNum};
-}
-
-=item B<MakeIndex>
-
-Controls whether C<latex> commands for creating an index are to be inserted
-into the preamble and postamble
-
- $makeindex = $parser->MakeIndex;
- $parser->MakeIndex(0);
-
-Irrelevant if both C<AddPreamble> and C<AddPostamble> are false (or equivalently,
-C<UserPreamble> and C<UserPostamble> are set).
-
-Default is for an index to be created.
-
-=cut
-
-sub MakeIndex {
- my $self = shift;
- if (@_) {
- $self->{MakeIndex} = shift;
- }
- return $self->{MakeIndex};
-}
-
-=item B<ReplaceNAMEwithSection>
-
-This controls whether the C<NAME> section in the pod is to be translated
-literally or converted to a slightly modified output where the section
-name is the pod name rather than "NAME".
-
-If true, the pod segment
-
- =head1 NAME
-
- pod::name - purpose
-
- =head1 SYNOPSIS
-
-is converted to the C<latex>
-
- \section{pod::name\label{pod_name}\index{pod::name}}
-
- Purpose
-
- \subsection*{SYNOPSIS\label{pod_name_SYNOPSIS}%
- \index{pod::name!SYNOPSIS}}
-
-(dependent on the value of C<Head1Level> and C<LevelNoNum>). Note that
-subsequent C<head1> directives translate to subsections rather than
-sections and that the labels and index now include the pod name (dependent
-on the value of C<UniqueLabels>).
-
-The C<Label> is set from the pod name regardless of any current value
-of C<Label>.
-
- $mod = $parser->ReplaceNAMEwithSection;
- $parser->ReplaceNAMEwithSection(0);
-
-Default is to translate the pod literally.
-
-=cut
-
-sub ReplaceNAMEwithSection {
- my $self = shift;
- if (@_) {
- $self->{ReplaceNAMEwithSection} = shift;
- }
- return $self->{ReplaceNAMEwithSection};
-}
-
-=item B<StartWithNewPage>
-
-If true, each pod translation will begin with a C<latex>
-C<\clearpage>.
-
- $parser->StartWithNewPage(1);
- $newpage = $parser->StartWithNewPage;
-
-Default is false.
-
-=cut
-
-sub StartWithNewPage {
- my $self = shift;
- if (@_) {
- $self->{StartWithNewPage} = shift;
- }
- return $self->{StartWithNewPage};
-}
-
-=item B<TableOfContents>
-
-If true, a table of contents will be created.
-Irrelevant if C<AddPreamble> is false or C<UserPreamble>
-is set.
-
- $toc = $parser->TableOfContents;
- $parser->TableOfContents(1);
-
-Default is false.
-
-=cut
-
-sub TableOfContents {
- my $self = shift;
- if (@_) {
- $self->{TableOfContents} = shift;
- }
- return $self->{TableOfContents};
-}
-
-=item B<UniqueLabels>
-
-If true, the translator will attempt to make sure that
-each C<latex> label or index entry will be uniquely identified
-by prefixing the contents of C<Label>. This allows
-multiple documents to be combined without clashing
-common labels such as C<DESCRIPTION> and C<SYNOPSIS>
-
- $parser->UniqueLabels(1);
- $unq = $parser->UniqueLabels;
-
-Default is true.
-
-=cut
-
-sub UniqueLabels {
- my $self = shift;
- if (@_) {
- $self->{UniqueLabels} = shift;
- }
- return $self->{UniqueLabels};
-}
-
-=item B<UserPreamble>
-
-User supplied C<latex> preamble. Added before the pod translation
-data.
-
-If set, the contents will be prepended to the output file before the translated
-data regardless of the value of C<AddPreamble>.
-C<MakeIndex> and C<TableOfContents> will also be ignored.
-
-=cut
-
-sub UserPreamble {
- my $self = shift;
- if (@_) {
- $self->{UserPreamble} = shift;
- }
- return $self->{UserPreamble};
-}
-
-=item B<UserPostamble>
-
-User supplied C<latex> postamble. Added after the pod translation
-data.
-
-If set, the contents will be prepended to the output file after the translated
-data regardless of the value of C<AddPostamble>.
-C<MakeIndex> will also be ignored.
-
-=cut
-
-sub UserPostamble {
- my $self = shift;
- if (@_) {
- $self->{UserPostamble} = shift;
- }
- return $self->{UserPostamble};
-}
-
-=begin __PRIVATE__
-
-=item B<Lists>
-
-Contains details of the currently active lists.
- The array contains C<Pod::List> objects. A new C<Pod::List>
-object is created each time a list is encountered and it is
-pushed onto this stack. When the list context ends, it
-is popped from the stack. The array will be empty if no
-lists are active.
-
-Returns array of list information in list context
-Returns array ref in scalar context
-
-=cut
-
-
-
-sub lists {
- my $self = shift;
- return @{ $self->{_Lists} } if wantarray();
- return $self->{_Lists};
-}
-
-=end __PRIVATE__
-
-=back
-
-=begin __PRIVATE__
-
-=head2 Subclassed methods
-
-The following methods override methods provided in the C<Pod::Select>
-base class. See C<Pod::Parser> and C<Pod::Select> for more information
-on what these methods require.
-
-=over 4
-
-=cut
-
-######### END ACCESSORS ###################
-
-# Opening pod
-
-=item B<begin_pod>
-
-Writes the C<latex> preamble if requested.
-
-=cut
-
-sub begin_pod {
- my $self = shift;
-
- # Get the pod identification
- # This should really come from the '=head1 NAME' paragraph
-
- my $infile = $self->input_file;
- my $class = ref($self);
- my $date = gmtime(time);
-
- # Comment message to say where this came from
- my $comment = << "__TEX_COMMENT__";
-%% Latex generated from POD in document $infile
-%% Using the perl module $class
-%% Converted on $date
-__TEX_COMMENT__
-
- # Write the preamble
- # If the caller has supplied one then we just use that
-
- my $preamble = '';
- if (defined $self->UserPreamble) {
-
- $preamble = $self->UserPreamble;
-
- # Add the description of where this came from
- $preamble .= "\n$comment";
-
-
- } elsif ($self->AddPreamble) {
- # Write our own preamble
-
- # Code to initialise index making
- # Use an array so that we can prepend comment if required
- my @makeidx = (
- '\usepackage{makeidx}',
- '\makeindex',
- );
-
- unless ($self->MakeIndex) {
- foreach (@makeidx) {
- $_ = '%% ' . $_;
- }
- }
- my $makeindex = join("\n",@makeidx) . "\n";
-
-
- # Table of contents
- my $tableofcontents = '\tableofcontents';
-
- $tableofcontents = '%% ' . $tableofcontents
- unless $self->TableOfContents;
-
- # Roll our own
- $preamble = << "__TEX_HEADER__";
-\\documentclass{article}
-
-$comment
-
-$makeindex
-
-\\begin{document}
-
-$tableofcontents
-
-__TEX_HEADER__
-
- }
-
- # Write the header (blank if none)
- $self->_output($preamble);
-
- # Start on new page if requested
- $self->_output("\\clearpage\n") if $self->StartWithNewPage;
-
-}
-
-
-=item B<end_pod>
-
-Write the closing C<latex> code.
-
-=cut
-
-sub end_pod {
- my $self = shift;
-
- # End string
- my $end = '';
-
- # Use the user version of the postamble if deinfed
- if (defined $self->UserPostamble) {
- $end = $self->UserPostamble;
-
- $self->_output($end);
-
- } elsif ($self->AddPostamble) {
-
- # Check for index
- my $makeindex = '\printindex';
-
- $makeindex = '%% '. $makeindex unless $self->MakeIndex;
-
- $end = "$makeindex\n\n\\end{document}\n";
- }
-
-
- $self->_output($end);
-
-}
-
-=item B<command>
-
-Process basic pod commands.
-
-=cut
-
-sub command {
- my $self = shift;
- my ($command, $paragraph, $line_num, $parobj) = @_;
-
- # return if we dont care
- return if $command eq 'pod';
-
- $paragraph = $self->_replace_special_chars($paragraph);
-
- # Interpolate pod sequences in paragraph
- $paragraph = $self->interpolate($paragraph, $line_num);
-
- $paragraph =~ s/\s+$//;
-
- # Now run the command
- if ($command eq 'over') {
-
- $self->begin_list($paragraph, $line_num);
-
- } elsif ($command eq 'item') {
-
- $self->add_item($paragraph, $line_num);
-
- } elsif ($command eq 'back') {
-
- $self->end_list($line_num);
-
- } elsif ($command eq 'head1') {
-
- # Store the name of the section
- $self->{_CURRENT_HEAD1} = $paragraph;
-
- # Print it
- $self->head(1, $paragraph, $parobj);
-
- } elsif ($command eq 'head2') {
-
- $self->head(2, $paragraph, $parobj);
-
- } elsif ($command eq 'head3') {
-
- $self->head(3, $paragraph, $parobj);
-
- } elsif ($command eq 'head4') {
-
- $self->head(4, $paragraph, $parobj);
-
- } elsif ($command eq 'head5') {
-
- $self->head(5, $paragraph, $parobj);
-
- } elsif ($command eq 'head6') {
-
- $self->head(6, $paragraph, $parobj);
-
- } elsif ($command eq 'begin') {
-
- # pass through if latex
- if ($paragraph =~ /^latex/i) {
- # Make sure that subsequent paragraphs are not modfied before printing
- $self->{_dont_modify_any_para} = 1;
-
- } else {
- # Suppress all subsequent paragraphs unless
- # it is explcitly intended for latex
- $self->{_suppress_all_para} = 1;
- }
-
- } elsif ($command eq 'for') {
-
- # pass through if latex
- if ($paragraph =~ /^latex/i) {
- # Make sure that next paragraph is not modfied before printing
- $self->{_dont_modify_next_para} = 1;
-
- } else {
- # Suppress the next paragraph unless it is latex
- $self->{_suppress_next_para} = 1
- }
-
- } elsif ($command eq 'end') {
-
- # Reset suppression
- $self->{_suppress_all_para} = 0;
- $self->{_dont_modify_any_para} = 0;
-
- } elsif ($command eq 'pod') {
-
- # Do nothing
-
- } else {
- carp "Command $command not recognised at line $line_num\n";
- }
-
-}
-
-=item B<verbatim>
-
-Verbatim text
-
-=cut
-
-sub verbatim {
- my $self = shift;
- my ($paragraph, $line_num, $parobj) = @_;
-
- # Expand paragraph unless in =for or =begin block
- if ($self->{_dont_modify_any_para} || $self->{_dont_modify_next_para}) {
- # Just print as is
- $self->_output($paragraph);
-
- # Reset flag if in =for
- $self->{_dont_modify_next_para} = 0;
-
- } else {
-
- return if $paragraph =~ /^\s+$/;
-
- # Clean trailing space
- $paragraph =~ s/\s+$//;
-
- # Clean tabs
- $paragraph =~ s/\t/ /g;
-
- $self->_output('\begin{verbatim}' . "\n$paragraph\n". '\end{verbatim}'."\n");
- }
-}
-
-=item B<textblock>
-
-Plain text paragraph.
-
-=cut
-
-sub textblock {
- my $self = shift;
- my ($paragraph, $line_num, $parobj) = @_;
-
- # print Dumper($self);
-
- # Expand paragraph unless in =for or =begin block
- if ($self->{_dont_modify_any_para} || $self->{_dont_modify_next_para}) {
- # Just print as is
- $self->_output($paragraph);
-
- # Reset flag if in =for
- $self->{_dont_modify_next_para} = 0;
-
- return;
- }
-
-
- # Escape latex special characters
- $paragraph = $self->_replace_special_chars($paragraph);
-
- # Interpolate interior sequences
- my $expansion = $self->interpolate($paragraph, $line_num);
- $expansion =~ s/\s+$//;
-
-
- # If we are replacing 'head1 NAME' with a section
- # we need to look in the paragraph and rewrite things
- # Need to make sure this is called only on the first paragraph
- # following 'head1 NAME' and not on subsequent paragraphs that may be
- # present.
- if ($self->{_CURRENT_HEAD1} =~ /^NAME/i && $self->ReplaceNAMEwithSection()) {
-
- # Strip white space from start and end
- $paragraph =~ s/^\s+//;
- $paragraph =~ s/\s$//;
-
- # Split the string into 2 parts
- my ($name, $purpose) = split(/\s+-\s+/, $expansion,2);
-
- # Now prevent this from triggering until a new head1 NAME is set
- $self->{_CURRENT_HEAD1} = '_NAME';
-
- # Might want to clear the Label() before doing this (CHECK)
-
- # Print the heading
- $self->head(1, $name, $parobj);
-
- # Set the labeling in case we want unique names later
- $self->Label( $self->_create_label( $name, 1 ) );
-
- # Raise the Head1Level by one so that subsequent =head1 appear
- # as subsections of the main name section unless we are already
- # at maximum [Head1Level() could check this itself - CHECK]
- $self->Head1Level( $self->Head1Level() + 1)
- unless $self->Head1Level == $#LatexSections;
-
- # Now write out the new latex paragraph
- $purpose = ucfirst($purpose);
- $self->_output("\n\n$purpose\n\n");
-
- } else {
- # Just write the output
- $self->_output("\n\n$expansion\n\n");
- }
-
-}
-
-=item B<interior_sequence>
-
-Interior sequence expansion
-
-=cut
-
-sub interior_sequence {
- my $self = shift;
-
- my ($seq_command, $seq_argument, $pod_seq) = @_;
-
- if ($seq_command eq 'B') {
- return "\\textbf{$seq_argument}";
-
- } elsif ($seq_command eq 'I') {
- return "\\textit{$seq_argument}";
-
- } elsif ($seq_command eq 'E') {
-
- # If it is simply a number
- if ($seq_argument =~ /^\d+$/) {
- return chr($seq_argument);
- # Look up escape in hash table
- } elsif (exists $HTML_Escapes{$seq_argument}) {
- return $HTML_Escapes{$seq_argument};
-
- } else {
- my ($file, $line) = $pod_seq->file_line();
- warn "Escape sequence $seq_argument not recognised at line $line of file $file\n";
- return;
- }
-
- } elsif ($seq_command eq 'Z') {
-
- # Zero width space
- return '$\!$'; # '
-
- } elsif ($seq_command eq 'C') {
- return "\\texttt{$seq_argument}";
-
- } elsif ($seq_command eq 'F') {
- return "\\emph{$seq_argument}";
-
- } elsif ($seq_command eq 'S') {
- # non breakable spaces
- my $nbsp = '$\:$'; #'
-
- $seq_argument =~ s/\s/$nbsp/g;
- return $seq_argument;
-
- } elsif ($seq_command eq 'L') {
-
- my $link = new Pod::Hyperlink($seq_argument);
-
- # undef on failure
- unless (defined $link) {
- carp $@;
- return;
- }
-
- # Handle internal links differently
- my $type = $link->type;
- my $page = $link->page;
-
- if ($type eq 'section' && $page eq '') {
- # Use internal latex reference
- my $node = $link->node;
-
- # Convert to a label
- $node = $self->_create_label($node);
-
- return "\\S\\ref{$node}";
-
- } else {
- # Use default markup for external references
- # (although Starlink would use \xlabel)
- my $markup = $link->markup;
-
- my ($file, $line) = $pod_seq->file_line();
-
- return $self->interpolate($link->markup, $line);
- }
-
-
-
- } elsif ($seq_command eq 'P') {
- # Special markup for Pod::Hyperlink
- # Replace :: with /
- my $link = $seq_argument;
- $link =~ s/::/\//g;
-
- my $ref = "\\emph{$seq_argument}";
- return $ref;
-
- } elsif ($seq_command eq 'Q') {
- # Special markup for Pod::Hyperlink
- return "\\textsf{$seq_argument}\n";
-
- } elsif ($seq_command eq 'X') {
- # Index entries
-
- # use \index command
- # I will let '!' go through for now
- # not sure how sub categories are handled in X<>
- my $index = $self->_create_index($seq_argument);
- return "\\index{$index}\n";
-
- } else {
- carp "Unknown sequence $seq_command<$seq_argument>";
- }
-
-}
-
-=back
-
-=head2 List Methods
-
-Methods used to handle lists.
-
-=over 4
-
-=item B<begin_list>
-
-Called when a new list is found (via the C<over> directive).
-Creates a new C<Pod::List> object and stores it on the
-list stack.
-
- $parser->begin_list($indent, $line_num);
-
-=cut
-
-sub begin_list {
- my $self = shift;
- my $indent = shift;
- my $line_num = shift;
-
- # Indicate that a list should be started for the next item
- # need to do this to work out the type of list
- push ( @{$self->lists}, new Pod::List(-indent => $indent,
- -start => $line_num,
- -file => $self->input_file,
- )
- );
-
-}
-
-=item B<end_list>
-
-Called when the end of a list is found (the C<back> directive).
-Pops the C<Pod::List> object off the stack of lists and writes
-the C<latex> code required to close a list.
-
- $parser->end_list($line_num);
-
-=cut
-
-sub end_list {
- my $self = shift;
- my $line_num = shift;
-
- unless (defined $self->lists->[-1]) {
- my $file = $self->input_file;
- warn "No list is active at line $line_num (file=$file). Missing =over?\n";
- return;
- }
-
- # What to write depends on list type
- my $type = $self->lists->[-1]->type;
-
- # Dont write anything if the list type is not set
- # iomplying that a list was created but no entries were
- # placed in it (eg because of a =begin/=end combination)
- $self->_output("\\end{$type}\n")
- if (defined $type && length($type) > 0);
-
- # Clear list
- pop(@{ $self->lists});
-
-}
-
-=item B<add_item>
-
-Add items to the list. The first time an item is encountered
-(determined from the state of the current C<Pod::List> object)
-the type of list is determined (ordered, unnumbered or description)
-and the relevant latex code issued.
-
- $parser->add_item($paragraph, $line_num);
-
-=cut
-
-sub add_item {
- my $self = shift;
- my $paragraph = shift;
- my $line_num = shift;
-
- unless (defined $self->lists->[-1]) {
- my $file = $self->input_file;
- warn "List has already ended by line $line_num of file $file. Missing =over?\n";
- # Replace special chars
-# $paragraph = $self->_replace_special_chars($paragraph);
- $self->_output("$paragraph\n\n");
- return;
- }
-
- # If paragraphs printing is turned off via =begin/=end or whatver
- # simply return immediately
- return if ($self->{_suppress_all_para} || $self->{_suppress_next_para});
-
- # Check to see whether we are starting a new lists
- if (scalar($self->lists->[-1]->item) == 0) {
-
- # Examine the paragraph to determine what type of list
- # we have
- $paragraph =~ s/\s+$//;
- $paragraph =~ s/^\s+//;
-
- my $type;
- if (substr($paragraph, 0,1) eq '*') {
- $type = 'itemize';
- } elsif ($paragraph =~ /^\d/) {
- $type = 'enumerate';
- } else {
- $type = 'description';
- }
- $self->lists->[-1]->type($type);
-
- $self->_output("\\begin{$type}\n");
-
- }
-
- my $type = $self->lists->[-1]->type;
-
- if ($type eq 'description') {
- # Handle long items - long items do not wrap
- if (length($paragraph) < 40) {
- # A real description list item
- $self->_output("\\item[$paragraph] \\mbox{}");
- } else {
- # The item is now simply bold text
- $self->_output(qq{\\item \\textbf{$paragraph}});
- }
-
- } else {
- # If the item was '* Something' we still need to write
- # out the something
- my $extra_info = $paragraph;
- $extra_info =~ s/^\*\s*//;
- $self->_output("\\item $extra_info");
- }
-
- # Store the item name in the object. Required so that
- # we can tell if the list is new or not
- $self->lists->[-1]->item($paragraph);
-
-}
-
-=back
-
-=head2 Methods for headings
-
-=over 4
-
-=item B<head>
-
-Print a heading of the required level.
-
- $parser->head($level, $paragraph, $parobj);
-
-The first argument is the pod heading level. The second argument
-is the contents of the heading. The 3rd argument is a Pod::Paragraph
-object so that the line number can be extracted.
-
-=cut
-
-sub head {
- my $self = shift;
- my $num = shift;
- my $paragraph = shift;
- my $parobj = shift;
-
- # If we are replace 'head1 NAME' with a section
- # we return immediately if we get it
- return
- if ($self->{_CURRENT_HEAD1} =~ /^NAME/i && $self->ReplaceNAMEwithSection());
-
- # Create a label
- my $label = $self->_create_label($paragraph);
-
- # Create an index entry
- my $index = $self->_create_index($paragraph);
-
- # Work out position in the above array taking into account
- # that =head1 is equivalent to $self->Head1Level
-
- my $level = $self->Head1Level() - 1 + $num;
-
- # Warn if heading to large
- if ($num > $#LatexSections) {
- my $line = $parobj->file_line;
- my $file = $self->input_file;
- warn "Heading level too large ($level) for LaTeX at line $line of file $file\n";
- $level = $#LatexSections;
- }
-
- # Check to see whether section should be unnumbered
- my $star = ($level >= $self->LevelNoNum ? '*' : '');
-
- # Section
- $self->_output("\\" .$LatexSections[$level] .$star ."{$paragraph\\label{".$label ."}\\index{".$index."}}");
-
-}
-
-
-=back
-
-=end __PRIVATE__
-
-=begin __PRIVATE__
-
-=head2 Internal methods
-
-Internal routines are described in this section. They do not form part of the
-public interface. All private methods start with an underscore.
-
-=over 4
-
-=item B<_output>
-
-Output text to the output filehandle. This method must be always be called
-to output parsed text.
-
- $parser->_output($text);
-
-Does not write anything if a =begin or =for is active that should be
-ignored.
-
-=cut
-
-sub _output {
- my $self = shift;
- my $text = shift;
-
- print { $self->output_handle } $text
- unless $self->{_suppress_all_para} ||
- $self->{_suppress_next_para};
-
- # Reset pargraph stuff for =for
- $self->{_suppress_next_para} = 0
- if $self->{_suppress_next_para};
-}
-
-
-=item B<_replace_special_chars>
-
-Subroutine to replace characters that are special in C<latex>
-with the escaped forms
-
- $escaped = $parser->_replace_special_chars($paragraph);
-
-Need to call this routine before interior_sequences are munged but
-not if verbatim.
-
-Special characters and the C<latex> equivalents are:
-
- } \}
- { \{
- _ \_
- $ \$
- % \%
- & \&
- \ $\backslash$
- ^ \^{}
- ~ \~{}
- | $|$
-
-=cut
-
-sub _replace_special_chars {
- my $self = shift;
- my $paragraph = shift;
-
- # Replace a \ with $\backslash$
- # This is made more complicated because the dollars will be escaped
- # by the subsequent replacement. Easiest to add \backslash
- # now and then add the dollars
- $paragraph =~ s/\\/\\backslash/g;
-
- # Must be done after escape of \ since this command adds latex escapes
- # Replace characters that can be escaped
- $paragraph =~ s/([\$\#&%_{}])/\\$1/g;
-
- # Replace ^ characters with \^{} so that $^F works okay
- $paragraph =~ s/(\^)/\\$1\{\}/g;
-
- # Replace tilde (~) with \texttt{\~{}}
- $paragraph =~ s/~/\\texttt\{\\~\{\}\}/g;
-
- # Replace | with $|$
- $paragraph =~ s'\|'$|$'g;
-
- # Now add the dollars around each \backslash
- $paragraph =~ s/(\\backslash)/\$$1\$/g;
-
- return $paragraph;
-}
-
-
-=item B<_create_label>
-
-Return a string that can be used as an internal reference
-in a C<latex> document (i.e. accepted by the C<\label> command)
-
- $label = $parser->_create_label($string)
-
-If UniqueLabels is true returns a label prefixed by Label()
-This can be suppressed with an optional second argument.
-
- $label = $parser->_create_label($string, $suppress);
-
-If a second argument is supplied (of any value including undef)
-the Label() is never prefixed. This means that this routine can
-be called to create a Label() without prefixing a previous setting.
-
-=cut
-
-sub _create_label {
- my $self = shift;
- my $paragraph = shift;
- my $suppress = (@_ ? 1 : 0 );
-
- # Remove latex commands
- $paragraph = $self->_clean_latex_commands($paragraph);
-
- # Remove non alphanumerics from the label and replace with underscores
- # want to protect '-' though so use negated character classes
- $paragraph =~ s/[^-:\w]/_/g;
-
- # Multiple underscores will look unsightly so remove repeats
- # This will also have the advantage of tidying up the end and
- # start of string
- $paragraph =~ s/_+/_/g;
-
- # If required need to make sure that the label is unique
- # since it is possible to have multiple pods in a single
- # document
- if (!$suppress && $self->UniqueLabels() && defined $self->Label) {
- $paragraph = $self->Label() .'_'. $paragraph;
- }
-
- return $paragraph;
-}
-
-
-=item B<_create_index>
-
-Similar to C<_create_label> except an index entry is created.
-If C<UniqueLabels> is true, the index entry is prefixed by
-the current C<Label> and an exclamation mark.
-
- $ind = $parser->_create_index($paragraph);
-
-An exclamation mark is used by C<makeindex> to generate
-sub-entries in an index.
-
-=cut
-
-sub _create_index {
- my $self = shift;
- my $paragraph = shift;
- my $suppress = (@_ ? 1 : 0 );
-
- # Remove latex commands
- $paragraph = $self->_clean_latex_commands($paragraph);
-
- # If required need to make sure that the index entry is unique
- # since it is possible to have multiple pods in a single
- # document
- if (!$suppress && $self->UniqueLabels() && defined $self->Label) {
- $paragraph = $self->Label() .'!'. $paragraph;
- }
-
- # Need to replace _ with space
- $paragraph =~ s/_/ /g;
-
- return $paragraph;
-
-}
-
-=item B<_clean_latex_commands>
-
-Removes latex commands from text. The latex command is assumed to be of the
-form C<\command{ text }>. "C<text>" is retained
-
- $clean = $parser->_clean_latex_commands($text);
-
-=cut
-
-sub _clean_latex_commands {
- my $self = shift;
- my $paragraph = shift;
-
- # Remove latex commands of the form \text{ }
- # and replace with the contents of the { }
- # need to make this non-greedy so that it can handle
- # "\text{a} and \text2{b}"
- # without converting it to
- # "a} and \text2{b"
- # This match will still get into trouble if \} is present
- # This is not vital since the subsequent replacement of non-alphanumeric
- # characters will tidy it up anyway
- $paragraph =~ s/\\\w+{(.*?)}/$1/g;
-
- return $paragraph
-}
-
-=back
-
-=end __PRIVATE__
-
-=head1 NOTES
-
-Compatible with C<latex2e> only. Can not be used with C<latex> v2.09
-or earlier.
-
-A subclass of C<Pod::Select> so that specific pod sections can be
-converted to C<latex> by using the C<select> method.
-
-Some HTML escapes are missing and many have not been tested.
-
-=head1 SEE ALSO
-
-L<Pod::Parser>, L<Pod::Select>, L<pod2latex>
-
-=head1 AUTHORS
-
-Tim Jenness E<lt>t.jenness@jach.hawaii.eduE<gt>
-
-=head1 COPYRIGHT
-
-Copyright (C) 2000 Tim Jenness. All Rights Reserved.
-
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=begin __PRIVATE__
-
-=head1 REVISION
-
-$Id: LaTeX.pm,v 1.6 2000/08/21 09:05:03 timj Exp $
-
-=end __PRIVATE__
-
-=cut
diff --git a/contrib/perl5/lib/Pod/Man.pm b/contrib/perl5/lib/Pod/Man.pm
deleted file mode 100644
index 3103682..0000000
--- a/contrib/perl5/lib/Pod/Man.pm
+++ /dev/null
@@ -1,1387 +0,0 @@
-# Pod::Man -- Convert POD data to formatted *roff input.
-# $Id: Man.pm,v 1.15 2001/02/10 06:50:22 eagle Exp $
-#
-# Copyright 1999, 2000, 2001 by Russ Allbery <rra@stanford.edu>
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# This module is intended to be a replacement for the pod2man script
-# distributed with versions of Perl prior to 5.6, and attempts to match its
-# output except for some specific circumstances where other decisions seemed
-# to produce better output. It uses Pod::Parser and is designed to be easy
-# to subclass.
-#
-# Perl core hackers, please note that this module is also separately
-# maintained outside of the Perl core as part of the podlators. Please send
-# me any patches at the address above in addition to sending them to the
-# standard Perl mailing lists.
-
-############################################################################
-# Modules and declarations
-############################################################################
-
-package Pod::Man;
-
-require 5.004;
-
-use Carp qw(carp croak);
-use Pod::Parser ();
-
-use strict;
-use subs qw(makespace);
-use vars qw(@ISA %ESCAPES $PREAMBLE $VERSION);
-
-@ISA = qw(Pod::Parser);
-
-# Don't use the CVS revision as the version, since this module is also in
-# Perl core and too many things could munge CVS magic revision strings.
-# This number should ideally be the same as the CVS revision in podlators,
-# however.
-$VERSION = 1.15;
-
-
-############################################################################
-# Preamble and *roff output tables
-############################################################################
-
-# The following is the static preamble which starts all *roff output we
-# generate. It's completely static except for the font to use as a
-# fixed-width font, which is designed by @CFONT@, and the left and right
-# quotes to use for C<> text, designated by @LQOUTE@ and @RQUOTE@.
-# $PREAMBLE should therefore be run through s/\@CFONT\@/<font>/g before
-# output.
-$PREAMBLE = <<'----END OF PREAMBLE----';
-.de Sh \" Subsection heading
-.br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
-..
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Ip \" List item
-.br
-.ie \\n(.$>=3 .ne \\$3
-.el .ne 3
-.IP "\\$1" \\$2
-..
-.de Vb \" Begin verbatim text
-.ft @CFONT@
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-
-.fi
-..
-.\" Set up some character translations and predefined strings. \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote. | will give a
-.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used
-.\" to do unbreakable dashes and therefore won't be available. \*(C` and
-.\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
-.tr \(*W-|\(bv\*(Tr
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-. ds -- \(*W-
-. ds PI pi
-. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
-. ds L" ""
-. ds R" ""
-. ds C` @LQUOTE@
-. ds C' @RQUOTE@
-'br\}
-.el\{\
-. ds -- \|\(em\|
-. ds PI \(*p
-. ds L" ``
-. ds R" ''
-'br\}
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr
-.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
-.\" index entries marked with X<> in POD. Of course, you'll have to process
-.\" the output yourself in some meaningful fashion.
-.if \nF \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
-..
-. nr % 0
-. rr F
-.\}
-.\"
-.\" For nroff, turn off justification. Always turn off hyphenation; it
-.\" makes way too many mistakes in technical documents.
-.hy 0
-.if n .na
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear. Run. Save yourself. No user-serviceable parts.
-.bd B 3
-. \" fudge factors for nroff and troff
-.if n \{\
-. ds #H 0
-. ds #V .8m
-. ds #F .3m
-. ds #[ \f1
-. ds #] \fP
-.\}
-.if t \{\
-. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-. ds #V .6m
-. ds #F 0
-. ds #[ \&
-. ds #] \&
-.\}
-. \" simple accents for nroff and troff
-.if n \{\
-. ds ' \&
-. ds ` \&
-. ds ^ \&
-. ds , \&
-. ds ~ ~
-. ds /
-.\}
-.if t \{\
-. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-. \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-. \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-. \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-. ds : e
-. ds 8 ss
-. ds o a
-. ds d- d\h'-1'\(ga
-. ds D- D\h'-1'\(hy
-. ds th \o'bp'
-. ds Th \o'LP'
-. ds ae ae
-. ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-----END OF PREAMBLE----
-#`# for cperl-mode
-
-# This table is taken nearly verbatim from Tom Christiansen's pod2man. It
-# assumes that the standard preamble has already been printed, since that's
-# what defines all of the accent marks. Note that some of these are quoted
-# with double quotes since they contain embedded single quotes, so use \\
-# uniformly for backslash for readability.
-%ESCAPES = (
- 'amp' => '&', # ampersand
- 'lt' => '<', # left chevron, less-than
- 'gt' => '>', # right chevron, greater-than
- 'quot' => '"', # double quote
- 'sol' => '/', # solidus (forward slash)
- 'verbar' => '|', # vertical bar
-
- 'Aacute' => "A\\*'", # capital A, acute accent
- 'aacute' => "a\\*'", # small a, acute accent
- 'Acirc' => 'A\\*^', # capital A, circumflex accent
- 'acirc' => 'a\\*^', # small a, circumflex accent
- 'AElig' => '\*(AE', # capital AE diphthong (ligature)
- 'aelig' => '\*(ae', # small ae diphthong (ligature)
- 'Agrave' => "A\\*`", # capital A, grave accent
- 'agrave' => "A\\*`", # small a, grave accent
- 'Aring' => 'A\\*o', # capital A, ring
- 'aring' => 'a\\*o', # small a, ring
- 'Atilde' => 'A\\*~', # capital A, tilde
- 'atilde' => 'a\\*~', # small a, tilde
- 'Auml' => 'A\\*:', # capital A, dieresis or umlaut mark
- 'auml' => 'a\\*:', # small a, dieresis or umlaut mark
- 'Ccedil' => 'C\\*,', # capital C, cedilla
- 'ccedil' => 'c\\*,', # small c, cedilla
- 'Eacute' => "E\\*'", # capital E, acute accent
- 'eacute' => "e\\*'", # small e, acute accent
- 'Ecirc' => 'E\\*^', # capital E, circumflex accent
- 'ecirc' => 'e\\*^', # small e, circumflex accent
- 'Egrave' => 'E\\*`', # capital E, grave accent
- 'egrave' => 'e\\*`', # small e, grave accent
- 'ETH' => '\\*(D-', # capital Eth, Icelandic
- 'eth' => '\\*(d-', # small eth, Icelandic
- 'Euml' => 'E\\*:', # capital E, dieresis or umlaut mark
- 'euml' => 'e\\*:', # small e, dieresis or umlaut mark
- 'Iacute' => "I\\*'", # capital I, acute accent
- 'iacute' => "i\\*'", # small i, acute accent
- 'Icirc' => 'I\\*^', # capital I, circumflex accent
- 'icirc' => 'i\\*^', # small i, circumflex accent
- 'Igrave' => 'I\\*`', # capital I, grave accent
- 'igrave' => 'i\\*`', # small i, grave accent
- 'Iuml' => 'I\\*:', # capital I, dieresis or umlaut mark
- 'iuml' => 'i\\*:', # small i, dieresis or umlaut mark
- 'Ntilde' => 'N\*~', # capital N, tilde
- 'ntilde' => 'n\*~', # small n, tilde
- 'Oacute' => "O\\*'", # capital O, acute accent
- 'oacute' => "o\\*'", # small o, acute accent
- 'Ocirc' => 'O\\*^', # capital O, circumflex accent
- 'ocirc' => 'o\\*^', # small o, circumflex accent
- 'Ograve' => 'O\\*`', # capital O, grave accent
- 'ograve' => 'o\\*`', # small o, grave accent
- 'Oslash' => 'O\\*/', # capital O, slash
- 'oslash' => 'o\\*/', # small o, slash
- 'Otilde' => 'O\\*~', # capital O, tilde
- 'otilde' => 'o\\*~', # small o, tilde
- 'Ouml' => 'O\\*:', # capital O, dieresis or umlaut mark
- 'ouml' => 'o\\*:', # small o, dieresis or umlaut mark
- 'szlig' => '\*8', # small sharp s, German (sz ligature)
- 'THORN' => '\\*(Th', # capital THORN, Icelandic
- 'thorn' => '\\*(th', # small thorn, Icelandic
- 'Uacute' => "U\\*'", # capital U, acute accent
- 'uacute' => "u\\*'", # small u, acute accent
- 'Ucirc' => 'U\\*^', # capital U, circumflex accent
- 'ucirc' => 'u\\*^', # small u, circumflex accent
- 'Ugrave' => 'U\\*`', # capital U, grave accent
- 'ugrave' => 'u\\*`', # small u, grave accent
- 'Uuml' => 'U\\*:', # capital U, dieresis or umlaut mark
- 'uuml' => 'u\\*:', # small u, dieresis or umlaut mark
- 'Yacute' => "Y\\*'", # capital Y, acute accent
- 'yacute' => "y\\*'", # small y, acute accent
- 'yuml' => 'y\\*:', # small y, dieresis or umlaut mark
-);
-
-
-############################################################################
-# Static helper functions
-############################################################################
-
-# Protect leading quotes and periods against interpretation as commands.
-# Also protect anything starting with a backslash, since it could expand
-# or hide something that *roff would interpret as a command. This is
-# overkill, but it's much simpler than trying to parse *roff here.
-sub protect {
- local $_ = shift;
- s/^([.\'\\])/\\&$1/mg;
- $_;
-}
-
-# Translate a font string into an escape.
-sub toescape { (length ($_[0]) > 1 ? '\f(' : '\f') . $_[0] }
-
-
-############################################################################
-# Initialization
-############################################################################
-
-# Initialize the object. Here, we also process any additional options
-# passed to the constructor or set up defaults if none were given. center
-# is the centered title, release is the version number, and date is the date
-# for the documentation. Note that we can't know what file name we're
-# processing due to the architecture of Pod::Parser, so that *has* to either
-# be passed to the constructor or set separately with Pod::Man::name().
-sub initialize {
- my $self = shift;
-
- # Figure out the fixed-width font. If user-supplied, make sure that
- # they are the right length.
- for (qw/fixed fixedbold fixeditalic fixedbolditalic/) {
- if (defined $$self{$_}) {
- if (length ($$self{$_}) < 1 || length ($$self{$_}) > 2) {
- croak qq(roff font should be 1 or 2 chars,)
- . qq( not "$$self{$_}");
- }
- } else {
- $$self{$_} = '';
- }
- }
-
- # Set the default fonts. We can't be sure what fixed bold-italic is
- # going to be called, so default to just bold.
- $$self{fixed} ||= 'CW';
- $$self{fixedbold} ||= 'CB';
- $$self{fixeditalic} ||= 'CI';
- $$self{fixedbolditalic} ||= 'CB';
-
- # Set up a table of font escapes. First number is fixed-width, second
- # is bold, third is italic.
- $$self{FONTS} = { '000' => '\fR', '001' => '\fI',
- '010' => '\fB', '011' => '\f(BI',
- '100' => toescape ($$self{fixed}),
- '101' => toescape ($$self{fixeditalic}),
- '110' => toescape ($$self{fixedbold}),
- '111' => toescape ($$self{fixedbolditalic})};
-
- # Extra stuff for page titles.
- $$self{center} = 'User Contributed Perl Documentation'
- unless defined $$self{center};
- $$self{indent} = 4 unless defined $$self{indent};
-
- # We used to try first to get the version number from a local binary,
- # but we shouldn't need that any more. Get the version from the running
- # Perl. Work a little magic to handle subversions correctly under both
- # the pre-5.6 and the post-5.6 version numbering schemes.
- if (!defined $$self{release}) {
- my @version = ($] =~ /^(\d+)\.(\d{3})(\d{0,3})$/);
- $version[2] ||= 0;
- $version[2] *= 10 ** (3 - length $version[2]);
- for (@version) { $_ += 0 }
- $$self{release} = 'perl v' . join ('.', @version);
- }
-
- # Double quotes in things that will be quoted.
- for (qw/center date release/) {
- $$self{$_} =~ s/\"/\"\"/g if $$self{$_};
- }
-
- # Figure out what quotes we'll be using for C<> text.
- $$self{quotes} ||= '"';
- if ($$self{quotes} eq 'none') {
- $$self{LQUOTE} = $$self{RQUOTE} = '';
- } elsif (length ($$self{quotes}) == 1) {
- $$self{LQUOTE} = $$self{RQUOTE} = $$self{quotes};
- } elsif ($$self{quotes} =~ /^(.)(.)$/
- || $$self{quotes} =~ /^(..)(..)$/) {
- $$self{LQUOTE} = $1;
- $$self{RQUOTE} = $2;
- } else {
- croak qq(Invalid quote specification "$$self{quotes}");
- }
-
- # Double the first quote; note that this should not be s///g as two
- # double quotes is represented in *roff as three double quotes, not
- # four. Weird, I know.
- $$self{LQUOTE} =~ s/\"/\"\"/;
- $$self{RQUOTE} =~ s/\"/\"\"/;
-
- $$self{INDENT} = 0; # Current indentation level.
- $$self{INDENTS} = []; # Stack of indentations.
- $$self{INDEX} = []; # Index keys waiting to be printed.
- $$self{ITEMS} = 0; # The number of consecutive =items.
-
- $self->SUPER::initialize;
-}
-
-# For each document we process, output the preamble first.
-sub begin_pod {
- my $self = shift;
-
- # Try to figure out the name and section from the file name.
- my $section = $$self{section} || 1;
- my $name = $$self{name};
- if (!defined $name) {
- $name = $self->input_file;
- $section = 3 if (!$$self{section} && $name =~ /\.pm\z/i);
- $name =~ s/\.p(od|[lm])\z//i;
- if ($section =~ /^1/) {
- require File::Basename;
- $name = uc File::Basename::basename ($name);
- } else {
- # Lose everything up to the first of
- # */lib/*perl* standard or site_perl module
- # */*perl*/lib from -D prefix=/opt/perl
- # */*perl*/ random module hierarchy
- # which works. Should be fixed to use File::Spec. Also handle
- # a leading lib/ since that's what ExtUtils::MakeMaker creates.
- for ($name) {
- s%//+%/%g;
- if ( s%^.*?/lib/[^/]*perl[^/]*/%%si
- or s%^.*?/[^/]*perl[^/]*/(?:lib/)?%%si) {
- s%^site(_perl)?/%%s; # site and site_perl
- s%^(.*-$^O|$^O-.*)/%%so; # arch
- s%^\d+\.\d+%%s; # version
- }
- s%^lib/%%;
- s%/%::%g;
- }
- }
- }
-
- # If $name contains spaces, quote it; this mostly comes up in the case
- # of input from stdin.
- $name = '"' . $name . '"' if ($name =~ /\s/);
-
- # Modification date header. Try to use the modification time of our
- # input.
- if (!defined $$self{date}) {
- my $time = (stat $self->input_file)[9] || time;
- my ($day, $month, $year) = (localtime $time)[3,4,5];
- $month++;
- $year += 1900;
- $$self{date} = sprintf ('%4d-%02d-%02d', $year, $month, $day);
- }
-
- # Now, print out the preamble and the title.
- local $_ = $PREAMBLE;
- s/\@CFONT\@/$$self{fixed}/;
- s/\@LQUOTE\@/$$self{LQUOTE}/;
- s/\@RQUOTE\@/$$self{RQUOTE}/;
- chomp $_;
- print { $self->output_handle } <<"----END OF HEADER----";
-.\\" Automatically generated by Pod::Man version $VERSION
-.\\" @{[ scalar localtime ]}
-.\\"
-.\\" Standard preamble:
-.\\" ======================================================================
-$_
-.\\" ======================================================================
-.\\"
-.IX Title "$name $section"
-.TH $name $section "$$self{release}" "$$self{date}" "$$self{center}"
-.UC
-----END OF HEADER----
-#"# for cperl-mode
-
- # Initialize a few per-file variables.
- $$self{INDENT} = 0;
- $$self{NEEDSPACE} = 0;
-}
-
-
-############################################################################
-# Core overrides
-############################################################################
-
-# Called for each command paragraph. Gets the command, the associated
-# paragraph, the line number, and a Pod::Paragraph object. Just dispatches
-# the command to a method named the same as the command. =cut is handled
-# internally by Pod::Parser.
-sub command {
- my $self = shift;
- my $command = shift;
- return if $command eq 'pod';
- return if ($$self{EXCLUDE} && $command ne 'end');
- if ($self->can ('cmd_' . $command)) {
- $command = 'cmd_' . $command;
- $self->$command (@_);
- } else {
- my ($text, $line, $paragraph) = @_;
- my $file;
- ($file, $line) = $paragraph->file_line;
- $text =~ s/\n+\z//;
- $text = " $text" if ($text =~ /^\S/);
- warn qq($file:$line: Unknown command paragraph "=$command$text"\n);
- return;
- }
-}
-
-# Called for a verbatim paragraph. Gets the paragraph, the line number, and
-# a Pod::Paragraph object. Rofficate backslashes, untabify, put a
-# zero-width character at the beginning of each line to protect against
-# commands, and wrap in .Vb/.Ve.
-sub verbatim {
- my $self = shift;
- return if $$self{EXCLUDE};
- local $_ = shift;
- return if /^\s+$/;
- s/\s+$/\n/;
- my $lines = tr/\n/\n/;
- 1 while s/^(.*?)(\t+)/$1 . ' ' x (length ($2) * 8 - length ($1) % 8)/me;
- s/\\/\\e/g;
- s/^(\s*\S)/'\&' . $1/gme;
- $self->makespace;
- $self->output (".Vb $lines\n$_.Ve\n");
- $$self{NEEDSPACE} = 0;
-}
-
-# Called for a regular text block. Gets the paragraph, the line number, and
-# a Pod::Paragraph object. Perform interpolation and output the results.
-sub textblock {
- my $self = shift;
- return if $$self{EXCLUDE};
- $self->output ($_[0]), return if $$self{VERBATIM};
-
- # Perform a little magic to collapse multiple L<> references. We'll
- # just rewrite the whole thing into actual text at this part, bypassing
- # the whole internal sequence parsing thing.
- my $text = shift;
- $text =~ s{
- (L< # A link of the form L</something>.
- /
- (
- [:\w]+ # The item has to be a simple word...
- (\(\))? # ...or simple function.
- )
- >
- (
- ,?\s+(and\s+)? # Allow lots of them, conjuncted.
- L<
- /
- ( [:\w]+ ( \(\) )? )
- >
- )+
- )
- } {
- local $_ = $1;
- s{ L< / ( [^>]+ ) > } {$1}xg;
- my @items = split /(?:,?\s+(?:and\s+)?)/;
- my $string = 'the ';
- my $i;
- for ($i = 0; $i < @items; $i++) {
- $string .= $items[$i];
- $string .= ', ' if @items > 2 && $i != $#items;
- $string .= ' ' if @items == 2 && $i == 2;
- $string .= 'and ' if ($i == $#items - 1);
- }
- $string .= ' entries elsewhere in this document';
- $string;
- }gex;
-
- # Parse the tree and output it. collapse knows about references to
- # scalars as well as scalars and does the right thing with them.
- $text = $self->parse ($text, @_);
- $text =~ s/\n\s*$/\n/;
- $self->makespace;
- $self->output (protect $self->textmapfonts ($text));
- $self->outindex;
- $$self{NEEDSPACE} = 1;
-}
-
-# Called for an interior sequence. Takes a Pod::InteriorSequence object and
-# returns a reference to a scalar. This scalar is the final formatted text.
-# It's returned as a reference so that other interior sequences above us
-# know that the text has already been processed.
-sub sequence {
- my ($self, $seq) = @_;
- my $command = $seq->cmd_name;
-
- # Zero-width characters.
- if ($command eq 'Z') {
- # Workaround to generate a blessable reference, needed by 5.005.
- my $tmp = '\&';
- return bless \ "$tmp", 'Pod::Man::String';
- }
-
- # C<>, L<>, X<>, and E<> don't apply guesswork to their contents. C<>
- # needs some additional special handling.
- my $literal = ($command =~ /^[CELX]$/);
- $literal++ if $command eq 'C';
- local $_ = $self->collapse ($seq->parse_tree, $literal);
-
- # Handle E<> escapes.
- if ($command eq 'E') {
- if (/^\d+$/) {
- return bless \ chr ($_), 'Pod::Man::String';
- } elsif (exists $ESCAPES{$_}) {
- return bless \ "$ESCAPES{$_}", 'Pod::Man::String';
- } else {
- carp "Unknown escape E<$1>";
- return bless \ "E<$_>", 'Pod::Man::String';
- }
- }
-
- # For all the other sequences, empty content produces no output.
- return '' if $_ eq '';
-
- # Handle formatting sequences.
- if ($command eq 'B') {
- return bless \ ('\f(BS' . $_ . '\f(BE'), 'Pod::Man::String';
- } elsif ($command eq 'F') {
- return bless \ ('\f(IS' . $_ . '\f(IE'), 'Pod::Man::String';
- } elsif ($command eq 'I') {
- return bless \ ('\f(IS' . $_ . '\f(IE'), 'Pod::Man::String';
- } elsif ($command eq 'C') {
- return bless \ ('\f(FS\*(C`' . $_ . "\\*(C'\\f(FE"),
- 'Pod::Man::String';
- }
-
- # Handle links.
- if ($command eq 'L') {
- # A bug in lvalue subs in 5.6 requires the temporary variable.
- my $tmp = $self->buildlink ($_);
- return bless \ "$tmp", 'Pod::Man::String';
- }
-
- # Whitespace protection replaces whitespace with "\ ".
- if ($command eq 'S') {
- s/\s+/\\ /g;
- return bless \ "$_", 'Pod::Man::String';
- }
-
- # Add an index entry to the list of ones waiting to be output.
- if ($command eq 'X') { push (@{ $$self{INDEX} }, $_); return '' }
-
- # Anything else is unknown.
- carp "Unknown sequence $command<$_>";
-}
-
-
-############################################################################
-# Command paragraphs
-############################################################################
-
-# All command paragraphs take the paragraph and the line number.
-
-# First level heading. We can't output .IX in the NAME section due to a bug
-# in some versions of catman, so don't output a .IX for that section. .SH
-# already uses small caps, so remove any E<> sequences that would cause
-# them.
-sub cmd_head1 {
- my $self = shift;
- local $_ = $self->parse (@_);
- s/\s+$//;
- s/\\s-?\d//g;
- s/\s*\n\s*/ /g;
- if ($$self{ITEMS} > 1) {
- $$self{ITEMS} = 0;
- $self->output (".PD\n");
- }
- $self->output ($self->switchquotes ('.SH', $self->mapfonts ($_)));
- $self->outindex (($_ eq 'NAME') ? () : ('Header', $_));
- $$self{NEEDSPACE} = 0;
-}
-
-# Second level heading.
-sub cmd_head2 {
- my $self = shift;
- local $_ = $self->parse (@_);
- s/\s+$//;
- s/\s*\n\s*/ /g;
- if ($$self{ITEMS} > 1) {
- $$self{ITEMS} = 0;
- $self->output (".PD\n");
- }
- $self->output ($self->switchquotes ('.Sh', $self->mapfonts ($_)));
- $self->outindex ('Subsection', $_);
- $$self{NEEDSPACE} = 0;
-}
-
-# Third level heading.
-sub cmd_head3 {
- my $self = shift;
- local $_ = $self->parse (@_);
- s/\s+$//;
- s/\s*\n\s*/ /g;
- if ($$self{ITEMS} > 1) {
- $$self{ITEMS} = 0;
- $self->output (".PD\n");
- }
- $self->makespace;
- $self->output ($self->switchquotes ('.I', $self->mapfonts ($_)));
- $self->outindex ('Subsection', $_);
- $$self{NEEDSPACE} = 1;
-}
-
-# Fourth level heading.
-sub cmd_head4 {
- my $self = shift;
- local $_ = $self->parse (@_);
- s/\s+$//;
- s/\s*\n\s*/ /g;
- if ($$self{ITEMS} > 1) {
- $$self{ITEMS} = 0;
- $self->output (".PD\n");
- }
- $self->makespace;
- $self->output ($self->textmapfonts ($_) . "\n");
- $self->outindex ('Subsection', $_);
- $$self{NEEDSPACE} = 1;
-}
-
-# Start a list. For indents after the first, wrap the outside indent in .RS
-# so that hanging paragraph tags will be correct.
-sub cmd_over {
- my $self = shift;
- local $_ = shift;
- unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} }
- if (@{ $$self{INDENTS} } > 0) {
- $self->output (".RS $$self{INDENT}\n");
- }
- push (@{ $$self{INDENTS} }, $$self{INDENT});
- $$self{INDENT} = ($_ + 0);
-}
-
-# End a list. If we've closed an embedded indent, we've mangled the hanging
-# paragraph indent, so temporarily replace it with .RS and set WEIRDINDENT.
-# We'll close that .RS at the next =back or =item.
-sub cmd_back {
- my $self = shift;
- $$self{INDENT} = pop @{ $$self{INDENTS} };
- unless (defined $$self{INDENT}) {
- carp "Unmatched =back";
- $$self{INDENT} = 0;
- }
- if ($$self{WEIRDINDENT}) {
- $self->output (".RE\n");
- $$self{WEIRDINDENT} = 0;
- }
- if (@{ $$self{INDENTS} } > 0) {
- $self->output (".RE\n");
- $self->output (".RS $$self{INDENT}\n");
- $$self{WEIRDINDENT} = 1;
- }
- $$self{NEEDSPACE} = 1;
-}
-
-# An individual list item. Emit an index entry for anything that's
-# interesting, but don't emit index entries for things like bullets and
-# numbers. rofficate bullets too while we're at it (so for nice output, use
-# * for your lists rather than o or . or - or some other thing). Newlines
-# in an item title are turned into spaces since *roff can't handle them
-# embedded.
-sub cmd_item {
- my $self = shift;
- local $_ = $self->parse (@_);
- s/\s+$//;
- s/\s*\n\s*/ /g;
- my $index;
- if (/\w/ && !/^\w[.\)]\s*$/) {
- $index = $_;
- $index =~ s/^\s*[-*+o.]?(?:\s+|\Z)//;
- }
- s/^\*(\s|\Z)/\\\(bu$1/;
- if ($$self{WEIRDINDENT}) {
- $self->output (".RE\n");
- $$self{WEIRDINDENT} = 0;
- }
- $_ = $self->textmapfonts ($_);
- $self->output (".PD 0\n") if ($$self{ITEMS} == 1);
- $self->output ($self->switchquotes ('.Ip', $_, $$self{INDENT}));
- $self->outindex ($index ? ('Item', $index) : ());
- $$self{NEEDSPACE} = 0;
- $$self{ITEMS}++;
-}
-
-# Begin a block for a particular translator. Setting VERBATIM triggers
-# special handling in textblock().
-sub cmd_begin {
- my $self = shift;
- local $_ = shift;
- my ($kind) = /^(\S+)/ or return;
- if ($kind eq 'man' || $kind eq 'roff') {
- $$self{VERBATIM} = 1;
- } else {
- $$self{EXCLUDE} = 1;
- }
-}
-
-# End a block for a particular translator. We assume that all =begin/=end
-# pairs are properly closed.
-sub cmd_end {
- my $self = shift;
- $$self{EXCLUDE} = 0;
- $$self{VERBATIM} = 0;
-}
-
-# One paragraph for a particular translator. Ignore it unless it's intended
-# for man or roff, in which case we output it verbatim.
-sub cmd_for {
- my $self = shift;
- local $_ = shift;
- return unless s/^(?:man|roff)\b[ \t]*\n?//;
- $self->output ($_);
-}
-
-
-############################################################################
-# Link handling
-############################################################################
-
-# Handle links. We can't actually make real hyperlinks, so this is all to
-# figure out what text and formatting we print out.
-sub buildlink {
- my $self = shift;
- local $_ = shift;
-
- # Smash whitespace in case we were split across multiple lines.
- s/\s+/ /g;
-
- # If we were given any explicit text, just output it.
- if (m{ ^ ([^|]+) \| }x) { return $1 }
-
- # Okay, leading and trailing whitespace isn't important.
- s/^\s+//;
- s/\s+$//;
-
- # If the argument looks like a URL, return it verbatim. This only
- # handles URLs that use the server syntax.
- if (m%^[a-z]+://\S+$%) { return $_ }
-
- # Default to using the whole content of the link entry as a section
- # name. Note that L<manpage/> forces a manpage interpretation, as does
- # something looking like L<manpage(section)>. Do the same thing to
- # L<manpage(section)> as we would to manpage(section) without the L<>;
- # see guesswork(). If we've added italics, don't add the "manpage"
- # text; markup is sufficient.
- my ($manpage, $section) = ('', $_);
- if (/^"\s*(.*?)\s*"$/) {
- $section = '"' . $1 . '"';
- } elsif (m{ ^ [-:.\w]+ (?: \( \S+ \) )? $ }x) {
- ($manpage, $section) = ($_, '');
- $manpage =~ s/^([^\(]+)\(/'\f(IS' . $1 . '\f(IE\|('/e;
- } elsif (m%/%) {
- ($manpage, $section) = split (/\s*\/\s*/, $_, 2);
- if ($manpage =~ /^[-:.\w]+(?:\(\S+\))?$/) {
- $manpage =~ s/^([^\(]+)\(/'\f(IS' . $1 . '\f(IE\|'/e;
- }
- $section =~ s/^\"\s*//;
- $section =~ s/\s*\"$//;
- }
- if ($manpage && $manpage !~ /\\f\(IS/) {
- $manpage = "the $manpage manpage";
- }
-
- # Now build the actual output text.
- my $text = '';
- if (!length ($section) && !length ($manpage)) {
- carp "Invalid link $_";
- } elsif (!length ($section)) {
- $text = $manpage;
- } elsif ($section =~ /^[:\w]+(?:\(\))?/) {
- $text .= 'the ' . $section . ' entry';
- $text .= (length $manpage) ? " in $manpage"
- : " elsewhere in this document";
- } else {
- if ($section !~ /^".*"$/) { $section = '"' . $section . '"' }
- $text .= 'the section on ' . $section;
- $text .= " in $manpage" if length $manpage;
- }
- $text;
-}
-
-
-############################################################################
-# Escaping and fontification
-############################################################################
-
-# At this point, we'll have embedded font codes of the form \f(<font>[SE]
-# where <font> is one of B, I, or F. Turn those into the right font start
-# or end codes. The old pod2man didn't get B<someI<thing> else> right;
-# after I<> it switched back to normal text rather than bold. We take care
-# of this by using variables as a combined pointer to our current font
-# sequence, and set each to the number of current nestings of start tags for
-# that font. Use them as a vector to look up what font sequence to use.
-#
-# \fP changes to the previous font, but only one previous font is kept. We
-# don't know what the outside level font is; normally it's R, but if we're
-# inside a heading it could be something else. So arrange things so that
-# the outside font is always the "previous" font and end with \fP instead of
-# \fR. Idea from Zack Weinberg.
-sub mapfonts {
- my $self = shift;
- local $_ = shift;
-
- my ($fixed, $bold, $italic) = (0, 0, 0);
- my %magic = (F => \$fixed, B => \$bold, I => \$italic);
- my $last = '\fR';
- s { \\f\((.)(.) } {
- my $sequence = '';
- my $f;
- if ($last ne '\fR') { $sequence = '\fP' }
- ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1;
- $f = $$self{FONTS}{($fixed && 1) . ($bold && 1) . ($italic && 1)};
- if ($f eq $last) {
- '';
- } else {
- if ($f ne '\fR') { $sequence .= $f }
- $last = $f;
- $sequence;
- }
- }gxe;
- $_;
-}
-
-# Unfortunately, there is a bug in Solaris 2.6 nroff (not present in GNU
-# groff) where the sequence \fB\fP\f(CW\fP leaves the font set to B rather
-# than R, presumably because \f(CW doesn't actually do a font change. To
-# work around this, use a separate textmapfonts for text blocks where the
-# default font is always R and only use the smart mapfonts for headings.
-sub textmapfonts {
- my $self = shift;
- local $_ = shift;
-
- my ($fixed, $bold, $italic) = (0, 0, 0);
- my %magic = (F => \$fixed, B => \$bold, I => \$italic);
- s { \\f\((.)(.) } {
- ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1;
- $$self{FONTS}{($fixed && 1) . ($bold && 1) . ($italic && 1)};
- }gxe;
- $_;
-}
-
-
-############################################################################
-# *roff-specific parsing
-############################################################################
-
-# Called instead of parse_text, calls parse_text with the right flags.
-sub parse {
- my $self = shift;
- $self->parse_text ({ -expand_seq => 'sequence',
- -expand_ptree => 'collapse' }, @_);
-}
-
-# Takes a parse tree and a flag saying whether or not to treat it as literal
-# text (not call guesswork on it), and returns the concatenation of all of
-# the text strings in that parse tree. If the literal flag isn't true,
-# guesswork() will be called on all plain scalars in the parse tree.
-# Otherwise, just escape backslashes in the normal case. If collapse is
-# being called on a C<> sequence, literal is set to 2, and we do some
-# additional cleanup. Assumes that everything in the parse tree is either a
-# scalar or a reference to a scalar.
-sub collapse {
- my ($self, $ptree, $literal) = @_;
- if ($literal) {
- return join ('', map {
- if (ref $_) {
- $$_;
- } else {
- s/\\/\\e/g;
- s/-/\\-/g if $literal > 1;
- s/__/_\\|_/g if $literal > 1;
- $_;
- }
- } $ptree->children);
- } else {
- return join ('', map {
- ref ($_) ? $$_ : $self->guesswork ($_)
- } $ptree->children);
- }
-}
-
-# Takes a text block to perform guesswork on; this is guaranteed not to
-# contain any interior sequences. Returns the text block with remapping
-# done.
-sub guesswork {
- my $self = shift;
- local $_ = shift;
-
- # rofficate backslashes.
- s/\\/\\e/g;
-
- # Ensure double underbars have a tiny space between them.
- s/__/_\\|_/g;
-
- # Make all caps a little smaller. Be careful here, since we don't want
- # to make @ARGV into small caps, nor do we want to fix the MIME in
- # MIME-Version, since it looks weird with the full-height V.
- s{
- ( ^ | [\s\(\"\'\`\[\{<>] )
- ( [A-Z] [A-Z] [/A-Z+:\d_\$&-]* )
- (?: (?= [\s>\}\]\)\'\".?!,;:] | -- ) | $ )
- } { $1 . '\s-1' . $2 . '\s0' }egx;
-
- # Turn PI into a pretty pi.
- s{ (?: \\s-1 | \b ) PI (?: \\s0 | \b ) } {\\*\(PI}gx;
-
- # Italize functions in the form func().
- s{
- \b
- (
- [:\w]+ (?:\\s-1)? \(\)
- )
- } { '\f(IS' . $1 . '\f(IE' }egx;
-
- # func(n) is a reference to a manual page. Make it \fIfunc\fR\|(n).
- s{
- \b
- (\w[-:.\w]+ (?:\\s-1)?)
- (
- \( [^\)] \)
- )
- } { '\f(IS' . $1 . '\f(IE\|' . $2 }egx;
-
- # Convert simple Perl variable references to a fixed-width font.
- s{
- ( \s+ )
- ( [\$\@%] [\w:]+ )
- (?! \( )
- } { $1 . '\f(FS' . $2 . '\f(FE'}egx;
-
- # Translate -- into a real em dash if it's used like one and fix up
- # dashes, but keep hyphens hyphens.
- s{ (\G|^|.) (-+) (\b|.) } {
- my ($pre, $dash, $post) = ($1, $2, $3);
- if (length ($dash) == 1) {
- ($pre =~ /[a-zA-Z]/) ? "$pre-$post" : "$pre\\-$post";
- } elsif (length ($dash) == 2
- && ((!$pre && !$post)
- || ($pre =~ /\w/ && !$post)
- || ($pre eq ' ' && $post eq ' ')
- || ($pre eq '=' && $post ne '=')
- || ($pre ne '=' && $post eq '='))) {
- "$pre\\*(--$post";
- } else {
- $pre . ('\-' x length $dash) . $post;
- }
- }egxs;
-
- # Fix up double quotes.
- s{ \" ([^\"]+) \" } { '\*(L"' . $1 . '\*(R"' }egx;
-
- # Make C++ into \*(C+, which is a squinched version.
- s{ \b C\+\+ } {\\*\(C+}gx;
-
- # All done.
- $_;
-}
-
-
-############################################################################
-# Output formatting
-############################################################################
-
-# Make vertical whitespace.
-sub makespace {
- my $self = shift;
- $self->output (".PD\n") if ($$self{ITEMS} > 1);
- $$self{ITEMS} = 0;
- $self->output ($$self{INDENT} > 0 ? ".Sp\n" : ".PP\n")
- if $$self{NEEDSPACE};
-}
-
-# Output any pending index entries, and optionally an index entry given as
-# an argument. Support multiple index entries in X<> separated by slashes,
-# and strip special escapes from index entries.
-sub outindex {
- my ($self, $section, $index) = @_;
- my @entries = map { split m%\s*/\s*% } @{ $$self{INDEX} };
- return unless ($section || @entries);
- $$self{INDEX} = [];
- my $output;
- if (@entries) {
- my $output = '.IX Xref "'
- . join (' ', map { s/\"/\"\"/; $_ } @entries)
- . '"' . "\n";
- }
- if ($section) {
- $index =~ s/\"/\"\"/;
- $index =~ s/\\-/-/g;
- $index =~ s/\\(?:s-?\d|.\(..|.)//g;
- $output .= ".IX $section " . '"' . $index . '"' . "\n";
- }
- $self->output ($output);
-}
-
-# Output text to the output device.
-sub output { print { $_[0]->output_handle } $_[1] }
-
-# Given a command and a single argument that may or may not contain double
-# quotes, handle double-quote formatting for it. If there are no double
-# quotes, just return the command followed by the argument in double quotes.
-# If there are double quotes, use an if statement to test for nroff, and for
-# nroff output the command followed by the argument in double quotes with
-# embedded double quotes doubled. For other formatters, remap paired double
-# quotes to LQUOTE and RQUOTE.
-sub switchquotes {
- my $self = shift;
- my $command = shift;
- local $_ = shift;
- my $extra = shift;
- s/\\\*\([LR]\"/\"/g;
-
- # We also have to deal with \*C` and \*C', which are used to add the
- # quotes around C<> text, since they may expand to " and if they do this
- # confuses the .SH macros and the like no end. Expand them ourselves.
- # If $extra is set, we're dealing with =item, which in most nroff macro
- # sets requires an extra level of quoting of double quotes.
- my $c_is_quote = ($$self{LQUOTE} =~ /\"/) || ($$self{RQUOTE} =~ /\"/);
- if (/\"/ || ($c_is_quote && /\\\*\(C[\'\`]/)) {
- s/\"/\"\"/g;
- my $troff = $_;
- $troff =~ s/\"\"([^\"]*)\"\"/\`\`$1\'\'/g;
- s/\\\*\(C\`/$$self{LQUOTE}/g;
- s/\\\*\(C\'/$$self{RQUOTE}/g;
- $troff =~ s/\\\*\(C[\'\`]//g;
- s/\"/\"\"/g if $extra;
- $troff =~ s/\"/\"\"/g if $extra;
- $_ = qq("$_") . ($extra ? " $extra" : '');
- $troff = qq("$troff") . ($extra ? " $extra" : '');
- return ".if n $command $_\n.el $command $troff\n";
- } else {
- $_ = qq("$_") . ($extra ? " $extra" : '');
- return "$command $_\n";
- }
-}
-
-__END__
-
-.\" These are some extra bits of roff that I don't want to lose track of
-.\" but that have been removed from the preamble to make it a bit shorter
-.\" since they're not currently being used. They're accents and special
-.\" characters we don't currently have escapes for.
-.if n \{\
-. ds ? ?
-. ds ! !
-. ds q
-.\}
-.if t \{\
-. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
-. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
-. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
-.\}
-.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
-.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
-.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
-.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
-.ds oe o\h'-(\w'o'u*4/10)'e
-.ds Oe O\h'-(\w'O'u*4/10)'E
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-. ds v \h'-1'\o'\(aa\(ga'
-. ds _ \h'-1'^
-. ds . \h'-1'.
-. ds 3 3
-. ds oe oe
-. ds Oe OE
-.\}
-
-############################################################################
-# Documentation
-############################################################################
-
-=head1 NAME
-
-Pod::Man - Convert POD data to formatted *roff input
-
-=head1 SYNOPSIS
-
- use Pod::Man;
- my $parser = Pod::Man->new (release => $VERSION, section => 8);
-
- # Read POD from STDIN and write to STDOUT.
- $parser->parse_from_filehandle;
-
- # Read POD from file.pod and write to file.1.
- $parser->parse_from_file ('file.pod', 'file.1');
-
-=head1 DESCRIPTION
-
-Pod::Man is a module to convert documentation in the POD format (the
-preferred language for documenting Perl) into *roff input using the man
-macro set. The resulting *roff code is suitable for display on a terminal
-using nroff(1), normally via man(1), or printing using troff(1). It is
-conventionally invoked using the driver script B<pod2man>, but it can also
-be used directly.
-
-As a derived class from Pod::Parser, Pod::Man supports the same methods and
-interfaces. See L<Pod::Parser> for all the details; briefly, one creates a
-new parser with C<Pod::Man-E<gt>new()> and then calls either
-parse_from_filehandle() or parse_from_file().
-
-new() can take options, in the form of key/value pairs that control the
-behavior of the parser. See below for details.
-
-If no options are given, Pod::Man uses the name of the input file with any
-trailing C<.pod>, C<.pm>, or C<.pl> stripped as the man page title, to
-section 1 unless the file ended in C<.pm> in which case it defaults to
-section 3, to a centered title of "User Contributed Perl Documentation", to
-a centered footer of the Perl version it is run with, and to a left-hand
-footer of the modification date of its input (or the current date if given
-STDIN for input).
-
-Pod::Man assumes that your *roff formatters have a fixed-width font named
-CW. If yours is called something else (like CR), use the C<fixed> option to
-specify it. This generally only matters for troff output for printing.
-Similarly, you can set the fonts used for bold, italic, and bold italic
-fixed-width output.
-
-Besides the obvious pod conversions, Pod::Man also takes care of formatting
-func(), func(n), and simple variable references like $foo or @bar so you
-don't have to use code escapes for them; complex expressions like
-C<$fred{'stuff'}> will still need to be escaped, though. It also translates
-dashes that aren't used as hyphens into en dashes, makes long dashes--like
-this--into proper em dashes, fixes "paired quotes," makes C++ and PI look
-right, puts a little space between double underbars, makes ALLCAPS a teeny
-bit smaller in troff(1), and escapes stuff that *roff treats as special so
-that you don't have to.
-
-The recognized options to new() are as follows. All options take a single
-argument.
-
-=over 4
-
-=item center
-
-Sets the centered page header to use instead of "User Contributed Perl
-Documentation".
-
-=item date
-
-Sets the left-hand footer. By default, the modification date of the input
-file will be used, or the current date if stat() can't find that file (the
-case if the input is from STDIN), and the date will be formatted as
-YYYY-MM-DD.
-
-=item fixed
-
-The fixed-width font to use for vertabim text and code. Defaults to CW.
-Some systems may want CR instead. Only matters for troff(1) output.
-
-=item fixedbold
-
-Bold version of the fixed-width font. Defaults to CB. Only matters for
-troff(1) output.
-
-=item fixeditalic
-
-Italic version of the fixed-width font (actually, something of a misnomer,
-since most fixed-width fonts only have an oblique version, not an italic
-version). Defaults to CI. Only matters for troff(1) output.
-
-=item fixedbolditalic
-
-Bold italic (probably actually oblique) version of the fixed-width font.
-Pod::Man doesn't assume you have this, and defaults to CB. Some systems
-(such as Solaris) have this font available as CX. Only matters for troff(1)
-output.
-
-=item quotes
-
-Sets the quote marks used to surround CE<lt>> text. If the value is a
-single character, it is used as both the left and right quote; if it is two
-characters, the first character is used as the left quote and the second as
-the right quoted; and if it is four characters, the first two are used as
-the left quote and the second two as the right quote.
-
-This may also be set to the special value C<none>, in which case no quote
-marks are added around CE<lt>> text (but the font is still changed for troff
-output).
-
-=item release
-
-Set the centered footer. By default, this is the version of Perl you run
-Pod::Man under. Note that some system an macro sets assume that the
-centered footer will be a modification date and will prepend something like
-"Last modified: "; if this is the case, you may want to set C<release> to
-the last modified date and C<date> to the version number.
-
-=item section
-
-Set the section for the C<.TH> macro. The standard section numbering
-convention is to use 1 for user commands, 2 for system calls, 3 for
-functions, 4 for devices, 5 for file formats, 6 for games, 7 for
-miscellaneous information, and 8 for administrator commands. There is a lot
-of variation here, however; some systems (like Solaris) use 4 for file
-formats, 5 for miscellaneous information, and 7 for devices. Still others
-use 1m instead of 8, or some mix of both. About the only section numbers
-that are reliably consistent are 1, 2, and 3.
-
-By default, section 1 will be used unless the file ends in .pm in which case
-section 3 will be selected.
-
-=back
-
-The standard Pod::Parser method parse_from_filehandle() takes up to two
-arguments, the first being the file handle to read POD from and the second
-being the file handle to write the formatted output to. The first defaults
-to STDIN if not given, and the second defaults to STDOUT. The method
-parse_from_file() is almost identical, except that its two arguments are the
-input and output disk files instead. See L<Pod::Parser> for the specific
-details.
-
-=head1 DIAGNOSTICS
-
-=over 4
-
-=item roff font should be 1 or 2 chars, not "%s"
-
-(F) You specified a *roff font (using C<fixed>, C<fixedbold>, etc.) that
-wasn't either one or two characters. Pod::Man doesn't support *roff fonts
-longer than two characters, although some *roff extensions do (the canonical
-versions of nroff(1) and troff(1) don't either).
-
-=item Invalid link %s
-
-(W) The POD source contained a C<LE<lt>E<gt>> sequence that Pod::Man was
-unable to parse. You should never see this error message; it probably
-indicates a bug in Pod::Man.
-
-=item Invalid quote specification "%s"
-
-(F) The quote specification given (the quotes option to the constructor) was
-invalid. A quote specification must be one, two, or four characters long.
-
-=item %s:%d: Unknown command paragraph "%s".
-
-(W) The POD source contained a non-standard command paragraph (something of
-the form C<=command args>) that Pod::Man didn't know about. It was ignored.
-
-=item Unknown escape EE<lt>%sE<gt>
-
-(W) The POD source contained an C<EE<lt>E<gt>> escape that Pod::Man didn't
-know about. C<EE<lt>%sE<gt>> was printed verbatim in the output.
-
-=item Unknown sequence %s
-
-(W) The POD source contained a non-standard interior sequence (something of
-the form C<XE<lt>E<gt>>) that Pod::Man didn't know about. It was ignored.
-
-=item %s: Unknown command paragraph "%s" on line %d.
-
-(W) The POD source contained a non-standard command paragraph (something of
-the form C<=command args>) that Pod::Man didn't know about. It was ignored.
-
-=item Unmatched =back
-
-(W) Pod::Man encountered a C<=back> command that didn't correspond to an
-C<=over> command.
-
-=back
-
-=head1 BUGS
-
-The lint-like features and strict POD format checking done by B<pod2man> are
-not yet implemented and should be, along with the corresponding C<lax>
-option.
-
-The NAME section should be recognized specially and index entries emitted
-for everything in that section. This would have to be deferred until the
-next section, since extraneous things in NAME tends to confuse various man
-page processors.
-
-The handling of hyphens, en dashes, and em dashes is somewhat fragile, and
-one may get the wrong one under some circumstances. This should only matter
-for troff(1) output.
-
-When and whether to use small caps is somewhat tricky, and Pod::Man doesn't
-necessarily get it right.
-
-Pod::Man doesn't handle font names longer than two characters. Neither do
-most troff(1) implementations, but GNU troff does as an extension. It would
-be nice to support as an option for those who want to use it.
-
-The preamble added to each output file is rather verbose, and most of it is
-only necessary in the presence of EE<lt>E<gt> escapes for non-ASCII
-characters. It would ideally be nice if all of those definitions were only
-output if needed, perhaps on the fly as the characters are used.
-
-Some of the automagic applied to file names assumes Unix directory
-separators.
-
-Pod::Man is excessively slow.
-
-=head1 SEE ALSO
-
-L<Pod::Parser|Pod::Parser>, perlpod(1), pod2man(1), nroff(1), troff(1),
-man(1), man(7)
-
-Ossanna, Joseph F., and Brian W. Kernighan. "Troff User's Manual,"
-Computing Science Technical Report No. 54, AT&T Bell Laboratories. This is
-the best documentation of standard nroff(1) and troff(1). At the time of
-this writing, it's available at http://www.cs.bell-labs.com/cm/cs/cstr.html.
-
-The man page documenting the man macro set may be man(5) instead of man(7)
-on your system. Also, please see pod2man(1) for extensive documentation on
-writing manual pages if you've not done it before and aren't familiar with
-the conventions.
-
-=head1 AUTHOR
-
-Russ Allbery E<lt>rra@stanford.eduE<gt>, based I<very> heavily on the
-original B<pod2man> by Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>.
-
-=cut
diff --git a/contrib/perl5/lib/Pod/ParseUtils.pm b/contrib/perl5/lib/Pod/ParseUtils.pm
deleted file mode 100644
index 7d994c7..0000000
--- a/contrib/perl5/lib/Pod/ParseUtils.pm
+++ /dev/null
@@ -1,851 +0,0 @@
-#############################################################################
-# Pod/ParseUtils.pm -- helpers for POD parsing and conversion
-#
-# Copyright (C) 1999-2000 by Marek Rouchal. All rights reserved.
-# This file is part of "PodParser". PodParser is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::ParseUtils;
-
-use vars qw($VERSION);
-$VERSION = 0.22; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-
-=head1 NAME
-
-Pod::ParseUtils - helpers for POD parsing and conversion
-
-=head1 SYNOPSIS
-
- use Pod::ParseUtils;
-
- my $list = new Pod::List;
- my $link = Pod::Hyperlink->new('Pod::Parser');
-
-=head1 DESCRIPTION
-
-B<Pod::ParseUtils> contains a few object-oriented helper packages for
-POD parsing and processing (i.e. in POD formatters and translators).
-
-=cut
-
-#-----------------------------------------------------------------------------
-# Pod::List
-#
-# class to hold POD list info (=over, =item, =back)
-#-----------------------------------------------------------------------------
-
-package Pod::List;
-
-use Carp;
-
-=head2 Pod::List
-
-B<Pod::List> can be used to hold information about POD lists
-(written as =over ... =item ... =back) for further processing.
-The following methods are available:
-
-=over 4
-
-=item Pod::List-E<gt>new()
-
-Create a new list object. Properties may be specified through a hash
-reference like this:
-
- my $list = Pod::List->new({ -start => $., -indent => 4 });
-
-See the individual methods/properties for details.
-
-=cut
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %params = @_;
- my $self = {%params};
- bless $self, $class;
- $self->initialize();
- return $self;
-}
-
-sub initialize {
- my $self = shift;
- $self->{-file} ||= 'unknown';
- $self->{-start} ||= 'unknown';
- $self->{-indent} ||= 4; # perlpod: "should be the default"
- $self->{_items} = [];
- $self->{-type} ||= '';
-}
-
-=item $list-E<gt>file()
-
-Without argument, retrieves the file name the list is in. This must
-have been set before by either specifying B<-file> in the B<new()>
-method or by calling the B<file()> method with a scalar argument.
-
-=cut
-
-# The POD file name the list appears in
-sub file {
- return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
-}
-
-=item $list-E<gt>start()
-
-Without argument, retrieves the line number where the list started.
-This must have been set before by either specifying B<-start> in the
-B<new()> method or by calling the B<start()> method with a scalar
-argument.
-
-=cut
-
-# The line in the file the node appears
-sub start {
- return (@_ > 1) ? ($_[0]->{-start} = $_[1]) : $_[0]->{-start};
-}
-
-=item $list-E<gt>indent()
-
-Without argument, retrieves the indent level of the list as specified
-in C<=over n>. This must have been set before by either specifying
-B<-indent> in the B<new()> method or by calling the B<indent()> method
-with a scalar argument.
-
-=cut
-
-# indent level
-sub indent {
- return (@_ > 1) ? ($_[0]->{-indent} = $_[1]) : $_[0]->{-indent};
-}
-
-=item $list-E<gt>type()
-
-Without argument, retrieves the list type, which can be an arbitrary value,
-e.g. C<OL>, C<UL>, ... when thinking the HTML way.
-This must have been set before by either specifying
-B<-type> in the B<new()> method or by calling the B<type()> method
-with a scalar argument.
-
-=cut
-
-# The type of the list (UL, OL, ...)
-sub type {
- return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type};
-}
-
-=item $list-E<gt>rx()
-
-Without argument, retrieves a regular expression for simplifying the
-individual item strings once the list type has been determined. Usage:
-E.g. when converting to HTML, one might strip the leading number in
-an ordered list as C<E<lt>OLE<gt>> already prints numbers itself.
-This must have been set before by either specifying
-B<-rx> in the B<new()> method or by calling the B<rx()> method
-with a scalar argument.
-
-=cut
-
-# The regular expression to simplify the items
-sub rx {
- return (@_ > 1) ? ($_[0]->{-rx} = $_[1]) : $_[0]->{-rx};
-}
-
-=item $list-E<gt>item()
-
-Without argument, retrieves the array of the items in this list.
-The items may be represented by any scalar.
-If an argument has been given, it is pushed on the list of items.
-
-=cut
-
-# The individual =items of this list
-sub item {
- my ($self,$item) = @_;
- if(defined $item) {
- push(@{$self->{_items}}, $item);
- return $item;
- }
- else {
- return @{$self->{_items}};
- }
-}
-
-=item $list-E<gt>parent()
-
-Without argument, retrieves information about the parent holding this
-list, which is represented as an arbitrary scalar.
-This must have been set before by either specifying
-B<-parent> in the B<new()> method or by calling the B<parent()> method
-with a scalar argument.
-
-=cut
-
-# possibility for parsers/translators to store information about the
-# lists's parent object
-sub parent {
- return (@_ > 1) ? ($_[0]->{-parent} = $_[1]) : $_[0]->{-parent};
-}
-
-=item $list-E<gt>tag()
-
-Without argument, retrieves information about the list tag, which can be
-any scalar.
-This must have been set before by either specifying
-B<-tag> in the B<new()> method or by calling the B<tag()> method
-with a scalar argument.
-
-=back
-
-=cut
-
-# possibility for parsers/translators to store information about the
-# list's object
-sub tag {
- return (@_ > 1) ? ($_[0]->{-tag} = $_[1]) : $_[0]->{-tag};
-}
-
-#-----------------------------------------------------------------------------
-# Pod::Hyperlink
-#
-# class to manipulate POD hyperlinks (L<>)
-#-----------------------------------------------------------------------------
-
-package Pod::Hyperlink;
-
-=head2 Pod::Hyperlink
-
-B<Pod::Hyperlink> is a class for manipulation of POD hyperlinks. Usage:
-
- my $link = Pod::Hyperlink->new('alternative text|page/"section in page"');
-
-The B<Pod::Hyperlink> class is mainly designed to parse the contents of the
-C<LE<lt>...E<gt>> sequence, providing a simple interface for accessing the
-different parts of a POD hyperlink for further processing. It can also be
-used to construct hyperlinks.
-
-=over 4
-
-=item Pod::Hyperlink-E<gt>new()
-
-The B<new()> method can either be passed a set of key/value pairs or a single
-scalar value, namely the contents of a C<LE<lt>...E<gt>> sequence. An object
-of the class C<Pod::Hyperlink> is returned. The value C<undef> indicates a
-failure, the error message is stored in C<$@>.
-
-=cut
-
-use Carp;
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my $self = +{};
- bless $self, $class;
- $self->initialize();
- if(defined $_[0]) {
- if(ref($_[0])) {
- # called with a list of parameters
- %$self = %{$_[0]};
- $self->_construct_text();
- }
- else {
- # called with L<> contents
- return undef unless($self->parse($_[0]));
- }
- }
- return $self;
-}
-
-sub initialize {
- my $self = shift;
- $self->{-line} ||= 'undef';
- $self->{-file} ||= 'undef';
- $self->{-page} ||= '';
- $self->{-node} ||= '';
- $self->{-alttext} ||= '';
- $self->{-type} ||= 'undef';
- $self->{_warnings} = [];
-}
-
-=item $link-E<gt>parse($string)
-
-This method can be used to (re)parse a (new) hyperlink, i.e. the contents
-of a C<LE<lt>...E<gt>> sequence. The result is stored in the current object.
-Warnings are stored in the B<warnings> property.
-E.g. sections like C<LE<lt>open(2)E<gt>> are deprected, as they do not point
-to Perl documents. C<LE<lt>DBI::foo(3p)E<gt>> is wrong as well, the manpage
-section can simply be dropped.
-
-=cut
-
-sub parse {
- my $self = shift;
- local($_) = $_[0];
- # syntax check the link and extract destination
- my ($alttext,$page,$node,$type) = (undef,'','','');
-
- $self->{_warnings} = [];
-
- # collapse newlines with whitespace
- s/\s*\n+\s*/ /g;
-
- # strip leading/trailing whitespace
- if(s/^[\s\n]+//) {
- $self->warning("ignoring leading whitespace in link");
- }
- if(s/[\s\n]+$//) {
- $self->warning("ignoring trailing whitespace in link");
- }
- unless(length($_)) {
- _invalid_link("empty link");
- return undef;
- }
-
- ## Check for different possibilities. This is tedious and error-prone
- # we match all possibilities (alttext, page, section/item)
- #warn "DEBUG: link=$_\n";
-
- # only page
- # problem: a lot of people use (), or (1) or the like to indicate
- # man page sections. But this collides with L<func()> that is supposed
- # to point to an internal funtion...
- my $page_rx = '[\w.]+(?:::[\w.]+)*(?:[(](?:\d\w*|)[)]|)';
- # page name only
- if(m!^($page_rx)$!o) {
- $page = $1;
- $type = 'page';
- }
- # alttext, page and "section"
- elsif(m!^(.*?)\s*[|]\s*($page_rx)\s*/\s*"(.+)"$!o) {
- ($alttext, $page, $node) = ($1, $2, $3);
- $type = 'section';
- }
- # alttext and page
- elsif(m!^(.*?)\s*[|]\s*($page_rx)$!o) {
- ($alttext, $page) = ($1, $2);
- $type = 'page';
- }
- # alttext and "section"
- elsif(m!^(.*?)\s*[|]\s*(?:/\s*|)"(.+)"$!) {
- ($alttext, $node) = ($1,$2);
- $type = 'section';
- }
- # page and "section"
- elsif(m!^($page_rx)\s*/\s*"(.+)"$!o) {
- ($page, $node) = ($1, $2);
- $type = 'section';
- }
- # page and item
- elsif(m!^($page_rx)\s*/\s*(.+)$!o) {
- ($page, $node) = ($1, $2);
- $type = 'item';
- }
- # only "section"
- elsif(m!^/?"(.+)"$!) {
- $node = $1;
- $type = 'section';
- }
- # only item
- elsif(m!^\s*/(.+)$!) {
- $node = $1;
- $type = 'item';
- }
- # non-standard: Hyperlink
- elsif(m!^((?:http|ftp|mailto|news):.+)$!i) {
- $node = $1;
- $type = 'hyperlink';
- }
- # alttext, page and item
- elsif(m!^(.*?)\s*[|]\s*($page_rx)\s*/\s*(.+)$!o) {
- ($alttext, $page, $node) = ($1, $2, $3);
- $type = 'item';
- }
- # alttext and item
- elsif(m!^(.*?)\s*[|]\s*/(.+)$!) {
- ($alttext, $node) = ($1,$2);
- }
- # nonstandard: alttext and hyperlink
- elsif(m!^(.*?)\s*[|]\s*((?:http|ftp|mailto|news):.+)$!) {
- ($alttext, $node) = ($1,$2);
- $type = 'hyperlink';
- }
- # must be an item or a "malformed" section (without "")
- else {
- $node = $_;
- $type = 'item';
- }
- # collapse whitespace in nodes
- $node =~ s/\s+/ /gs;
-
- # empty alternative text expands to node name
- if(defined $alttext) {
- if(!length($alttext)) {
- $alttext = $node | $page;
- }
- }
- else {
- $alttext = '';
- }
-
- if($page =~ /[(]\w*[)]$/) {
- $self->warning("(section) in '$page' deprecated");
- }
- if($node =~ m:[|/]:) {
- $self->warning("node '$node' contains non-escaped | or /");
- }
- if($alttext =~ m:[|/]:) {
- $self->warning("alternative text '$node' contains non-escaped | or /");
- }
- $self->{-page} = $page;
- $self->{-node} = $node;
- $self->{-alttext} = $alttext;
- #warn "DEBUG: page=$page section=$section item=$item alttext=$alttext\n";
- $self->{-type} = $type;
- $self->_construct_text();
- 1;
-}
-
-sub _construct_text {
- my $self = shift;
- my $alttext = $self->alttext();
- my $type = $self->type();
- my $section = $self->node();
- my $page = $self->page();
- my $page_ext = '';
- $page =~ s/([(]\w*[)])$// && ($page_ext = $1);
- if($alttext) {
- $self->{_text} = $alttext;
- }
- elsif($type eq 'hyperlink') {
- $self->{_text} = $section;
- }
- else {
- $self->{_text} = (!$section ? '' :
- $type eq 'item' ? "the $section entry" :
- "the section on $section" ) .
- ($page ? ($section ? ' in ':'') . "the $page$page_ext manpage" :
- ' elsewhere in this document');
- }
- # for being marked up later
- # use the non-standard markers P<> and Q<>, so that the resulting
- # text can be parsed by the translators. It's their job to put
- # the correct hypertext around the linktext
- if($alttext) {
- $self->{_markup} = "Q<$alttext>";
- }
- elsif($type eq 'hyperlink') {
- $self->{_markup} = "Q<$section>";
- }
- else {
- $self->{_markup} = (!$section ? '' :
- $type eq 'item' ? "the Q<$section> entry" :
- "the section on Q<$section>" ) .
- ($page ? ($section ? ' in ':'') . "the P<$page>$page_ext manpage" :
- ' elsewhere in this document');
- }
-}
-
-=item $link-E<gt>markup($string)
-
-Set/retrieve the textual value of the link. This string contains special
-markers C<PE<lt>E<gt>> and C<QE<lt>E<gt>> that should be expanded by the
-translator's interior sequence expansion engine to the
-formatter-specific code to highlight/activate the hyperlink. The details
-have to be implemented in the translator.
-
-=cut
-
-#' retrieve/set markuped text
-sub markup {
- return (@_ > 1) ? ($_[0]->{_markup} = $_[1]) : $_[0]->{_markup};
-}
-
-=item $link-E<gt>text()
-
-This method returns the textual representation of the hyperlink as above,
-but without markers (read only). Depending on the link type this is one of
-the following alternatives (the + and * denote the portions of the text
-that are marked up):
-
- the +perl+ manpage
- the *$|* entry in the +perlvar+ manpage
- the section on *OPTIONS* in the +perldoc+ manpage
- the section on *DESCRIPTION* elsewhere in this document
-
-=cut
-
-# The complete link's text
-sub text {
- $_[0]->{_text};
-}
-
-=item $link-E<gt>warning()
-
-After parsing, this method returns any warnings encountered during the
-parsing process.
-
-=cut
-
-# Set/retrieve warnings
-sub warning {
- my $self = shift;
- if(@_) {
- push(@{$self->{_warnings}}, @_);
- return @_;
- }
- return @{$self->{_warnings}};
-}
-
-=item $link-E<gt>file()
-
-=item $link-E<gt>line()
-
-Just simple slots for storing information about the line and the file
-the link was encountered in. Has to be filled in manually.
-
-=cut
-
-# The line in the file the link appears
-sub line {
- return (@_ > 1) ? ($_[0]->{-line} = $_[1]) : $_[0]->{-line};
-}
-
-# The POD file name the link appears in
-sub file {
- return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
-}
-
-=item $link-E<gt>page()
-
-This method sets or returns the POD page this link points to.
-
-=cut
-
-# The POD page the link appears on
-sub page {
- if (@_ > 1) {
- $_[0]->{-page} = $_[1];
- $_[0]->_construct_text();
- }
- $_[0]->{-page};
-}
-
-=item $link-E<gt>node()
-
-As above, but the destination node text of the link.
-
-=cut
-
-# The link destination
-sub node {
- if (@_ > 1) {
- $_[0]->{-node} = $_[1];
- $_[0]->_construct_text();
- }
- $_[0]->{-node};
-}
-
-=item $link-E<gt>alttext()
-
-Sets or returns an alternative text specified in the link.
-
-=cut
-
-# Potential alternative text
-sub alttext {
- if (@_ > 1) {
- $_[0]->{-alttext} = $_[1];
- $_[0]->_construct_text();
- }
- $_[0]->{-alttext};
-}
-
-=item $link-E<gt>type()
-
-The node type, either C<section> or C<item>. As an unofficial type,
-there is also C<hyperlink>, derived from e.g. C<LE<lt>http://perl.comE<gt>>
-
-=cut
-
-# The type: item or headn
-sub type {
- return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type};
-}
-
-=item $link-E<gt>link()
-
-Returns the link as contents of C<LE<lt>E<gt>>. Reciprocal to B<parse()>.
-
-=back
-
-=cut
-
-# The link itself
-sub link {
- my $self = shift;
- my $link = $self->page() || '';
- if($self->node()) {
- my $node = $self->node();
- $text =~ s/\|/E<verbar>/g;
- $text =~ s:/:E<sol>:g;
- if($self->type() eq 'section') {
- $link .= ($link ? '/' : '') . '"' . $node . '"';
- }
- elsif($self->type() eq 'hyperlink') {
- $link = $self->node();
- }
- else { # item
- $link .= '/' . $node;
- }
- }
- if($self->alttext()) {
- my $text = $self->alttext();
- $text =~ s/\|/E<verbar>/g;
- $text =~ s:/:E<sol>:g;
- $link = "$text|$link";
- }
- $link;
-}
-
-sub _invalid_link {
- my ($msg) = @_;
- # this sets @_
- #eval { die "$msg\n" };
- #chomp $@;
- $@ = $msg; # this seems to work, too!
- undef;
-}
-
-#-----------------------------------------------------------------------------
-# Pod::Cache
-#
-# class to hold POD page details
-#-----------------------------------------------------------------------------
-
-package Pod::Cache;
-
-=head2 Pod::Cache
-
-B<Pod::Cache> holds information about a set of POD documents,
-especially the nodes for hyperlinks.
-The following methods are available:
-
-=over 4
-
-=item Pod::Cache-E<gt>new()
-
-Create a new cache object. This object can hold an arbitrary number of
-POD documents of class Pod::Cache::Item.
-
-=cut
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my $self = [];
- bless $self, $class;
- return $self;
-}
-
-=item $cache-E<gt>item()
-
-Add a new item to the cache. Without arguments, this method returns a
-list of all cache elements.
-
-=cut
-
-sub item {
- my ($self,%param) = @_;
- if(%param) {
- my $item = Pod::Cache::Item->new(%param);
- push(@$self, $item);
- return $item;
- }
- else {
- return @{$self};
- }
-}
-
-=item $cache-E<gt>find_page($name)
-
-Look for a POD document named C<$name> in the cache. Returns the
-reference to the corresponding Pod::Cache::Item object or undef if
-not found.
-
-=back
-
-=cut
-
-sub find_page {
- my ($self,$page) = @_;
- foreach(@$self) {
- if($_->page() eq $page) {
- return $_;
- }
- }
- undef;
-}
-
-package Pod::Cache::Item;
-
-=head2 Pod::Cache::Item
-
-B<Pod::Cache::Item> holds information about individual POD documents,
-that can be grouped in a Pod::Cache object.
-It is intended to hold information about the hyperlink nodes of POD
-documents.
-The following methods are available:
-
-=over 4
-
-=item Pod::Cache::Item-E<gt>new()
-
-Create a new object.
-
-=cut
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %params = @_;
- my $self = {%params};
- bless $self, $class;
- $self->initialize();
- return $self;
-}
-
-sub initialize {
- my $self = shift;
- $self->{-nodes} = [] unless(defined $self->{-nodes});
-}
-
-=item $cacheitem-E<gt>page()
-
-Set/retrieve the POD document name (e.g. "Pod::Parser").
-
-=cut
-
-# The POD page
-sub page {
- return (@_ > 1) ? ($_[0]->{-page} = $_[1]) : $_[0]->{-page};
-}
-
-=item $cacheitem-E<gt>description()
-
-Set/retrieve the POD short description as found in the C<=head1 NAME>
-section.
-
-=cut
-
-# The POD description, taken out of NAME if present
-sub description {
- return (@_ > 1) ? ($_[0]->{-description} = $_[1]) : $_[0]->{-description};
-}
-
-=item $cacheitem-E<gt>path()
-
-Set/retrieve the POD file storage path.
-
-=cut
-
-# The file path
-sub path {
- return (@_ > 1) ? ($_[0]->{-path} = $_[1]) : $_[0]->{-path};
-}
-
-=item $cacheitem-E<gt>file()
-
-Set/retrieve the POD file name.
-
-=cut
-
-# The POD file name
-sub file {
- return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
-}
-
-=item $cacheitem-E<gt>nodes()
-
-Add a node (or a list of nodes) to the document's node list. Note that
-the order is kept, i.e. start with the first node and end with the last.
-If no argument is given, the current list of nodes is returned in the
-same order the nodes have been added.
-A node can be any scalar, but usually is a pair of node string and
-unique id for the C<find_node> method to work correctly.
-
-=cut
-
-# The POD nodes
-sub nodes {
- my ($self,@nodes) = @_;
- if(@nodes) {
- push(@{$self->{-nodes}}, @nodes);
- return @nodes;
- }
- else {
- return @{$self->{-nodes}};
- }
-}
-
-=item $cacheitem-E<gt>find_node($name)
-
-Look for a node or index entry named C<$name> in the object.
-Returns the unique id of the node (i.e. the second element of the array
-stored in the node arry) or undef if not found.
-
-=cut
-
-sub find_node {
- my ($self,$node) = @_;
- my @search;
- push(@search, @{$self->{-nodes}}) if($self->{-nodes});
- push(@search, @{$self->{-idx}}) if($self->{-idx});
- foreach(@search) {
- if($_->[0] eq $node) {
- return $_->[1]; # id
- }
- }
- undef;
-}
-
-=item $cacheitem-E<gt>idx()
-
-Add an index entry (or a list of them) to the document's index list. Note that
-the order is kept, i.e. start with the first node and end with the last.
-If no argument is given, the current list of index entries is returned in the
-same order the entries have been added.
-An index entry can be any scalar, but usually is a pair of string and
-unique id.
-
-=back
-
-=cut
-
-# The POD index entries
-sub idx {
- my ($self,@idx) = @_;
- if(@idx) {
- push(@{$self->{-idx}}, @idx);
- return @idx;
- }
- else {
- return @{$self->{-idx}};
- }
-}
-
-=head1 AUTHOR
-
-Marek Rouchal E<lt>marek@saftsack.fs.uni-bayreuth.deE<gt>, borrowing
-a lot of things from L<pod2man> and L<pod2roff> as well as other POD
-processing tools by Tom Christiansen, Brad Appleton and Russ Allbery.
-
-=head1 SEE ALSO
-
-L<pod2man>, L<pod2roff>, L<Pod::Parser>, L<Pod::Checker>,
-L<pod2html>
-
-=cut
-
-1;
diff --git a/contrib/perl5/lib/Pod/Parser.pm b/contrib/perl5/lib/Pod/Parser.pm
deleted file mode 100644
index 6782519..0000000
--- a/contrib/perl5/lib/Pod/Parser.pm
+++ /dev/null
@@ -1,1768 +0,0 @@
-#############################################################################
-# Pod/Parser.pm -- package which defines a base class for parsing POD docs.
-#
-# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
-# This file is part of "PodParser". PodParser is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::Parser;
-
-use vars qw($VERSION);
-$VERSION = 1.13; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-
-#############################################################################
-
-=head1 NAME
-
-Pod::Parser - base class for creating POD filters and translators
-
-=head1 SYNOPSIS
-
- use Pod::Parser;
-
- package MyParser;
- @ISA = qw(Pod::Parser);
-
- sub command {
- my ($parser, $command, $paragraph, $line_num) = @_;
- ## Interpret the command and its text; sample actions might be:
- if ($command eq 'head1') { ... }
- elsif ($command eq 'head2') { ... }
- ## ... other commands and their actions
- my $out_fh = $parser->output_handle();
- my $expansion = $parser->interpolate($paragraph, $line_num);
- print $out_fh $expansion;
- }
-
- sub verbatim {
- my ($parser, $paragraph, $line_num) = @_;
- ## Format verbatim paragraph; sample actions might be:
- my $out_fh = $parser->output_handle();
- print $out_fh $paragraph;
- }
-
- sub textblock {
- my ($parser, $paragraph, $line_num) = @_;
- ## Translate/Format this block of text; sample actions might be:
- my $out_fh = $parser->output_handle();
- my $expansion = $parser->interpolate($paragraph, $line_num);
- print $out_fh $expansion;
- }
-
- sub interior_sequence {
- my ($parser, $seq_command, $seq_argument) = @_;
- ## Expand an interior sequence; sample actions might be:
- return "*$seq_argument*" if ($seq_command eq 'B');
- return "`$seq_argument'" if ($seq_command eq 'C');
- return "_${seq_argument}_'" if ($seq_command eq 'I');
- ## ... other sequence commands and their resulting text
- }
-
- package main;
-
- ## Create a parser object and have it parse file whose name was
- ## given on the command-line (use STDIN if no files were given).
- $parser = new MyParser();
- $parser->parse_from_filehandle(\*STDIN) if (@ARGV == 0);
- for (@ARGV) { $parser->parse_from_file($_); }
-
-=head1 REQUIRES
-
-perl5.005, Pod::InputObjects, Exporter, Symbol, Carp
-
-=head1 EXPORTS
-
-Nothing.
-
-=head1 DESCRIPTION
-
-B<Pod::Parser> is a base class for creating POD filters and translators.
-It handles most of the effort involved with parsing the POD sections
-from an input stream, leaving subclasses free to be concerned only with
-performing the actual translation of text.
-
-B<Pod::Parser> parses PODs, and makes method calls to handle the various
-components of the POD. Subclasses of B<Pod::Parser> override these methods
-to translate the POD into whatever output format they desire.
-
-=head1 QUICK OVERVIEW
-
-To create a POD filter for translating POD documentation into some other
-format, you create a subclass of B<Pod::Parser> which typically overrides
-just the base class implementation for the following methods:
-
-=over 2
-
-=item *
-
-B<command()>
-
-=item *
-
-B<verbatim()>
-
-=item *
-
-B<textblock()>
-
-=item *
-
-B<interior_sequence()>
-
-=back
-
-You may also want to override the B<begin_input()> and B<end_input()>
-methods for your subclass (to perform any needed per-file and/or
-per-document initialization or cleanup).
-
-If you need to perform any preprocesssing of input before it is parsed
-you may want to override one or more of B<preprocess_line()> and/or
-B<preprocess_paragraph()>.
-
-Sometimes it may be necessary to make more than one pass over the input
-files. If this is the case you have several options. You can make the
-first pass using B<Pod::Parser> and override your methods to store the
-intermediate results in memory somewhere for the B<end_pod()> method to
-process. You could use B<Pod::Parser> for several passes with an
-appropriate state variable to control the operation for each pass. If
-your input source can't be reset to start at the beginning, you can
-store it in some other structure as a string or an array and have that
-structure implement a B<getline()> method (which is all that
-B<parse_from_filehandle()> uses to read input).
-
-Feel free to add any member data fields you need to keep track of things
-like current font, indentation, horizontal or vertical position, or
-whatever else you like. Be sure to read L<"PRIVATE METHODS AND DATA">
-to avoid name collisions.
-
-For the most part, the B<Pod::Parser> base class should be able to
-do most of the input parsing for you and leave you free to worry about
-how to intepret the commands and translate the result.
-
-Note that all we have described here in this quick overview is the
-simplest most straightforward use of B<Pod::Parser> to do stream-based
-parsing. It is also possible to use the B<Pod::Parser::parse_text> function
-to do more sophisticated tree-based parsing. See L<"TREE-BASED PARSING">.
-
-=head1 PARSING OPTIONS
-
-A I<parse-option> is simply a named option of B<Pod::Parser> with a
-value that corresponds to a certain specified behavior. These various
-behaviors of B<Pod::Parser> may be enabled/disabled by setting or
-or unsetting one or more I<parse-options> using the B<parseopts()> method.
-The set of currently accepted parse-options is as follows:
-
-=over 3
-
-=item B<-want_nonPODs> (default: unset)
-
-Normally (by default) B<Pod::Parser> will only provide access to
-the POD sections of the input. Input paragraphs that are not part
-of the POD-format documentation are not made available to the caller
-(not even using B<preprocess_paragraph()>). Setting this option to a
-non-empty, non-zero value will allow B<preprocess_paragraph()> to see
-non-POD sections of the input as well as POD sections. The B<cutting()>
-method can be used to determine if the corresponding paragraph is a POD
-paragraph, or some other input paragraph.
-
-=item B<-process_cut_cmd> (default: unset)
-
-Normally (by default) B<Pod::Parser> handles the C<=cut> POD directive
-by itself and does not pass it on to the caller for processing. Setting
-this option to a non-empty, non-zero value will cause B<Pod::Parser> to
-pass the C<=cut> directive to the caller just like any other POD command
-(and hence it may be processed by the B<command()> method).
-
-B<Pod::Parser> will still interpret the C<=cut> directive to mean that
-"cutting mode" has been (re)entered, but the caller will get a chance
-to capture the actual C<=cut> paragraph itself for whatever purpose
-it desires.
-
-=item B<-warnings> (default: unset)
-
-Normally (by default) B<Pod::Parser> recognizes a bare minimum of
-pod syntax errors and warnings and issues diagnostic messages
-for errors, but not for warnings. (Use B<Pod::Checker> to do more
-thorough checking of POD syntax.) Setting this option to a non-empty,
-non-zero value will cause B<Pod::Parser> to issue diagnostics for
-the few warnings it recognizes as well as the errors.
-
-=back
-
-Please see L<"parseopts()"> for a complete description of the interface
-for the setting and unsetting of parse-options.
-
-=cut
-
-#############################################################################
-
-use vars qw(@ISA);
-use strict;
-#use diagnostics;
-use Pod::InputObjects;
-use Carp;
-use Exporter;
-BEGIN {
- if ($] < 5.6) {
- require Symbol;
- import Symbol;
- }
-}
-@ISA = qw(Exporter);
-
-## These "variables" are used as local "glob aliases" for performance
-use vars qw(%myData %myOpts @input_stack);
-
-#############################################################################
-
-=head1 RECOMMENDED SUBROUTINE/METHOD OVERRIDES
-
-B<Pod::Parser> provides several methods which most subclasses will probably
-want to override. These methods are as follows:
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head1 B<command()>
-
- $parser->command($cmd,$text,$line_num,$pod_para);
-
-This method should be overridden by subclasses to take the appropriate
-action when a POD command paragraph (denoted by a line beginning with
-"=") is encountered. When such a POD directive is seen in the input,
-this method is called and is passed:
-
-=over 3
-
-=item C<$cmd>
-
-the name of the command for this POD paragraph
-
-=item C<$text>
-
-the paragraph text for the given POD paragraph command.
-
-=item C<$line_num>
-
-the line-number of the beginning of the paragraph
-
-=item C<$pod_para>
-
-a reference to a C<Pod::Paragraph> object which contains further
-information about the paragraph command (see L<Pod::InputObjects>
-for details).
-
-=back
-
-B<Note> that this method I<is> called for C<=pod> paragraphs.
-
-The base class implementation of this method simply treats the raw POD
-command as normal block of paragraph text (invoking the B<textblock()>
-method with the command paragraph).
-
-=cut
-
-sub command {
- my ($self, $cmd, $text, $line_num, $pod_para) = @_;
- ## Just treat this like a textblock
- $self->textblock($pod_para->raw_text(), $line_num, $pod_para);
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<verbatim()>
-
- $parser->verbatim($text,$line_num,$pod_para);
-
-This method may be overridden by subclasses to take the appropriate
-action when a block of verbatim text is encountered. It is passed the
-following parameters:
-
-=over 3
-
-=item C<$text>
-
-the block of text for the verbatim paragraph
-
-=item C<$line_num>
-
-the line-number of the beginning of the paragraph
-
-=item C<$pod_para>
-
-a reference to a C<Pod::Paragraph> object which contains further
-information about the paragraph (see L<Pod::InputObjects>
-for details).
-
-=back
-
-The base class implementation of this method simply prints the textblock
-(unmodified) to the output filehandle.
-
-=cut
-
-sub verbatim {
- my ($self, $text, $line_num, $pod_para) = @_;
- my $out_fh = $self->{_OUTPUT};
- print $out_fh $text;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<textblock()>
-
- $parser->textblock($text,$line_num,$pod_para);
-
-This method may be overridden by subclasses to take the appropriate
-action when a normal block of POD text is encountered (although the base
-class method will usually do what you want). It is passed the following
-parameters:
-
-=over 3
-
-=item C<$text>
-
-the block of text for the a POD paragraph
-
-=item C<$line_num>
-
-the line-number of the beginning of the paragraph
-
-=item C<$pod_para>
-
-a reference to a C<Pod::Paragraph> object which contains further
-information about the paragraph (see L<Pod::InputObjects>
-for details).
-
-=back
-
-In order to process interior sequences, subclasses implementations of
-this method will probably want to invoke either B<interpolate()> or
-B<parse_text()>, passing it the text block C<$text>, and the corresponding
-line number in C<$line_num>, and then perform any desired processing upon
-the returned result.
-
-The base class implementation of this method simply prints the text block
-as it occurred in the input stream).
-
-=cut
-
-sub textblock {
- my ($self, $text, $line_num, $pod_para) = @_;
- my $out_fh = $self->{_OUTPUT};
- print $out_fh $self->interpolate($text, $line_num);
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<interior_sequence()>
-
- $parser->interior_sequence($seq_cmd,$seq_arg,$pod_seq);
-
-This method should be overridden by subclasses to take the appropriate
-action when an interior sequence is encountered. An interior sequence is
-an embedded command within a block of text which appears as a command
-name (usually a single uppercase character) followed immediately by a
-string of text which is enclosed in angle brackets. This method is
-passed the sequence command C<$seq_cmd> and the corresponding text
-C<$seq_arg>. It is invoked by the B<interpolate()> method for each interior
-sequence that occurs in the string that it is passed. It should return
-the desired text string to be used in place of the interior sequence.
-The C<$pod_seq> argument is a reference to a C<Pod::InteriorSequence>
-object which contains further information about the interior sequence.
-Please see L<Pod::InputObjects> for details if you need to access this
-additional information.
-
-Subclass implementations of this method may wish to invoke the
-B<nested()> method of C<$pod_seq> to see if it is nested inside
-some other interior-sequence (and if so, which kind).
-
-The base class implementation of the B<interior_sequence()> method
-simply returns the raw text of the interior sequence (as it occurred
-in the input) to the caller.
-
-=cut
-
-sub interior_sequence {
- my ($self, $seq_cmd, $seq_arg, $pod_seq) = @_;
- ## Just return the raw text of the interior sequence
- return $pod_seq->raw_text();
-}
-
-#############################################################################
-
-=head1 OPTIONAL SUBROUTINE/METHOD OVERRIDES
-
-B<Pod::Parser> provides several methods which subclasses may want to override
-to perform any special pre/post-processing. These methods do I<not> have to
-be overridden, but it may be useful for subclasses to take advantage of them.
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head1 B<new()>
-
- my $parser = Pod::Parser->new();
-
-This is the constructor for B<Pod::Parser> and its subclasses. You
-I<do not> need to override this method! It is capable of constructing
-subclass objects as well as base class objects, provided you use
-any of the following constructor invocation styles:
-
- my $parser1 = MyParser->new();
- my $parser2 = new MyParser();
- my $parser3 = $parser2->new();
-
-where C<MyParser> is some subclass of B<Pod::Parser>.
-
-Using the syntax C<MyParser::new()> to invoke the constructor is I<not>
-recommended, but if you insist on being able to do this, then the
-subclass I<will> need to override the B<new()> constructor method. If
-you do override the constructor, you I<must> be sure to invoke the
-B<initialize()> method of the newly blessed object.
-
-Using any of the above invocations, the first argument to the
-constructor is always the corresponding package name (or object
-reference). No other arguments are required, but if desired, an
-associative array (or hash-table) my be passed to the B<new()>
-constructor, as in:
-
- my $parser1 = MyParser->new( MYDATA => $value1, MOREDATA => $value2 );
- my $parser2 = new MyParser( -myflag => 1 );
-
-All arguments passed to the B<new()> constructor will be treated as
-key/value pairs in a hash-table. The newly constructed object will be
-initialized by copying the contents of the given hash-table (which may
-have been empty). The B<new()> constructor for this class and all of its
-subclasses returns a blessed reference to the initialized object (hash-table).
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
- ## Any remaining arguments are treated as initial values for the
- ## hash that is used to represent this object.
- my %params = @_;
- my $self = { %params };
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- $self->initialize();
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<initialize()>
-
- $parser->initialize();
-
-This method performs any necessary object initialization. It takes no
-arguments (other than the object instance of course, which is typically
-copied to a local variable named C<$self>). If subclasses override this
-method then they I<must> be sure to invoke C<$self-E<gt>SUPER::initialize()>.
-
-=cut
-
-sub initialize {
- #my $self = shift;
- #return;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<begin_pod()>
-
- $parser->begin_pod();
-
-This method is invoked at the beginning of processing for each POD
-document that is encountered in the input. Subclasses should override
-this method to perform any per-document initialization.
-
-=cut
-
-sub begin_pod {
- #my $self = shift;
- #return;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<begin_input()>
-
- $parser->begin_input();
-
-This method is invoked by B<parse_from_filehandle()> immediately I<before>
-processing input from a filehandle. The base class implementation does
-nothing, however, subclasses may override it to perform any per-file
-initializations.
-
-Note that if multiple files are parsed for a single POD document
-(perhaps the result of some future C<=include> directive) this method
-is invoked for every file that is parsed. If you wish to perform certain
-initializations once per document, then you should use B<begin_pod()>.
-
-=cut
-
-sub begin_input {
- #my $self = shift;
- #return;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<end_input()>
-
- $parser->end_input();
-
-This method is invoked by B<parse_from_filehandle()> immediately I<after>
-processing input from a filehandle. The base class implementation does
-nothing, however, subclasses may override it to perform any per-file
-cleanup actions.
-
-Please note that if multiple files are parsed for a single POD document
-(perhaps the result of some kind of C<=include> directive) this method
-is invoked for every file that is parsed. If you wish to perform certain
-cleanup actions once per document, then you should use B<end_pod()>.
-
-=cut
-
-sub end_input {
- #my $self = shift;
- #return;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<end_pod()>
-
- $parser->end_pod();
-
-This method is invoked at the end of processing for each POD document
-that is encountered in the input. Subclasses should override this method
-to perform any per-document finalization.
-
-=cut
-
-sub end_pod {
- #my $self = shift;
- #return;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<preprocess_line()>
-
- $textline = $parser->preprocess_line($text, $line_num);
-
-This method should be overridden by subclasses that wish to perform
-any kind of preprocessing for each I<line> of input (I<before> it has
-been determined whether or not it is part of a POD paragraph). The
-parameter C<$text> is the input line; and the parameter C<$line_num> is
-the line number of the corresponding text line.
-
-The value returned should correspond to the new text to use in its
-place. If the empty string or an undefined value is returned then no
-further processing will be performed for this line.
-
-Please note that the B<preprocess_line()> method is invoked I<before>
-the B<preprocess_paragraph()> method. After all (possibly preprocessed)
-lines in a paragraph have been assembled together and it has been
-determined that the paragraph is part of the POD documentation from one
-of the selected sections, then B<preprocess_paragraph()> is invoked.
-
-The base class implementation of this method returns the given text.
-
-=cut
-
-sub preprocess_line {
- my ($self, $text, $line_num) = @_;
- return $text;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<preprocess_paragraph()>
-
- $textblock = $parser->preprocess_paragraph($text, $line_num);
-
-This method should be overridden by subclasses that wish to perform any
-kind of preprocessing for each block (paragraph) of POD documentation
-that appears in the input stream. The parameter C<$text> is the POD
-paragraph from the input file; and the parameter C<$line_num> is the
-line number for the beginning of the corresponding paragraph.
-
-The value returned should correspond to the new text to use in its
-place If the empty string is returned or an undefined value is
-returned, then the given C<$text> is ignored (not processed).
-
-This method is invoked after gathering up all the lines in a paragraph
-and after determining the cutting state of the paragraph,
-but before trying to further parse or interpret them. After
-B<preprocess_paragraph()> returns, the current cutting state (which
-is returned by C<$self-E<gt>cutting()>) is examined. If it evaluates
-to true then input text (including the given C<$text>) is cut (not
-processed) until the next POD directive is encountered.
-
-Please note that the B<preprocess_line()> method is invoked I<before>
-the B<preprocess_paragraph()> method. After all (possibly preprocessed)
-lines in a paragraph have been assembled together and either it has been
-determined that the paragraph is part of the POD documentation from one
-of the selected sections or the C<-want_nonPODs> option is true,
-then B<preprocess_paragraph()> is invoked.
-
-The base class implementation of this method returns the given text.
-
-=cut
-
-sub preprocess_paragraph {
- my ($self, $text, $line_num) = @_;
- return $text;
-}
-
-#############################################################################
-
-=head1 METHODS FOR PARSING AND PROCESSING
-
-B<Pod::Parser> provides several methods to process input text. These
-methods typically won't need to be overridden (and in some cases they
-can't be overridden), but subclasses may want to invoke them to exploit
-their functionality.
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head1 B<parse_text()>
-
- $ptree1 = $parser->parse_text($text, $line_num);
- $ptree2 = $parser->parse_text({%opts}, $text, $line_num);
- $ptree3 = $parser->parse_text(\%opts, $text, $line_num);
-
-This method is useful if you need to perform your own interpolation
-of interior sequences and can't rely upon B<interpolate> to expand
-them in simple bottom-up order order.
-
-The parameter C<$text> is a string or block of text to be parsed
-for interior sequences; and the parameter C<$line_num> is the
-line number curresponding to the beginning of C<$text>.
-
-B<parse_text()> will parse the given text into a parse-tree of "nodes."
-and interior-sequences. Each "node" in the parse tree is either a
-text-string, or a B<Pod::InteriorSequence>. The result returned is a
-parse-tree of type B<Pod::ParseTree>. Please see L<Pod::InputObjects>
-for more information about B<Pod::InteriorSequence> and B<Pod::ParseTree>.
-
-If desired, an optional hash-ref may be specified as the first argument
-to customize certain aspects of the parse-tree that is created and
-returned. The set of recognized option keywords are:
-
-=over 3
-
-=item B<-expand_seq> =E<gt> I<code-ref>|I<method-name>
-
-Normally, the parse-tree returned by B<parse_text()> will contain an
-unexpanded C<Pod::InteriorSequence> object for each interior-sequence
-encountered. Specifying B<-expand_seq> tells B<parse_text()> to "expand"
-every interior-sequence it sees by invoking the referenced function
-(or named method of the parser object) and using the return value as the
-expanded result.
-
-If a subroutine reference was given, it is invoked as:
-
- &$code_ref( $parser, $sequence )
-
-and if a method-name was given, it is invoked as:
-
- $parser->method_name( $sequence )
-
-where C<$parser> is a reference to the parser object, and C<$sequence>
-is a reference to the interior-sequence object.
-[I<NOTE>: If the B<interior_sequence()> method is specified, then it is
-invoked according to the interface specified in L<"interior_sequence()">].
-
-=item B<-expand_text> =E<gt> I<code-ref>|I<method-name>
-
-Normally, the parse-tree returned by B<parse_text()> will contain a
-text-string for each contiguous sequence of characters outside of an
-interior-sequence. Specifying B<-expand_text> tells B<parse_text()> to
-"preprocess" every such text-string it sees by invoking the referenced
-function (or named method of the parser object) and using the return value
-as the preprocessed (or "expanded") result. [Note that if the result is
-an interior-sequence, then it will I<not> be expanded as specified by the
-B<-expand_seq> option; Any such recursive expansion needs to be handled by
-the specified callback routine.]
-
-If a subroutine reference was given, it is invoked as:
-
- &$code_ref( $parser, $text, $ptree_node )
-
-and if a method-name was given, it is invoked as:
-
- $parser->method_name( $text, $ptree_node )
-
-where C<$parser> is a reference to the parser object, C<$text> is the
-text-string encountered, and C<$ptree_node> is a reference to the current
-node in the parse-tree (usually an interior-sequence object or else the
-top-level node of the parse-tree).
-
-=item B<-expand_ptree> =E<gt> I<code-ref>|I<method-name>
-
-Rather than returning a C<Pod::ParseTree>, pass the parse-tree as an
-argument to the referenced subroutine (or named method of the parser
-object) and return the result instead of the parse-tree object.
-
-If a subroutine reference was given, it is invoked as:
-
- &$code_ref( $parser, $ptree )
-
-and if a method-name was given, it is invoked as:
-
- $parser->method_name( $ptree )
-
-where C<$parser> is a reference to the parser object, and C<$ptree>
-is a reference to the parse-tree object.
-
-=back
-
-=cut
-
-sub parse_text {
- my $self = shift;
- local $_ = '';
-
- ## Get options and set any defaults
- my %opts = (ref $_[0]) ? %{ shift() } : ();
- my $expand_seq = $opts{'-expand_seq'} || undef;
- my $expand_text = $opts{'-expand_text'} || undef;
- my $expand_ptree = $opts{'-expand_ptree'} || undef;
-
- my $text = shift;
- my $line = shift;
- my $file = $self->input_file();
- my $cmd = "";
-
- ## Convert method calls into closures, for our convenience
- my $xseq_sub = $expand_seq;
- my $xtext_sub = $expand_text;
- my $xptree_sub = $expand_ptree;
- if (defined $expand_seq and $expand_seq eq 'interior_sequence') {
- ## If 'interior_sequence' is the method to use, we have to pass
- ## more than just the sequence object, we also need to pass the
- ## sequence name and text.
- $xseq_sub = sub {
- my ($self, $iseq) = @_;
- my $args = join("", $iseq->parse_tree->children);
- return $self->interior_sequence($iseq->name, $args, $iseq);
- };
- }
- ref $xseq_sub or $xseq_sub = sub { shift()->$expand_seq(@_) };
- ref $xtext_sub or $xtext_sub = sub { shift()->$expand_text(@_) };
- ref $xptree_sub or $xptree_sub = sub { shift()->$expand_ptree(@_) };
-
- ## Keep track of the "current" interior sequence, and maintain a stack
- ## of "in progress" sequences.
- ##
- ## NOTE that we push our own "accumulator" at the very beginning of the
- ## stack. It's really a parse-tree, not a sequence; but it implements
- ## the methods we need so we can use it to gather-up all the sequences
- ## and strings we parse. Thus, by the end of our parsing, it should be
- ## the only thing left on our stack and all we have to do is return it!
- ##
- my $seq = Pod::ParseTree->new();
- my @seq_stack = ($seq);
- my ($ldelim, $rdelim) = ('', '');
-
- ## Iterate over all sequence starts text (NOTE: split with
- ## capturing parens keeps the delimiters)
- $_ = $text;
- my @tokens = split /([A-Z]<(?:<+\s)?)/;
- while ( @tokens ) {
- $_ = shift @tokens;
- ## Look for the beginning of a sequence
- if ( /^([A-Z])(<(?:<+\s)?)$/ ) {
- ## Push a new sequence onto the stack of those "in-progress"
- ($cmd, $ldelim) = ($1, $2);
- $seq = Pod::InteriorSequence->new(
- -name => $cmd,
- -ldelim => $ldelim, -rdelim => '',
- -file => $file, -line => $line
- );
- $ldelim =~ s/\s+$//, ($rdelim = $ldelim) =~ tr/</>/;
- (@seq_stack > 1) and $seq->nested($seq_stack[-1]);
- push @seq_stack, $seq;
- }
- ## Look for sequence ending
- elsif ( @seq_stack > 1 ) {
- ## Make sure we match the right kind of closing delimiter
- my ($seq_end, $post_seq) = ("", "");
- if ( ($ldelim eq '<' and /\A(.*?)(>)/s)
- or /\A(.*?)(\s+$rdelim)/s )
- {
- ## Found end-of-sequence, capture the interior and the
- ## closing the delimiter, and put the rest back on the
- ## token-list
- $post_seq = substr($_, length($1) + length($2));
- ($_, $seq_end) = ($1, $2);
- (length $post_seq) and unshift @tokens, $post_seq;
- }
- if (length) {
- ## In the middle of a sequence, append this text to it, and
- ## dont forget to "expand" it if that's what the caller wanted
- $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_);
- $_ .= $seq_end;
- }
- if (length $seq_end) {
- ## End of current sequence, record terminating delimiter
- $seq->rdelim($seq_end);
- ## Pop it off the stack of "in progress" sequences
- pop @seq_stack;
- ## Append result to its parent in current parse tree
- $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq)
- : $seq);
- ## Remember the current cmd-name and left-delimiter
- $cmd = (@seq_stack > 1) ? $seq_stack[-1]->name : '';
- $ldelim = (@seq_stack > 1) ? $seq_stack[-1]->ldelim : '';
- $ldelim =~ s/\s+$//, ($rdelim = $ldelim) =~ tr/</>/;
- }
- }
- elsif (length) {
- ## In the middle of a sequence, append this text to it, and
- ## dont forget to "expand" it if that's what the caller wanted
- $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_);
- }
- ## Keep track of line count
- $line += tr/\n//;
- ## Remember the "current" sequence
- $seq = $seq_stack[-1];
- }
-
- ## Handle unterminated sequences
- my $errorsub = (@seq_stack > 1) ? $self->errorsub() : undef;
- while (@seq_stack > 1) {
- ($cmd, $file, $line) = ($seq->name, $seq->file_line);
- $ldelim = $seq->ldelim;
- ($rdelim = $ldelim) =~ tr/</>/;
- $rdelim =~ s/^(\S+)(\s*)$/$2$1/;
- pop @seq_stack;
- my $errmsg = "*** ERROR: unterminated ${cmd}${ldelim}...${rdelim}".
- " at line $line in file $file\n";
- (ref $errorsub) and &{$errorsub}($errmsg)
- or (defined $errorsub) and $self->$errorsub($errmsg)
- or warn($errmsg);
- $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq) : $seq);
- $seq = $seq_stack[-1];
- }
-
- ## Return the resulting parse-tree
- my $ptree = (pop @seq_stack)->parse_tree;
- return $expand_ptree ? &$xptree_sub($self, $ptree) : $ptree;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<interpolate()>
-
- $textblock = $parser->interpolate($text, $line_num);
-
-This method translates all text (including any embedded interior sequences)
-in the given text string C<$text> and returns the interpolated result. The
-parameter C<$line_num> is the line number corresponding to the beginning
-of C<$text>.
-
-B<interpolate()> merely invokes a private method to recursively expand
-nested interior sequences in bottom-up order (innermost sequences are
-expanded first). If there is a need to expand nested sequences in
-some alternate order, use B<parse_text> instead.
-
-=cut
-
-sub interpolate {
- my($self, $text, $line_num) = @_;
- my %parse_opts = ( -expand_seq => 'interior_sequence' );
- my $ptree = $self->parse_text( \%parse_opts, $text, $line_num );
- return join "", $ptree->children();
-}
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head1 B<parse_paragraph()>
-
- $parser->parse_paragraph($text, $line_num);
-
-This method takes the text of a POD paragraph to be processed, along
-with its corresponding line number, and invokes the appropriate method
-(one of B<command()>, B<verbatim()>, or B<textblock()>).
-
-For performance reasons, this method is invoked directly without any
-dynamic lookup; Hence subclasses may I<not> override it!
-
-=end __PRIVATE__
-
-=cut
-
-sub parse_paragraph {
- my ($self, $text, $line_num) = @_;
- local *myData = $self; ## alias to avoid deref-ing overhead
- local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options
- local $_;
-
- ## See if we want to preprocess nonPOD paragraphs as well as POD ones.
- my $wantNonPods = $myOpts{'-want_nonPODs'};
-
- ## Update cutting status
- $myData{_CUTTING} = 0 if $text =~ /^={1,2}\S/;
-
- ## Perform any desired preprocessing if we wanted it this early
- $wantNonPods and $text = $self->preprocess_paragraph($text, $line_num);
-
- ## Ignore up until next POD directive if we are cutting
- return if $myData{_CUTTING};
-
- ## Now we know this is block of text in a POD section!
-
- ##-----------------------------------------------------------------
- ## This is a hook (hack ;-) for Pod::Select to do its thing without
- ## having to override methods, but also without Pod::Parser assuming
- ## $self is an instance of Pod::Select (if the _SELECTED_SECTIONS
- ## field exists then we assume there is an is_selected() method for
- ## us to invoke (calling $self->can('is_selected') could verify this
- ## but that is more overhead than I want to incur)
- ##-----------------------------------------------------------------
-
- ## Ignore this block if it isnt in one of the selected sections
- if (exists $myData{_SELECTED_SECTIONS}) {
- $self->is_selected($text) or return ($myData{_CUTTING} = 1);
- }
-
- ## If we havent already, perform any desired preprocessing and
- ## then re-check the "cutting" state
- unless ($wantNonPods) {
- $text = $self->preprocess_paragraph($text, $line_num);
- return 1 unless ((defined $text) and (length $text));
- return 1 if ($myData{_CUTTING});
- }
-
- ## Look for one of the three types of paragraphs
- my ($pfx, $cmd, $arg, $sep) = ('', '', '', '');
- my $pod_para = undef;
- if ($text =~ /^(={1,2})(?=\S)/) {
- ## Looks like a command paragraph. Capture the command prefix used
- ## ("=" or "=="), as well as the command-name, its paragraph text,
- ## and whatever sequence of characters was used to separate them
- $pfx = $1;
- $_ = substr($text, length $pfx);
- ($cmd, $sep, $text) = split /(\s+)/, $_, 2;
- ## If this is a "cut" directive then we dont need to do anything
- ## except return to "cutting" mode.
- if ($cmd eq 'cut') {
- $myData{_CUTTING} = 1;
- return unless $myOpts{'-process_cut_cmd'};
- }
- }
- ## Save the attributes indicating how the command was specified.
- $pod_para = new Pod::Paragraph(
- -name => $cmd,
- -text => $text,
- -prefix => $pfx,
- -separator => $sep,
- -file => $myData{_INFILE},
- -line => $line_num
- );
- # ## Invoke appropriate callbacks
- # if (exists $myData{_CALLBACKS}) {
- # ## Look through the callback list, invoke callbacks,
- # ## then see if we need to do the default actions
- # ## (invoke_callbacks will return true if we do).
- # return 1 unless $self->invoke_callbacks($cmd, $text, $line_num, $pod_para);
- # }
- if (length $cmd) {
- ## A command paragraph
- $self->command($cmd, $text, $line_num, $pod_para);
- }
- elsif ($text =~ /^\s+/) {
- ## Indented text - must be a verbatim paragraph
- $self->verbatim($text, $line_num, $pod_para);
- }
- else {
- ## Looks like an ordinary block of text
- $self->textblock($text, $line_num, $pod_para);
- }
- return 1;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<parse_from_filehandle()>
-
- $parser->parse_from_filehandle($in_fh,$out_fh);
-
-This method takes an input filehandle (which is assumed to already be
-opened for reading) and reads the entire input stream looking for blocks
-(paragraphs) of POD documentation to be processed. If no first argument
-is given the default input filehandle C<STDIN> is used.
-
-The C<$in_fh> parameter may be any object that provides a B<getline()>
-method to retrieve a single line of input text (hence, an appropriate
-wrapper object could be used to parse PODs from a single string or an
-array of strings).
-
-Using C<$in_fh-E<gt>getline()>, input is read line-by-line and assembled
-into paragraphs or "blocks" (which are separated by lines containing
-nothing but whitespace). For each block of POD documentation
-encountered it will invoke a method to parse the given paragraph.
-
-If a second argument is given then it should correspond to a filehandle where
-output should be sent (otherwise the default output filehandle is
-C<STDOUT> if no output filehandle is currently in use).
-
-B<NOTE:> For performance reasons, this method caches the input stream at
-the top of the stack in a local variable. Any attempts by clients to
-change the stack contents during processing when in the midst executing
-of this method I<will not affect> the input stream used by the current
-invocation of this method.
-
-This method does I<not> usually need to be overridden by subclasses.
-
-=cut
-
-sub parse_from_filehandle {
- my $self = shift;
- my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : ();
- my ($in_fh, $out_fh) = @_;
- $in_fh = \*STDIN unless ($in_fh);
- local *myData = $self; ## alias to avoid deref-ing overhead
- local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options
- local $_;
-
- ## Put this stream at the top of the stack and do beginning-of-input
- ## processing. NOTE that $in_fh might be reset during this process.
- my $topstream = $self->_push_input_stream($in_fh, $out_fh);
- (exists $opts{-cutting}) and $self->cutting( $opts{-cutting} );
-
- ## Initialize line/paragraph
- my ($textline, $paragraph) = ('', '');
- my ($nlines, $plines) = (0, 0);
-
- ## Use <$fh> instead of $fh->getline where possible (for speed)
- $_ = ref $in_fh;
- my $tied_fh = (/^(?:GLOB|FileHandle|IO::\w+)$/ or tied $in_fh);
-
- ## Read paragraphs line-by-line
- while (defined ($textline = $tied_fh ? <$in_fh> : $in_fh->getline)) {
- $textline = $self->preprocess_line($textline, ++$nlines);
- next unless ((defined $textline) && (length $textline));
- $_ = $paragraph; ## save previous contents
-
- if ((! length $paragraph) && ($textline =~ /^==/)) {
- ## '==' denotes a one-line command paragraph
- $paragraph = $textline;
- $plines = 1;
- $textline = '';
- } else {
- ## Append this line to the current paragraph
- $paragraph .= $textline;
- ++$plines;
- }
-
- ## See if this line is blank and ends the current paragraph.
- ## If it isnt, then keep iterating until it is.
- next unless (($textline =~ /^([^\S\r\n]*)[\r\n]*$/)
- && (length $paragraph));
-
- ## Issue a warning about any non-empty blank lines
- if (length($1) > 0 and $myOpts{'-warnings'} and ! $myData{_CUTTING}) {
- my $errorsub = $self->errorsub();
- my $file = $self->input_file();
- my $errmsg = "*** WARNING: line containing nothing but whitespace".
- " in paragraph at line $nlines in file $file\n";
- (ref $errorsub) and &{$errorsub}($errmsg)
- or (defined $errorsub) and $self->$errorsub($errmsg)
- or warn($errmsg);
- }
-
- ## Now process the paragraph
- parse_paragraph($self, $paragraph, ($nlines - $plines) + 1);
- $paragraph = '';
- $plines = 0;
- }
- ## Dont forget about the last paragraph in the file
- if (length $paragraph) {
- parse_paragraph($self, $paragraph, ($nlines - $plines) + 1)
- }
-
- ## Now pop the input stream off the top of the input stack.
- $self->_pop_input_stream();
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<parse_from_file()>
-
- $parser->parse_from_file($filename,$outfile);
-
-This method takes a filename and does the following:
-
-=over 2
-
-=item *
-
-opens the input and output files for reading
-(creating the appropriate filehandles)
-
-=item *
-
-invokes the B<parse_from_filehandle()> method passing it the
-corresponding input and output filehandles.
-
-=item *
-
-closes the input and output files.
-
-=back
-
-If the special input filename "-" or "<&STDIN" is given then the STDIN
-filehandle is used for input (and no open or close is performed). If no
-input filename is specified then "-" is implied.
-
-If a second argument is given then it should be the name of the desired
-output file. If the special output filename "-" or ">&STDOUT" is given
-then the STDOUT filehandle is used for output (and no open or close is
-performed). If the special output filename ">&STDERR" is given then the
-STDERR filehandle is used for output (and no open or close is
-performed). If no output filehandle is currently in use and no output
-filename is specified, then "-" is implied.
-
-This method does I<not> usually need to be overridden by subclasses.
-
-=cut
-
-sub parse_from_file {
- my $self = shift;
- my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : ();
- my ($infile, $outfile) = @_;
- my ($in_fh, $out_fh) = (gensym, gensym) if ($] < 5.6);
- my ($close_input, $close_output) = (0, 0);
- local *myData = $self;
- local $_;
-
- ## Is $infile a filename or a (possibly implied) filehandle
- $infile = '-' unless ((defined $infile) && (length $infile));
- if (($infile eq '-') || ($infile =~ /^<&(STDIN|0)$/i)) {
- ## Not a filename, just a string implying STDIN
- $myData{_INFILE} = "<standard input>";
- $in_fh = \*STDIN;
- }
- elsif (ref $infile) {
- ## Must be a filehandle-ref (or else assume its a ref to an object
- ## that supports the common IO read operations).
- $myData{_INFILE} = ${$infile};
- $in_fh = $infile;
- }
- else {
- ## We have a filename, open it for reading
- $myData{_INFILE} = $infile;
- open($in_fh, "< $infile") or
- croak "Can't open $infile for reading: $!\n";
- $close_input = 1;
- }
-
- ## NOTE: we need to be *very* careful when "defaulting" the output
- ## file. We only want to use a default if this is the beginning of
- ## the entire document (but *not* if this is an included file). We
- ## determine this by seeing if the input stream stack has been set-up
- ## already
- ##
- unless ((defined $outfile) && (length $outfile)) {
- (defined $myData{_TOP_STREAM}) && ($out_fh = $myData{_OUTPUT})
- || ($outfile = '-');
- }
- ## Is $outfile a filename or a (possibly implied) filehandle
- if ((defined $outfile) && (length $outfile)) {
- if (($outfile eq '-') || ($outfile =~ /^>&?(?:STDOUT|1)$/i)) {
- ## Not a filename, just a string implying STDOUT
- $myData{_OUTFILE} = "<standard output>";
- $out_fh = \*STDOUT;
- }
- elsif ($outfile =~ /^>&(STDERR|2)$/i) {
- ## Not a filename, just a string implying STDERR
- $myData{_OUTFILE} = "<standard error>";
- $out_fh = \*STDERR;
- }
- elsif (ref $outfile) {
- ## Must be a filehandle-ref (or else assume its a ref to an
- ## object that supports the common IO write operations).
- $myData{_OUTFILE} = ${$outfile};
- $out_fh = $outfile;
- }
- else {
- ## We have a filename, open it for writing
- $myData{_OUTFILE} = $outfile;
- (-d $outfile) and croak "$outfile is a directory, not POD input!\n";
- open($out_fh, "> $outfile") or
- croak "Can't open $outfile for writing: $!\n";
- $close_output = 1;
- }
- }
-
- ## Whew! That was a lot of work to set up reasonably/robust behavior
- ## in the case of a non-filename for reading and writing. Now we just
- ## have to parse the input and close the handles when we're finished.
- $self->parse_from_filehandle(\%opts, $in_fh, $out_fh);
-
- $close_input and
- close($in_fh) || croak "Can't close $infile after reading: $!\n";
- $close_output and
- close($out_fh) || croak "Can't close $outfile after writing: $!\n";
-}
-
-#############################################################################
-
-=head1 ACCESSOR METHODS
-
-Clients of B<Pod::Parser> should use the following methods to access
-instance data fields:
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head1 B<errorsub()>
-
- $parser->errorsub("method_name");
- $parser->errorsub(\&warn_user);
- $parser->errorsub(sub { print STDERR, @_ });
-
-Specifies the method or subroutine to use when printing error messages
-about POD syntax. The supplied method/subroutine I<must> return TRUE upon
-successful printing of the message. If C<undef> is given, then the B<warn>
-builtin is used to issue error messages (this is the default behavior).
-
- my $errorsub = $parser->errorsub()
- my $errmsg = "This is an error message!\n"
- (ref $errorsub) and &{$errorsub}($errmsg)
- or (defined $errorsub) and $parser->$errorsub($errmsg)
- or warn($errmsg);
-
-Returns a method name, or else a reference to the user-supplied subroutine
-used to print error messages. Returns C<undef> if the B<warn> builtin
-is used to issue error messages (this is the default behavior).
-
-=cut
-
-sub errorsub {
- return (@_ > 1) ? ($_[0]->{_ERRORSUB} = $_[1]) : $_[0]->{_ERRORSUB};
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<cutting()>
-
- $boolean = $parser->cutting();
-
-Returns the current C<cutting> state: a boolean-valued scalar which
-evaluates to true if text from the input file is currently being "cut"
-(meaning it is I<not> considered part of the POD document).
-
- $parser->cutting($boolean);
-
-Sets the current C<cutting> state to the given value and returns the
-result.
-
-=cut
-
-sub cutting {
- return (@_ > 1) ? ($_[0]->{_CUTTING} = $_[1]) : $_[0]->{_CUTTING};
-}
-
-##---------------------------------------------------------------------------
-
-##---------------------------------------------------------------------------
-
-=head1 B<parseopts()>
-
-When invoked with no additional arguments, B<parseopts> returns a hashtable
-of all the current parsing options.
-
- ## See if we are parsing non-POD sections as well as POD ones
- my %opts = $parser->parseopts();
- $opts{'-want_nonPODs}' and print "-want_nonPODs\n";
-
-When invoked using a single string, B<parseopts> treats the string as the
-name of a parse-option and returns its corresponding value if it exists
-(returns C<undef> if it doesn't).
-
- ## Did we ask to see '=cut' paragraphs?
- my $want_cut = $parser->parseopts('-process_cut_cmd');
- $want_cut and print "-process_cut_cmd\n";
-
-When invoked with multiple arguments, B<parseopts> treats them as
-key/value pairs and the specified parse-option names are set to the
-given values. Any unspecified parse-options are unaffected.
-
- ## Set them back to the default
- $parser->parseopts(-warnings => 0);
-
-When passed a single hash-ref, B<parseopts> uses that hash to completely
-reset the existing parse-options, all previous parse-option values
-are lost.
-
- ## Reset all options to default
- $parser->parseopts( { } );
-
-See L<"PARSING OPTIONS"> for more information on the name and meaning of each
-parse-option currently recognized.
-
-=cut
-
-sub parseopts {
- local *myData = shift;
- local *myOpts = ($myData{_PARSEOPTS} ||= {});
- return %myOpts if (@_ == 0);
- if (@_ == 1) {
- local $_ = shift;
- return ref($_) ? $myData{_PARSEOPTS} = $_ : $myOpts{$_};
- }
- my @newOpts = (%myOpts, @_);
- $myData{_PARSEOPTS} = { @newOpts };
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<output_file()>
-
- $fname = $parser->output_file();
-
-Returns the name of the output file being written.
-
-=cut
-
-sub output_file {
- return $_[0]->{_OUTFILE};
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<output_handle()>
-
- $fhandle = $parser->output_handle();
-
-Returns the output filehandle object.
-
-=cut
-
-sub output_handle {
- return $_[0]->{_OUTPUT};
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<input_file()>
-
- $fname = $parser->input_file();
-
-Returns the name of the input file being read.
-
-=cut
-
-sub input_file {
- return $_[0]->{_INFILE};
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<input_handle()>
-
- $fhandle = $parser->input_handle();
-
-Returns the current input filehandle object.
-
-=cut
-
-sub input_handle {
- return $_[0]->{_INPUT};
-}
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head1 B<input_streams()>
-
- $listref = $parser->input_streams();
-
-Returns a reference to an array which corresponds to the stack of all
-the input streams that are currently in the middle of being parsed.
-
-While parsing an input stream, it is possible to invoke
-B<parse_from_file()> or B<parse_from_filehandle()> to parse a new input
-stream and then return to parsing the previous input stream. Each input
-stream to be parsed is pushed onto the end of this input stack
-before any of its input is read. The input stream that is currently
-being parsed is always at the end (or top) of the input stack. When an
-input stream has been exhausted, it is popped off the end of the
-input stack.
-
-Each element on this input stack is a reference to C<Pod::InputSource>
-object. Please see L<Pod::InputObjects> for more details.
-
-This method might be invoked when printing diagnostic messages, for example,
-to obtain the name and line number of the all input files that are currently
-being processed.
-
-=end __PRIVATE__
-
-=cut
-
-sub input_streams {
- return $_[0]->{_INPUT_STREAMS};
-}
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head1 B<top_stream()>
-
- $hashref = $parser->top_stream();
-
-Returns a reference to the hash-table that represents the element
-that is currently at the top (end) of the input stream stack
-(see L<"input_streams()">). The return value will be the C<undef>
-if the input stack is empty.
-
-This method might be used when printing diagnostic messages, for example,
-to obtain the name and line number of the current input file.
-
-=end __PRIVATE__
-
-=cut
-
-sub top_stream {
- return $_[0]->{_TOP_STREAM} || undef;
-}
-
-#############################################################################
-
-=head1 PRIVATE METHODS AND DATA
-
-B<Pod::Parser> makes use of several internal methods and data fields
-which clients should not need to see or use. For the sake of avoiding
-name collisions for client data and methods, these methods and fields
-are briefly discussed here. Determined hackers may obtain further
-information about them by reading the B<Pod::Parser> source code.
-
-Private data fields are stored in the hash-object whose reference is
-returned by the B<new()> constructor for this class. The names of all
-private methods and data-fields used by B<Pod::Parser> begin with a
-prefix of "_" and match the regular expression C</^_\w+$/>.
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=begin _PRIVATE_
-
-=head1 B<_push_input_stream()>
-
- $hashref = $parser->_push_input_stream($in_fh,$out_fh);
-
-This method will push the given input stream on the input stack and
-perform any necessary beginning-of-document or beginning-of-file
-processing. The argument C<$in_fh> is the input stream filehandle to
-push, and C<$out_fh> is the corresponding output filehandle to use (if
-it is not given or is undefined, then the current output stream is used,
-which defaults to standard output if it doesnt exist yet).
-
-The value returned will be reference to the hash-table that represents
-the new top of the input stream stack. I<Please Note> that it is
-possible for this method to use default values for the input and output
-file handles. If this happens, you will need to look at the C<INPUT>
-and C<OUTPUT> instance data members to determine their new values.
-
-=end _PRIVATE_
-
-=cut
-
-sub _push_input_stream {
- my ($self, $in_fh, $out_fh) = @_;
- local *myData = $self;
-
- ## Initialize stuff for the entire document if this is *not*
- ## an included file.
- ##
- ## NOTE: we need to be *very* careful when "defaulting" the output
- ## filehandle. We only want to use a default value if this is the
- ## beginning of the entire document (but *not* if this is an included
- ## file).
- unless (defined $myData{_TOP_STREAM}) {
- $out_fh = \*STDOUT unless (defined $out_fh);
- $myData{_CUTTING} = 1; ## current "cutting" state
- $myData{_INPUT_STREAMS} = []; ## stack of all input streams
- }
-
- ## Initialize input indicators
- $myData{_OUTFILE} = '(unknown)' unless (defined $myData{_OUTFILE});
- $myData{_OUTPUT} = $out_fh if (defined $out_fh);
- $in_fh = \*STDIN unless (defined $in_fh);
- $myData{_INFILE} = '(unknown)' unless (defined $myData{_INFILE});
- $myData{_INPUT} = $in_fh;
- my $input_top = $myData{_TOP_STREAM}
- = new Pod::InputSource(
- -name => $myData{_INFILE},
- -handle => $in_fh,
- -was_cutting => $myData{_CUTTING}
- );
- local *input_stack = $myData{_INPUT_STREAMS};
- push(@input_stack, $input_top);
-
- ## Perform beginning-of-document and/or beginning-of-input processing
- $self->begin_pod() if (@input_stack == 1);
- $self->begin_input();
-
- return $input_top;
-}
-
-##---------------------------------------------------------------------------
-
-=begin _PRIVATE_
-
-=head1 B<_pop_input_stream()>
-
- $hashref = $parser->_pop_input_stream();
-
-This takes no arguments. It will perform any necessary end-of-file or
-end-of-document processing and then pop the current input stream from
-the top of the input stack.
-
-The value returned will be reference to the hash-table that represents
-the new top of the input stream stack.
-
-=end _PRIVATE_
-
-=cut
-
-sub _pop_input_stream {
- my ($self) = @_;
- local *myData = $self;
- local *input_stack = $myData{_INPUT_STREAMS};
-
- ## Perform end-of-input and/or end-of-document processing
- $self->end_input() if (@input_stack > 0);
- $self->end_pod() if (@input_stack == 1);
-
- ## Restore cutting state to whatever it was before we started
- ## parsing this file.
- my $old_top = pop(@input_stack);
- $myData{_CUTTING} = $old_top->was_cutting();
-
- ## Dont forget to reset the input indicators
- my $input_top = undef;
- if (@input_stack > 0) {
- $input_top = $myData{_TOP_STREAM} = $input_stack[-1];
- $myData{_INFILE} = $input_top->name();
- $myData{_INPUT} = $input_top->handle();
- } else {
- delete $myData{_TOP_STREAM};
- delete $myData{_INPUT_STREAMS};
- }
-
- return $input_top;
-}
-
-#############################################################################
-
-=head1 TREE-BASED PARSING
-
-If straightforward stream-based parsing wont meet your needs (as is
-likely the case for tasks such as translating PODs into structured
-markup languages like HTML and XML) then you may need to take the
-tree-based approach. Rather than doing everything in one pass and
-calling the B<interpolate()> method to expand sequences into text, it
-may be desirable to instead create a parse-tree using the B<parse_text()>
-method to return a tree-like structure which may contain an ordered list
-list of children (each of which may be a text-string, or a similar
-tree-like structure).
-
-Pay special attention to L<"METHODS FOR PARSING AND PROCESSING"> and
-to the objects described in L<Pod::InputObjects>. The former describes
-the gory details and parameters for how to customize and extend the
-parsing behavior of B<Pod::Parser>. B<Pod::InputObjects> provides
-several objects that may all be used interchangeably as parse-trees. The
-most obvious one is the B<Pod::ParseTree> object. It defines the basic
-interface and functionality that all things trying to be a POD parse-tree
-should do. A B<Pod::ParseTree> is defined such that each "node" may be a
-text-string, or a reference to another parse-tree. Each B<Pod::Paragraph>
-object and each B<Pod::InteriorSequence> object also supports the basic
-parse-tree interface.
-
-The B<parse_text()> method takes a given paragraph of text, and
-returns a parse-tree that contains one or more children, each of which
-may be a text-string, or an InteriorSequence object. There are also
-callback-options that may be passed to B<parse_text()> to customize
-the way it expands or transforms interior-sequences, as well as the
-returned result. These callbacks can be used to create a parse-tree
-with custom-made objects (which may or may not support the parse-tree
-interface, depending on how you choose to do it).
-
-If you wish to turn an entire POD document into a parse-tree, that process
-is fairly straightforward. The B<parse_text()> method is the key to doing
-this successfully. Every paragraph-callback (i.e. the polymorphic methods
-for B<command()>, B<verbatim()>, and B<textblock()> paragraphs) takes
-a B<Pod::Paragraph> object as an argument. Each paragraph object has a
-B<parse_tree()> method that can be used to get or set a corresponding
-parse-tree. So for each of those paragraph-callback methods, simply call
-B<parse_text()> with the options you desire, and then use the returned
-parse-tree to assign to the given paragraph object.
-
-That gives you a parse-tree for each paragraph - so now all you need is
-an ordered list of paragraphs. You can maintain that yourself as a data
-element in the object/hash. The most straightforward way would be simply
-to use an array-ref, with the desired set of custom "options" for each
-invocation of B<parse_text>. Let's assume the desired option-set is
-given by the hash C<%options>. Then we might do something like the
-following:
-
- package MyPodParserTree;
-
- @ISA = qw( Pod::Parser );
-
- ...
-
- sub begin_pod {
- my $self = shift;
- $self->{'-paragraphs'} = []; ## initialize paragraph list
- }
-
- sub command {
- my ($parser, $command, $paragraph, $line_num, $pod_para) = @_;
- my $ptree = $parser->parse_text({%options}, $paragraph, ...);
- $pod_para->parse_tree( $ptree );
- push @{ $self->{'-paragraphs'} }, $pod_para;
- }
-
- sub verbatim {
- my ($parser, $paragraph, $line_num, $pod_para) = @_;
- push @{ $self->{'-paragraphs'} }, $pod_para;
- }
-
- sub textblock {
- my ($parser, $paragraph, $line_num, $pod_para) = @_;
- my $ptree = $parser->parse_text({%options}, $paragraph, ...);
- $pod_para->parse_tree( $ptree );
- push @{ $self->{'-paragraphs'} }, $pod_para;
- }
-
- ...
-
- package main;
- ...
- my $parser = new MyPodParserTree(...);
- $parser->parse_from_file(...);
- my $paragraphs_ref = $parser->{'-paragraphs'};
-
-Of course, in this module-author's humble opinion, I'd be more inclined to
-use the existing B<Pod::ParseTree> object than a simple array. That way
-everything in it, paragraphs and sequences, all respond to the same core
-interface for all parse-tree nodes. The result would look something like:
-
- package MyPodParserTree2;
-
- ...
-
- sub begin_pod {
- my $self = shift;
- $self->{'-ptree'} = new Pod::ParseTree; ## initialize parse-tree
- }
-
- sub parse_tree {
- ## convenience method to get/set the parse-tree for the entire POD
- (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
- return $_[0]->{'-ptree'};
- }
-
- sub command {
- my ($parser, $command, $paragraph, $line_num, $pod_para) = @_;
- my $ptree = $parser->parse_text({<<options>>}, $paragraph, ...);
- $pod_para->parse_tree( $ptree );
- $parser->parse_tree()->append( $pod_para );
- }
-
- sub verbatim {
- my ($parser, $paragraph, $line_num, $pod_para) = @_;
- $parser->parse_tree()->append( $pod_para );
- }
-
- sub textblock {
- my ($parser, $paragraph, $line_num, $pod_para) = @_;
- my $ptree = $parser->parse_text({<<options>>}, $paragraph, ...);
- $pod_para->parse_tree( $ptree );
- $parser->parse_tree()->append( $pod_para );
- }
-
- ...
-
- package main;
- ...
- my $parser = new MyPodParserTree2(...);
- $parser->parse_from_file(...);
- my $ptree = $parser->parse_tree;
- ...
-
-Now you have the entire POD document as one great big parse-tree. You
-can even use the B<-expand_seq> option to B<parse_text> to insert
-whole different kinds of objects. Just don't expect B<Pod::Parser>
-to know what to do with them after that. That will need to be in your
-code. Or, alternatively, you can insert any object you like so long as
-it conforms to the B<Pod::ParseTree> interface.
-
-One could use this to create subclasses of B<Pod::Paragraphs> and
-B<Pod::InteriorSequences> for specific commands (or to create your own
-custom node-types in the parse-tree) and add some kind of B<emit()>
-method to each custom node/subclass object in the tree. Then all you'd
-need to do is recursively walk the tree in the desired order, processing
-the children (most likely from left to right) by formatting them if
-they are text-strings, or by calling their B<emit()> method if they
-are objects/references.
-
-=head1 SEE ALSO
-
-L<Pod::InputObjects>, L<Pod::Select>
-
-B<Pod::InputObjects> defines POD input objects corresponding to
-command paragraphs, parse-trees, and interior-sequences.
-
-B<Pod::Select> is a subclass of B<Pod::Parser> which provides the ability
-to selectively include and/or exclude sections of a POD document from being
-translated based upon the current heading, subheading, subsubheading, etc.
-
-=for __PRIVATE__
-B<Pod::Callbacks> is a subclass of B<Pod::Parser> which gives its users
-the ability the employ I<callback functions> instead of, or in addition
-to, overriding methods of the base class.
-
-=for __PRIVATE__
-B<Pod::Select> and B<Pod::Callbacks> do not override any
-methods nor do they define any new methods with the same name. Because
-of this, they may I<both> be used (in combination) as a base class of
-the same subclass in order to combine their functionality without
-causing any namespace clashes due to multiple inheritance.
-
-=head1 AUTHOR
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt>
-
-Based on code for B<Pod::Text> written by
-Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
-
-=cut
-
-1;
diff --git a/contrib/perl5/lib/Pod/Plainer.pm b/contrib/perl5/lib/Pod/Plainer.pm
deleted file mode 100644
index 373e8d0..0000000
--- a/contrib/perl5/lib/Pod/Plainer.pm
+++ /dev/null
@@ -1,69 +0,0 @@
-package Pod::Plainer;
-use strict;
-use Pod::Parser;
-our @ISA = qw(Pod::Parser);
-our $VERSION = '0.01';
-
-our %E = qw( < lt > gt );
-
-sub escape_ltgt {
- (undef, my $text) = @_;
- $text =~ s/([<>])/E<$E{$1}>/g;
- $text
-}
-
-sub simple_delimiters {
- (undef, my $seq) = @_;
- $seq -> left_delimiter( '<' );
- $seq -> right_delimiter( '>' );
- $seq;
-}
-
-sub textblock {
- my($parser,$text,$line) = @_;
- print {$parser->output_handle()}
- $parser->parse_text(
- { -expand_text => q(escape_ltgt),
- -expand_seq => q(simple_delimiters) },
- $text, $line ) -> raw_text();
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Pod::Plainer - Perl extension for converting Pod to old style Pod.
-
-=head1 SYNOPSIS
-
- use Pod::Plainer;
-
- my $parser = Pod::Plainer -> new ();
- $parser -> parse_from_filehandle(\*STDIN);
-
-=head1 DESCRIPTION
-
-Pod::Plainer uses Pod::Parser which takes Pod with the (new)
-'CE<lt>E<lt> .. E<gt>E<gt>' constructs
-and returns the old(er) style with just 'CE<lt>E<gt>';
-'<' and '>' are replaced by 'EE<lt>ltE<gt>' and 'EE<lt>gtE<gt>'.
-
-This can be used to pre-process Pod before using tools which do not
-recognise the new style Pods.
-
-=head2 EXPORT
-
-None by default.
-
-=head1 AUTHOR
-
-Robin Barker, rmb1@cise.npl.co.uk
-
-=head1 SEE ALSO
-
-See L<Pod::Parser>.
-
-=cut
-
diff --git a/contrib/perl5/lib/Pod/Select.pm b/contrib/perl5/lib/Pod/Select.pm
deleted file mode 100644
index e7c820f..0000000
--- a/contrib/perl5/lib/Pod/Select.pm
+++ /dev/null
@@ -1,751 +0,0 @@
-#############################################################################
-# Pod/Select.pm -- function to select portions of POD docs
-#
-# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
-# This file is part of "PodParser". PodParser is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::Select;
-
-use vars qw($VERSION);
-$VERSION = 1.13; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-
-#############################################################################
-
-=head1 NAME
-
-Pod::Select, podselect() - extract selected sections of POD from input
-
-=head1 SYNOPSIS
-
- use Pod::Select;
-
- ## Select all the POD sections for each file in @filelist
- ## and print the result on standard output.
- podselect(@filelist);
-
- ## Same as above, but write to tmp.out
- podselect({-output => "tmp.out"}, @filelist):
-
- ## Select from the given filelist, only those POD sections that are
- ## within a 1st level section named any of: NAME, SYNOPSIS, OPTIONS.
- podselect({-sections => ["NAME|SYNOPSIS", "OPTIONS"]}, @filelist):
-
- ## Select the "DESCRIPTION" section of the PODs from STDIN and write
- ## the result to STDERR.
- podselect({-output => ">&STDERR", -sections => ["DESCRIPTION"]}, \*STDIN);
-
-or
-
- use Pod::Select;
-
- ## Create a parser object for selecting POD sections from the input
- $parser = new Pod::Select();
-
- ## Select all the POD sections for each file in @filelist
- ## and print the result to tmp.out.
- $parser->parse_from_file("<&STDIN", "tmp.out");
-
- ## Select from the given filelist, only those POD sections that are
- ## within a 1st level section named any of: NAME, SYNOPSIS, OPTIONS.
- $parser->select("NAME|SYNOPSIS", "OPTIONS");
- for (@filelist) { $parser->parse_from_file($_); }
-
- ## Select the "DESCRIPTION" and "SEE ALSO" sections of the PODs from
- ## STDIN and write the result to STDERR.
- $parser->select("DESCRIPTION");
- $parser->add_selection("SEE ALSO");
- $parser->parse_from_filehandle(\*STDIN, \*STDERR);
-
-=head1 REQUIRES
-
-perl5.005, Pod::Parser, Exporter, Carp
-
-=head1 EXPORTS
-
-podselect()
-
-=head1 DESCRIPTION
-
-B<podselect()> is a function which will extract specified sections of
-pod documentation from an input stream. This ability is provided by the
-B<Pod::Select> module which is a subclass of B<Pod::Parser>.
-B<Pod::Select> provides a method named B<select()> to specify the set of
-POD sections to select for processing/printing. B<podselect()> merely
-creates a B<Pod::Select> object and then invokes the B<podselect()>
-followed by B<parse_from_file()>.
-
-=head1 SECTION SPECIFICATIONS
-
-B<podselect()> and B<Pod::Select::select()> may be given one or more
-"section specifications" to restrict the text processed to only the
-desired set of sections and their corresponding subsections. A section
-specification is a string containing one or more Perl-style regular
-expressions separated by forward slashes ("/"). If you need to use a
-forward slash literally within a section title you can escape it with a
-backslash ("\/").
-
-The formal syntax of a section specification is:
-
-=over 4
-
-=item *
-
-I<head1-title-regex>/I<head2-title-regex>/...
-
-=back
-
-Any omitted or empty regular expressions will default to ".*".
-Please note that each regular expression given is implicitly
-anchored by adding "^" and "$" to the beginning and end. Also, if a
-given regular expression starts with a "!" character, then the
-expression is I<negated> (so C<!foo> would match anything I<except>
-C<foo>).
-
-Some example section specifications follow.
-
-=over 4
-
-=item *
-
-Match the C<NAME> and C<SYNOPSIS> sections and all of their subsections:
-
-C<NAME|SYNOPSIS>
-
-=item *
-
-Match only the C<Question> and C<Answer> subsections of the C<DESCRIPTION>
-section:
-
-C<DESCRIPTION/Question|Answer>
-
-=item *
-
-Match the C<Comments> subsection of I<all> sections:
-
-C</Comments>
-
-=item *
-
-Match all subsections of C<DESCRIPTION> I<except> for C<Comments>:
-
-C<DESCRIPTION/!Comments>
-
-=item *
-
-Match the C<DESCRIPTION> section but do I<not> match any of its subsections:
-
-C<DESCRIPTION/!.+>
-
-=item *
-
-Match all top level sections but none of their subsections:
-
-C</!.+>
-
-=back
-
-=begin _NOT_IMPLEMENTED_
-
-=head1 RANGE SPECIFICATIONS
-
-B<podselect()> and B<Pod::Select::select()> may be given one or more
-"range specifications" to restrict the text processed to only the
-desired ranges of paragraphs in the desired set of sections. A range
-specification is a string containing a single Perl-style regular
-expression (a regex), or else two Perl-style regular expressions
-(regexs) separated by a ".." (Perl's "range" operator is "..").
-The regexs in a range specification are delimited by forward slashes
-("/"). If you need to use a forward slash literally within a regex you
-can escape it with a backslash ("\/").
-
-The formal syntax of a range specification is:
-
-=over 4
-
-=item *
-
-/I<start-range-regex>/[../I<end-range-regex>/]
-
-=back
-
-Where each the item inside square brackets (the ".." followed by the
-end-range-regex) is optional. Each "range-regex" is of the form:
-
- =cmd-expr text-expr
-
-Where I<cmd-expr> is intended to match the name of one or more POD
-commands, and I<text-expr> is intended to match the paragraph text for
-the command. If a range-regex is supposed to match a POD command, then
-the first character of the regex (the one after the initial '/')
-absolutely I<must> be an single '=' character; it may not be anything
-else (not even a regex meta-character) if it is supposed to match
-against the name of a POD command.
-
-If no I<=cmd-expr> is given then the text-expr will be matched against
-plain textblocks unless it is preceded by a space, in which case it is
-matched against verbatim text-blocks. If no I<text-expr> is given then
-only the command-portion of the paragraph is matched against.
-
-Note that these two expressions are each implicitly anchored. This
-means that when matching against the command-name, there will be an
-implicit '^' and '$' around the given I<=cmd-expr>; and when matching
-against the paragraph text there will be an implicit '\A' and '\Z'
-around the given I<text-expr>.
-
-Unlike with section-specs, the '!' character does I<not> have any special
-meaning (negation or otherwise) at the beginning of a range-spec!
-
-Some example range specifications follow.
-
-=over 4
-
-=item
-Match all C<=for html> paragraphs:
-
-C</=for html/>
-
-=item
-Match all paragraphs between C<=begin html> and C<=end html>
-(note that this will I<not> work correctly if such sections
-are nested):
-
-C</=begin html/../=end html/>
-
-=item
-Match all paragraphs between the given C<=item> name until the end of the
-current section:
-
-C</=item mine/../=head\d/>
-
-=item
-Match all paragraphs between the given C<=item> until the next item, or
-until the end of the itemized list (note that this will I<not> work as
-desired if the item contains an itemized list nested within it):
-
-C</=item mine/../=(item|back)/>
-
-=back
-
-=end _NOT_IMPLEMENTED_
-
-=cut
-
-#############################################################################
-
-use strict;
-#use diagnostics;
-use Carp;
-use Pod::Parser 1.04;
-use vars qw(@ISA @EXPORT $MAX_HEADING_LEVEL);
-
-@ISA = qw(Pod::Parser);
-@EXPORT = qw(&podselect);
-
-## Maximum number of heading levels supported for '=headN' directives
-*MAX_HEADING_LEVEL = \3;
-
-#############################################################################
-
-=head1 OBJECT METHODS
-
-The following methods are provided in this module. Each one takes a
-reference to the object itself as an implicit first parameter.
-
-=cut
-
-##---------------------------------------------------------------------------
-
-## =begin _PRIVATE_
-##
-## =head1 B<_init_headings()>
-##
-## Initialize the current set of active section headings.
-##
-## =cut
-##
-## =end _PRIVATE_
-
-use vars qw(%myData @section_headings);
-
-sub _init_headings {
- my $self = shift;
- local *myData = $self;
-
- ## Initialize current section heading titles if necessary
- unless (defined $myData{_SECTION_HEADINGS}) {
- local *section_headings = $myData{_SECTION_HEADINGS} = [];
- for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) {
- $section_headings[$i] = '';
- }
- }
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<curr_headings()>
-
- ($head1, $head2, $head3, ...) = $parser->curr_headings();
- $head1 = $parser->curr_headings(1);
-
-This method returns a list of the currently active section headings and
-subheadings in the document being parsed. The list of headings returned
-corresponds to the most recently parsed paragraph of the input.
-
-If an argument is given, it must correspond to the desired section
-heading number, in which case only the specified section heading is
-returned. If there is no current section heading at the specified
-level, then C<undef> is returned.
-
-=cut
-
-sub curr_headings {
- my $self = shift;
- $self->_init_headings() unless (defined $self->{_SECTION_HEADINGS});
- my @headings = @{ $self->{_SECTION_HEADINGS} };
- return (@_ > 0 and $_[0] =~ /^\d+$/) ? $headings[$_[0] - 1] : @headings;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<select()>
-
- $parser->select($section_spec1,$section_spec2,...);
-
-This method is used to select the particular sections and subsections of
-POD documentation that are to be printed and/or processed. The existing
-set of selected sections is I<replaced> with the given set of sections.
-See B<add_selection()> for adding to the current set of selected
-sections.
-
-Each of the C<$section_spec> arguments should be a section specification
-as described in L<"SECTION SPECIFICATIONS">. The section specifications
-are parsed by this method and the resulting regular expressions are
-stored in the invoking object.
-
-If no C<$section_spec> arguments are given, then the existing set of
-selected sections is cleared out (which means C<all> sections will be
-processed).
-
-This method should I<not> normally be overridden by subclasses.
-
-=cut
-
-use vars qw(@selected_sections);
-
-sub select {
- my $self = shift;
- my @sections = @_;
- local *myData = $self;
- local $_;
-
-### NEED TO DISCERN A SECTION-SPEC FROM A RANGE-SPEC (look for m{^/.+/$}?)
-
- ##---------------------------------------------------------------------
- ## The following is a blatant hack for backward compatibility, and for
- ## implementing add_selection(). If the *first* *argument* is the
- ## string "+", then the remaining section specifications are *added*
- ## to the current set of selections; otherwise the given section
- ## specifications will *replace* the current set of selections.
- ##
- ## This should probably be fixed someday, but for the present time,
- ## it seems incredibly unlikely that "+" would ever correspond to
- ## a legitimate section heading
- ##---------------------------------------------------------------------
- my $add = ($sections[0] eq "+") ? shift(@sections) : "";
-
- ## Reset the set of sections to use
- unless (@sections > 0) {
- delete $myData{_SELECTED_SECTIONS} unless ($add);
- return;
- }
- $myData{_SELECTED_SECTIONS} = []
- unless ($add && exists $myData{_SELECTED_SECTIONS});
- local *selected_sections = $myData{_SELECTED_SECTIONS};
-
- ## Compile each spec
- my $spec;
- for $spec (@sections) {
- if ( defined($_ = &_compile_section_spec($spec)) ) {
- ## Store them in our sections array
- push(@selected_sections, $_);
- }
- else {
- carp "Ignoring section spec \"$spec\"!\n";
- }
- }
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<add_selection()>
-
- $parser->add_selection($section_spec1,$section_spec2,...);
-
-This method is used to add to the currently selected sections and
-subsections of POD documentation that are to be printed and/or
-processed. See <select()> for replacing the currently selected sections.
-
-Each of the C<$section_spec> arguments should be a section specification
-as described in L<"SECTION SPECIFICATIONS">. The section specifications
-are parsed by this method and the resulting regular expressions are
-stored in the invoking object.
-
-This method should I<not> normally be overridden by subclasses.
-
-=cut
-
-sub add_selection {
- my $self = shift;
- $self->select("+", @_);
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<clear_selections()>
-
- $parser->clear_selections();
-
-This method takes no arguments, it has the exact same effect as invoking
-<select()> with no arguments.
-
-=cut
-
-sub clear_selections {
- my $self = shift;
- $self->select();
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<match_section()>
-
- $boolean = $parser->match_section($heading1,$heading2,...);
-
-Returns a value of true if the given section and subsection heading
-titles match any of the currently selected section specifications in
-effect from prior calls to B<select()> and B<add_selection()> (or if
-there are no explictly selected/deselected sections).
-
-The arguments C<$heading1>, C<$heading2>, etc. are the heading titles of
-the corresponding sections, subsections, etc. to try and match. If
-C<$headingN> is omitted then it defaults to the current corresponding
-section heading title in the input.
-
-This method should I<not> normally be overridden by subclasses.
-
-=cut
-
-sub match_section {
- my $self = shift;
- my (@headings) = @_;
- local *myData = $self;
-
- ## Return true if no restrictions were explicitly specified
- my $selections = (exists $myData{_SELECTED_SECTIONS})
- ? $myData{_SELECTED_SECTIONS} : undef;
- return 1 unless ((defined $selections) && (@{$selections} > 0));
-
- ## Default any unspecified sections to the current one
- my @current_headings = $self->curr_headings();
- for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) {
- (defined $headings[$i]) or $headings[$i] = $current_headings[$i];
- }
-
- ## Look for a match against the specified section expressions
- my ($section_spec, $regex, $negated, $match);
- for $section_spec ( @{$selections} ) {
- ##------------------------------------------------------
- ## Each portion of this spec must match in order for
- ## the spec to be matched. So we will start with a
- ## match-value of 'true' and logically 'and' it with
- ## the results of matching a given element of the spec.
- ##------------------------------------------------------
- $match = 1;
- for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) {
- $regex = $section_spec->[$i];
- $negated = ($regex =~ s/^\!//);
- $match &= ($negated ? ($headings[$i] !~ /${regex}/)
- : ($headings[$i] =~ /${regex}/));
- last unless ($match);
- }
- return 1 if ($match);
- }
- return 0; ## no match
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<is_selected()>
-
- $boolean = $parser->is_selected($paragraph);
-
-This method is used to determine if the block of text given in
-C<$paragraph> falls within the currently selected set of POD sections
-and subsections to be printed or processed. This method is also
-responsible for keeping track of the current input section and
-subsections. It is assumed that C<$paragraph> is the most recently read
-(but not yet processed) input paragraph.
-
-The value returned will be true if the C<$paragraph> and the rest of the
-text in the same section as C<$paragraph> should be selected (included)
-for processing; otherwise a false value is returned.
-
-=cut
-
-sub is_selected {
- my ($self, $paragraph) = @_;
- local $_;
- local *myData = $self;
-
- $self->_init_headings() unless (defined $myData{_SECTION_HEADINGS});
-
- ## Keep track of current sections levels and headings
- $_ = $paragraph;
- if (/^=((?:sub)*)(?:head(?:ing)?|sec(?:tion)?)(\d*)\s+(.*)\s*$/) {
- ## This is a section heading command
- my ($level, $heading) = ($2, $3);
- $level = 1 + (length($1) / 3) if ((! length $level) || (length $1));
- ## Reset the current section heading at this level
- $myData{_SECTION_HEADINGS}->[$level - 1] = $heading;
- ## Reset subsection headings of this one to empty
- for (my $i = $level; $i < $MAX_HEADING_LEVEL; ++$i) {
- $myData{_SECTION_HEADINGS}->[$i] = '';
- }
- }
-
- return $self->match_section();
-}
-
-#############################################################################
-
-=head1 EXPORTED FUNCTIONS
-
-The following functions are exported by this module. Please note that
-these are functions (not methods) and therefore C<do not> take an
-implicit first argument.
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head1 B<podselect()>
-
- podselect(\%options,@filelist);
-
-B<podselect> will print the raw (untranslated) POD paragraphs of all
-POD sections in the given input files specified by C<@filelist>
-according to the given options.
-
-If any argument to B<podselect> is a reference to a hash
-(associative array) then the values with the following keys are
-processed as follows:
-
-=over 4
-
-=item B<-output>
-
-A string corresponding to the desired output file (or ">&STDOUT"
-or ">&STDERR"). The default is to use standard output.
-
-=item B<-sections>
-
-A reference to an array of sections specifications (as described in
-L<"SECTION SPECIFICATIONS">) which indicate the desired set of POD
-sections and subsections to be selected from input. If no section
-specifications are given, then all sections of the PODs are used.
-
-=begin _NOT_IMPLEMENTED_
-
-=item B<-ranges>
-
-A reference to an array of range specifications (as described in
-L<"RANGE SPECIFICATIONS">) which indicate the desired range of POD
-paragraphs to be selected from the desired input sections. If no range
-specifications are given, then all paragraphs of the desired sections
-are used.
-
-=end _NOT_IMPLEMENTED_
-
-=back
-
-All other arguments should correspond to the names of input files
-containing POD sections. A file name of "-" or "<&STDIN" will
-be interpeted to mean standard input (which is the default if no
-filenames are given).
-
-=cut
-
-sub podselect {
- my(@argv) = @_;
- my %defaults = ();
- my $pod_parser = new Pod::Select(%defaults);
- my $num_inputs = 0;
- my $output = ">&STDOUT";
- my %opts = ();
- local $_;
- for (@argv) {
- if (ref($_)) {
- next unless (ref($_) eq 'HASH');
- %opts = (%defaults, %{$_});
-
- ##-------------------------------------------------------------
- ## Need this for backward compatibility since we formerly used
- ## options that were all uppercase words rather than ones that
- ## looked like Unix command-line options.
- ## to be uppercase keywords)
- ##-------------------------------------------------------------
- %opts = map {
- my ($key, $val) = (lc $_, $opts{$_});
- $key =~ s/^(?=\w)/-/;
- $key =~ /^-se[cl]/ and $key = '-sections';
- #! $key eq '-range' and $key .= 's';
- ($key => $val);
- } (keys %opts);
-
- ## Process the options
- (exists $opts{'-output'}) and $output = $opts{'-output'};
-
- ## Select the desired sections
- $pod_parser->select(@{ $opts{'-sections'} })
- if ( (defined $opts{'-sections'})
- && ((ref $opts{'-sections'}) eq 'ARRAY') );
-
- #! ## Select the desired paragraph ranges
- #! $pod_parser->select(@{ $opts{'-ranges'} })
- #! if ( (defined $opts{'-ranges'})
- #! && ((ref $opts{'-ranges'}) eq 'ARRAY') );
- }
- else {
- $pod_parser->parse_from_file($_, $output);
- ++$num_inputs;
- }
- }
- $pod_parser->parse_from_file("-") unless ($num_inputs > 0);
-}
-
-#############################################################################
-
-=head1 PRIVATE METHODS AND DATA
-
-B<Pod::Select> makes uses a number of internal methods and data fields
-which clients should not need to see or use. For the sake of avoiding
-name collisions with client data and methods, these methods and fields
-are briefly discussed here. Determined hackers may obtain further
-information about them by reading the B<Pod::Select> source code.
-
-Private data fields are stored in the hash-object whose reference is
-returned by the B<new()> constructor for this class. The names of all
-private methods and data-fields used by B<Pod::Select> begin with a
-prefix of "_" and match the regular expression C</^_\w+$/>.
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=begin _PRIVATE_
-
-=head1 B<_compile_section_spec()>
-
- $listref = $parser->_compile_section_spec($section_spec);
-
-This function (note it is a function and I<not> a method) takes a
-section specification (as described in L<"SECTION SPECIFICATIONS">)
-given in C<$section_sepc>, and compiles it into a list of regular
-expressions. If C<$section_spec> has no syntax errors, then a reference
-to the list (array) of corresponding regular expressions is returned;
-otherwise C<undef> is returned and an error message is printed (using
-B<carp>) for each invalid regex.
-
-=end _PRIVATE_
-
-=cut
-
-sub _compile_section_spec {
- my ($section_spec) = @_;
- my (@regexs, $negated);
-
- ## Compile the spec into a list of regexs
- local $_ = $section_spec;
- s|\\\\|\001|g; ## handle escaped backward slashes
- s|\\/|\002|g; ## handle escaped forward slashes
-
- ## Parse the regexs for the heading titles
- @regexs = split('/', $_, $MAX_HEADING_LEVEL);
-
- ## Set default regex for ommitted levels
- for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) {
- $regexs[$i] = '.*' unless ((defined $regexs[$i])
- && (length $regexs[$i]));
- }
- ## Modify the regexs as needed and validate their syntax
- my $bad_regexs = 0;
- for (@regexs) {
- $_ .= '.+' if ($_ eq '!');
- s|\001|\\\\|g; ## restore escaped backward slashes
- s|\002|\\/|g; ## restore escaped forward slashes
- $negated = s/^\!//; ## check for negation
- eval "/$_/"; ## check regex syntax
- if ($@) {
- ++$bad_regexs;
- carp "Bad regular expression /$_/ in \"$section_spec\": $@\n";
- }
- else {
- ## Add the forward and rear anchors (and put the negator back)
- $_ = '^' . $_ unless (/^\^/);
- $_ = $_ . '$' unless (/\$$/);
- $_ = '!' . $_ if ($negated);
- }
- }
- return (! $bad_regexs) ? [ @regexs ] : undef;
-}
-
-##---------------------------------------------------------------------------
-
-=begin _PRIVATE_
-
-=head2 $self->{_SECTION_HEADINGS}
-
-A reference to an array of the current section heading titles for each
-heading level (note that the first heading level title is at index 0).
-
-=end _PRIVATE_
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=begin _PRIVATE_
-
-=head2 $self->{_SELECTED_SECTIONS}
-
-A reference to an array of references to arrays. Each subarray is a list
-of anchored regular expressions (preceded by a "!" if the expression is to
-be negated). The index of the expression in the subarray should correspond
-to the index of the heading title in C<$self-E<gt>{_SECTION_HEADINGS}>
-that it is to be matched against.
-
-=end _PRIVATE_
-
-=cut
-
-#############################################################################
-
-=head1 SEE ALSO
-
-L<Pod::Parser>
-
-=head1 AUTHOR
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt>
-
-Based on code for B<pod2text> written by
-Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
-
-=cut
-
-1;
-
diff --git a/contrib/perl5/lib/Pod/Text.pm b/contrib/perl5/lib/Pod/Text.pm
deleted file mode 100644
index 9936025..0000000
--- a/contrib/perl5/lib/Pod/Text.pm
+++ /dev/null
@@ -1,827 +0,0 @@
-# Pod::Text -- Convert POD data to formatted ASCII text.
-# $Id: Text.pm,v 2.8 2001/02/10 06:50:23 eagle Exp $
-#
-# Copyright 1999, 2000, 2001 by Russ Allbery <rra@stanford.edu>
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# This module is intended to be a replacement for Pod::Text, and attempts to
-# match its output except for some specific circumstances where other
-# decisions seemed to produce better output. It uses Pod::Parser and is
-# designed to be very easy to subclass.
-
-############################################################################
-# Modules and declarations
-############################################################################
-
-package Pod::Text;
-
-require 5.004;
-
-use Carp qw(carp croak);
-use Exporter ();
-use Pod::Select ();
-
-use strict;
-use vars qw(@ISA @EXPORT %ESCAPES $VERSION);
-
-# We inherit from Pod::Select instead of Pod::Parser so that we can be used
-# by Pod::Usage.
-@ISA = qw(Pod::Select Exporter);
-
-# We have to export pod2text for backward compatibility.
-@EXPORT = qw(pod2text);
-
-# Don't use the CVS revision as the version, since this module is also in
-# Perl core and too many things could munge CVS magic revision strings.
-# This number should ideally be the same as the CVS revision in podlators,
-# however.
-$VERSION = 2.08;
-
-
-############################################################################
-# Table of supported E<> escapes
-############################################################################
-
-# This table is taken near verbatim from Pod::PlainText in Pod::Parser,
-# which got it near verbatim from the original Pod::Text. It is therefore
-# credited to Tom Christiansen, and I'm glad I didn't have to write it. :)
-# "iexcl" to "divide" added by Tim Jenness.
-%ESCAPES = (
- 'amp' => '&', # ampersand
- 'lt' => '<', # left chevron, less-than
- 'gt' => '>', # right chevron, greater-than
- 'quot' => '"', # double quote
- 'sol' => '/', # solidus (forward slash)
- 'verbar' => '|', # vertical bar
-
- "Aacute" => "\xC1", # capital A, acute accent
- "aacute" => "\xE1", # small a, acute accent
- "Acirc" => "\xC2", # capital A, circumflex accent
- "acirc" => "\xE2", # small a, circumflex accent
- "AElig" => "\xC6", # capital AE diphthong (ligature)
- "aelig" => "\xE6", # small ae diphthong (ligature)
- "Agrave" => "\xC0", # capital A, grave accent
- "agrave" => "\xE0", # small a, grave accent
- "Aring" => "\xC5", # capital A, ring
- "aring" => "\xE5", # small a, ring
- "Atilde" => "\xC3", # capital A, tilde
- "atilde" => "\xE3", # small a, tilde
- "Auml" => "\xC4", # capital A, dieresis or umlaut mark
- "auml" => "\xE4", # small a, dieresis or umlaut mark
- "Ccedil" => "\xC7", # capital C, cedilla
- "ccedil" => "\xE7", # small c, cedilla
- "Eacute" => "\xC9", # capital E, acute accent
- "eacute" => "\xE9", # small e, acute accent
- "Ecirc" => "\xCA", # capital E, circumflex accent
- "ecirc" => "\xEA", # small e, circumflex accent
- "Egrave" => "\xC8", # capital E, grave accent
- "egrave" => "\xE8", # small e, grave accent
- "ETH" => "\xD0", # capital Eth, Icelandic
- "eth" => "\xF0", # small eth, Icelandic
- "Euml" => "\xCB", # capital E, dieresis or umlaut mark
- "euml" => "\xEB", # small e, dieresis or umlaut mark
- "Iacute" => "\xCC", # capital I, acute accent
- "iacute" => "\xEC", # small i, acute accent
- "Icirc" => "\xCE", # capital I, circumflex accent
- "icirc" => "\xEE", # small i, circumflex accent
- "Igrave" => "\xCD", # capital I, grave accent
- "igrave" => "\xED", # small i, grave accent
- "Iuml" => "\xCF", # capital I, dieresis or umlaut mark
- "iuml" => "\xEF", # small i, dieresis or umlaut mark
- "Ntilde" => "\xD1", # capital N, tilde
- "ntilde" => "\xF1", # small n, tilde
- "Oacute" => "\xD3", # capital O, acute accent
- "oacute" => "\xF3", # small o, acute accent
- "Ocirc" => "\xD4", # capital O, circumflex accent
- "ocirc" => "\xF4", # small o, circumflex accent
- "Ograve" => "\xD2", # capital O, grave accent
- "ograve" => "\xF2", # small o, grave accent
- "Oslash" => "\xD8", # capital O, slash
- "oslash" => "\xF8", # small o, slash
- "Otilde" => "\xD5", # capital O, tilde
- "otilde" => "\xF5", # small o, tilde
- "Ouml" => "\xD6", # capital O, dieresis or umlaut mark
- "ouml" => "\xF6", # small o, dieresis or umlaut mark
- "szlig" => "\xDF", # small sharp s, German (sz ligature)
- "THORN" => "\xDE", # capital THORN, Icelandic
- "thorn" => "\xFE", # small thorn, Icelandic
- "Uacute" => "\xDA", # capital U, acute accent
- "uacute" => "\xFA", # small u, acute accent
- "Ucirc" => "\xDB", # capital U, circumflex accent
- "ucirc" => "\xFB", # small u, circumflex accent
- "Ugrave" => "\xD9", # capital U, grave accent
- "ugrave" => "\xF9", # small u, grave accent
- "Uuml" => "\xDC", # capital U, dieresis or umlaut mark
- "uuml" => "\xFC", # small u, dieresis or umlaut mark
- "Yacute" => "\xDD", # capital Y, acute accent
- "yacute" => "\xFD", # small y, acute accent
- "yuml" => "\xFF", # small y, dieresis or umlaut mark
-
- "laquo" => "\xAB", # left pointing double angle quotation mark
- "lchevron" => "\xAB", # synonym (backwards compatibility)
- "raquo" => "\xBB", # right pointing double angle quotation mark
- "rchevron" => "\xBB", # synonym (backwards compatibility)
-
- "iexcl" => "\xA1", # inverted exclamation mark
- "cent" => "\xA2", # cent sign
- "pound" => "\xA3", # (UK) pound sign
- "curren" => "\xA4", # currency sign
- "yen" => "\xA5", # yen sign
- "brvbar" => "\xA6", # broken vertical bar
- "sect" => "\xA7", # section sign
- "uml" => "\xA8", # diaresis
- "copy" => "\xA9", # Copyright symbol
- "ordf" => "\xAA", # feminine ordinal indicator
- "not" => "\xAC", # not sign
- "shy" => "\xAD", # soft hyphen
- "reg" => "\xAE", # registered trademark
- "macr" => "\xAF", # macron, overline
- "deg" => "\xB0", # degree sign
- "plusmn" => "\xB1", # plus-minus sign
- "sup2" => "\xB2", # superscript 2
- "sup3" => "\xB3", # superscript 3
- "acute" => "\xB4", # acute accent
- "micro" => "\xB5", # micro sign
- "para" => "\xB6", # pilcrow sign = paragraph sign
- "middot" => "\xB7", # middle dot = Georgian comma
- "cedil" => "\xB8", # cedilla
- "sup1" => "\xB9", # superscript 1
- "ordm" => "\xBA", # masculine ordinal indicator
- "frac14" => "\xBC", # vulgar fraction one quarter
- "frac12" => "\xBD", # vulgar fraction one half
- "frac34" => "\xBE", # vulgar fraction three quarters
- "iquest" => "\xBF", # inverted question mark
- "times" => "\xD7", # multiplication sign
- "divide" => "\xF7", # division sign
-);
-
-
-############################################################################
-# Initialization
-############################################################################
-
-# Initialize the object. Must be sure to call our parent initializer.
-sub initialize {
- my $self = shift;
-
- $$self{alt} = 0 unless defined $$self{alt};
- $$self{indent} = 4 unless defined $$self{indent};
- $$self{loose} = 0 unless defined $$self{loose};
- $$self{sentence} = 0 unless defined $$self{sentence};
- $$self{width} = 76 unless defined $$self{width};
-
- # Figure out what quotes we'll be using for C<> text.
- $$self{quotes} ||= '"';
- if ($$self{quotes} eq 'none') {
- $$self{LQUOTE} = $$self{RQUOTE} = '';
- } elsif (length ($$self{quotes}) == 1) {
- $$self{LQUOTE} = $$self{RQUOTE} = $$self{quotes};
- } elsif ($$self{quotes} =~ /^(.)(.)$/
- || $$self{quotes} =~ /^(..)(..)$/) {
- $$self{LQUOTE} = $1;
- $$self{RQUOTE} = $2;
- } else {
- croak qq(Invalid quote specification "$$self{quotes}");
- }
-
- $$self{INDENTS} = []; # Stack of indentations.
- $$self{MARGIN} = $$self{indent}; # Current left margin in spaces.
-
- $self->SUPER::initialize;
-}
-
-
-############################################################################
-# Core overrides
-############################################################################
-
-# Called for each command paragraph. Gets the command, the associated
-# paragraph, the line number, and a Pod::Paragraph object. Just dispatches
-# the command to a method named the same as the command. =cut is handled
-# internally by Pod::Parser.
-sub command {
- my $self = shift;
- my $command = shift;
- return if $command eq 'pod';
- return if ($$self{EXCLUDE} && $command ne 'end');
- $self->item ("\n") if defined $$self{ITEM};
- if ($self->can ('cmd_' . $command)) {
- $command = 'cmd_' . $command;
- $self->$command (@_);
- } else {
- my ($text, $line, $paragraph) = @_;
- my $file;
- ($file, $line) = $paragraph->file_line;
- $text =~ s/\n+\z//;
- $text = " $text" if ($text =~ /^\S/);
- warn qq($file:$line: Unknown command paragraph "=$command$text"\n);
- return;
- }
-}
-
-# Called for a verbatim paragraph. Gets the paragraph, the line number, and
-# a Pod::Paragraph object. Just output it verbatim, but with tabs converted
-# to spaces.
-sub verbatim {
- my $self = shift;
- return if $$self{EXCLUDE};
- $self->item if defined $$self{ITEM};
- local $_ = shift;
- return if /^\s*$/;
- s/^(\s*\S+)/(' ' x $$self{MARGIN}) . $1/gme;
- $self->output ($_);
-}
-
-# Called for a regular text block. Gets the paragraph, the line number, and
-# a Pod::Paragraph object. Perform interpolation and output the results.
-sub textblock {
- my $self = shift;
- return if $$self{EXCLUDE};
- $self->output ($_[0]), return if $$self{VERBATIM};
- local $_ = shift;
- my $line = shift;
-
- # Perform a little magic to collapse multiple L<> references. This is
- # here mostly for backwards-compatibility. We'll just rewrite the whole
- # thing into actual text at this part, bypassing the whole internal
- # sequence parsing thing.
- s{
- (
- L< # A link of the form L</something>.
- /
- (
- [:\w]+ # The item has to be a simple word...
- (\(\))? # ...or simple function.
- )
- >
- (
- ,?\s+(and\s+)? # Allow lots of them, conjuncted.
- L<
- /
- (
- [:\w]+
- (\(\))?
- )
- >
- )+
- )
- } {
- local $_ = $1;
- s%L</([^>]+)>%$1%g;
- my @items = split /(?:,?\s+(?:and\s+)?)/;
- my $string = "the ";
- my $i;
- for ($i = 0; $i < @items; $i++) {
- $string .= $items[$i];
- $string .= ", " if @items > 2 && $i != $#items;
- $string .= " and " if ($i == $#items - 1);
- }
- $string .= " entries elsewhere in this document";
- $string;
- }gex;
-
- # Now actually interpolate and output the paragraph.
- $_ = $self->interpolate ($_, $line);
- s/\s+$/\n/;
- if (defined $$self{ITEM}) {
- $self->item ($_ . "\n");
- } else {
- $self->output ($self->reformat ($_ . "\n"));
- }
-}
-
-# Called for an interior sequence. Gets the command, argument, and a
-# Pod::InteriorSequence object and is expected to return the resulting text.
-# Calls code, bold, italic, file, and link to handle those types of
-# sequences, and handles S<>, E<>, X<>, and Z<> directly.
-sub interior_sequence {
- my $self = shift;
- my $command = shift;
- local $_ = shift;
- return '' if ($command eq 'X' || $command eq 'Z');
-
- # Expand escapes into the actual character now, carping if invalid.
- if ($command eq 'E') {
- if (/^\d+$/) {
- return chr;
- } else {
- return $ESCAPES{$_} if defined $ESCAPES{$_};
- carp "Unknown escape: E<$_>";
- return "E<$_>";
- }
- }
-
- # For all the other sequences, empty content produces no output.
- return if $_ eq '';
-
- # For S<>, compress all internal whitespace and then map spaces to \01.
- # When we output the text, we'll map this back.
- if ($command eq 'S') {
- s/\s{2,}/ /g;
- tr/ /\01/;
- return $_;
- }
-
- # Anything else needs to get dispatched to another method.
- if ($command eq 'B') { return $self->seq_b ($_) }
- elsif ($command eq 'C') { return $self->seq_c ($_) }
- elsif ($command eq 'F') { return $self->seq_f ($_) }
- elsif ($command eq 'I') { return $self->seq_i ($_) }
- elsif ($command eq 'L') { return $self->seq_l ($_) }
- else { carp "Unknown sequence $command<$_>" }
-}
-
-# Called for each paragraph that's actually part of the POD. We take
-# advantage of this opportunity to untabify the input.
-sub preprocess_paragraph {
- my $self = shift;
- local $_ = shift;
- 1 while s/^(.*?)(\t+)/$1 . ' ' x (length ($2) * 8 - length ($1) % 8)/me;
- $_;
-}
-
-
-############################################################################
-# Command paragraphs
-############################################################################
-
-# All command paragraphs take the paragraph and the line number.
-
-# First level heading.
-sub cmd_head1 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- $_ = $self->interpolate ($_, shift);
- if ($$self{alt}) {
- $self->output ("\n==== $_ ====\n\n");
- } else {
- $_ .= "\n" if $$self{loose};
- $self->output ($_ . "\n");
- }
-}
-
-# Second level heading.
-sub cmd_head2 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- $_ = $self->interpolate ($_, shift);
- if ($$self{alt}) {
- $self->output ("\n== $_ ==\n\n");
- } else {
- $self->output (' ' x ($$self{indent} / 2) . $_ . "\n\n");
- }
-}
-
-# Third level heading.
-sub cmd_head3 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- $_ = $self->interpolate ($_, shift);
- if ($$self{alt}) {
- $self->output ("\n= $_ =\n\n");
- } else {
- $self->output (' ' x ($$self{indent} * 2 / 3 + 0.5) . $_ . "\n\n");
- }
-}
-
-# Third level heading.
-sub cmd_head4 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- $_ = $self->interpolate ($_, shift);
- if ($$self{alt}) {
- $self->output ("\n- $_ -\n\n");
- } else {
- $self->output (' ' x ($$self{indent} * 3 / 4 + 0.5) . $_ . "\n\n");
- }
-}
-
-# Start a list.
-sub cmd_over {
- my $self = shift;
- local $_ = shift;
- unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} }
- push (@{ $$self{INDENTS} }, $$self{MARGIN});
- $$self{MARGIN} += ($_ + 0);
-}
-
-# End a list.
-sub cmd_back {
- my $self = shift;
- $$self{MARGIN} = pop @{ $$self{INDENTS} };
- unless (defined $$self{MARGIN}) {
- carp "Unmatched =back";
- $$self{MARGIN} = $$self{indent};
- }
-}
-
-# An individual list item.
-sub cmd_item {
- my $self = shift;
- if (defined $$self{ITEM}) { $self->item }
- local $_ = shift;
- s/\s+$//;
- $$self{ITEM} = $self->interpolate ($_);
-}
-
-# Begin a block for a particular translator. Setting VERBATIM triggers
-# special handling in textblock().
-sub cmd_begin {
- my $self = shift;
- local $_ = shift;
- my ($kind) = /^(\S+)/ or return;
- if ($kind eq 'text') {
- $$self{VERBATIM} = 1;
- } else {
- $$self{EXCLUDE} = 1;
- }
-}
-
-# End a block for a particular translator. We assume that all =begin/=end
-# pairs are properly closed.
-sub cmd_end {
- my $self = shift;
- $$self{EXCLUDE} = 0;
- $$self{VERBATIM} = 0;
-}
-
-# One paragraph for a particular translator. Ignore it unless it's intended
-# for text, in which case we treat it as a verbatim text block.
-sub cmd_for {
- my $self = shift;
- local $_ = shift;
- my $line = shift;
- return unless s/^text\b[ \t]*\n?//;
- $self->verbatim ($_, $line);
-}
-
-
-############################################################################
-# Interior sequences
-############################################################################
-
-# The simple formatting ones. These are here mostly so that subclasses can
-# override them and do more complicated things.
-sub seq_b { return $_[0]{alt} ? "``$_[1]''" : $_[1] }
-sub seq_f { return $_[0]{alt} ? "\"$_[1]\"" : $_[1] }
-sub seq_i { return '*' . $_[1] . '*' }
-sub seq_c {
- return $_[0]{alt} ? "``$_[1]''" : "$_[0]{LQUOTE}$_[1]$_[0]{RQUOTE}"
-}
-
-# The complicated one. Handle links. Since this is plain text, we can't
-# actually make any real links, so this is all to figure out what text we
-# print out.
-sub seq_l {
- my $self = shift;
- local $_ = shift;
-
- # Smash whitespace in case we were split across multiple lines.
- s/\s+/ /g;
-
- # If we were given any explicit text, just output it.
- if (/^([^|]+)\|/) { return $1 }
-
- # Okay, leading and trailing whitespace isn't important; get rid of it.
- s/^\s+//;
- s/\s+$//;
-
- # If the argument looks like a URL, return it verbatim. This only
- # handles URLs that use the server syntax.
- if (m%^[a-z]+://\S+$%) { return $_ }
-
- # Default to using the whole content of the link entry as a section
- # name. Note that L<manpage/> forces a manpage interpretation, as does
- # something looking like L<manpage(section)>. The latter is an
- # enhancement over the original Pod::Text.
- my ($manpage, $section) = ('', $_);
- if (/^"\s*(.*?)\s*"$/) {
- $section = '"' . $1 . '"';
- } elsif (m/^[-:.\w]+(?:\(\S+\))?$/) {
- ($manpage, $section) = ($_, '');
- } elsif (m%/%) {
- ($manpage, $section) = split (/\s*\/\s*/, $_, 2);
- }
-
- # Now build the actual output text.
- my $text = '';
- if (!length $section) {
- $text = "the $manpage manpage" if length $manpage;
- } elsif ($section =~ /^[:\w]+(?:\(\))?/) {
- $text .= 'the ' . $section . ' entry';
- $text .= (length $manpage) ? " in the $manpage manpage"
- : " elsewhere in this document";
- } else {
- $section =~ s/^\"\s*//;
- $section =~ s/\s*\"$//;
- $text .= 'the section on "' . $section . '"';
- $text .= " in the $manpage manpage" if length $manpage;
- }
- $text;
-}
-
-
-############################################################################
-# List handling
-############################################################################
-
-# This method is called whenever an =item command is complete (in other
-# words, we've seen its associated paragraph or know for certain that it
-# doesn't have one). It gets the paragraph associated with the item as an
-# argument. If that argument is empty, just output the item tag; if it
-# contains a newline, output the item tag followed by the newline.
-# Otherwise, see if there's enough room for us to output the item tag in the
-# margin of the text or if we have to put it on a separate line.
-sub item {
- my $self = shift;
- local $_ = shift;
- my $tag = $$self{ITEM};
- unless (defined $tag) {
- carp "item called without tag";
- return;
- }
- undef $$self{ITEM};
- my $indent = $$self{INDENTS}[-1];
- unless (defined $indent) { $indent = $$self{indent} }
- my $space = ' ' x $indent;
- $space =~ s/^ /:/ if $$self{alt};
- if (!$_ || /^\s+$/ || ($$self{MARGIN} - $indent < length ($tag) + 1)) {
- my $margin = $$self{MARGIN};
- $$self{MARGIN} = $indent;
- my $output = $self->reformat ($tag);
- $output =~ s/\n*$/\n/;
- $self->output ($output);
- $$self{MARGIN} = $margin;
- $self->output ($self->reformat ($_)) if /\S/;
- } else {
- $_ = $self->reformat ($_);
- s/^ /:/ if ($$self{alt} && $indent > 0);
- my $tagspace = ' ' x length $tag;
- s/^($space)$tagspace/$1$tag/ or warn "Bizarre space in item";
- $self->output ($_);
- }
-}
-
-
-############################################################################
-# Output formatting
-############################################################################
-
-# Wrap a line, indenting by the current left margin. We can't use
-# Text::Wrap because it plays games with tabs. We can't use formline, even
-# though we'd really like to, because it screws up non-printing characters.
-# So we have to do the wrapping ourselves.
-sub wrap {
- my $self = shift;
- local $_ = shift;
- my $output = '';
- my $spaces = ' ' x $$self{MARGIN};
- my $width = $$self{width} - $$self{MARGIN};
- while (length > $width) {
- if (s/^([^\n]{0,$width})\s+// || s/^([^\n]{$width})//) {
- $output .= $spaces . $1 . "\n";
- } else {
- last;
- }
- }
- $output .= $spaces . $_;
- $output =~ s/\s+$/\n\n/;
- $output;
-}
-
-# Reformat a paragraph of text for the current margin. Takes the text to
-# reformat and returns the formatted text.
-sub reformat {
- my $self = shift;
- local $_ = shift;
-
- # If we're trying to preserve two spaces after sentences, do some
- # munging to support that. Otherwise, smash all repeated whitespace.
- if ($$self{sentence}) {
- s/ +$//mg;
- s/\.\n/. \n/g;
- s/\n/ /g;
- s/ +/ /g;
- } else {
- s/\s+/ /g;
- }
- $self->wrap ($_);
-}
-
-# Output text to the output device.
-sub output { $_[1] =~ tr/\01/ /; print { $_[0]->output_handle } $_[1] }
-
-
-############################################################################
-# Backwards compatibility
-############################################################################
-
-# The old Pod::Text module did everything in a pod2text() function. This
-# tries to provide the same interface for legacy applications.
-sub pod2text {
- my @args;
-
- # This is really ugly; I hate doing option parsing in the middle of a
- # module. But the old Pod::Text module supported passing flags to its
- # entry function, so handle -a and -<number>.
- while ($_[0] =~ /^-/) {
- my $flag = shift;
- if ($flag eq '-a') { push (@args, alt => 1) }
- elsif ($flag =~ /^-(\d+)$/) { push (@args, width => $1) }
- else {
- unshift (@_, $flag);
- last;
- }
- }
-
- # Now that we know what arguments we're using, create the parser.
- my $parser = Pod::Text->new (@args);
-
- # If two arguments were given, the second argument is going to be a file
- # handle. That means we want to call parse_from_filehandle(), which
- # means we need to turn the first argument into a file handle. Magic
- # open will handle the <&STDIN case automagically.
- if (defined $_[1]) {
- my @fhs = @_;
- local *IN;
- unless (open (IN, $fhs[0])) {
- croak ("Can't open $fhs[0] for reading: $!\n");
- return;
- }
- $fhs[0] = \*IN;
- return $parser->parse_from_filehandle (@fhs);
- } else {
- return $parser->parse_from_file (@_);
- }
-}
-
-
-############################################################################
-# Module return value and documentation
-############################################################################
-
-1;
-__END__
-
-=head1 NAME
-
-Pod::Text - Convert POD data to formatted ASCII text
-
-=head1 SYNOPSIS
-
- use Pod::Text;
- my $parser = Pod::Text->new (sentence => 0, width => 78);
-
- # Read POD from STDIN and write to STDOUT.
- $parser->parse_from_filehandle;
-
- # Read POD from file.pod and write to file.txt.
- $parser->parse_from_file ('file.pod', 'file.txt');
-
-=head1 DESCRIPTION
-
-Pod::Text is a module that can convert documentation in the POD format (the
-preferred language for documenting Perl) into formatted ASCII. It uses no
-special formatting controls or codes whatsoever, and its output is therefore
-suitable for nearly any device.
-
-As a derived class from Pod::Parser, Pod::Text supports the same methods and
-interfaces. See L<Pod::Parser> for all the details; briefly, one creates a
-new parser with C<Pod::Text-E<gt>new()> and then calls either
-parse_from_filehandle() or parse_from_file().
-
-new() can take options, in the form of key/value pairs, that control the
-behavior of the parser. The currently recognized options are:
-
-=over 4
-
-=item alt
-
-If set to a true value, selects an alternate output format that, among other
-things, uses a different heading style and marks C<=item> entries with a
-colon in the left margin. Defaults to false.
-
-=item indent
-
-The number of spaces to indent regular text, and the default indentation for
-C<=over> blocks. Defaults to 4.
-
-=item loose
-
-If set to a true value, a blank line is printed after a C<=head1> heading.
-If set to false (the default), no blank line is printed after C<=head1>,
-although one is still printed after C<=head2>. This is the default because
-it's the expected formatting for manual pages; if you're formatting
-arbitrary text documents, setting this to true may result in more pleasing
-output.
-
-=item quotes
-
-Sets the quote marks used to surround CE<lt>> text. If the value is a
-single character, it is used as both the left and right quote; if it is two
-characters, the first character is used as the left quote and the second as
-the right quoted; and if it is four characters, the first two are used as
-the left quote and the second two as the right quote.
-
-This may also be set to the special value C<none>, in which case no quote
-marks are added around CE<lt>> text.
-
-=item sentence
-
-If set to a true value, Pod::Text will assume that each sentence ends in two
-spaces, and will try to preserve that spacing. If set to false, all
-consecutive whitespace in non-verbatim paragraphs is compressed into a
-single space. Defaults to true.
-
-=item width
-
-The column at which to wrap text on the right-hand side. Defaults to 76.
-
-=back
-
-The standard Pod::Parser method parse_from_filehandle() takes up to two
-arguments, the first being the file handle to read POD from and the second
-being the file handle to write the formatted output to. The first defaults
-to STDIN if not given, and the second defaults to STDOUT. The method
-parse_from_file() is almost identical, except that its two arguments are the
-input and output disk files instead. See L<Pod::Parser> for the specific
-details.
-
-=head1 DIAGNOSTICS
-
-=over 4
-
-=item Bizarre space in item
-
-(W) Something has gone wrong in internal C<=item> processing. This message
-indicates a bug in Pod::Text; you should never see it.
-
-=item Can't open %s for reading: %s
-
-(F) Pod::Text was invoked via the compatibility mode pod2text() interface
-and the input file it was given could not be opened.
-
-=item Invalid quote specification "%s"
-
-(F) The quote specification given (the quotes option to the constructor) was
-invalid. A quote specification must be one, two, or four characters long.
-
-=item %s:%d: Unknown command paragraph "%s".
-
-(W) The POD source contained a non-standard command paragraph (something of
-the form C<=command args>) that Pod::Man didn't know about. It was ignored.
-
-=item Unknown escape: %s
-
-(W) The POD source contained an C<EE<lt>E<gt>> escape that Pod::Text didn't
-know about.
-
-=item Unknown sequence: %s
-
-(W) The POD source contained a non-standard internal sequence (something of
-the form C<XE<lt>E<gt>>) that Pod::Text didn't know about.
-
-=item Unmatched =back
-
-(W) Pod::Text encountered a C<=back> command that didn't correspond to an
-C<=over> command.
-
-=back
-
-=head1 RESTRICTIONS
-
-Embedded Ctrl-As (octal 001) in the input will be mapped to spaces on
-output, due to an internal implementation detail.
-
-=head1 NOTES
-
-This is a replacement for an earlier Pod::Text module written by Tom
-Christiansen. It has a revamped interface, since it now uses Pod::Parser,
-but an interface roughly compatible with the old Pod::Text::pod2text()
-function is still available. Please change to the new calling convention,
-though.
-
-The original Pod::Text contained code to do formatting via termcap
-sequences, although it wasn't turned on by default and it was problematic to
-get it to work at all. This rewrite doesn't even try to do that, but a
-subclass of it does. Look for L<Pod::Text::Termcap|Pod::Text::Termcap>.
-
-=head1 SEE ALSO
-
-L<Pod::Parser|Pod::Parser>, L<Pod::Text::Termcap|Pod::Text::Termcap>,
-pod2text(1)
-
-=head1 AUTHOR
-
-Russ Allbery E<lt>rra@stanford.eduE<gt>, based I<very> heavily on the
-original Pod::Text by Tom Christiansen E<lt>tchrist@mox.perl.comE<gt> and
-its conversion to Pod::Parser by Brad Appleton
-E<lt>bradapp@enteract.comE<gt>.
-
-=cut
diff --git a/contrib/perl5/lib/Pod/Text/Color.pm b/contrib/perl5/lib/Pod/Text/Color.pm
deleted file mode 100644
index e943216..0000000
--- a/contrib/perl5/lib/Pod/Text/Color.pm
+++ /dev/null
@@ -1,128 +0,0 @@
-# Pod::Text::Color -- Convert POD data to formatted color ASCII text
-# $Id: Color.pm,v 0.6 2000/12/25 12:52:39 eagle Exp $
-#
-# Copyright 1999 by Russ Allbery <rra@stanford.edu>
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# This is just a basic proof of concept. It should later be modified to
-# make better use of color, take options changing what colors are used for
-# what text, and the like.
-
-############################################################################
-# Modules and declarations
-############################################################################
-
-package Pod::Text::Color;
-
-require 5.004;
-
-use Pod::Text ();
-use Term::ANSIColor qw(colored);
-
-use strict;
-use vars qw(@ISA $VERSION);
-
-@ISA = qw(Pod::Text);
-
-# Don't use the CVS revision as the version, since this module is also in
-# Perl core and too many things could munge CVS magic revision strings.
-# This number should ideally be the same as the CVS revision in podlators,
-# however.
-$VERSION = 0.06;
-
-
-############################################################################
-# Overrides
-############################################################################
-
-# Make level one headings bold.
-sub cmd_head1 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- $self->SUPER::cmd_head1 (colored ($_, 'bold'));
-}
-
-# Make level two headings bold.
-sub cmd_head2 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- $self->SUPER::cmd_head2 (colored ($_, 'bold'));
-}
-
-# Fix the various interior sequences.
-sub seq_b { return colored ($_[1], 'bold') }
-sub seq_f { return colored ($_[1], 'cyan') }
-sub seq_i { return colored ($_[1], 'yellow') }
-
-# We unfortunately have to override the wrapping code here, since the normal
-# wrapping code gets really confused by all the escape sequences.
-sub wrap {
- my $self = shift;
- local $_ = shift;
- my $output = '';
- my $spaces = ' ' x $$self{MARGIN};
- my $width = $$self{width} - $$self{MARGIN};
- while (length > $width) {
- if (s/^((?:(?:\e\[[\d;]+m)?[^\n]){0,$width})\s+//
- || s/^((?:(?:\e\[[\d;]+m)?[^\n]){$width})//) {
- $output .= $spaces . $1 . "\n";
- } else {
- last;
- }
- }
- $output .= $spaces . $_;
- $output =~ s/\s+$/\n\n/;
- $output;
-}
-
-############################################################################
-# Module return value and documentation
-############################################################################
-
-1;
-__END__
-
-=head1 NAME
-
-Pod::Text::Color - Convert POD data to formatted color ASCII text
-
-=head1 SYNOPSIS
-
- use Pod::Text::Color;
- my $parser = Pod::Text::Color->new (sentence => 0, width => 78);
-
- # Read POD from STDIN and write to STDOUT.
- $parser->parse_from_filehandle;
-
- # Read POD from file.pod and write to file.txt.
- $parser->parse_from_file ('file.pod', 'file.txt');
-
-=head1 DESCRIPTION
-
-Pod::Text::Color is a simple subclass of Pod::Text that highlights output
-text using ANSI color escape sequences. Apart from the color, it in all
-ways functions like Pod::Text. See L<Pod::Text> for details and available
-options.
-
-Term::ANSIColor is used to get colors and therefore must be installed to use
-this module.
-
-=head1 BUGS
-
-This is just a basic proof of concept. It should be seriously expanded to
-support configurable coloration via options passed to the constructor, and
-B<pod2text> should be taught about those.
-
-=head1 SEE ALSO
-
-L<Pod::Text|Pod::Text>, L<Pod::Parser|Pod::Parser>
-
-=head1 AUTHOR
-
-Russ Allbery E<lt>rra@stanford.eduE<gt>.
-
-=cut
diff --git a/contrib/perl5/lib/Pod/Text/Overstrike.pm b/contrib/perl5/lib/Pod/Text/Overstrike.pm
deleted file mode 100644
index c9f0789..0000000
--- a/contrib/perl5/lib/Pod/Text/Overstrike.pm
+++ /dev/null
@@ -1,160 +0,0 @@
-# Pod::Text::Overstrike -- Convert POD data to formatted overstrike text
-# $Id: Overstrike.pm,v 1.1 2000/12/25 12:51:23 eagle Exp $
-#
-# Created by Joe Smith <Joe.Smith@inwap.com> 30-Nov-2000
-# (based on Pod::Text::Color by Russ Allbery <rra@stanford.edu>)
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# This was written because the output from:
-#
-# pod2text Text.pm > plain.txt; less plain.txt
-#
-# is not as rich as the output from
-#
-# pod2man Text.pm | nroff -man > fancy.txt; less fancy.txt
-#
-# and because both Pod::Text::Color and Pod::Text::Termcap are not device
-# independent.
-
-############################################################################
-# Modules and declarations
-############################################################################
-
-package Pod::Text::Overstrike;
-
-require 5.004;
-
-use Pod::Text ();
-
-use strict;
-use vars qw(@ISA $VERSION);
-
-@ISA = qw(Pod::Text);
-
-# Don't use the CVS revision as the version, since this module is also in
-# Perl core and too many things could munge CVS magic revision strings.
-# This number should ideally be the same as the CVS revision in podlators,
-# however.
-$VERSION = 1.01;
-
-
-############################################################################
-# Overrides
-############################################################################
-
-# Make level one headings bold, overridding any existing formatting.
-sub cmd_head1 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- s/(.)\cH\1//g;
- s/_\cH//g;
- s/(.)/$1\b$1/g;
- $self->SUPER::cmd_head1 ($_);
-}
-
-# Make level two headings bold, overriding any existing formatting.
-sub cmd_head2 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- s/(.)\cH\1//g;
- s/_\cH//g;
- s/(.)/$1\b$1/g;
- $self->SUPER::cmd_head2 ($_);
-}
-
-# Make level three headings underscored, overriding any existing formatting.
-sub cmd_head3 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- s/(.)\cH\1//g;
- s/_\cH//g;
- s/(.)/_\b$1/g;
- $self->SUPER::cmd_head3 ($_);
-}
-
-# Fix the various interior sequences.
-sub seq_b { local $_ = $_[1]; s/(.)\cH\1//g; s/_\cH//g; s/(.)/$1\b$1/g; $_ }
-sub seq_f { local $_ = $_[1]; s/(.)\cH\1//g; s/_\cH//g; s/(.)/_\b$1/g; $_ }
-sub seq_i { local $_ = $_[1]; s/(.)\cH\1//g; s/_\cH//g; s/(.)/_\b$1/g; $_ }
-
-# We unfortunately have to override the wrapping code here, since the normal
-# wrapping code gets really confused by all the escape sequences.
-sub wrap {
- my $self = shift;
- local $_ = shift;
- my $output = '';
- my $spaces = ' ' x $$self{MARGIN};
- my $width = $$self{width} - $$self{MARGIN};
- while (length > $width) {
- if (s/^((?:(?:[^\n]\cH)?[^\n]){0,$width})\s+//
- || s/^((?:(?:[^\n]\cH)?[^\n]){$width})//) {
- $output .= $spaces . $1 . "\n";
- } else {
- last;
- }
- }
- $output .= $spaces . $_;
- $output =~ s/\s+$/\n\n/;
- $output;
-}
-
-############################################################################
-# Module return value and documentation
-############################################################################
-
-1;
-__END__
-
-=head1 NAME
-
-Pod::Text::Overstrike - Convert POD data to formatted overstrike text
-
-=head1 SYNOPSIS
-
- use Pod::Text::Overstrike;
- my $parser = Pod::Text::Overstrike->new (sentence => 0, width => 78);
-
- # Read POD from STDIN and write to STDOUT.
- $parser->parse_from_filehandle;
-
- # Read POD from file.pod and write to file.txt.
- $parser->parse_from_file ('file.pod', 'file.txt');
-
-=head1 DESCRIPTION
-
-Pod::Text::Overstrike is a simple subclass of Pod::Text that highlights
-output text using overstrike sequences, in a manner similar to nroff.
-Characters in bold text are overstruck (character, backspace, character) and
-characters in underlined text are converted to overstruck underscores
-(underscore, backspace, character). This format was originally designed for
-hardcopy terminals and/or lineprinters, yet is readable on softcopy (CRT)
-terminals.
-
-Overstruck text is best viewed by page-at-a-time programs that take
-advantage of the terminal's B<stand-out> and I<underline> capabilities, such
-as the less program on Unix.
-
-Apart from the overstrike, it in all ways functions like Pod::Text. See
-L<Pod::Text> for details and available options.
-
-=head1 BUGS
-
-Currently, the outermost formatting instruction wins, so for example
-underlined text inside a region of bold text is displayed as simply bold.
-There may be some better approach possible.
-
-=head1 SEE ALSO
-
-L<Pod::Text|Pod::Text>, L<Pod::Parser|Pod::Parser>
-
-=head1 AUTHOR
-
-Joe Smith E<lt>Joe.Smith@inwap.comE<gt>, using the framework created by Russ
-Allbery E<lt>rra@stanford.eduE<gt>.
-
-=cut
diff --git a/contrib/perl5/lib/Pod/Text/Termcap.pm b/contrib/perl5/lib/Pod/Text/Termcap.pm
deleted file mode 100644
index 333852a..0000000
--- a/contrib/perl5/lib/Pod/Text/Termcap.pm
+++ /dev/null
@@ -1,145 +0,0 @@
-# Pod::Text::Termcap -- Convert POD data to ASCII text with format escapes.
-# $Id: Termcap.pm,v 1.0 2000/12/25 12:52:48 eagle Exp $
-#
-# Copyright 1999 by Russ Allbery <rra@stanford.edu>
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# This is a simple subclass of Pod::Text that overrides a few key methods to
-# output the right termcap escape sequences for formatted text on the
-# current terminal type.
-
-############################################################################
-# Modules and declarations
-############################################################################
-
-package Pod::Text::Termcap;
-
-require 5.004;
-
-use Pod::Text ();
-use POSIX ();
-use Term::Cap;
-
-use strict;
-use vars qw(@ISA $VERSION);
-
-@ISA = qw(Pod::Text);
-
-# Don't use the CVS revision as the version, since this module is also in
-# Perl core and too many things could munge CVS magic revision strings.
-# This number should ideally be the same as the CVS revision in podlators,
-# however.
-$VERSION = 1.00;
-
-
-############################################################################
-# Overrides
-############################################################################
-
-# In the initialization method, grab our terminal characteristics as well as
-# do all the stuff we normally do.
-sub initialize {
- my $self = shift;
-
- # The default Term::Cap path won't work on Solaris.
- $ENV{TERMPATH} = "$ENV{HOME}/.termcap:/etc/termcap"
- . ":/usr/share/misc/termcap:/usr/share/lib/termcap";
-
- my $termios = POSIX::Termios->new;
- $termios->getattr;
- my $ospeed = $termios->getospeed;
- my $term = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed };
- $$self{BOLD} = $$term{_md} or die 'BOLD';
- $$self{UNDL} = $$term{_us} or die 'UNDL';
- $$self{NORM} = $$term{_me} or die 'NORM';
-
- unless (defined $$self{width}) {
- $$self{width} = $ENV{COLUMNS} || $$term{_co} || 78;
- $$self{width} -= 2;
- }
-
- $self->SUPER::initialize;
-}
-
-# Make level one headings bold.
-sub cmd_head1 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- $self->SUPER::cmd_head1 ("$$self{BOLD}$_$$self{NORM}");
-}
-
-# Make level two headings bold.
-sub cmd_head2 {
- my $self = shift;
- local $_ = shift;
- s/\s+$//;
- $self->SUPER::cmd_head2 ("$$self{BOLD}$_$$self{NORM}");
-}
-
-# Fix up B<> and I<>. Note that we intentionally don't do F<>.
-sub seq_b { my $self = shift; return "$$self{BOLD}$_[0]$$self{NORM}" }
-sub seq_i { my $self = shift; return "$$self{UNDL}$_[0]$$self{NORM}" }
-
-# Override the wrapping code to igore the special sequences.
-sub wrap {
- my $self = shift;
- local $_ = shift;
- my $output = '';
- my $spaces = ' ' x $$self{MARGIN};
- my $width = $$self{width} - $$self{MARGIN};
- my $code = "(?:\Q$$self{BOLD}\E|\Q$$self{UNDL}\E|\Q$$self{NORM}\E)";
- while (length > $width) {
- if (s/^((?:$code?[^\n]){0,$width})\s+//
- || s/^((?:$code?[^\n]){$width})//) {
- $output .= $spaces . $1 . "\n";
- } else {
- last;
- }
- }
- $output .= $spaces . $_;
- $output =~ s/\s+$/\n\n/;
- $output;
-}
-
-
-############################################################################
-# Module return value and documentation
-############################################################################
-
-1;
-__END__
-
-=head1 NAME
-
-Pod::Text::Color - Convert POD data to ASCII text with format escapes
-
-=head1 SYNOPSIS
-
- use Pod::Text::Termcap;
- my $parser = Pod::Text::Termcap->new (sentence => 0, width => 78);
-
- # Read POD from STDIN and write to STDOUT.
- $parser->parse_from_filehandle;
-
- # Read POD from file.pod and write to file.txt.
- $parser->parse_from_file ('file.pod', 'file.txt');
-
-=head1 DESCRIPTION
-
-Pod::Text::Termcap is a simple subclass of Pod::Text that highlights output
-text using the correct termcap escape sequences for the current terminal.
-Apart from the format codes, it in all ways functions like Pod::Text. See
-L<Pod::Text> for details and available options.
-
-=head1 SEE ALSO
-
-L<Pod::Text|Pod::Text>, L<Pod::Parser|Pod::Parser>
-
-=head1 AUTHOR
-
-Russ Allbery E<lt>rra@stanford.eduE<gt>.
-
-=cut
diff --git a/contrib/perl5/lib/Pod/Usage.pm b/contrib/perl5/lib/Pod/Usage.pm
deleted file mode 100644
index 3886076..0000000
--- a/contrib/perl5/lib/Pod/Usage.pm
+++ /dev/null
@@ -1,559 +0,0 @@
-#############################################################################
-# Pod/Usage.pm -- print usage messages for the running script.
-#
-# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
-# This file is part of "PodParser". PodParser is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::Usage;
-
-use vars qw($VERSION);
-$VERSION = 1.14; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-
-=head1 NAME
-
-Pod::Usage, pod2usage() - print a usage message from embedded pod documentation
-
-=head1 SYNOPSIS
-
- use Pod::Usage
-
- my $message_text = "This text precedes the usage message.";
- my $exit_status = 2; ## The exit status to use
- my $verbose_level = 0; ## The verbose level to use
- my $filehandle = \*STDERR; ## The filehandle to write to
-
- pod2usage($message_text);
-
- pod2usage($exit_status);
-
- pod2usage( { -message => $message_text ,
- -exitval => $exit_status ,
- -verbose => $verbose_level,
- -output => $filehandle } );
-
- pod2usage( -msg => $message_text ,
- -exitval => $exit_status ,
- -verbose => $verbose_level,
- -output => $filehandle );
-
-=head1 ARGUMENTS
-
-B<pod2usage> should be given either a single argument, or a list of
-arguments corresponding to an associative array (a "hash"). When a single
-argument is given, it should correspond to exactly one of the following:
-
-=over 4
-
-=item *
-
-A string containing the text of a message to print I<before> printing
-the usage message
-
-=item *
-
-A numeric value corresponding to the desired exit status
-
-=item *
-
-A reference to a hash
-
-=back
-
-If more than one argument is given then the entire argument list is
-assumed to be a hash. If a hash is supplied (either as a reference or
-as a list) it should contain one or more elements with the following
-keys:
-
-=over 4
-
-=item C<-message>
-
-=item C<-msg>
-
-The text of a message to print immediately prior to printing the
-program's usage message.
-
-=item C<-exitval>
-
-The desired exit status to pass to the B<exit()> function.
-This should be an integer, or else the string "NOEXIT" to
-indicate that control should simply be returned without
-terminating the invoking process.
-
-=item C<-verbose>
-
-The desired level of "verboseness" to use when printing the usage
-message. If the corresponding value is 0, then only the "SYNOPSIS"
-section of the pod documentation is printed. If the corresponding value
-is 1, then the "SYNOPSIS" section, along with any section entitled
-"OPTIONS", "ARGUMENTS", or "OPTIONS AND ARGUMENTS" is printed. If the
-corresponding value is 2 or more then the entire manpage is printed.
-
-=item C<-output>
-
-A reference to a filehandle, or the pathname of a file to which the
-usage message should be written. The default is C<\*STDERR> unless the
-exit value is less than 2 (in which case the default is C<\*STDOUT>).
-
-=item C<-input>
-
-A reference to a filehandle, or the pathname of a file from which the
-invoking script's pod documentation should be read. It defaults to the
-file indicated by C<$0> (C<$PROGRAM_NAME> for users of F<English.pm>).
-
-=item C<-pathlist>
-
-A list of directory paths. If the input file does not exist, then it
-will be searched for in the given directory list (in the order the
-directories appear in the list). It defaults to the list of directories
-implied by C<$ENV{PATH}>. The list may be specified either by a reference
-to an array, or by a string of directory paths which use the same path
-separator as C<$ENV{PATH}> on your system (e.g., C<:> for Unix, C<;> for
-MSWin32 and DOS).
-
-=back
-
-=head1 DESCRIPTION
-
-B<pod2usage> will print a usage message for the invoking script (using
-its embedded pod documentation) and then exit the script with the
-desired exit status. The usage message printed may have any one of three
-levels of "verboseness": If the verbose level is 0, then only a synopsis
-is printed. If the verbose level is 1, then the synopsis is printed
-along with a description (if present) of the command line options and
-arguments. If the verbose level is 2, then the entire manual page is
-printed.
-
-Unless they are explicitly specified, the default values for the exit
-status, verbose level, and output stream to use are determined as
-follows:
-
-=over 4
-
-=item *
-
-If neither the exit status nor the verbose level is specified, then the
-default is to use an exit status of 2 with a verbose level of 0.
-
-=item *
-
-If an exit status I<is> specified but the verbose level is I<not>, then the
-verbose level will default to 1 if the exit status is less than 2 and
-will default to 0 otherwise.
-
-=item *
-
-If an exit status is I<not> specified but verbose level I<is> given, then
-the exit status will default to 2 if the verbose level is 0 and will
-default to 1 otherwise.
-
-=item *
-
-If the exit status used is less than 2, then output is printed on
-C<STDOUT>. Otherwise output is printed on C<STDERR>.
-
-=back
-
-Although the above may seem a bit confusing at first, it generally does
-"the right thing" in most situations. This determination of the default
-values to use is based upon the following typical Unix conventions:
-
-=over 4
-
-=item *
-
-An exit status of 0 implies "success". For example, B<diff(1)> exits
-with a status of 0 if the two files have the same contents.
-
-=item *
-
-An exit status of 1 implies possibly abnormal, but non-defective, program
-termination. For example, B<grep(1)> exits with a status of 1 if
-it did I<not> find a matching line for the given regular expression.
-
-=item *
-
-An exit status of 2 or more implies a fatal error. For example, B<ls(1)>
-exits with a status of 2 if you specify an illegal (unknown) option on
-the command line.
-
-=item *
-
-Usage messages issued as a result of bad command-line syntax should go
-to C<STDERR>. However, usage messages issued due to an explicit request
-to print usage (like specifying B<-help> on the command line) should go
-to C<STDOUT>, just in case the user wants to pipe the output to a pager
-(such as B<more(1)>).
-
-=item *
-
-If program usage has been explicitly requested by the user, it is often
-desireable to exit with a status of 1 (as opposed to 0) after issuing
-the user-requested usage message. It is also desireable to give a
-more verbose description of program usage in this case.
-
-=back
-
-B<pod2usage> doesn't force the above conventions upon you, but it will
-use them by default if you don't expressly tell it to do otherwise. The
-ability of B<pod2usage()> to accept a single number or a string makes it
-convenient to use as an innocent looking error message handling function:
-
- use Pod::Usage;
- use Getopt::Long;
-
- ## Parse options
- GetOptions("help", "man", "flag1") || pod2usage(2);
- pod2usage(1) if ($opt_help);
- pod2usage(-verbose => 2) if ($opt_man);
-
- ## Check for too many filenames
- pod2usage("$0: Too many files given.\n") if (@ARGV > 1);
-
-Some user's however may feel that the above "economy of expression" is
-not particularly readable nor consistent and may instead choose to do
-something more like the following:
-
- use Pod::Usage;
- use Getopt::Long;
-
- ## Parse options
- GetOptions("help", "man", "flag1") || pod2usage(-verbose => 0);
- pod2usage(-verbose => 1) if ($opt_help);
- pod2usage(-verbose => 2) if ($opt_man);
-
- ## Check for too many filenames
- pod2usage(-verbose => 2, -message => "$0: Too many files given.\n")
- if (@ARGV > 1);
-
-As with all things in Perl, I<there's more than one way to do it>, and
-B<pod2usage()> adheres to this philosophy. If you are interested in
-seeing a number of different ways to invoke B<pod2usage> (although by no
-means exhaustive), please refer to L<"EXAMPLES">.
-
-=head1 EXAMPLES
-
-Each of the following invocations of C<pod2usage()> will print just the
-"SYNOPSIS" section to C<STDERR> and will exit with a status of 2:
-
- pod2usage();
-
- pod2usage(2);
-
- pod2usage(-verbose => 0);
-
- pod2usage(-exitval => 2);
-
- pod2usage({-exitval => 2, -output => \*STDERR});
-
- pod2usage({-verbose => 0, -output => \*STDERR});
-
- pod2usage(-exitval => 2, -verbose => 0);
-
- pod2usage(-exitval => 2, -verbose => 0, -output => \*STDERR);
-
-Each of the following invocations of C<pod2usage()> will print a message
-of "Syntax error." (followed by a newline) to C<STDERR>, immediately
-followed by just the "SYNOPSIS" section (also printed to C<STDERR>) and
-will exit with a status of 2:
-
- pod2usage("Syntax error.");
-
- pod2usage(-message => "Syntax error.", -verbose => 0);
-
- pod2usage(-msg => "Syntax error.", -exitval => 2);
-
- pod2usage({-msg => "Syntax error.", -exitval => 2, -output => \*STDERR});
-
- pod2usage({-msg => "Syntax error.", -verbose => 0, -output => \*STDERR});
-
- pod2usage(-msg => "Syntax error.", -exitval => 2, -verbose => 0);
-
- pod2usage(-message => "Syntax error.",
- -exitval => 2,
- -verbose => 0,
- -output => \*STDERR);
-
-Each of the following invocations of C<pod2usage()> will print the
-"SYNOPSIS" section and any "OPTIONS" and/or "ARGUMENTS" sections to
-C<STDOUT> and will exit with a status of 1:
-
- pod2usage(1);
-
- pod2usage(-verbose => 1);
-
- pod2usage(-exitval => 1);
-
- pod2usage({-exitval => 1, -output => \*STDOUT});
-
- pod2usage({-verbose => 1, -output => \*STDOUT});
-
- pod2usage(-exitval => 1, -verbose => 1);
-
- pod2usage(-exitval => 1, -verbose => 1, -output => \*STDOUT});
-
-Each of the following invocations of C<pod2usage()> will print the
-entire manual page to C<STDOUT> and will exit with a status of 1:
-
- pod2usage(-verbose => 2);
-
- pod2usage({-verbose => 2, -output => \*STDOUT});
-
- pod2usage(-exitval => 1, -verbose => 2);
-
- pod2usage({-exitval => 1, -verbose => 2, -output => \*STDOUT});
-
-=head2 Recommended Use
-
-Most scripts should print some type of usage message to C<STDERR> when a
-command line syntax error is detected. They should also provide an
-option (usually C<-H> or C<-help>) to print a (possibly more verbose)
-usage message to C<STDOUT>. Some scripts may even wish to go so far as to
-provide a means of printing their complete documentation to C<STDOUT>
-(perhaps by allowing a C<-man> option). The following complete example
-uses B<Pod::Usage> in combination with B<Getopt::Long> to do all of these
-things:
-
- use Getopt::Long;
- use Pod::Usage;
-
- my $man = 0;
- my $help = 0;
- ## Parse options and print usage if there is a syntax error,
- ## or if usage was explicitly requested.
- GetOptions('help|?' => \$help, man => \$man) or pod2usage(2);
- pod2usage(1) if $help;
- pod2usage(-verbose => 2) if $man;
-
- ## If no arguments were given, then allow STDIN to be used only
- ## if it's not connected to a terminal (otherwise print usage)
- pod2usage("$0: No files given.") if ((@ARGV == 0) && (-t STDIN));
- __END__
-
- =head1 NAME
-
- sample - Using GetOpt::Long and Pod::Usage
-
- =head1 SYNOPSIS
-
- sample [options] [file ...]
-
- Options:
- -help brief help message
- -man full documentation
-
- =head1 OPTIONS
-
- =over 8
-
- =item B<-help>
-
- Print a brief help message and exits.
-
- =item B<-man>
-
- Prints the manual page and exits.
-
- =back
-
- =head1 DESCRIPTION
-
- B<This program> will read the given input file(s) and do something
- useful with the contents thereof.
-
- =cut
-
-=head1 CAVEATS
-
-By default, B<pod2usage()> will use C<$0> as the path to the pod input
-file. Unfortunately, not all systems on which Perl runs will set C<$0>
-properly (although if C<$0> isn't found, B<pod2usage()> will search
-C<$ENV{PATH}> or else the list specified by the C<-pathlist> option).
-If this is the case for your system, you may need to explicitly specify
-the path to the pod docs for the invoking script using something
-similar to the following:
-
- pod2usage(-exitval => 2, -input => "/path/to/your/pod/docs");
-
-=head1 AUTHOR
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt>
-
-Based on code for B<Pod::Text::pod2text()> written by
-Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
-
-=head1 ACKNOWLEDGEMENTS
-
-Steven McDougall E<lt>swmcd@world.std.comE<gt> for his help and patience
-with re-writing this manpage.
-
-=cut
-
-#############################################################################
-
-use strict;
-#use diagnostics;
-use Carp;
-use Config;
-use Exporter;
-use File::Spec;
-
-use vars qw(@ISA @EXPORT);
-@EXPORT = qw(&pod2usage);
-BEGIN {
- if ( $] >= 5.005_58 ) {
- require Pod::Text;
- @ISA = qw( Pod::Text );
- }
- else {
- require Pod::PlainText;
- @ISA = qw( Pod::PlainText );
- }
-}
-
-
-##---------------------------------------------------------------------------
-
-##---------------------------------
-## Function definitions begin here
-##---------------------------------
-
-sub pod2usage {
- local($_) = shift || "";
- my %opts;
- ## Collect arguments
- if (@_ > 0) {
- ## Too many arguments - assume that this is a hash and
- ## the user forgot to pass a reference to it.
- %opts = ($_, @_);
- }
- elsif (ref $_) {
- ## User passed a ref to a hash
- %opts = %{$_} if (ref($_) eq 'HASH');
- }
- elsif (/^[-+]?\d+$/) {
- ## User passed in the exit value to use
- $opts{"-exitval"} = $_;
- }
- else {
- ## User passed in a message to print before issuing usage.
- $_ and $opts{"-message"} = $_;
- }
-
- ## Need this for backward compatibility since we formerly used
- ## options that were all uppercase words rather than ones that
- ## looked like Unix command-line options.
- ## to be uppercase keywords)
- %opts = map {
- my $val = $opts{$_};
- s/^(?=\w)/-/;
- /^-msg/i and $_ = '-message';
- /^-exit/i and $_ = '-exitval';
- lc($_) => $val;
- } (keys %opts);
-
- ## Now determine default -exitval and -verbose values to use
- if ((! defined $opts{"-exitval"}) && (! defined $opts{"-verbose"})) {
- $opts{"-exitval"} = 2;
- $opts{"-verbose"} = 0;
- }
- elsif (! defined $opts{"-exitval"}) {
- $opts{"-exitval"} = ($opts{"-verbose"} > 0) ? 1 : 2;
- }
- elsif (! defined $opts{"-verbose"}) {
- $opts{"-verbose"} = ($opts{"-exitval"} < 2);
- }
-
- ## Default the output file
- $opts{"-output"} = ($opts{"-exitval"} < 2) ? \*STDOUT : \*STDERR
- unless (defined $opts{"-output"});
- ## Default the input file
- $opts{"-input"} = $0 unless (defined $opts{"-input"});
-
- ## Look up input file in path if it doesnt exist.
- unless ((ref $opts{"-input"}) || (-e $opts{"-input"})) {
- my ($dirname, $basename) = ('', $opts{"-input"});
- my $pathsep = ($^O =~ /^(?:dos|os2|MSWin32)$/) ? ";"
- : (($^O eq 'MacOS') ? ',' : ":");
- my $pathspec = $opts{"-pathlist"} || $ENV{PATH} || $ENV{PERL5LIB};
-
- my @paths = (ref $pathspec) ? @$pathspec : split($pathsep, $pathspec);
- for $dirname (@paths) {
- $_ = File::Spec->catfile($dirname, $basename) if length;
- last if (-e $_) && ($opts{"-input"} = $_);
- }
- }
-
- ## Now create a pod reader and constrain it to the desired sections.
- my $parser = new Pod::Usage(USAGE_OPTIONS => \%opts);
- if ($opts{"-verbose"} == 0) {
- $parser->select("SYNOPSIS");
- }
- elsif ($opts{"-verbose"} == 1) {
- my $opt_re = '(?i)' .
- '(?:OPTIONS|ARGUMENTS)' .
- '(?:\s*(?:AND|\/)\s*(?:OPTIONS|ARGUMENTS))?';
- $parser->select( 'SYNOPSIS', $opt_re, "DESCRIPTION/$opt_re" );
- }
-
- ## Now translate the pod document and then exit with the desired status
- if ( $opts{"-verbose"} >= 2
- and !ref($opts{"-input"})
- and $opts{"-output"} == \*STDOUT )
- {
- ## spit out the entire PODs. Might as well invoke perldoc
- my $progpath = File::Spec->catfile($Config{bin}, "perldoc");
- system($progpath, $opts{"-input"});
- }
- else {
- $parser->parse_from_file($opts{"-input"}, $opts{"-output"});
- }
-
- exit($opts{"-exitval"}) unless (lc($opts{"-exitval"}) eq 'noexit');
-}
-
-##---------------------------------------------------------------------------
-
-##-------------------------------
-## Method definitions begin here
-##-------------------------------
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %params = @_;
- my $self = {%params};
- bless $self, $class;
- $self->initialize();
- return $self;
-}
-
-sub begin_pod {
- my $self = shift;
- $self->SUPER::begin_pod(); ## Have to call superclass
- my $msg = $self->{USAGE_OPTIONS}->{-message} or return 1;
- my $out_fh = $self->output_handle();
- print $out_fh "$msg\n";
-}
-
-sub preprocess_paragraph {
- my $self = shift;
- local $_ = shift;
- my $line = shift;
- ## See if this is a heading and we arent printing the entire manpage.
- if (($self->{USAGE_OPTIONS}->{-verbose} < 2) && /^=head/) {
- ## Change the title of the SYNOPSIS section to USAGE
- s/^=head1\s+SYNOPSIS\s*$/=head1 USAGE/;
- ## Try to do some lowercasing instead of all-caps in headings
- s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge;
- ## Use a colon to end all headings
- s/\s*$/:/ unless (/:\s*$/);
- $_ .= "\n";
- }
- return $self->SUPER::preprocess_paragraph($_);
-}
-
diff --git a/contrib/perl5/lib/Search/Dict.pm b/contrib/perl5/lib/Search/Dict.pm
deleted file mode 100644
index 9a229a7..0000000
--- a/contrib/perl5/lib/Search/Dict.pm
+++ /dev/null
@@ -1,75 +0,0 @@
-package Search::Dict;
-require 5.000;
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(look);
-
-=head1 NAME
-
-Search::Dict, look - search for key in dictionary file
-
-=head1 SYNOPSIS
-
- use Search::Dict;
- look *FILEHANDLE, $key, $dict, $fold;
-
-=head1 DESCRIPTION
-
-Sets file position in FILEHANDLE to be first line greater than or equal
-(stringwise) to I<$key>. Returns the new file position, or -1 if an error
-occurs.
-
-The flags specify dictionary order and case folding:
-
-If I<$dict> is true, search by dictionary order (ignore anything but word
-characters and whitespace).
-
-If I<$fold> is true, ignore case.
-
-=cut
-
-sub look {
- local(*FH,$key,$dict,$fold) = @_;
- local($_);
- my(@stat) = stat(FH)
- or return -1;
- my($size, $blksize) = @stat[7,11];
- $blksize ||= 8192;
- $key =~ s/[^\w\s]//g if $dict;
- $key = lc $key if $fold;
- my($min, $max, $mid) = (0, int($size / $blksize));
- while ($max - $min > 1) {
- $mid = int(($max + $min) / 2);
- seek(FH, $mid * $blksize, 0)
- or return -1;
- <FH> if $mid; # probably a partial line
- $_ = <FH>;
- chop;
- s/[^\w\s]//g if $dict;
- $_ = lc $_ if $fold;
- if (defined($_) && $_ lt $key) {
- $min = $mid;
- }
- else {
- $max = $mid;
- }
- }
- $min *= $blksize;
- seek(FH,$min,0)
- or return -1;
- <FH> if $min;
- for (;;) {
- $min = tell(FH);
- defined($_ = <FH>)
- or last;
- chop;
- s/[^\w\s]//g if $dict;
- $_ = lc $_ if $fold;
- last if $_ ge $key;
- }
- seek(FH,$min,0);
- $min;
-}
-
-1;
diff --git a/contrib/perl5/lib/SelectSaver.pm b/contrib/perl5/lib/SelectSaver.pm
deleted file mode 100644
index 5f56922..0000000
--- a/contrib/perl5/lib/SelectSaver.pm
+++ /dev/null
@@ -1,52 +0,0 @@
-package SelectSaver;
-
-=head1 NAME
-
-SelectSaver - save and restore selected file handle
-
-=head1 SYNOPSIS
-
- use SelectSaver;
-
- {
- my $saver = new SelectSaver(FILEHANDLE);
- # FILEHANDLE is selected
- }
- # previous handle is selected
-
- {
- my $saver = new SelectSaver;
- # new handle may be selected, or not
- }
- # previous handle is selected
-
-=head1 DESCRIPTION
-
-A C<SelectSaver> object contains a reference to the file handle that
-was selected when it was created. If its C<new> method gets an extra
-parameter, then that parameter is selected; otherwise, the selected
-file handle remains unchanged.
-
-When a C<SelectSaver> is destroyed, it re-selects the file handle
-that was selected when it was created.
-
-=cut
-
-require 5.000;
-use Carp;
-use Symbol;
-
-sub new {
- @_ >= 1 && @_ <= 2 or croak 'usage: new SelectSaver [FILEHANDLE]';
- my $fh = select;
- my $self = bless [$fh], $_[0];
- select qualify($_[1], caller) if @_ > 1;
- $self;
-}
-
-sub DESTROY {
- my $this = $_[0];
- select $$this[0];
-}
-
-1;
diff --git a/contrib/perl5/lib/SelfLoader.pm b/contrib/perl5/lib/SelfLoader.pm
deleted file mode 100644
index 3b9c52d..0000000
--- a/contrib/perl5/lib/SelfLoader.pm
+++ /dev/null
@@ -1,307 +0,0 @@
-package SelfLoader;
-# use Carp;
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(AUTOLOAD);
-$VERSION = "1.0902";
-sub Version {$VERSION}
-$DEBUG = 0;
-
-my %Cache; # private cache for all SelfLoader's client packages
-
-# allow checking for valid ': attrlist' attachments
-my $nested;
-$nested = qr{ \( (?: (?> [^()]+ ) | (??{ $nested }) )* \) }x;
-my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) (?:\s*\:\s*|\s+(?!\:)) }x;
-my $attr_list = qr{ \s* : \s* (?: $one_attr )* }x;
-
-sub croak { require Carp; goto &Carp::croak }
-
-AUTOLOAD {
- print STDERR "SelfLoader::AUTOLOAD for $AUTOLOAD\n" if $DEBUG;
- my $SL_code = $Cache{$AUTOLOAD};
- my $save = $@; # evals in both AUTOLOAD and _load_stubs can corrupt $@
- unless ($SL_code) {
- # Maybe this pack had stubs before __DATA__, and never initialized.
- # Or, this maybe an automatic DESTROY method call when none exists.
- $AUTOLOAD =~ m/^(.*)::/;
- SelfLoader->_load_stubs($1) unless exists $Cache{"${1}::<DATA"};
- $SL_code = $Cache{$AUTOLOAD};
- $SL_code = "sub $AUTOLOAD { }"
- if (!$SL_code and $AUTOLOAD =~ m/::DESTROY$/);
- croak "Undefined subroutine $AUTOLOAD" unless $SL_code;
- }
- print STDERR "SelfLoader::AUTOLOAD eval: $SL_code\n" if $DEBUG;
-
- eval $SL_code;
- if ($@) {
- $@ =~ s/ at .*\n//;
- croak $@;
- }
- $@ = $save;
- defined(&$AUTOLOAD) || die "SelfLoader inconsistency error";
- delete $Cache{$AUTOLOAD};
- goto &$AUTOLOAD
-}
-
-sub load_stubs { shift->_load_stubs((caller)[0]) }
-
-sub _load_stubs {
- my($self, $callpack) = @_;
- my $fh = \*{"${callpack}::DATA"};
- my $currpack = $callpack;
- my($line,$name,@lines, @stubs, $protoype);
-
- print STDERR "SelfLoader::load_stubs($callpack)\n" if $DEBUG;
- croak("$callpack doesn't contain an __DATA__ token")
- unless fileno($fh);
- $Cache{"${currpack}::<DATA"} = 1; # indicate package is cached
-
- local($/) = "\n";
- while(defined($line = <$fh>) and $line !~ m/^__END__/) {
- if ($line =~ m/^sub\s+([\w:]+)\s*((?:\([\\\$\@\%\&\*\;]*\))?(?:$attr_list)?)/) {
- push(@stubs, $self->_add_to_cache($name, $currpack, \@lines, $protoype));
- $protoype = $2;
- @lines = ($line);
- if (index($1,'::') == -1) { # simple sub name
- $name = "${currpack}::$1";
- } else { # sub name with package
- $name = $1;
- $name =~ m/^(.*)::/;
- if (defined(&{"${1}::AUTOLOAD"})) {
- \&{"${1}::AUTOLOAD"} == \&SelfLoader::AUTOLOAD ||
- die 'SelfLoader Error: attempt to specify Selfloading',
- " sub $name in non-selfloading module $1";
- } else {
- $self->export($1,'AUTOLOAD');
- }
- }
- } elsif ($line =~ m/^package\s+([\w:]+)/) { # A package declared
- push(@stubs, $self->_add_to_cache($name, $currpack, \@lines, $protoype));
- $self->_package_defined($line);
- $name = '';
- @lines = ();
- $currpack = $1;
- $Cache{"${currpack}::<DATA"} = 1; # indicate package is cached
- if (defined(&{"${1}::AUTOLOAD"})) {
- \&{"${1}::AUTOLOAD"} == \&SelfLoader::AUTOLOAD ||
- die 'SelfLoader Error: attempt to specify Selfloading',
- " package $currpack which already has AUTOLOAD";
- } else {
- $self->export($currpack,'AUTOLOAD');
- }
- } else {
- push(@lines,$line);
- }
- }
- close($fh) unless defined($line) && $line =~ /^__END__\s*DATA/; # __END__
- push(@stubs, $self->_add_to_cache($name, $currpack, \@lines, $protoype));
- eval join('', @stubs) if @stubs;
-}
-
-
-sub _add_to_cache {
- my($self,$fullname,$pack,$lines, $protoype) = @_;
- return () unless $fullname;
- (require Carp), Carp::carp("Redefining sub $fullname")
- if exists $Cache{$fullname};
- $Cache{$fullname} = join('', "package $pack; ",@$lines);
- print STDERR "SelfLoader cached $fullname: $Cache{$fullname}" if $DEBUG;
- # return stub to be eval'd
- defined($protoype) ? "sub $fullname $protoype;" : "sub $fullname;"
-}
-
-sub _package_defined {}
-
-1;
-__END__
-
-=head1 NAME
-
-SelfLoader - load functions only on demand
-
-=head1 SYNOPSIS
-
- package FOOBAR;
- use SelfLoader;
-
- ... (initializing code)
-
- __DATA__
- sub {....
-
-
-=head1 DESCRIPTION
-
-This module tells its users that functions in the FOOBAR package are to be
-autoloaded from after the C<__DATA__> token. See also
-L<perlsub/"Autoloading">.
-
-=head2 The __DATA__ token
-
-The C<__DATA__> token tells the perl compiler that the perl code
-for compilation is finished. Everything after the C<__DATA__> token
-is available for reading via the filehandle FOOBAR::DATA,
-where FOOBAR is the name of the current package when the C<__DATA__>
-token is reached. This works just the same as C<__END__> does in
-package 'main', but for other modules data after C<__END__> is not
-automatically retrievable, whereas data after C<__DATA__> is.
-The C<__DATA__> token is not recognized in versions of perl prior to
-5.001m.
-
-Note that it is possible to have C<__DATA__> tokens in the same package
-in multiple files, and that the last C<__DATA__> token in a given
-package that is encountered by the compiler is the one accessible
-by the filehandle. This also applies to C<__END__> and main, i.e. if
-the 'main' program has an C<__END__>, but a module 'require'd (_not_ 'use'd)
-by that program has a 'package main;' declaration followed by an 'C<__DATA__>',
-then the C<DATA> filehandle is set to access the data after the C<__DATA__>
-in the module, _not_ the data after the C<__END__> token in the 'main'
-program, since the compiler encounters the 'require'd file later.
-
-=head2 SelfLoader autoloading
-
-The B<SelfLoader> works by the user placing the C<__DATA__>
-token I<after> perl code which needs to be compiled and
-run at 'require' time, but I<before> subroutine declarations
-that can be loaded in later - usually because they may never
-be called.
-
-The B<SelfLoader> will read from the FOOBAR::DATA filehandle to
-load in the data after C<__DATA__>, and load in any subroutine
-when it is called. The costs are the one-time parsing of the
-data after C<__DATA__>, and a load delay for the _first_
-call of any autoloaded function. The benefits (hopefully)
-are a speeded up compilation phase, with no need to load
-functions which are never used.
-
-The B<SelfLoader> will stop reading from C<__DATA__> if
-it encounters the C<__END__> token - just as you would expect.
-If the C<__END__> token is present, and is followed by the
-token DATA, then the B<SelfLoader> leaves the FOOBAR::DATA
-filehandle open on the line after that token.
-
-The B<SelfLoader> exports the C<AUTOLOAD> subroutine to the
-package using the B<SelfLoader>, and this loads the called
-subroutine when it is first called.
-
-There is no advantage to putting subroutines which will _always_
-be called after the C<__DATA__> token.
-
-=head2 Autoloading and package lexicals
-
-A 'my $pack_lexical' statement makes the variable $pack_lexical
-local _only_ to the file up to the C<__DATA__> token. Subroutines
-declared elsewhere _cannot_ see these types of variables,
-just as if you declared subroutines in the package but in another
-file, they cannot see these variables.
-
-So specifically, autoloaded functions cannot see package
-lexicals (this applies to both the B<SelfLoader> and the Autoloader).
-The C<vars> pragma provides an alternative to defining package-level
-globals that will be visible to autoloaded routines. See the documentation
-on B<vars> in the pragma section of L<perlmod>.
-
-=head2 SelfLoader and AutoLoader
-
-The B<SelfLoader> can replace the AutoLoader - just change 'use AutoLoader'
-to 'use SelfLoader' (though note that the B<SelfLoader> exports
-the AUTOLOAD function - but if you have your own AUTOLOAD and
-are using the AutoLoader too, you probably know what you're doing),
-and the C<__END__> token to C<__DATA__>. You will need perl version 5.001m
-or later to use this (version 5.001 with all patches up to patch m).
-
-There is no need to inherit from the B<SelfLoader>.
-
-The B<SelfLoader> works similarly to the AutoLoader, but picks up the
-subs from after the C<__DATA__> instead of in the 'lib/auto' directory.
-There is a maintenance gain in not needing to run AutoSplit on the module
-at installation, and a runtime gain in not needing to keep opening and
-closing files to load subs. There is a runtime loss in needing
-to parse the code after the C<__DATA__>. Details of the B<AutoLoader> and
-another view of these distinctions can be found in that module's
-documentation.
-
-=head2 __DATA__, __END__, and the FOOBAR::DATA filehandle.
-
-This section is only relevant if you want to use
-the C<FOOBAR::DATA> together with the B<SelfLoader>.
-
-Data after the C<__DATA__> token in a module is read using the
-FOOBAR::DATA filehandle. C<__END__> can still be used to denote the end
-of the C<__DATA__> section if followed by the token DATA - this is supported
-by the B<SelfLoader>. The C<FOOBAR::DATA> filehandle is left open if an
-C<__END__> followed by a DATA is found, with the filehandle positioned at
-the start of the line after the C<__END__> token. If no C<__END__> token is
-present, or an C<__END__> token with no DATA token on the same line, then
-the filehandle is closed.
-
-The B<SelfLoader> reads from wherever the current
-position of the C<FOOBAR::DATA> filehandle is, until the
-EOF or C<__END__>. This means that if you want to use
-that filehandle (and ONLY if you want to), you should either
-
-1. Put all your subroutine declarations immediately after
-the C<__DATA__> token and put your own data after those
-declarations, using the C<__END__> token to mark the end
-of subroutine declarations. You must also ensure that the B<SelfLoader>
-reads first by calling 'SelfLoader-E<gt>load_stubs();', or by using a
-function which is selfloaded;
-
-or
-
-2. You should read the C<FOOBAR::DATA> filehandle first, leaving
-the handle open and positioned at the first line of subroutine
-declarations.
-
-You could conceivably do both.
-
-=head2 Classes and inherited methods.
-
-For modules which are not classes, this section is not relevant.
-This section is only relevant if you have methods which could
-be inherited.
-
-A subroutine stub (or forward declaration) looks like
-
- sub stub;
-
-i.e. it is a subroutine declaration without the body of the
-subroutine. For modules which are not classes, there is no real
-need for stubs as far as autoloading is concerned.
-
-For modules which ARE classes, and need to handle inherited methods,
-stubs are needed to ensure that the method inheritance mechanism works
-properly. You can load the stubs into the module at 'require' time, by
-adding the statement 'SelfLoader-E<gt>load_stubs();' to the module to do
-this.
-
-The alternative is to put the stubs in before the C<__DATA__> token BEFORE
-releasing the module, and for this purpose the C<Devel::SelfStubber>
-module is available. However this does require the extra step of ensuring
-that the stubs are in the module. If this is done I strongly recommend
-that this is done BEFORE releasing the module - it should NOT be done
-at install time in general.
-
-=head1 Multiple packages and fully qualified subroutine names
-
-Subroutines in multiple packages within the same file are supported - but you
-should note that this requires exporting the C<SelfLoader::AUTOLOAD> to
-every package which requires it. This is done automatically by the
-B<SelfLoader> when it first loads the subs into the cache, but you should
-really specify it in the initialization before the C<__DATA__> by putting
-a 'use SelfLoader' statement in each package.
-
-Fully qualified subroutine names are also supported. For example,
-
- __DATA__
- sub foo::bar {23}
- package baz;
- sub dob {32}
-
-will all be loaded correctly by the B<SelfLoader>, and the B<SelfLoader>
-will ensure that the packages 'foo' and 'baz' correctly have the
-B<SelfLoader> C<AUTOLOAD> method when the data after C<__DATA__> is first
-parsed.
-
-=cut
diff --git a/contrib/perl5/lib/Shell.pm b/contrib/perl5/lib/Shell.pm
deleted file mode 100644
index c2f522c..0000000
--- a/contrib/perl5/lib/Shell.pm
+++ /dev/null
@@ -1,201 +0,0 @@
-package Shell;
-use 5.005_64;
-use strict;
-use warnings;
-our($capture_stderr, $VERSION, $AUTOLOAD);
-
-$VERSION = '0.3';
-
-sub new { bless \$VERSION, shift } # Nothing better to bless
-sub DESTROY { }
-
-sub import {
- my $self = shift;
- my ($callpack, $callfile, $callline) = caller;
- my @EXPORT;
- if (@_) {
- @EXPORT = @_;
- } else {
- @EXPORT = 'AUTOLOAD';
- }
- foreach my $sym (@EXPORT) {
- no strict 'refs';
- *{"${callpack}::$sym"} = \&{"Shell::$sym"};
- }
-}
-
-sub AUTOLOAD {
- shift if ref $_[0] && $_[0]->isa( 'Shell' );
- my $cmd = $AUTOLOAD;
- $cmd =~ s/^.*:://;
- eval <<"*END*";
- sub $AUTOLOAD {
- if (\@_ < 1) {
- \$Shell::capture_stderr ? `$cmd 2>&1` : `$cmd`;
- } elsif ('$^O' eq 'os2') {
- local(\*SAVEOUT, \*READ, \*WRITE);
-
- open SAVEOUT, '>&STDOUT' or die;
- pipe READ, WRITE or die;
- open STDOUT, '>&WRITE' or die;
- close WRITE;
-
- my \$pid = system(1, '$cmd', \@_);
- die "Can't execute $cmd: \$!\\n" if \$pid < 0;
-
- open STDOUT, '>&SAVEOUT' or die;
- close SAVEOUT;
-
- if (wantarray) {
- my \@ret = <READ>;
- close READ;
- waitpid \$pid, 0;
- \@ret;
- } else {
- local(\$/) = undef;
- my \$ret = <READ>;
- close READ;
- waitpid \$pid, 0;
- \$ret;
- }
- } else {
- my \$a;
- my \@arr = \@_;
- if ('$^O' eq 'MSWin32') {
- # XXX this special-casing should not be needed
- # if we do quoting right on Windows. :-(
- #
- # First, escape all quotes. Cover the case where we
- # want to pass along a quote preceded by a backslash
- # (i.e., C<"param \\""" end">).
- # Ugly, yup? You know, windoze.
- # Enclose in quotes only the parameters that need it:
- # try this: c:\> dir "/w"
- # and this: c:\> dir /w
- for (\@arr) {
- s/"/\\\\"/g;
- s/\\\\\\\\"/\\\\\\\\"""/g;
- \$_ = qq["\$_"] if /\\s/;
- }
- } else {
- for (\@arr) {
- s/(['\\\\])/\\\\\$1/g;
- \$_ = \$_;
- }
- }
- push \@arr, '2>&1' if \$Shell::capture_stderr;
- open(SUBPROC, join(' ', '$cmd', \@arr, '|'))
- or die "Can't exec $cmd: \$!\\n";
- if (wantarray) {
- my \@ret = <SUBPROC>;
- close SUBPROC; # XXX Oughta use a destructor.
- \@ret;
- } else {
- local(\$/) = undef;
- my \$ret = <SUBPROC>;
- close SUBPROC;
- \$ret;
- }
- }
- }
-*END*
-
- die "$@\n" if $@;
- goto &$AUTOLOAD;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Shell - run shell commands transparently within perl
-
-=head1 SYNOPSIS
-
-See below.
-
-=head1 DESCRIPTION
-
- Date: Thu, 22 Sep 94 16:18:16 -0700
- Message-Id: <9409222318.AA17072@scalpel.netlabs.com>
- To: perl5-porters@isu.edu
- From: Larry Wall <lwall@scalpel.netlabs.com>
- Subject: a new module I just wrote
-
-Here's one that'll whack your mind a little out.
-
- #!/usr/bin/perl
-
- use Shell;
-
- $foo = echo("howdy", "<funny>", "world");
- print $foo;
-
- $passwd = cat("</etc/passwd");
- print $passwd;
-
- sub ps;
- print ps -ww;
-
- cp("/etc/passwd", "/tmp/passwd");
-
-That's maybe too gonzo. It actually exports an AUTOLOAD to the current
-package (and uncovered a bug in Beta 3, by the way). Maybe the usual
-usage should be
-
- use Shell qw(echo cat ps cp);
-
-Larry
-
-
-If you set $Shell::capture_stderr to 1, the module will attempt to
-capture the STDERR of the process as well.
-
-The module now should work on Win32.
-
- Jenda
-
-There seemed to be a problem where all arguments to a shell command were
-quoted before being executed. As in the following example:
-
- cat('</etc/passwd');
- ls('*.pl');
-
-really turned into:
-
- cat '</etc/passwd'
- ls '*.pl'
-
-instead of:
-
- cat </etc/passwd
- ls *.pl
-
-and of course, this is wrong.
-
-I have fixed this bug, it was brought up by Wolfgang Laun [ID 20000326.008]
-
-Casey
-
-=head2 OBJECT ORIENTED SYNTAX
-
-Shell now has an OO interface. Good for namespace conservation
-and shell representation.
-
- use Shell;
- my $sh = Shell->new;
- print $sh->ls;
-
-Casey
-
-=head1 AUTHOR
-
-Larry Wall
-
-Changes by Jenda@Krynicky.cz and Dave Cottle <d.cottle@csc.canterbury.ac.nz>
-
-Changes and bug fixes by Casey Tweten <crt@kiski.net>
-
-=cut
diff --git a/contrib/perl5/lib/Symbol.pm b/contrib/perl5/lib/Symbol.pm
deleted file mode 100644
index a95383a..0000000
--- a/contrib/perl5/lib/Symbol.pm
+++ /dev/null
@@ -1,146 +0,0 @@
-package Symbol;
-
-=head1 NAME
-
-Symbol - manipulate Perl symbols and their names
-
-=head1 SYNOPSIS
-
- use Symbol;
-
- $sym = gensym;
- open($sym, "filename");
- $_ = <$sym>;
- # etc.
-
- ungensym $sym; # no effect
-
- print qualify("x"), "\n"; # "Test::x"
- print qualify("x", "FOO"), "\n" # "FOO::x"
- print qualify("BAR::x"), "\n"; # "BAR::x"
- print qualify("BAR::x", "FOO"), "\n"; # "BAR::x"
- print qualify("STDOUT", "FOO"), "\n"; # "main::STDOUT" (global)
- print qualify(\*x), "\n"; # returns \*x
- print qualify(\*x, "FOO"), "\n"; # returns \*x
-
- use strict refs;
- print { qualify_to_ref $fh } "foo!\n";
- $ref = qualify_to_ref $name, $pkg;
-
- use Symbol qw(delete_package);
- delete_package('Foo::Bar');
- print "deleted\n" unless exists $Foo::{'Bar::'};
-
-
-=head1 DESCRIPTION
-
-C<Symbol::gensym> creates an anonymous glob and returns a reference
-to it. Such a glob reference can be used as a file or directory
-handle.
-
-For backward compatibility with older implementations that didn't
-support anonymous globs, C<Symbol::ungensym> is also provided.
-But it doesn't do anything.
-
-C<Symbol::qualify> turns unqualified symbol names into qualified
-variable names (e.g. "myvar" -E<gt> "MyPackage::myvar"). If it is given a
-second parameter, C<qualify> uses it as the default package;
-otherwise, it uses the package of its caller. Regardless, global
-variable names (e.g. "STDOUT", "ENV", "SIG") are always qualified with
-"main::".
-
-Qualification applies only to symbol names (strings). References are
-left unchanged under the assumption that they are glob references,
-which are qualified by their nature.
-
-C<Symbol::qualify_to_ref> is just like C<Symbol::qualify> except that it
-returns a glob ref rather than a symbol name, so you can use the result
-even if C<use strict 'refs'> is in effect.
-
-C<Symbol::delete_package> wipes out a whole package namespace. Note
-this routine is not exported by default--you may want to import it
-explicitly.
-
-=cut
-
-BEGIN { require 5.002; }
-
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(gensym ungensym qualify qualify_to_ref);
-@EXPORT_OK = qw(delete_package);
-
-$VERSION = 1.02;
-
-my $genpkg = "Symbol::";
-my $genseq = 0;
-
-my %global = map {$_ => 1} qw(ARGV ARGVOUT ENV INC SIG STDERR STDIN STDOUT);
-
-#
-# Note that we never _copy_ the glob; we just make a ref to it.
-# If we did copy it, then SVf_FAKE would be set on the copy, and
-# glob-specific behaviors (e.g. C<*$ref = \&func>) wouldn't work.
-#
-sub gensym () {
- my $name = "GEN" . $genseq++;
- my $ref = \*{$genpkg . $name};
- delete $$genpkg{$name};
- $ref;
-}
-
-sub ungensym ($) {}
-
-sub qualify ($;$) {
- my ($name) = @_;
- if (!ref($name) && index($name, '::') == -1 && index($name, "'") == -1) {
- my $pkg;
- # Global names: special character, "^x", or other.
- if ($name =~ /^([^a-z])|(\^[a-z])$/i || $global{$name}) {
- $pkg = "main";
- }
- else {
- $pkg = (@_ > 1) ? $_[1] : caller;
- }
- $name = $pkg . "::" . $name;
- }
- $name;
-}
-
-sub qualify_to_ref ($;$) {
- return \*{ qualify $_[0], @_ > 1 ? $_[1] : caller };
-}
-
-#
-# of Safe.pm lineage
-#
-sub delete_package ($) {
- my $pkg = shift;
-
- # expand to full symbol table name if needed
-
- unless ($pkg =~ /^main::.*::$/) {
- $pkg = "main$pkg" if $pkg =~ /^::/;
- $pkg = "main::$pkg" unless $pkg =~ /^main::/;
- $pkg .= '::' unless $pkg =~ /::$/;
- }
-
- my($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/;
- my $stem_symtab = *{$stem}{HASH};
- return unless defined $stem_symtab and exists $stem_symtab->{$leaf};
-
-
- # free all the symbols in the package
-
- my $leaf_symtab = *{$stem_symtab->{$leaf}}{HASH};
- foreach my $name (keys %$leaf_symtab) {
- undef *{$pkg . $name};
- }
-
- # delete the symbol table
-
- %$leaf_symtab = ();
- delete $stem_symtab->{$leaf};
-}
-
-1;
diff --git a/contrib/perl5/lib/Term/ANSIColor.pm b/contrib/perl5/lib/Term/ANSIColor.pm
deleted file mode 100644
index b61efcb..0000000
--- a/contrib/perl5/lib/Term/ANSIColor.pm
+++ /dev/null
@@ -1,351 +0,0 @@
-# Term::ANSIColor -- Color screen output using ANSI escape sequences.
-# $Id: ANSIColor.pm,v 1.3 2000/08/06 18:28:10 eagle Exp $
-#
-# Copyright 1996, 1997, 1998, 2000
-# by Russ Allbery <rra@stanford.edu> and Zenin <zenin@best.com>
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
-# Ah, September, when the sysadmins turn colors and fall off the trees....
-# -- Dave Van Domelen
-
-############################################################################
-# Modules and declarations
-############################################################################
-
-package Term::ANSIColor;
-require 5.001;
-
-use strict;
-use vars qw(@ISA @EXPORT %EXPORT_TAGS $VERSION $AUTOLOAD %attributes
- $AUTORESET $EACHLINE);
-
-use Exporter ();
-@ISA = qw(Exporter);
-@EXPORT = qw(color colored);
-%EXPORT_TAGS = (constants => [qw(CLEAR RESET BOLD UNDERLINE UNDERSCORE BLINK
- REVERSE CONCEALED BLACK RED GREEN YELLOW
- BLUE MAGENTA CYAN WHITE ON_BLACK ON_RED
- ON_GREEN ON_YELLOW ON_BLUE ON_MAGENTA
- ON_CYAN ON_WHITE)]);
-Exporter::export_ok_tags ('constants');
-
-# Don't use the CVS revision as the version, since this module is also in
-# Perl core and too many things could munge CVS magic revision strings.
-$VERSION = 1.03;
-
-
-############################################################################
-# Internal data structures
-############################################################################
-
-%attributes = ('clear' => 0,
- 'reset' => 0,
- 'bold' => 1,
- 'dark' => 2,
- 'underline' => 4,
- 'underscore' => 4,
- 'blink' => 5,
- 'reverse' => 7,
- 'concealed' => 8,
-
- 'black' => 30, 'on_black' => 40,
- 'red' => 31, 'on_red' => 41,
- 'green' => 32, 'on_green' => 42,
- 'yellow' => 33, 'on_yellow' => 43,
- 'blue' => 34, 'on_blue' => 44,
- 'magenta' => 35, 'on_magenta' => 45,
- 'cyan' => 36, 'on_cyan' => 46,
- 'white' => 37, 'on_white' => 47);
-
-
-############################################################################
-# Implementation (constant form)
-############################################################################
-
-# Time to have fun! We now want to define the constant subs, which are
-# named the same as the attributes above but in all caps. Each constant sub
-# needs to act differently depending on whether $AUTORESET is set. Without
-# autoreset:
-#
-# BLUE "text\n" ==> "\e[34mtext\n"
-#
-# If $AUTORESET is set, we should instead get:
-#
-# BLUE "text\n" ==> "\e[34mtext\n\e[0m"
-#
-# The sub also needs to handle the case where it has no arguments correctly.
-# Maintaining all of this as separate subs would be a major nightmare, as
-# well as duplicate the %attributes hash, so instead we define an AUTOLOAD
-# sub to define the constant subs on demand. To do that, we check the name
-# of the called sub against the list of attributes, and if it's an all-caps
-# version of one of them, we define the sub on the fly and then run it.
-sub AUTOLOAD {
- my $sub;
- ($sub = $AUTOLOAD) =~ s/^.*:://;
- my $attr = $attributes{lc $sub};
- if ($sub =~ /^[A-Z_]+$/ && defined $attr) {
- $attr = "\e[" . $attr . 'm';
- eval qq {
- sub $AUTOLOAD {
- if (\$AUTORESET && \@_) {
- '$attr' . "\@_" . "\e[0m";
- } else {
- ('$attr' . "\@_");
- }
- }
- };
- goto &$AUTOLOAD;
- } else {
- require Carp;
- Carp::croak ("undefined subroutine &$AUTOLOAD called");
- }
-}
-
-
-############################################################################
-# Implementation (attribute string form)
-############################################################################
-
-# Return the escape code for a given set of color attributes.
-sub color {
- my @codes = map { split } @_;
- my $attribute = '';
- foreach (@codes) {
- $_ = lc $_;
- unless (defined $attributes{$_}) {
- require Carp;
- Carp::croak ("Invalid attribute name $_");
- }
- $attribute .= $attributes{$_} . ';';
- }
- chop $attribute;
- ($attribute ne '') ? "\e[${attribute}m" : undef;
-}
-
-# Given a string and a set of attributes, returns the string surrounded by
-# escape codes to set those attributes and then clear them at the end of the
-# string. The attributes can be given either as an array ref as the first
-# argument or as a list as the second and subsequent arguments. If
-# $EACHLINE is set, insert a reset before each occurrence of the string
-# $EACHLINE and the starting attribute code after the string $EACHLINE, so
-# that no attribute crosses line delimiters (this is often desirable if the
-# output is to be piped to a pager or some other program).
-sub colored {
- my ($string, @codes);
- if (ref $_[0]) {
- @codes = @{+shift};
- $string = join ('', @_);
- } else {
- $string = shift;
- @codes = @_;
- }
- if (defined $EACHLINE) {
- my $attr = color (@codes);
- join '',
- map { $_ && $_ ne $EACHLINE ? $attr . $_ . "\e[0m" : $_ }
- split (/(\Q$EACHLINE\E)/, $string);
- } else {
- color (@codes) . $string . "\e[0m";
- }
-}
-
-
-############################################################################
-# Module return value and documentation
-############################################################################
-
-# Ensure we evaluate to true.
-1;
-__END__
-
-=head1 NAME
-
-Term::ANSIColor - Color screen output using ANSI escape sequences
-
-=head1 SYNOPSIS
-
- use Term::ANSIColor;
- print color 'bold blue';
- print "This text is bold blue.\n";
- print color 'reset';
- print "This text is normal.\n";
- print colored ("Yellow on magenta.\n", 'yellow on_magenta');
- print "This text is normal.\n";
- print colored ['yellow on_magenta'], "Yellow on magenta.\n";
-
- use Term::ANSIColor qw(:constants);
- print BOLD, BLUE, "This text is in bold blue.\n", RESET;
-
- use Term::ANSIColor qw(:constants);
- $Term::ANSIColor::AUTORESET = 1;
- print BOLD BLUE "This text is in bold blue.\n";
- print "This text is normal.\n";
-
-=head1 DESCRIPTION
-
-This module has two interfaces, one through color() and colored() and the
-other through constants.
-
-color() takes any number of strings as arguments and considers them to be
-space-separated lists of attributes. It then forms and returns the escape
-sequence to set those attributes. It doesn't print it out, just returns
-it, so you'll have to print it yourself if you want to (this is so that
-you can save it as a string, pass it to something else, send it to a file
-handle, or do anything else with it that you might care to).
-
-The recognized attributes (all of which should be fairly intuitive) are
-clear, reset, dark, bold, underline, underscore, blink, reverse,
-concealed, black, red, green, yellow, blue, magenta, on_black, on_red,
-on_green, on_yellow, on_blue, on_magenta, on_cyan, and on_white. Case is
-not significant. Underline and underscore are equivalent, as are clear
-and reset, so use whichever is the most intuitive to you. The color alone
-sets the foreground color, and on_color sets the background color.
-
-Note that not all attributes are supported by all terminal types, and some
-terminals may not support any of these sequences. Dark, blink, and
-concealed in particular are frequently not implemented.
-
-Attributes, once set, last until they are unset (by sending the attribute
-"reset"). Be careful to do this, or otherwise your attribute will last
-after your script is done running, and people get very annoyed at having
-their prompt and typing changed to weird colors.
-
-As an aid to help with this, colored() takes a scalar as the first
-argument and any number of attribute strings as the second argument and
-returns the scalar wrapped in escape codes so that the attributes will be
-set as requested before the string and reset to normal after the string.
-Alternately, you can pass a reference to an array as the first argument,
-and then the contents of that array will be taken as attributes and color
-codes and the remainder of the arguments as text to colorize.
-
-Normally, colored() just puts attribute codes at the beginning and end of
-the string, but if you set $Term::ANSIColor::EACHLINE to some string,
-that string will be considered the line delimiter and the attribute will
-be set at the beginning of each line of the passed string and reset at the
-end of each line. This is often desirable if the output is being sent to
-a program like a pager that can be confused by attributes that span lines.
-Normally you'll want to set $Term::ANSIColor::EACHLINE to C<"\n"> to use
-this feature.
-
-Alternately, if you import C<:constants>, you can use the constants CLEAR,
-RESET, BOLD, DARK, UNDERLINE, UNDERSCORE, BLINK, REVERSE, CONCEALED,
-BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, ON_BLACK, ON_RED, ON_GREEN,
-ON_YELLOW, ON_BLUE, ON_MAGENTA, ON_CYAN, and ON_WHITE directly. These are
-the same as color('attribute') and can be used if you prefer typing:
-
- print BOLD BLUE ON_WHITE "Text\n", RESET;
-
-to
-
- print colored ("Text\n", 'bold blue on_white');
-
-When using the constants, if you don't want to have to remember to add the
-C<, RESET> at the end of each print line, you can set
-$Term::ANSIColor::AUTORESET to a true value. Then, the display mode will
-automatically be reset if there is no comma after the constant. In other
-words, with that variable set:
-
- print BOLD BLUE "Text\n";
-
-will reset the display mode afterwards, whereas:
-
- print BOLD, BLUE, "Text\n";
-
-will not.
-
-The subroutine interface has the advantage over the constants interface in
-that only two subroutines are exported into your namespace, versus
-twenty-two in the constants interface. On the flip side, the constants
-interface has the advantage of better compile time error checking, since
-misspelled names of colors or attributes in calls to color() and colored()
-won't be caught until runtime whereas misspelled names of constants will
-be caught at compile time. So, polute your namespace with almost two
-dozen subroutines that you may not even use that often, or risk a silly
-bug by mistyping an attribute. Your choice, TMTOWTDI after all.
-
-=head1 DIAGNOSTICS
-
-=over 4
-
-=item Invalid attribute name %s
-
-(F) You passed an invalid attribute name to either color() or colored().
-
-=item Name "%s" used only once: possible typo
-
-(W) You probably mistyped a constant color name such as:
-
- print FOOBAR "This text is color FOOBAR\n";
-
-It's probably better to always use commas after constant names in order to
-force the next error.
-
-=item No comma allowed after filehandle
-
-(F) You probably mistyped a constant color name such as:
-
- print FOOBAR, "This text is color FOOBAR\n";
-
-Generating this fatal compile error is one of the main advantages of using
-the constants interface, since you'll immediately know if you mistype a
-color name.
-
-=item Bareword "%s" not allowed while "strict subs" in use
-
-(F) You probably mistyped a constant color name such as:
-
- $Foobar = FOOBAR . "This line should be blue\n";
-
-or:
-
- @Foobar = FOOBAR, "This line should be blue\n";
-
-This will only show up under use strict (another good reason to run under
-use strict).
-
-=back
-
-=head1 RESTRICTIONS
-
-It would be nice if one could leave off the commas around the constants
-entirely and just say:
-
- print BOLD BLUE ON_WHITE "Text\n" RESET;
-
-but the syntax of Perl doesn't allow this. You need a comma after the
-string. (Of course, you may consider it a bug that commas between all the
-constants aren't required, in which case you may feel free to insert
-commas unless you're using $Term::ANSIColor::AUTORESET.)
-
-For easier debuging, you may prefer to always use the commas when not
-setting $Term::ANSIColor::AUTORESET so that you'll get a fatal compile
-error rather than a warning.
-
-=head1 NOTES
-
-Jean Delvare provided the following table of different common terminal
-emulators and their support for the various attributes:
-
- clear bold dark under blink reverse conceal
- ------------------------------------------------------------------------
- xterm yes yes no yes bold yes yes
- linux yes yes yes bold yes yes no
- rxvt yes yes no yes bold/black yes no
- dtterm yes yes yes yes reverse yes yes
- teraterm yes reverse no yes rev/red yes no
- aixterm kinda normal no yes no yes yes
-
-Where the entry is other than yes or no, that emulator interpret the given
-attribute as something else instead. Note that on an aixterm, clear
-doesn't reset colors; you have to explicitly set the colors back to what
-you want. More entries in this table are welcome.
-
-=head1 AUTHORS
-
-Original idea (using constants) by Zenin (zenin@best.com), reimplemented
-using subs by Russ Allbery (rra@stanford.edu), and then combined with the
-original idea by Russ with input from Zenin.
-
-=cut
diff --git a/contrib/perl5/lib/Term/Cap.pm b/contrib/perl5/lib/Term/Cap.pm
deleted file mode 100644
index 0954000..0000000
--- a/contrib/perl5/lib/Term/Cap.pm
+++ /dev/null
@@ -1,410 +0,0 @@
-package Term::Cap;
-use Carp;
-
-# Last updated: Thu Dec 14 20:02:42 CST 1995 by sanders@bsdi.com
-
-# TODO:
-# support Berkeley DB termcaps
-# should probably be a .xs module
-# force $FH into callers package?
-# keep $FH in object at Tgetent time?
-
-=head1 NAME
-
-Term::Cap - Perl termcap interface
-
-=head1 SYNOPSIS
-
- require Term::Cap;
- $terminal = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed };
- $terminal->Trequire(qw/ce ku kd/);
- $terminal->Tgoto('cm', $col, $row, $FH);
- $terminal->Tputs('dl', $count, $FH);
- $terminal->Tpad($string, $count, $FH);
-
-=head1 DESCRIPTION
-
-These are low-level functions to extract and use capabilities from
-a terminal capability (termcap) database.
-
-The B<Tgetent> function extracts the entry of the specified terminal
-type I<TERM> (defaults to the environment variable I<TERM>) from the
-database.
-
-It will look in the environment for a I<TERMCAP> variable. If
-found, and the value does not begin with a slash, and the terminal
-type name is the same as the environment string I<TERM>, the
-I<TERMCAP> string is used instead of reading a termcap file. If
-it does begin with a slash, the string is used as a path name of
-the termcap file to search. If I<TERMCAP> does not begin with a
-slash and name is different from I<TERM>, B<Tgetent> searches the
-files F<$HOME/.termcap>, F</etc/termcap>, and F</usr/share/misc/termcap>,
-in that order, unless the environment variable I<TERMPATH> exists,
-in which case it specifies a list of file pathnames (separated by
-spaces or colons) to be searched B<instead>. Whenever multiple
-files are searched and a tc field occurs in the requested entry,
-the entry it names must be found in the same file or one of the
-succeeding files. If there is a C<:tc=...:> in the I<TERMCAP>
-environment variable string it will continue the search in the
-files as above.
-
-I<OSPEED> is the terminal output bit rate (often mistakenly called
-the baud rate). I<OSPEED> can be specified as either a POSIX
-termios/SYSV termio speeds (where 9600 equals 9600) or an old
-BSD-style speeds (where 13 equals 9600).
-
-B<Tgetent> returns a blessed object reference which the user can
-then use to send the control strings to the terminal using B<Tputs>
-and B<Tgoto>. It calls C<croak> on failure.
-
-B<Tgoto> decodes a cursor addressing string with the given parameters.
-
-The output strings for B<Tputs> are cached for counts of 1 for performance.
-B<Tgoto> and B<Tpad> do not cache. C<$self-E<gt>{_xx}> is the raw termcap
-data and C<$self-E<gt>{xx}> is the cached version.
-
- print $terminal->Tpad($self->{_xx}, 1);
-
-B<Tgoto>, B<Tputs>, and B<Tpad> return the string and will also
-output the string to $FH if specified.
-
-The extracted termcap entry is available in the object
-as C<$self-E<gt>{TERMCAP}>.
-
-=head1 EXAMPLES
-
- # Get terminal output speed
- require POSIX;
- my $termios = new POSIX::Termios;
- $termios->getattr;
- my $ospeed = $termios->getospeed;
-
- # Old-style ioctl code to get ospeed:
- # require 'ioctl.pl';
- # ioctl(TTY,$TIOCGETP,$sgtty);
- # ($ispeed,$ospeed) = unpack('cc',$sgtty);
-
- # allocate and initialize a terminal structure
- $terminal = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed };
-
- # require certain capabilities to be available
- $terminal->Trequire(qw/ce ku kd/);
-
- # Output Routines, if $FH is undefined these just return the string
-
- # Tgoto does the % expansion stuff with the given args
- $terminal->Tgoto('cm', $col, $row, $FH);
-
- # Tputs doesn't do any % expansion.
- $terminal->Tputs('dl', $count = 1, $FH);
-
-=cut
-
-# Returns a list of termcap files to check.
-sub termcap_path { ## private
- my @termcap_path;
- # $TERMCAP, if it's a filespec
- push(@termcap_path, $ENV{TERMCAP})
- if ((exists $ENV{TERMCAP}) &&
- (($^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'dos')
- ? $ENV{TERMCAP} =~ /^[a-z]:[\\\/]/is
- : $ENV{TERMCAP} =~ /^\//s));
- if ((exists $ENV{TERMPATH}) && ($ENV{TERMPATH})) {
- # Add the users $TERMPATH
- push(@termcap_path, split(/(:|\s+)/, $ENV{TERMPATH}))
- }
- else {
- # Defaults
- push(@termcap_path,
- $ENV{'HOME'} . '/.termcap',
- '/etc/termcap',
- '/usr/share/misc/termcap',
- );
- }
- # return the list of those termcaps that exist
- grep(-f, @termcap_path);
-}
-
-sub Tgetent { ## public -- static method
- my $class = shift;
- my $self = bless shift, $class;
- my($term,$cap,$search,$field,$max,$tmp_term,$TERMCAP);
- local($termpat,$state,$first,$entry); # used inside eval
- local $_;
-
- # Compute PADDING factor from OSPEED (to be used by Tpad)
- if (! $self->{OSPEED}) {
- carp "OSPEED was not set, defaulting to 9600";
- $self->{OSPEED} = 9600;
- }
- if ($self->{OSPEED} < 16) {
- # delays for old style speeds
- my @pad = (0,200,133.3,90.9,74.3,66.7,50,33.3,16.7,8.3,5.5,4.1,2,1,.5,.2);
- $self->{PADDING} = $pad[$self->{OSPEED}];
- }
- else {
- $self->{PADDING} = 10000 / $self->{OSPEED};
- }
-
- $self->{TERM} = ($self->{TERM} || $ENV{TERM} || croak "TERM not set");
- $term = $self->{TERM}; # $term is the term type we are looking for
-
- # $tmp_term is always the next term (possibly :tc=...:) we are looking for
- $tmp_term = $self->{TERM};
- # protect any pattern metacharacters in $tmp_term
- $termpat = $tmp_term; $termpat =~ s/(\W)/\\$1/g;
-
- my $foo = (exists $ENV{TERMCAP} ? $ENV{TERMCAP} : '');
-
- # $entry is the extracted termcap entry
- if (($foo !~ m:^/:s) && ($foo =~ m/(^|\|)${termpat}[:|]/s)) {
- $entry = $foo;
- }
-
- my @termcap_path = termcap_path;
- croak "Can't find a valid termcap file" unless @termcap_path || $entry;
-
- $state = 1; # 0 == finished
- # 1 == next file
- # 2 == search again
-
- $first = 0; # first entry (keeps term name)
-
- $max = 32; # max :tc=...:'s
-
- if ($entry) {
- # ok, we're starting with $TERMCAP
- $first++; # we're the first entry
- # do we need to continue?
- if ($entry =~ s/:tc=([^:]+):/:/) {
- $tmp_term = $1;
- # protect any pattern metacharacters in $tmp_term
- $termpat = $tmp_term; $termpat =~ s/(\W)/\\$1/g;
- }
- else {
- $state = 0; # we're already finished
- }
- }
-
- # This is eval'ed inside the while loop for each file
- $search = q{
- while (<TERMCAP>) {
- next if /^\\t/ || /^#/;
- if ($_ =~ m/(^|\\|)${termpat}[:|]/o) {
- chomp;
- s/^[^:]*:// if $first++;
- $state = 0;
- while ($_ =~ s/\\\\$//) {
- defined(my $x = <TERMCAP>) or last;
- $_ .= $x; chomp;
- }
- last;
- }
- }
- defined $entry or $entry = '';
- $entry .= $_;
- };
-
- while ($state != 0) {
- if ($state == 1) {
- # get the next TERMCAP
- $TERMCAP = shift @termcap_path
- || croak "failed termcap lookup on $tmp_term";
- }
- else {
- # do the same file again
- # prevent endless recursion
- $max-- || croak "failed termcap loop at $tmp_term";
- $state = 1; # ok, maybe do a new file next time
- }
-
- open(TERMCAP,"< $TERMCAP\0") || croak "open $TERMCAP: $!";
- eval $search;
- die $@ if $@;
- close TERMCAP;
-
- # If :tc=...: found then search this file again
- $entry =~ s/:tc=([^:]+):/:/ && ($tmp_term = $1, $state = 2);
- # protect any pattern metacharacters in $tmp_term
- $termpat = $tmp_term; $termpat =~ s/(\W)/\\$1/g;
- }
-
- croak "Can't find $term" if $entry eq '';
- $entry =~ s/:+\s*:+/:/g; # cleanup $entry
- $entry =~ s/:+/:/g; # cleanup $entry
- $self->{TERMCAP} = $entry; # save it
- # print STDERR "DEBUG: $entry = ", $entry, "\n";
-
- # Precompile $entry into the object
- $entry =~ s/^[^:]*://;
- foreach $field (split(/:[\s:\\]*/,$entry)) {
- if ($field =~ /^(\w\w)$/) {
- $self->{'_' . $field} = 1 unless defined $self->{'_' . $1};
- # print STDERR "DEBUG: flag $1\n";
- }
- elsif ($field =~ /^(\w\w)\@/) {
- $self->{'_' . $1} = "";
- # print STDERR "DEBUG: unset $1\n";
- }
- elsif ($field =~ /^(\w\w)#(.*)/) {
- $self->{'_' . $1} = $2 unless defined $self->{'_' . $1};
- # print STDERR "DEBUG: numeric $1 = $2\n";
- }
- elsif ($field =~ /^(\w\w)=(.*)/) {
- # print STDERR "DEBUG: string $1 = $2\n";
- next if defined $self->{'_' . ($cap = $1)};
- $_ = $2;
- s/\\E/\033/g;
- s/\\(\d\d\d)/pack('c',oct($1) & 0177)/eg;
- s/\\n/\n/g;
- s/\\r/\r/g;
- s/\\t/\t/g;
- s/\\b/\b/g;
- s/\\f/\f/g;
- s/\\\^/\377/g;
- s/\^\?/\177/g;
- s/\^(.)/pack('c',ord($1) & 31)/eg;
- s/\\(.)/$1/g;
- s/\377/^/g;
- $self->{'_' . $cap} = $_;
- }
- # else { carp "junk in $term ignored: $field"; }
- }
- $self->{'_pc'} = "\0" unless defined $self->{'_pc'};
- $self->{'_bc'} = "\b" unless defined $self->{'_bc'};
- $self;
-}
-
-# $terminal->Tpad($string, $cnt, $FH);
-sub Tpad { ## public
- my $self = shift;
- my($string, $cnt, $FH) = @_;
- my($decr, $ms);
-
- if ($string =~ /(^[\d.]+)(\*?)(.*)$/) {
- $ms = $1;
- $ms *= $cnt if $2;
- $string = $3;
- $decr = $self->{PADDING};
- if ($decr > .1) {
- $ms += $decr / 2;
- $string .= $self->{'_pc'} x ($ms / $decr);
- }
- }
- print $FH $string if $FH;
- $string;
-}
-
-# $terminal->Tputs($cap, $cnt, $FH);
-sub Tputs { ## public
- my $self = shift;
- my($cap, $cnt, $FH) = @_;
- my $string;
-
- if ($cnt > 1) {
- $string = Tpad($self, $self->{'_' . $cap}, $cnt);
- } else {
- # cache result because Tpad can be slow
- $string = defined $self->{$cap} ? $self->{$cap} :
- ($self->{$cap} = Tpad($self, $self->{'_' . $cap}, 1));
- }
- print $FH $string if $FH;
- $string;
-}
-
-# %% output `%'
-# %d output value as in printf %d
-# %2 output value as in printf %2d
-# %3 output value as in printf %3d
-# %. output value as in printf %c
-# %+x add x to value, then do %.
-#
-# %>xy if value > x then add y, no output
-# %r reverse order of two parameters, no output
-# %i increment by one, no output
-# %B BCD (16*(value/10)) + (value%10), no output
-#
-# %n exclusive-or all parameters with 0140 (Datamedia 2500)
-# %D Reverse coding (value - 2*(value%16)), no output (Delta Data)
-#
-# $terminal->Tgoto($cap, $col, $row, $FH);
-sub Tgoto { ## public
- my $self = shift;
- my($cap, $code, $tmp, $FH) = @_;
- my $string = $self->{'_' . $cap};
- my $result = '';
- my $after = '';
- my $online = 0;
- my @tmp = ($tmp,$code);
- my $cnt = $code;
-
- while ($string =~ /^([^%]*)%(.)(.*)/) {
- $result .= $1;
- $code = $2;
- $string = $3;
- if ($code eq 'd') {
- $result .= sprintf("%d",shift(@tmp));
- }
- elsif ($code eq '.') {
- $tmp = shift(@tmp);
- if ($tmp == 0 || $tmp == 4 || $tmp == 10) {
- if ($online) {
- ++$tmp, $after .= $self->{'_up'} if $self->{'_up'};
- }
- else {
- ++$tmp, $after .= $self->{'_bc'};
- }
- }
- $result .= sprintf("%c",$tmp);
- $online = !$online;
- }
- elsif ($code eq '+') {
- $result .= sprintf("%c",shift(@tmp)+ord($string));
- $string = substr($string,1,99);
- $online = !$online;
- }
- elsif ($code eq 'r') {
- ($code,$tmp) = @tmp;
- @tmp = ($tmp,$code);
- $online = !$online;
- }
- elsif ($code eq '>') {
- ($code,$tmp,$string) = unpack("CCa99",$string);
- if ($tmp[$[] > $code) {
- $tmp[$[] += $tmp;
- }
- }
- elsif ($code eq '2') {
- $result .= sprintf("%02d",shift(@tmp));
- $online = !$online;
- }
- elsif ($code eq '3') {
- $result .= sprintf("%03d",shift(@tmp));
- $online = !$online;
- }
- elsif ($code eq 'i') {
- ($code,$tmp) = @tmp;
- @tmp = ($code+1,$tmp+1);
- }
- else {
- return "OOPS";
- }
- }
- $string = Tpad($self, $result . $string . $after, $cnt);
- print $FH $string if $FH;
- $string;
-}
-
-# $terminal->Trequire(qw/ce ku kd/);
-sub Trequire { ## public
- my $self = shift;
- my($cap,@undefined);
- foreach $cap (@_) {
- push(@undefined, $cap)
- unless defined $self->{'_' . $cap} && $self->{'_' . $cap};
- }
- croak "Terminal does not support: (@undefined)" if @undefined;
-}
-
-1;
-
diff --git a/contrib/perl5/lib/Term/Complete.pm b/contrib/perl5/lib/Term/Complete.pm
deleted file mode 100644
index 445dfca..0000000
--- a/contrib/perl5/lib/Term/Complete.pm
+++ /dev/null
@@ -1,154 +0,0 @@
-package Term::Complete;
-require 5.000;
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(Complete);
-
-# @(#)complete.pl,v1.2 (me@anywhere.EBay.Sun.COM) 09/23/91
-
-=head1 NAME
-
-Term::Complete - Perl word completion module
-
-=head1 SYNOPSIS
-
- $input = Complete('prompt_string', \@completion_list);
- $input = Complete('prompt_string', @completion_list);
-
-=head1 DESCRIPTION
-
-This routine provides word completion on the list of words in
-the array (or array ref).
-
-The tty driver is put into raw mode using the system command
-C<stty raw -echo> and restored using C<stty -raw echo>.
-
-The following command characters are defined:
-
-=over 4
-
-=item E<lt>tabE<gt>
-
-Attempts word completion.
-Cannot be changed.
-
-=item ^D
-
-Prints completion list.
-Defined by I<$Term::Complete::complete>.
-
-=item ^U
-
-Erases the current input.
-Defined by I<$Term::Complete::kill>.
-
-=item E<lt>delE<gt>, E<lt>bsE<gt>
-
-Erases one character.
-Defined by I<$Term::Complete::erase1> and I<$Term::Complete::erase2>.
-
-=back
-
-=head1 DIAGNOSTICS
-
-Bell sounds when word completion fails.
-
-=head1 BUGS
-
-The completion character E<lt>tabE<gt> cannot be changed.
-
-=head1 AUTHOR
-
-Wayne Thompson
-
-=cut
-
-CONFIG: {
- $complete = "\004";
- $kill = "\025";
- $erase1 = "\177";
- $erase2 = "\010";
-}
-
-sub Complete {
- my($prompt, @cmp_list, $cmp, $test, $l, @match);
- my ($return, $r) = ("", 0);
-
- $return = "";
- $r = 0;
-
- $prompt = shift;
- if (ref $_[0] || $_[0] =~ /^\*/) {
- @cmp_lst = sort @{$_[0]};
- }
- else {
- @cmp_lst = sort(@_);
- }
-
- system('stty raw -echo');
- LOOP: {
- print($prompt, $return);
- while (($_ = getc(STDIN)) ne "\r") {
- CASE: {
- # (TAB) attempt completion
- $_ eq "\t" && do {
- @match = grep(/^$return/, @cmp_lst);
- unless ($#match < 0) {
- $l = length($test = shift(@match));
- foreach $cmp (@match) {
- until (substr($cmp, 0, $l) eq substr($test, 0, $l)) {
- $l--;
- }
- }
- print("\a");
- print($test = substr($test, $r, $l - $r));
- $r = length($return .= $test);
- }
- last CASE;
- };
-
- # (^D) completion list
- $_ eq $complete && do {
- print(join("\r\n", '', grep(/^$return/, @cmp_lst)), "\r\n");
- redo LOOP;
- };
-
- # (^U) kill
- $_ eq $kill && do {
- if ($r) {
- $r = 0;
- $return = "";
- print("\r\n");
- redo LOOP;
- }
- last CASE;
- };
-
- # (DEL) || (BS) erase
- ($_ eq $erase1 || $_ eq $erase2) && do {
- if($r) {
- print("\b \b");
- chop($return);
- $r--;
- }
- last CASE;
- };
-
- # printable char
- ord >= 32 && do {
- $return .= $_;
- $r++;
- print;
- last CASE;
- };
- }
- }
- }
- system('stty -raw echo');
- print("\n");
- $return;
-}
-
-1;
-
diff --git a/contrib/perl5/lib/Term/ReadLine.pm b/contrib/perl5/lib/Term/ReadLine.pm
deleted file mode 100644
index fc78d7b..0000000
--- a/contrib/perl5/lib/Term/ReadLine.pm
+++ /dev/null
@@ -1,369 +0,0 @@
-=head1 NAME
-
-Term::ReadLine - Perl interface to various C<readline> packages. If
-no real package is found, substitutes stubs instead of basic functions.
-
-=head1 SYNOPSIS
-
- use Term::ReadLine;
- $term = new Term::ReadLine 'Simple Perl calc';
- $prompt = "Enter your arithmetic expression: ";
- $OUT = $term->OUT || STDOUT;
- while ( defined ($_ = $term->readline($prompt)) ) {
- $res = eval($_), "\n";
- warn $@ if $@;
- print $OUT $res, "\n" unless $@;
- $term->addhistory($_) if /\S/;
- }
-
-=head1 DESCRIPTION
-
-This package is just a front end to some other packages. At the moment
-this description is written, the only such package is Term-ReadLine,
-available on CPAN near you. The real target of this stub package is to
-set up a common interface to whatever Readline emerges with time.
-
-=head1 Minimal set of supported functions
-
-All the supported functions should be called as methods, i.e., either as
-
- $term = new Term::ReadLine 'name';
-
-or as
-
- $term->addhistory('row');
-
-where $term is a return value of Term::ReadLine-E<gt>Init.
-
-=over 12
-
-=item C<ReadLine>
-
-returns the actual package that executes the commands. Among possible
-values are C<Term::ReadLine::Gnu>, C<Term::ReadLine::Perl>,
-C<Term::ReadLine::Stub Exporter>.
-
-=item C<new>
-
-returns the handle for subsequent calls to following
-functions. Argument is the name of the application. Optionally can be
-followed by two arguments for C<IN> and C<OUT> filehandles. These
-arguments should be globs.
-
-=item C<readline>
-
-gets an input line, I<possibly> with actual C<readline>
-support. Trailing newline is removed. Returns C<undef> on C<EOF>.
-
-=item C<addhistory>
-
-adds the line to the history of input, from where it can be used if
-the actual C<readline> is present.
-
-=item C<IN>, $C<OUT>
-
-return the filehandles for input and output or C<undef> if C<readline>
-input and output cannot be used for Perl.
-
-=item C<MinLine>
-
-If argument is specified, it is an advice on minimal size of line to
-be included into history. C<undef> means do not include anything into
-history. Returns the old value.
-
-=item C<findConsole>
-
-returns an array with two strings that give most appropriate names for
-files for input and output using conventions C<"E<lt>$in">, C<"E<gt>out">.
-
-=item Attribs
-
-returns a reference to a hash which describes internal configuration
-of the package. Names of keys in this hash conform to standard
-conventions with the leading C<rl_> stripped.
-
-=item C<Features>
-
-Returns a reference to a hash with keys being features present in
-current implementation. Several optional features are used in the
-minimal interface: C<appname> should be present if the first argument
-to C<new> is recognized, and C<minline> should be present if
-C<MinLine> method is not dummy. C<autohistory> should be present if
-lines are put into history automatically (maybe subject to
-C<MinLine>), and C<addhistory> if C<addhistory> method is not dummy.
-
-If C<Features> method reports a feature C<attribs> as present, the
-method C<Attribs> is not dummy.
-
-=back
-
-=head1 Additional supported functions
-
-Actually C<Term::ReadLine> can use some other package, that will
-support reacher set of commands.
-
-All these commands are callable via method interface and have names
-which conform to standard conventions with the leading C<rl_> stripped.
-
-The stub package included with the perl distribution allows some
-additional methods:
-
-=over 12
-
-=item C<tkRunning>
-
-makes Tk event loop run when waiting for user input (i.e., during
-C<readline> method).
-
-=item C<ornaments>
-
-makes the command line stand out by using termcap data. The argument
-to C<ornaments> should be 0, 1, or a string of a form
-C<"aa,bb,cc,dd">. Four components of this string should be names of
-I<terminal capacities>, first two will be issued to make the prompt
-standout, last two to make the input line standout.
-
-=item C<newTTY>
-
-takes two arguments which are input filehandle and output filehandle.
-Switches to use these filehandles.
-
-=back
-
-One can check whether the currently loaded ReadLine package supports
-these methods by checking for corresponding C<Features>.
-
-=head1 EXPORTS
-
-None
-
-=head1 ENVIRONMENT
-
-The environment variable C<PERL_RL> governs which ReadLine clone is
-loaded. If the value is false, a dummy interface is used. If the value
-is true, it should be tail of the name of the package to use, such as
-C<Perl> or C<Gnu>.
-
-As a special case, if the value of this variable is space-separated,
-the tail might be used to disable the ornaments by setting the tail to
-be C<o=0> or C<ornaments=0>. The head should be as described above, say
-
-If the variable is not set, or if the head of space-separated list is
-empty, the best available package is loaded.
-
- export "PERL_RL=Perl o=0" # Use Perl ReadLine without ornaments
- export "PERL_RL= o=0" # Use best available ReadLine without ornaments
-
-(Note that processing of C<PERL_RL> for ornaments is in the discretion of the
-particular used C<Term::ReadLine::*> package).
-
-=cut
-
-package Term::ReadLine::Stub;
-@ISA = qw'Term::ReadLine::Tk Term::ReadLine::TermCap';
-
-$DB::emacs = $DB::emacs; # To peacify -w
-*rl_term_set = \@Term::ReadLine::TermCap::rl_term_set;
-
-sub ReadLine {'Term::ReadLine::Stub'}
-sub readline {
- my $self = shift;
- my ($in,$out,$str) = @$self;
- my $prompt = shift;
- print $out $rl_term_set[0], $prompt, $rl_term_set[1], $rl_term_set[2];
- $self->register_Tk
- if not $Term::ReadLine::registered and $Term::ReadLine::toloop
- and defined &Tk::DoOneEvent;
- #$str = scalar <$in>;
- $str = $self->get_line;
- $str =~ s/^\s*\Q$prompt\E// if ($^O eq 'MacOS');
- print $out $rl_term_set[3];
- # bug in 5.000: chomping empty string creats length -1:
- chomp $str if defined $str;
- $str;
-}
-sub addhistory {}
-
-sub findConsole {
- my $console;
-
- if ($^O eq 'MacOS') {
- $console = "Dev:Console";
- } elsif (-e "/dev/tty") {
- $console = "/dev/tty";
- } elsif (-e "con" or $^O eq 'MSWin32') {
- $console = "con";
- } else {
- $console = "sys\$command";
- }
-
- if (($^O eq 'amigaos') || ($^O eq 'beos') || ($^O eq 'epoc')) {
- $console = undef;
- }
- elsif ($^O eq 'os2') {
- if ($DB::emacs) {
- $console = undef;
- } else {
- $console = "/dev/con";
- }
- }
-
- $consoleOUT = $console;
- $console = "&STDIN" unless defined $console;
- if (!defined $consoleOUT) {
- $consoleOUT = defined fileno(STDERR) ? "&STDERR" : "&STDOUT";
- }
- ($console,$consoleOUT);
-}
-
-sub new {
- die "method new called with wrong number of arguments"
- unless @_==2 or @_==4;
- #local (*FIN, *FOUT);
- my ($FIN, $FOUT, $ret);
- if (@_==2) {
- ($console, $consoleOUT) = findConsole;
-
- open(FIN, "<$console");
- open(FOUT,">$consoleOUT");
- #OUT->autoflush(1); # Conflicts with debugger?
- $sel = select(FOUT);
- $| = 1; # for DB::OUT
- select($sel);
- $ret = bless [\*FIN, \*FOUT];
- } else { # Filehandles supplied
- $FIN = $_[2]; $FOUT = $_[3];
- #OUT->autoflush(1); # Conflicts with debugger?
- $sel = select($FOUT);
- $| = 1; # for DB::OUT
- select($sel);
- $ret = bless [$FIN, $FOUT];
- }
- if ($ret->Features->{ornaments}
- and not ($ENV{PERL_RL} and $ENV{PERL_RL} =~ /\bo\w*=0/)) {
- local $Term::ReadLine::termcap_nowarn = 1;
- $ret->ornaments(1);
- }
- return $ret;
-}
-
-sub newTTY {
- my ($self, $in, $out) = @_;
- $self->[0] = $in;
- $self->[1] = $out;
- my $sel = select($out);
- $| = 1; # for DB::OUT
- select($sel);
-}
-
-sub IN { shift->[0] }
-sub OUT { shift->[1] }
-sub MinLine { undef }
-sub Attribs { {} }
-
-my %features = (tkRunning => 1, ornaments => 1, 'newTTY' => 1);
-sub Features { \%features }
-
-package Term::ReadLine; # So late to allow the above code be defined?
-
-my ($which) = exists $ENV{PERL_RL} ? split /\s+/, $ENV{PERL_RL} : undef;
-if ($which) {
- if ($which =~ /\bgnu\b/i){
- eval "use Term::ReadLine::Gnu;";
- } elsif ($which =~ /\bperl\b/i) {
- eval "use Term::ReadLine::Perl;";
- } else {
- eval "use Term::ReadLine::$which;";
- }
-} elsif (defined $which and $which ne '') { # Defined but false
- # Do nothing fancy
-} else {
- eval "use Term::ReadLine::Gnu; 1" or eval "use Term::ReadLine::Perl; 1";
-}
-
-#require FileHandle;
-
-# To make possible switch off RL in debugger: (Not needed, work done
-# in debugger).
-
-if (defined &Term::ReadLine::Gnu::readline) {
- @ISA = qw(Term::ReadLine::Gnu Term::ReadLine::Stub);
-} elsif (defined &Term::ReadLine::Perl::readline) {
- @ISA = qw(Term::ReadLine::Perl Term::ReadLine::Stub);
-} else {
- @ISA = qw(Term::ReadLine::Stub);
-}
-
-package Term::ReadLine::TermCap;
-
-# Prompt-start, prompt-end, command-line-start, command-line-end
-# -- zero-width beautifies to emit around prompt and the command line.
-@rl_term_set = ("","","","");
-# string encoded:
-$rl_term_set = ',,,';
-
-sub LoadTermCap {
- return if defined $terminal;
-
- require Term::Cap;
- $terminal = Tgetent Term::Cap ({OSPEED => 9600}); # Avoid warning.
-}
-
-sub ornaments {
- shift;
- return $rl_term_set unless @_;
- $rl_term_set = shift;
- $rl_term_set ||= ',,,';
- $rl_term_set = 'us,ue,md,me' if $rl_term_set eq '1';
- my @ts = split /,/, $rl_term_set, 4;
- eval { LoadTermCap };
- unless (defined $terminal) {
- warn("Cannot find termcap: $@\n") unless $Term::ReadLine::termcap_nowarn;
- $rl_term_set = ',,,';
- return;
- }
- @rl_term_set = map {$_ ? $terminal->Tputs($_,1) || '' : ''} @ts;
- return $rl_term_set;
-}
-
-
-package Term::ReadLine::Tk;
-
-$count_handle = $count_DoOne = $count_loop = 0;
-
-sub handle {$giveup = 1; $count_handle++}
-
-sub Tk_loop {
- # Tk->tkwait('variable',\$giveup); # needs Widget
- $count_DoOne++, Tk::DoOneEvent(0) until $giveup;
- $count_loop++;
- $giveup = 0;
-}
-
-sub register_Tk {
- my $self = shift;
- $Term::ReadLine::registered++
- or Tk->fileevent($self->IN,'readable',\&handle);
-}
-
-sub tkRunning {
- $Term::ReadLine::toloop = $_[1] if @_ > 1;
- $Term::ReadLine::toloop;
-}
-
-sub get_c {
- my $self = shift;
- $self->Tk_loop if $Term::ReadLine::toloop && defined &Tk::DoOneEvent;
- return getc $self->IN;
-}
-
-sub get_line {
- my $self = shift;
- $self->Tk_loop if $Term::ReadLine::toloop && defined &Tk::DoOneEvent;
- my $in = $self->IN;
- local ($/) = "\n";
- return scalar <$in>;
-}
-
-1;
-
diff --git a/contrib/perl5/lib/Test.pm b/contrib/perl5/lib/Test.pm
deleted file mode 100644
index 4a38d54..0000000
--- a/contrib/perl5/lib/Test.pm
+++ /dev/null
@@ -1,262 +0,0 @@
-use strict;
-package Test;
-use Test::Harness 1.1601 ();
-use Carp;
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $ntest, $TestLevel); #public-ish
-our($TESTOUT, $ONFAIL, %todo, %history, $planned, @FAILDETAIL); #private-ish
-$VERSION = '1.15';
-require Exporter;
-@ISA=('Exporter');
-@EXPORT=qw(&plan &ok &skip);
-@EXPORT_OK=qw($ntest $TESTOUT);
-
-$TestLevel = 0; # how many extra stack frames to skip
-$|=1;
-#$^W=1; ?
-$ntest=1;
-$TESTOUT = *STDOUT{IO};
-
-# Use of this variable is strongly discouraged. It is set mainly to
-# help test coverage analyzers know which test is running.
-$ENV{REGRESSION_TEST} = $0;
-
-sub plan {
- croak "Test::plan(%args): odd number of arguments" if @_ & 1;
- croak "Test::plan(): should not be called more than once" if $planned;
- my $max=0;
- for (my $x=0; $x < @_; $x+=2) {
- my ($k,$v) = @_[$x,$x+1];
- if ($k =~ /^test(s)?$/) { $max = $v; }
- elsif ($k eq 'todo' or
- $k eq 'failok') { for (@$v) { $todo{$_}=1; }; }
- elsif ($k eq 'onfail') {
- ref $v eq 'CODE' or croak "Test::plan(onfail => $v): must be CODE";
- $ONFAIL = $v;
- }
- else { carp "Test::plan(): skipping unrecognized directive '$k'" }
- }
- my @todo = sort { $a <=> $b } keys %todo;
- if (@todo) {
- print $TESTOUT "1..$max todo ".join(' ', @todo).";\n";
- } else {
- print $TESTOUT "1..$max\n";
- }
- ++$planned;
-}
-
-sub to_value {
- my ($v) = @_;
- (ref $v or '') eq 'CODE' ? $v->() : $v;
-}
-
-sub ok ($;$$) {
- croak "ok: plan before you test!" if !$planned;
- my ($pkg,$file,$line) = caller($TestLevel);
- my $repetition = ++$history{"$file:$line"};
- my $context = ("$file at line $line".
- ($repetition > 1 ? " fail \#$repetition" : ''));
- my $ok=0;
- my $result = to_value(shift);
- my ($expected,$diag);
- if (@_ == 0) {
- $ok = $result;
- } else {
- $expected = to_value(shift);
- my ($regex,$ignore);
- if (!defined $expected) {
- $ok = !defined $result;
- } elsif (!defined $result) {
- $ok = 0;
- } elsif ((ref($expected)||'') eq 'Regexp') {
- $ok = $result =~ /$expected/;
- } elsif (($regex) = ($expected =~ m,^ / (.+) / $,sx) or
- ($ignore, $regex) = ($expected =~ m,^ m([^\w\s]) (.+) \1 $,sx)) {
- $ok = $result =~ /$regex/;
- } else {
- $ok = $result eq $expected;
- }
- }
- my $todo = $todo{$ntest};
- if ($todo and $ok) {
- $context .= ' TODO?!' if $todo;
- print $TESTOUT "ok $ntest # ($context)\n";
- } else {
- # Issuing two separate print()s causes severe trouble with
- # Test::Harness on VMS. The "not "'s for failed tests occur
- # on a separate line and would not get counted as failures.
- #print $TESTOUT "not " if !$ok;
- #print $TESTOUT "ok $ntest\n";
- # Replace with a single print() as a workaround:
- my $okline = '';
- $okline = "not " if !$ok;
- $okline .= "ok $ntest\n";
- print $TESTOUT $okline;
-
- if (!$ok) {
- my $detail = { 'repetition' => $repetition, 'package' => $pkg,
- 'result' => $result, 'todo' => $todo };
- $$detail{expected} = $expected if defined $expected;
- $diag = $$detail{diagnostic} = to_value(shift) if @_;
- $context .= ' *TODO*' if $todo;
- if (!defined $expected) {
- if (!$diag) {
- print $TESTOUT "# Failed test $ntest in $context\n";
- } else {
- print $TESTOUT "# Failed test $ntest in $context: $diag\n";
- }
- } else {
- my $prefix = "Test $ntest";
- print $TESTOUT "# $prefix got: ".
- (defined $result? "'$result'":'<UNDEF>')." ($context)\n";
- $prefix = ' ' x (length($prefix) - 5);
- if ((ref($expected)||'') eq 'Regexp') {
- $expected = 'qr/'.$expected.'/'
- } else {
- $expected = "'$expected'";
- }
- if (!$diag) {
- print $TESTOUT "# $prefix Expected: $expected\n";
- } else {
- print $TESTOUT "# $prefix Expected: $expected ($diag)\n";
- }
- }
- push @FAILDETAIL, $detail;
- }
- }
- ++ $ntest;
- $ok;
-}
-
-sub skip ($$;$$) {
- my $whyskip = to_value(shift);
- if ($whyskip) {
- $whyskip = 'skip' if $whyskip =~ m/^\d+$/;
- print $TESTOUT "ok $ntest # $whyskip\n";
- ++ $ntest;
- 1;
- } else {
- local($TestLevel) = $TestLevel+1; #ignore this stack frame
- &ok;
- }
-}
-
-END {
- $ONFAIL->(\@FAILDETAIL) if @FAILDETAIL && $ONFAIL;
-}
-
-1;
-__END__
-
-=head1 NAME
-
- Test - provides a simple framework for writing test scripts
-
-=head1 SYNOPSIS
-
- use strict;
- use Test;
-
- # use a BEGIN block so we print our plan before MyModule is loaded
- BEGIN { plan tests => 14, todo => [3,4] }
-
- # load your module...
- use MyModule;
-
- ok(0); # failure
- ok(1); # success
-
- ok(0); # ok, expected failure (see todo list, above)
- ok(1); # surprise success!
-
- ok(0,1); # failure: '0' ne '1'
- ok('broke','fixed'); # failure: 'broke' ne 'fixed'
- ok('fixed','fixed'); # success: 'fixed' eq 'fixed'
- ok('fixed',qr/x/); # success: 'fixed' =~ qr/x/
-
- ok(sub { 1+1 }, 2); # success: '2' eq '2'
- ok(sub { 1+1 }, 3); # failure: '2' ne '3'
- ok(0, int(rand(2)); # (just kidding :-)
-
- my @list = (0,0);
- ok @list, 3, "\@list=".join(',',@list); #extra diagnostics
- ok 'segmentation fault', '/(?i)success/'; #regex match
-
- skip($feature_is_missing, ...); #do platform specific test
-
-=head1 DESCRIPTION
-
-L<Test::Harness|Test::Harness> expects to see particular output when it
-executes tests. This module aims to make writing proper test scripts just
-a little bit easier (and less error prone :-).
-
-=head1 TEST TYPES
-
-=over 4
-
-=item * NORMAL TESTS
-
-These tests are expected to succeed. If they don't something's
-screwed up!
-
-=item * SKIPPED TESTS
-
-Skip is for tests that might or might not be possible to run depending
-on the availability of platform specific features. The first argument
-should evaluate to true (think "yes, please skip") if the required
-feature is not available. After the first argument, skip works
-exactly the same way as do normal tests.
-
-=item * TODO TESTS
-
-TODO tests are designed for maintaining an B<executable TODO list>.
-These tests are expected NOT to succeed. If a TODO test does succeed,
-the feature in question should not be on the TODO list, now should it?
-
-Packages should NOT be released with succeeding TODO tests. As soon
-as a TODO test starts working, it should be promoted to a normal test
-and the newly working feature should be documented in the release
-notes or change log.
-
-=back
-
-=head1 RETURN VALUE
-
-Both C<ok> and C<skip> return true if their test succeeds and false
-otherwise in a scalar context.
-
-=head1 ONFAIL
-
- BEGIN { plan test => 4, onfail => sub { warn "CALL 911!" } }
-
-While test failures should be enough, extra diagnostics can be
-triggered at the end of a test run. C<onfail> is passed an array ref
-of hash refs that describe each test failure. Each hash will contain
-at least the following fields: C<package>, C<repetition>, and
-C<result>. (The file, line, and test number are not included because
-their correspondence to a particular test is tenuous.) If the test
-had an expected value or a diagnostic string, these will also be
-included.
-
-The B<optional> C<onfail> hook might be used simply to print out the
-version of your package and/or how to report problems. It might also
-be used to generate extremely sophisticated diagnostics for a
-particularly bizarre test failure. However it's not a panacea. Core
-dumps or other unrecoverable errors prevent the C<onfail> hook from
-running. (It is run inside an C<END> block.) Besides, C<onfail> is
-probably over-kill in most cases. (Your test code should be simpler
-than the code it is testing, yes?)
-
-=head1 SEE ALSO
-
-L<Test::Harness> and, perhaps, test coverage analysis tools.
-
-=head1 AUTHOR
-
-Copyright (c) 1998-1999 Joshua Nathaniel Pritikin. All rights reserved.
-
-This package is free software and is provided "as is" without express
-or implied warranty. It may be used, redistributed and/or modified
-under the terms of the Perl Artistic License (see
-http://www.perl.com/perl/misc/Artistic.html)
-
-=cut
diff --git a/contrib/perl5/lib/Test/Harness.pm b/contrib/perl5/lib/Test/Harness.pm
deleted file mode 100644
index f446e65..0000000
--- a/contrib/perl5/lib/Test/Harness.pm
+++ /dev/null
@@ -1,571 +0,0 @@
-package Test::Harness;
-
-use 5.005_64;
-use Exporter;
-use Benchmark;
-use Config;
-use FileHandle;
-use strict;
-
-our($VERSION, $verbose, $switches, $have_devel_corestack, $curtest,
- $columns, @ISA, @EXPORT, @EXPORT_OK);
-$have_devel_corestack = 0;
-
-$VERSION = "1.1604";
-
-$ENV{HARNESS_ACTIVE} = 1;
-
-# Some experimental versions of OS/2 build have broken $?
-my $ignore_exitcode = $ENV{HARNESS_IGNORE_EXITCODE};
-
-my $files_in_dir = $ENV{HARNESS_FILELEAK_IN_DIR};
-
-my $tests_skipped = 0;
-my $subtests_skipped = 0;
-
-@ISA=('Exporter');
-@EXPORT= qw(&runtests);
-@EXPORT_OK= qw($verbose $switches);
-
-$verbose = 0;
-$switches = "-w";
-$columns = $ENV{HARNESS_COLUMNS} || $ENV{COLUMNS} || 80;
-
-sub globdir { opendir DIRH, shift; my @f = readdir DIRH; closedir DIRH; @f }
-
-sub runtests {
- my(@tests) = @_;
- local($|) = 1;
- my($test,$te,$ok,$next,$max,$pct,$totbonus,@failed,%failedtests);
- my $totmax = 0;
- my $totok = 0;
- my $files = 0;
- my $bad = 0;
- my $good = 0;
- my $total = @tests;
-
- # pass -I flags to children
- my $old5lib = $ENV{PERL5LIB};
-
- # VMS has a 255-byte limit on the length of %ENV entries, so
- # toss the ones that involve perl_root, the install location
- # for VMS
- my $new5lib;
- if ($^O eq 'VMS') {
- $new5lib = join($Config{path_sep}, grep {!/perl_root/i;} @INC);
- $switches =~ s/-(\S*[A-Z]\S*)/"-$1"/g;
- }
- else {
- $new5lib = join($Config{path_sep}, @INC);
- }
-
- local($ENV{'PERL5LIB'}) = $new5lib;
-
- my @dir_files = globdir $files_in_dir if defined $files_in_dir;
- my $t_start = new Benchmark;
- while ($test = shift(@tests)) {
- $te = $test;
- chop($te);
- if ($^O eq 'VMS') { $te =~ s/^.*\.t\./[.t./s; }
- my $blank = (' ' x 77);
- my $leader = "$te" . '.' x (20 - length($te));
- my $ml = "";
- $ml = "\r$blank\r$leader"
- if -t STDOUT and not $ENV{HARNESS_NOTTY} and not $verbose;
- print $leader;
- my $fh = new FileHandle;
- $fh->open($test) or print "can't open $test. $!\n";
- my $first = <$fh>;
- my $s = $switches;
- $s .= " $ENV{'HARNESS_PERL_SWITCHES'}"
- if exists $ENV{'HARNESS_PERL_SWITCHES'};
- $s .= join " ", q[ "-T"], map {qq["-I$_"]} @INC
- if $first =~ /^#!.*\bperl.*-\w*T/;
- $fh->close or print "can't close $test. $!\n";
- my $cmd = ($ENV{'HARNESS_COMPILE_TEST'})
- ? "./perl -I../lib ../utils/perlcc $test "
- . "-r 2>> ./compilelog |"
- : "$^X $s $test|";
- $cmd = "MCR $cmd" if $^O eq 'VMS';
- $fh->open($cmd) or print "can't run $test. $!\n";
- $ok = $next = $max = 0;
- @failed = ();
- my %todo = ();
- my $bonus = 0;
- my $skipped = 0;
- my $skip_reason;
- while (<$fh>) {
- if( $verbose ){
- print $_;
- }
- if (/^1\.\.([0-9]+) todo([\d\s]+)\;/) {
- $max = $1;
- for (split(/\s+/, $2)) { $todo{$_} = 1; }
- $totmax += $max;
- $files++;
- $next = 1;
- } elsif (/^1\.\.([0-9]+)(\s*\#\s*[Ss]kip\S*(?>\s+)(.+))?/) {
- $max = $1;
- $totmax += $max;
- $files++;
- $next = 1;
- $skip_reason = $3 if not $max and defined $3;
- } elsif ($max && /^(not\s+)?ok\b/) {
- my $this = $next;
- if (/^not ok\s*(\d*)/){
- $this = $1 if $1 > 0;
- print "${ml}NOK $this" if $ml;
- if (!$todo{$this}) {
- push @failed, $this;
- } else {
- $ok++;
- $totok++;
- }
- } elsif (/^ok\s*(\d*)(\s*\#\s*[Ss]kip\S*(?:(?>\s+)(.+))?)?/) {
- $this = $1 if $1 > 0;
- print "${ml}ok $this/$max" if $ml;
- $ok++;
- $totok++;
- $skipped++ if defined $2;
- my $reason;
- $reason = 'unknown reason' if defined $2;
- $reason = $3 if defined $3;
- if (defined $reason and defined $skip_reason) {
- # print "was: '$skip_reason' new '$reason'\n";
- $skip_reason = 'various reasons'
- if $skip_reason ne $reason;
- } elsif (defined $reason) {
- $skip_reason = $reason;
- }
- $bonus++, $totbonus++ if $todo{$this};
- }
- if ($this > $next) {
- # print "Test output counter mismatch [test $this]\n";
- # no need to warn probably
- push @failed, $next..$this-1;
- } elsif ($this < $next) {
- #we have seen more "ok" lines than the number suggests
- print "Confused test output: test $this answered after test ", $next-1, "\n";
- $next = $this;
- }
- $next = $this + 1;
- }
- }
- $fh->close; # must close to reap child resource values
- my $wstatus = $ignore_exitcode ? 0 : $?; # Can trust $? ?
- my $estatus;
- $estatus = ($^O eq 'VMS'
- ? eval 'use vmsish "status"; $estatus = $?'
- : $wstatus >> 8);
- if ($wstatus) {
- my ($failed, $canon, $percent) = ('??', '??');
- printf "${ml}dubious\n\tTest returned status $estatus (wstat %d, 0x%x)\n",
- $wstatus,$wstatus;
- print "\t\t(VMS status is $estatus)\n" if $^O eq 'VMS';
- if (corestatus($wstatus)) { # until we have a wait module
- if ($have_devel_corestack) {
- Devel::CoreStack::stack($^X);
- } else {
- print "\ttest program seems to have generated a core\n";
- }
- }
- $bad++;
- if ($max) {
- if ($next == $max + 1 and not @failed) {
- print "\tafter all the subtests completed successfully\n";
- $percent = 0;
- $failed = 0; # But we do not set $canon!
- } else {
- push @failed, $next..$max;
- $failed = @failed;
- (my $txt, $canon) = canonfailed($max,$skipped,@failed);
- $percent = 100*(scalar @failed)/$max;
- print "DIED. ",$txt;
- }
- }
- $failedtests{$test} = { canon => $canon, max => $max || '??',
- failed => $failed,
- name => $test, percent => $percent,
- estat => $estatus, wstat => $wstatus,
- };
- } elsif ($ok == $max && $next == $max+1) {
- if ($max and $skipped + $bonus) {
- my @msg;
- push(@msg, "$skipped/$max skipped: $skip_reason")
- if $skipped;
- push(@msg, "$bonus/$max unexpectedly succeeded")
- if $bonus;
- print "${ml}ok, ".join(', ', @msg)."\n";
- } elsif ($max) {
- print "${ml}ok\n";
- } elsif (defined $skip_reason) {
- print "skipped: $skip_reason\n";
- $tests_skipped++;
- } else {
- print "skipped test on this platform\n";
- $tests_skipped++;
- }
- $good++;
- } elsif ($max) {
- if ($next <= $max) {
- push @failed, $next..$max;
- }
- if (@failed) {
- my ($txt, $canon) = canonfailed($max,$skipped,@failed);
- print "${ml}$txt";
- $failedtests{$test} = { canon => $canon, max => $max,
- failed => scalar @failed,
- name => $test, percent => 100*(scalar @failed)/$max,
- estat => '', wstat => '',
- };
- } else {
- print "Don't know which tests failed: got $ok ok, expected $max\n";
- $failedtests{$test} = { canon => '??', max => $max,
- failed => '??',
- name => $test, percent => undef,
- estat => '', wstat => '',
- };
- }
- $bad++;
- } elsif ($next == 0) {
- print "FAILED before any test output arrived\n";
- $bad++;
- $failedtests{$test} = { canon => '??', max => '??',
- failed => '??',
- name => $test, percent => undef,
- estat => '', wstat => '',
- };
- }
- $subtests_skipped += $skipped;
- if (defined $files_in_dir) {
- my @new_dir_files = globdir $files_in_dir;
- if (@new_dir_files != @dir_files) {
- my %f;
- @f{@new_dir_files} = (1) x @new_dir_files;
- delete @f{@dir_files};
- my @f = sort keys %f;
- print "LEAKED FILES: @f\n";
- @dir_files = @new_dir_files;
- }
- }
- }
- my $t_total = timediff(new Benchmark, $t_start);
-
- if ($^O eq 'VMS') {
- if (defined $old5lib) {
- $ENV{PERL5LIB} = $old5lib;
- } else {
- delete $ENV{PERL5LIB};
- }
- }
- my $bonusmsg = '';
- $bonusmsg = (" ($totbonus subtest".($totbonus>1?'s':'').
- " UNEXPECTEDLY SUCCEEDED)")
- if $totbonus;
- if ($tests_skipped) {
- $bonusmsg .= ", $tests_skipped test" . ($tests_skipped != 1 ? 's' : '');
- if ($subtests_skipped) {
- $bonusmsg .= " and $subtests_skipped subtest"
- . ($subtests_skipped != 1 ? 's' : '');
- }
- $bonusmsg .= ' skipped';
- }
- elsif ($subtests_skipped) {
- $bonusmsg .= ", $subtests_skipped subtest"
- . ($subtests_skipped != 1 ? 's' : '')
- . " skipped";
- }
- if ($bad == 0 && $totmax) {
- print "All tests successful$bonusmsg.\n";
- } elsif ($total==0){
- die "FAILED--no tests were run for some reason.\n";
- } elsif ($totmax==0) {
- my $blurb = $total==1 ? "script" : "scripts";
- die "FAILED--$total test $blurb could be run, alas--no output ever seen\n";
- } else {
- $pct = sprintf("%.2f", $good / $total * 100);
- my $subpct = sprintf " %d/%d subtests failed, %.2f%% okay.",
- $totmax - $totok, $totmax, 100*$totok/$totmax;
- # Create formats
- # First, figure out max length of test names
- my $failed_str = "Failed Test";
- my $middle_str = " Status Wstat Total Fail Failed ";
- my $list_str = "List of Failed";
- my $max_namelen = length($failed_str);
- my $script;
- foreach $script (keys %failedtests) {
- $max_namelen =
- (length $failedtests{$script}->{name} > $max_namelen) ?
- length $failedtests{$script}->{name} : $max_namelen;
- }
- my $list_len = $columns - length($middle_str) - $max_namelen;
- if ($list_len < length($list_str)) {
- $list_len = length($list_str);
- $max_namelen = $columns - length($middle_str) - $list_len;
- if ($max_namelen < length($failed_str)) {
- $max_namelen = length($failed_str);
- $columns = $max_namelen + length($middle_str) + $list_len;
- }
- }
-
- my $fmt_top = "format STDOUT_TOP =\n"
- . sprintf("%-${max_namelen}s", $failed_str)
- . $middle_str
- . $list_str . "\n"
- . "-" x $columns
- . "\n.\n";
- my $fmt = "format STDOUT =\n"
- . "@" . "<" x ($max_namelen - 1)
- . " @>> @>>>> @>>>> @>>> ^##.##% "
- . "^" . "<" x ($list_len - 1) . "\n"
- . '{ $curtest->{name}, $curtest->{estat},'
- . ' $curtest->{wstat}, $curtest->{max},'
- . ' $curtest->{failed}, $curtest->{percent},'
- . ' $curtest->{canon}'
- . "\n}\n"
- . "~~" . " " x ($columns - $list_len - 2) . "^"
- . "<" x ($list_len - 1) . "\n"
- . '$curtest->{canon}'
- . "\n.\n";
-
- eval $fmt_top;
- die $@ if $@;
- eval $fmt;
- die $@ if $@;
-
- # Now write to formats
- for $script (sort keys %failedtests) {
- $curtest = $failedtests{$script};
- write;
- }
- if ($bad) {
- $bonusmsg =~ s/^,\s*//;
- print "$bonusmsg.\n" if $bonusmsg;
- die "Failed $bad/$total test scripts, $pct% okay.$subpct\n";
- }
- }
- printf("Files=%d, Tests=%d, %s\n", $files, $totmax, timestr($t_total, 'nop'));
-
- return ($bad == 0 && $totmax) ;
-}
-
-my $tried_devel_corestack;
-sub corestatus {
- my($st) = @_;
-
- eval {require 'wait.ph'};
- my $ret = defined &WCOREDUMP ? WCOREDUMP($st) : $st & 0200;
-
- eval { require Devel::CoreStack; $have_devel_corestack++ }
- unless $tried_devel_corestack++;
-
- $ret;
-}
-
-sub canonfailed ($@) {
- my($max,$skipped,@failed) = @_;
- my %seen;
- @failed = sort {$a <=> $b} grep !$seen{$_}++, @failed;
- my $failed = @failed;
- my @result = ();
- my @canon = ();
- my $min;
- my $last = $min = shift @failed;
- my $canon;
- if (@failed) {
- for (@failed, $failed[-1]) { # don't forget the last one
- if ($_ > $last+1 || $_ == $last) {
- if ($min == $last) {
- push @canon, $last;
- } else {
- push @canon, "$min-$last";
- }
- $min = $_;
- }
- $last = $_;
- }
- local $" = ", ";
- push @result, "FAILED tests @canon\n";
- $canon = "@canon";
- } else {
- push @result, "FAILED test $last\n";
- $canon = $last;
- }
-
- push @result, "\tFailed $failed/$max tests, ";
- push @result, sprintf("%.2f",100*(1-$failed/$max)), "% okay";
- my $ender = 's' x ($skipped > 1);
- my $good = $max - $failed - $skipped;
- my $goodper = sprintf("%.2f",100*($good/$max));
- push @result, " (-$skipped skipped test$ender: $good okay, $goodper%)" if $skipped;
- push @result, "\n";
- my $txt = join "", @result;
- ($txt, $canon);
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Test::Harness - run perl standard test scripts with statistics
-
-=head1 SYNOPSIS
-
-use Test::Harness;
-
-runtests(@tests);
-
-=head1 DESCRIPTION
-
-(By using the L<Test> module, you can write test scripts without
-knowing the exact output this module expects. However, if you need to
-know the specifics, read on!)
-
-Perl test scripts print to standard output C<"ok N"> for each single
-test, where C<N> is an increasing sequence of integers. The first line
-output by a standard test script is C<"1..M"> with C<M> being the
-number of tests that should be run within the test
-script. Test::Harness::runtests(@tests) runs all the testscripts
-named as arguments and checks standard output for the expected
-C<"ok N"> strings.
-
-After all tests have been performed, runtests() prints some
-performance statistics that are computed by the Benchmark module.
-
-=head2 The test script output
-
-Any output from the testscript to standard error is ignored and
-bypassed, thus will be seen by the user. Lines written to standard
-output containing C</^(not\s+)?ok\b/> are interpreted as feedback for
-runtests(). All other lines are discarded.
-
-It is tolerated if the test numbers after C<ok> are omitted. In this
-case Test::Harness maintains temporarily its own counter until the
-script supplies test numbers again. So the following test script
-
- print <<END;
- 1..6
- not ok
- ok
- not ok
- ok
- ok
- END
-
-will generate
-
- FAILED tests 1, 3, 6
- Failed 3/6 tests, 50.00% okay
-
-The global variable $Test::Harness::verbose is exportable and can be
-used to let runtests() display the standard output of the script
-without altering the behavior otherwise.
-
-The global variable $Test::Harness::switches is exportable and can be
-used to set perl command line options used for running the test
-script(s). The default value is C<-w>.
-
-If the standard output line contains substring C< # Skip> (with
-variations in spacing and case) after C<ok> or C<ok NUMBER>, it is
-counted as a skipped test. If the whole testscript succeeds, the
-count of skipped tests is included in the generated output.
-
-C<Test::Harness> reports the text after C< # Skip(whatever)> as a
-reason for skipping. Similarly, one can include a similar explanation
-in a C<1..0> line emitted if the test is skipped completely:
-
- 1..0 # Skipped: no leverage found
-
-=head1 EXPORT
-
-C<&runtests> is exported by Test::Harness per default.
-
-=head1 DIAGNOSTICS
-
-=over 4
-
-=item C<All tests successful.\nFiles=%d, Tests=%d, %s>
-
-If all tests are successful some statistics about the performance are
-printed.
-
-=item C<FAILED tests %s\n\tFailed %d/%d tests, %.2f%% okay.>
-
-For any single script that has failing subtests statistics like the
-above are printed.
-
-=item C<Test returned status %d (wstat %d)>
-
-Scripts that return a non-zero exit status, both C<$? E<gt>E<gt> 8> and C<$?> are
-printed in a message similar to the above.
-
-=item C<Failed 1 test, %.2f%% okay. %s>
-
-=item C<Failed %d/%d tests, %.2f%% okay. %s>
-
-If not all tests were successful, the script dies with one of the
-above messages.
-
-=back
-
-=head1 ENVIRONMENT
-
-Setting C<HARNESS_IGNORE_EXITCODE> makes harness ignore the exit status
-of child processes.
-
-Setting C<HARNESS_NOTTY> to a true value forces it to behave as though
-STDOUT were not a console. You may need to set this if you don't want
-harness to output more frequent progress messages using carriage returns.
-Some consoles may not handle carriage returns properly (which results
-in a somewhat messy output).
-
-Setting C<HARNESS_COMPILE_TEST> to a true value will make harness attempt
-to compile the test using C<perlcc> before running it.
-
-If C<HARNESS_FILELEAK_IN_DIR> is set to the name of a directory, harness
-will check after each test whether new files appeared in that directory,
-and report them as
-
- LEAKED FILES: scr.tmp 0 my.db
-
-If relative, directory name is with respect to the current directory at
-the moment runtests() was called. Putting absolute path into
-C<HARNESS_FILELEAK_IN_DIR> may give more predicatable results.
-
-The value of C<HARNESS_PERL_SWITCHES> will be prepended to the
-switches used to invoke perl on each test. For example, setting
-C<HARNESS_PERL_SWITCHES> to "-W" will run all tests with all
-warnings enabled.
-
-If C<HARNESS_COLUMNS> is set, then this value will be used for the
-width of the terminal. If it is not set then it will default to
-C<COLUMNS>. If this is not set, it will default to 80. Note that users
-of Bourne-sh based shells will need to C<export COLUMNS> for this
-module to use that variable.
-
-Harness sets C<HARNESS_ACTIVE> before executing the individual tests.
-This allows the tests to determine if they are being executed through the
-harness or by any other means.
-
-=head1 SEE ALSO
-
-L<Test> for writing test scripts and also L<Benchmark> for the
-underlying timing routines.
-
-=head1 AUTHORS
-
-Either Tim Bunce or Andreas Koenig, we don't know. What we know for
-sure is, that it was inspired by Larry Wall's TEST script that came
-with perl distributions for ages. Numerous anonymous contributors
-exist. Current maintainer is Andreas Koenig.
-
-=head1 BUGS
-
-Test::Harness uses $^X to determine the perl binary to run the tests
-with. Test scripts running via the shebang (C<#!>) line may not be
-portable because $^X is not consistent for shebang scripts across
-platforms. This is no problem when Test::Harness is run with an
-absolute path to the perl binary or when $^X can be found in the path.
-
-=cut
diff --git a/contrib/perl5/lib/Text/Abbrev.pm b/contrib/perl5/lib/Text/Abbrev.pm
deleted file mode 100644
index d4f12d0..0000000
--- a/contrib/perl5/lib/Text/Abbrev.pm
+++ /dev/null
@@ -1,81 +0,0 @@
-package Text::Abbrev;
-require 5.005; # Probably works on earlier versions too.
-require Exporter;
-
-=head1 NAME
-
-abbrev - create an abbreviation table from a list
-
-=head1 SYNOPSIS
-
- use Text::Abbrev;
- abbrev $hashref, LIST
-
-
-=head1 DESCRIPTION
-
-Stores all unambiguous truncations of each element of LIST
-as keys in the associative array referenced by C<$hashref>.
-The values are the original list elements.
-
-=head1 EXAMPLE
-
- $hashref = abbrev qw(list edit send abort gripe);
-
- %hash = abbrev qw(list edit send abort gripe);
-
- abbrev $hashref, qw(list edit send abort gripe);
-
- abbrev(*hash, qw(list edit send abort gripe));
-
-=cut
-
-@ISA = qw(Exporter);
-@EXPORT = qw(abbrev);
-
-# Usage:
-# abbrev \%foo, LIST;
-# ...
-# $long = $foo{$short};
-
-sub abbrev {
- my ($word, $hashref, $glob, %table, $returnvoid);
-
- if (ref($_[0])) { # hash reference preferably
- $hashref = shift;
- $returnvoid = 1;
- } elsif (ref \$_[0] eq 'GLOB') { # is actually a glob (deprecated)
- $hashref = \%{shift()};
- $returnvoid = 1;
- }
- %{$hashref} = ();
-
- WORD: foreach $word (@_) {
- for (my $len = (length $word) - 1; $len > 0; --$len) {
- my $abbrev = substr($word,0,$len);
- my $seen = ++$table{$abbrev};
- if ($seen == 1) { # We're the first word so far to have
- # this abbreviation.
- $hashref->{$abbrev} = $word;
- } elsif ($seen == 2) { # We're the second word to have this
- # abbreviation, so we can't use it.
- delete $hashref->{$abbrev};
- } else { # We're the third word to have this
- # abbreviation, so skip to the next word.
- next WORD;
- }
- }
- }
- # Non-abbreviations always get entered, even if they aren't unique
- foreach $word (@_) {
- $hashref->{$word} = $word;
- }
- return if $returnvoid;
- if (wantarray) {
- %{$hashref};
- } else {
- $hashref;
- }
-}
-
-1;
diff --git a/contrib/perl5/lib/Text/ParseWords.pm b/contrib/perl5/lib/Text/ParseWords.pm
deleted file mode 100644
index 23eace9..0000000
--- a/contrib/perl5/lib/Text/ParseWords.pm
+++ /dev/null
@@ -1,262 +0,0 @@
-package Text::ParseWords;
-
-use vars qw($VERSION @ISA @EXPORT $PERL_SINGLE_QUOTE);
-$VERSION = "3.2";
-
-require 5.000;
-
-use Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(shellwords quotewords nested_quotewords parse_line);
-@EXPORT_OK = qw(old_shellwords);
-
-
-sub shellwords {
- local(@lines) = @_;
- $lines[$#lines] =~ s/\s+$//;
- return(quotewords('\s+', 0, @lines));
-}
-
-
-
-sub quotewords {
- my($delim, $keep, @lines) = @_;
- my($line, @words, @allwords);
-
-
- foreach $line (@lines) {
- @words = parse_line($delim, $keep, $line);
- return() unless (@words || !length($line));
- push(@allwords, @words);
- }
- return(@allwords);
-}
-
-
-
-sub nested_quotewords {
- my($delim, $keep, @lines) = @_;
- my($i, @allwords);
-
- for ($i = 0; $i < @lines; $i++) {
- @{$allwords[$i]} = parse_line($delim, $keep, $lines[$i]);
- return() unless (@{$allwords[$i]} || !length($lines[$i]));
- }
- return(@allwords);
-}
-
-
-
-sub parse_line {
- # We will be testing undef strings
- no warnings;
-
- my($delimiter, $keep, $line) = @_;
- my($quote, $quoted, $unquoted, $delim, $word, @pieces);
-
- while (length($line)) {
-
- ($quote, $quoted, undef, $unquoted, $delim, undef) =
- $line =~ m/^(["']) # a $quote
- ((?:\\.|(?!\1)[^\\])*) # and $quoted text
- \1 # followed by the same quote
- ([\000-\377]*) # and the rest
- | # --OR--
- ^((?:\\.|[^\\"'])*?) # an $unquoted text
- (\Z(?!\n)|(?-x:$delimiter)|(?!^)(?=["']))
- # plus EOL, delimiter, or quote
- ([\000-\377]*) # the rest
- /x; # extended layout
- return() unless( $quote || length($unquoted) || length($delim));
-
- $line = $+;
-
- if ($keep) {
- $quoted = "$quote$quoted$quote";
- }
- else {
- $unquoted =~ s/\\(.)/$1/g;
- if (defined $quote) {
- $quoted =~ s/\\(.)/$1/g if ($quote eq '"');
- $quoted =~ s/\\([\\'])/$1/g if ( $PERL_SINGLE_QUOTE && $quote eq "'");
- }
- }
- $word .= defined $quote ? $quoted : $unquoted;
-
- if (length($delim)) {
- push(@pieces, $word);
- push(@pieces, $delim) if ($keep eq 'delimiters');
- undef $word;
- }
- if (!length($line)) {
- push(@pieces, $word);
- }
- }
- return(@pieces);
-}
-
-
-
-sub old_shellwords {
-
- # Usage:
- # use ParseWords;
- # @words = old_shellwords($line);
- # or
- # @words = old_shellwords(@lines);
-
- local($_) = join('', @_);
- my(@words,$snippet,$field);
-
- s/^\s+//;
- while ($_ ne '') {
- $field = '';
- for (;;) {
- if (s/^"(([^"\\]|\\.)*)"//) {
- ($snippet = $1) =~ s#\\(.)#$1#g;
- }
- elsif (/^"/) {
- return();
- }
- elsif (s/^'(([^'\\]|\\.)*)'//) {
- ($snippet = $1) =~ s#\\(.)#$1#g;
- }
- elsif (/^'/) {
- return();
- }
- elsif (s/^\\(.)//) {
- $snippet = $1;
- }
- elsif (s/^([^\s\\'"]+)//) {
- $snippet = $1;
- }
- else {
- s/^\s+//;
- last;
- }
- $field .= $snippet;
- }
- push(@words, $field);
- }
- @words;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Text::ParseWords - parse text into an array of tokens or array of arrays
-
-=head1 SYNOPSIS
-
- use Text::ParseWords;
- @lists = &nested_quotewords($delim, $keep, @lines);
- @words = &quotewords($delim, $keep, @lines);
- @words = &shellwords(@lines);
- @words = &parse_line($delim, $keep, $line);
- @words = &old_shellwords(@lines); # DEPRECATED!
-
-=head1 DESCRIPTION
-
-The &nested_quotewords() and &quotewords() functions accept a delimiter
-(which can be a regular expression)
-and a list of lines and then breaks those lines up into a list of
-words ignoring delimiters that appear inside quotes. &quotewords()
-returns all of the tokens in a single long list, while &nested_quotewords()
-returns a list of token lists corresponding to the elements of @lines.
-&parse_line() does tokenizing on a single string. The &*quotewords()
-functions simply call &parse_lines(), so if you're only splitting
-one line you can call &parse_lines() directly and save a function
-call.
-
-The $keep argument is a boolean flag. If true, then the tokens are
-split on the specified delimiter, but all other characters (quotes,
-backslashes, etc.) are kept in the tokens. If $keep is false then the
-&*quotewords() functions remove all quotes and backslashes that are
-not themselves backslash-escaped or inside of single quotes (i.e.,
-&quotewords() tries to interpret these characters just like the Bourne
-shell). NB: these semantics are significantly different from the
-original version of this module shipped with Perl 5.000 through 5.004.
-As an additional feature, $keep may be the keyword "delimiters" which
-causes the functions to preserve the delimiters in each string as
-tokens in the token lists, in addition to preserving quote and
-backslash characters.
-
-&shellwords() is written as a special case of &quotewords(), and it
-does token parsing with whitespace as a delimiter-- similar to most
-Unix shells.
-
-=head1 EXAMPLES
-
-The sample program:
-
- use Text::ParseWords;
- @words = &quotewords('\s+', 0, q{this is "a test" of\ quotewords \"for you});
- $i = 0;
- foreach (@words) {
- print "$i: <$_>\n";
- $i++;
- }
-
-produces:
-
- 0: <this>
- 1: <is>
- 2: <a test>
- 3: <of quotewords>
- 4: <"for>
- 5: <you>
-
-demonstrating:
-
-=over 4
-
-=item 0
-
-a simple word
-
-=item 1
-
-multiple spaces are skipped because of our $delim
-
-=item 2
-
-use of quotes to include a space in a word
-
-=item 3
-
-use of a backslash to include a space in a word
-
-=item 4
-
-use of a backslash to remove the special meaning of a double-quote
-
-=item 5
-
-another simple word (note the lack of effect of the
-backslashed double-quote)
-
-=back
-
-Replacing C<&quotewords('\s+', 0, q{this is...})>
-with C<&shellwords(q{this is...})>
-is a simpler way to accomplish the same thing.
-
-=head1 AUTHORS
-
-Maintainer is Hal Pomeranz <pomeranz@netcom.com>, 1994-1997 (Original
-author unknown). Much of the code for &parse_line() (including the
-primary regexp) from Joerk Behrends <jbehrends@multimediaproduzenten.de>.
-
-Examples section another documentation provided by John Heidemann
-<johnh@ISI.EDU>
-
-Bug reports, patches, and nagging provided by lots of folks-- thanks
-everybody! Special thanks to Michael Schwern <schwern@envirolink.org>
-for assuring me that a &nested_quotewords() would be useful, and to
-Jeff Friedl <jfriedl@yahoo-inc.com> for telling me not to worry about
-error-checking (sort of-- you had to be there).
-
-=cut
diff --git a/contrib/perl5/lib/Text/Soundex.pm b/contrib/perl5/lib/Text/Soundex.pm
deleted file mode 100644
index d588764..0000000
--- a/contrib/perl5/lib/Text/Soundex.pm
+++ /dev/null
@@ -1,150 +0,0 @@
-package Text::Soundex;
-require 5.000;
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(&soundex $soundex_nocode);
-
-$VERSION = '1.0';
-
-# $Id: soundex.pl,v 1.2 1994/03/24 00:30:27 mike Exp $
-#
-# Implementation of soundex algorithm as described by Knuth in volume
-# 3 of The Art of Computer Programming, with ideas stolen from Ian
-# Phillips <ian@pipex.net>.
-#
-# Mike Stok <Mike.Stok@meiko.concord.ma.us>, 2 March 1994.
-#
-# Knuth's test cases are:
-#
-# Euler, Ellery -> E460
-# Gauss, Ghosh -> G200
-# Hilbert, Heilbronn -> H416
-# Knuth, Kant -> K530
-# Lloyd, Ladd -> L300
-# Lukasiewicz, Lissajous -> L222
-#
-# $Log: soundex.pl,v $
-# Revision 1.2 1994/03/24 00:30:27 mike
-# Subtle bug (any excuse :-) spotted by Rich Pinder <rpinder@hsc.usc.edu>
-# in the way I handles leasing characters which were different but had
-# the same soundex code. This showed up comparing it with Oracle's
-# soundex output.
-#
-# Revision 1.1 1994/03/02 13:01:30 mike
-# Initial revision
-#
-#
-##############################################################################
-
-# $soundex_nocode is used to indicate a string doesn't have a soundex
-# code, I like undef other people may want to set it to 'Z000'.
-
-$soundex_nocode = undef;
-
-sub soundex
-{
- local (@s, $f, $fc, $_) = @_;
-
- push @s, '' unless @s; # handle no args as a single empty string
-
- foreach (@s)
- {
- $_ = uc $_;
- tr/A-Z//cd;
-
- if ($_ eq '')
- {
- $_ = $soundex_nocode;
- }
- else
- {
- ($f) = /^(.)/;
- tr/AEHIOUWYBFPVCGJKQSXZDTLMNR/00000000111122222222334556/;
- ($fc) = /^(.)/;
- s/^$fc+//;
- tr///cs;
- tr/0//d;
- $_ = $f . $_ . '000';
- s/^(.{4}).*/$1/;
- }
- }
-
- wantarray ? @s : shift @s;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Text::Soundex - Implementation of the Soundex Algorithm as Described by Knuth
-
-=head1 SYNOPSIS
-
- use Text::Soundex;
-
- $code = soundex $string; # get soundex code for a string
- @codes = soundex @list; # get list of codes for list of strings
-
- # set value to be returned for strings without soundex code
-
- $soundex_nocode = 'Z000';
-
-=head1 DESCRIPTION
-
-This module implements the soundex algorithm as described by Donald Knuth
-in Volume 3 of B<The Art of Computer Programming>. The algorithm is
-intended to hash words (in particular surnames) into a small space using a
-simple model which approximates the sound of the word when spoken by an English
-speaker. Each word is reduced to a four character string, the first
-character being an upper case letter and the remaining three being digits.
-
-If there is no soundex code representation for a string then the value of
-C<$soundex_nocode> is returned. This is initially set to C<undef>, but
-many people seem to prefer an I<unlikely> value like C<Z000>
-(how unlikely this is depends on the data set being dealt with.) Any value
-can be assigned to C<$soundex_nocode>.
-
-In scalar context C<soundex> returns the soundex code of its first
-argument, and in list context a list is returned in which each element is the
-soundex code for the corresponding argument passed to C<soundex> e.g.
-
- @codes = soundex qw(Mike Stok);
-
-leaves C<@codes> containing C<('M200', 'S320')>.
-
-=head1 EXAMPLES
-
-Knuth's examples of various names and the soundex codes they map to
-are listed below:
-
- Euler, Ellery -> E460
- Gauss, Ghosh -> G200
- Hilbert, Heilbronn -> H416
- Knuth, Kant -> K530
- Lloyd, Ladd -> L300
- Lukasiewicz, Lissajous -> L222
-
-so:
-
- $code = soundex 'Knuth'; # $code contains 'K530'
- @list = soundex qw(Lloyd Gauss); # @list contains 'L300', 'G200'
-
-=head1 LIMITATIONS
-
-As the soundex algorithm was originally used a B<long> time ago in the US
-it considers only the English alphabet and pronunciation.
-
-As it is mapping a large space (arbitrary length strings) onto a small
-space (single letter plus 3 digits) no inference can be made about the
-similarity of two strings which end up with the same soundex code. For
-example, both C<Hilbert> and C<Heilbronn> end up with a soundex code
-of C<H416>.
-
-=head1 AUTHOR
-
-This code was implemented by Mike Stok (C<stok@cybercom.net>) from the
-description given by Knuth. Ian Phillips (C<ian@pipex.net>) and Rich Pinder
-(C<rpinder@hsc.usc.edu>) supplied ideas and spotted mistakes.
diff --git a/contrib/perl5/lib/Text/Tabs.pm b/contrib/perl5/lib/Text/Tabs.pm
deleted file mode 100644
index c431019..0000000
--- a/contrib/perl5/lib/Text/Tabs.pm
+++ /dev/null
@@ -1,97 +0,0 @@
-
-package Text::Tabs;
-
-require Exporter;
-
-@ISA = (Exporter);
-@EXPORT = qw(expand unexpand $tabstop);
-
-use vars qw($VERSION $tabstop $debug);
-$VERSION = 98.112801;
-
-use strict;
-
-BEGIN {
- $tabstop = 8;
- $debug = 0;
-}
-
-sub expand
-{
- my (@l) = @_;
- for $_ (@l) {
- 1 while s/(^|\n)([^\t\n]*)(\t+)/
- $1. $2 . (" " x
- ($tabstop * length($3)
- - (length($2) % $tabstop)))
- /sex;
- }
- return @l if wantarray;
- return $l[0];
-}
-
-sub unexpand
-{
- my (@l) = @_;
- my @e;
- my $x;
- my $line;
- my @lines;
- my $lastbit;
- for $x (@l) {
- @lines = split("\n", $x, -1);
- for $line (@lines) {
- $line = expand($line);
- @e = split(/(.{$tabstop})/,$line,-1);
- $lastbit = pop(@e);
- $lastbit = '' unless defined $lastbit;
- $lastbit = "\t"
- if $lastbit eq " "x$tabstop;
- for $_ (@e) {
- if ($debug) {
- my $x = $_;
- $x =~ s/\t/^I\t/gs;
- print "sub on '$x'\n";
- }
- s/ +$/\t/;
- }
- $line = join('',@e, $lastbit);
- }
- $x = join("\n", @lines);
- }
- return @l if wantarray;
- return $l[0];
-}
-
-1;
-__END__
-
-
-=head1 NAME
-
-Text::Tabs -- expand and unexpand tabs per the unix expand(1) and unexpand(1)
-
-=head1 SYNOPSIS
-
-use Text::Tabs;
-
-$tabstop = 4;
-@lines_without_tabs = expand(@lines_with_tabs);
-@lines_with_tabs = unexpand(@lines_without_tabs);
-
-=head1 DESCRIPTION
-
-Text::Tabs does about what the unix utilities expand(1) and unexpand(1)
-do. Given a line with tabs in it, expand will replace the tabs with
-the appropriate number of spaces. Given a line with or without tabs in
-it, unexpand will add tabs when it can save bytes by doing so. Invisible
-compression with plain ascii!
-
-=head1 BUGS
-
-expand doesn't handle newlines very quickly -- do not feed it an
-entire document in one string. Instead feed it an array of lines.
-
-=head1 AUTHOR
-
-David Muir Sharnoff <muir@idiom.com>
diff --git a/contrib/perl5/lib/Text/Wrap.pm b/contrib/perl5/lib/Text/Wrap.pm
deleted file mode 100644
index 579e09b..0000000
--- a/contrib/perl5/lib/Text/Wrap.pm
+++ /dev/null
@@ -1,175 +0,0 @@
-package Text::Wrap;
-
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(wrap fill);
-@EXPORT_OK = qw($columns $break $huge);
-
-$VERSION = 2001.0131;
-
-use vars qw($VERSION $columns $debug $break $huge);
-use strict;
-
-BEGIN {
- $columns = 76; # <= screen width
- $debug = 0;
- $break = '\s';
- $huge = 'wrap'; # alternatively: 'die' or 'overflow'
-}
-
-use Text::Tabs qw(expand unexpand);
-
-sub wrap
-{
- my ($ip, $xp, @t) = @_;
-
- my $r = "";
- my $tail = pop(@t);
- my $t = expand(join("", (map { /\s+\Z/ ? ( $_ ) : ($_, ' ') } @t), $tail));
- my $lead = $ip;
- my $ll = $columns - length(expand($ip)) - 1;
- my $nll = $columns - length(expand($xp)) - 1;
- my $nl = "";
- my $remainder = "";
-
- pos($t) = 0;
- while ($t !~ /\G\s*\Z/gc) {
- if ($t =~ /\G([^\n]{0,$ll})($break|\Z(?!\n))/xmgc) {
- $r .= unexpand($nl . $lead . $1);
- $remainder = $2;
- } elsif ($huge eq 'wrap' && $t =~ /\G([^\n]{$ll})/gc) {
- $r .= unexpand($nl . $lead . $1);
- $remainder = "\n";
- } elsif ($huge eq 'overflow' && $t =~ /\G([^\n]*?)($break|\Z(?!\n))/xmgc) {
- $r .= unexpand($nl . $lead . $1);
- $remainder = $2;
- } elsif ($huge eq 'die') {
- die "couldn't wrap '$t'";
- } else {
- die "This shouldn't happen";
- }
-
- $lead = $xp;
- $ll = $nll;
- $nl = "\n";
- }
- $r .= $remainder;
-
- print "-----------$r---------\n" if $debug;
-
- print "Finish up with '$lead'\n" if $debug;
-
- $r .= $lead . substr($t, pos($t), length($t)-pos($t))
- if pos($t) ne length($t);
-
- print "-----------$r---------\n" if $debug;;
-
- return $r;
-}
-
-sub fill
-{
- my ($ip, $xp, @raw) = @_;
- my @para;
- my $pp;
-
- for $pp (split(/\n\s+/, join("\n",@raw))) {
- $pp =~ s/\s+/ /g;
- my $x = wrap($ip, $xp, $pp);
- push(@para, $x);
- }
-
- # if paragraph_indent is the same as line_indent,
- # separate paragraphs with blank lines
-
- my $ps = ($ip eq $xp) ? "\n\n" : "\n";
- return join ($ps, @para);
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Text::Wrap - line wrapping to form simple paragraphs
-
-=head1 SYNOPSIS
-
-B<Example 1>
-
- use Text::Wrap
-
- $initial_tab = "\t"; # Tab before first line
- $subsequent_tab = ""; # All other lines flush left
-
- print wrap($initial_tab, $subsequent_tab, @text);
- print fill($initial_tab, $subsequent_tab, @text);
-
- @lines = wrap($initial_tab, $subsequent_tab, @text);
-
- @paragraphs = fill($initial_tab, $subsequent_tab, @text);
-
-B<Example 2>
-
- use Text::Wrap qw(wrap $columns $huge);
-
- $columns = 132; # Wrap at 132 characters
- $huge = 'die';
- $huge = 'wrap';
- $huge = 'overflow';
-
-B<Example 3>
-
- use Text::Wrap
-
- $Text::Wrap::columns = 72;
- print wrap('', '', @text);
-
-=head1 DESCRIPTION
-
-Text::Wrap::wrap() is a very simple paragraph formatter. It formats a
-single paragraph at a time by breaking lines at word boundries.
-Indentation is controlled for the first line (C<$initial_tab>) and
-all subsquent lines (C<$subsequent_tab>) independently. Please note:
-C<$initial_tab> and C<$subsequent_tab> are the literal strings that will
-be used: it is unlikley you would want to pass in a number.
-
-Lines are wrapped at C<$Text::Wrap::columns> columns. C<$Text::Wrap::columns>
-should be set to the full width of your output device. In fact,
-every resulting line will have length of no more than C<$columns - 1>.
-
-Beginner note: In example 2, above C<$columns> is imported into
-the local namespace, and set locally. In example 3,
-C<$Text::Wrap::columns> is set in its own namespace without importing it.
-
-When words that are longer than C<$columns> are encountered, they
-are broken up. C<wrap()> adds a C<"\n"> at column C<$columns>.
-This behavior can be overridden by setting C<$huge> to
-'die' or to 'overflow'. When set to 'die', large words will cause
-C<die()> to be called. When set to 'overflow', large words will be
-left intact.
-
-Text::Wrap::fill() is a simple multi-paragraph formatter. It formats
-each paragraph separately and then joins them together when it's done. It
-will destory any whitespace in the original text. It breaks text into
-paragraphs by looking for whitespace after a newline. In other respects
-it acts like wrap().
-
-When called in list context, C<wrap()> will return a list of lines and
-C<fill()> will return a list of paragraphs.
-
-Historical notes: Older versions of C<wrap()> and C<fill()> always
-returned strings. Also, 'die' used to be the default value of
-C<$huge>. Now, 'wrap' is the default value.
-
-=head1 EXAMPLE
-
- print wrap("\t","","This is a bit of text that forms
- a normal book-style paragraph");
-
-=head1 AUTHOR
-
-David Muir Sharnoff <muir@idiom.com> with help from Tim Pierce and
-many many others.
-
diff --git a/contrib/perl5/lib/Tie/Array.pm b/contrib/perl5/lib/Tie/Array.pm
deleted file mode 100644
index f4c6193..0000000
--- a/contrib/perl5/lib/Tie/Array.pm
+++ /dev/null
@@ -1,288 +0,0 @@
-package Tie::Array;
-
-use 5.005_64;
-use strict;
-use Carp;
-our $VERSION = '1.01';
-
-# Pod documentation after __END__ below.
-
-sub DESTROY { }
-sub EXTEND { }
-sub UNSHIFT { scalar shift->SPLICE(0,0,@_) }
-sub SHIFT { shift->SPLICE(0,1) }
-#sub SHIFT { (shift->SPLICE(0,1))[0] }
-sub CLEAR { shift->STORESIZE(0) }
-
-sub PUSH
-{
- my $obj = shift;
- my $i = $obj->FETCHSIZE;
- $obj->STORE($i++, shift) while (@_);
-}
-
-sub POP
-{
- my $obj = shift;
- my $newsize = $obj->FETCHSIZE - 1;
- my $val;
- if ($newsize >= 0)
- {
- $val = $obj->FETCH($newsize);
- $obj->STORESIZE($newsize);
- }
- $val;
-}
-
-sub SPLICE {
- my $obj = shift;
- my $sz = $obj->FETCHSIZE;
- my $off = (@_) ? shift : 0;
- $off += $sz if ($off < 0);
- my $len = (@_) ? shift : $sz - $off;
- $len += $sz - $off if $len < 0;
- my @result;
- for (my $i = 0; $i < $len; $i++) {
- push(@result,$obj->FETCH($off+$i));
- }
- $off = $sz if $off > $sz;
- $len -= $off + $len - $sz if $off + $len > $sz;
- if (@_ > $len) {
- # Move items up to make room
- my $d = @_ - $len;
- my $e = $off+$len;
- $obj->EXTEND($sz+$d);
- for (my $i=$sz-1; $i >= $e; $i--) {
- my $val = $obj->FETCH($i);
- $obj->STORE($i+$d,$val);
- }
- }
- elsif (@_ < $len) {
- # Move items down to close the gap
- my $d = $len - @_;
- my $e = $off+$len;
- for (my $i=$off+$len; $i < $sz; $i++) {
- my $val = $obj->FETCH($i);
- $obj->STORE($i-$d,$val);
- }
- $obj->STORESIZE($sz-$d);
- }
- for (my $i=0; $i < @_; $i++) {
- $obj->STORE($off+$i,$_[$i]);
- }
- return @result;
-}
-
-sub EXISTS {
- my $pkg = ref $_[0];
- croak "$pkg dosn't define an EXISTS method";
-}
-
-sub DELETE {
- my $pkg = ref $_[0];
- croak "$pkg dosn't define a DELETE method";
-}
-
-package Tie::StdArray;
-use vars qw(@ISA);
-@ISA = 'Tie::Array';
-
-sub TIEARRAY { bless [], $_[0] }
-sub FETCHSIZE { scalar @{$_[0]} }
-sub STORESIZE { $#{$_[0]} = $_[1]-1 }
-sub STORE { $_[0]->[$_[1]] = $_[2] }
-sub FETCH { $_[0]->[$_[1]] }
-sub CLEAR { @{$_[0]} = () }
-sub POP { pop(@{$_[0]}) }
-sub PUSH { my $o = shift; push(@$o,@_) }
-sub SHIFT { shift(@{$_[0]}) }
-sub UNSHIFT { my $o = shift; unshift(@$o,@_) }
-sub EXISTS { exists $_[0]->[$_[1]] }
-sub DELETE { delete $_[0]->[$_[1]] }
-
-sub SPLICE
-{
- my $ob = shift;
- my $sz = $ob->FETCHSIZE;
- my $off = @_ ? shift : 0;
- $off += $sz if $off < 0;
- my $len = @_ ? shift : $sz-$off;
- return splice(@$ob,$off,$len,@_);
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Tie::Array - base class for tied arrays
-
-=head1 SYNOPSIS
-
- package NewArray;
- use Tie::Array;
- @ISA = ('Tie::Array');
-
- # mandatory methods
- sub TIEARRAY { ... }
- sub FETCH { ... }
- sub FETCHSIZE { ... }
-
- sub STORE { ... } # mandatory if elements writeable
- sub STORESIZE { ... } # mandatory if elements can be added/deleted
- sub EXISTS { ... } # mandatory if exists() expected to work
- sub DELETE { ... } # mandatory if delete() expected to work
-
- # optional methods - for efficiency
- sub CLEAR { ... }
- sub PUSH { ... }
- sub POP { ... }
- sub SHIFT { ... }
- sub UNSHIFT { ... }
- sub SPLICE { ... }
- sub EXTEND { ... }
- sub DESTROY { ... }
-
- package NewStdArray;
- use Tie::Array;
-
- @ISA = ('Tie::StdArray');
-
- # all methods provided by default
-
- package main;
-
- $object = tie @somearray,Tie::NewArray;
- $object = tie @somearray,Tie::StdArray;
- $object = tie @somearray,Tie::NewStdArray;
-
-
-
-=head1 DESCRIPTION
-
-This module provides methods for array-tying classes. See
-L<perltie> for a list of the functions required in order to tie an array
-to a package. The basic B<Tie::Array> package provides stub C<DESTROY>,
-and C<EXTEND> methods that do nothing, stub C<DELETE> and C<EXISTS>
-methods that croak() if the delete() or exists() builtins are ever called
-on the tied array, and implementations of C<PUSH>, C<POP>, C<SHIFT>,
-C<UNSHIFT>, C<SPLICE> and C<CLEAR> in terms of basic C<FETCH>, C<STORE>,
-C<FETCHSIZE>, C<STORESIZE>.
-
-The B<Tie::StdArray> package provides efficient methods required for tied arrays
-which are implemented as blessed references to an "inner" perl array.
-It inherits from B<Tie::Array>, and should cause tied arrays to behave exactly
-like standard arrays, allowing for selective overloading of methods.
-
-For developers wishing to write their own tied arrays, the required methods
-are briefly defined below. See the L<perltie> section for more detailed
-descriptive, as well as example code:
-
-=over
-
-=item TIEARRAY classname, LIST
-
-The class method is invoked by the command C<tie @array, classname>. Associates
-an array instance with the specified class. C<LIST> would represent
-additional arguments (along the lines of L<AnyDBM_File> and compatriots) needed
-to complete the association. The method should return an object of a class which
-provides the methods below.
-
-=item STORE this, index, value
-
-Store datum I<value> into I<index> for the tied array associated with
-object I<this>. If this makes the array larger then
-class's mapping of C<undef> should be returned for new positions.
-
-=item FETCH this, index
-
-Retrieve the datum in I<index> for the tied array associated with
-object I<this>.
-
-=item FETCHSIZE this
-
-Returns the total number of items in the tied array associated with
-object I<this>. (Equivalent to C<scalar(@array)>).
-
-=item STORESIZE this, count
-
-Sets the total number of items in the tied array associated with
-object I<this> to be I<count>. If this makes the array larger then
-class's mapping of C<undef> should be returned for new positions.
-If the array becomes smaller then entries beyond count should be
-deleted.
-
-=item EXTEND this, count
-
-Informative call that array is likely to grow to have I<count> entries.
-Can be used to optimize allocation. This method need do nothing.
-
-=item EXISTS this, key
-
-Verify that the element at index I<key> exists in the tied array I<this>.
-
-The B<Tie::Array> implementation is a stub that simply croaks.
-
-=item DELETE this, key
-
-Delete the element at index I<key> from the tied array I<this>.
-
-The B<Tie::Array> implementation is a stub that simply croaks.
-
-=item CLEAR this
-
-Clear (remove, delete, ...) all values from the tied array associated with
-object I<this>.
-
-=item DESTROY this
-
-Normal object destructor method.
-
-=item PUSH this, LIST
-
-Append elements of LIST to the array.
-
-=item POP this
-
-Remove last element of the array and return it.
-
-=item SHIFT this
-
-Remove the first element of the array (shifting other elements down)
-and return it.
-
-=item UNSHIFT this, LIST
-
-Insert LIST elements at the beginning of the array, moving existing elements
-up to make room.
-
-=item SPLICE this, offset, length, LIST
-
-Perform the equivalent of C<splice> on the array.
-
-I<offset> is optional and defaults to zero, negative values count back
-from the end of the array.
-
-I<length> is optional and defaults to rest of the array.
-
-I<LIST> may be empty.
-
-Returns a list of the original I<length> elements at I<offset>.
-
-=back
-
-=head1 CAVEATS
-
-There is no support at present for tied @ISA. There is a potential conflict
-between magic entries needed to notice setting of @ISA, and those needed to
-implement 'tie'.
-
-Very little consideration has been given to the behaviour of tied arrays
-when C<$[> is not default value of zero.
-
-=head1 AUTHOR
-
-Nick Ing-Simmons E<lt>nik@tiuk.ti.comE<gt>
-
-=cut
diff --git a/contrib/perl5/lib/Tie/Handle.pm b/contrib/perl5/lib/Tie/Handle.pm
deleted file mode 100644
index 81b0792..0000000
--- a/contrib/perl5/lib/Tie/Handle.pm
+++ /dev/null
@@ -1,234 +0,0 @@
-package Tie::Handle;
-
-use 5.005_64;
-our $VERSION = '4.0';
-
-=head1 NAME
-
-Tie::Handle, Tie::StdHandle - base class definitions for tied handles
-
-=head1 SYNOPSIS
-
- package NewHandle;
- require Tie::Handle;
-
- @ISA = (Tie::Handle);
-
- sub READ { ... } # Provide a needed method
- sub TIEHANDLE { ... } # Overrides inherited method
-
-
- package main;
-
- tie *FH, 'NewHandle';
-
-=head1 DESCRIPTION
-
-This module provides some skeletal methods for handle-tying classes. See
-L<perltie> for a list of the functions required in tying a handle to a package.
-The basic B<Tie::Handle> package provides a C<new> method, as well as methods
-C<TIEHANDLE>, C<PRINT>, C<PRINTF> and C<GETC>.
-
-For developers wishing to write their own tied-handle classes, the methods
-are summarized below. The L<perltie> section not only documents these, but
-has sample code as well:
-
-=over
-
-=item TIEHANDLE classname, LIST
-
-The method invoked by the command C<tie *glob, classname>. Associates a new
-glob instance with the specified class. C<LIST> would represent additional
-arguments (along the lines of L<AnyDBM_File> and compatriots) needed to
-complete the association.
-
-=item WRITE this, scalar, length, offset
-
-Write I<length> bytes of data from I<scalar> starting at I<offset>.
-
-=item PRINT this, LIST
-
-Print the values in I<LIST>
-
-=item PRINTF this, format, LIST
-
-Print the values in I<LIST> using I<format>
-
-=item READ this, scalar, length, offset
-
-Read I<length> bytes of data into I<scalar> starting at I<offset>.
-
-=item READLINE this
-
-Read a single line
-
-=item GETC this
-
-Get a single character
-
-=item CLOSE this
-
-Close the handle
-
-=item OPEN this, filename
-
-(Re-)open the handle
-
-=item BINMODE this
-
-Specify content is binary
-
-=item EOF this
-
-Test for end of file.
-
-=item TELL this
-
-Return position in the file.
-
-=item SEEK this, offset, whence
-
-Position the file.
-
-Test for end of file.
-
-=item DESTROY this
-
-Free the storage associated with the tied handle referenced by I<this>.
-This is rarely needed, as Perl manages its memory quite well. But the
-option exists, should a class wish to perform specific actions upon the
-destruction of an instance.
-
-=back
-
-=head1 MORE INFORMATION
-
-The L<perltie> section contains an example of tying handles.
-
-=head1 COMPATIBILITY
-
-This version of Tie::Handle is neither related to nor compatible with
-the Tie::Handle (3.0) module available on CPAN. It was due to an
-accident that two modules with the same name appeared. The namespace
-clash has been cleared in favor of this module that comes with the
-perl core in September 2000 and accordingly the version number has
-been bumped up to 4.0.
-
-=cut
-
-use Carp;
-use warnings::register;
-
-sub new {
- my $pkg = shift;
- $pkg->TIEHANDLE(@_);
-}
-
-# "Grandfather" the new, a la Tie::Hash
-
-sub TIEHANDLE {
- my $pkg = shift;
- if (defined &{"{$pkg}::new"}) {
- warnings::warnif("WARNING: calling ${pkg}->new since ${pkg}->TIEHANDLE is missing");
- $pkg->new(@_);
- }
- else {
- croak "$pkg doesn't define a TIEHANDLE method";
- }
-}
-
-sub PRINT {
- my $self = shift;
- if($self->can('WRITE') != \&WRITE) {
- my $buf = join(defined $, ? $, : "",@_);
- $buf .= $\ if defined $\;
- $self->WRITE($buf,length($buf),0);
- }
- else {
- croak ref($self)," doesn't define a PRINT method";
- }
-}
-
-sub PRINTF {
- my $self = shift;
-
- if($self->can('WRITE') != \&WRITE) {
- my $buf = sprintf(shift,@_);
- $self->WRITE($buf,length($buf),0);
- }
- else {
- croak ref($self)," doesn't define a PRINTF method";
- }
-}
-
-sub READLINE {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a READLINE method";
-}
-
-sub GETC {
- my $self = shift;
-
- if($self->can('READ') != \&READ) {
- my $buf;
- $self->READ($buf,1);
- return $buf;
- }
- else {
- croak ref($self)," doesn't define a GETC method";
- }
-}
-
-sub READ {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a READ method";
-}
-
-sub WRITE {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a WRITE method";
-}
-
-sub CLOSE {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a CLOSE method";
-}
-
-package Tie::StdHandle;
-our @ISA = 'Tie::Handle';
-use Carp;
-
-sub TIEHANDLE
-{
- my $class = shift;
- my $fh = do { \local *HANDLE};
- bless $fh,$class;
- $fh->OPEN(@_) if (@_);
- return $fh;
-}
-
-sub EOF { eof($_[0]) }
-sub TELL { tell($_[0]) }
-sub FILENO { fileno($_[0]) }
-sub SEEK { seek($_[0],$_[1],$_[2]) }
-sub CLOSE { close($_[0]) }
-sub BINMODE { binmode($_[0]) }
-
-sub OPEN
-{
- $_[0]->CLOSE if defined($_[0]->FILENO);
- @_ == 2 ? open($_[0], $_[1]) : open($_[0], $_[1], $_[2]);
-}
-
-sub READ { read($_[0],$_[1],$_[2]) }
-sub READLINE { my $fh = $_[0]; <$fh> }
-sub GETC { getc($_[0]) }
-
-sub WRITE
-{
- my $fh = $_[0];
- print $fh substr($_[1],0,$_[2])
-}
-
-
-1;
diff --git a/contrib/perl5/lib/Tie/Hash.pm b/contrib/perl5/lib/Tie/Hash.pm
deleted file mode 100644
index 2244711..0000000
--- a/contrib/perl5/lib/Tie/Hash.pm
+++ /dev/null
@@ -1,160 +0,0 @@
-package Tie::Hash;
-
-=head1 NAME
-
-Tie::Hash, Tie::StdHash - base class definitions for tied hashes
-
-=head1 SYNOPSIS
-
- package NewHash;
- require Tie::Hash;
-
- @ISA = (Tie::Hash);
-
- sub DELETE { ... } # Provides needed method
- sub CLEAR { ... } # Overrides inherited method
-
-
- package NewStdHash;
- require Tie::Hash;
-
- @ISA = (Tie::StdHash);
-
- # All methods provided by default, define only those needing overrides
- sub DELETE { ... }
-
-
- package main;
-
- tie %new_hash, 'NewHash';
- tie %new_std_hash, 'NewStdHash';
-
-=head1 DESCRIPTION
-
-This module provides some skeletal methods for hash-tying classes. See
-L<perltie> for a list of the functions required in order to tie a hash
-to a package. The basic B<Tie::Hash> package provides a C<new> method, as well
-as methods C<TIEHASH>, C<EXISTS> and C<CLEAR>. The B<Tie::StdHash> package
-provides most methods required for hashes in L<perltie>. It inherits from
-B<Tie::Hash>, and causes tied hashes to behave exactly like standard hashes,
-allowing for selective overloading of methods. The C<new> method is provided
-as grandfathering in the case a class forgets to include a C<TIEHASH> method.
-
-For developers wishing to write their own tied hashes, the required methods
-are briefly defined below. See the L<perltie> section for more detailed
-descriptive, as well as example code:
-
-=over
-
-=item TIEHASH classname, LIST
-
-The method invoked by the command C<tie %hash, classname>. Associates a new
-hash instance with the specified class. C<LIST> would represent additional
-arguments (along the lines of L<AnyDBM_File> and compatriots) needed to
-complete the association.
-
-=item STORE this, key, value
-
-Store datum I<value> into I<key> for the tied hash I<this>.
-
-=item FETCH this, key
-
-Retrieve the datum in I<key> for the tied hash I<this>.
-
-=item FIRSTKEY this
-
-Return the (key, value) pair for the first key in the hash.
-
-=item NEXTKEY this, lastkey
-
-Return the next key for the hash.
-
-=item EXISTS this, key
-
-Verify that I<key> exists with the tied hash I<this>.
-
-The B<Tie::Hash> implementation is a stub that simply croaks.
-
-=item DELETE this, key
-
-Delete the key I<key> from the tied hash I<this>.
-
-=item CLEAR this
-
-Clear all values from the tied hash I<this>.
-
-=back
-
-=head1 CAVEATS
-
-The L<perltie> documentation includes a method called C<DESTROY> as
-a necessary method for tied hashes. Neither B<Tie::Hash> nor B<Tie::StdHash>
-define a default for this method. This is a standard for class packages,
-but may be omitted in favor of a simple default.
-
-=head1 MORE INFORMATION
-
-The packages relating to various DBM-related implementations (F<DB_File>,
-F<NDBM_File>, etc.) show examples of general tied hashes, as does the
-L<Config> module. While these do not utilize B<Tie::Hash>, they serve as
-good working examples.
-
-=cut
-
-use Carp;
-use warnings::register;
-
-sub new {
- my $pkg = shift;
- $pkg->TIEHASH(@_);
-}
-
-# Grandfather "new"
-
-sub TIEHASH {
- my $pkg = shift;
- if (defined &{"${pkg}::new"}) {
- warnings::warnif("WARNING: calling ${pkg}->new since ${pkg}->TIEHASH is missing");
- $pkg->new(@_);
- }
- else {
- croak "$pkg doesn't define a TIEHASH method";
- }
-}
-
-sub EXISTS {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define an EXISTS method";
-}
-
-sub CLEAR {
- my $self = shift;
- my $key = $self->FIRSTKEY(@_);
- my @keys;
-
- while (defined $key) {
- push @keys, $key;
- $key = $self->NEXTKEY(@_, $key);
- }
- foreach $key (@keys) {
- $self->DELETE(@_, $key);
- }
-}
-
-# The Tie::StdHash package implements standard perl hash behaviour.
-# It exists to act as a base class for classes which only wish to
-# alter some parts of their behaviour.
-
-package Tie::StdHash;
-@ISA = qw(Tie::Hash);
-
-sub TIEHASH { bless {}, $_[0] }
-sub STORE { $_[0]->{$_[1]} = $_[2] }
-sub FETCH { $_[0]->{$_[1]} }
-sub FIRSTKEY { my $a = scalar keys %{$_[0]}; each %{$_[0]} }
-sub NEXTKEY { each %{$_[0]} }
-sub EXISTS { exists $_[0]->{$_[1]} }
-sub DELETE { delete $_[0]->{$_[1]} }
-sub CLEAR { %{$_[0]} = () }
-
-1;
diff --git a/contrib/perl5/lib/Tie/RefHash.pm b/contrib/perl5/lib/Tie/RefHash.pm
deleted file mode 100644
index 4611488..0000000
--- a/contrib/perl5/lib/Tie/RefHash.pm
+++ /dev/null
@@ -1,162 +0,0 @@
-package Tie::RefHash;
-
-=head1 NAME
-
-Tie::RefHash - use references as hash keys
-
-=head1 SYNOPSIS
-
- require 5.004;
- use Tie::RefHash;
- tie HASHVARIABLE, 'Tie::RefHash', LIST;
- tie HASHVARIABLE, 'Tie::RefHash::Nestable', LIST;
-
- untie HASHVARIABLE;
-
-=head1 DESCRIPTION
-
-This module provides the ability to use references as hash keys if you
-first C<tie> the hash variable to this module. Normally, only the
-keys of the tied hash itself are preserved as references; to use
-references as keys in hashes-of-hashes, use Tie::RefHash::Nestable,
-included as part of Tie::RefHash.
-
-It is implemented using the standard perl TIEHASH interface. Please
-see the C<tie> entry in perlfunc(1) and perltie(1) for more information.
-
-The Nestable version works by looking for hash references being stored
-and converting them to tied hashes so that they too can have
-references as keys. This will happen without warning whenever you
-store a reference to one of your own hashes in the tied hash.
-
-=head1 EXAMPLE
-
- use Tie::RefHash;
- tie %h, 'Tie::RefHash';
- $a = [];
- $b = {};
- $c = \*main;
- $d = \"gunk";
- $e = sub { 'foo' };
- %h = ($a => 1, $b => 2, $c => 3, $d => 4, $e => 5);
- $a->[0] = 'foo';
- $b->{foo} = 'bar';
- for (keys %h) {
- print ref($_), "\n";
- }
-
- tie %h, 'Tie::RefHash::Nestable';
- $h{$a}->{$b} = 1;
- for (keys %h, keys %{$h{$a}}) {
- print ref($_), "\n";
- }
-
-=head1 AUTHOR
-
-Gurusamy Sarathy gsar@activestate.com
-
-=head1 VERSION
-
-Version 1.3 8 Apr 2001
-
-=head1 SEE ALSO
-
-perl(1), perlfunc(1), perltie(1)
-
-=cut
-
-use v5.6.0;
-use Tie::Hash;
-use strict;
-
-our @ISA = qw(Tie::Hash);
-our $VERSION = '1.3';
-
-sub TIEHASH {
- my $c = shift;
- my $s = [];
- bless $s, $c;
- while (@_) {
- $s->STORE(shift, shift);
- }
- return $s;
-}
-
-sub FETCH {
- my($s, $k) = @_;
- if (ref $k) {
- if (defined $s->[0]{"$k"}) {
- $s->[0]{"$k"}[1];
- }
- else {
- undef;
- }
- }
- else {
- $s->[1]{$k};
- }
-}
-
-sub STORE {
- my($s, $k, $v) = @_;
- if (ref $k) {
- $s->[0]{"$k"} = [$k, $v];
- }
- else {
- $s->[1]{$k} = $v;
- }
- $v;
-}
-
-sub DELETE {
- my($s, $k) = @_;
- (ref $k) ? delete($s->[0]{"$k"}) : delete($s->[1]{$k});
-}
-
-sub EXISTS {
- my($s, $k) = @_;
- (ref $k) ? exists($s->[0]{"$k"}) : exists($s->[1]{$k});
-}
-
-sub FIRSTKEY {
- my $s = shift;
- keys %{$s->[0]}; # reset iterator
- keys %{$s->[1]}; # reset iterator
- $s->[2] = 0;
- $s->NEXTKEY;
-}
-
-sub NEXTKEY {
- my $s = shift;
- my ($k, $v);
- if (!$s->[2]) {
- if (($k, $v) = each %{$s->[0]}) {
- return $s->[0]{"$k"}[0];
- }
- else {
- $s->[2] = 1;
- }
- }
- return each %{$s->[1]};
-}
-
-sub CLEAR {
- my $s = shift;
- $s->[2] = 0;
- %{$s->[0]} = ();
- %{$s->[1]} = ();
-}
-
-package Tie::RefHash::Nestable;
-our @ISA = qw(Tie::RefHash);
-
-sub STORE {
- my($s, $k, $v) = @_;
- if (ref($v) eq 'HASH' and not tied %$v) {
- my @elems = %$v;
- tie %$v, ref($s), @elems;
- }
- $s->SUPER::STORE($k, $v);
-}
-
-1;
diff --git a/contrib/perl5/lib/Tie/Scalar.pm b/contrib/perl5/lib/Tie/Scalar.pm
deleted file mode 100644
index 89ad03e..0000000
--- a/contrib/perl5/lib/Tie/Scalar.pm
+++ /dev/null
@@ -1,138 +0,0 @@
-package Tie::Scalar;
-
-=head1 NAME
-
-Tie::Scalar, Tie::StdScalar - base class definitions for tied scalars
-
-=head1 SYNOPSIS
-
- package NewScalar;
- require Tie::Scalar;
-
- @ISA = (Tie::Scalar);
-
- sub FETCH { ... } # Provide a needed method
- sub TIESCALAR { ... } # Overrides inherited method
-
-
- package NewStdScalar;
- require Tie::Scalar;
-
- @ISA = (Tie::StdScalar);
-
- # All methods provided by default, so define only what needs be overridden
- sub FETCH { ... }
-
-
- package main;
-
- tie $new_scalar, 'NewScalar';
- tie $new_std_scalar, 'NewStdScalar';
-
-=head1 DESCRIPTION
-
-This module provides some skeletal methods for scalar-tying classes. See
-L<perltie> for a list of the functions required in tying a scalar to a
-package. The basic B<Tie::Scalar> package provides a C<new> method, as well
-as methods C<TIESCALAR>, C<FETCH> and C<STORE>. The B<Tie::StdScalar>
-package provides all the methods specified in L<perltie>. It inherits from
-B<Tie::Scalar> and causes scalars tied to it to behave exactly like the
-built-in scalars, allowing for selective overloading of methods. The C<new>
-method is provided as a means of grandfathering, for classes that forget to
-provide their own C<TIESCALAR> method.
-
-For developers wishing to write their own tied-scalar classes, the methods
-are summarized below. The L<perltie> section not only documents these, but
-has sample code as well:
-
-=over
-
-=item TIESCALAR classname, LIST
-
-The method invoked by the command C<tie $scalar, classname>. Associates a new
-scalar instance with the specified class. C<LIST> would represent additional
-arguments (along the lines of L<AnyDBM_File> and compatriots) needed to
-complete the association.
-
-=item FETCH this
-
-Retrieve the value of the tied scalar referenced by I<this>.
-
-=item STORE this, value
-
-Store data I<value> in the tied scalar referenced by I<this>.
-
-=item DESTROY this
-
-Free the storage associated with the tied scalar referenced by I<this>.
-This is rarely needed, as Perl manages its memory quite well. But the
-option exists, should a class wish to perform specific actions upon the
-destruction of an instance.
-
-=back
-
-=head1 MORE INFORMATION
-
-The L<perltie> section uses a good example of tying scalars by associating
-process IDs with priority.
-
-=cut
-
-use Carp;
-use warnings::register;
-
-sub new {
- my $pkg = shift;
- $pkg->TIESCALAR(@_);
-}
-
-# "Grandfather" the new, a la Tie::Hash
-
-sub TIESCALAR {
- my $pkg = shift;
- if (defined &{"{$pkg}::new"}) {
- warnings::warnif("WARNING: calling ${pkg}->new since ${pkg}->TIESCALAR is missing");
- $pkg->new(@_);
- }
- else {
- croak "$pkg doesn't define a TIESCALAR method";
- }
-}
-
-sub FETCH {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a FETCH method";
-}
-
-sub STORE {
- my $pkg = ref $_[0];
- croak "$pkg doesn't define a STORE method";
-}
-
-#
-# The Tie::StdScalar package provides scalars that behave exactly like
-# Perl's built-in scalars. Good base to inherit from, if you're only going to
-# tweak a small bit.
-#
-package Tie::StdScalar;
-@ISA = (Tie::Scalar);
-
-sub TIESCALAR {
- my $class = shift;
- my $instance = shift || undef;
- return bless \$instance => $class;
-}
-
-sub FETCH {
- return ${$_[0]};
-}
-
-sub STORE {
- ${$_[0]} = $_[1];
-}
-
-sub DESTROY {
- undef ${$_[0]};
-}
-
-1;
diff --git a/contrib/perl5/lib/Tie/SubstrHash.pm b/contrib/perl5/lib/Tie/SubstrHash.pm
deleted file mode 100644
index 1c04c6f..0000000
--- a/contrib/perl5/lib/Tie/SubstrHash.pm
+++ /dev/null
@@ -1,213 +0,0 @@
-package Tie::SubstrHash;
-
-=head1 NAME
-
-Tie::SubstrHash - Fixed-table-size, fixed-key-length hashing
-
-=head1 SYNOPSIS
-
- require Tie::SubstrHash;
-
- tie %myhash, 'Tie::SubstrHash', $key_len, $value_len, $table_size;
-
-=head1 DESCRIPTION
-
-The B<Tie::SubstrHash> package provides a hash-table-like interface to
-an array of determinate size, with constant key size and record size.
-
-Upon tying a new hash to this package, the developer must specify the
-size of the keys that will be used, the size of the value fields that the
-keys will index, and the size of the overall table (in terms of key-value
-pairs, not size in hard memory). I<These values will not change for the
-duration of the tied hash>. The newly-allocated hash table may now have
-data stored and retrieved. Efforts to store more than C<$table_size>
-elements will result in a fatal error, as will efforts to store a value
-not exactly C<$value_len> characters in length, or reference through a
-key not exactly C<$key_len> characters in length. While these constraints
-may seem excessive, the result is a hash table using much less internal
-memory than an equivalent freely-allocated hash table.
-
-=head1 CAVEATS
-
-Because the current implementation uses the table and key sizes for the
-hashing algorithm, there is no means by which to dynamically change the
-value of any of the initialization parameters.
-
-The hash does not support exists().
-
-=cut
-
-use Carp;
-
-sub TIEHASH {
- my $pack = shift;
- my ($klen, $vlen, $tsize) = @_;
- my $rlen = 1 + $klen + $vlen;
- $tsize = [$tsize,
- findgteprime($tsize * 1.1)]; # Allow 10% empty.
- $self = bless ["\0", $klen, $vlen, $tsize, $rlen, 0, -1];
- $$self[0] x= $rlen * $tsize->[1];
- $self;
-}
-
-sub CLEAR {
- local($self) = @_;
- $$self[0] = "\0" x ($$self[4] * $$self[3]->[1]);
- $$self[5] = 0;
- $$self[6] = -1;
-}
-
-sub FETCH {
- local($self,$key) = @_;
- local($klen, $vlen, $tsize, $rlen) = @$self[1..4];
- &hashkey;
- for (;;) {
- $offset = $hash * $rlen;
- $record = substr($$self[0], $offset, $rlen);
- if (ord($record) == 0) {
- return undef;
- }
- elsif (ord($record) == 1) {
- }
- elsif (substr($record, 1, $klen) eq $key) {
- return substr($record, 1+$klen, $vlen);
- }
- &rehash;
- }
-}
-
-sub STORE {
- local($self,$key,$val) = @_;
- local($klen, $vlen, $tsize, $rlen) = @$self[1..4];
- croak("Table is full ($tsize->[0] elements)") if $$self[5] > $tsize->[0];
- croak(qq/Value "$val" is not $vlen characters long/)
- if length($val) != $vlen;
- my $writeoffset;
-
- &hashkey;
- for (;;) {
- $offset = $hash * $rlen;
- $record = substr($$self[0], $offset, $rlen);
- if (ord($record) == 0) {
- $record = "\2". $key . $val;
- die "panic" unless length($record) == $rlen;
- $writeoffset = $offset unless defined $writeoffset;
- substr($$self[0], $writeoffset, $rlen) = $record;
- ++$$self[5];
- return;
- }
- elsif (ord($record) == 1) {
- $writeoffset = $offset unless defined $writeoffset;
- }
- elsif (substr($record, 1, $klen) eq $key) {
- $record = "\2". $key . $val;
- die "panic" unless length($record) == $rlen;
- substr($$self[0], $offset, $rlen) = $record;
- return;
- }
- &rehash;
- }
-}
-
-sub DELETE {
- local($self,$key) = @_;
- local($klen, $vlen, $tsize, $rlen) = @$self[1..4];
- &hashkey;
- for (;;) {
- $offset = $hash * $rlen;
- $record = substr($$self[0], $offset, $rlen);
- if (ord($record) == 0) {
- return undef;
- }
- elsif (ord($record) == 1) {
- }
- elsif (substr($record, 1, $klen) eq $key) {
- substr($$self[0], $offset, 1) = "\1";
- return substr($record, 1+$klen, $vlen);
- --$$self[5];
- }
- &rehash;
- }
-}
-
-sub FIRSTKEY {
- local($self) = @_;
- $$self[6] = -1;
- &NEXTKEY;
-}
-
-sub NEXTKEY {
- local($self) = @_;
- local($klen, $vlen, $tsize, $rlen, $entries, $iterix) = @$self[1..6];
- for (++$iterix; $iterix < $tsize->[1]; ++$iterix) {
- next unless substr($$self[0], $iterix * $rlen, 1) eq "\2";
- $$self[6] = $iterix;
- return substr($$self[0], $iterix * $rlen + 1, $klen);
- }
- $$self[6] = -1;
- undef;
-}
-
-sub EXISTS {
- croak "Tie::SubstrHash does not support exists()";
-}
-
-sub hashkey {
- croak(qq/Key "$key" is not $klen characters long/)
- if length($key) != $klen;
- $hash = 2;
- for (unpack('C*', $key)) {
- $hash = $hash * 33 + $_;
- &_hashwrap if $hash >= 1e13;
- }
- &_hashwrap if $hash >= $tsize->[1];
- $hash = 1 unless $hash;
- $hashbase = $hash;
-}
-
-sub _hashwrap {
- $hash -= int($hash / $tsize->[1]) * $tsize->[1];
-}
-
-sub rehash {
- $hash += $hashbase;
- $hash -= $tsize->[1] if $hash >= $tsize->[1];
-}
-
-# using POSIX::ceil() would be too heavy, and not all platforms have it.
-sub ceil {
- my $num = shift;
- $num = int($num + 1) unless $num == int $num;
- return $num;
-}
-
-# See:
-#
-# http://www-groups.dcs.st-andrews.ac.uk/~history/HistTopics/Prime_numbers.html
-#
-
-sub findgteprime { # find the smallest prime integer greater than or equal to
- use integer;
-
- my $num = ceil(shift);
- return 2 if $num <= 2;
-
- $num++ unless $num % 2;
- my $i;
- my $sqrtnum = int sqrt $num;
- my $sqrtnumsquared = $sqrtnum * $sqrtnum;
-
- NUM:
- for (;; $num += 2) {
- if ($sqrtnumsquared < $num) {
- $sqrtnum++;
- $sqrtnumsquared = $sqrtnum * $sqrtnum;
- }
- for ($i = 3; $i <= $sqrtnum; $i += 2) {
- next NUM unless $num % $i;
- }
- return $num;
- }
-}
-
-1;
diff --git a/contrib/perl5/lib/Time/Local.pm b/contrib/perl5/lib/Time/Local.pm
deleted file mode 100644
index a480884..0000000
--- a/contrib/perl5/lib/Time/Local.pm
+++ /dev/null
@@ -1,246 +0,0 @@
-package Time::Local;
-require 5.000;
-require Exporter;
-use Carp;
-
-@ISA = qw( Exporter );
-@EXPORT = qw( timegm timelocal );
-@EXPORT_OK = qw( timegm_nocheck timelocal_nocheck );
-
-# Set up constants
- $SEC = 1;
- $MIN = 60 * $SEC;
- $HR = 60 * $MIN;
- $DAY = 24 * $HR;
-# Determine breakpoint for rolling century
- my $thisYear = (localtime())[5];
- $nextCentury = int($thisYear / 100) * 100;
- $breakpoint = ($thisYear + 50) % 100;
- $nextCentury += 100 if $breakpoint < 50;
-
-my %options;
-
-sub timegm {
- my (@date) = @_;
- if ($date[5] > 999) {
- $date[5] -= 1900;
- }
- elsif ($date[5] >= 0 && $date[5] < 100) {
- $date[5] -= 100 if $date[5] > $breakpoint;
- $date[5] += $nextCentury;
- }
- $ym = pack(C2, @date[5,4]);
- $cheat = $cheat{$ym} || &cheat(@date);
- $cheat
- + $date[0] * $SEC
- + $date[1] * $MIN
- + $date[2] * $HR
- + ($date[3]-1) * $DAY;
-}
-
-sub timegm_nocheck {
- local $options{no_range_check} = 1;
- &timegm;
-}
-
-sub timelocal {
- my $t = &timegm;
- my $tt = $t;
-
- my (@lt) = localtime($t);
- my (@gt) = gmtime($t);
- if ($t < $DAY and ($lt[5] >= 70 or $gt[5] >= 70 )) {
- # Wrap error, too early a date
- # Try a safer date
- $tt += $DAY;
- @lt = localtime($tt);
- @gt = gmtime($tt);
- }
-
- my $tzsec = ($gt[1] - $lt[1]) * $MIN + ($gt[2] - $lt[2]) * $HR;
-
- if($lt[5] > $gt[5]) {
- $tzsec -= $DAY;
- }
- elsif($gt[5] > $lt[5]) {
- $tzsec += $DAY;
- }
- else {
- $tzsec += ($gt[7] - $lt[7]) * $DAY;
- }
-
- $tzsec += $HR if($lt[8]);
-
- $time = $t + $tzsec;
- @test = localtime($time + ($tt - $t));
- $time -= $HR if $test[2] != $_[2];
- $time;
-}
-
-sub timelocal_nocheck {
- local $options{no_range_check} = 1;
- &timelocal;
-}
-
-sub cheat {
- $year = $_[5];
- $month = $_[4];
- unless ($options{no_range_check}) {
- croak "Month '$month' out of range 0..11" if $month > 11 || $month < 0;
- croak "Day '$_[3]' out of range 1..31" if $_[3] > 31 || $_[3] < 1;
- croak "Hour '$_[2]' out of range 0..23" if $_[2] > 23 || $_[2] < 0;
- croak "Minute '$_[1]' out of range 0..59" if $_[1] > 59 || $_[1] < 0;
- croak "Second '$_[0]' out of range 0..59" if $_[0] > 59 || $_[0] < 0;
- }
- $guess = $^T;
- @g = gmtime($guess);
- $lastguess = "";
- $counter = 0;
- while ($diff = $year - $g[5]) {
- croak "Can't handle date (".join(", ",@_).")" if ++$counter > 255;
- $guess += $diff * (363 * $DAY);
- @g = gmtime($guess);
- if (($thisguess = "@g") eq $lastguess){
- croak "Can't handle date (".join(", ",@_).")";
- #date beyond this machine's integer limit
- }
- $lastguess = $thisguess;
- }
- while ($diff = $month - $g[4]) {
- croak "Can't handle date (".join(", ",@_).")" if ++$counter > 255;
- $guess += $diff * (27 * $DAY);
- @g = gmtime($guess);
- if (($thisguess = "@g") eq $lastguess){
- croak "Can't handle date (".join(", ",@_).")";
- #date beyond this machine's integer limit
- }
- $lastguess = $thisguess;
- }
- @gfake = gmtime($guess-1); #still being sceptic
- if ("@gfake" eq $lastguess){
- croak "Can't handle date (".join(", ",@_).")";
- #date beyond this machine's integer limit
- }
- $g[3]--;
- $guess -= $g[0] * $SEC + $g[1] * $MIN + $g[2] * $HR + $g[3] * $DAY;
- $cheat{$ym} = $guess;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Time::Local - efficiently compute time from local and GMT time
-
-=head1 SYNOPSIS
-
- $time = timelocal($sec,$min,$hours,$mday,$mon,$year);
- $time = timegm($sec,$min,$hours,$mday,$mon,$year);
-
-=head1 DESCRIPTION
-
-These routines are the inverse of built-in perl fuctions localtime()
-and gmtime(). They accept a date as a six-element array, and return
-the corresponding time(2) value in seconds since the Epoch (Midnight,
-January 1, 1970). This value can be positive or negative.
-
-It is worth drawing particular attention to the expected ranges for
-the values provided. While the day of the month is expected to be in
-the range 1..31, the month should be in the range 0..11.
-This is consistent with the values returned from localtime() and gmtime().
-
-The timelocal() and timegm() functions perform range checking on the
-input $sec, $min, $hours, $mday, and $mon values by default. If you'd
-rather they didn't, you can explicitly import the timelocal_nocheck()
-and timegm_nocheck() functions.
-
- use Time::Local 'timelocal_nocheck';
-
- {
- # The 365th day of 1999
- print scalar localtime timelocal_nocheck 0,0,0,365,0,99;
-
- # The twenty thousandth day since 1970
- print scalar localtime timelocal_nocheck 0,0,0,20000,0,70;
-
- # And even the 10,000,000th second since 1999!
- print scalar localtime timelocal_nocheck 10000000,0,0,1,0,99;
- }
-
-Your mileage may vary when trying these with minutes and hours,
-and it doesn't work at all for months.
-
-Strictly speaking, the year should also be specified in a form consistent
-with localtime(), i.e. the offset from 1900.
-In order to make the interpretation of the year easier for humans,
-however, who are more accustomed to seeing years as two-digit or four-digit
-values, the following conventions are followed:
-
-=over 4
-
-=item *
-
-Years greater than 999 are interpreted as being the actual year,
-rather than the offset from 1900. Thus, 1963 would indicate the year
-Martin Luther King won the Nobel prize, not the year 2863.
-
-=item *
-
-Years in the range 100..999 are interpreted as offset from 1900,
-so that 112 indicates 2012. This rule also applies to years less than zero
-(but see note below regarding date range).
-
-=item *
-
-Years in the range 0..99 are interpreted as shorthand for years in the
-rolling "current century," defined as 50 years on either side of the current
-year. Thus, today, in 1999, 0 would refer to 2000, and 45 to 2045,
-but 55 would refer to 1955. Twenty years from now, 55 would instead refer
-to 2055. This is messy, but matches the way people currently think about
-two digit dates. Whenever possible, use an absolute four digit year instead.
-
-=back
-
-The scheme above allows interpretation of a wide range of dates, particularly
-if 4-digit years are used.
-
-Please note, however, that the range of dates that can be actually be handled
-depends on the size of an integer (time_t) on a given platform.
-Currently, this is 32 bits for most systems, yielding an approximate range
-from Dec 1901 to Jan 2038.
-
-Both timelocal() and timegm() croak if given dates outside the supported
-range.
-
-=head1 IMPLEMENTATION
-
-These routines are quite efficient and yet are always guaranteed to agree
-with localtime() and gmtime(). We manage this by caching the start times
-of any months we've seen before. If we know the start time of the month,
-we can always calculate any time within the month. The start times
-themselves are guessed by successive approximation starting at the
-current time, since most dates seen in practice are close to the
-current date. Unlike algorithms that do a binary search (calling gmtime
-once for each bit of the time value, resulting in 32 calls), this algorithm
-calls it at most 6 times, and usually only once or twice. If you hit
-the month cache, of course, it doesn't call it at all.
-
-timelocal() is implemented using the same cache. We just assume that we're
-translating a GMT time, and then fudge it when we're done for the timezone
-and daylight savings arguments. Note that the timezone is evaluated for
-each date because countries occasionally change their official timezones.
-Assuming that localtime() corrects for these changes, this routine will
-also be correct. The daylight savings offset is currently assumed
-to be one hour.
-
-=head1 BUGS
-
-The whole scheme for interpreting two-digit years can be considered a bug.
-
-Note that the cache currently handles only years from 1900 through 2155.
-
-The proclivity to croak() is probably a bug.
-
-=cut
diff --git a/contrib/perl5/lib/Time/gmtime.pm b/contrib/perl5/lib/Time/gmtime.pm
deleted file mode 100644
index 6ff4bc8..0000000
--- a/contrib/perl5/lib/Time/gmtime.pm
+++ /dev/null
@@ -1,89 +0,0 @@
-package Time::gmtime;
-use strict;
-use Time::tm;
-
-use 5.005_64;
-our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
-BEGIN {
- use Exporter ();
- @ISA = qw(Exporter Time::tm);
- @EXPORT = qw(gmtime gmctime);
- @EXPORT_OK = qw(
- $tm_sec $tm_min $tm_hour $tm_mday
- $tm_mon $tm_year $tm_wday $tm_yday
- $tm_isdst
- );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
- $VERSION = 1.01;
-}
-use vars @EXPORT_OK;
-
-sub populate (@) {
- return unless @_;
- my $tmob = Time::tm->new();
- @$tmob = (
- $tm_sec, $tm_min, $tm_hour, $tm_mday,
- $tm_mon, $tm_year, $tm_wday, $tm_yday,
- $tm_isdst )
- = @_;
- return $tmob;
-}
-
-sub gmtime (;$) { populate CORE::gmtime(@_ ? shift : time)}
-sub gmctime (;$) { scalar CORE::gmtime(@_ ? shift : time)}
-
-1;
-__END__
-
-=head1 NAME
-
-Time::gmtime - by-name interface to Perl's built-in gmtime() function
-
-=head1 SYNOPSIS
-
- use Time::gmtime;
- $gm = gmtime();
- printf "The day in Greenwich is %s\n",
- (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[ gm->wday() ];
-
- use Time::gmtime w(:FIELDS;
- printf "The day in Greenwich is %s\n",
- (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[ gm_wday() ];
-
- $now = gmctime();
-
- use Time::gmtime;
- use File::stat;
- $date_string = gmctime(stat($file)->mtime);
-
-=head1 DESCRIPTION
-
-This module's default exports override the core gmtime() function,
-replacing it with a version that returns "Time::tm" objects.
-This object has methods that return the similarly named structure field
-name from the C's tm structure from F<time.h>; namely sec, min, hour,
-mday, mon, year, wday, yday, and isdst.
-
-You may also import all the structure fields directly into your namespace
-as regular variables using the :FIELDS import tag. (Note that this
-still overrides your core functions.) Access these fields as variables
-named with a preceding C<tm_> in front their method names. Thus,
-C<$tm_obj-E<gt>mday()> corresponds to $tm_mday if you import the fields.
-
-The gmctime() function provides a way of getting at the
-scalar sense of the original CORE::gmtime() function.
-
-To access this functionality without the core overrides,
-pass the C<use> an empty import list, and then access
-function functions with their full qualified names.
-On the other hand, the built-ins are still available
-via the C<CORE::> pseudo-package.
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/contrib/perl5/lib/Time/localtime.pm b/contrib/perl5/lib/Time/localtime.pm
deleted file mode 100644
index 0ca07af..0000000
--- a/contrib/perl5/lib/Time/localtime.pm
+++ /dev/null
@@ -1,85 +0,0 @@
-package Time::localtime;
-use strict;
-use Time::tm;
-
-use 5.005_64;
-our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
-BEGIN {
- use Exporter ();
- @ISA = qw(Exporter Time::tm);
- @EXPORT = qw(localtime ctime);
- @EXPORT_OK = qw(
- $tm_sec $tm_min $tm_hour $tm_mday
- $tm_mon $tm_year $tm_wday $tm_yday
- $tm_isdst
- );
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
- $VERSION = 1.01;
-}
-use vars @EXPORT_OK;
-
-sub populate (@) {
- return unless @_;
- my $tmob = Time::tm->new();
- @$tmob = (
- $tm_sec, $tm_min, $tm_hour, $tm_mday,
- $tm_mon, $tm_year, $tm_wday, $tm_yday,
- $tm_isdst )
- = @_;
- return $tmob;
-}
-
-sub localtime (;$) { populate CORE::localtime(@_ ? shift : time)}
-sub ctime (;$) { scalar CORE::localtime(@_ ? shift : time) }
-
-1;
-
-__END__
-
-=head1 NAME
-
-Time::localtime - by-name interface to Perl's built-in localtime() function
-
-=head1 SYNOPSIS
-
- use Time::localtime;
- printf "Year is %d\n", localtime->year() + 1900;
-
- $now = ctime();
-
- use Time::localtime;
- use File::stat;
- $date_string = ctime(stat($file)->mtime);
-
-=head1 DESCRIPTION
-
-This module's default exports override the core localtime() function,
-replacing it with a version that returns "Time::tm" objects.
-This object has methods that return the similarly named structure field
-name from the C's tm structure from F<time.h>; namely sec, min, hour,
-mday, mon, year, wday, yday, and isdst.
-
-You may also import all the structure fields directly into your namespace
-as regular variables using the :FIELDS import tag. (Note that this still
-overrides your core functions.) Access these fields as
-variables named with a preceding C<tm_> in front their method names.
-Thus, C<$tm_obj-E<gt>mday()> corresponds to $tm_mday if you import
-the fields.
-
-The ctime() function provides a way of getting at the
-scalar sense of the original CORE::localtime() function.
-
-To access this functionality without the core overrides,
-pass the C<use> an empty import list, and then access
-function functions with their full qualified names.
-On the other hand, the built-ins are still available
-via the C<CORE::> pseudo-package.
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/contrib/perl5/lib/Time/tm.pm b/contrib/perl5/lib/Time/tm.pm
deleted file mode 100644
index fd47ad1..0000000
--- a/contrib/perl5/lib/Time/tm.pm
+++ /dev/null
@@ -1,31 +0,0 @@
-package Time::tm;
-use strict;
-
-use Class::Struct qw(struct);
-struct('Time::tm' => [
- map { $_ => '$' } qw{ sec min hour mday mon year wday yday isdst }
-]);
-
-1;
-__END__
-
-=head1 NAME
-
-Time::tm - internal object used by Time::gmtime and Time::localtime
-
-=head1 SYNOPSIS
-
-Don't use this module directly.
-
-=head1 DESCRIPTION
-
-This module is used internally as a base class by Time::localtime And
-Time::gmtime functions. It creates a Time::tm struct object which is
-addressable just like's C's tm structure from F<time.h>; namely with sec,
-min, hour, mday, mon, year, wday, yday, and isdst.
-
-This class is an internal interface only.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/contrib/perl5/lib/UNIVERSAL.pm b/contrib/perl5/lib/UNIVERSAL.pm
deleted file mode 100644
index f2f1fe9..0000000
--- a/contrib/perl5/lib/UNIVERSAL.pm
+++ /dev/null
@@ -1,101 +0,0 @@
-package UNIVERSAL;
-
-# UNIVERSAL should not contain any extra subs/methods beyond those
-# that it exists to define. The use of Exporter below is a historical
-# accident that should be fixed sometime.
-require Exporter;
-*import = \&Exporter::import;
-@EXPORT_OK = qw(isa can);
-
-1;
-__END__
-
-=head1 NAME
-
-UNIVERSAL - base class for ALL classes (blessed references)
-
-=head1 SYNOPSIS
-
- $io = $fd->isa("IO::Handle");
- $sub = $obj->can('print');
-
- $yes = UNIVERSAL::isa($ref, "HASH");
-
-=head1 DESCRIPTION
-
-C<UNIVERSAL> is the base class which all bless references will inherit from,
-see L<perlobj>
-
-C<UNIVERSAL> provides the following methods
-
-=over 4
-
-=item isa ( TYPE )
-
-C<isa> returns I<true> if C<REF> is blessed into package C<TYPE>
-or inherits from package C<TYPE>.
-
-C<isa> can be called as either a static or object method call.
-
-=item can ( METHOD )
-
-C<can> checks if the object has a method called C<METHOD>. If it does
-then a reference to the sub is returned. If it does not then I<undef>
-is returned.
-
-C<can> can be called as either a static or object method call.
-
-=item VERSION ( [ REQUIRE ] )
-
-C<VERSION> will return the value of the variable C<$VERSION> in the
-package the object is blessed into. If C<REQUIRE> is given then
-it will do a comparison and die if the package version is not
-greater than or equal to C<REQUIRE>.
-
-C<VERSION> can be called as either a static or object method call.
-
-=back
-
-The C<isa> and C<can> methods can also be called as subroutines
-
-=over 4
-
-=item UNIVERSAL::isa ( VAL, TYPE )
-
-C<isa> returns I<true> if one of the following statements is true.
-
-=over 8
-
-=item *
-
-C<VAL> is a reference blessed into either package C<TYPE> or a package
-which inherits from package C<TYPE>.
-
-=item *
-
-C<VAL> is a reference to a C<TYPE> of Perl variable (e.g. 'HASH').
-
-=item *
-
-C<VAL> is the name of a package that inherits from (or is itself)
-package C<TYPE>.
-
-=back
-
-=item UNIVERSAL::can ( VAL, METHOD )
-
-If C<VAL> is a blessed reference which has a method called C<METHOD>,
-C<can> returns a reference to the subroutine. If C<VAL> is not
-a blessed reference, or if it does not have a method C<METHOD>,
-I<undef> is returned.
-
-=back
-
-These subroutines should I<not> be imported via S<C<use UNIVERSAL qw(...)>>.
-If you want simple local access to them you can do
-
- *isa = \&UNIVERSAL::isa;
-
-to import isa into your package.
-
-=cut
diff --git a/contrib/perl5/lib/User/grent.pm b/contrib/perl5/lib/User/grent.pm
deleted file mode 100644
index 95e4189..0000000
--- a/contrib/perl5/lib/User/grent.pm
+++ /dev/null
@@ -1,94 +0,0 @@
-package User::grent;
-use strict;
-
-use 5.005_64;
-our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-BEGIN {
- use Exporter ();
- @EXPORT = qw(getgrent getgrgid getgrnam getgr);
- @EXPORT_OK = qw($gr_name $gr_gid $gr_passwd $gr_mem @gr_members);
- %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
-}
-use vars @EXPORT_OK;
-
-# Class::Struct forbids use of @ISA
-sub import { goto &Exporter::import }
-
-use Class::Struct qw(struct);
-struct 'User::grent' => [
- name => '$',
- passwd => '$',
- gid => '$',
- members => '@',
-];
-
-sub populate (@) {
- return unless @_;
- my $gob = new();
- ($gr_name, $gr_passwd, $gr_gid) = @$gob[0,1,2] = @_[0,1,2];
- @gr_members = @{$gob->[3]} = split ' ', $_[3];
- return $gob;
-}
-
-sub getgrent ( ) { populate(CORE::getgrent()) }
-sub getgrnam ($) { populate(CORE::getgrnam(shift)) }
-sub getgrgid ($) { populate(CORE::getgrgid(shift)) }
-sub getgr ($) { ($_[0] =~ /^\d+/) ? &getgrgid : &getgrnam }
-
-1;
-__END__
-
-=head1 NAME
-
-User::grent - by-name interface to Perl's built-in getgr*() functions
-
-=head1 SYNOPSIS
-
- use User::grent;
- $gr = getgrgid(0) or die "No group zero";
- if ( $gr->name eq 'wheel' && @{$gr->members} > 1 ) {
- print "gid zero name wheel, with other members";
- }
-
- use User::grent qw(:FIELDS;
- getgrgid(0) or die "No group zero";
- if ( $gr_name eq 'wheel' && @gr_members > 1 ) {
- print "gid zero name wheel, with other members";
- }
-
- $gr = getgr($whoever);
-
-=head1 DESCRIPTION
-
-This module's default exports override the core getgrent(), getgruid(),
-and getgrnam() functions, replacing them with versions that return
-"User::grent" objects. This object has methods that return the similarly
-named structure field name from the C's passwd structure from F<grp.h>;
-namely name, passwd, gid, and members (not mem). The first three
-return scalars, the last an array reference.
-
-You may also import all the structure fields directly into your namespace
-as regular variables using the :FIELDS import tag. (Note that this still
-overrides your core functions.) Access these fields as variables named
-with a preceding C<gr_>. Thus, C<$group_obj-E<gt>gid()> corresponds
-to $gr_gid if you import the fields. Array references are available as
-regular array variables, so C<@{ $group_obj-E<gt>members() }> would be
-simply @gr_members.
-
-The getpw() function is a simple front-end that forwards
-a numeric argument to getpwuid() and the rest to getpwnam().
-
-To access this functionality without the core overrides,
-pass the C<use> an empty import list, and then access
-function functions with their full qualified names.
-On the other hand, the built-ins are still available
-via the C<CORE::> pseudo-package.
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
diff --git a/contrib/perl5/lib/User/pwent.pm b/contrib/perl5/lib/User/pwent.pm
deleted file mode 100644
index 8c05926..0000000
--- a/contrib/perl5/lib/User/pwent.pm
+++ /dev/null
@@ -1,297 +0,0 @@
-package User::pwent;
-
-use 5.006;
-
-use strict;
-use warnings;
-
-use Config;
-use Carp;
-
-our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-BEGIN {
- use Exporter ();
- @EXPORT = qw(getpwent getpwuid getpwnam getpw);
- @EXPORT_OK = qw(
- pw_has
-
- $pw_name $pw_passwd $pw_uid $pw_gid
- $pw_gecos $pw_dir $pw_shell
- $pw_expire $pw_change $pw_class
- $pw_age
- $pw_quota $pw_comment
- $pw_expire
-
- );
- %EXPORT_TAGS = (
- FIELDS => [ grep(/^\$pw_/, @EXPORT_OK), @EXPORT ],
- ALL => [ @EXPORT, @EXPORT_OK ],
- );
-}
-use vars grep /^\$pw_/, @EXPORT_OK;
-
-#
-# XXX: these mean somebody hacked this module's source
-# without understanding the underlying assumptions.
-#
-my $IE = "[INTERNAL ERROR]";
-
-# Class::Struct forbids use of @ISA
-sub import { goto &Exporter::import }
-
-use Class::Struct qw(struct);
-struct 'User::pwent' => [
- name => '$', # pwent[0]
- passwd => '$', # pwent[1]
- uid => '$', # pwent[2]
- gid => '$', # pwent[3]
-
- # you'll only have one/none of these three
- change => '$', # pwent[4]
- age => '$', # pwent[4]
- quota => '$', # pwent[4]
-
- # you'll only have one/none of these two
- comment => '$', # pwent[5]
- class => '$', # pwent[5]
-
- # you might not have this one
- gecos => '$', # pwent[6]
-
- dir => '$', # pwent[7]
- shell => '$', # pwent[8]
-
- # you might not have this one
- expire => '$', # pwent[9]
-
-];
-
-
-# init our groks hash to be true if the built platform knew how
-# to do each struct pwd field that perl can ever under any circumstances
-# know about. we do not use /^pw_?/, but just the tails.
-sub _feature_init {
- our %Groks; # whether build system knew how to do this feature
- for my $feep ( qw{
- pwage pwchange pwclass pwcomment
- pwexpire pwgecos pwpasswd pwquota
- }
- )
- {
- my $short = $feep =~ /^pw(.*)/
- ? $1
- : do {
- # not cluck, as we know we called ourselves,
- # and a confession is probably imminent anyway
- warn("$IE $feep is a funny struct pwd field");
- $feep;
- };
-
- exists $Config{ "d_" . $feep }
- || confess("$IE Configure doesn't d_$feep");
- $Groks{$short} = defined $Config{ "d_" . $feep };
- }
- # assume that any that are left are always there
- for my $feep (grep /^\$pw_/s, @EXPORT_OK) {
- $feep =~ /^\$pw_(.*)/;
- $Groks{$1} = 1 unless defined $Groks{$1};
- }
-}
-
-# With arguments, reports whether one or more fields are all implemented
-# in the build machine's struct pwd pw_*. May be whitespace separated.
-# We do not use /^pw_?/, just the tails.
-#
-# Without arguments, returns the list of fields implemented on build
-# machine, space separated in scalar context.
-#
-# Takes exception to being asked whether this machine's struct pwd has
-# a field that Perl never knows how to provide under any circumstances.
-# If the module does this idiocy to itself, the explosion is noisier.
-#
-sub pw_has {
- our %Groks; # whether build system knew how to do this feature
- my $cando = 1;
- my $sploder = caller() ne __PACKAGE__
- ? \&croak
- : sub { confess("$IE @_") };
- if (@_ == 0) {
- my @valid = sort grep { $Groks{$_} } keys %Groks;
- return wantarray ? @valid : "@valid";
- }
- for my $feep (map { split } @_) {
- defined $Groks{$feep}
- || $sploder->("$feep is never a valid struct pwd field");
- $cando &&= $Groks{$feep};
- }
- return $cando;
-}
-
-sub _populate (@) {
- return unless @_;
- my $pwob = new();
-
- # Any that haven't been pw_had are assumed on "all" platforms of
- # course, this may not be so, but you can't get here otherwise,
- # since the underlying core call already took exception to your
- # impudence.
-
- $pw_name = $pwob->name ( $_[0] );
- $pw_passwd = $pwob->passwd ( $_[1] ) if pw_has("passwd");
- $pw_uid = $pwob->uid ( $_[2] );
- $pw_gid = $pwob->gid ( $_[3] );
-
- if (pw_has("change")) {
- $pw_change = $pwob->change ( $_[4] );
- }
- elsif (pw_has("age")) {
- $pw_age = $pwob->age ( $_[4] );
- }
- elsif (pw_has("quota")) {
- $pw_quota = $pwob->quota ( $_[4] );
- }
-
- if (pw_has("class")) {
- $pw_class = $pwob->class ( $_[5] );
- }
- elsif (pw_has("comment")) {
- $pw_comment = $pwob->comment( $_[5] );
- }
-
- $pw_gecos = $pwob->gecos ( $_[6] ) if pw_has("gecos");
-
- $pw_dir = $pwob->dir ( $_[7] );
- $pw_shell = $pwob->shell ( $_[8] );
-
- $pw_expire = $pwob->expire ( $_[9] ) if pw_has("expire");
-
- return $pwob;
-}
-
-sub getpwent ( ) { _populate(CORE::getpwent()) }
-sub getpwnam ($) { _populate(CORE::getpwnam(shift)) }
-sub getpwuid ($) { _populate(CORE::getpwuid(shift)) }
-sub getpw ($) { ($_[0] =~ /^\d+\z/s) ? &getpwuid : &getpwnam }
-
-_feature_init();
-
-1;
-__END__
-
-=head1 NAME
-
-User::pwent - by-name interface to Perl's built-in getpw*() functions
-
-=head1 SYNOPSIS
-
- use User::pwent;
- $pw = getpwnam('daemon') || die "No daemon user";
- if ( $pw->uid == 1 && $pw->dir =~ m#^/(bin|tmp)?\z#s ) {
- print "gid 1 on root dir";
- }
-
- $real_shell = $pw->shell || '/bin/sh';
-
- for (($fullname, $office, $workphone, $homephone) =
- split /\s*,\s*/, $pw->gecos)
- {
- s/&/ucfirst(lc($pw->name))/ge;
- }
-
- use User::pwent qw(:FIELDS);
- getpwnam('daemon') || die "No daemon user";
- if ( $pw_uid == 1 && $pw_dir =~ m#^/(bin|tmp)?\z#s ) {
- print "gid 1 on root dir";
- }
-
- $pw = getpw($whoever);
-
- use User::pwent qw/:DEFAULT pw_has/;
- if (pw_has(qw[gecos expire quota])) { .... }
- if (pw_has("name uid gid passwd")) { .... }
- print "Your struct pwd has: ", scalar pw_has(), "\n";
-
-=head1 DESCRIPTION
-
-This module's default exports override the core getpwent(), getpwuid(),
-and getpwnam() functions, replacing them with versions that return
-C<User::pwent> objects. This object has methods that return the
-similarly named structure field name from the C's passwd structure
-from F<pwd.h>, stripped of their leading "pw_" parts, namely C<name>,
-C<passwd>, C<uid>, C<gid>, C<change>, C<age>, C<quota>, C<comment>,
-C<class>, C<gecos>, C<dir>, C<shell>, and C<expire>. The C<passwd>,
-C<gecos>, and C<shell> fields are tainted when running in taint mode.
-
-You may also import all the structure fields directly into your
-namespace as regular variables using the :FIELDS import tag. (Note
-that this still overrides your core functions.) Access these fields
-as variables named with a preceding C<pw_> in front their method
-names. Thus, C<< $passwd_obj->shell >> corresponds to $pw_shell
-if you import the fields.
-
-The getpw() function is a simple front-end that forwards
-a numeric argument to getpwuid() and the rest to getpwnam().
-
-To access this functionality without the core overrides, pass the
-C<use> an empty import list, and then access function functions
-with their full qualified names. The built-ins are always still
-available via the C<CORE::> pseudo-package.
-
-=head2 System Specifics
-
-Perl believes that no machine ever has more than one of C<change>,
-C<age>, or C<quota> implemented, nor more than one of either
-C<comment> or C<class>. Some machines do not support C<expire>,
-C<gecos>, or allegedly, C<passwd>. You may call these methods
-no matter what machine you're on, but they return C<undef> if
-unimplemented.
-
-You may ask whether one of these was implemented on the system Perl
-was built on by asking the importable C<pw_has> function about them.
-This function returns true if all parameters are supported fields
-on the build platform, false if one or more were not, and raises
-an exception if you asked about a field that Perl never knows how
-to provide. Parameters may be in a space-separated string, or as
-separate arguments. If you pass no parameters, the function returns
-the list of C<struct pwd> fields supported by your build platform's
-C library, as a list in list context, or a space-separated string
-in scalar context. Note that just because your C library had
-a field doesn't necessarily mean that it's fully implemented on
-that system.
-
-Interpretation of the C<gecos> field varies between systems, but
-traditionally holds 4 comma-separated fields containing the user's
-full name, office location, work phone number, and home phone number.
-An C<&> in the gecos field should be replaced by the user's properly
-capitalized login C<name>. The C<shell> field, if blank, must be
-assumed to be F</bin/sh>. Perl does not do this for you. The
-C<passwd> is one-way hashed garble, not clear text, and may not be
-unhashed save by brute-force guessing. Secure systems use more a
-more secure hashing than DES. On systems supporting shadow password
-systems, Perl automatically returns the shadow password entry when
-called by a suitably empowered user, even if your underlying
-vendor-provided C library was too short-sighted to realize it should
-do this.
-
-See passwd(5) and getpwent(3) for details.
-
-=head1 NOTE
-
-While this class is currently implemented using the Class::Struct
-module to build a struct-like class, you shouldn't rely upon this.
-
-=head1 AUTHOR
-
-Tom Christiansen
-
-=head1 HISTORY
-
-=over
-
-=item March 18th, 2000
-
-Reworked internals to support better interface to dodgey fields
-than normal Perl function provides. Added pw_has() field. Improved
-documentation.
-
-=back
diff --git a/contrib/perl5/lib/Win32.pod b/contrib/perl5/lib/Win32.pod
deleted file mode 100644
index 842e484..0000000
--- a/contrib/perl5/lib/Win32.pod
+++ /dev/null
@@ -1,287 +0,0 @@
-=head1 NAME
-
-Win32 - Interfaces to some Win32 API Functions
-
-=head1 DESCRIPTION
-
-Perl on Win32 contains several functions to access Win32 APIs. Some
-are included in Perl itself (on Win32) and some are only available
-after explicitly requesting the Win32 module with:
-
- use Win32;
-
-The builtin functions are marked as [CORE] and the other ones
-as [EXT] in the following alphabetical listing. The C<Win32> module
-is not part of the Perl source distribution; it is distributed in
-the libwin32 bundle of Win32::* modules on CPAN. The module is
-already preinstalled in binary distributions like ActivePerl.
-
-=head2 Alphabetical Listing of Win32 Functions
-
-=over
-
-=item Win32::AbortSystemShutdown(MACHINE)
-
-[EXT] Aborts a system shutdown (started by the
-InitiateSystemShutdown function) on the specified MACHINE.
-
-=item Win32::BuildNumber()
-
-[CORE] Returns the ActivePerl build number. This function is
-only available in the ActivePerl binary distribution.
-
-=item Win32::CopyFile(FROM, TO, OVERWRITE)
-
-[CORE] The Win32::CopyFile() function copies an existing file to a new
-file. All file information like creation time and file attributes will
-be copied to the new file. However it will B<not> copy the security
-information. If the destination file already exists it will only be
-overwritten when the OVERWRITE parameter is true. But even this will
-not overwrite a read-only file; you have to unlink() it first
-yourself.
-
-=item Win32::DomainName()
-
-[CORE] Returns the name of the Microsoft Network domain that the
-owner of the current perl process is logged into. This function does
-B<not> work on Windows 9x.
-
-=item Win32::ExpandEnvironmentStrings(STRING)
-
-[EXT] Takes STRING and replaces all referenced environment variable
-names with their defined values. References to environment variables
-take the form C<%VariableName%>. Case is ignored when looking up the
-VariableName in the environment. If the variable is not found then the
-original C<%VariableName%> text is retained. Has the same effect
-as the following:
-
- $string =~ s/%([^%]*)%/$ENV{$1} || "%$1%"/eg
-
-=item Win32::FormatMessage(ERRORCODE)
-
-[CORE] Converts the supplied Win32 error number (e.g. returned by
-Win32::GetLastError()) to a descriptive string. Analogous to the
-perror() standard-C library function. Note that C<$^E> used
-in a string context has much the same effect.
-
- C:\> perl -e "$^E = 26; print $^E;"
- The specified disk or diskette cannot be accessed
-
-=item Win32::FsType()
-
-[CORE] Returns the name of the filesystem of the currently active
-drive (like 'FAT' or 'NTFS'). In list context it returns three values:
-(FSTYPE, FLAGS, MAXCOMPLEN). FSTYPE is the filesystem type as
-before. FLAGS is a combination of values of the following table:
-
- 0x00000001 supports case-sensitive filenames
- 0x00000002 preserves the case of filenames
- 0x00000004 supports Unicode in filenames
- 0x00000008 preserves and enforces ACLs
- 0x00000010 supports file-based compression
- 0x00000020 supports disk quotas
- 0x00000040 supports sparse files
- 0x00000080 supports reparse points
- 0x00000100 supports remote storage
- 0x00008000 is a compressed volume (e.g. DoubleSpace)
- 0x00010000 supports object identifiers
- 0x00020000 supports the Encrypted File System (EFS)
-
-MAXCOMPLEN is the maximum length of a filename component (the part
-between two backslashes) on this file system.
-
-=item Win32::FreeLibrary(HANDLE)
-
-[EXT] Unloads a previously loaded dynamic-link library. The HANDLE is
-no longer valid after this call. See L<LoadLibrary|Win32::LoadLibrary(LIBNAME)>
-for information on dynamically loading a library.
-
-=item Win32::GetArchName()
-
-[EXT] Use of this function is deprecated. It is equivalent with
-$ENV{PROCESSOR_ARCHITECTURE}. This might not work on Win9X.
-
-=item Win32::GetChipName()
-
-[EXT] Returns the processor type: 386, 486 or 586 for Intel processors,
-21064 for the Alpha chip.
-
-=item Win32::GetCwd()
-
-[CORE] Returns the current active drive and directory. This function
-does not return a UNC path, since the functionality required for such
-a feature is not available under Windows 95.
-
-=item Win32::GetFullPathName(FILENAME)
-
-[CORE] GetFullPathName combines the FILENAME with the current drive
-and directory name and returns a fully qualified (aka, absolute)
-path name. In list context it returns two elements: (PATH, FILE) where
-PATH is the complete pathname component (including trailing backslash)
-and FILE is just the filename part. Note that no attempt is made to
-convert 8.3 components in the supplied FILENAME to longnames or
-vice-versa. Compare with Win32::GetShortPathName and
-Win32::GetLongPathName.
-
-This function has been added for Perl 5.6.
-
-=item Win32::GetLastError()
-
-[CORE] Returns the last error value generated by a call to a Win32 API
-function. Note that C<$^E> used in a numeric context amounts to the
-same value.
-
-=item Win32::GetLongPathName(PATHNAME)
-
-[CORE] Returns a representation of PATHNAME composed of longname
-components (if any). The result may not necessarily be longer
-than PATHNAME. No attempt is made to convert PATHNAME to the
-absolute path. Compare with Win32::GetShortPathName and
-Win32::GetFullPathName.
-
-This function has been added for Perl 5.6.
-
-=item Win32::GetNextAvailDrive()
-
-[CORE] Returns a string in the form of "<d>:" where <d> is the first
-available drive letter.
-
-=item Win32::GetOSVersion()
-
-[CORE] Returns the array (STRING, MAJOR, MINOR, BUILD, ID), where
-the elements are, respectively: An arbitrary descriptive string, the
-major version number of the operating system, the minor version
-number, the build number, and a digit indicating the actual operating
-system. For ID, the values are 0 for Win32s, 1 for Windows 9X and 2
-for Windows NT. In scalar context it returns just the ID.
-
-=item Win32::GetShortPathName(PATHNAME)
-
-[CORE] Returns a representation of PATHNAME composed only of
-short (8.3) path components. The result may not necessarily be
-shorter than PATHNAME. Compare with Win32::GetFullPathName and
-Win32::GetLongPathName.
-
-=item Win32::GetProcAddress(INSTANCE, PROCNAME)
-
-[EXT] Returns the address of a function inside a loaded library. The
-information about what you can do with this address has been lost in
-the mist of time. Use the Win32::API module instead of this deprecated
-function.
-
-=item Win32::GetTickCount()
-
-[CORE] Returns the number of milliseconds elapsed since the last
-system boot. Resolution is limited to system timer ticks (about 10ms
-on WinNT and 55ms on Win9X).
-
-=item Win32::InitiateSystemShutdown
-
-(MACHINE, MESSAGE, TIMEOUT, FORCECLOSE, REBOOT)
-
-[EXT] Shutsdown the specified MACHINE, notifying users with the
-supplied MESSAGE, within the specified TIMEOUT interval. Forces
-closing of all documents without prompting the user if FORCECLOSE is
-true, and reboots the machine if REBOOT is true. This function works
-only on WinNT.
-
-=item Win32::IsWinNT()
-
-[CORE] Returns non zero if the Win32 subsystem is Windows NT.
-
-=item Win32::IsWin95()
-
-[CORE] Returns non zero if the Win32 subsystem is Windows 95.
-
-=item Win32::LoadLibrary(LIBNAME)
-
-[EXT] Loads a dynamic link library into memory and returns its module
-handle. This handle can be used with Win32::GetProcAddress and
-Win32::FreeLibrary. This function is deprecated. Use the Win32::API
-module instead.
-
-=item Win32::LoginName()
-
-[CORE] Returns the username of the owner of the current perl process.
-
-=item Win32::LookupAccountName(SYSTEM, ACCOUNT, DOMAIN, SID, SIDTYPE)
-
-[EXT] Looks up ACCOUNT on SYSTEM and returns the domain name the SID and
-the SID type.
-
-=item Win32::LookupAccountSID(SYSTEM, SID, ACCOUNT, DOMAIN, SIDTYPE)
-
-[EXT] Looks up SID on SYSTEM and returns the account name, domain name,
-and the SID type.
-
-=item Win32::MsgBox(MESSAGE [, FLAGS [, TITLE]])
-
-[EXT] Create a dialogbox containing MESSAGE. FLAGS specifies the
-required icon and buttons according to the following table:
-
- 0 = OK
- 1 = OK and Cancel
- 2 = Abort, Retry, and Ignore
- 3 = Yes, No and Cancel
- 4 = Yes and No
- 5 = Retry and Cancel
-
- MB_ICONSTOP "X" in a red circle
- MB_ICONQUESTION question mark in a bubble
- MB_ICONEXCLAMATION exclamation mark in a yellow triangle
- MB_ICONINFORMATION "i" in a bubble
-
-TITLE specifies an optional window title. The default is "Perl".
-
-The function returns the menu id of the selected push button:
-
- 0 Error
-
- 1 OK
- 2 Cancel
- 3 Abort
- 4 Retry
- 5 Ignore
- 6 Yes
- 7 No
-
-=item Win32::NodeName()
-
-[CORE] Returns the Microsoft Network node-name of the current machine.
-
-=item Win32::RegisterServer(LIBRARYNAME)
-
-[EXT] Loads the DLL LIBRARYNAME and calls the function DllRegisterServer.
-
-=item Win32::SetCwd(NEWDIRECTORY)
-
-[CORE] Sets the current active drive and directory. This function does not
-work with UNC paths, since the functionality required to required for
-such a feature is not available under Windows 95.
-
-=item Win32::SetLastError(ERROR)
-
-[CORE] Sets the value of the last error encountered to ERROR. This is
-that value that will be returned by the Win32::GetLastError()
-function. This functions has been added for Perl 5.6.
-
-=item Win32::Sleep(TIME)
-
-[CORE] Pauses for TIME milliseconds. The timeslices are made available
-to other processes and threads.
-
-=item Win32::Spawn(COMMAND, ARGS, PID)
-
-[CORE] Spawns a new process using the supplied COMMAND, passing in
-arguments in the string ARGS. The pid of the new process is stored in
-PID. This function is deprecated. Please use the Win32::Process module
-instead.
-
-=item Win32::UnregisterServer(LIBRARYNAME)
-
-[EXT] Loads the DLL LIBRARYNAME and calls the function
-DllUnregisterServer.
-
-=back
-
-=cut
diff --git a/contrib/perl5/lib/abbrev.pl b/contrib/perl5/lib/abbrev.pl
deleted file mode 100644
index c505a6f..0000000
--- a/contrib/perl5/lib/abbrev.pl
+++ /dev/null
@@ -1,43 +0,0 @@
-;# Usage:
-;# %foo = ();
-;# &abbrev(*foo,LIST);
-;# ...
-;# $long = $foo{$short};
-
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Text::Abbrev
-#
-
-package abbrev;
-
-sub main'abbrev {
- local(*domain) = @_;
- shift(@_);
- @cmp = @_;
- local($[) = 0;
- foreach $name (@_) {
- @extra = split(//,$name);
- $abbrev = shift(@extra);
- $len = 1;
- foreach $cmp (@cmp) {
- next if $cmp eq $name;
- while (@extra && substr($cmp,0,$len) eq $abbrev) {
- $abbrev .= shift(@extra);
- ++$len;
- }
- }
- $domain{$abbrev} = $name;
- while ($#extra >= 0) {
- $abbrev .= shift(@extra);
- $domain{$abbrev} = $name;
- }
- }
-}
-
-1;
diff --git a/contrib/perl5/lib/assert.pl b/contrib/perl5/lib/assert.pl
deleted file mode 100644
index 4c9ebf2..0000000
--- a/contrib/perl5/lib/assert.pl
+++ /dev/null
@@ -1,55 +0,0 @@
-# assert.pl
-# tchrist@convex.com (Tom Christiansen)
-#
-# Usage:
-#
-# &assert('@x > @y');
-# &assert('$var > 10', $var, $othervar, @various_info);
-#
-# That is, if the first expression evals false, we blow up. The
-# rest of the args, if any, are nice to know because they will
-# be printed out by &panic, which is just the stack-backtrace
-# routine shamelessly borrowed from the perl debugger.
-
-sub assert {
- &panic("ASSERTION BOTCHED: $_[$[]",$@) unless eval $_[$[];
-}
-
-sub panic {
- package DB;
-
- select(STDERR);
-
- print "\npanic: @_\n";
-
- exit 1 if $] <= 4.003; # caller broken
-
- # stack traceback gratefully borrowed from perl debugger
-
- local $_;
- my $i;
- my ($p,$f,$l,$s,$h,$a,@a,@frames);
- for ($i = 0; ($p,$f,$l,$s,$h,$w) = caller($i); $i++) {
- @a = @args;
- for (@a) {
- if (/^StB\000/ && length($_) == length($_main{'_main'})) {
- $_ = sprintf("%s",$_);
- }
- else {
- s/'/\\'/g;
- s/([^\0]*)/'$1'/ unless /^-?[\d.]+$/;
- s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
- s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
- }
- }
- $w = $w ? '@ = ' : '$ = ';
- $a = $h ? '(' . join(', ', @a) . ')' : '';
- push(@frames, "$w&$s$a from file $f line $l\n");
- }
- for ($i=0; $i <= $#frames; $i++) {
- print $frames[$i];
- }
- exit 1;
-}
-
-1;
diff --git a/contrib/perl5/lib/attributes.pm b/contrib/perl5/lib/attributes.pm
deleted file mode 100644
index f111645..0000000
--- a/contrib/perl5/lib/attributes.pm
+++ /dev/null
@@ -1,399 +0,0 @@
-package attributes;
-
-$VERSION = 0.03;
-
-@EXPORT_OK = qw(get reftype);
-@EXPORT = ();
-%EXPORT_TAGS = (ALL => [@EXPORT, @EXPORT_OK]);
-
-use strict;
-
-sub croak {
- require Carp;
- goto &Carp::croak;
-}
-
-sub carp {
- require Carp;
- goto &Carp::carp;
-}
-
-## forward declaration(s) rather than wrapping the bootstrap call in BEGIN{}
-#sub reftype ($) ;
-#sub _fetch_attrs ($) ;
-#sub _guess_stash ($) ;
-#sub _modify_attrs ;
-#sub _warn_reserved () ;
-#
-# The extra trips through newATTRSUB in the interpreter wipe out any savings
-# from avoiding the BEGIN block. Just do the bootstrap now.
-BEGIN { bootstrap }
-
-sub import {
- @_ > 2 && ref $_[2] or do {
- require Exporter;
- goto &Exporter::import;
- };
- my (undef,$home_stash,$svref,@attrs) = @_;
-
- my $svtype = uc reftype($svref);
- my $pkgmeth;
- $pkgmeth = UNIVERSAL::can($home_stash, "MODIFY_${svtype}_ATTRIBUTES")
- if defined $home_stash && $home_stash ne '';
- my @badattrs;
- if ($pkgmeth) {
- my @pkgattrs = _modify_attrs($svref, @attrs);
- @badattrs = $pkgmeth->($home_stash, $svref, @attrs);
- if (!@badattrs && @pkgattrs) {
- return unless _warn_reserved;
- @pkgattrs = grep { m/\A[[:lower:]]+(?:\z|\()/ } @pkgattrs;
- if (@pkgattrs) {
- for my $attr (@pkgattrs) {
- $attr =~ s/\(.+\z//s;
- }
- my $s = ((@pkgattrs == 1) ? '' : 's');
- carp "$svtype package attribute$s " .
- "may clash with future reserved word$s: " .
- join(' : ' , @pkgattrs);
- }
- }
- }
- else {
- @badattrs = _modify_attrs($svref, @attrs);
- }
- if (@badattrs) {
- croak "Invalid $svtype attribute" .
- (( @badattrs == 1 ) ? '' : 's') .
- ": " .
- join(' : ', @badattrs);
- }
-}
-
-sub get ($) {
- @_ == 1 && ref $_[0] or
- croak 'Usage: '.__PACKAGE__.'::get $ref';
- my $svref = shift;
- my $svtype = uc reftype $svref;
- my $stash = _guess_stash $svref;
- $stash = caller unless defined $stash;
- my $pkgmeth;
- $pkgmeth = UNIVERSAL::can($stash, "FETCH_${svtype}_ATTRIBUTES")
- if defined $stash && $stash ne '';
- return $pkgmeth ?
- (_fetch_attrs($svref), $pkgmeth->($stash, $svref)) :
- (_fetch_attrs($svref))
- ;
-}
-
-sub require_version { goto &UNIVERSAL::VERSION }
-
-1;
-__END__
-#The POD goes here
-
-=head1 NAME
-
-attributes - get/set subroutine or variable attributes
-
-=head1 SYNOPSIS
-
- sub foo : method ;
- my ($x,@y,%z) : Bent ;
- my $s = sub : method { ... };
-
- use attributes (); # optional, to get subroutine declarations
- my @attrlist = attributes::get(\&foo);
-
- use attributes 'get'; # import the attributes::get subroutine
- my @attrlist = get \&foo;
-
-=head1 DESCRIPTION
-
-Subroutine declarations and definitions may optionally have attribute lists
-associated with them. (Variable C<my> declarations also may, but see the
-warning below.) Perl handles these declarations by passing some information
-about the call site and the thing being declared along with the attribute
-list to this module. In particular, the first example above is equivalent to
-the following:
-
- use attributes __PACKAGE__, \&foo, 'method';
-
-The second example in the synopsis does something equivalent to this:
-
- use attributes __PACKAGE__, \$x, 'Bent';
- use attributes __PACKAGE__, \@y, 'Bent';
- use attributes __PACKAGE__, \%z, 'Bent';
-
-Yes, that's three invocations.
-
-B<WARNING>: attribute declarations for variables are an I<experimental>
-feature. The semantics of such declarations could change or be removed
-in future versions. They are present for purposes of experimentation
-with what the semantics ought to be. Do not rely on the current
-implementation of this feature.
-
-There are only a few attributes currently handled by Perl itself (or
-directly by this module, depending on how you look at it.) However,
-package-specific attributes are allowed by an extension mechanism.
-(See L<"Package-specific Attribute Handling"> below.)
-
-The setting of attributes happens at compile time. An attempt to set
-an unrecognized attribute is a fatal error. (The error is trappable, but
-it still stops the compilation within that C<eval>.) Setting an attribute
-with a name that's all lowercase letters that's not a built-in attribute
-(such as "foo")
-will result in a warning with B<-w> or C<use warnings 'reserved'>.
-
-=head2 Built-in Attributes
-
-The following are the built-in attributes for subroutines:
-
-=over 4
-
-=item locked
-
-Setting this attribute is only meaningful when the subroutine or
-method is to be called by multiple threads. When set on a method
-subroutine (i.e., one marked with the B<method> attribute below),
-Perl ensures that any invocation of it implicitly locks its first
-argument before execution. When set on a non-method subroutine,
-Perl ensures that a lock is taken on the subroutine itself before
-execution. The semantics of the lock are exactly those of one
-explicitly taken with the C<lock> operator immediately after the
-subroutine is entered.
-
-=item method
-
-Indicates that the referenced subroutine is a method.
-This has a meaning when taken together with the B<locked> attribute,
-as described there. It also means that a subroutine so marked
-will not trigger the "Ambiguous call resolved as CORE::%s" warning.
-
-=item lvalue
-
-Indicates that the referenced subroutine is a valid lvalue and can
-be assigned to. The subroutine must return a modifiable value such
-as a scalar variable, as described in L<perlsub>.
-
-=back
-
-There are no built-in attributes for anything other than subroutines.
-
-=head2 Available Subroutines
-
-The following subroutines are available for general use once this module
-has been loaded:
-
-=over 4
-
-=item get
-
-This routine expects a single parameter--a reference to a
-subroutine or variable. It returns a list of attributes, which may be
-empty. If passed invalid arguments, it uses die() (via L<Carp::croak|Carp>)
-to raise a fatal exception. If it can find an appropriate package name
-for a class method lookup, it will include the results from a
-C<FETCH_I<type>_ATTRIBUTES> call in its return list, as described in
-L<"Package-specific Attribute Handling"> below.
-Otherwise, only L<built-in attributes|"Built-in Attributes"> will be returned.
-
-=item reftype
-
-This routine expects a single parameter--a reference to a subroutine or
-variable. It returns the built-in type of the referenced variable,
-ignoring any package into which it might have been blessed.
-This can be useful for determining the I<type> value which forms part of
-the method names described in L<"Package-specific Attribute Handling"> below.
-
-=back
-
-Note that these routines are I<not> exported by default.
-
-=head2 Package-specific Attribute Handling
-
-B<WARNING>: the mechanisms described here are still experimental. Do not
-rely on the current implementation. In particular, there is no provision
-for applying package attributes to 'cloned' copies of subroutines used as
-closures. (See L<perlref/"Making References"> for information on closures.)
-Package-specific attribute handling may change incompatibly in a future
-release.
-
-When an attribute list is present in a declaration, a check is made to see
-whether an attribute 'modify' handler is present in the appropriate package
-(or its @ISA inheritance tree). Similarly, when C<attributes::get> is
-called on a valid reference, a check is made for an appropriate attribute
-'fetch' handler. See L<"EXAMPLES"> to see how the "appropriate package"
-determination works.
-
-The handler names are based on the underlying type of the variable being
-declared or of the reference passed. Because these attributes are
-associated with subroutine or variable declarations, this deliberately
-ignores any possibility of being blessed into some package. Thus, a
-subroutine declaration uses "CODE" as its I<type>, and even a blessed
-hash reference uses "HASH" as its I<type>.
-
-The class methods invoked for modifying and fetching are these:
-
-=over 4
-
-=item FETCH_I<type>_ATTRIBUTES
-
-This method receives a single argument, which is a reference to the
-variable or subroutine for which package-defined attributes are desired.
-The expected return value is a list of associated attributes.
-This list may be empty.
-
-=item MODIFY_I<type>_ATTRIBUTES
-
-This method is called with two fixed arguments, followed by the list of
-attributes from the relevant declaration. The two fixed arguments are
-the relevant package name and a reference to the declared subroutine or
-variable. The expected return value as a list of attributes which were
-not recognized by this handler. Note that this allows for a derived class
-to delegate a call to its base class, and then only examine the attributes
-which the base class didn't already handle for it.
-
-The call to this method is currently made I<during> the processing of the
-declaration. In particular, this means that a subroutine reference will
-probably be for an undefined subroutine, even if this declaration is
-actually part of the definition.
-
-=back
-
-Calling C<attributes::get()> from within the scope of a null package
-declaration C<package ;> for an unblessed variable reference will
-not provide any starting package name for the 'fetch' method lookup.
-Thus, this circumstance will not result in a method call for package-defined
-attributes. A named subroutine knows to which symbol table entry it belongs
-(or originally belonged), and it will use the corresponding package.
-An anonymous subroutine knows the package name into which it was compiled
-(unless it was also compiled with a null package declaration), and so it
-will use that package name.
-
-=head2 Syntax of Attribute Lists
-
-An attribute list is a sequence of attribute specifications, separated by
-whitespace or a colon (with optional whitespace).
-Each attribute specification is a simple
-name, optionally followed by a parenthesised parameter list.
-If such a parameter list is present, it is scanned past as for the rules
-for the C<q()> operator. (See L<perlop/"Quote and Quote-like Operators">.)
-The parameter list is passed as it was found, however, and not as per C<q()>.
-
-Some examples of syntactically valid attribute lists:
-
- switch(10,foo(7,3)) : expensive
- Ugly('\(") :Bad
- _5x5
- locked method
-
-Some examples of syntactically invalid attribute lists (with annotation):
-
- switch(10,foo() # ()-string not balanced
- Ugly('(') # ()-string not balanced
- 5x5 # "5x5" not a valid identifier
- Y2::north # "Y2::north" not a simple identifier
- foo + bar # "+" neither a colon nor whitespace
-
-=head1 EXPORTS
-
-=head2 Default exports
-
-None.
-
-=head2 Available exports
-
-The routines C<get> and C<reftype> are exportable.
-
-=head2 Export tags defined
-
-The C<:ALL> tag will get all of the above exports.
-
-=head1 EXAMPLES
-
-Here are some samples of syntactically valid declarations, with annotation
-as to how they resolve internally into C<use attributes> invocations by
-perl. These examples are primarily useful to see how the "appropriate
-package" is found for the possible method lookups for package-defined
-attributes.
-
-=over 4
-
-=item 1.
-
-Code:
-
- package Canine;
- package Dog;
- my Canine $spot : Watchful ;
-
-Effect:
-
- use attributes Canine => \$spot, "Watchful";
-
-=item 2.
-
-Code:
-
- package Felis;
- my $cat : Nervous;
-
-Effect:
-
- use attributes Felis => \$cat, "Nervous";
-
-=item 3.
-
-Code:
-
- package X;
- sub foo : locked ;
-
-Effect:
-
- use attributes X => \&foo, "locked";
-
-=item 4.
-
-Code:
-
- package X;
- sub Y::x : locked { 1 }
-
-Effect:
-
- use attributes Y => \&Y::x, "locked";
-
-=item 5.
-
-Code:
-
- package X;
- sub foo { 1 }
-
- package Y;
- BEGIN { *bar = \&X::foo; }
-
- package Z;
- sub Y::bar : locked ;
-
-Effect:
-
- use attributes X => \&X::foo, "locked";
-
-=back
-
-This last example is purely for purposes of completeness. You should not
-be trying to mess with the attributes of something in a package that's
-not your own.
-
-=head1 SEE ALSO
-
-L<perlsub/"Private Variables via my()"> and
-L<perlsub/"Subroutine Attributes"> for details on the basic declarations;
-L<attrs> for the obsolescent form of subroutine attribute specification
-which this module replaces;
-L<perlfunc/use> for details on the normal invocation mechanism.
-
-=cut
-
diff --git a/contrib/perl5/lib/autouse.pm b/contrib/perl5/lib/autouse.pm
deleted file mode 100644
index 179c382..0000000
--- a/contrib/perl5/lib/autouse.pm
+++ /dev/null
@@ -1,157 +0,0 @@
-package autouse;
-
-#use strict; # debugging only
-use 5.003_90; # ->can, for my $var
-
-$autouse::VERSION = '1.02';
-
-$autouse::DEBUG ||= 0;
-
-sub vet_import ($);
-
-sub croak {
- require Carp;
- Carp::croak(@_);
-}
-
-sub import {
- my $class = @_ ? shift : 'autouse';
- croak "usage: use $class MODULE [,SUBS...]" unless @_;
- my $module = shift;
-
- (my $pm = $module) =~ s{::}{/}g;
- $pm .= '.pm';
- if (exists $INC{$pm}) {
- vet_import $module;
- local $Exporter::ExportLevel = $Exporter::ExportLevel + 1;
- # $Exporter::Verbose = 1;
- return $module->import(map { (my $f = $_) =~ s/\(.*?\)$//; $f } @_);
- }
-
- # It is not loaded: need to do real work.
- my $callpkg = caller(0);
- print "autouse called from $callpkg\n" if $autouse::DEBUG;
-
- my $index;
- for my $f (@_) {
- my $proto;
- $proto = $1 if (my $func = $f) =~ s/\((.*)\)$//;
-
- my $closure_import_func = $func; # Full name
- my $closure_func = $func; # Name inside package
- my $index = index($func, '::');
- if ($index == -1) {
- $closure_import_func = "${callpkg}::$func";
- } else {
- $closure_func = substr $func, $index + 2;
- croak "autouse into different package attempted"
- unless substr($func, 0, $index) eq $module;
- }
-
- my $load_sub = sub {
- unless ($INC{$pm}) {
- eval {require $pm};
- die if $@;
- vet_import $module;
- }
- *$closure_import_func = \&{"${module}::$closure_func"};
- print "autousing $module; "
- ."imported $closure_func as $closure_import_func\n"
- if $autouse::DEBUG;
- goto &$closure_import_func;
- };
-
- if (defined $proto) {
- *$closure_import_func = eval "sub ($proto) { &\$load_sub }";
- } else {
- *$closure_import_func = $load_sub;
- }
- }
-}
-
-sub vet_import ($) {
- my $module = shift;
- if (my $import = $module->can('import')) {
- croak "autoused module has unique import() method"
- unless defined(&Exporter::import)
- && $import == \&Exporter::import;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-autouse - postpone load of modules until a function is used
-
-=head1 SYNOPSIS
-
- use autouse 'Carp' => qw(carp croak);
- carp "this carp was predeclared and autoused ";
-
-=head1 DESCRIPTION
-
-If the module C<Module> is already loaded, then the declaration
-
- use autouse 'Module' => qw(func1 func2($;$) Module::func3);
-
-is equivalent to
-
- use Module qw(func1 func2);
-
-if C<Module> defines func2() with prototype C<($;$)>, and func1() and
-func3() have no prototypes. (At least if C<Module> uses C<Exporter>'s
-C<import>, otherwise it is a fatal error.)
-
-If the module C<Module> is not loaded yet, then the above declaration
-declares functions func1() and func2() in the current package, and
-declares a function Module::func3(). When these functions are called,
-they load the package C<Module> if needed, and substitute themselves
-with the correct definitions.
-
-=head1 WARNING
-
-Using C<autouse> will move important steps of your program's execution
-from compile time to runtime. This can
-
-=over
-
-=item *
-
-Break the execution of your program if the module you C<autouse>d has
-some initialization which it expects to be done early.
-
-=item *
-
-hide bugs in your code since important checks (like correctness of
-prototypes) is moved from compile time to runtime. In particular, if
-the prototype you specified on C<autouse> line is wrong, you will not
-find it out until the corresponding function is executed. This will be
-very unfortunate for functions which are not always called (note that
-for such functions C<autouse>ing gives biggest win, for a workaround
-see below).
-
-=back
-
-To alleviate the second problem (partially) it is advised to write
-your scripts like this:
-
- use Module;
- use autouse Module => qw(carp($) croak(&$));
- carp "this carp was predeclared and autoused ";
-
-The first line ensures that the errors in your argument specification
-are found early. When you ship your application you should comment
-out the first line, since it makes the second one useless.
-
-=head1 AUTHOR
-
-Ilya Zakharevich (ilya@math.ohio-state.edu)
-
-=head1 SEE ALSO
-
-perl(1).
-
-=cut
diff --git a/contrib/perl5/lib/base.pm b/contrib/perl5/lib/base.pm
deleted file mode 100644
index d055129..0000000
--- a/contrib/perl5/lib/base.pm
+++ /dev/null
@@ -1,92 +0,0 @@
-=head1 NAME
-
-base - Establish IS-A relationship with base class at compile time
-
-=head1 SYNOPSIS
-
- package Baz;
- use base qw(Foo Bar);
-
-=head1 DESCRIPTION
-
-Roughly similar in effect to
-
- BEGIN {
- require Foo;
- require Bar;
- push @ISA, qw(Foo Bar);
- }
-
-Will also initialize the %FIELDS hash if one of the base classes has
-it. Multiple inheritance of %FIELDS is not supported. The 'base'
-pragma will croak if multiple base classes have a %FIELDS hash. See
-L<fields> for a description of this feature.
-
-When strict 'vars' is in scope I<base> also let you assign to @ISA
-without having to declare @ISA with the 'vars' pragma first.
-
-If any of the base classes are not loaded yet, I<base> silently
-C<require>s them. Whether to C<require> a base class package is
-determined by the absence of a global $VERSION in the base package.
-If $VERSION is not detected even after loading it, <base> will
-define $VERSION in the base package, setting it to the string
-C<-1, set by base.pm>.
-
-=head1 HISTORY
-
-This module was introduced with Perl 5.004_04.
-
-=head1 SEE ALSO
-
-L<fields>
-
-=cut
-
-package base;
-
-use 5.005_64;
-our $VERSION = "1.01";
-
-sub import {
- my $class = shift;
- my $fields_base;
- my $pkg = caller(0);
-
- foreach my $base (@_) {
- next if $pkg->isa($base);
- push @{"$pkg\::ISA"}, $base;
- unless (exists ${"$base\::"}{VERSION}) {
- eval "require $base";
- # Only ignore "Can't locate" errors from our eval require.
- # Other fatal errors (syntax etc) must be reported.
- die if $@ && $@ !~ /^Can't locate .*? at \(eval /;
- unless (%{"$base\::"}) {
- require Carp;
- Carp::croak("Base class package \"$base\" is empty.\n",
- "\t(Perhaps you need to 'use' the module ",
- "which defines that package first.)");
- }
- ${"$base\::VERSION"} = "-1, set by base.pm"
- unless exists ${"$base\::"}{VERSION};
- }
-
- # A simple test like (defined %{"$base\::FIELDS"}) will
- # sometimes produce typo warnings because it would create
- # the hash if it was not present before.
- my $fglob;
- if ($fglob = ${"$base\::"}{"FIELDS"} and *$fglob{HASH}) {
- if ($fields_base) {
- require Carp;
- Carp::croak("Can't multiply inherit %FIELDS");
- } else {
- $fields_base = $base;
- }
- }
- }
- if ($fields_base) {
- require fields;
- fields::inherit($pkg, $fields_base);
- }
-}
-
-1;
diff --git a/contrib/perl5/lib/bigfloat.pl b/contrib/perl5/lib/bigfloat.pl
deleted file mode 100644
index 8c28abd..0000000
--- a/contrib/perl5/lib/bigfloat.pl
+++ /dev/null
@@ -1,254 +0,0 @@
-package bigfloat;
-require "bigint.pl";
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Math::BigFloat
-#
-# Arbitrary length float math package
-#
-# by Mark Biggar
-#
-# number format
-# canonical strings have the form /[+-]\d+E[+-]\d+/
-# Input values can have embedded whitespace
-# Error returns
-# 'NaN' An input parameter was "Not a Number" or
-# divide by zero or sqrt of negative number
-# Division is computed to
-# max($div_scale,length(dividend)+length(divisor))
-# digits by default.
-# Also used for default sqrt scale
-
-$div_scale = 40;
-
-# Rounding modes one of 'even', 'odd', '+inf', '-inf', 'zero' or 'trunc'.
-
-$rnd_mode = 'even';
-
-# bigfloat routines
-#
-# fadd(NSTR, NSTR) return NSTR addition
-# fsub(NSTR, NSTR) return NSTR subtraction
-# fmul(NSTR, NSTR) return NSTR multiplication
-# fdiv(NSTR, NSTR[,SCALE]) returns NSTR division to SCALE places
-# fneg(NSTR) return NSTR negation
-# fabs(NSTR) return NSTR absolute value
-# fcmp(NSTR,NSTR) return CODE compare undef,<0,=0,>0
-# fround(NSTR, SCALE) return NSTR round to SCALE digits
-# ffround(NSTR, SCALE) return NSTR round at SCALEth place
-# fnorm(NSTR) return (NSTR) normalize
-# fsqrt(NSTR[, SCALE]) return NSTR sqrt to SCALE places
-
-# Convert a number to canonical string form.
-# Takes something that looks like a number and converts it to
-# the form /^[+-]\d+E[+-]\d+$/.
-sub main'fnorm { #(string) return fnum_str
- local($_) = @_;
- s/\s+//g; # strip white space
- if (/^([+-]?)(\d*)(\.(\d*))?([Ee]([+-]?\d+))?$/
- && ($2 ne '' || defined($4))) {
- my $x = defined($4) ? $4 : '';
- &norm(($1 ? "$1$2$x" : "+$2$x"), (($x ne '') ? $6-length($x) : $6));
- } else {
- 'NaN';
- }
-}
-
-# normalize number -- for internal use
-sub norm { #(mantissa, exponent) return fnum_str
- local($_, $exp) = @_;
- if ($_ eq 'NaN') {
- 'NaN';
- } else {
- s/^([+-])0+/$1/; # strip leading zeros
- if (length($_) == 1) {
- '+0E+0';
- } else {
- $exp += length($1) if (s/(0+)$//); # strip trailing zeros
- sprintf("%sE%+ld", $_, $exp);
- }
- }
-}
-
-# negation
-sub main'fneg { #(fnum_str) return fnum_str
- local($_) = &'fnorm($_[$[]);
- vec($_,0,8) ^= ord('+') ^ ord('-') unless $_ eq '+0E+0'; # flip sign
- if ( ord("\t") == 9 ) { # ascii
- s/^H/N/;
- }
- else { # ebcdic character set
- s/\373/N/;
- }
- $_;
-}
-
-# absolute value
-sub main'fabs { #(fnum_str) return fnum_str
- local($_) = &'fnorm($_[$[]);
- s/^-/+/; # mash sign
- $_;
-}
-
-# multiplication
-sub main'fmul { #(fnum_str, fnum_str) return fnum_str
- local($x,$y) = (&'fnorm($_[$[]),&'fnorm($_[$[+1]));
- if ($x eq 'NaN' || $y eq 'NaN') {
- 'NaN';
- } else {
- local($xm,$xe) = split('E',$x);
- local($ym,$ye) = split('E',$y);
- &norm(&'bmul($xm,$ym),$xe+$ye);
- }
-}
-
-# addition
-sub main'fadd { #(fnum_str, fnum_str) return fnum_str
- local($x,$y) = (&'fnorm($_[$[]),&'fnorm($_[$[+1]));
- if ($x eq 'NaN' || $y eq 'NaN') {
- 'NaN';
- } else {
- local($xm,$xe) = split('E',$x);
- local($ym,$ye) = split('E',$y);
- ($xm,$xe,$ym,$ye) = ($ym,$ye,$xm,$xe) if ($xe < $ye);
- &norm(&'badd($ym,$xm.('0' x ($xe-$ye))),$ye);
- }
-}
-
-# subtraction
-sub main'fsub { #(fnum_str, fnum_str) return fnum_str
- &'fadd($_[$[],&'fneg($_[$[+1]));
-}
-
-# division
-# args are dividend, divisor, scale (optional)
-# result has at most max(scale, length(dividend), length(divisor)) digits
-sub main'fdiv #(fnum_str, fnum_str[,scale]) return fnum_str
-{
- local($x,$y,$scale) = (&'fnorm($_[$[]),&'fnorm($_[$[+1]),$_[$[+2]);
- if ($x eq 'NaN' || $y eq 'NaN' || $y eq '+0E+0') {
- 'NaN';
- } else {
- local($xm,$xe) = split('E',$x);
- local($ym,$ye) = split('E',$y);
- $scale = $div_scale if (!$scale);
- $scale = length($xm)-1 if (length($xm)-1 > $scale);
- $scale = length($ym)-1 if (length($ym)-1 > $scale);
- $scale = $scale + length($ym) - length($xm);
- &norm(&round(&'bdiv($xm.('0' x $scale),$ym),&'babs($ym)),
- $xe-$ye-$scale);
- }
-}
-
-# round int $q based on fraction $r/$base using $rnd_mode
-sub round { #(int_str, int_str, int_str) return int_str
- local($q,$r,$base) = @_;
- if ($q eq 'NaN' || $r eq 'NaN') {
- 'NaN';
- } elsif ($rnd_mode eq 'trunc') {
- $q; # just truncate
- } else {
- local($cmp) = &'bcmp(&'bmul($r,'+2'),$base);
- if ( $cmp < 0 ||
- ($cmp == 0 &&
- ( $rnd_mode eq 'zero' ||
- ($rnd_mode eq '-inf' && (substr($q,$[,1) eq '+')) ||
- ($rnd_mode eq '+inf' && (substr($q,$[,1) eq '-')) ||
- ($rnd_mode eq 'even' && $q =~ /[24680]$/) ||
- ($rnd_mode eq 'odd' && $q =~ /[13579]$/) )) ) {
- $q; # round down
- } else {
- &'badd($q, ((substr($q,$[,1) eq '-') ? '-1' : '+1'));
- # round up
- }
- }
-}
-
-# round the mantissa of $x to $scale digits
-sub main'fround { #(fnum_str, scale) return fnum_str
- local($x,$scale) = (&'fnorm($_[$[]),$_[$[+1]);
- if ($x eq 'NaN' || $scale <= 0) {
- $x;
- } else {
- local($xm,$xe) = split('E',$x);
- if (length($xm)-1 <= $scale) {
- $x;
- } else {
- &norm(&round(substr($xm,$[,$scale+1),
- "+0".substr($xm,$[+$scale+1,1),"+10"),
- $xe+length($xm)-$scale-1);
- }
- }
-}
-
-# round $x at the 10 to the $scale digit place
-sub main'ffround { #(fnum_str, scale) return fnum_str
- local($x,$scale) = (&'fnorm($_[$[]),$_[$[+1]);
- if ($x eq 'NaN') {
- 'NaN';
- } else {
- local($xm,$xe) = split('E',$x);
- if ($xe >= $scale) {
- $x;
- } else {
- $xe = length($xm)+$xe-$scale;
- if ($xe < 1) {
- '+0E+0';
- } elsif ($xe == 1) {
- # The first substr preserves the sign, which means that
- # we'll pass a non-normalized "-0" to &round when rounding
- # -0.006 (for example), purely so that &round won't lose
- # the sign.
- &norm(&round(substr($xm,$[,1).'0',
- "+0".substr($xm,$[+1,1),"+10"), $scale);
- } else {
- &norm(&round(substr($xm,$[,$xe),
- "+0".substr($xm,$[+$xe,1),"+10"), $scale);
- }
- }
- }
-}
-
-# compare 2 values returns one of undef, <0, =0, >0
-# returns undef if either or both input value are not numbers
-sub main'fcmp #(fnum_str, fnum_str) return cond_code
-{
- local($x, $y) = (&'fnorm($_[$[]),&'fnorm($_[$[+1]));
- if ($x eq "NaN" || $y eq "NaN") {
- undef;
- } else {
- ord($y) <=> ord($x)
- ||
- ( local($xm,$xe,$ym,$ye) = split('E', $x."E$y"),
- (($xe <=> $ye) * (substr($x,$[,1).'1')
- || &bigint'cmp($xm,$ym))
- );
- }
-}
-
-# square root by Newtons method.
-sub main'fsqrt { #(fnum_str[, scale]) return fnum_str
- local($x, $scale) = (&'fnorm($_[$[]), $_[$[+1]);
- if ($x eq 'NaN' || $x =~ /^-/) {
- 'NaN';
- } elsif ($x eq '+0E+0') {
- '+0E+0';
- } else {
- local($xm, $xe) = split('E',$x);
- $scale = $div_scale if (!$scale);
- $scale = length($xm)-1 if ($scale < length($xm)-1);
- local($gs, $guess) = (1, sprintf("1E%+d", (length($xm)+$xe-1)/2));
- while ($gs < 2*$scale) {
- $guess = &'fmul(&'fadd($guess,&'fdiv($x,$guess,$gs*2)),".5");
- $gs *= 2;
- }
- &'fround($guess, $scale);
- }
-}
-
-1;
diff --git a/contrib/perl5/lib/bigint.pl b/contrib/perl5/lib/bigint.pl
deleted file mode 100644
index 9a3d50d..0000000
--- a/contrib/perl5/lib/bigint.pl
+++ /dev/null
@@ -1,320 +0,0 @@
-package bigint;
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Math::BigInt
-#
-# arbitrary size integer math package
-#
-# by Mark Biggar
-#
-# Canonical Big integer value are strings of the form
-# /^[+-]\d+$/ with leading zeros suppressed
-# Input values to these routines may be strings of the form
-# /^\s*[+-]?[\d\s]+$/.
-# Examples:
-# '+0' canonical zero value
-# ' -123 123 123' canonical value '-123123123'
-# '1 23 456 7890' canonical value '+1234567890'
-# Output values always always in canonical form
-#
-# Actual math is done in an internal format consisting of an array
-# whose first element is the sign (/^[+-]$/) and whose remaining
-# elements are base 100000 digits with the least significant digit first.
-# The string 'NaN' is used to represent the result when input arguments
-# are not numbers, as well as the result of dividing by zero
-#
-# routines provided are:
-#
-# bneg(BINT) return BINT negation
-# babs(BINT) return BINT absolute value
-# bcmp(BINT,BINT) return CODE compare numbers (undef,<0,=0,>0)
-# badd(BINT,BINT) return BINT addition
-# bsub(BINT,BINT) return BINT subtraction
-# bmul(BINT,BINT) return BINT multiplication
-# bdiv(BINT,BINT) return (BINT,BINT) division (quo,rem) just quo if scalar
-# bmod(BINT,BINT) return BINT modulus
-# bgcd(BINT,BINT) return BINT greatest common divisor
-# bnorm(BINT) return BINT normalization
-#
-
-# overcome a floating point problem on certain osnames (posix-bc, os390)
-BEGIN {
- my $x = 100000.0;
- my $use_mult = int($x*1e-5)*1e5 == $x ? 1 : 0;
-}
-
-$zero = 0;
-
-
-# normalize string form of number. Strip leading zeros. Strip any
-# white space and add a sign, if missing.
-# Strings that are not numbers result the value 'NaN'.
-
-sub main'bnorm { #(num_str) return num_str
- local($_) = @_;
- s/\s+//g; # strip white space
- if (s/^([+-]?)0*(\d+)$/$1$2/) { # test if number
- substr($_,$[,0) = '+' unless $1; # Add missing sign
- s/^-0/+0/;
- $_;
- } else {
- 'NaN';
- }
-}
-
-# Convert a number from string format to internal base 100000 format.
-# Assumes normalized value as input.
-sub internal { #(num_str) return int_num_array
- local($d) = @_;
- ($is,$il) = (substr($d,$[,1),length($d)-2);
- substr($d,$[,1) = '';
- ($is, reverse(unpack("a" . ($il%5+1) . ("a5" x ($il/5)), $d)));
-}
-
-# Convert a number from internal base 100000 format to string format.
-# This routine scribbles all over input array.
-sub external { #(int_num_array) return num_str
- $es = shift;
- grep($_ > 9999 || ($_ = substr('0000'.$_,-5)), @_); # zero pad
- &'bnorm(join('', $es, reverse(@_))); # reverse concat and normalize
-}
-
-# Negate input value.
-sub main'bneg { #(num_str) return num_str
- local($_) = &'bnorm(@_);
- vec($_,0,8) ^= ord('+') ^ ord('-') unless $_ eq '+0';
- s/^./N/ unless /^[-+]/; # works both in ASCII and EBCDIC
- $_;
-}
-
-# Returns the absolute value of the input.
-sub main'babs { #(num_str) return num_str
- &abs(&'bnorm(@_));
-}
-
-sub abs { # post-normalized abs for internal use
- local($_) = @_;
- s/^-/+/;
- $_;
-}
-
-# Compares 2 values. Returns one of undef, <0, =0, >0. (suitable for sort)
-sub main'bcmp { #(num_str, num_str) return cond_code
- local($x,$y) = (&'bnorm($_[$[]),&'bnorm($_[$[+1]));
- if ($x eq 'NaN') {
- undef;
- } elsif ($y eq 'NaN') {
- undef;
- } else {
- &cmp($x,$y);
- }
-}
-
-sub cmp { # post-normalized compare for internal use
- local($cx, $cy) = @_;
- return 0 if ($cx eq $cy);
-
- local($sx, $sy) = (substr($cx, 0, 1), substr($cy, 0, 1));
- local($ld);
-
- if ($sx eq '+') {
- return 1 if ($sy eq '-' || $cy eq '+0');
- $ld = length($cx) - length($cy);
- return $ld if ($ld);
- return $cx cmp $cy;
- } else { # $sx eq '-'
- return -1 if ($sy eq '+');
- $ld = length($cy) - length($cx);
- return $ld if ($ld);
- return $cy cmp $cx;
- }
-
-}
-
-sub main'badd { #(num_str, num_str) return num_str
- local(*x, *y); ($x, $y) = (&'bnorm($_[$[]),&'bnorm($_[$[+1]));
- if ($x eq 'NaN') {
- 'NaN';
- } elsif ($y eq 'NaN') {
- 'NaN';
- } else {
- @x = &internal($x); # convert to internal form
- @y = &internal($y);
- local($sx, $sy) = (shift @x, shift @y); # get signs
- if ($sx eq $sy) {
- &external($sx, &add(*x, *y)); # if same sign add
- } else {
- ($x, $y) = (&abs($x),&abs($y)); # make abs
- if (&cmp($y,$x) > 0) {
- &external($sy, &sub(*y, *x));
- } else {
- &external($sx, &sub(*x, *y));
- }
- }
- }
-}
-
-sub main'bsub { #(num_str, num_str) return num_str
- &'badd($_[$[],&'bneg($_[$[+1]));
-}
-
-# GCD -- Euclids algorithm Knuth Vol 2 pg 296
-sub main'bgcd { #(num_str, num_str) return num_str
- local($x,$y) = (&'bnorm($_[$[]),&'bnorm($_[$[+1]));
- if ($x eq 'NaN' || $y eq 'NaN') {
- 'NaN';
- } else {
- ($x, $y) = ($y,&'bmod($x,$y)) while $y ne '+0';
- $x;
- }
-}
-
-# routine to add two base 1e5 numbers
-# stolen from Knuth Vol 2 Algorithm A pg 231
-# there are separate routines to add and sub as per Kunth pg 233
-sub add { #(int_num_array, int_num_array) return int_num_array
- local(*x, *y) = @_;
- $car = 0;
- for $x (@x) {
- last unless @y || $car;
- $x -= 1e5 if $car = (($x += shift(@y) + $car) >= 1e5) ? 1 : 0;
- }
- for $y (@y) {
- last unless $car;
- $y -= 1e5 if $car = (($y += $car) >= 1e5) ? 1 : 0;
- }
- (@x, @y, $car);
-}
-
-# subtract base 1e5 numbers -- stolen from Knuth Vol 2 pg 232, $x > $y
-sub sub { #(int_num_array, int_num_array) return int_num_array
- local(*sx, *sy) = @_;
- $bar = 0;
- for $sx (@sx) {
- last unless @y || $bar;
- $sx += 1e5 if $bar = (($sx -= shift(@sy) + $bar) < 0);
- }
- @sx;
-}
-
-# multiply two numbers -- stolen from Knuth Vol 2 pg 233
-sub main'bmul { #(num_str, num_str) return num_str
- local(*x, *y); ($x, $y) = (&'bnorm($_[$[]), &'bnorm($_[$[+1]));
- if ($x eq 'NaN') {
- 'NaN';
- } elsif ($y eq 'NaN') {
- 'NaN';
- } else {
- @x = &internal($x);
- @y = &internal($y);
- local($signr) = (shift @x ne shift @y) ? '-' : '+';
- @prod = ();
- for $x (@x) {
- ($car, $cty) = (0, $[);
- for $y (@y) {
- $prod = $x * $y + $prod[$cty] + $car;
- if ($use_mult) {
- $prod[$cty++] =
- $prod - ($car = int($prod * 1e-5)) * 1e5;
- }
- else {
- $prod[$cty++] =
- $prod - ($car = int($prod / 1e5)) * 1e5;
- }
- }
- $prod[$cty] += $car if $car;
- $x = shift @prod;
- }
- &external($signr, @x, @prod);
- }
-}
-
-# modulus
-sub main'bmod { #(num_str, num_str) return num_str
- (&'bdiv(@_))[$[+1];
-}
-
-sub main'bdiv { #(dividend: num_str, divisor: num_str) return num_str
- local (*x, *y); ($x, $y) = (&'bnorm($_[$[]), &'bnorm($_[$[+1]));
- return wantarray ? ('NaN','NaN') : 'NaN'
- if ($x eq 'NaN' || $y eq 'NaN' || $y eq '+0');
- return wantarray ? ('+0',$x) : '+0' if (&cmp(&abs($x),&abs($y)) < 0);
- @x = &internal($x); @y = &internal($y);
- $srem = $y[$[];
- $sr = (shift @x ne shift @y) ? '-' : '+';
- $car = $bar = $prd = 0;
- if (($dd = int(1e5/($y[$#y]+1))) != 1) {
- for $x (@x) {
- $x = $x * $dd + $car;
- if ($use_mult) {
- $x -= ($car = int($x * 1e-5)) * 1e5;
- }
- else {
- $x -= ($car = int($x / 1e5)) * 1e5;
- }
- }
- push(@x, $car); $car = 0;
- for $y (@y) {
- $y = $y * $dd + $car;
- if ($use_mult) {
- $y -= ($car = int($y * 1e-5)) * 1e5;
- }
- else {
- $y -= ($car = int($y / 1e5)) * 1e5;
- }
- }
- }
- else {
- push(@x, 0);
- }
- @q = (); ($v2,$v1) = @y[-2,-1];
- while ($#x > $#y) {
- ($u2,$u1,$u0) = @x[-3..-1];
- $q = (($u0 == $v1) ? 99999 : int(($u0*1e5+$u1)/$v1));
- --$q while ($v2*$q > ($u0*1e5+$u1-$q*$v1)*1e5+$u2);
- if ($q) {
- ($car, $bar) = (0,0);
- for ($y = $[, $x = $#x-$#y+$[-1; $y <= $#y; ++$y,++$x) {
- $prd = $q * $y[$y] + $car;
- if ($use_mult) {
- $prd -= ($car = int($prd * 1e-5)) * 1e5;
- }
- else {
- $prd -= ($car = int($prd / 1e5)) * 1e5;
- }
- $x[$x] += 1e5 if ($bar = (($x[$x] -= $prd + $bar) < 0));
- }
- if ($x[$#x] < $car + $bar) {
- $car = 0; --$q;
- for ($y = $[, $x = $#x-$#y+$[-1; $y <= $#y; ++$y,++$x) {
- $x[$x] -= 1e5
- if ($car = (($x[$x] += $y[$y] + $car) > 1e5));
- }
- }
- }
- pop(@x); unshift(@q, $q);
- }
- if (wantarray) {
- @d = ();
- if ($dd != 1) {
- $car = 0;
- for $x (reverse @x) {
- $prd = $car * 1e5 + $x;
- $car = $prd - ($tmp = int($prd / $dd)) * $dd;
- unshift(@d, $tmp);
- }
- }
- else {
- @d = @x;
- }
- (&external($sr, @q), &external($srem, @d, $zero));
- } else {
- &external($sr, @q);
- }
-}
-1;
diff --git a/contrib/perl5/lib/bigrat.pl b/contrib/perl5/lib/bigrat.pl
deleted file mode 100644
index 2d3738f..0000000
--- a/contrib/perl5/lib/bigrat.pl
+++ /dev/null
@@ -1,155 +0,0 @@
-package bigrat;
-require "bigint.pl";
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Arbitrary size rational math package
-#
-# by Mark Biggar
-#
-# Input values to these routines consist of strings of the form
-# m|^\s*[+-]?[\d\s]+(/[\d\s]+)?$|.
-# Examples:
-# "+0/1" canonical zero value
-# "3" canonical value "+3/1"
-# " -123/123 123" canonical value "-1/1001"
-# "123 456/7890" canonical value "+20576/1315"
-# Output values always include a sign and no leading zeros or
-# white space.
-# This package makes use of the bigint package.
-# The string 'NaN' is used to represent the result when input arguments
-# that are not numbers, as well as the result of dividing by zero and
-# the sqrt of a negative number.
-# Extreamly naive algorthims are used.
-#
-# Routines provided are:
-#
-# rneg(RAT) return RAT negation
-# rabs(RAT) return RAT absolute value
-# rcmp(RAT,RAT) return CODE compare numbers (undef,<0,=0,>0)
-# radd(RAT,RAT) return RAT addition
-# rsub(RAT,RAT) return RAT subtraction
-# rmul(RAT,RAT) return RAT multiplication
-# rdiv(RAT,RAT) return RAT division
-# rmod(RAT) return (RAT,RAT) integer and fractional parts
-# rnorm(RAT) return RAT normalization
-# rsqrt(RAT, cycles) return RAT square root
-
-# Convert a number to the canonical string form m|^[+-]\d+/\d+|.
-sub main'rnorm { #(string) return rat_num
- local($_) = @_;
- s/\s+//g;
- if (m#^([+-]?\d+)(/(\d*[1-9]0*))?$#) {
- &norm($1, $3 ? $3 : '+1');
- } else {
- 'NaN';
- }
-}
-
-# Normalize by reducing to lowest terms
-sub norm { #(bint, bint) return rat_num
- local($num,$dom) = @_;
- if ($num eq 'NaN') {
- 'NaN';
- } elsif ($dom eq 'NaN') {
- 'NaN';
- } elsif ($dom =~ /^[+-]?0+$/) {
- 'NaN';
- } else {
- local($gcd) = &'bgcd($num,$dom);
- $gcd =~ s/^-/+/;
- if ($gcd ne '+1') {
- $num = &'bdiv($num,$gcd);
- $dom = &'bdiv($dom,$gcd);
- } else {
- $num = &'bnorm($num);
- $dom = &'bnorm($dom);
- }
- substr($dom,$[,1) = '';
- "$num/$dom";
- }
-}
-
-# negation
-sub main'rneg { #(rat_num) return rat_num
- local($_) = &'rnorm(@_);
- tr/-+/+-/ if ($_ ne '+0/1');
- $_;
-}
-
-# absolute value
-sub main'rabs { #(rat_num) return $rat_num
- local($_) = &'rnorm(@_);
- substr($_,$[,1) = '+' unless $_ eq 'NaN';
- $_;
-}
-
-# multipication
-sub main'rmul { #(rat_num, rat_num) return rat_num
- local($xn,$xd) = split('/',&'rnorm($_[$[]));
- local($yn,$yd) = split('/',&'rnorm($_[$[+1]));
- &norm(&'bmul($xn,$yn),&'bmul($xd,$yd));
-}
-
-# division
-sub main'rdiv { #(rat_num, rat_num) return rat_num
- local($xn,$xd) = split('/',&'rnorm($_[$[]));
- local($yn,$yd) = split('/',&'rnorm($_[$[+1]));
- &norm(&'bmul($xn,$yd),&'bmul($xd,$yn));
-}
-
-# addition
-sub main'radd { #(rat_num, rat_num) return rat_num
- local($xn,$xd) = split('/',&'rnorm($_[$[]));
- local($yn,$yd) = split('/',&'rnorm($_[$[+1]));
- &norm(&'badd(&'bmul($xn,$yd),&'bmul($yn,$xd)),&'bmul($xd,$yd));
-}
-
-# subtraction
-sub main'rsub { #(rat_num, rat_num) return rat_num
- local($xn,$xd) = split('/',&'rnorm($_[$[]));
- local($yn,$yd) = split('/',&'rnorm($_[$[+1]));
- &norm(&'bsub(&'bmul($xn,$yd),&'bmul($yn,$xd)),&'bmul($xd,$yd));
-}
-
-# comparison
-sub main'rcmp { #(rat_num, rat_num) return cond_code
- local($xn,$xd) = split('/',&'rnorm($_[$[]));
- local($yn,$yd) = split('/',&'rnorm($_[$[+1]));
- &bigint'cmp(&'bmul($xn,$yd),&'bmul($yn,$xd));
-}
-
-# int and frac parts
-sub main'rmod { #(rat_num) return (rat_num,rat_num)
- local($xn,$xd) = split('/',&'rnorm(@_));
- local($i,$f) = &'bdiv($xn,$xd);
- if (wantarray) {
- ("$i/1", "$f/$xd");
- } else {
- "$i/1";
- }
-}
-
-# square root by Newtons method.
-# cycles specifies the number of iterations default: 5
-sub main'rsqrt { #(fnum_str[, cycles]) return fnum_str
- local($x, $scale) = (&'rnorm($_[$[]), $_[$[+1]);
- if ($x eq 'NaN') {
- 'NaN';
- } elsif ($x =~ /^-/) {
- 'NaN';
- } else {
- local($gscale, $guess) = (0, '+1/1');
- $scale = 5 if (!$scale);
- while ($gscale++ < $scale) {
- $guess = &'rmul(&'radd($guess,&'rdiv($x,$guess)),"+1/2");
- }
- "$guess"; # quotes necessary due to perl bug
- }
-}
-
-1;
diff --git a/contrib/perl5/lib/blib.pm b/contrib/perl5/lib/blib.pm
deleted file mode 100644
index 0916f79..0000000
--- a/contrib/perl5/lib/blib.pm
+++ /dev/null
@@ -1,72 +0,0 @@
-package blib;
-
-=head1 NAME
-
-blib - Use MakeMaker's uninstalled version of a package
-
-=head1 SYNOPSIS
-
- perl -Mblib script [args...]
-
- perl -Mblib=dir script [args...]
-
-=head1 DESCRIPTION
-
-Looks for MakeMaker-like I<'blib'> directory structure starting in
-I<dir> (or current directory) and working back up to five levels of '..'.
-
-Intended for use on command line with B<-M> option as a way of testing
-arbitary scripts against an uninstalled version of a package.
-
-However it is possible to :
-
- use blib;
- or
- use blib '..';
-
-etc. if you really must.
-
-=head1 BUGS
-
-Pollutes global name space for development only task.
-
-=head1 AUTHOR
-
-Nick Ing-Simmons nik@tiuk.ti.com
-
-=cut
-
-use Cwd;
-
-use vars qw($VERSION);
-$VERSION = '1.00';
-
-sub import
-{
- my $package = shift;
- my $dir = getcwd;
- if ($^O eq 'VMS') { ($dir = VMS::Filespec::unixify($dir)) =~ s-/\z--; }
- if (@_)
- {
- $dir = shift;
- $dir =~ s/blib\z//;
- $dir =~ s,/+\z,,;
- $dir = '.' unless ($dir);
- die "$dir is not a directory\n" unless (-d $dir);
- }
- my $i = 5;
- while ($i--)
- {
- my $blib = "${dir}/blib";
- if (-d $blib && -d "$blib/arch" && -d "$blib/lib")
- {
- unshift(@INC,"$blib/arch","$blib/lib");
- warn "Using $blib\n";
- return;
- }
- $dir .= "/..";
- }
- die "Cannot find blib even in $dir\n";
-}
-
-1;
diff --git a/contrib/perl5/lib/bytes.pm b/contrib/perl5/lib/bytes.pm
deleted file mode 100644
index f2f7e01..0000000
--- a/contrib/perl5/lib/bytes.pm
+++ /dev/null
@@ -1,69 +0,0 @@
-package bytes;
-
-$bytes::hint_bits = 0x00000008;
-
-sub import {
- $^H |= $bytes::hint_bits;
-}
-
-sub unimport {
- $^H &= ~$bytes::hint_bits;
-}
-
-sub AUTOLOAD {
- require "bytes_heavy.pl";
- goto &$AUTOLOAD;
-}
-
-sub length ($);
-
-1;
-__END__
-
-=head1 NAME
-
-bytes - Perl pragma to force byte semantics rather than character semantics
-
-=head1 SYNOPSIS
-
- use bytes;
- no bytes;
-
-=head1 DESCRIPTION
-
-WARNING: The implementation of Unicode support in Perl is incomplete.
-See L<perlunicode> for the exact details.
-
-The C<use bytes> pragma disables character semantics for the rest of the
-lexical scope in which it appears. C<no bytes> can be used to reverse
-the effect of C<use bytes> within the current lexical scope.
-
-Perl normally assumes character semantics in the presence of character
-data (i.e. data that has come from a source that has been marked as
-being of a particular character encoding). When C<use bytes> is in
-effect, the encoding is temporarily ignored, and each string is treated
-as a series of bytes.
-
-As an example, when Perl sees C<$x = chr(400)>, it encodes the character
-in UTF8 and stores it in $x. Then it is marked as character data, so,
-for instance, C<length $x> returns C<1>. However, in the scope of the
-C<bytes> pragma, $x is treated as a series of bytes - the bytes that make
-up the UTF8 encoding - and C<length $x> returns C<2>:
-
- $x = chr(400);
- print "Length is ", length $x, "\n"; # "Length is 1"
- printf "Contents are %vd\n", $x; # "Contents are 400"
- {
- use bytes;
- print "Length is ", length $x, "\n"; # "Length is 2"
- printf "Contents are %vd\n", $x; # "Contents are 198.144"
- }
-
-For more on the implications and differences between character
-semantics and byte semantics, see L<perlunicode>.
-
-=head1 SEE ALSO
-
-L<perlunicode>, L<utf8>
-
-=cut
diff --git a/contrib/perl5/lib/bytes_heavy.pl b/contrib/perl5/lib/bytes_heavy.pl
deleted file mode 100644
index 47bdbf9..0000000
--- a/contrib/perl5/lib/bytes_heavy.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-package bytes;
-
-sub length ($) {
- BEGIN { bytes::import() }
- return CORE::length($_[0]);
-}
-
-1;
diff --git a/contrib/perl5/lib/cacheout.pl b/contrib/perl5/lib/cacheout.pl
deleted file mode 100644
index d2669a1..0000000
--- a/contrib/perl5/lib/cacheout.pl
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: FileCache
-
-# Open in their package.
-
-sub cacheout'open {
- open($_[0], $_[1]);
-}
-
-# Close as well
-
-sub cacheout'close {
- close($_[0]);
-}
-
-# But only this sub name is visible to them.
-
-sub cacheout {
- package cacheout;
-
- ($file) = @_;
- if (!$isopen{$file}) {
- if (++$numopen > $maxopen) {
- local(@lru) = sort {$isopen{$a} <=> $isopen{$b};} keys(%isopen);
- splice(@lru, $maxopen / 3);
- $numopen -= @lru;
- for (@lru) { &close($_); delete $isopen{$_}; }
- }
- &open($file, ($saw{$file}++ ? '>>' : '>') . $file)
- || die "Can't create $file: $!\n";
- }
- $isopen{$file} = ++$seq;
-}
-
-package cacheout;
-
-$seq = 0;
-$numopen = 0;
-
-if (open(PARAM,'/usr/include/sys/param.h')) {
- local($_, $.);
- while (<PARAM>) {
- $maxopen = $1 - 4 if /^\s*#\s*define\s+NOFILE\s+(\d+)/;
- }
- close PARAM;
-}
-$maxopen = 16 unless $maxopen;
-
-1;
diff --git a/contrib/perl5/lib/charnames.pm b/contrib/perl5/lib/charnames.pm
deleted file mode 100644
index 5f0c95f..0000000
--- a/contrib/perl5/lib/charnames.pm
+++ /dev/null
@@ -1,146 +0,0 @@
-package charnames;
-use bytes (); # for $bytes::hint_bits
-use warnings();
-$charnames::hint_bits = 0x20000;
-
-my $txt;
-
-# This is not optimized in any way yet
-sub charnames {
- $name = shift;
- $txt = do "unicode/Name.pl" unless $txt;
- my @off;
- if ($^H{charnames_full} and $txt =~ /\t\t$name$/m) {
- @off = ($-[0], $+[0]);
- }
- unless (@off) {
- if ($^H{charnames_short} and $name =~ /^(.*?):(.*)/s) {
- my ($script, $cname) = ($1,$2);
- my $case = ( $cname =~ /[[:upper:]]/ ? "CAPITAL" : "SMALL");
- if ($txt =~ m/\t\t\U$script\E (?:$case )?LETTER \U$cname$/m) {
- @off = ($-[0], $+[0]);
- }
- }
- }
- unless (@off) {
- my $case = ( $name =~ /[[:upper:]]/ ? "CAPITAL" : "SMALL");
- for ( @{$^H{charnames_scripts}} ) {
- (@off = ($-[0], $+[0])), last
- if $txt =~ m/\t\t$_ (?:$case )?LETTER \U$name$/m;
- }
- }
- die "Unknown charname '$name'" unless @off;
-
- my $hexlen = 4; # Unicode guarantees 4-, 5-, or 6-digit format
- $hexlen++ while
- $hexlen < 6 && substr($txt, $off[0] - $hexlen - 1, 1) =~ /[0-9a-f]/;
- my $ord = hex substr $txt, $off[0] - $hexlen, $hexlen;
- if ($^H & $bytes::hint_bits) { # "use bytes" in effect?
- use bytes;
- return chr $ord if $ord <= 255;
- my $hex = sprintf '%X=0%o', $ord, $ord;
- my $fname = substr $txt, $off[0] + 2, $off[1] - $off[0] - 2;
- die "Character 0x$hex with name '$fname' is above 0xFF";
- }
- return chr $ord;
-}
-
-sub import {
- shift;
- die "`use charnames' needs explicit imports list" unless @_;
- $^H |= $charnames::hint_bits;
- $^H{charnames} = \&charnames ;
- my %h;
- @h{@_} = (1) x @_;
- $^H{charnames_full} = delete $h{':full'};
- $^H{charnames_short} = delete $h{':short'};
- $^H{charnames_scripts} = [map uc, keys %h];
- if (warnings::enabled('utf8') && @{$^H{charnames_scripts}}) {
- $txt = do "unicode/Name.pl" unless $txt;
- for (@{$^H{charnames_scripts}}) {
- warnings::warn('utf8', "No such script: '$_'") unless
- $txt =~ m/\t\t$_ (?:CAPITAL |SMALL )?LETTER /;
- }
- }
-}
-
-
-1;
-__END__
-
-=head1 NAME
-
-charnames - define character names for C<\N{named}> string literal escape.
-
-=head1 SYNOPSIS
-
- use charnames ':full';
- print "\N{GREEK SMALL LETTER SIGMA} is called sigma.\n";
-
- use charnames ':short';
- print "\N{greek:Sigma} is an upper-case sigma.\n";
-
- use charnames qw(cyrillic greek);
- print "\N{sigma} is Greek sigma, and \N{be} is Cyrillic b.\n";
-
-=head1 DESCRIPTION
-
-Pragma C<use charnames> supports arguments C<:full>, C<:short> and
-script names. If C<:full> is present, for expansion of
-C<\N{CHARNAME}}> string C<CHARNAME> is first looked in the list of
-standard Unicode names of chars. If C<:short> is present, and
-C<CHARNAME> has the form C<SCRIPT:CNAME>, then C<CNAME> is looked up
-as a letter in script C<SCRIPT>. If pragma C<use charnames> is used
-with script name arguments, then for C<\N{CHARNAME}}> the name
-C<CHARNAME> is looked up as a letter in the given scripts (in the
-specified order).
-
-For lookup of C<CHARNAME> inside a given script C<SCRIPTNAME>
-this pragma looks for the names
-
- SCRIPTNAME CAPITAL LETTER CHARNAME
- SCRIPTNAME SMALL LETTER CHARNAME
- SCRIPTNAME LETTER CHARNAME
-
-in the table of standard Unicode names. If C<CHARNAME> is lowercase,
-then the C<CAPITAL> variant is ignored, otherwise the C<SMALL> variant is
-ignored.
-
-=head1 CUSTOM TRANSLATORS
-
-The mechanism of translation of C<\N{...}> escapes is general and not
-hardwired into F<charnames.pm>. A module can install custom
-translations (inside the scope which C<use>s the module) with the
-following magic incantation:
-
- use charnames (); # for $charnames::hint_bits
- sub import {
- shift;
- $^H |= $charnames::hint_bits;
- $^H{charnames} = \&translator;
- }
-
-Here translator() is a subroutine which takes C<CHARNAME> as an
-argument, and returns text to insert into the string instead of the
-C<\N{CHARNAME}> escape. Since the text to insert should be different
-in C<bytes> mode and out of it, the function should check the current
-state of C<bytes>-flag as in:
-
- use bytes (); # for $bytes::hint_bits
- sub translator {
- if ($^H & $bytes::hint_bits) {
- return bytes_translator(@_);
- }
- else {
- return utf8_translator(@_);
- }
- }
-
-=head1 BUGS
-
-Since evaluation of the translation function happens in a middle of
-compilation (of a string literal), the translation function should not
-do any C<eval>s or C<require>s. This restriction should be lifted in
-a future version of Perl.
-
-=cut
diff --git a/contrib/perl5/lib/chat2.pl b/contrib/perl5/lib/chat2.pl
deleted file mode 100644
index 504fa7e..0000000
--- a/contrib/perl5/lib/chat2.pl
+++ /dev/null
@@ -1,379 +0,0 @@
-# chat.pl: chat with a server
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Socket
-#
-# Based on: V2.01.alpha.7 91/06/16
-# Randal L. Schwartz (was <merlyn@stonehenge.com>)
-# multihome additions by A.Macpherson@bnr.co.uk
-# allow for /dev/pts based systems by Joe Doupnik <JRD@CC.USU.EDU>
-
-package chat;
-
-require 'sys/socket.ph';
-
-if( defined( &main'PF_INET ) ){
- $pf_inet = &main'PF_INET;
- $sock_stream = &main'SOCK_STREAM;
- local($name, $aliases, $proto) = getprotobyname( 'tcp' );
- $tcp_proto = $proto;
-}
-else {
- # XXX hardwired $PF_INET, $SOCK_STREAM, 'tcp'
- # but who the heck would change these anyway? (:-)
- $pf_inet = 2;
- $sock_stream = 1;
- $tcp_proto = 6;
-}
-
-
-$sockaddr = 'S n a4 x8';
-chop($thishost = `hostname`);
-
-# *S = symbol for current I/O, gets assigned *chatsymbol....
-$next = "chatsymbol000000"; # next one
-$nextpat = "^chatsymbol"; # patterns that match next++, ++, ++, ++
-
-
-## $handle = &chat'open_port("server.address",$port_number);
-## opens a named or numbered TCP server
-
-sub open_port { ## public
- local($server, $port) = @_;
-
- local($serveraddr,$serverproc);
-
- # We may be multi-homed, start with 0, fixup once connexion is made
- $thisaddr = "\0\0\0\0" ;
- $thisproc = pack($sockaddr, 2, 0, $thisaddr);
-
- *S = ++$next;
- if ($server =~ /^(\d+)+\.(\d+)\.(\d+)\.(\d+)$/) {
- $serveraddr = pack('C4', $1, $2, $3, $4);
- } else {
- local(@x) = gethostbyname($server);
- return undef unless @x;
- $serveraddr = $x[4];
- }
- $serverproc = pack($sockaddr, 2, $port, $serveraddr);
- unless (socket(S, $pf_inet, $sock_stream, $tcp_proto)) {
- ($!) = ($!, close(S)); # close S while saving $!
- return undef;
- }
- unless (bind(S, $thisproc)) {
- ($!) = ($!, close(S)); # close S while saving $!
- return undef;
- }
- unless (connect(S, $serverproc)) {
- ($!) = ($!, close(S)); # close S while saving $!
- return undef;
- }
-# We opened with the local address set to ANY, at this stage we know
-# which interface we are using. This is critical if our machine is
-# multi-homed, with IP forwarding off, so fix-up.
- local($fam,$lport);
- ($fam,$lport,$thisaddr) = unpack($sockaddr, getsockname(S));
- $thisproc = pack($sockaddr, 2, 0, $thisaddr);
-# end of post-connect fixup
- select((select(S), $| = 1)[0]);
- $next; # return symbol for switcharound
-}
-
-## ($host, $port, $handle) = &chat'open_listen([$port_number]);
-## opens a TCP port on the current machine, ready to be listened to
-## if $port_number is absent or zero, pick a default port number
-## process must be uid 0 to listen to a low port number
-
-sub open_listen { ## public
-
- *S = ++$next;
- local($thisport) = shift || 0;
- local($thisproc_local) = pack($sockaddr, 2, $thisport, $thisaddr);
- local(*NS) = "__" . time;
- unless (socket(NS, $pf_inet, $sock_stream, $tcp_proto)) {
- ($!) = ($!, close(NS));
- return undef;
- }
- unless (bind(NS, $thisproc_local)) {
- ($!) = ($!, close(NS));
- return undef;
- }
- unless (listen(NS, 1)) {
- ($!) = ($!, close(NS));
- return undef;
- }
- select((select(NS), $| = 1)[0]);
- local($family, $port, @myaddr) =
- unpack("S n C C C C x8", getsockname(NS));
- $S{"needs_accept"} = *NS; # so expect will open it
- (@myaddr, $port, $next); # returning this
-}
-
-## $handle = &chat'open_proc("command","arg1","arg2",...);
-## opens a /bin/sh on a pseudo-tty
-
-sub open_proc { ## public
- local(@cmd) = @_;
-
- *S = ++$next;
- local(*TTY) = "__TTY" . time;
- local($pty,$tty) = &_getpty(S,TTY);
- die "Cannot find a new pty" unless defined $pty;
- $pid = fork;
- die "Cannot fork: $!" unless defined $pid;
- unless ($pid) {
- close STDIN; close STDOUT; close STDERR;
- setpgrp(0,$$);
- if (open(DEVTTY, "/dev/tty")) {
- ioctl(DEVTTY,0x20007471,0); # XXX s/b &TIOCNOTTY
- close DEVTTY;
- }
- open(STDIN,"<&TTY");
- open(STDOUT,">&TTY");
- open(STDERR,">&STDOUT");
- die "Oops" unless fileno(STDERR) == 2; # sanity
- close(S);
- exec @cmd;
- die "Cannot exec @cmd: $!";
- }
- close(TTY);
- $next; # return symbol for switcharound
-}
-
-# $S is the read-ahead buffer
-
-## $return = &chat'expect([$handle,] $timeout_time,
-## $pat1, $body1, $pat2, $body2, ... )
-## $handle is from previous &chat'open_*().
-## $timeout_time is the time (either relative to the current time, or
-## absolute, ala time(2)) at which a timeout event occurs.
-## $pat1, $pat2, and so on are regexs which are matched against the input
-## stream. If a match is found, the entire matched string is consumed,
-## and the corresponding body eval string is evaled.
-##
-## Each pat is a regular-expression (probably enclosed in single-quotes
-## in the invocation). ^ and $ will work, respecting the current value of $*.
-## If pat is 'TIMEOUT', the body is executed if the timeout is exceeded.
-## If pat is 'EOF', the body is executed if the process exits before
-## the other patterns are seen.
-##
-## Pats are scanned in the order given, so later pats can contain
-## general defaults that won't be examined unless the earlier pats
-## have failed.
-##
-## The result of eval'ing body is returned as the result of
-## the invocation. Recursive invocations are not thought
-## through, and may work only accidentally. :-)
-##
-## undef is returned if either a timeout or an eof occurs and no
-## corresponding body has been defined.
-## I/O errors of any sort are treated as eof.
-
-$nextsubname = "expectloop000000"; # used for subroutines
-
-sub expect { ## public
- if ($_[0] =~ /$nextpat/) {
- *S = shift;
- }
- local($endtime) = shift;
-
- local($timeout,$eof) = (1,1);
- local($caller) = caller;
- local($rmask, $nfound, $timeleft, $thisbuf);
- local($cases, $pattern, $action, $subname);
- $endtime += time if $endtime < 600_000_000;
-
- if (defined $S{"needs_accept"}) { # is it a listen socket?
- local(*NS) = $S{"needs_accept"};
- delete $S{"needs_accept"};
- $S{"needs_close"} = *NS;
- unless(accept(S,NS)) {
- ($!) = ($!, close(S), close(NS));
- return undef;
- }
- select((select(S), $| = 1)[0]);
- }
-
- # now see whether we need to create a new sub:
-
- unless ($subname = $expect_subname{$caller,@_}) {
- # nope. make a new one:
- $expect_subname{$caller,@_} = $subname = $nextsubname++;
-
- $cases .= <<"EDQ"; # header is funny to make everything elsif's
-sub $subname {
- LOOP: {
- if (0) { ; }
-EDQ
- while (@_) {
- ($pattern,$action) = splice(@_,0,2);
- if ($pattern =~ /^eof$/i) {
- $cases .= <<"EDQ";
- elsif (\$eof) {
- package $caller;
- $action;
- }
-EDQ
- $eof = 0;
- } elsif ($pattern =~ /^timeout$/i) {
- $cases .= <<"EDQ";
- elsif (\$timeout) {
- package $caller;
- $action;
- }
-EDQ
- $timeout = 0;
- } else {
- $pattern =~ s#/#\\/#g;
- $cases .= <<"EDQ";
- elsif (\$S =~ /$pattern/) {
- \$S = \$';
- package $caller;
- $action;
- }
-EDQ
- }
- }
- $cases .= <<"EDQ" if $eof;
- elsif (\$eof) {
- undef;
- }
-EDQ
- $cases .= <<"EDQ" if $timeout;
- elsif (\$timeout) {
- undef;
- }
-EDQ
- $cases .= <<'ESQ';
- else {
- $rmask = "";
- vec($rmask,fileno(S),1) = 1;
- ($nfound, $rmask) =
- select($rmask, undef, undef, $endtime - time);
- if ($nfound) {
- $nread = sysread(S, $thisbuf, 1024);
- if ($nread > 0) {
- $S .= $thisbuf;
- } else {
- $eof++, redo LOOP; # any error is also eof
- }
- } else {
- $timeout++, redo LOOP; # timeout
- }
- redo LOOP;
- }
- }
-}
-ESQ
- eval $cases; die "$cases:\n$@" if $@;
- }
- $eof = $timeout = 0;
- do $subname();
-}
-
-## &chat'print([$handle,] @data)
-## $handle is from previous &chat'open().
-## like print $handle @data
-
-sub print { ## public
- if ($_[0] =~ /$nextpat/) {
- *S = shift;
- }
-
- local $out = join $, , @_;
- syswrite(S, $out, length $out);
- if( $chat'debug ){
- print STDERR "printed:";
- print STDERR @_;
- }
-}
-
-## &chat'close([$handle,])
-## $handle is from previous &chat'open().
-## like close $handle
-
-sub close { ## public
- if ($_[0] =~ /$nextpat/) {
- *S = shift;
- }
- close(S);
- if (defined $S{"needs_close"}) { # is it a listen socket?
- local(*NS) = $S{"needs_close"};
- delete $S{"needs_close"};
- close(NS);
- }
-}
-
-## @ready_handles = &chat'select($timeout, @handles)
-## select()'s the handles with a timeout value of $timeout seconds.
-## Returns an array of handles that are ready for I/O.
-## Both user handles and chat handles are supported (but beware of
-## stdio's buffering for user handles).
-
-sub select { ## public
- local($timeout) = shift;
- local(@handles) = @_;
- local(%handlename) = ();
- local(%ready) = ();
- local($caller) = caller;
- local($rmask) = "";
- for (@handles) {
- if (/$nextpat/o) { # one of ours... see if ready
- local(*SYM) = $_;
- if (length($SYM)) {
- $timeout = 0; # we have a winner
- $ready{$_}++;
- }
- $handlename{fileno($_)} = $_;
- } else {
- $handlename{fileno(/'/ ? $_ : "$caller\'$_")} = $_;
- }
- }
- for (sort keys %handlename) {
- vec($rmask, $_, 1) = 1;
- }
- select($rmask, undef, undef, $timeout);
- for (sort keys %handlename) {
- $ready{$handlename{$_}}++ if vec($rmask,$_,1);
- }
- sort keys %ready;
-}
-
-# ($pty,$tty) = $chat'_getpty(PTY,TTY):
-# internal procedure to get the next available pty.
-# opens pty on handle PTY, and matching tty on handle TTY.
-# returns undef if can't find a pty.
-# Modify "/dev/pty" to "/dev/pts" for Dell Unix v2.2 (aka SVR4.04). Joe Doupnik.
-
-sub _getpty { ## private
- local($_PTY,$_TTY) = @_;
- $_PTY =~ s/^([^']+)$/(caller)[$[]."'".$1/e;
- $_TTY =~ s/^([^']+)$/(caller)[$[]."'".$1/e;
- local($pty, $tty, $kind);
- if( -e "/dev/pts000" ){ ## mods by Joe Doupnik Dec 1992
- $kind = "pts"; ## SVR4 Streams
- } else {
- $kind = "pty"; ## BSD Clist stuff
- }
- for $bank (112..127) {
- next unless -e sprintf("/dev/$kind%c0", $bank);
- for $unit (48..57) {
- $pty = sprintf("/dev/$kind%c%c", $bank, $unit);
- open($_PTY,"+>$pty") || next;
- select((select($_PTY), $| = 1)[0]);
- ($tty = $pty) =~ s/pty/tty/;
- open($_TTY,"+>$tty") || next;
- select((select($_TTY), $| = 1)[0]);
- system "stty nl>$tty";
- return ($pty,$tty);
- }
- }
- undef;
-}
-
-1;
diff --git a/contrib/perl5/lib/complete.pl b/contrib/perl5/lib/complete.pl
deleted file mode 100644
index 925ce86..0000000
--- a/contrib/perl5/lib/complete.pl
+++ /dev/null
@@ -1,120 +0,0 @@
-;#
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Term::Complete
-#
-;# @(#)complete.pl,v1.1 (me@anywhere.EBay.Sun.COM) 09/23/91
-;#
-;# Author: Wayne Thompson
-;#
-;# Description:
-;# This routine provides word completion.
-;# (TAB) attempts word completion.
-;# (^D) prints completion list.
-;# (These may be changed by setting $Complete'complete, etc.)
-;#
-;# Diagnostics:
-;# Bell when word completion fails.
-;#
-;# Dependencies:
-;# The tty driver is put into raw mode.
-;#
-;# Bugs:
-;#
-;# Usage:
-;# $input = &Complete('prompt_string', *completion_list);
-;# or
-;# $input = &Complete('prompt_string', @completion_list);
-;#
-
-CONFIG: {
- package Complete;
-
- $complete = "\004";
- $kill = "\025";
- $erase1 = "\177";
- $erase2 = "\010";
-}
-
-sub Complete {
- package Complete;
-
- local($prompt, @cmp_list, $return, @match, $l, $test, $cmp, $r);
- if ($_[1] =~ /^StB\0/) {
- ($prompt, *_) = @_;
- }
- else {
- $prompt = shift(@_);
- }
- @cmp_lst = sort(@_);
-
- system('stty raw -echo');
- LOOP: {
- print($prompt, $return);
- while (($_ = getc(STDIN)) ne "\r") {
- CASE: {
- # (TAB) attempt completion
- $_ eq "\t" && do {
- @match = grep(/^$return/, @cmp_lst);
- $l = length($test = shift(@match));
- unless ($#match < 0) {
- foreach $cmp (@match) {
- until (substr($cmp, 0, $l) eq substr($test, 0, $l)) {
- $l--;
- }
- }
- print("\a");
- }
- print($test = substr($test, $r, $l - $r));
- $r = length($return .= $test);
- last CASE;
- };
-
- # (^D) completion list
- $_ eq $complete && do {
- print(join("\r\n", '', grep(/^$return/, @cmp_lst)), "\r\n");
- redo LOOP;
- };
-
- # (^U) kill
- $_ eq $kill && do {
- if ($r) {
- undef $r;
- undef $return;
- print("\r\n");
- redo LOOP;
- }
- last CASE;
- };
-
- # (DEL) || (BS) erase
- ($_ eq $erase1 || $_ eq $erase2) && do {
- if($r) {
- print("\b \b");
- chop($return);
- $r--;
- }
- last CASE;
- };
-
- # printable char
- ord >= 32 && do {
- $return .= $_;
- $r++;
- print;
- last CASE;
- };
- }
- }
- }
- system('stty -raw echo');
- print("\n");
- $return;
-}
-
-1;
diff --git a/contrib/perl5/lib/constant.pm b/contrib/perl5/lib/constant.pm
deleted file mode 100644
index 72ad793..0000000
--- a/contrib/perl5/lib/constant.pm
+++ /dev/null
@@ -1,278 +0,0 @@
-package constant;
-
-use strict;
-use 5.005_64;
-use warnings::register;
-
-our($VERSION, %declared);
-$VERSION = '1.02';
-
-#=======================================================================
-
-# Some names are evil choices.
-my %keywords = map +($_, 1), qw{ BEGIN INIT CHECK END DESTROY AUTOLOAD };
-
-my %forced_into_main = map +($_, 1),
- qw{ STDIN STDOUT STDERR ARGV ARGVOUT ENV INC SIG };
-
-my %forbidden = (%keywords, %forced_into_main);
-
-#=======================================================================
-# import() - import symbols into user's namespace
-#
-# What we actually do is define a function in the caller's namespace
-# which returns the value. The function we create will normally
-# be inlined as a constant, thereby avoiding further sub calling
-# overhead.
-#=======================================================================
-sub import {
- my $class = shift;
- return unless @_; # Ignore 'use constant;'
- my $name = shift;
- unless (defined $name) {
- require Carp;
- Carp::croak("Can't use undef as constant name");
- }
- my $pkg = caller;
-
- # Normal constant name
- if ($name =~ /^_?[^\W_0-9]\w*\z/ and !$forbidden{$name}) {
- # Everything is okay
-
- # Name forced into main, but we're not in main. Fatal.
- } elsif ($forced_into_main{$name} and $pkg ne 'main') {
- require Carp;
- Carp::croak("Constant name '$name' is forced into main::");
-
- # Starts with double underscore. Fatal.
- } elsif ($name =~ /^__/) {
- require Carp;
- Carp::croak("Constant name '$name' begins with '__'");
-
- # Maybe the name is tolerable
- } elsif ($name =~ /^[A-Za-z_]\w*\z/) {
- # Then we'll warn only if you've asked for warnings
- if (warnings::enabled()) {
- if ($keywords{$name}) {
- warnings::warn("Constant name '$name' is a Perl keyword");
- } elsif ($forced_into_main{$name}) {
- warnings::warn("Constant name '$name' is " .
- "forced into package main::");
- } else {
- # Catch-all - what did I miss? If you get this error,
- # please let me know what your constant's name was.
- # Write to <rootbeer@redcat.com>. Thanks!
- warnings::warn("Constant name '$name' has unknown problems");
- }
- }
-
- # Looks like a boolean
- # use constant FRED == fred;
- } elsif ($name =~ /^[01]?\z/) {
- require Carp;
- if (@_) {
- Carp::croak("Constant name '$name' is invalid");
- } else {
- Carp::croak("Constant name looks like boolean value");
- }
-
- } else {
- # Must have bad characters
- require Carp;
- Carp::croak("Constant name '$name' has invalid characters");
- }
-
- {
- no strict 'refs';
- my $full_name = "${pkg}::$name";
- $declared{$full_name}++;
- if (@_ == 1) {
- my $scalar = $_[0];
- *$full_name = sub () { $scalar };
- } elsif (@_) {
- my @list = @_;
- *$full_name = sub () { @list };
- } else {
- *$full_name = sub () { };
- }
- }
-
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-constant - Perl pragma to declare constants
-
-=head1 SYNOPSIS
-
- use constant BUFFER_SIZE => 4096;
- use constant ONE_YEAR => 365.2425 * 24 * 60 * 60;
- use constant PI => 4 * atan2 1, 1;
- use constant DEBUGGING => 0;
- use constant ORACLE => 'oracle@cs.indiana.edu';
- use constant USERNAME => scalar getpwuid($<);
- use constant USERINFO => getpwuid($<);
-
- sub deg2rad { PI * $_[0] / 180 }
-
- print "This line does nothing" unless DEBUGGING;
-
- # references can be constants
- use constant CHASH => { foo => 42 };
- use constant CARRAY => [ 1,2,3,4 ];
- use constant CPSEUDOHASH => [ { foo => 1}, 42 ];
- use constant CCODE => sub { "bite $_[0]\n" };
-
- print CHASH->{foo};
- print CARRAY->[$i];
- print CPSEUDOHASH->{foo};
- print CCODE->("me");
- print CHASH->[10]; # compile-time error
-
-=head1 DESCRIPTION
-
-This will declare a symbol to be a constant with the given scalar
-or list value.
-
-When you declare a constant such as C<PI> using the method shown
-above, each machine your script runs upon can have as many digits
-of accuracy as it can use. Also, your program will be easier to
-read, more likely to be maintained (and maintained correctly), and
-far less likely to send a space probe to the wrong planet because
-nobody noticed the one equation in which you wrote C<3.14195>.
-
-=head1 NOTES
-
-The value or values are evaluated in a list context. You may override
-this with C<scalar> as shown above.
-
-These constants do not directly interpolate into double-quotish
-strings, although you may do so indirectly. (See L<perlref> for
-details about how this works.)
-
- print "The value of PI is @{[ PI ]}.\n";
-
-List constants are returned as lists, not as arrays.
-
- $homedir = USERINFO[7]; # WRONG
- $homedir = (USERINFO)[7]; # Right
-
-The use of all caps for constant names is merely a convention,
-although it is recommended in order to make constants stand out
-and to help avoid collisions with other barewords, keywords, and
-subroutine names. Constant names must begin with a letter or
-underscore. Names beginning with a double underscore are reserved. Some
-poor choices for names will generate warnings, if warnings are enabled at
-compile time.
-
-Constant symbols are package scoped (rather than block scoped, as
-C<use strict> is). That is, you can refer to a constant from package
-Other as C<Other::CONST>.
-
-As with all C<use> directives, defining a constant happens at
-compile time. Thus, it's probably not correct to put a constant
-declaration inside of a conditional statement (like C<if ($foo)
-{ use constant ... }>).
-
-Omitting the value for a symbol gives it the value of C<undef> in
-a scalar context or the empty list, C<()>, in a list context. This
-isn't so nice as it may sound, though, because in this case you
-must either quote the symbol name, or use a big arrow, (C<=E<gt>>),
-with nothing to point to. It is probably best to declare these
-explicitly.
-
- use constant UNICORNS => ();
- use constant LOGFILE => undef;
-
-The result from evaluating a list constant in a scalar context is
-not documented, and is B<not> guaranteed to be any particular value
-in the future. In particular, you should not rely upon it being
-the number of elements in the list, especially since it is not
-B<necessarily> that value in the current implementation.
-
-Magical values, tied values, and references can be made into
-constants at compile time, allowing for way cool stuff like this.
-(These error numbers aren't totally portable, alas.)
-
- use constant E2BIG => ($! = 7);
- print E2BIG, "\n"; # something like "Arg list too long"
- print 0+E2BIG, "\n"; # "7"
-
-Dereferencing constant references incorrectly (such as using an array
-subscript on a constant hash reference, or vice versa) will be trapped at
-compile time.
-
-In the rare case in which you need to discover at run time whether a
-particular constant has been declared via this module, you may use
-this function to examine the hash C<%constant::declared>. If the given
-constant name does not include a package name, the current package is
-used.
-
- sub declared ($) {
- use constant 1.01; # don't omit this!
- my $name = shift;
- $name =~ s/^::/main::/;
- my $pkg = caller;
- my $full_name = $name =~ /::/ ? $name : "${pkg}::$name";
- $constant::declared{$full_name};
- }
-
-=head1 TECHNICAL NOTE
-
-In the current implementation, scalar constants are actually
-inlinable subroutines. As of version 5.004 of Perl, the appropriate
-scalar constant is inserted directly in place of some subroutine
-calls, thereby saving the overhead of a subroutine call. See
-L<perlsub/"Constant Functions"> for details about how and when this
-happens.
-
-=head1 BUGS
-
-In the current version of Perl, list constants are not inlined
-and some symbols may be redefined without generating a warning.
-
-It is not possible to have a subroutine or keyword with the same
-name as a constant in the same package. This is probably a Good Thing.
-
-A constant with a name in the list C<STDIN STDOUT STDERR ARGV ARGVOUT
-ENV INC SIG> is not allowed anywhere but in package C<main::>, for
-technical reasons.
-
-Even though a reference may be declared as a constant, the reference may
-point to data which may be changed, as this code shows.
-
- use constant CARRAY => [ 1,2,3,4 ];
- print CARRAY->[1];
- CARRAY->[1] = " be changed";
- print CARRAY->[1];
-
-Unlike constants in some languages, these cannot be overridden
-on the command line or via environment variables.
-
-You can get into trouble if you use constants in a context which
-automatically quotes barewords (as is true for any subroutine call).
-For example, you can't say C<$hash{CONSTANT}> because C<CONSTANT> will
-be interpreted as a string. Use C<$hash{CONSTANT()}> or
-C<$hash{+CONSTANT}> to prevent the bareword quoting mechanism from
-kicking in. Similarly, since the C<=E<gt>> operator quotes a bareword
-immediately to its left, you have to say C<CONSTANT() =E<gt> 'value'>
-(or simply use a comma in place of the big arrow) instead of
-C<CONSTANT =E<gt> 'value'>.
-
-=head1 AUTHOR
-
-Tom Phoenix, E<lt>F<rootbeer@redcat.com>E<gt>, with help from
-many other folks.
-
-=head1 COPYRIGHT
-
-Copyright (C) 1997, 1999 Tom Phoenix
-
-This module is free software; you can redistribute it or modify it
-under the same terms as Perl itself.
-
-=cut
diff --git a/contrib/perl5/lib/ctime.pl b/contrib/perl5/lib/ctime.pl
deleted file mode 100644
index 6a3f295..0000000
--- a/contrib/perl5/lib/ctime.pl
+++ /dev/null
@@ -1,59 +0,0 @@
-;# ctime.pl is a simple Perl emulation for the well known ctime(3C) function.
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: the POSIX ctime function
-;#
-;# Waldemar Kebsch, Federal Republic of Germany, November 1988
-;# kebsch.pad@nixpbe.UUCP
-;# Modified March 1990, Feb 1991 to properly handle timezones
-;# $RCSfile: ctime.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:23:47 $
-;# Marion Hakanson (hakanson@cse.ogi.edu)
-;# Oregon Graduate Institute of Science and Technology
-;#
-;# usage:
-;#
-;# #include <ctime.pl> # see the -P and -I option in perl.man
-;# $Date = &ctime(time);
-
-CONFIG: {
- package ctime;
-
- @DoW = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
- @MoY = ('Jan','Feb','Mar','Apr','May','Jun',
- 'Jul','Aug','Sep','Oct','Nov','Dec');
-}
-
-sub ctime {
- package ctime;
-
- local($time) = @_;
- local($[) = 0;
- local($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
-
- # Determine what time zone is in effect.
- # Use GMT if TZ is defined as null, local time if TZ undefined.
- # There's no portable way to find the system default timezone.
-
- $TZ = defined($ENV{'TZ'}) ? ( $ENV{'TZ'} ? $ENV{'TZ'} : 'GMT' ) : '';
- ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
- ($TZ eq 'GMT') ? gmtime($time) : localtime($time);
-
- # Hack to deal with 'PST8PDT' format of TZ
- # Note that this can't deal with all the esoteric forms, but it
- # does recognize the most common: [:]STDoff[DST[off][,rule]]
-
- if($TZ=~/^([^:\d+\-,]{3,})([+-]?\d{1,2}(:\d{1,2}){0,2})([^\d+\-,]{3,})?/){
- $TZ = $isdst ? $4 : $1;
- }
- $TZ .= ' ' unless $TZ eq '';
-
- $year += 1900;
- sprintf("%s %s %2d %2d:%02d:%02d %s%4d\n",
- $DoW[$wday], $MoY[$mon], $mday, $hour, $min, $sec, $TZ, $year);
-}
-1;
diff --git a/contrib/perl5/lib/diagnostics.pm b/contrib/perl5/lib/diagnostics.pm
deleted file mode 100755
index 884ea3c..0000000
--- a/contrib/perl5/lib/diagnostics.pm
+++ /dev/null
@@ -1,559 +0,0 @@
-package diagnostics;
-
-=head1 NAME
-
-diagnostics - Perl compiler pragma to force verbose warning diagnostics
-
-splain - standalone program to do the same thing
-
-=head1 SYNOPSIS
-
-As a pragma:
-
- use diagnostics;
- use diagnostics -verbose;
-
- enable diagnostics;
- disable diagnostics;
-
-Aa a program:
-
- perl program 2>diag.out
- splain [-v] [-p] diag.out
-
-
-=head1 DESCRIPTION
-
-=head2 The C<diagnostics> Pragma
-
-This module extends the terse diagnostics normally emitted by both the
-perl compiler and the perl interpreter, augmenting them with the more
-explicative and endearing descriptions found in L<perldiag>. Like the
-other pragmata, it affects the compilation phase of your program rather
-than merely the execution phase.
-
-To use in your program as a pragma, merely invoke
-
- use diagnostics;
-
-at the start (or near the start) of your program. (Note
-that this I<does> enable perl's B<-w> flag.) Your whole
-compilation will then be subject(ed :-) to the enhanced diagnostics.
-These still go out B<STDERR>.
-
-Due to the interaction between runtime and compiletime issues,
-and because it's probably not a very good idea anyway,
-you may not use C<no diagnostics> to turn them off at compiletime.
-However, you may control their behaviour at runtime using the
-disable() and enable() methods to turn them off and on respectively.
-
-The B<-verbose> flag first prints out the L<perldiag> introduction before
-any other diagnostics. The $diagnostics::PRETTY variable can generate nicer
-escape sequences for pagers.
-
-Warnings dispatched from perl itself (or more accurately, those that match
-descriptions found in L<perldiag>) are only displayed once (no duplicate
-descriptions). User code generated warnings ala warn() are unaffected,
-allowing duplicate user messages to be displayed.
-
-=head2 The I<splain> Program
-
-While apparently a whole nuther program, I<splain> is actually nothing
-more than a link to the (executable) F<diagnostics.pm> module, as well as
-a link to the F<diagnostics.pod> documentation. The B<-v> flag is like
-the C<use diagnostics -verbose> directive.
-The B<-p> flag is like the
-$diagnostics::PRETTY variable. Since you're post-processing with
-I<splain>, there's no sense in being able to enable() or disable() processing.
-
-Output from I<splain> is directed to B<STDOUT>, unlike the pragma.
-
-=head1 EXAMPLES
-
-The following file is certain to trigger a few errors at both
-runtime and compiletime:
-
- use diagnostics;
- print NOWHERE "nothing\n";
- print STDERR "\n\tThis message should be unadorned.\n";
- warn "\tThis is a user warning";
- print "\nDIAGNOSTIC TESTER: Please enter a <CR> here: ";
- my $a, $b = scalar <STDIN>;
- print "\n";
- print $x/$y;
-
-If you prefer to run your program first and look at its problem
-afterwards, do this:
-
- perl -w test.pl 2>test.out
- ./splain < test.out
-
-Note that this is not in general possible in shells of more dubious heritage,
-as the theoretical
-
- (perl -w test.pl >/dev/tty) >& test.out
- ./splain < test.out
-
-Because you just moved the existing B<stdout> to somewhere else.
-
-If you don't want to modify your source code, but still have on-the-fly
-warnings, do this:
-
- exec 3>&1; perl -w test.pl 2>&1 1>&3 3>&- | splain 1>&2 3>&-
-
-Nifty, eh?
-
-If you want to control warnings on the fly, do something like this.
-Make sure you do the C<use> first, or you won't be able to get
-at the enable() or disable() methods.
-
- use diagnostics; # checks entire compilation phase
- print "\ntime for 1st bogus diags: SQUAWKINGS\n";
- print BOGUS1 'nada';
- print "done with 1st bogus\n";
-
- disable diagnostics; # only turns off runtime warnings
- print "\ntime for 2nd bogus: (squelched)\n";
- print BOGUS2 'nada';
- print "done with 2nd bogus\n";
-
- enable diagnostics; # turns back on runtime warnings
- print "\ntime for 3rd bogus: SQUAWKINGS\n";
- print BOGUS3 'nada';
- print "done with 3rd bogus\n";
-
- disable diagnostics;
- print "\ntime for 4th bogus: (squelched)\n";
- print BOGUS4 'nada';
- print "done with 4th bogus\n";
-
-=head1 INTERNALS
-
-Diagnostic messages derive from the F<perldiag.pod> file when available at
-runtime. Otherwise, they may be embedded in the file itself when the
-splain package is built. See the F<Makefile> for details.
-
-If an extant $SIG{__WARN__} handler is discovered, it will continue
-to be honored, but only after the diagnostics::splainthis() function
-(the module's $SIG{__WARN__} interceptor) has had its way with your
-warnings.
-
-There is a $diagnostics::DEBUG variable you may set if you're desperately
-curious what sorts of things are being intercepted.
-
- BEGIN { $diagnostics::DEBUG = 1 }
-
-
-=head1 BUGS
-
-Not being able to say "no diagnostics" is annoying, but may not be
-insurmountable.
-
-The C<-pretty> directive is called too late to affect matters.
-You have to do this instead, and I<before> you load the module.
-
- BEGIN { $diagnostics::PRETTY = 1 }
-
-I could start up faster by delaying compilation until it should be
-needed, but this gets a "panic: top_level" when using the pragma form
-in Perl 5.001e.
-
-While it's true that this documentation is somewhat subserious, if you use
-a program named I<splain>, you should expect a bit of whimsy.
-
-=head1 AUTHOR
-
-Tom Christiansen <F<tchrist@mox.perl.com>>, 25 June 1995.
-
-=cut
-
-use strict;
-use 5.005_64;
-use Carp;
-
-our $VERSION = v1.0;
-our $DEBUG;
-our $VERBOSE;
-our $PRETTY;
-
-use Config;
-my($privlib, $archlib) = @Config{qw(privlibexp archlibexp)};
-if ($^O eq 'VMS') {
- require VMS::Filespec;
- $privlib = VMS::Filespec::unixify($privlib);
- $archlib = VMS::Filespec::unixify($archlib);
-}
-my @trypod = (
- "$archlib/pod/perldiag.pod",
- "$privlib/pod/perldiag-$Config{version}.pod",
- "$privlib/pod/perldiag.pod",
- "$archlib/pods/perldiag.pod",
- "$privlib/pods/perldiag-$Config{version}.pod",
- "$privlib/pods/perldiag.pod",
- );
-# handy for development testing of new warnings etc
-unshift @trypod, "./pod/perldiag.pod" if -e "pod/perldiag.pod";
-(my $PODFILE) = ((grep { -e } @trypod), $trypod[$#trypod])[0];
-
-$DEBUG ||= 0;
-my $WHOAMI = ref bless []; # nobody's business, prolly not even mine
-
-local $| = 1;
-local $_;
-
-my $standalone;
-my(%HTML_2_Troff, %HTML_2_Latin_1, %HTML_2_ASCII_7);
-
-CONFIG: {
- our $opt_p = our $opt_d = our $opt_v = our $opt_f = '';
-
- unless (caller) {
- $standalone++;
- require Getopt::Std;
- Getopt::Std::getopts('pdvf:')
- or die "Usage: $0 [-v] [-p] [-f splainpod]";
- $PODFILE = $opt_f if $opt_f;
- $DEBUG = 2 if $opt_d;
- $VERBOSE = $opt_v;
- $PRETTY = $opt_p;
- }
-
- if (open(POD_DIAG, $PODFILE)) {
- warn "Happy happy podfile from real $PODFILE\n" if $DEBUG;
- last CONFIG;
- }
-
- if (caller) {
- INCPATH: {
- for my $file ( (map { "$_/$WHOAMI.pm" } @INC), $0) {
- warn "Checking $file\n" if $DEBUG;
- if (open(POD_DIAG, $file)) {
- while (<POD_DIAG>) {
- next unless
- /^__END__\s*# wish diag dbase were more accessible/;
- print STDERR "podfile is $file\n" if $DEBUG;
- last INCPATH;
- }
- }
- }
- }
- } else {
- print STDERR "podfile is <DATA>\n" if $DEBUG;
- *POD_DIAG = *main::DATA;
- }
-}
-if (eof(POD_DIAG)) {
- die "couldn't find diagnostic data in $PODFILE @INC $0";
-}
-
-
-%HTML_2_Troff = (
- 'amp' => '&', # ampersand
- 'lt' => '<', # left chevron, less-than
- 'gt' => '>', # right chevron, greater-than
- 'quot' => '"', # double quote
-
- "Aacute" => "A\\*'", # capital A, acute accent
- # etc
-
-);
-
-%HTML_2_Latin_1 = (
- 'amp' => '&', # ampersand
- 'lt' => '<', # left chevron, less-than
- 'gt' => '>', # right chevron, greater-than
- 'quot' => '"', # double quote
-
- "Aacute" => "\xC1" # capital A, acute accent
-
- # etc
-);
-
-%HTML_2_ASCII_7 = (
- 'amp' => '&', # ampersand
- 'lt' => '<', # left chevron, less-than
- 'gt' => '>', # right chevron, greater-than
- 'quot' => '"', # double quote
-
- "Aacute" => "A" # capital A, acute accent
- # etc
-);
-
-our %HTML_Escapes;
-*HTML_Escapes = do {
- if ($standalone) {
- $PRETTY ? \%HTML_2_Latin_1 : \%HTML_2_ASCII_7;
- } else {
- \%HTML_2_Latin_1;
- }
-};
-
-*THITHER = $standalone ? *STDOUT : *STDERR;
-
-my $transmo = <<EOFUNC;
-sub transmo {
- #local \$^W = 0; # recursive warnings we do NOT need!
- study;
-EOFUNC
-
-my %msg;
-{
- print STDERR "FINISHING COMPILATION for $_\n" if $DEBUG;
- local $/ = '';
- local $_;
- my $header;
- my $for_item;
- while (<POD_DIAG>) {
-
- unescape();
- if ($PRETTY) {
- sub noop { return $_[0] } # spensive for a noop
- sub bold { my $str =$_[0]; $str =~ s/(.)/$1\b$1/g; return $str; }
- sub italic { my $str = $_[0]; $str =~ s/(.)/_\b$1/g; return $str; }
- s/[BC]<(.*?)>/bold($1)/ges;
- s/[LIF]<(.*?)>/italic($1)/ges;
- } else {
- s/[BC]<(.*?)>/$1/gs;
- s/[LIF]<(.*?)>/$1/gs;
- }
- unless (/^=/) {
- if (defined $header) {
- if ( $header eq 'DESCRIPTION' &&
- ( /Optional warnings are enabled/
- || /Some of these messages are generic./
- ) )
- {
- next;
- }
- s/^/ /gm;
- $msg{$header} .= $_;
- undef $for_item;
- }
- next;
- }
- unless ( s/=item (.*?)\s*\z//) {
-
- if ( s/=head1\sDESCRIPTION//) {
- $msg{$header = 'DESCRIPTION'} = '';
- undef $for_item;
- }
- elsif( s/^=for\s+diagnostics\s*\n(.*?)\s*\z// ) {
- $for_item = $1;
- }
- next;
- }
-
- # strip formatting directives in =item line
- $header = $for_item || $1;
- undef $for_item;
- $header =~ s/[A-Z]<(.*?)>/$1/g;
-
- if ($header =~ /%[csd]/) {
- my $rhs = my $lhs = $header;
- if ($lhs =~ s/(.*?)%d(?!%d)(.*)/\Q$1\E-?\\d+\Q$2\E/g) {
- $lhs =~ s/\\%s/.*?/g;
- } else {
- # if i had lookbehind negations,
- # i wouldn't have to do this \377 noise
- $lhs =~ s/(.*?)%s/\Q$1\E.*?\377/g;
- $lhs =~ s/\377([^\377]*)$/\Q$1\E/;
- $lhs =~ s/\377//g;
- $lhs =~ s/\.\*\?$/.*/; # Allow %s at the end to eat it all
- }
- $lhs =~ s/\\%c/./g;
- $transmo .= " s{^$lhs}\n {\Q$rhs\E}s\n\t&& return 1;\n";
- } else {
- $transmo .= " m{^\Q$header\E} && return 1;\n";
- }
-
- print STDERR "$WHOAMI: Duplicate entry: \"$header\"\n"
- if $msg{$header};
-
- $msg{$header} = '';
- }
-
-
- close POD_DIAG unless *main::DATA eq *POD_DIAG;
-
- die "No diagnostics?" unless %msg;
-
- $transmo .= " return 0;\n}\n";
- print STDERR $transmo if $DEBUG;
- eval $transmo;
- die $@ if $@;
-}
-
-if ($standalone) {
- if (!@ARGV and -t STDIN) { print STDERR "$0: Reading from STDIN\n" }
- while (defined (my $error = <>)) {
- splainthis($error) || print THITHER $error;
- }
- exit;
-}
-
-my $olddie;
-my $oldwarn;
-
-sub import {
- shift;
- $^W = 1; # yup, clobbered the global variable;
- # tough, if you want diags, you want diags.
- return if $SIG{__WARN__} eq \&warn_trap;
-
- for (@_) {
-
- /^-d(ebug)?$/ && do {
- $DEBUG++;
- next;
- };
-
- /^-v(erbose)?$/ && do {
- $VERBOSE++;
- next;
- };
-
- /^-p(retty)?$/ && do {
- print STDERR "$0: I'm afraid it's too late for prettiness.\n";
- $PRETTY++;
- next;
- };
-
- warn "Unknown flag: $_";
- }
-
- $oldwarn = $SIG{__WARN__};
- $olddie = $SIG{__DIE__};
- $SIG{__WARN__} = \&warn_trap;
- $SIG{__DIE__} = \&death_trap;
-}
-
-sub enable { &import }
-
-sub disable {
- shift;
- return unless $SIG{__WARN__} eq \&warn_trap;
- $SIG{__WARN__} = $oldwarn || '';
- $SIG{__DIE__} = $olddie || '';
-}
-
-sub warn_trap {
- my $warning = $_[0];
- if (caller eq $WHOAMI or !splainthis($warning)) {
- print STDERR $warning;
- }
- &$oldwarn if defined $oldwarn and $oldwarn and $oldwarn ne \&warn_trap;
-};
-
-sub death_trap {
- my $exception = $_[0];
-
- # See if we are coming from anywhere within an eval. If so we don't
- # want to explain the exception because it's going to get caught.
- my $in_eval = 0;
- my $i = 0;
- while (1) {
- my $caller = (caller($i++))[3] or last;
- if ($caller eq '(eval)') {
- $in_eval = 1;
- last;
- }
- }
-
- splainthis($exception) unless $in_eval;
- if (caller eq $WHOAMI) { print STDERR "INTERNAL EXCEPTION: $exception"; }
- &$olddie if defined $olddie and $olddie and $olddie ne \&death_trap;
-
- # We don't want to unset these if we're coming from an eval because
- # then we've turned off diagnostics. (Actually what does this next
- # line do? -PSeibel)
- $SIG{__DIE__} = $SIG{__WARN__} = '' unless $in_eval;
- local($Carp::CarpLevel) = 1;
- confess "Uncaught exception from user code:\n\t$exception";
- # up we go; where we stop, nobody knows, but i think we die now
- # but i'm deeply afraid of the &$olddie guy reraising and us getting
- # into an indirect recursion loop
-};
-
-my %exact_duplicate;
-my %old_diag;
-my $count;
-my $wantspace;
-sub splainthis {
- local $_ = shift;
- local $\;
- ### &finish_compilation unless %msg;
- s/\.?\n+$//;
- my $orig = $_;
- # return unless defined;
- s/, <.*?> (?:line|chunk).*$//;
- my $real = s/(.*?) at .*? (?:line|chunk) \d+.*/$1/;
- s/^\((.*)\)$/$1/;
- if ($exact_duplicate{$orig}++) {
- return &transmo;
- }
- else {
- return 0 unless &transmo;
- }
- $orig = shorten($orig);
- if ($old_diag{$_}) {
- autodescribe();
- print THITHER "$orig (#$old_diag{$_})\n";
- $wantspace = 1;
- } else {
- autodescribe();
- $old_diag{$_} = ++$count;
- print THITHER "\n" if $wantspace;
- $wantspace = 0;
- print THITHER "$orig (#$old_diag{$_})\n";
- if ($msg{$_}) {
- print THITHER $msg{$_};
- } else {
- if (0 and $standalone) {
- print THITHER " **** Error #$old_diag{$_} ",
- ($real ? "is" : "appears to be"),
- " an unknown diagnostic message.\n\n";
- }
- return 0;
- }
- }
- return 1;
-}
-
-sub autodescribe {
- if ($VERBOSE and not $count) {
- print THITHER &{$PRETTY ? \&bold : \&noop}("DESCRIPTION OF DIAGNOSTICS"),
- "\n$msg{DESCRIPTION}\n";
- }
-}
-
-sub unescape {
- s {
- E<
- ( [A-Za-z]+ )
- >
- } {
- do {
- exists $HTML_Escapes{$1}
- ? do { $HTML_Escapes{$1} }
- : do {
- warn "Unknown escape: E<$1> in $_";
- "E<$1>";
- }
- }
- }egx;
-}
-
-sub shorten {
- my $line = $_[0];
- if (length($line) > 79 and index($line, "\n") == -1) {
- my $space_place = rindex($line, ' ', 79);
- if ($space_place != -1) {
- substr($line, $space_place, 1) = "\n\t";
- }
- }
- return $line;
-}
-
-
-1 unless $standalone; # or it'll complain about itself
-__END__ # wish diag dbase were more accessible
diff --git a/contrib/perl5/lib/dotsh.pl b/contrib/perl5/lib/dotsh.pl
deleted file mode 100644
index 5be2413..0000000
--- a/contrib/perl5/lib/dotsh.pl
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# @(#)dotsh.pl 03/19/94
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-#
-# Author: Charles Collins
-#
-# Description:
-# This routine takes a shell script and 'dots' it into the current perl
-# environment. This makes it possible to use existing system scripts
-# to alter environment variables on the fly.
-#
-# Usage:
-# &dotsh ('ShellScript', 'DependentVariable(s)');
-#
-# where
-#
-# 'ShellScript' is the full name of the shell script to be dotted
-#
-# 'DependentVariable(s)' is an optional list of shell variables in the
-# form VARIABLE=VALUE,VARIABLE=VALUE,... that 'ShellScript' is
-# dependent upon. These variables MUST be defined using shell syntax.
-#
-# Example:
-# &dotsh ('/tmp/foo', 'arg1');
-# &dotsh ('/tmp/foo');
-# &dotsh ('/tmp/foo arg1 ... argN');
-#
-sub dotsh {
- local(@sh) = @_;
- local($tmp,$key,$shell,$command,$args,$vars) = '';
- local(*dotsh);
- undef *dotsh;
- $dotsh = shift(@sh);
- @dotsh = split (/\s/, $dotsh);
- $command = shift (@dotsh);
- $args = join (" ", @dotsh);
- $vars = join ("\n", @sh);
- open (_SH_ENV, "$command") || die "Could not open $dotsh!\n";
- chop($_ = <_SH_ENV>);
- $shell = "$1 -c" if ($_ =~ /^\#\!\s*(\S+(\/sh|\/ksh|\/zsh|\/csh))\s*$/);
- close (_SH_ENV);
- if (!$shell) {
- if ($ENV{'SHELL'} =~ /\/sh$|\/ksh$|\/zsh$|\/bash$|\/csh$/) {
- $shell = "$ENV{'SHELL'} -c";
- } else {
- print "SHELL not recognized!\nUsing /bin/sh...\n";
- $shell = "/bin/sh -c";
- }
- }
- if (length($vars) > 0) {
- system "$shell \"$vars;. $command $args; set > /tmp/_sh_env$$\"";
- } else {
- system "$shell \". $command $args; set > /tmp/_sh_env$$\"";
- }
-
- open (_SH_ENV, "/tmp/_sh_env$$") || die "Could not open /tmp/_sh_env$$!\n";
- while (<_SH_ENV>) {
- chop;
- m/^([^=]*)=(.*)/s;
- $ENV{$1} = $2;
- }
- close (_SH_ENV);
- system "rm -f /tmp/_sh_env$$";
-
- foreach $key (keys(%ENV)) {
- $tmp .= "\$$key = \$ENV{'$key'};" if $key =~ /^[A-Za-z]\w*$/;
- }
- eval $tmp;
-}
-1;
diff --git a/contrib/perl5/lib/dumpvar.pl b/contrib/perl5/lib/dumpvar.pl
deleted file mode 100644
index 51e9c88..0000000
--- a/contrib/perl5/lib/dumpvar.pl
+++ /dev/null
@@ -1,443 +0,0 @@
-require 5.002; # For (defined ref)
-package dumpvar;
-
-# Needed for PrettyPrinter only:
-
-# require 5.001; # Well, it coredumps anyway undef DB in 5.000 (not now)
-
-# translate control chars to ^X - Randal Schwartz
-# Modifications to print types by Peter Gordon v1.0
-
-# Ilya Zakharevich -- patches after 5.001 (and some before ;-)
-
-# Won't dump symbol tables and contents of debugged files by default
-
-$winsize = 80 unless defined $winsize;
-
-
-# Defaults
-
-# $globPrint = 1;
-$printUndef = 1 unless defined $printUndef;
-$tick = "auto" unless defined $tick;
-$unctrl = 'quote' unless defined $unctrl;
-$subdump = 1;
-$dumpReused = 0 unless defined $dumpReused;
-$bareStringify = 1 unless defined $bareStringify;
-
-sub main::dumpValue {
- local %address;
- local $^W=0;
- (print "undef\n"), return unless defined $_[0];
- (print &stringify($_[0]), "\n"), return unless ref $_[0];
- dumpvar::unwrap($_[0],0);
-}
-
-# This one is good for variable names:
-
-sub unctrl {
- local($_) = @_;
- local($v) ;
-
- return \$_ if ref \$_ eq "GLOB";
- s/([\001-\037\177])/'^'.pack('c',ord($1)^64)/eg;
- $_;
-}
-
-sub stringify {
- local($_,$noticks) = @_;
- local($v) ;
- my $tick = $tick;
-
- return 'undef' unless defined $_ or not $printUndef;
- return $_ . "" if ref \$_ eq 'GLOB';
- $_ = &{'overload::StrVal'}($_)
- if $bareStringify and ref $_
- and %overload:: and defined &{'overload::StrVal'};
-
- if ($tick eq 'auto') {
- if (/[\000-\011\013-\037\177]/) {
- $tick = '"';
- }else {
- $tick = "'";
- }
- }
- if ($tick eq "'") {
- s/([\'\\])/\\$1/g;
- } elsif ($unctrl eq 'unctrl') {
- s/([\"\\])/\\$1/g ;
- s/([\000-\037\177])/'^'.pack('c',ord($1)^64)/eg;
- s/([\200-\377])/'\\0x'.sprintf('%2X',ord($1))/eg
- if $quoteHighBit;
- } elsif ($unctrl eq 'quote') {
- s/([\"\\\$\@])/\\$1/g if $tick eq '"';
- s/\033/\\e/g;
- s/([\000-\037\177])/'\\c'.chr(ord($1)^64)/eg;
- }
- s/([\200-\377])/'\\'.sprintf('%3o',ord($1))/eg if $quoteHighBit;
- ($noticks || /^\d+(\.\d*)?\Z/)
- ? $_
- : $tick . $_ . $tick;
-}
-
-sub ShortArray {
- my $tArrayDepth = $#{$_[0]} ;
- $tArrayDepth = $#{$_[0]} < $arrayDepth-1 ? $#{$_[0]} : $arrayDepth-1
- unless $arrayDepth eq '' ;
- my $shortmore = "";
- $shortmore = " ..." if $tArrayDepth < $#{$_[0]} ;
- if (!grep(ref $_, @{$_[0]})) {
- $short = "0..$#{$_[0]} '" .
- join("' '", @{$_[0]}[0..$tArrayDepth]) . "'$shortmore";
- return $short if length $short <= $compactDump;
- }
- undef;
-}
-
-sub DumpElem {
- my $short = &stringify($_[0], ref $_[0]);
- if ($veryCompact && ref $_[0]
- && (ref $_[0] eq 'ARRAY' and !grep(ref $_, @{$_[0]}) )) {
- my $end = "0..$#{$v} '" .
- join("' '", @{$_[0]}[0..$tArrayDepth]) . "'$shortmore";
- } elsif ($veryCompact && ref $_[0]
- && (ref $_[0] eq 'HASH') and !grep(ref $_, values %{$_[0]})) {
- my $end = 1;
- $short = $sp . "0..$#{$v} '" .
- join("' '", @{$v}[0..$tArrayDepth]) . "'$shortmore";
- } else {
- print "$short\n";
- unwrap($_[0],$_[1]);
- }
-}
-
-sub unwrap {
- return if $DB::signal;
- local($v) = shift ;
- local($s) = shift ; # extra no of spaces
- local(%v,@v,$sp,$value,$key,@sortKeys,$more,$shortmore,$short) ;
- local($tHashDepth,$tArrayDepth) ;
-
- $sp = " " x $s ;
- $s += 3 ;
-
- # Check for reused addresses
- if (ref $v) {
- my $val = $v;
- $val = &{'overload::StrVal'}($v)
- if %overload:: and defined &{'overload::StrVal'};
- ($address) = $val =~ /(0x[0-9a-f]+)\)$/ ;
- if (!$dumpReused && defined $address) {
- $address{$address}++ ;
- if ( $address{$address} > 1 ) {
- print "${sp}-> REUSED_ADDRESS\n" ;
- return ;
- }
- }
- } elsif (ref \$v eq 'GLOB') {
- $address = "$v" . ""; # To avoid a bug with globs
- $address{$address}++ ;
- if ( $address{$address} > 1 ) {
- print "${sp}*DUMPED_GLOB*\n" ;
- return ;
- }
- }
-
- if (ref $v eq 'Regexp') {
- my $re = "$v";
- $re =~ s,/,\\/,g;
- print "$sp-> qr/$re/\n";
- return;
- }
-
- if ( UNIVERSAL::isa($v, 'HASH') ) {
- @sortKeys = sort keys(%$v) ;
- undef $more ;
- $tHashDepth = $#sortKeys ;
- $tHashDepth = $#sortKeys < $hashDepth-1 ? $#sortKeys : $hashDepth-1
- unless $hashDepth eq '' ;
- $more = "....\n" if $tHashDepth < $#sortKeys ;
- $shortmore = "";
- $shortmore = ", ..." if $tHashDepth < $#sortKeys ;
- $#sortKeys = $tHashDepth ;
- if ($compactDump && !grep(ref $_, values %{$v})) {
- #$short = $sp .
- # (join ', ',
-# Next row core dumps during require from DB on 5.000, even with map {"_"}
- # map {&stringify($_) . " => " . &stringify($v->{$_})}
- # @sortKeys) . "'$shortmore";
- $short = $sp;
- my @keys;
- for (@sortKeys) {
- push @keys, &stringify($_) . " => " . &stringify($v->{$_});
- }
- $short .= join ', ', @keys;
- $short .= $shortmore;
- (print "$short\n"), return if length $short <= $compactDump;
- }
- for $key (@sortKeys) {
- return if $DB::signal;
- $value = $ {$v}{$key} ;
- print "$sp", &stringify($key), " => ";
- DumpElem $value, $s;
- }
- print "$sp empty hash\n" unless @sortKeys;
- print "$sp$more" if defined $more ;
- } elsif ( UNIVERSAL::isa($v, 'ARRAY') ) {
- $tArrayDepth = $#{$v} ;
- undef $more ;
- $tArrayDepth = $#{$v} < $arrayDepth-1 ? $#{$v} : $arrayDepth-1
- unless $arrayDepth eq '' ;
- $more = "....\n" if $tArrayDepth < $#{$v} ;
- $shortmore = "";
- $shortmore = " ..." if $tArrayDepth < $#{$v} ;
- if ($compactDump && !grep(ref $_, @{$v})) {
- if ($#$v >= 0) {
- $short = $sp . "0..$#{$v} " .
- join(" ",
- map {exists $v->[$_] ? stringify $v->[$_] : "empty"} ($[..$tArrayDepth)
- ) . "$shortmore";
- } else {
- $short = $sp . "empty array";
- }
- (print "$short\n"), return if length $short <= $compactDump;
- }
- #if ($compactDump && $short = ShortArray($v)) {
- # print "$short\n";
- # return;
- #}
- for $num ($[ .. $tArrayDepth) {
- return if $DB::signal;
- print "$sp$num ";
- if (exists $v->[$num]) {
- DumpElem $v->[$num], $s;
- } else {
- print "empty slot\n";
- }
- }
- print "$sp empty array\n" unless @$v;
- print "$sp$more" if defined $more ;
- } elsif ( UNIVERSAL::isa($v, 'SCALAR') or ref $v eq 'REF' ) {
- print "$sp-> ";
- DumpElem $$v, $s;
- } elsif ( UNIVERSAL::isa($v, 'CODE') ) {
- print "$sp-> ";
- dumpsub (0, $v);
- } elsif ( UNIVERSAL::isa($v, 'GLOB') ) {
- print "$sp-> ",&stringify($$v,1),"\n";
- if ($globPrint) {
- $s += 3;
- dumpglob($s, "{$$v}", $$v, 1);
- } elsif (defined ($fileno = fileno($v))) {
- print( (' ' x ($s+3)) . "FileHandle({$$v}) => fileno($fileno)\n" );
- }
- } elsif (ref \$v eq 'GLOB') {
- if ($globPrint) {
- dumpglob($s, "{$v}", $v, 1) if $globPrint;
- } elsif (defined ($fileno = fileno(\$v))) {
- print( (' ' x $s) . "FileHandle({$v}) => fileno($fileno)\n" );
- }
- }
-}
-
-sub matchvar {
- $_[0] eq $_[1] or
- ($_[1] =~ /^([!~])(.)([\x00-\xff]*)/) and
- ($1 eq '!') ^ (eval {($_[2] . "::" . $_[0]) =~ /$2$3/});
-}
-
-sub compactDump {
- $compactDump = shift if @_;
- $compactDump = 6*80-1 if $compactDump and $compactDump < 2;
- $compactDump;
-}
-
-sub veryCompact {
- $veryCompact = shift if @_;
- compactDump(1) if !$compactDump and $veryCompact;
- $veryCompact;
-}
-
-sub unctrlSet {
- if (@_) {
- my $in = shift;
- if ($in eq 'unctrl' or $in eq 'quote') {
- $unctrl = $in;
- } else {
- print "Unknown value for `unctrl'.\n";
- }
- }
- $unctrl;
-}
-
-sub quote {
- if (@_ and $_[0] eq '"') {
- $tick = '"';
- $unctrl = 'quote';
- } elsif (@_ and $_[0] eq 'auto') {
- $tick = 'auto';
- $unctrl = 'quote';
- } elsif (@_) { # Need to set
- $tick = "'";
- $unctrl = 'unctrl';
- }
- $tick;
-}
-
-sub dumpglob {
- return if $DB::signal;
- my ($off,$key, $val, $all) = @_;
- local(*entry) = $val;
- my $fileno;
- if (($key !~ /^_</ or $dumpDBFiles) and defined $entry) {
- print( (' ' x $off) . "\$", &unctrl($key), " = " );
- DumpElem $entry, 3+$off;
- }
- if (($key !~ /^_</ or $dumpDBFiles) and @entry) {
- print( (' ' x $off) . "\@$key = (\n" );
- unwrap(\@entry,3+$off) ;
- print( (' ' x $off) . ")\n" );
- }
- if ($key ne "main::" && $key ne "DB::" && %entry
- && ($dumpPackages or $key !~ /::$/)
- && ($key !~ /^_</ or $dumpDBFiles)
- && !($package eq "dumpvar" and $key eq "stab")) {
- print( (' ' x $off) . "\%$key = (\n" );
- unwrap(\%entry,3+$off) ;
- print( (' ' x $off) . ")\n" );
- }
- if (defined ($fileno = fileno(*entry))) {
- print( (' ' x $off) . "FileHandle($key) => fileno($fileno)\n" );
- }
- if ($all) {
- if (defined &entry) {
- dumpsub($off, $key);
- }
- }
-}
-
-sub CvGV_name_or_bust {
- my $in = shift;
- return if $skipCvGV; # Backdoor to avoid problems if XS broken...
- $in = \&$in; # Hard reference...
- eval {require Devel::Peek; 1} or return;
- my $gv = Devel::Peek::CvGV($in) or return;
- *$gv{PACKAGE} . '::' . *$gv{NAME};
-}
-
-sub dumpsub {
- my ($off,$sub) = @_;
- my $ini = $sub;
- my $s;
- $sub = $1 if $sub =~ /^\{\*(.*)\}$/;
- my $subref = defined $1 ? \&$sub : \&$ini;
- my $place = $DB::sub{$sub} || (($s = $subs{"$subref"}) && $DB::sub{$s})
- || (($s = CvGV_name_or_bust($subref)) && $DB::sub{$s})
- || ($subdump && ($s = findsubs("$subref")) && $DB::sub{$s});
- $place = '???' unless defined $place;
- $s = $sub unless defined $s;
- print( (' ' x $off) . "&$s in $place\n" );
-}
-
-sub findsubs {
- return undef unless %DB::sub;
- my ($addr, $name, $loc);
- while (($name, $loc) = each %DB::sub) {
- $addr = \&$name;
- $subs{"$addr"} = $name;
- }
- $subdump = 0;
- $subs{ shift() };
-}
-
-sub main::dumpvar {
- my ($package,@vars) = @_;
- local(%address,$key,$val,$^W);
- $package .= "::" unless $package =~ /::$/;
- *stab = *{"main::"};
- while ($package =~ /(\w+?::)/g){
- *stab = $ {stab}{$1};
- }
- local $TotalStrings = 0;
- local $Strings = 0;
- local $CompleteTotal = 0;
- while (($key,$val) = each(%stab)) {
- return if $DB::signal;
- next if @vars && !grep( matchvar($key, $_), @vars );
- if ($usageOnly) {
- globUsage(\$val, $key)
- if ($package ne 'dumpvar' or $key ne 'stab')
- and ref(\$val) eq 'GLOB';
- } else {
- dumpglob(0,$key, $val);
- }
- }
- if ($usageOnly) {
- print "String space: $TotalStrings bytes in $Strings strings.\n";
- $CompleteTotal += $TotalStrings;
- print "Grand total = $CompleteTotal bytes (1 level deep) + overhead.\n";
- }
-}
-
-sub scalarUsage {
- my $size = length($_[0]);
- $TotalStrings += $size;
- $Strings++;
- $size;
-}
-
-sub arrayUsage { # array ref, name
- my $size = 0;
- map {$size += scalarUsage($_)} @{$_[0]};
- my $len = @{$_[0]};
- print "\@$_[1] = $len item", ($len > 1 ? "s" : ""),
- " (data: $size bytes)\n"
- if defined $_[1];
- $CompleteTotal += $size;
- $size;
-}
-
-sub hashUsage { # hash ref, name
- my @keys = keys %{$_[0]};
- my @values = values %{$_[0]};
- my $keys = arrayUsage \@keys;
- my $values = arrayUsage \@values;
- my $len = @keys;
- my $total = $keys + $values;
- print "\%$_[1] = $len item", ($len > 1 ? "s" : ""),
- " (keys: $keys; values: $values; total: $total bytes)\n"
- if defined $_[1];
- $total;
-}
-
-sub globUsage { # glob ref, name
- local *name = *{$_[0]};
- $total = 0;
- $total += scalarUsage $name if defined $name;
- $total += arrayUsage \@name, $_[1] if @name;
- $total += hashUsage \%name, $_[1] if %name and $_[1] ne "main::"
- and $_[1] ne "DB::"; #and !($package eq "dumpvar" and $key eq "stab"));
- $total;
-}
-
-sub packageUsage {
- my ($package,@vars) = @_;
- $package .= "::" unless $package =~ /::$/;
- local *stab = *{"main::"};
- while ($package =~ /(\w+?::)/g){
- *stab = $ {stab}{$1};
- }
- local $TotalStrings = 0;
- local $CompleteTotal = 0;
- my ($key,$val);
- while (($key,$val) = each(%stab)) {
- next if @vars && !grep($key eq $_,@vars);
- globUsage \$val, $key unless $package eq 'dumpvar' and $key eq 'stab';
- }
- print "String space: $TotalStrings.\n";
- $CompleteTotal += $TotalStrings;
- print "\nGrand total = $CompleteTotal bytes\n";
-}
-
-1;
-
diff --git a/contrib/perl5/lib/exceptions.pl b/contrib/perl5/lib/exceptions.pl
deleted file mode 100644
index ed1f927..0000000
--- a/contrib/perl5/lib/exceptions.pl
+++ /dev/null
@@ -1,61 +0,0 @@
-# exceptions.pl
-# tchrist@convex.com
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-#
-# Here's a little code I use for exception handling. It's really just
-# glorfied eval/die. The way to use use it is when you might otherwise
-# exit, use &throw to raise an exception. The first enclosing &catch
-# handler looks at the exception and decides whether it can catch this kind
-# (catch takes a list of regexps to catch), and if so, it returns the one it
-# caught. If it *can't* catch it, then it will reraise the exception
-# for someone else to possibly see, or to die otherwise.
-#
-# I use oddly named variables in order to make darn sure I don't conflict
-# with my caller. I also hide in my own package, and eval the code in his.
-#
-# The EXCEPTION: prefix is so you can tell whether it's a user-raised
-# exception or a perl-raised one (eval error).
-#
-# --tom
-#
-# examples:
-# if (&catch('/$user_input/', 'regexp', 'syntax error') {
-# warn "oops try again";
-# redo;
-# }
-#
-# if ($error = &catch('&subroutine()')) { # catches anything
-#
-# &throw('bad input') if /^$/;
-
-sub catch {
- package exception;
- local($__code__, @__exceptions__) = @_;
- local($__package__) = caller;
- local($__exception__);
-
- eval "package $__package__; $__code__";
- if ($__exception__ = &'thrown) {
- for (@__exceptions__) {
- return $__exception__ if /$__exception__/;
- }
- &'throw($__exception__);
- }
-}
-
-sub throw {
- local($exception) = @_;
- die "EXCEPTION: $exception\n";
-}
-
-sub thrown {
- $@ =~ /^(EXCEPTION: )+(.+)/ && $2;
-}
-
-1;
diff --git a/contrib/perl5/lib/fastcwd.pl b/contrib/perl5/lib/fastcwd.pl
deleted file mode 100644
index ecd87c8..0000000
--- a/contrib/perl5/lib/fastcwd.pl
+++ /dev/null
@@ -1,43 +0,0 @@
-# By John Bazik
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Cwd
-#
-# Usage: $cwd = &fastcwd;
-#
-# This is a faster version of getcwd. It's also more dangerous because
-# you might chdir out of a directory that you can't chdir back into.
-
-sub fastcwd {
- local($odev, $oino, $cdev, $cino, $tdev, $tino);
- local(@path, $path);
- local(*DIR);
-
- ($cdev, $cino) = stat('.');
- for (;;) {
- ($odev, $oino) = ($cdev, $cino);
- chdir('..');
- ($cdev, $cino) = stat('.');
- last if $odev == $cdev && $oino == $cino;
- opendir(DIR, '.');
- for (;;) {
- $_ = readdir(DIR);
- next if $_ eq '.';
- next if $_ eq '..';
-
- last unless $_;
- ($tdev, $tino) = lstat($_);
- last unless $tdev != $odev || $tino != $oino;
- }
- closedir(DIR);
- unshift(@path, $_);
- }
- chdir($path = '/' . join('/', @path));
- $path;
-}
-1;
diff --git a/contrib/perl5/lib/fields.pm b/contrib/perl5/lib/fields.pm
deleted file mode 100644
index 37ff99d..0000000
--- a/contrib/perl5/lib/fields.pm
+++ /dev/null
@@ -1,285 +0,0 @@
-package fields;
-
-=head1 NAME
-
-fields - compile-time class fields
-
-=head1 SYNOPSIS
-
- {
- package Foo;
- use fields qw(foo bar _Foo_private);
- sub new {
- my Foo $self = shift;
- unless (ref $self) {
- $self = fields::new($self);
- $self->{_Foo_private} = "this is Foo's secret";
- }
- $self->{foo} = 10;
- $self->{bar} = 20;
- return $self;
- }
- }
-
- my Foo $var = Foo::->new;
- $var->{foo} = 42;
-
- # this will generate a compile-time error
- $var->{zap} = 42;
-
- # subclassing
- {
- package Bar;
- use base 'Foo';
- use fields qw(baz _Bar_private); # not shared with Foo
- sub new {
- my $class = shift;
- my $self = fields::new($class);
- $self->SUPER::new(); # init base fields
- $self->{baz} = 10; # init own fields
- $self->{_Bar_private} = "this is Bar's secret";
- return $self;
- }
- }
-
-=head1 DESCRIPTION
-
-The C<fields> pragma enables compile-time verified class fields.
-
-NOTE: The current implementation keeps the declared fields in the %FIELDS
-hash of the calling package, but this may change in future versions.
-Do B<not> update the %FIELDS hash directly, because it must be created
-at compile-time for it to be fully useful, as is done by this pragma.
-
-If a typed lexical variable holding a reference is used to access a
-hash element and a package with the same name as the type has declared
-class fields using this pragma, then the operation is turned into an
-array access at compile time.
-
-The related C<base> pragma will combine fields from base classes and any
-fields declared using the C<fields> pragma. This enables field
-inheritance to work properly.
-
-Field names that start with an underscore character are made private to
-the class and are not visible to subclasses. Inherited fields can be
-overridden but will generate a warning if used together with the C<-w>
-switch.
-
-The effect of all this is that you can have objects with named fields
-which are as compact and as fast arrays to access. This only works
-as long as the objects are accessed through properly typed variables.
-If the objects are not typed, access is only checked at run time.
-
-The following functions are supported:
-
-=over 8
-
-=item new
-
-fields::new() creates and blesses a pseudo-hash comprised of the fields
-declared using the C<fields> pragma into the specified class.
-This makes it possible to write a constructor like this:
-
- package Critter::Sounds;
- use fields qw(cat dog bird);
-
- sub new {
- my Critter::Sounds $self = shift;
- $self = fields::new($self) unless ref $self;
- $self->{cat} = 'meow'; # scalar element
- @$self{'dog','bird'} = ('bark','tweet'); # slice
- return $self;
- }
-
-=item phash
-
-fields::phash() can be used to create and initialize a plain (unblessed)
-pseudo-hash. This function should always be used instead of creating
-pseudo-hashes directly.
-
-If the first argument is a reference to an array, the pseudo-hash will
-be created with keys from that array. If a second argument is supplied,
-it must also be a reference to an array whose elements will be used as
-the values. If the second array contains less elements than the first,
-the trailing elements of the pseudo-hash will not be initialized.
-This makes it particularly useful for creating a pseudo-hash from
-subroutine arguments:
-
- sub dogtag {
- my $tag = fields::phash([qw(name rank ser_num)], [@_]);
- }
-
-fields::phash() also accepts a list of key-value pairs that will
-be used to construct the pseudo hash. Examples:
-
- my $tag = fields::phash(name => "Joe",
- rank => "captain",
- ser_num => 42);
-
- my $pseudohash = fields::phash(%args);
-
-=back
-
-=head1 SEE ALSO
-
-L<base>,
-L<perlref/Pseudo-hashes: Using an array as a hash>
-
-=cut
-
-use 5.005_64;
-use strict;
-no strict 'refs';
-use warnings::register;
-our(%attr, $VERSION);
-
-$VERSION = "1.01";
-
-# some constants
-sub _PUBLIC () { 1 }
-sub _PRIVATE () { 2 }
-
-# The %attr hash holds the attributes of the currently assigned fields
-# per class. The hash is indexed by class names and the hash value is
-# an array reference. The first element in the array is the lowest field
-# number not belonging to a base class. The remaining elements' indices
-# are the field numbers. The values are integer bit masks, or undef
-# in the case of base class private fields (which occupy a slot but are
-# otherwise irrelevant to the class).
-
-sub import {
- my $class = shift;
- return unless @_;
- my $package = caller(0);
- # avoid possible typo warnings
- %{"$package\::FIELDS"} = () unless %{"$package\::FIELDS"};
- my $fields = \%{"$package\::FIELDS"};
- my $fattr = ($attr{$package} ||= [1]);
- my $next = @$fattr;
-
- if ($next > $fattr->[0]
- and ($fields->{$_[0]} || 0) >= $fattr->[0])
- {
- # There are already fields not belonging to base classes.
- # Looks like a possible module reload...
- $next = $fattr->[0];
- }
- foreach my $f (@_) {
- my $fno = $fields->{$f};
-
- # Allow the module to be reloaded so long as field positions
- # have not changed.
- if ($fno and $fno != $next) {
- require Carp;
- if ($fno < $fattr->[0]) {
- warnings::warnif("Hides field '$f' in base class") ;
- } else {
- Carp::croak("Field name '$f' already in use");
- }
- }
- $fields->{$f} = $next;
- $fattr->[$next] = ($f =~ /^_/) ? _PRIVATE : _PUBLIC;
- $next += 1;
- }
- if (@$fattr > $next) {
- # Well, we gave them the benefit of the doubt by guessing the
- # module was reloaded, but they appear to be declaring fields
- # in more than one place. We can't be sure (without some extra
- # bookkeeping) that the rest of the fields will be declared or
- # have the same positions, so punt.
- require Carp;
- Carp::croak ("Reloaded module must declare all fields at once");
- }
-}
-
-sub inherit { # called by base.pm when $base_fields is nonempty
- my($derived, $base) = @_;
- my $base_attr = $attr{$base};
- my $derived_attr = $attr{$derived} ||= [];
- # avoid possible typo warnings
- %{"$base\::FIELDS"} = () unless %{"$base\::FIELDS"};
- %{"$derived\::FIELDS"} = () unless %{"$derived\::FIELDS"};
- my $base_fields = \%{"$base\::FIELDS"};
- my $derived_fields = \%{"$derived\::FIELDS"};
-
- $derived_attr->[0] = $base_attr ? scalar(@$base_attr) : 1;
- while (my($k,$v) = each %$base_fields) {
- my($fno);
- if ($fno = $derived_fields->{$k} and $fno != $v) {
- require Carp;
- Carp::croak ("Inherited %FIELDS can't override existing %FIELDS");
- }
- if ($base_attr->[$v] & _PRIVATE) {
- $derived_attr->[$v] = undef;
- } else {
- $derived_attr->[$v] = $base_attr->[$v];
- $derived_fields->{$k} = $v;
- }
- }
-}
-
-sub _dump # sometimes useful for debugging
-{
- for my $pkg (sort keys %attr) {
- print "\n$pkg";
- if (@{"$pkg\::ISA"}) {
- print " (", join(", ", @{"$pkg\::ISA"}), ")";
- }
- print "\n";
- my $fields = \%{"$pkg\::FIELDS"};
- for my $f (sort {$fields->{$a} <=> $fields->{$b}} keys %$fields) {
- my $no = $fields->{$f};
- print " $no: $f";
- my $fattr = $attr{$pkg}[$no];
- if (defined $fattr) {
- my @a;
- push(@a, "public") if $fattr & _PUBLIC;
- push(@a, "private") if $fattr & _PRIVATE;
- push(@a, "inherited") if $no < $attr{$pkg}[0];
- print "\t(", join(", ", @a), ")";
- }
- print "\n";
- }
- }
-}
-
-sub new {
- my $class = shift;
- $class = ref $class if ref $class;
- return bless [\%{$class . "::FIELDS"}], $class;
-}
-
-sub phash {
- my $h;
- my $v;
- if (@_) {
- if (ref $_[0] eq 'ARRAY') {
- my $a = shift;
- @$h{@$a} = 1 .. @$a;
- if (@_) {
- $v = shift;
- unless (! @_ and ref $v eq 'ARRAY') {
- require Carp;
- Carp::croak ("Expected at most two array refs\n");
- }
- }
- }
- else {
- if (@_ % 2) {
- require Carp;
- Carp::croak ("Odd number of elements initializing pseudo-hash\n");
- }
- my $i = 0;
- @$h{grep ++$i % 2, @_} = 1 .. @_ / 2;
- $i = 0;
- $v = [grep $i++ % 2, @_];
- }
- }
- else {
- $h = {};
- $v = [];
- }
- [ $h, @$v ];
-}
-
-1;
diff --git a/contrib/perl5/lib/filetest.pm b/contrib/perl5/lib/filetest.pm
deleted file mode 100644
index b52a9b48..0000000
--- a/contrib/perl5/lib/filetest.pm
+++ /dev/null
@@ -1,68 +0,0 @@
-package filetest;
-
-=head1 NAME
-
-filetest - Perl pragma to control the filetest permission operators
-
-=head1 SYNOPSIS
-
- $can_perhaps_read = -r "file"; # use the mode bits
- {
- use filetest 'access'; # intuit harder
- $can_really_read = -r "file";
- }
- $can_perhaps_read = -r "file"; # use the mode bits again
-
-=head1 DESCRIPTION
-
-This pragma tells the compiler to change the behaviour of the filetest
-permissions operators, the C<-r> C<-w> C<-x> C<-R> C<-W> C<-X>
-(see L<perlfunc>).
-
-The default behaviour to use the mode bits as returned by the stat()
-family of calls. This, however, may not be the right thing to do if
-for example various ACL (access control lists) schemes are in use.
-For such environments, C<use filetest> may help the permission
-operators to return results more consistent with other tools.
-
-Each "use filetest" or "no filetest" affects statements to the end of
-the enclosing block.
-
-There may be a slight performance decrease in the filetests
-when C<use filetest> is in effect, because in some systems
-the extended functionality needs to be emulated.
-
-B<NOTE>: using the file tests for security purposes is a lost cause
-from the start: there is a window open for race conditions (who is to
-say that the permissions will not change between the test and the real
-operation?). Therefore if you are serious about security, just try
-the real operation and test for its success. Think atomicity.
-
-=head2 subpragma access
-
-Currently only one subpragma, C<access> is implemented. It enables
-(or disables) the use of access() or similar system calls. This
-extended filetest functionality is used only when the argument of the
-operators is a filename, not when it is a filehandle.
-
-=cut
-
-$filetest::hint_bits = 0x00400000;
-
-sub import {
- if ( $_[1] eq 'access' ) {
- $^H |= $filetest::hint_bits;
- } else {
- die "filetest: the only implemented subpragma is 'access'.\n";
- }
-}
-
-sub unimport {
- if ( $_[1] eq 'access' ) {
- $^H &= ~$filetest::hint_bits;
- } else {
- die "filetest: the only implemented subpragma is 'access'.\n";
- }
-}
-
-1;
diff --git a/contrib/perl5/lib/find.pl b/contrib/perl5/lib/find.pl
deleted file mode 100644
index ee5dc5d..0000000
--- a/contrib/perl5/lib/find.pl
+++ /dev/null
@@ -1,47 +0,0 @@
-# Usage:
-# require "find.pl";
-#
-# &find('/foo','/bar');
-#
-# sub wanted { ... }
-# where wanted does whatever you want. $dir contains the
-# current directory name, and $_ the current filename within
-# that directory. $name contains "$dir/$_". You are cd'ed
-# to $dir when the function is called. The function may
-# set $prune to prune the tree.
-#
-# This library is primarily for find2perl, which, when fed
-#
-# find2perl / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune
-#
-# spits out something like this
-#
-# sub wanted {
-# /^\.nfs.*$/ &&
-# (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
-# int(-M _) > 7 &&
-# unlink($_)
-# ||
-# ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &&
-# $dev < 0 &&
-# ($prune = 1);
-# }
-#
-# Set the variable $dont_use_nlink if you're using AFS, since AFS cheats.
-
-use File::Find ();
-
-*name = *File::Find::name;
-*prune = *File::Find::prune;
-*dir = *File::Find::dir;
-*topdir = *File::Find::topdir;
-*topdev = *File::Find::topdev;
-*topino = *File::Find::topino;
-*topmode = *File::Find::topmode;
-*topnlink = *File::Find::topnlink;
-
-sub find {
- &File::Find::find(\&wanted, @_);
-}
-
-1;
diff --git a/contrib/perl5/lib/finddepth.pl b/contrib/perl5/lib/finddepth.pl
deleted file mode 100644
index bfa44bb..0000000
--- a/contrib/perl5/lib/finddepth.pl
+++ /dev/null
@@ -1,46 +0,0 @@
-# Usage:
-# require "finddepth.pl";
-#
-# &finddepth('/foo','/bar');
-#
-# sub wanted { ... }
-# where wanted does whatever you want. $dir contains the
-# current directory name, and $_ the current filename within
-# that directory. $name contains "$dir/$_". You are cd'ed
-# to $dir when the function is called. The function may
-# set $prune to prune the tree.
-#
-# This library is primarily for find2perl, which, when fed
-#
-# find2perl / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune
-#
-# spits out something like this
-#
-# sub wanted {
-# /^\.nfs.*$/ &&
-# (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
-# int(-M _) > 7 &&
-# unlink($_)
-# ||
-# ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &&
-# $dev < 0 &&
-# ($prune = 1);
-# }
-
-
-use File::Find ();
-
-*name = *File::Find::name;
-*prune = *File::Find::prune;
-*dir = *File::Find::dir;
-*topdir = *File::Find::topdir;
-*topdev = *File::Find::topdev;
-*topino = *File::Find::topino;
-*topmode = *File::Find::topmode;
-*topnlink = *File::Find::topnlink;
-
-sub finddepth {
- &File::Find::finddepth(\&wanted, @_);
-}
-
-1;
diff --git a/contrib/perl5/lib/flush.pl b/contrib/perl5/lib/flush.pl
deleted file mode 100644
index 8aa6d55..0000000
--- a/contrib/perl5/lib/flush.pl
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: IO::Handle
-#
-;# Usage: &flush(FILEHANDLE)
-;# flushes the named filehandle
-
-;# Usage: &printflush(FILEHANDLE, "prompt: ")
-;# prints arguments and flushes filehandle
-
-sub flush {
- local($old) = select(shift);
- $| = 1;
- print "";
- $| = 0;
- select($old);
-}
-
-sub printflush {
- local($old) = select(shift);
- $| = 1;
- print @_;
- $| = 0;
- select($old);
-}
-
-1;
diff --git a/contrib/perl5/lib/ftp.pl b/contrib/perl5/lib/ftp.pl
deleted file mode 100644
index 3f0af1a..0000000
--- a/contrib/perl5/lib/ftp.pl
+++ /dev/null
@@ -1,1086 +0,0 @@
-#-*-perl-*-
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Net::FTP
-#
-# This is a wrapper to the chat2.pl routines that make life easier
-# to do ftp type work.
-# Mostly by Lee McLoughlin <lmjm@doc.ic.ac.uk>
-# based on original version by Alan R. Martello <al@ee.pitt.edu>
-# And by A.Macpherson@bnr.co.uk for multi-homed hosts
-#
-# $Header: /a/swan/home/swan/staff/csg/lmjm/src/perl/mirror/RCS/ftp.pl,v 1.17 1993/04/21 10:06:54 lmjm Exp lmjm $
-# $Log: ftp.pl,v $
-# Revision 1.17 1993/04/21 10:06:54 lmjm
-# Send all status reports to STDERR not to STDOUT (to allow use by ftpcat).
-# Allow target file to be '-' meaning STDOUT
-# Added ftp'quote
-#
-# Revision 1.16 1993/01/28 18:59:05 lmjm
-# Allow socket arguemtns to come from main.
-# Minor cleanups - removed old comments.
-#
-# Revision 1.15 1992/11/25 21:09:30 lmjm
-# Added another REST return code.
-#
-# Revision 1.14 1992/08/12 14:33:42 lmjm
-# Fail ftp'write if out of space.
-#
-# Revision 1.13 1992/03/20 21:01:03 lmjm
-# Added in the proxy ftp code from Edwards Reed <err@cinops.xerox.com>
-# Added ftp'delete from Aaron Wohl <aw0g+@andrew.cmu.edu>
-#
-# Revision 1.12 1992/02/06 23:25:56 lmjm
-# Moved code around so can use this as a lib for both mirror and ftpmail.
-# Time out opens. In case Unix doesn't bother to.
-#
-# Revision 1.11 1991/11/27 22:05:57 lmjm
-# Match the response code number at the start of a line allowing
-# for any leading junk.
-#
-# Revision 1.10 1991/10/23 22:42:20 lmjm
-# Added better timeout code.
-# Tried to optimise file transfer
-# Moved open/close code to not leak file handles.
-# Cleaned up the alarm code.
-# Added $fatalerror to show wether the ftp link is really dead.
-#
-# Revision 1.9 1991/10/07 18:30:35 lmjm
-# Made the timeout-read code work.
-# Added restarting file gets.
-# Be more verbose if ever have to call die.
-#
-# Revision 1.8 1991/09/17 22:53:16 lmjm
-# Spot when open_data_socket fails and return a failure rather than dying.
-#
-# Revision 1.7 1991/09/12 22:40:25 lmjm
-# Added Andrew Macpherson's patches for hosts without ip forwarding.
-#
-# Revision 1.6 1991/09/06 19:53:52 lmjm
-# Relaid out the code the way I like it!
-# Changed the debuggin to produce more "appropriate" messages
-# Fixed bugs in the ordering of put and dir listing.
-# Allow for hash printing when getting files (a la ftp).
-# Added the new commands from Al.
-# Don't print passwords in debugging.
-#
-# Revision 1.5 1991/08/29 16:23:49 lmjm
-# Timeout reads from the remote ftp server.
-# No longer call die expect on fatal errors. Just return fail codes.
-# Changed returns so higher up routines can tell whats happening.
-# Get expect/accept in correct order for dir listing.
-# When ftp_show is set then print hashes every 1k transferred (like ftp).
-# Allow for stripping returns out of incoming data.
-# Save last error in a global string.
-#
-# Revision 1.4 1991/08/14 21:04:58 lmjm
-# ftp'get now copes with ungetable files.
-# ftp'expect code changed such that the string_to_print is
-# ignored and the string sent back from the remote system is printed
-# instead.
-# Implemented patches from al. Removed spuiours tracing statements.
-#
-# Revision 1.3 1991/08/09 21:32:18 lmjm
-# Allow for another ok code on cwd's
-# Rejigger the log levels
-# Send \r\n for some odd ftp daemons
-#
-# Revision 1.2 1991/08/09 18:07:37 lmjm
-# Don't print messages unless ftp_show says to.
-#
-# Revision 1.1 1991/08/08 20:31:00 lmjm
-# Initial revision
-#
-
-require 'chat2.pl'; # into main
-eval "require 'socket.ph'" || eval "require 'sys/socket.ph'"
- || die "socket.ph missing: $!\n";
-
-
-package ftp;
-
-if( defined( &main'PF_INET ) ){
- $pf_inet = &main'PF_INET;
- $sock_stream = &main'SOCK_STREAM;
- local($name, $aliases, $proto) = getprotobyname( 'tcp' );
- $tcp_proto = $proto;
-}
-else {
- # XXX hardwired $PF_INET, $SOCK_STREAM, 'tcp'
- # but who the heck would change these anyway? (:-)
- $pf_inet = 2;
- $sock_stream = 1;
- $tcp_proto = 6;
-}
-
-# If the remote ftp daemon doesn't respond within this time presume its dead
-# or something.
-$timeout = 30;
-
-# Timeout a read if I don't get data back within this many seconds
-$timeout_read = 20 * $timeout;
-
-# Timeout an open
-$timeout_open = $timeout;
-
-# This is a "global" it contains the last response from the remote ftp server
-# for use in error messages
-$ftp'response = "";
-# Also ftp'NS is the socket containing the data coming in from the remote ls
-# command.
-
-# The size of block to be read or written when talking to the remote
-# ftp server
-$ftp'ftpbufsize = 4096;
-
-# How often to print a hash out, when debugging
-$ftp'hashevery = 1024;
-# Output a newline after this many hashes to prevent outputing very long lines
-$ftp'hashnl = 70;
-
-# If a proxy connection then who am I really talking to?
-$real_site = "";
-
-# This is just a tracing aid.
-$ftp_show = 0;
-sub ftp'debug
-{
- $ftp_show = $_[0];
-# if( $ftp_show ){
-# print STDERR "ftp debugging on\n";
-# }
-}
-
-sub ftp'set_timeout
-{
- $timeout = $_[0];
- $timeout_open = $timeout;
- $timeout_read = 20 * $timeout;
- if( $ftp_show ){
- print STDERR "ftp timeout set to $timeout\n";
- }
-}
-
-
-sub ftp'open_alarm
-{
- die "timeout: open";
-}
-
-sub ftp'timed_open
-{
- local( $site, $ftp_port, $retry_call, $attempts ) = @_;
- local( $connect_site, $connect_port );
- local( $res );
-
- alarm( $timeout_open );
-
- while( $attempts-- ){
- if( $ftp_show ){
- print STDERR "proxy connecting via $proxy_gateway [$proxy_ftp_port]\n" if $proxy;
- print STDERR "Connecting to $site";
- if( $ftp_port != 21 ){
- print STDERR " [port $ftp_port]";
- }
- print STDERR "\n";
- }
-
- if( $proxy ) {
- if( ! $proxy_gateway ) {
- # if not otherwise set
- $proxy_gateway = "internet-gateway";
- }
- if( $debug ) {
- print STDERR "using proxy services of $proxy_gateway, ";
- print STDERR "at $proxy_ftp_port\n";
- }
- $connect_site = $proxy_gateway;
- $connect_port = $proxy_ftp_port;
- $real_site = $site;
- }
- else {
- $connect_site = $site;
- $connect_port = $ftp_port;
- }
- if( ! &chat'open_port( $connect_site, $connect_port ) ){
- if( $retry_call ){
- print STDERR "Failed to connect\n" if $ftp_show;
- next;
- }
- else {
- print STDERR "proxy connection failed " if $proxy;
- print STDERR "Cannot open ftp to $connect_site\n" if $ftp_show;
- return 0;
- }
- }
- $res = &ftp'expect( $timeout,
- 120, "service unavailable to $site", 0,
- 220, "ready for login to $site", 1,
- 421, "service unavailable to $site, closing connection", 0);
- if( ! $res ){
- &chat'close();
- next;
- }
- return 1;
- }
- continue {
- print STDERR "Pausing between retries\n";
- sleep( $retry_pause );
- }
- return 0;
-}
-
-sub ftp'open
-{
- local( $site, $ftp_port, $retry_call, $attempts ) = @_;
-
- $SIG{ 'ALRM' } = "ftp\'open_alarm";
-
- local( $ret ) = eval "&timed_open( '$site', $ftp_port, $retry_call, $attempts )";
- alarm( 0 );
-
- if( $@ =~ /^timeout/ ){
- return -1;
- }
- return $ret;
-}
-
-sub ftp'login
-{
- local( $remote_user, $remote_password ) = @_;
-
- if( $proxy ){
- &ftp'send( "USER $remote_user\@$site" );
- }
- else {
- &ftp'send( "USER $remote_user" );
- }
- local( $val ) =
- &ftp'expect($timeout,
- 230, "$remote_user logged in", 1,
- 331, "send password for $remote_user", 2,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 530, "not logged in", 0,
- 332, "account for login not supported", 0,
-
- 421, "service unavailable, closing connection", 0);
- if( $val == 1 ){
- return 1;
- }
- if( $val == 2 ){
- # A password is needed
- &ftp'send( "PASS $remote_password" );
-
- $val = &ftp'expect( $timeout,
- 230, "$remote_user logged in", 1,
-
- 202, "command not implemented", 0,
- 332, "account for login not supported", 0,
-
- 530, "not logged in", 0,
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 503, "bad sequence of commands", 0,
-
- 421, "service unavailable, closing connection", 0);
- if( $val == 1){
- # Logged in
- return 1;
- }
- }
- # If I got here I failed to login
- return 0;
-}
-
-sub ftp'close
-{
- &ftp'quit();
- &chat'close();
-}
-
-# Change directory
-# return 1 if successful
-# 0 on a failure
-sub ftp'cwd
-{
- local( $dir ) = @_;
-
- &ftp'send( "CWD $dir" );
-
- return &ftp'expect( $timeout,
- 200, "working directory = $dir", 1,
- 250, "working directory = $dir", 1,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 502, "command not implemented", 0,
- 530, "not logged in", 0,
- 550, "cannot change directory", 0,
- 421, "service unavailable, closing connection", 0 );
-}
-
-# Get a full directory listing:
-# &ftp'dir( remote LIST options )
-# Start a list goin with the given options.
-# Presuming that the remote deamon uses the ls command to generate the
-# data to send back then then you can send it some extra options (eg: -lRa)
-# return 1 if sucessful and 0 on a failure
-sub ftp'dir_open
-{
- local( $options ) = @_;
- local( $ret );
-
- if( ! &ftp'open_data_socket() ){
- return 0;
- }
-
- if( $options ){
- &ftp'send( "LIST $options" );
- }
- else {
- &ftp'send( "LIST" );
- }
-
- $ret = &ftp'expect( $timeout,
- 150, "reading directory", 1,
-
- 125, "data connection already open?", 0,
-
- 450, "file unavailable", 0,
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 502, "command not implemented", 0,
- 530, "not logged in", 0,
-
- 421, "service unavailable, closing connection", 0 );
- if( ! $ret ){
- &ftp'close_data_socket;
- return 0;
- }
-
- #
- # the data should be coming at us now
- #
-
- # now accept
- accept(NS,S) || die "accept failed $!";
-
- return 1;
-}
-
-
-# Close down reading the result of a remote ls command
-# return 1 if successful and 0 on failure
-sub ftp'dir_close
-{
- local( $ret );
-
- # read the close
- #
- $ret = &ftp'expect($timeout,
- 226, "", 1, # transfer complete, closing connection
- 250, "", 1, # action completed
-
- 425, "can't open data connection", 0,
- 426, "connection closed, transfer aborted", 0,
- 451, "action aborted, local error", 0,
- 421, "service unavailable, closing connection", 0);
-
- # shut down our end of the socket
- &ftp'close_data_socket;
-
- if( ! $ret ){
- return 0;
- }
-
- return 1;
-}
-
-# Quit from the remote ftp server
-# return 1 if successful and 0 on failure
-sub ftp'quit
-{
- $site_command_check = 0;
- @site_command_list = ();
-
- &ftp'send("QUIT");
-
- return &ftp'expect($timeout,
- 221, "Goodbye", 1, # transfer complete, closing connection
-
- 500, "error quitting??", 0);
-}
-
-sub ftp'read_alarm
-{
- die "timeout: read";
-}
-
-sub ftp'timed_read
-{
- alarm( $timeout_read );
- return sysread( NS, $buf, $ftpbufsize );
-}
-
-sub ftp'read
-{
- $SIG{ 'ALRM' } = "ftp\'read_alarm";
-
- local( $ret ) = eval '&timed_read()';
- alarm( 0 );
-
- if( $@ =~ /^timeout/ ){
- return -1;
- }
- return $ret;
-}
-
-# Get a remote file back into a local file.
-# If no loc_fname passed then uses rem_fname.
-# returns 1 on success and 0 on failure
-sub ftp'get
-{
- local($rem_fname, $loc_fname, $restart ) = @_;
-
- if ($loc_fname eq "") {
- $loc_fname = $rem_fname;
- }
-
- if( ! &ftp'open_data_socket() ){
- print STDERR "Cannot open data socket\n";
- return 0;
- }
-
- if( $loc_fname ne '-' ){
- # Find the size of the target file
- local( $restart_at ) = &ftp'filesize( $loc_fname );
- if( $restart && $restart_at > 0 && &ftp'restart( $restart_at ) ){
- $restart = 1;
- # Make sure the file can be updated
- chmod( 0644, $loc_fname );
- }
- else {
- $restart = 0;
- unlink( $loc_fname );
- }
- }
-
- &ftp'send( "RETR $rem_fname" );
-
- local( $ret ) =
- &ftp'expect($timeout,
- 150, "receiving $rem_fname", 1,
-
- 125, "data connection already open?", 0,
-
- 450, "file unavailable", 2,
- 550, "file unavailable", 2,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 530, "not logged in", 0,
-
- 421, "service unavailable, closing connection", 0);
- if( $ret != 1 ){
- print STDERR "Failure on RETR command\n";
-
- # shut down our end of the socket
- &ftp'close_data_socket;
-
- return 0;
- }
-
- #
- # the data should be coming at us now
- #
-
- # now accept
- accept(NS,S) || die "accept failed: $!";
-
- #
- # open the local fname
- # concatenate on the end if restarting, else just overwrite
- if( !open(FH, ($restart ? '>>' : '>') . $loc_fname) ){
- print STDERR "Cannot create local file $loc_fname\n";
-
- # shut down our end of the socket
- &ftp'close_data_socket;
-
- return 0;
- }
-
-# while (<NS>) {
-# print FH ;
-# }
-
- local( $start_time ) = time;
- local( $bytes, $lasthash, $hashes ) = (0, 0, 0);
- while( ($len = &ftp'read()) > 0 ){
- $bytes += $len;
- if( $strip_cr ){
- $ftp'buf =~ s/\r//g;
- }
- if( $ftp_show ){
- while( $bytes > ($lasthash + $ftp'hashevery) ){
- print STDERR '#';
- $lasthash += $ftp'hashevery;
- $hashes++;
- if( ($hashes % $ftp'hashnl) == 0 ){
- print STDERR "\n";
- }
- }
- }
- if( ! print FH $ftp'buf ){
- print STDERR "\nfailed to write data";
- return 0;
- }
- }
- close( FH );
-
- # shut down our end of the socket
- &ftp'close_data_socket;
-
- if( $len < 0 ){
- print STDERR "\ntimed out reading data!\n";
-
- return 0;
- }
-
- if( $ftp_show ){
- if( $hashes && ($hashes % $ftp'hashnl) != 0 ){
- print STDERR "\n";
- }
- local( $secs ) = (time - $start_time);
- if( $secs <= 0 ){
- $secs = 1; # To avoid a divide by zero;
- }
-
- local( $rate ) = int( $bytes / $secs );
- print STDERR "Got $bytes bytes ($rate bytes/sec)\n";
- }
-
- #
- # read the close
- #
-
- $ret = &ftp'expect($timeout,
- 226, "Got file", 1, # transfer complete, closing connection
- 250, "Got file", 1, # action completed
-
- 110, "restart not supported", 0,
- 425, "can't open data connection", 0,
- 426, "connection closed, transfer aborted", 0,
- 451, "action aborted, local error", 0,
- 421, "service unavailable, closing connection", 0);
-
- return $ret;
-}
-
-sub ftp'delete
-{
- local( $rem_fname, $val ) = @_;
-
- &ftp'send("DELE $rem_fname" );
- $val = &ftp'expect( $timeout,
- 250,"Deleted $rem_fname", 1,
- 550,"Permission denied",0
- );
- return $val == 1;
-}
-
-sub ftp'deldir
-{
- local( $fname ) = @_;
-
- # not yet implemented
- # RMD
-}
-
-# UPDATE ME!!!!!!
-# Add in the hash printing and newline conversion
-sub ftp'put
-{
- local( $loc_fname, $rem_fname ) = @_;
- local( $strip_cr );
-
- if ($loc_fname eq "") {
- $loc_fname = $rem_fname;
- }
-
- if( ! &ftp'open_data_socket() ){
- return 0;
- }
-
- &ftp'send("STOR $rem_fname");
-
- #
- # the data should be coming at us now
- #
-
- local( $ret ) =
- &ftp'expect($timeout,
- 150, "sending $loc_fname", 1,
-
- 125, "data connection already open?", 0,
- 450, "file unavailable", 0,
-
- 532, "need account for storing files", 0,
- 452, "insufficient storage on system", 0,
- 553, "file name not allowed", 0,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 530, "not logged in", 0,
-
- 421, "service unavailable, closing connection", 0);
-
- if( $ret != 1 ){
- # shut down our end of the socket
- &ftp'close_data_socket;
-
- return 0;
- }
-
-
- #
- # the data should be coming at us now
- #
-
- # now accept
- accept(NS,S) || die "accept failed: $!";
-
- #
- # open the local fname
- #
- if( !open(FH, "<$loc_fname") ){
- print STDERR "Cannot open local file $loc_fname\n";
-
- # shut down our end of the socket
- &ftp'close_data_socket;
-
- return 0;
- }
-
- while (<FH>) {
- print NS ;
- }
- close(FH);
-
- # shut down our end of the socket to signal EOF
- &ftp'close_data_socket;
-
- #
- # read the close
- #
-
- $ret = &ftp'expect($timeout,
- 226, "file put", 1, # transfer complete, closing connection
- 250, "file put", 1, # action completed
-
- 110, "restart not supported", 0,
- 425, "can't open data connection", 0,
- 426, "connection closed, transfer aborted", 0,
- 451, "action aborted, local error", 0,
- 551, "page type unknown", 0,
- 552, "storage allocation exceeded", 0,
-
- 421, "service unavailable, closing connection", 0);
- if( ! $ret ){
- print STDERR "error putting $loc_fname\n";
- }
- return $ret;
-}
-
-sub ftp'restart
-{
- local( $restart_point, $ret ) = @_;
-
- &ftp'send("REST $restart_point");
-
- #
- # see what they say
-
- $ret = &ftp'expect($timeout,
- 350, "restarting at $restart_point", 1,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 502, "REST not implemented", 2,
- 530, "not logged in", 0,
- 554, "REST not implemented", 2,
-
- 421, "service unavailable, closing connection", 0);
- return $ret;
-}
-
-# Set the file transfer type
-sub ftp'type
-{
- local( $type ) = @_;
-
- &ftp'send("TYPE $type");
-
- #
- # see what they say
-
- $ret = &ftp'expect($timeout,
- 200, "file type set to $type", 1,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 504, "Invalid form or byte size for type $type", 0,
-
- 421, "service unavailable, closing connection", 0);
- return $ret;
-}
-
-$site_command_check = 0;
-@site_command_list = ();
-
-# routine to query the remote server for 'SITE' commands supported
-sub ftp'site_commands
-{
- local( $ret );
-
- # if we havent sent a 'HELP SITE', send it now
- if( !$site_command_check ){
-
- $site_command_check = 1;
-
- &ftp'send( "HELP SITE" );
-
- # assume the line in the HELP SITE response with the 'HELP'
- # command is the one for us
- $ret = &ftp'expect( $timeout,
- ".*HELP.*", "", "\$1",
- 214, "", "0",
- 202, "", "0" );
-
- if( $ret eq "0" ){
- print STDERR "No response from HELP SITE\n" if( $ftp_show );
- }
-
- @site_command_list = split(/\s+/, $ret);
- }
-
- return @site_command_list;
-}
-
-# return the pwd, or null if we can't get the pwd
-sub ftp'pwd
-{
- local( $ret, $cwd );
-
- &ftp'send( "PWD" );
-
- #
- # see what they say
-
- $ret = &ftp'expect( $timeout,
- 257, "working dir is", 1,
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 502, "PWD not implemented", 0,
- 550, "file unavailable", 0,
-
- 421, "service unavailable, closing connection", 0 );
- if( $ret ){
- if( $ftp'response =~ /^257\s"(.*)"\s.*$/ ){
- $cwd = $1;
- }
- }
- return $cwd;
-}
-
-# return 1 for success, 0 for failure
-sub ftp'mkdir
-{
- local( $path ) = @_;
- local( $ret );
-
- &ftp'send( "MKD $path" );
-
- #
- # see what they say
-
- $ret = &ftp'expect( $timeout,
- 257, "made directory $path", 1,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 502, "MKD not implemented", 0,
- 530, "not logged in", 0,
- 550, "file unavailable", 0,
-
- 421, "service unavailable, closing connection", 0 );
- return $ret;
-}
-
-# return 1 for success, 0 for failure
-sub ftp'chmod
-{
- local( $path, $mode ) = @_;
- local( $ret );
-
- &ftp'send( sprintf( "SITE CHMOD %o $path", $mode ) );
-
- #
- # see what they say
-
- $ret = &ftp'expect( $timeout,
- 200, "chmod $mode $path succeeded", 1,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 502, "CHMOD not implemented", 0,
- 530, "not logged in", 0,
- 550, "file unavailable", 0,
-
- 421, "service unavailable, closing connection", 0 );
- return $ret;
-}
-
-# rename a file
-sub ftp'rename
-{
- local( $old_name, $new_name ) = @_;
- local( $ret );
-
- &ftp'send( "RNFR $old_name" );
-
- #
- # see what they say
-
- $ret = &ftp'expect( $timeout,
- 350, "", 1,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 502, "RNFR not implemented", 0,
- 530, "not logged in", 0,
- 550, "file unavailable", 0,
- 450, "file unavailable", 0,
-
- 421, "service unavailable, closing connection", 0);
-
-
- # check if the "rename from" occurred ok
- if( $ret ) {
- &ftp'send( "RNTO $new_name" );
-
- #
- # see what they say
-
- $ret = &ftp'expect( $timeout,
- 250, "rename $old_name to $new_name", 1,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 502, "RNTO not implemented", 0,
- 503, "bad sequence of commands", 0,
- 530, "not logged in", 0,
- 532, "need account for storing files", 0,
- 553, "file name not allowed", 0,
-
- 421, "service unavailable, closing connection", 0);
- }
-
- return $ret;
-}
-
-
-sub ftp'quote
-{
- local( $cmd ) = @_;
-
- &ftp'send( $cmd );
-
- return &ftp'expect( $timeout,
- 200, "Remote '$cmd' OK", 1,
- 500, "error in remote '$cmd'", 0 );
-}
-
-# ------------------------------------------------------------------------------
-# These are the lower level support routines
-
-sub ftp'expectgot
-{
- ($ftp'response, $ftp'fatalerror) = @_;
- if( $ftp_show ){
- print STDERR "$ftp'response\n";
- }
-}
-
-#
-# create the list of parameters for chat'expect
-#
-# ftp'expect(time_out, {value, string_to_print, return value});
-# if the string_to_print is "" then nothing is printed
-# the last response is stored in $ftp'response
-#
-# NOTE: lmjm has changed this code such that the string_to_print is
-# ignored and the string sent back from the remote system is printed
-# instead.
-#
-sub ftp'expect {
- local( $ret );
- local( $time_out );
- local( $expect_args );
-
- $ftp'response = '';
- $ftp'fatalerror = 0;
-
- @expect_args = ();
-
- $time_out = shift(@_);
-
- while( @_ ){
- local( $code ) = shift( @_ );
- local( $pre ) = '^';
- if( $code =~ /^\d/ ){
- $pre =~ "[.|\n]*^";
- }
- push( @expect_args, "$pre(" . $code . " .*)\\015\\n" );
- shift( @_ );
- push( @expect_args,
- "&ftp'expectgot( \$1, 0 ); " . shift( @_ ) );
- }
-
- # Treat all unrecognised lines as continuations
- push( @expect_args, "^(.*)\\015\\n" );
- push( @expect_args, "&ftp'expectgot( \$1, 0 ); 100" );
-
- # add patterns TIMEOUT and EOF
-
- push( @expect_args, 'TIMEOUT' );
- push( @expect_args, "&ftp'expectgot( \"timed out\", 1 ); 0" );
-
- push( @expect_args, 'EOF' );
- push( @expect_args, "&ftp'expectgot( \"remote server gone away\", 1 ); 0" );
-
- if( $ftp_show > 9 ){
- &printargs( $time_out, @expect_args );
- }
-
- $ret = &chat'expect( $time_out, @expect_args );
- if( $ret == 100 ){
- # we saw a continuation line, wait for the end
- push( @expect_args, "^.*\n" );
- push( @expect_args, "100" );
-
- while( $ret == 100 ){
- $ret = &chat'expect( $time_out, @expect_args );
- }
- }
-
- return $ret;
-}
-
-#
-# opens NS for io
-#
-sub ftp'open_data_socket
-{
- local( $ret );
- local( $hostname );
- local( $sockaddr, $name, $aliases, $proto, $port );
- local( $type, $len, $thisaddr, $myaddr, $a, $b, $c, $d );
- local( $mysockaddr, $family, $hi, $lo );
-
-
- $sockaddr = 'S n a4 x8';
- chop( $hostname = `hostname` );
-
- $port = "ftp";
-
- ($name, $aliases, $proto) = getprotobyname( 'tcp' );
- ($name, $aliases, $port) = getservbyname( $port, 'tcp' );
-
-# ($name, $aliases, $type, $len, $thisaddr) =
-# gethostbyname( $hostname );
- ($a,$b,$c,$d) = unpack( 'C4', $chat'thisaddr );
-
-# $this = pack( $sockaddr, &main'AF_INET, 0, $thisaddr );
- $this = $chat'thisproc;
-
- socket(S, $pf_inet, $sock_stream, $proto ) || die "socket: $!";
- bind(S, $this) || die "bind: $!";
-
- # get the port number
- $mysockaddr = getsockname(S);
- ($family, $port, $myaddr) = unpack( $sockaddr, $mysockaddr );
-
- $hi = ($port >> 8) & 0x00ff;
- $lo = $port & 0x00ff;
-
- #
- # we MUST do a listen before sending the port otherwise
- # the PORT may fail
- #
- listen( S, 5 ) || die "listen";
-
- &ftp'send( "PORT $a,$b,$c,$d,$hi,$lo" );
-
- return &ftp'expect($timeout,
- 200, "PORT command successful", 1,
- 250, "PORT command successful", 1 ,
-
- 500, "syntax error", 0,
- 501, "syntax error", 0,
- 530, "not logged in", 0,
-
- 421, "service unavailable, closing connection", 0);
-}
-
-sub ftp'close_data_socket
-{
- close(NS);
-}
-
-sub ftp'send
-{
- local($send_cmd) = @_;
- if( $send_cmd =~ /\n/ ){
- print STDERR "ERROR, \\n in send string for $send_cmd\n";
- }
-
- if( $ftp_show ){
- local( $sc ) = $send_cmd;
-
- if( $send_cmd =~ /^PASS/){
- $sc = "PASS <somestring>";
- }
- print STDERR "---> $sc\n";
- }
-
- &chat'print( "$send_cmd\r\n" );
-}
-
-sub ftp'printargs
-{
- while( @_ ){
- print STDERR shift( @_ ) . "\n";
- }
-}
-
-sub ftp'filesize
-{
- local( $fname ) = @_;
-
- if( ! -f $fname ){
- return -1;
- }
-
- return (stat( _ ))[ 7 ];
-
-}
-
-# make this package return true
-1;
diff --git a/contrib/perl5/lib/getcwd.pl b/contrib/perl5/lib/getcwd.pl
deleted file mode 100644
index eca6ba1..0000000
--- a/contrib/perl5/lib/getcwd.pl
+++ /dev/null
@@ -1,71 +0,0 @@
-# By Brandon S. Allbery
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Cwd
-#
-#
-# Usage: $cwd = &getcwd;
-
-sub getcwd
-{
- local($dotdots, $cwd, @pst, @cst, $dir, @tst);
-
- unless (@cst = stat('.'))
- {
- warn "stat(.): $!";
- return '';
- }
- $cwd = '';
- do
- {
- $dotdots .= '/' if $dotdots;
- $dotdots .= '..';
- @pst = @cst;
- unless (opendir(getcwd'PARENT, $dotdots)) #'))
- {
- warn "opendir($dotdots): $!";
- return '';
- }
- unless (@cst = stat($dotdots))
- {
- warn "stat($dotdots): $!";
- closedir(getcwd'PARENT); #');
- return '';
- }
- if ($pst[$[] == $cst[$[] && $pst[$[ + 1] == $cst[$[ + 1])
- {
- $dir = '';
- }
- else
- {
- do
- {
- unless (defined ($dir = readdir(getcwd'PARENT))) #'))
- {
- warn "readdir($dotdots): $!";
- closedir(getcwd'PARENT); #');
- return '';
- }
- unless (@tst = lstat("$dotdots/$dir"))
- {
- # warn "lstat($dotdots/$dir): $!";
- # closedir(getcwd'PARENT); #');
- # return '';
- }
- }
- while ($dir eq '.' || $dir eq '..' || $tst[$[] != $pst[$[] ||
- $tst[$[ + 1] != $pst[$[ + 1]);
- }
- $cwd = "$dir/$cwd";
- closedir(getcwd'PARENT); #');
- } while ($dir ne '');
- chop($cwd);
- $cwd;
-}
-
-1;
diff --git a/contrib/perl5/lib/getopt.pl b/contrib/perl5/lib/getopt.pl
deleted file mode 100644
index 77d8d89..0000000
--- a/contrib/perl5/lib/getopt.pl
+++ /dev/null
@@ -1,49 +0,0 @@
-;# $RCSfile: getopt.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:23:58 $
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternatives: Getopt::Long or Getopt::Std
-#
-;# Process single-character switches with switch clustering. Pass one argument
-;# which is a string containing all switches that take an argument. For each
-;# switch found, sets $opt_x (where x is the switch name) to the value of the
-;# argument, or 1 if no argument. Switches which take an argument don't care
-;# whether there is a space between the switch and the argument.
-
-;# Usage:
-;# do Getopt('oDI'); # -o, -D & -I take arg. Sets opt_* as a side effect.
-
-sub Getopt {
- local($argumentative) = @_;
- local($_,$first,$rest);
- local($[) = 0;
-
- while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
- ($first,$rest) = ($1,$2);
- if (index($argumentative,$first) >= $[) {
- if ($rest ne '') {
- shift(@ARGV);
- }
- else {
- shift(@ARGV);
- $rest = shift(@ARGV);
- }
- ${"opt_$first"} = $rest;
- }
- else {
- ${"opt_$first"} = 1;
- if ($rest ne '') {
- $ARGV[0] = "-$rest";
- }
- else {
- shift(@ARGV);
- }
- }
- }
-}
-
-1;
diff --git a/contrib/perl5/lib/getopts.pl b/contrib/perl5/lib/getopts.pl
deleted file mode 100644
index 4a50b8f..0000000
--- a/contrib/perl5/lib/getopts.pl
+++ /dev/null
@@ -1,66 +0,0 @@
-;# getopts.pl - a better getopt.pl
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternatives: Getopt::Long or Getopt::Std
-#
-;# Usage:
-;# do Getopts('a:bc'); # -a takes arg. -b & -c not. Sets opt_* as a
-;# # side effect.
-
-sub Getopts {
- local($argumentative) = @_;
- local(@args,$_,$first,$rest);
- local($errs) = 0;
- local($[) = 0;
-
- @args = split( / */, $argumentative );
- while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
- ($first,$rest) = ($1,$2);
- $pos = index($argumentative,$first);
- if($pos >= $[) {
- if($args[$pos+1] eq ':') {
- shift(@ARGV);
- if($rest eq '') {
- ++$errs unless(@ARGV);
- $rest = shift(@ARGV);
- }
- eval "
- push(\@opt_$first, \$rest);
- if(\$opt_$first eq '') {
- \$opt_$first = \$rest;
- }
- else {
- \$opt_$first .= ' ' . \$rest;
- }
- ";
- }
- else {
- eval "\$opt_$first = 1";
- if($rest eq '') {
- shift(@ARGV);
- }
- else {
- $ARGV[0] = "-$rest";
- }
- }
- }
- else {
- print STDERR "Unknown option: $first\n";
- ++$errs;
- if($rest ne '') {
- $ARGV[0] = "-$rest";
- }
- else {
- shift(@ARGV);
- }
- }
- }
- $errs == 0;
-}
-
-1;
diff --git a/contrib/perl5/lib/hostname.pl b/contrib/perl5/lib/hostname.pl
deleted file mode 100644
index 63eea8f..0000000
--- a/contrib/perl5/lib/hostname.pl
+++ /dev/null
@@ -1,31 +0,0 @@
-# From: asherman@fmrco.com (Aaron Sherman)
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Sys::Hostname
-#
-sub hostname
-{
- local(*P,@tmp,$hostname,$_);
- if (open(P,"hostname 2>&1 |") && (@tmp = <P>) && close(P))
- {
- chop($hostname = $tmp[$#tmp]);
- }
- elsif (open(P,"uname -n 2>&1 |") && (@tmp = <P>) && close(P))
- {
- chop($hostname = $tmp[$#tmp]);
- }
- else
- {
- die "$0: Cannot get hostname from 'hostname' or 'uname -n'\n";
- }
- @tmp = ();
- close P; # Just in case we failed in an odd spot....
- $hostname;
-}
-
-1;
diff --git a/contrib/perl5/lib/importenv.pl b/contrib/perl5/lib/importenv.pl
deleted file mode 100644
index c28ffd0..0000000
--- a/contrib/perl5/lib/importenv.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-;# $RCSfile: importenv.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:24:02 $
-
-;# This file, when interpreted, pulls the environment into normal variables.
-;# Usage:
-;# require 'importenv.pl';
-;# or
-;# #include <importenv.pl>
-
-local($tmp,$key) = '';
-
-foreach $key (keys(%ENV)) {
- $tmp .= "\$$key = \$ENV{'$key'};" if $key =~ /^[A-Za-z]\w*$/;
-}
-eval $tmp;
-
-1;
diff --git a/contrib/perl5/lib/integer.pm b/contrib/perl5/lib/integer.pm
deleted file mode 100644
index 998574f..0000000
--- a/contrib/perl5/lib/integer.pm
+++ /dev/null
@@ -1,91 +0,0 @@
-package integer;
-
-=head1 NAME
-
-integer - Perl pragma to use integer arithmetic instead of floating point
-
-=head1 SYNOPSIS
-
- use integer;
- $x = 10/3;
- # $x is now 3, not 3.33333333333333333
-
-=head1 DESCRIPTION
-
-This tells the compiler to use integer operations from here to the end
-of the enclosing BLOCK. On many machines, this doesn't matter a great
-deal for most computations, but on those without floating point
-hardware, it can make a big difference in performance.
-
-Note that this only affects how most of the arithmetic and relational
-B<operators> handle their operands and results, and B<not> how all
-numbers everywhere are treated. Specifically, C<use integer;> has the
-effect that before computing the results of the arithmetic operators
-(+, -, *, /, %, +=, -=, *=, /=, %=, and unary minus), the comparison
-operators (<, <=, >, >=, ==, !=, <=>), and the bitwise operators (|, &,
-^, <<, >>, |=, &=, ^=, <<=, >>=), the operands have their fractional
-portions truncated (or floored), and the result will have its
-fractional portion truncated as well. In addition, the range of
-operands and results is restricted to that of familiar two's complement
-integers, i.e., -(2**31) .. (2**31-1) on 32-bit architectures, and
--(2**63) .. (2**63-1) on 64-bit architectures. For example, this code
-
- use integer;
- $x = 5.8;
- $y = 2.5;
- $z = 2.7;
- $a = 2**31 - 1; # Largest positive integer on 32-bit machines
- $, = ", ";
- print $x, -$x, $x + $y, $x - $y, $x / $y, $x * $y, $y == $z, $a, $a + 1;
-
-will print: 5.8, -5, 7, 3, 2, 10, 1, 2147483647, -2147483648
-
-Note that $x is still printed as having its true non-integer value of
-5.8 since it wasn't operated on. And note too the wrap-around from the
-largest positive integer to the largest negative one. Also, arguments
-passed to functions and the values returned by them are B<not> affected
-by C<use integer;>. E.g.,
-
- srand(1.5);
- $, = ", ";
- print sin(.5), cos(.5), atan2(1,2), sqrt(2), rand(10);
-
-will give the same result with or without C<use integer;> The power
-operator C<**> is also not affected, so that 2 ** .5 is always the
-square root of 2. Now, it so happens that the pre- and post- increment
-and decrement operators, ++ and --, are not affected by C<use integer;>
-either. Some may rightly consider this to be a bug -- but at least it's
-a long-standing one.
-
-Finally, C<use integer;> also has an additional affect on the bitwise
-operators. Normally, the operands and results are treated as
-B<unsigned> integers, but with C<use integer;> the operands and results
-are B<signed>. This means, among other things, that ~0 is -1, and -2 &
--5 is -6.
-
-Internally, native integer arithmetic (as provided by your C compiler)
-is used. This means that Perl's own semantics for arithmetic
-operations may not be preserved. One common source of trouble is the
-modulus of negative numbers, which Perl does one way, but your hardware
-may do another.
-
- % perl -le 'print (4 % -3)'
- -2
- % perl -Minteger -le 'print (4 % -3)'
- 1
-
-See L<perlmodlib/"Pragmatic Modules">, L<perlop/"Integer Arithmetic">
-
-=cut
-
-$integer::hint_bits = 0x1;
-
-sub import {
- $^H |= $integer::hint_bits;
-}
-
-sub unimport {
- $^H &= ~$integer::hint_bits;
-}
-
-1;
diff --git a/contrib/perl5/lib/less.pm b/contrib/perl5/lib/less.pm
deleted file mode 100644
index b3afef0..0000000
--- a/contrib/perl5/lib/less.pm
+++ /dev/null
@@ -1,23 +0,0 @@
-package less;
-
-=head1 NAME
-
-less - perl pragma to request less of something from the compiler
-
-=head1 SYNOPSIS
-
- use less; # unimplemented
-
-=head1 DESCRIPTION
-
-Currently unimplemented, this may someday be a compiler directive
-to make certain trade-offs, such as perhaps
-
- use less 'memory';
- use less 'CPU';
- use less 'fat';
-
-
-=cut
-
-1;
diff --git a/contrib/perl5/lib/lib.pm b/contrib/perl5/lib/lib.pm
deleted file mode 100644
index 077dd63..0000000
--- a/contrib/perl5/lib/lib.pm
+++ /dev/null
@@ -1,136 +0,0 @@
-package lib;
-
-use 5.005_64;
-use Config;
-
-my $archname = defined($Config{'archname'}) ? $Config{'archname'} : '';
-my $ver = defined($Config{'version'}) ? $Config{'version'} : '';
-my @inc_version_list = defined($Config{'inc_version_list'}) ?
- reverse split / /, $Config{'inc_version_list'} : ();
-
-our @ORIG_INC = @INC; # take a handy copy of 'original' value
-our $VERSION = '0.5564';
-
-sub import {
- shift;
-
- my %names;
- foreach (reverse @_) {
- if ($_ eq '') {
- require Carp;
- Carp::carp("Empty compile time value given to use lib");
- }
- if (-e && ! -d _) {
- require Carp;
- Carp::carp("Parameter to use lib must be directory, not file");
- }
- unshift(@INC, $_);
- # Add any previous version directories we found at configure time
- foreach my $incver (@inc_version_list)
- {
- unshift(@INC, "$_/$incver") if -d "$_/$incver";
- }
- # Put a corresponding archlib directory infront of $_ if it
- # looks like $_ has an archlib directory below it.
- unshift(@INC, "$_/$archname") if -d "$_/$archname/auto";
- unshift(@INC, "$_/$ver") if -d "$_/$ver";
- unshift(@INC, "$_/$ver/$archname") if -d "$_/$ver/$archname";
- }
-
- # remove trailing duplicates
- @INC = grep { ++$names{$_} == 1 } @INC;
- return;
-}
-
-
-sub unimport {
- shift;
-
- my %names;
- foreach (@_) {
- ++$names{$_};
- ++$names{"$_/$archname"} if -d "$_/$archname/auto";
- ++$names{"$_/$ver"} if -d "$_/$ver";
- ++$names{"$_/$ver/$archname"} if -d "$_/$ver/$archname";
- }
-
- # Remove ALL instances of each named directory.
- @INC = grep { !exists $names{$_} } @INC;
- return;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-lib - manipulate @INC at compile time
-
-=head1 SYNOPSIS
-
- use lib LIST;
-
- no lib LIST;
-
-=head1 DESCRIPTION
-
-This is a small simple module which simplifies the manipulation of @INC
-at compile time.
-
-It is typically used to add extra directories to perl's search path so
-that later C<use> or C<require> statements will find modules which are
-not located on perl's default search path.
-
-=head2 Adding directories to @INC
-
-The parameters to C<use lib> are added to the start of the perl search
-path. Saying
-
- use lib LIST;
-
-is I<almost> the same as saying
-
- BEGIN { unshift(@INC, LIST) }
-
-For each directory in LIST (called $dir here) the lib module also
-checks to see if a directory called $dir/$archname/auto exists.
-If so the $dir/$archname directory is assumed to be a corresponding
-architecture specific directory and is added to @INC in front of $dir.
-
-To avoid memory leaks, all trailing duplicate entries in @INC are
-removed.
-
-=head2 Deleting directories from @INC
-
-You should normally only add directories to @INC. If you need to
-delete directories from @INC take care to only delete those which you
-added yourself or which you are certain are not needed by other modules
-in your script. Other modules may have added directories which they
-need for correct operation.
-
-The C<no lib> statement deletes all instances of each named directory
-from @INC.
-
-For each directory in LIST (called $dir here) the lib module also
-checks to see if a directory called $dir/$archname/auto exists.
-If so the $dir/$archname directory is assumed to be a corresponding
-architecture specific directory and is also deleted from @INC.
-
-=head2 Restoring original @INC
-
-When the lib module is first loaded it records the current value of @INC
-in an array C<@lib::ORIG_INC>. To restore @INC to that value you
-can say
-
- @INC = @lib::ORIG_INC;
-
-
-=head1 SEE ALSO
-
-FindBin - optional module which deals with paths relative to the source file.
-
-=head1 AUTHOR
-
-Tim Bunce, 2nd June 1995.
-
-=cut
diff --git a/contrib/perl5/lib/locale.pm b/contrib/perl5/lib/locale.pm
deleted file mode 100644
index 6314aca..0000000
--- a/contrib/perl5/lib/locale.pm
+++ /dev/null
@@ -1,38 +0,0 @@
-package locale;
-
-=head1 NAME
-
-locale - Perl pragma to use and avoid POSIX locales for built-in operations
-
-=head1 SYNOPSIS
-
- @x = sort @y; # ASCII sorting order
- {
- use locale;
- @x = sort @y; # Locale-defined sorting order
- }
- @x = sort @y; # ASCII sorting order again
-
-=head1 DESCRIPTION
-
-This pragma tells the compiler to enable (or disable) the use of POSIX
-locales for built-in operations (LC_CTYPE for regular expressions, and
-LC_COLLATE for string comparison). Each "use locale" or "no locale"
-affects statements to the end of the enclosing BLOCK.
-
-See L<perllocale> for more detailed information on how Perl supports
-locales.
-
-=cut
-
-$locale::hint_bits = 0x800;
-
-sub import {
- $^H |= $locale::hint_bits;
-}
-
-sub unimport {
- $^H &= ~$locale::hint_bits;
-}
-
-1;
diff --git a/contrib/perl5/lib/look.pl b/contrib/perl5/lib/look.pl
deleted file mode 100644
index ccc9b61..0000000
--- a/contrib/perl5/lib/look.pl
+++ /dev/null
@@ -1,50 +0,0 @@
-;# Usage: &look(*FILEHANDLE,$key,$dict,$fold)
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-;# Sets file position in FILEHANDLE to be first line greater than or equal
-;# (stringwise) to $key. Pass flags for dictionary order and case folding.
-
-sub look {
- local(*FH,$key,$dict,$fold) = @_;
- local($max,$min,$mid,$_);
- local($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
- $blksize,$blocks) = stat(FH);
- $blksize = 8192 unless $blksize;
- $key =~ s/[^\w\s]//g if $dict;
- $key = lc $key if $fold;
- $max = int($size / $blksize);
- while ($max - $min > 1) {
- $mid = int(($max + $min) / 2);
- seek(FH,$mid * $blksize,0);
- $_ = <FH> if $mid; # probably a partial line
- $_ = <FH>;
- chop;
- s/[^\w\s]//g if $dict;
- $_ = lc $_ if $fold;
- if ($_ lt $key) {
- $min = $mid;
- }
- else {
- $max = $mid;
- }
- }
- $min *= $blksize;
- seek(FH,$min,0);
- <FH> if $min;
- while (<FH>) {
- chop;
- s/[^\w\s]//g if $dict;
- $_ = lc $_ if $fold;
- last if $_ ge $key;
- $min = tell(FH);
- }
- seek(FH,$min,0);
- $min;
-}
-
-1;
diff --git a/contrib/perl5/lib/newgetopt.pl b/contrib/perl5/lib/newgetopt.pl
deleted file mode 100644
index 0b7eed8..0000000
--- a/contrib/perl5/lib/newgetopt.pl
+++ /dev/null
@@ -1,68 +0,0 @@
-# newgetopt.pl -- new options parsing.
-# Now just a wrapper around the Getopt::Long module.
-# $Id: newgetopt.pl,v 1.17 1996-10-02 11:17:16+02 jv Exp $
-
-{ package newgetopt;
-
- # Values for $order. See GNU getopt.c for details.
- $REQUIRE_ORDER = 0;
- $PERMUTE = 1;
- $RETURN_IN_ORDER = 2;
-
- # Handle POSIX compliancy.
- if ( defined $ENV{"POSIXLY_CORRECT"} ) {
- $autoabbrev = 0; # no automatic abbrev of options (???)
- $getopt_compat = 0; # disallow '+' to start options
- $option_start = "(--|-)";
- $order = $REQUIRE_ORDER;
- $bundling = 0;
- $passthrough = 0;
- }
- else {
- $autoabbrev = 1; # automatic abbrev of options
- $getopt_compat = 1; # allow '+' to start options
- $option_start = "(--|-|\\+)";
- $order = $PERMUTE;
- $bundling = 0;
- $passthrough = 0;
- }
-
- # Other configurable settings.
- $debug = 0; # for debugging
- $ignorecase = 1; # ignore case when matching options
- $argv_end = "--"; # don't change this!
-}
-
-use Getopt::Long;
-
-################ Subroutines ################
-
-sub NGetOpt {
-
- $Getopt::Long::debug = $newgetopt::debug
- if defined $newgetopt::debug;
- $Getopt::Long::autoabbrev = $newgetopt::autoabbrev
- if defined $newgetopt::autoabbrev;
- $Getopt::Long::getopt_compat = $newgetopt::getopt_compat
- if defined $newgetopt::getopt_compat;
- $Getopt::Long::option_start = $newgetopt::option_start
- if defined $newgetopt::option_start;
- $Getopt::Long::order = $newgetopt::order
- if defined $newgetopt::order;
- $Getopt::Long::bundling = $newgetopt::bundling
- if defined $newgetopt::bundling;
- $Getopt::Long::ignorecase = $newgetopt::ignorecase
- if defined $newgetopt::ignorecase;
- $Getopt::Long::ignorecase = $newgetopt::ignorecase
- if defined $newgetopt::ignorecase;
- $Getopt::Long::passthrough = $newgetopt::passthrough
- if defined $newgetopt::passthrough;
-
- &GetOptions;
-}
-
-################ Package return ################
-
-1;
-
-################ End of newgetopt.pl ################
diff --git a/contrib/perl5/lib/open.pm b/contrib/perl5/lib/open.pm
deleted file mode 100644
index cdd20ac..0000000
--- a/contrib/perl5/lib/open.pm
+++ /dev/null
@@ -1,76 +0,0 @@
-package open;
-$open::hint_bits = 0x20000;
-
-sub import {
- shift;
- die "`use open' needs explicit list of disciplines" unless @_;
- $^H |= $open::hint_bits;
- while (@_) {
- my $type = shift;
- if ($type =~ /^(IN|OUT)\z/s) {
- my $discp = shift;
- unless ($discp =~ /^\s*:(raw|crlf)\s*\z/s) {
- die "Unknown discipline '$discp'";
- }
- $^H{"open_$type"} = $discp;
- }
- else {
- die "Unknown discipline class '$type'";
- }
- }
-}
-
-1;
-__END__
-
-=head1 NAME
-
-open - perl pragma to set default disciplines for input and output
-
-=head1 SYNOPSIS
-
- use open IN => ":crlf", OUT => ":raw";
-
-=head1 DESCRIPTION
-
-The open pragma is used to declare one or more default disciplines for
-I/O operations. Any open() and readpipe() (aka qx//) operators found
-within the lexical scope of this pragma will use the declared defaults.
-Neither open() with an explicit set of disciplines, nor sysopen() are
-influenced by this pragma.
-
-Only the two pseudo-disciplines ":raw" and ":crlf" are currently
-available.
-
-The ":raw" discipline corresponds to "binary mode" and the ":crlf"
-discipline corresponds to "text mode" on platforms that distinguish
-between the two modes when opening files (which is many DOS-like
-platforms, including Windows). These two disciplines are currently
-no-ops on platforms where binmode() is a no-op, but will be
-supported everywhere in future.
-
-=head1 UNIMPLEMENTED FUNCTIONALITY
-
-Full-fledged support for I/O disciplines is currently unimplemented.
-When they are eventually supported, this pragma will serve as one of
-the interfaces to declare default disciplines for all I/O.
-
-In future, any default disciplines declared by this pragma will be
-available by the special discipline name ":DEFAULT", and could be used
-within handle constructors that allow disciplines to be specified.
-This would make it possible to stack new disciplines over the default
-ones.
-
- open FH, "<:para :DEFAULT", $file or die "can't open $file: $!";
-
-Socket and directory handles will also support disciplines in
-future.
-
-Full support for I/O disciplines will enable all of the supported
-disciplines to work on all platforms.
-
-=head1 SEE ALSO
-
-L<perlfunc/"binmode">, L<perlfunc/"open">, L<perlunicode>
-
-=cut
diff --git a/contrib/perl5/lib/open2.pl b/contrib/perl5/lib/open2.pl
deleted file mode 100644
index 8cf08c2..0000000
--- a/contrib/perl5/lib/open2.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# This is a compatibility interface to IPC::Open2. New programs should
-# do
-#
-# use IPC::Open2;
-#
-# instead of
-#
-# require 'open2.pl';
-
-package main;
-use IPC::Open2 'open2';
-1
diff --git a/contrib/perl5/lib/open3.pl b/contrib/perl5/lib/open3.pl
deleted file mode 100644
index 7fcc931..0000000
--- a/contrib/perl5/lib/open3.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# This is a compatibility interface to IPC::Open3. New programs should
-# do
-#
-# use IPC::Open3;
-#
-# instead of
-#
-# require 'open3.pl';
-
-package main;
-use IPC::Open3 'open3';
-1
diff --git a/contrib/perl5/lib/overload.pm b/contrib/perl5/lib/overload.pm
deleted file mode 100644
index 70a5f88..0000000
--- a/contrib/perl5/lib/overload.pm
+++ /dev/null
@@ -1,1422 +0,0 @@
-package overload;
-
-$overload::hint_bits = 0x20000;
-
-sub nil {}
-
-sub OVERLOAD {
- $package = shift;
- my %arg = @_;
- my ($sub, $fb);
- $ {$package . "::OVERLOAD"}{dummy}++; # Register with magic by touching.
- *{$package . "::()"} = \&nil; # Make it findable via fetchmethod.
- for (keys %arg) {
- if ($_ eq 'fallback') {
- $fb = $arg{$_};
- } else {
- $sub = $arg{$_};
- if (not ref $sub and $sub !~ /::/) {
- $ {$package . "::(" . $_} = $sub;
- $sub = \&nil;
- }
- #print STDERR "Setting `$ {'package'}::\cO$_' to \\&`$sub'.\n";
- *{$package . "::(" . $_} = \&{ $sub };
- }
- }
- ${$package . "::()"} = $fb; # Make it findable too (fallback only).
-}
-
-sub import {
- $package = (caller())[0];
- # *{$package . "::OVERLOAD"} = \&OVERLOAD;
- shift;
- $package->overload::OVERLOAD(@_);
-}
-
-sub unimport {
- $package = (caller())[0];
- ${$package . "::OVERLOAD"}{dummy}++; # Upgrade the table
- shift;
- for (@_) {
- if ($_ eq 'fallback') {
- undef $ {$package . "::()"};
- } else {
- delete $ {$package . "::"}{"(" . $_};
- }
- }
-}
-
-sub Overloaded {
- my $package = shift;
- $package = ref $package if ref $package;
- $package->can('()');
-}
-
-sub ov_method {
- my $globref = shift;
- return undef unless $globref;
- my $sub = \&{*$globref};
- return $sub if $sub ne \&nil;
- return shift->can($ {*$globref});
-}
-
-sub OverloadedStringify {
- my $package = shift;
- $package = ref $package if ref $package;
- #$package->can('(""')
- ov_method mycan($package, '(""'), $package
- or ov_method mycan($package, '(0+'), $package
- or ov_method mycan($package, '(bool'), $package
- or ov_method mycan($package, '(nomethod'), $package;
-}
-
-sub Method {
- my $package = shift;
- $package = ref $package if ref $package;
- #my $meth = $package->can('(' . shift);
- ov_method mycan($package, '(' . shift), $package;
- #return $meth if $meth ne \&nil;
- #return $ {*{$meth}};
-}
-
-sub AddrRef {
- my $package = ref $_[0];
- return "$_[0]" unless $package;
- bless $_[0], overload::Fake; # Non-overloaded package
- my $str = "$_[0]";
- bless $_[0], $package; # Back
- $package . substr $str, index $str, '=';
-}
-
-sub StrVal {
- (OverloadedStringify($_[0]) or ref($_[0]) eq 'Regexp') ?
- (AddrRef(shift)) :
- "$_[0]";
-}
-
-sub mycan { # Real can would leave stubs.
- my ($package, $meth) = @_;
- return \*{$package . "::$meth"} if defined &{$package . "::$meth"};
- my $p;
- foreach $p (@{$package . "::ISA"}) {
- my $out = mycan($p, $meth);
- return $out if $out;
- }
- return undef;
-}
-
-%constants = (
- 'integer' => 0x1000,
- 'float' => 0x2000,
- 'binary' => 0x4000,
- 'q' => 0x8000,
- 'qr' => 0x10000,
- );
-
-%ops = ( with_assign => "+ - * / % ** << >> x .",
- assign => "+= -= *= /= %= **= <<= >>= x= .=",
- num_comparison => "< <= > >= == !=",
- '3way_comparison'=> "<=> cmp",
- str_comparison => "lt le gt ge eq ne",
- binary => "& | ^",
- unary => "neg ! ~",
- mutators => '++ --',
- func => "atan2 cos sin exp abs log sqrt",
- conversion => 'bool "" 0+',
- iterators => '<>',
- dereferencing => '${} @{} %{} &{} *{}',
- special => 'nomethod fallback =');
-
-use warnings::register;
-sub constant {
- # Arguments: what, sub
- while (@_) {
- if (@_ == 1) {
- warnings::warnif ("Odd number of arguments for overload::constant");
- last;
- }
- elsif (!exists $constants {$_ [0]}) {
- warnings::warnif ("`$_[0]' is not an overloadable type");
- }
- elsif (!ref $_ [1] || "$_[1]" !~ /CODE\(0x[\da-f]+\)$/) {
- # Can't use C<ref $_[1] eq "CODE"> above as code references can be
- # blessed, and C<ref> would return the package the ref is blessed into.
- if (warnings::enabled) {
- $_ [1] = "undef" unless defined $_ [1];
- warnings::warn ("`$_[1]' is not a code reference");
- }
- }
- else {
- $^H{$_[0]} = $_[1];
- $^H |= $constants{$_[0]} | $overload::hint_bits;
- }
- shift, shift;
- }
-}
-
-sub remove_constant {
- # Arguments: what, sub
- while (@_) {
- delete $^H{$_[0]};
- $^H &= ~ $constants{$_[0]};
- shift, shift;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-overload - Package for overloading perl operations
-
-=head1 SYNOPSIS
-
- package SomeThing;
-
- use overload
- '+' => \&myadd,
- '-' => \&mysub;
- # etc
- ...
-
- package main;
- $a = new SomeThing 57;
- $b=5+$a;
- ...
- if (overload::Overloaded $b) {...}
- ...
- $strval = overload::StrVal $b;
-
-=head1 DESCRIPTION
-
-=head2 Declaration of overloaded functions
-
-The compilation directive
-
- package Number;
- use overload
- "+" => \&add,
- "*=" => "muas";
-
-declares function Number::add() for addition, and method muas() in
-the "class" C<Number> (or one of its base classes)
-for the assignment form C<*=> of multiplication.
-
-Arguments of this directive come in (key, value) pairs. Legal values
-are values legal inside a C<&{ ... }> call, so the name of a
-subroutine, a reference to a subroutine, or an anonymous subroutine
-will all work. Note that values specified as strings are
-interpreted as methods, not subroutines. Legal keys are listed below.
-
-The subroutine C<add> will be called to execute C<$a+$b> if $a
-is a reference to an object blessed into the package C<Number>, or if $a is
-not an object from a package with defined mathemagic addition, but $b is a
-reference to a C<Number>. It can also be called in other situations, like
-C<$a+=7>, or C<$a++>. See L<MAGIC AUTOGENERATION>. (Mathemagical
-methods refer to methods triggered by an overloaded mathematical
-operator.)
-
-Since overloading respects inheritance via the @ISA hierarchy, the
-above declaration would also trigger overloading of C<+> and C<*=> in
-all the packages which inherit from C<Number>.
-
-=head2 Calling Conventions for Binary Operations
-
-The functions specified in the C<use overload ...> directive are called
-with three (in one particular case with four, see L<Last Resort>)
-arguments. If the corresponding operation is binary, then the first
-two arguments are the two arguments of the operation. However, due to
-general object calling conventions, the first argument should always be
-an object in the package, so in the situation of C<7+$a>, the
-order of the arguments is interchanged. It probably does not matter
-when implementing the addition method, but whether the arguments
-are reversed is vital to the subtraction method. The method can
-query this information by examining the third argument, which can take
-three different values:
-
-=over 7
-
-=item FALSE
-
-the order of arguments is as in the current operation.
-
-=item TRUE
-
-the arguments are reversed.
-
-=item C<undef>
-
-the current operation is an assignment variant (as in
-C<$a+=7>), but the usual function is called instead. This additional
-information can be used to generate some optimizations. Compare
-L<Calling Conventions for Mutators>.
-
-=back
-
-=head2 Calling Conventions for Unary Operations
-
-Unary operation are considered binary operations with the second
-argument being C<undef>. Thus the functions that overloads C<{"++"}>
-is called with arguments C<($a,undef,'')> when $a++ is executed.
-
-=head2 Calling Conventions for Mutators
-
-Two types of mutators have different calling conventions:
-
-=over
-
-=item C<++> and C<-->
-
-The routines which implement these operators are expected to actually
-I<mutate> their arguments. So, assuming that $obj is a reference to a
-number,
-
- sub incr { my $n = $ {$_[0]}; ++$n; $_[0] = bless \$n}
-
-is an appropriate implementation of overloaded C<++>. Note that
-
- sub incr { ++$ {$_[0]} ; shift }
-
-is OK if used with preincrement and with postincrement. (In the case
-of postincrement a copying will be performed, see L<Copy Constructor>.)
-
-=item C<x=> and other assignment versions
-
-There is nothing special about these methods. They may change the
-value of their arguments, and may leave it as is. The result is going
-to be assigned to the value in the left-hand-side if different from
-this value.
-
-This allows for the same method to be used as overloaded C<+=> and
-C<+>. Note that this is I<allowed>, but not recommended, since by the
-semantic of L<"Fallback"> Perl will call the method for C<+> anyway,
-if C<+=> is not overloaded.
-
-=back
-
-B<Warning.> Due to the presense of assignment versions of operations,
-routines which may be called in assignment context may create
-self-referential structures. Currently Perl will not free self-referential
-structures until cycles are C<explicitly> broken. You may get problems
-when traversing your structures too.
-
-Say,
-
- use overload '+' => sub { bless [ \$_[0], \$_[1] ] };
-
-is asking for trouble, since for code C<$obj += $foo> the subroutine
-is called as C<$obj = add($obj, $foo, undef)>, or C<$obj = [\$obj,
-\$foo]>. If using such a subroutine is an important optimization, one
-can overload C<+=> explicitly by a non-"optimized" version, or switch
-to non-optimized version if C<not defined $_[2]> (see
-L<Calling Conventions for Binary Operations>).
-
-Even if no I<explicit> assignment-variants of operators are present in
-the script, they may be generated by the optimizer. Say, C<",$obj,"> or
-C<',' . $obj . ','> may be both optimized to
-
- my $tmp = ',' . $obj; $tmp .= ',';
-
-=head2 Overloadable Operations
-
-The following symbols can be specified in C<use overload> directive:
-
-=over 5
-
-=item * I<Arithmetic operations>
-
- "+", "+=", "-", "-=", "*", "*=", "/", "/=", "%", "%=",
- "**", "**=", "<<", "<<=", ">>", ">>=", "x", "x=", ".", ".=",
-
-For these operations a substituted non-assignment variant can be called if
-the assignment variant is not available. Methods for operations "C<+>",
-"C<->", "C<+=>", and "C<-=>" can be called to automatically generate
-increment and decrement methods. The operation "C<->" can be used to
-autogenerate missing methods for unary minus or C<abs>.
-
-See L<"MAGIC AUTOGENERATION">, L<"Calling Conventions for Mutators"> and
-L<"Calling Conventions for Binary Operations">) for details of these
-substitutions.
-
-=item * I<Comparison operations>
-
- "<", "<=", ">", ">=", "==", "!=", "<=>",
- "lt", "le", "gt", "ge", "eq", "ne", "cmp",
-
-If the corresponding "spaceship" variant is available, it can be
-used to substitute for the missing operation. During C<sort>ing
-arrays, C<cmp> is used to compare values subject to C<use overload>.
-
-=item * I<Bit operations>
-
- "&", "^", "|", "neg", "!", "~",
-
-"C<neg>" stands for unary minus. If the method for C<neg> is not
-specified, it can be autogenerated using the method for
-subtraction. If the method for "C<!>" is not specified, it can be
-autogenerated using the methods for "C<bool>", or "C<\"\">", or "C<0+>".
-
-=item * I<Increment and decrement>
-
- "++", "--",
-
-If undefined, addition and subtraction methods can be
-used instead. These operations are called both in prefix and
-postfix form.
-
-=item * I<Transcendental functions>
-
- "atan2", "cos", "sin", "exp", "abs", "log", "sqrt",
-
-If C<abs> is unavailable, it can be autogenerated using methods
-for "E<lt>" or "E<lt>=E<gt>" combined with either unary minus or subtraction.
-
-=item * I<Boolean, string and numeric conversion>
-
- "bool", "\"\"", "0+",
-
-If one or two of these operations are not overloaded, the remaining ones can
-be used instead. C<bool> is used in the flow control operators
-(like C<while>) and for the ternary "C<?:>" operation. These functions can
-return any arbitrary Perl value. If the corresponding operation for this value
-is overloaded too, that operation will be called again with this value.
-
-As a special case if the overload returns the object itself then it will
-be used directly. An overloaded conversion returning the object is
-probably a bug, because you're likely to get something that looks like
-C<YourPackage=HASH(0x8172b34)>.
-
-=item * I<Iteration>
-
- "<>"
-
-If not overloaded, the argument will be converted to a filehandle or
-glob (which may require a stringification). The same overloading
-happens both for the I<read-filehandle> syntax C<E<lt>$varE<gt>> and
-I<globbing> syntax C<E<lt>${var}E<gt>>.
-
-=item * I<Dereferencing>
-
- '${}', '@{}', '%{}', '&{}', '*{}'.
-
-If not overloaded, the argument will be dereferenced I<as is>, thus
-should be of correct type. These functions should return a reference
-of correct type, or another object with overloaded dereferencing.
-
-As a special case if the overload returns the object itself then it
-will be used directly (provided it is the correct type).
-
-The dereference operators must be specified explicitly they will not be passed to
-"nomethod".
-
-=item * I<Special>
-
- "nomethod", "fallback", "=",
-
-see L<SPECIAL SYMBOLS FOR C<use overload>>.
-
-=back
-
-See L<"Fallback"> for an explanation of when a missing method can be
-autogenerated.
-
-A computer-readable form of the above table is available in the hash
-%overload::ops, with values being space-separated lists of names:
-
- with_assign => '+ - * / % ** << >> x .',
- assign => '+= -= *= /= %= **= <<= >>= x= .=',
- num_comparison => '< <= > >= == !=',
- '3way_comparison'=> '<=> cmp',
- str_comparison => 'lt le gt ge eq ne',
- binary => '& | ^',
- unary => 'neg ! ~',
- mutators => '++ --',
- func => 'atan2 cos sin exp abs log sqrt',
- conversion => 'bool "" 0+',
- iterators => '<>',
- dereferencing => '${} @{} %{} &{} *{}',
- special => 'nomethod fallback ='
-
-=head2 Inheritance and overloading
-
-Inheritance interacts with overloading in two ways.
-
-=over
-
-=item Strings as values of C<use overload> directive
-
-If C<value> in
-
- use overload key => value;
-
-is a string, it is interpreted as a method name.
-
-=item Overloading of an operation is inherited by derived classes
-
-Any class derived from an overloaded class is also overloaded. The
-set of overloaded methods is the union of overloaded methods of all
-the ancestors. If some method is overloaded in several ancestor, then
-which description will be used is decided by the usual inheritance
-rules:
-
-If C<A> inherits from C<B> and C<C> (in this order), C<B> overloads
-C<+> with C<\&D::plus_sub>, and C<C> overloads C<+> by C<"plus_meth">,
-then the subroutine C<D::plus_sub> will be called to implement
-operation C<+> for an object in package C<A>.
-
-=back
-
-Note that since the value of the C<fallback> key is not a subroutine,
-its inheritance is not governed by the above rules. In the current
-implementation, the value of C<fallback> in the first overloaded
-ancestor is used, but this is accidental and subject to change.
-
-=head1 SPECIAL SYMBOLS FOR C<use overload>
-
-Three keys are recognized by Perl that are not covered by the above
-description.
-
-=head2 Last Resort
-
-C<"nomethod"> should be followed by a reference to a function of four
-parameters. If defined, it is called when the overloading mechanism
-cannot find a method for some operation. The first three arguments of
-this function coincide with the arguments for the corresponding method if
-it were found, the fourth argument is the symbol
-corresponding to the missing method. If several methods are tried,
-the last one is used. Say, C<1-$a> can be equivalent to
-
- &nomethodMethod($a,1,1,"-")
-
-if the pair C<"nomethod" =E<gt> "nomethodMethod"> was specified in the
-C<use overload> directive.
-
-The C<"nomethod"> mechanism is I<not> used for the dereference operators
-( ${} @{} %{} &{} *{} ).
-
-
-If some operation cannot be resolved, and there is no function
-assigned to C<"nomethod">, then an exception will be raised via die()--
-unless C<"fallback"> was specified as a key in C<use overload> directive.
-
-
-=head2 Fallback
-
-The key C<"fallback"> governs what to do if a method for a particular
-operation is not found. Three different cases are possible depending on
-the value of C<"fallback">:
-
-=over 16
-
-=item * C<undef>
-
-Perl tries to use a
-substituted method (see L<MAGIC AUTOGENERATION>). If this fails, it
-then tries to calls C<"nomethod"> value; if missing, an exception
-will be raised.
-
-=item * TRUE
-
-The same as for the C<undef> value, but no exception is raised. Instead,
-it silently reverts to what it would have done were there no C<use overload>
-present.
-
-=item * defined, but FALSE
-
-No autogeneration is tried. Perl tries to call
-C<"nomethod"> value, and if this is missing, raises an exception.
-
-=back
-
-B<Note.> C<"fallback"> inheritance via @ISA is not carved in stone
-yet, see L<"Inheritance and overloading">.
-
-=head2 Copy Constructor
-
-The value for C<"="> is a reference to a function with three
-arguments, i.e., it looks like the other values in C<use
-overload>. However, it does not overload the Perl assignment
-operator. This would go against Camel hair.
-
-This operation is called in the situations when a mutator is applied
-to a reference that shares its object with some other reference, such
-as
-
- $a=$b;
- ++$a;
-
-To make this change $a and not change $b, a copy of C<$$a> is made,
-and $a is assigned a reference to this new object. This operation is
-done during execution of the C<++$a>, and not during the assignment,
-(so before the increment C<$$a> coincides with C<$$b>). This is only
-done if C<++> is expressed via a method for C<'++'> or C<'+='> (or
-C<nomethod>). Note that if this operation is expressed via C<'+'>
-a nonmutator, i.e., as in
-
- $a=$b;
- $a=$a+1;
-
-then C<$a> does not reference a new copy of C<$$a>, since $$a does not
-appear as lvalue when the above code is executed.
-
-If the copy constructor is required during the execution of some mutator,
-but a method for C<'='> was not specified, it can be autogenerated as a
-string copy if the object is a plain scalar.
-
-=over 5
-
-=item B<Example>
-
-The actually executed code for
-
- $a=$b;
- Something else which does not modify $a or $b....
- ++$a;
-
-may be
-
- $a=$b;
- Something else which does not modify $a or $b....
- $a = $a->clone(undef,"");
- $a->incr(undef,"");
-
-if $b was mathemagical, and C<'++'> was overloaded with C<\&incr>,
-C<'='> was overloaded with C<\&clone>.
-
-=back
-
-Same behaviour is triggered by C<$b = $a++>, which is consider a synonym for
-C<$b = $a; ++$a>.
-
-=head1 MAGIC AUTOGENERATION
-
-If a method for an operation is not found, and the value for C<"fallback"> is
-TRUE or undefined, Perl tries to autogenerate a substitute method for
-the missing operation based on the defined operations. Autogenerated method
-substitutions are possible for the following operations:
-
-=over 16
-
-=item I<Assignment forms of arithmetic operations>
-
-C<$a+=$b> can use the method for C<"+"> if the method for C<"+=">
-is not defined.
-
-=item I<Conversion operations>
-
-String, numeric, and boolean conversion are calculated in terms of one
-another if not all of them are defined.
-
-=item I<Increment and decrement>
-
-The C<++$a> operation can be expressed in terms of C<$a+=1> or C<$a+1>,
-and C<$a--> in terms of C<$a-=1> and C<$a-1>.
-
-=item C<abs($a)>
-
-can be expressed in terms of C<$aE<lt>0> and C<-$a> (or C<0-$a>).
-
-=item I<Unary minus>
-
-can be expressed in terms of subtraction.
-
-=item I<Negation>
-
-C<!> and C<not> can be expressed in terms of boolean conversion, or
-string or numerical conversion.
-
-=item I<Concatenation>
-
-can be expressed in terms of string conversion.
-
-=item I<Comparison operations>
-
-can be expressed in terms of its "spaceship" counterpart: either
-C<E<lt>=E<gt>> or C<cmp>:
-
- <, >, <=, >=, ==, != in terms of <=>
- lt, gt, le, ge, eq, ne in terms of cmp
-
-=item I<Iterator>
-
- <> in terms of builtin operations
-
-=item I<Dereferencing>
-
- ${} @{} %{} &{} *{} in terms of builtin operations
-
-=item I<Copy operator>
-
-can be expressed in terms of an assignment to the dereferenced value, if this
-value is a scalar and not a reference.
-
-=back
-
-=head1 Losing overloading
-
-The restriction for the comparison operation is that even if, for example,
-`C<cmp>' should return a blessed reference, the autogenerated `C<lt>'
-function will produce only a standard logical value based on the
-numerical value of the result of `C<cmp>'. In particular, a working
-numeric conversion is needed in this case (possibly expressed in terms of
-other conversions).
-
-Similarly, C<.=> and C<x=> operators lose their mathemagical properties
-if the string conversion substitution is applied.
-
-When you chop() a mathemagical object it is promoted to a string and its
-mathemagical properties are lost. The same can happen with other
-operations as well.
-
-=head1 Run-time Overloading
-
-Since all C<use> directives are executed at compile-time, the only way to
-change overloading during run-time is to
-
- eval 'use overload "+" => \&addmethod';
-
-You can also use
-
- eval 'no overload "+", "--", "<="';
-
-though the use of these constructs during run-time is questionable.
-
-=head1 Public functions
-
-Package C<overload.pm> provides the following public functions:
-
-=over 5
-
-=item overload::StrVal(arg)
-
-Gives string value of C<arg> as in absence of stringify overloading.
-
-=item overload::Overloaded(arg)
-
-Returns true if C<arg> is subject to overloading of some operations.
-
-=item overload::Method(obj,op)
-
-Returns C<undef> or a reference to the method that implements C<op>.
-
-=back
-
-=head1 Overloading constants
-
-For some application Perl parser mangles constants too much. It is possible
-to hook into this process via overload::constant() and overload::remove_constant()
-functions.
-
-These functions take a hash as an argument. The recognized keys of this hash
-are
-
-=over 8
-
-=item integer
-
-to overload integer constants,
-
-=item float
-
-to overload floating point constants,
-
-=item binary
-
-to overload octal and hexadecimal constants,
-
-=item q
-
-to overload C<q>-quoted strings, constant pieces of C<qq>- and C<qx>-quoted
-strings and here-documents,
-
-=item qr
-
-to overload constant pieces of regular expressions.
-
-=back
-
-The corresponding values are references to functions which take three arguments:
-the first one is the I<initial> string form of the constant, the second one
-is how Perl interprets this constant, the third one is how the constant is used.
-Note that the initial string form does not
-contain string delimiters, and has backslashes in backslash-delimiter
-combinations stripped (thus the value of delimiter is not relevant for
-processing of this string). The return value of this function is how this
-constant is going to be interpreted by Perl. The third argument is undefined
-unless for overloaded C<q>- and C<qr>- constants, it is C<q> in single-quote
-context (comes from strings, regular expressions, and single-quote HERE
-documents), it is C<tr> for arguments of C<tr>/C<y> operators,
-it is C<s> for right-hand side of C<s>-operator, and it is C<qq> otherwise.
-
-Since an expression C<"ab$cd,,"> is just a shortcut for C<'ab' . $cd . ',,'>,
-it is expected that overloaded constant strings are equipped with reasonable
-overloaded catenation operator, otherwise absurd results will result.
-Similarly, negative numbers are considered as negations of positive constants.
-
-Note that it is probably meaningless to call the functions overload::constant()
-and overload::remove_constant() from anywhere but import() and unimport() methods.
-From these methods they may be called as
-
- sub import {
- shift;
- return unless @_;
- die "unknown import: @_" unless @_ == 1 and $_[0] eq ':constant';
- overload::constant integer => sub {Math::BigInt->new(shift)};
- }
-
-B<BUGS> Currently overloaded-ness of constants does not propagate
-into C<eval '...'>.
-
-=head1 IMPLEMENTATION
-
-What follows is subject to change RSN.
-
-The table of methods for all operations is cached in magic for the
-symbol table hash for the package. The cache is invalidated during
-processing of C<use overload>, C<no overload>, new function
-definitions, and changes in @ISA. However, this invalidation remains
-unprocessed until the next C<bless>ing into the package. Hence if you
-want to change overloading structure dynamically, you'll need an
-additional (fake) C<bless>ing to update the table.
-
-(Every SVish thing has a magic queue, and magic is an entry in that
-queue. This is how a single variable may participate in multiple
-forms of magic simultaneously. For instance, environment variables
-regularly have two forms at once: their %ENV magic and their taint
-magic. However, the magic which implements overloading is applied to
-the stashes, which are rarely used directly, thus should not slow down
-Perl.)
-
-If an object belongs to a package using overload, it carries a special
-flag. Thus the only speed penalty during arithmetic operations without
-overloading is the checking of this flag.
-
-In fact, if C<use overload> is not present, there is almost no overhead
-for overloadable operations, so most programs should not suffer
-measurable performance penalties. A considerable effort was made to
-minimize the overhead when overload is used in some package, but the
-arguments in question do not belong to packages using overload. When
-in doubt, test your speed with C<use overload> and without it. So far
-there have been no reports of substantial speed degradation if Perl is
-compiled with optimization turned on.
-
-There is no size penalty for data if overload is not used. The only
-size penalty if overload is used in some package is that I<all> the
-packages acquire a magic during the next C<bless>ing into the
-package. This magic is three-words-long for packages without
-overloading, and carries the cache table if the package is overloaded.
-
-Copying (C<$a=$b>) is shallow; however, a one-level-deep copying is
-carried out before any operation that can imply an assignment to the
-object $a (or $b) refers to, like C<$a++>. You can override this
-behavior by defining your own copy constructor (see L<"Copy Constructor">).
-
-It is expected that arguments to methods that are not explicitly supposed
-to be changed are constant (but this is not enforced).
-
-=head1 Metaphor clash
-
-One may wonder why the semantic of overloaded C<=> is so counter intuitive.
-If it I<looks> counter intuitive to you, you are subject to a metaphor
-clash.
-
-Here is a Perl object metaphor:
-
-I< object is a reference to blessed data>
-
-and an arithmetic metaphor:
-
-I< object is a thing by itself>.
-
-The I<main> problem of overloading C<=> is the fact that these metaphors
-imply different actions on the assignment C<$a = $b> if $a and $b are
-objects. Perl-think implies that $a becomes a reference to whatever
-$b was referencing. Arithmetic-think implies that the value of "object"
-$a is changed to become the value of the object $b, preserving the fact
-that $a and $b are separate entities.
-
-The difference is not relevant in the absence of mutators. After
-a Perl-way assignment an operation which mutates the data referenced by $a
-would change the data referenced by $b too. Effectively, after
-C<$a = $b> values of $a and $b become I<indistinguishable>.
-
-On the other hand, anyone who has used algebraic notation knows the
-expressive power of the arithmetic metaphor. Overloading works hard
-to enable this metaphor while preserving the Perlian way as far as
-possible. Since it is not not possible to freely mix two contradicting
-metaphors, overloading allows the arithmetic way to write things I<as
-far as all the mutators are called via overloaded access only>. The
-way it is done is described in L<Copy Constructor>.
-
-If some mutator methods are directly applied to the overloaded values,
-one may need to I<explicitly unlink> other values which references the
-same value:
-
- $a = new Data 23;
- ...
- $b = $a; # $b is "linked" to $a
- ...
- $a = $a->clone; # Unlink $b from $a
- $a->increment_by(4);
-
-Note that overloaded access makes this transparent:
-
- $a = new Data 23;
- $b = $a; # $b is "linked" to $a
- $a += 4; # would unlink $b automagically
-
-However, it would not make
-
- $a = new Data 23;
- $a = 4; # Now $a is a plain 4, not 'Data'
-
-preserve "objectness" of $a. But Perl I<has> a way to make assignments
-to an object do whatever you want. It is just not the overload, but
-tie()ing interface (see L<perlfunc/tie>). Adding a FETCH() method
-which returns the object itself, and STORE() method which changes the
-value of the object, one can reproduce the arithmetic metaphor in its
-completeness, at least for variables which were tie()d from the start.
-
-(Note that a workaround for a bug may be needed, see L<"BUGS">.)
-
-=head1 Cookbook
-
-Please add examples to what follows!
-
-=head2 Two-face scalars
-
-Put this in F<two_face.pm> in your Perl library directory:
-
- package two_face; # Scalars with separate string and
- # numeric values.
- sub new { my $p = shift; bless [@_], $p }
- use overload '""' => \&str, '0+' => \&num, fallback => 1;
- sub num {shift->[1]}
- sub str {shift->[0]}
-
-Use it as follows:
-
- require two_face;
- my $seven = new two_face ("vii", 7);
- printf "seven=$seven, seven=%d, eight=%d\n", $seven, $seven+1;
- print "seven contains `i'\n" if $seven =~ /i/;
-
-(The second line creates a scalar which has both a string value, and a
-numeric value.) This prints:
-
- seven=vii, seven=7, eight=8
- seven contains `i'
-
-=head2 Two-face references
-
-Suppose you want to create an object which is accessible as both an
-array reference and a hash reference, similar to the
-L<pseudo-hash|perlref/"Pseudo-hashes: Using an array as a hash">
-builtin Perl type. Let's make it better than a pseudo-hash by
-allowing index 0 to be treated as a normal element.
-
- package two_refs;
- use overload '%{}' => \&gethash, '@{}' => sub { $ {shift()} };
- sub new {
- my $p = shift;
- bless \ [@_], $p;
- }
- sub gethash {
- my %h;
- my $self = shift;
- tie %h, ref $self, $self;
- \%h;
- }
-
- sub TIEHASH { my $p = shift; bless \ shift, $p }
- my %fields;
- my $i = 0;
- $fields{$_} = $i++ foreach qw{zero one two three};
- sub STORE {
- my $self = ${shift()};
- my $key = $fields{shift()};
- defined $key or die "Out of band access";
- $$self->[$key] = shift;
- }
- sub FETCH {
- my $self = ${shift()};
- my $key = $fields{shift()};
- defined $key or die "Out of band access";
- $$self->[$key];
- }
-
-Now one can access an object using both the array and hash syntax:
-
- my $bar = new two_refs 3,4,5,6;
- $bar->[2] = 11;
- $bar->{two} == 11 or die 'bad hash fetch';
-
-Note several important features of this example. First of all, the
-I<actual> type of $bar is a scalar reference, and we do not overload
-the scalar dereference. Thus we can get the I<actual> non-overloaded
-contents of $bar by just using C<$$bar> (what we do in functions which
-overload dereference). Similarly, the object returned by the
-TIEHASH() method is a scalar reference.
-
-Second, we create a new tied hash each time the hash syntax is used.
-This allows us not to worry about a possibility of a reference loop,
-would would lead to a memory leak.
-
-Both these problems can be cured. Say, if we want to overload hash
-dereference on a reference to an object which is I<implemented> as a
-hash itself, the only problem one has to circumvent is how to access
-this I<actual> hash (as opposed to the I<virtual> hash exhibited by the
-overloaded dereference operator). Here is one possible fetching routine:
-
- sub access_hash {
- my ($self, $key) = (shift, shift);
- my $class = ref $self;
- bless $self, 'overload::dummy'; # Disable overloading of %{}
- my $out = $self->{$key};
- bless $self, $class; # Restore overloading
- $out;
- }
-
-To remove creation of the tied hash on each access, one may an extra
-level of indirection which allows a non-circular structure of references:
-
- package two_refs1;
- use overload '%{}' => sub { ${shift()}->[1] },
- '@{}' => sub { ${shift()}->[0] };
- sub new {
- my $p = shift;
- my $a = [@_];
- my %h;
- tie %h, $p, $a;
- bless \ [$a, \%h], $p;
- }
- sub gethash {
- my %h;
- my $self = shift;
- tie %h, ref $self, $self;
- \%h;
- }
-
- sub TIEHASH { my $p = shift; bless \ shift, $p }
- my %fields;
- my $i = 0;
- $fields{$_} = $i++ foreach qw{zero one two three};
- sub STORE {
- my $a = ${shift()};
- my $key = $fields{shift()};
- defined $key or die "Out of band access";
- $a->[$key] = shift;
- }
- sub FETCH {
- my $a = ${shift()};
- my $key = $fields{shift()};
- defined $key or die "Out of band access";
- $a->[$key];
- }
-
-Now if $baz is overloaded like this, then C<$baz> is a reference to a
-reference to the intermediate array, which keeps a reference to an
-actual array, and the access hash. The tie()ing object for the access
-hash is a reference to a reference to the actual array, so
-
-=over
-
-=item *
-
-There are no loops of references.
-
-=item *
-
-Both "objects" which are blessed into the class C<two_refs1> are
-references to a reference to an array, thus references to a I<scalar>.
-Thus the accessor expression C<$$foo-E<gt>[$ind]> involves no
-overloaded operations.
-
-=back
-
-=head2 Symbolic calculator
-
-Put this in F<symbolic.pm> in your Perl library directory:
-
- package symbolic; # Primitive symbolic calculator
- use overload nomethod => \&wrap;
-
- sub new { shift; bless ['n', @_] }
- sub wrap {
- my ($obj, $other, $inv, $meth) = @_;
- ($obj, $other) = ($other, $obj) if $inv;
- bless [$meth, $obj, $other];
- }
-
-This module is very unusual as overloaded modules go: it does not
-provide any usual overloaded operators, instead it provides the L<Last
-Resort> operator C<nomethod>. In this example the corresponding
-subroutine returns an object which encapsulates operations done over
-the objects: C<new symbolic 3> contains C<['n', 3]>, C<2 + new
-symbolic 3> contains C<['+', 2, ['n', 3]]>.
-
-Here is an example of the script which "calculates" the side of
-circumscribed octagon using the above package:
-
- require symbolic;
- my $iter = 1; # 2**($iter+2) = 8
- my $side = new symbolic 1;
- my $cnt = $iter;
-
- while ($cnt--) {
- $side = (sqrt(1 + $side**2) - 1)/$side;
- }
- print "OK\n";
-
-The value of $side is
-
- ['/', ['-', ['sqrt', ['+', 1, ['**', ['n', 1], 2]],
- undef], 1], ['n', 1]]
-
-Note that while we obtained this value using a nice little script,
-there is no simple way to I<use> this value. In fact this value may
-be inspected in debugger (see L<perldebug>), but ony if
-C<bareStringify> B<O>ption is set, and not via C<p> command.
-
-If one attempts to print this value, then the overloaded operator
-C<""> will be called, which will call C<nomethod> operator. The
-result of this operator will be stringified again, but this result is
-again of type C<symbolic>, which will lead to an infinite loop.
-
-Add a pretty-printer method to the module F<symbolic.pm>:
-
- sub pretty {
- my ($meth, $a, $b) = @{+shift};
- $a = 'u' unless defined $a;
- $b = 'u' unless defined $b;
- $a = $a->pretty if ref $a;
- $b = $b->pretty if ref $b;
- "[$meth $a $b]";
- }
-
-Now one can finish the script by
-
- print "side = ", $side->pretty, "\n";
-
-The method C<pretty> is doing object-to-string conversion, so it
-is natural to overload the operator C<""> using this method. However,
-inside such a method it is not necessary to pretty-print the
-I<components> $a and $b of an object. In the above subroutine
-C<"[$meth $a $b]"> is a catenation of some strings and components $a
-and $b. If these components use overloading, the catenation operator
-will look for an overloaded operator C<.>; if not present, it will
-look for an overloaded operator C<"">. Thus it is enough to use
-
- use overload nomethod => \&wrap, '""' => \&str;
- sub str {
- my ($meth, $a, $b) = @{+shift};
- $a = 'u' unless defined $a;
- $b = 'u' unless defined $b;
- "[$meth $a $b]";
- }
-
-Now one can change the last line of the script to
-
- print "side = $side\n";
-
-which outputs
-
- side = [/ [- [sqrt [+ 1 [** [n 1 u] 2]] u] 1] [n 1 u]]
-
-and one can inspect the value in debugger using all the possible
-methods.
-
-Something is is still amiss: consider the loop variable $cnt of the
-script. It was a number, not an object. We cannot make this value of
-type C<symbolic>, since then the loop will not terminate.
-
-Indeed, to terminate the cycle, the $cnt should become false.
-However, the operator C<bool> for checking falsity is overloaded (this
-time via overloaded C<"">), and returns a long string, thus any object
-of type C<symbolic> is true. To overcome this, we need a way to
-compare an object to 0. In fact, it is easier to write a numeric
-conversion routine.
-
-Here is the text of F<symbolic.pm> with such a routine added (and
-slightly modified str()):
-
- package symbolic; # Primitive symbolic calculator
- use overload
- nomethod => \&wrap, '""' => \&str, '0+' => \&num;
-
- sub new { shift; bless ['n', @_] }
- sub wrap {
- my ($obj, $other, $inv, $meth) = @_;
- ($obj, $other) = ($other, $obj) if $inv;
- bless [$meth, $obj, $other];
- }
- sub str {
- my ($meth, $a, $b) = @{+shift};
- $a = 'u' unless defined $a;
- if (defined $b) {
- "[$meth $a $b]";
- } else {
- "[$meth $a]";
- }
- }
- my %subr = ( n => sub {$_[0]},
- sqrt => sub {sqrt $_[0]},
- '-' => sub {shift() - shift()},
- '+' => sub {shift() + shift()},
- '/' => sub {shift() / shift()},
- '*' => sub {shift() * shift()},
- '**' => sub {shift() ** shift()},
- );
- sub num {
- my ($meth, $a, $b) = @{+shift};
- my $subr = $subr{$meth}
- or die "Do not know how to ($meth) in symbolic";
- $a = $a->num if ref $a eq __PACKAGE__;
- $b = $b->num if ref $b eq __PACKAGE__;
- $subr->($a,$b);
- }
-
-All the work of numeric conversion is done in %subr and num(). Of
-course, %subr is not complete, it contains only operators used in the
-example below. Here is the extra-credit question: why do we need an
-explicit recursion in num()? (Answer is at the end of this section.)
-
-Use this module like this:
-
- require symbolic;
- my $iter = new symbolic 2; # 16-gon
- my $side = new symbolic 1;
- my $cnt = $iter;
-
- while ($cnt) {
- $cnt = $cnt - 1; # Mutator `--' not implemented
- $side = (sqrt(1 + $side**2) - 1)/$side;
- }
- printf "%s=%f\n", $side, $side;
- printf "pi=%f\n", $side*(2**($iter+2));
-
-It prints (without so many line breaks)
-
- [/ [- [sqrt [+ 1 [** [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1]
- [n 1]] 2]]] 1]
- [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] [n 1]]]=0.198912
- pi=3.182598
-
-The above module is very primitive. It does not implement
-mutator methods (C<++>, C<-=> and so on), does not do deep copying
-(not required without mutators!), and implements only those arithmetic
-operations which are used in the example.
-
-To implement most arithmetic operations is easy; one should just use
-the tables of operations, and change the code which fills %subr to
-
- my %subr = ( 'n' => sub {$_[0]} );
- foreach my $op (split " ", $overload::ops{with_assign}) {
- $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}";
- }
- my @bins = qw(binary 3way_comparison num_comparison str_comparison);
- foreach my $op (split " ", "@overload::ops{ @bins }") {
- $subr{$op} = eval "sub {shift() $op shift()}";
- }
- foreach my $op (split " ", "@overload::ops{qw(unary func)}") {
- print "defining `$op'\n";
- $subr{$op} = eval "sub {$op shift()}";
- }
-
-Due to L<Calling Conventions for Mutators>, we do not need anything
-special to make C<+=> and friends work, except filling C<+=> entry of
-%subr, and defining a copy constructor (needed since Perl has no
-way to know that the implementation of C<'+='> does not mutate
-the argument, compare L<Copy Constructor>).
-
-To implement a copy constructor, add C<< '=' => \&cpy >> to C<use overload>
-line, and code (this code assumes that mutators change things one level
-deep only, so recursive copying is not needed):
-
- sub cpy {
- my $self = shift;
- bless [@$self], ref $self;
- }
-
-To make C<++> and C<--> work, we need to implement actual mutators,
-either directly, or in C<nomethod>. We continue to do things inside
-C<nomethod>, thus add
-
- if ($meth eq '++' or $meth eq '--') {
- @$obj = ($meth, (bless [@$obj]), 1); # Avoid circular reference
- return $obj;
- }
-
-after the first line of wrap(). This is not a most effective
-implementation, one may consider
-
- sub inc { $_[0] = bless ['++', shift, 1]; }
-
-instead.
-
-As a final remark, note that one can fill %subr by
-
- my %subr = ( 'n' => sub {$_[0]} );
- foreach my $op (split " ", $overload::ops{with_assign}) {
- $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}";
- }
- my @bins = qw(binary 3way_comparison num_comparison str_comparison);
- foreach my $op (split " ", "@overload::ops{ @bins }") {
- $subr{$op} = eval "sub {shift() $op shift()}";
- }
- foreach my $op (split " ", "@overload::ops{qw(unary func)}") {
- $subr{$op} = eval "sub {$op shift()}";
- }
- $subr{'++'} = $subr{'+'};
- $subr{'--'} = $subr{'-'};
-
-This finishes implementation of a primitive symbolic calculator in
-50 lines of Perl code. Since the numeric values of subexpressions
-are not cached, the calculator is very slow.
-
-Here is the answer for the exercise: In the case of str(), we need no
-explicit recursion since the overloaded C<.>-operator will fall back
-to an existing overloaded operator C<"">. Overloaded arithmetic
-operators I<do not> fall back to numeric conversion if C<fallback> is
-not explicitly requested. Thus without an explicit recursion num()
-would convert C<['+', $a, $b]> to C<$a + $b>, which would just rebuild
-the argument of num().
-
-If you wonder why defaults for conversion are different for str() and
-num(), note how easy it was to write the symbolic calculator. This
-simplicity is due to an appropriate choice of defaults. One extra
-note: due to the explicit recursion num() is more fragile than sym():
-we need to explicitly check for the type of $a and $b. If components
-$a and $b happen to be of some related type, this may lead to problems.
-
-=head2 I<Really> symbolic calculator
-
-One may wonder why we call the above calculator symbolic. The reason
-is that the actual calculation of the value of expression is postponed
-until the value is I<used>.
-
-To see it in action, add a method
-
- sub STORE {
- my $obj = shift;
- $#$obj = 1;
- @$obj->[0,1] = ('=', shift);
- }
-
-to the package C<symbolic>. After this change one can do
-
- my $a = new symbolic 3;
- my $b = new symbolic 4;
- my $c = sqrt($a**2 + $b**2);
-
-and the numeric value of $c becomes 5. However, after calling
-
- $a->STORE(12); $b->STORE(5);
-
-the numeric value of $c becomes 13. There is no doubt now that the module
-symbolic provides a I<symbolic> calculator indeed.
-
-To hide the rough edges under the hood, provide a tie()d interface to the
-package C<symbolic> (compare with L<Metaphor clash>). Add methods
-
- sub TIESCALAR { my $pack = shift; $pack->new(@_) }
- sub FETCH { shift }
- sub nop { } # Around a bug
-
-(the bug is described in L<"BUGS">). One can use this new interface as
-
- tie $a, 'symbolic', 3;
- tie $b, 'symbolic', 4;
- $a->nop; $b->nop; # Around a bug
-
- my $c = sqrt($a**2 + $b**2);
-
-Now numeric value of $c is 5. After C<$a = 12; $b = 5> the numeric value
-of $c becomes 13. To insulate the user of the module add a method
-
- sub vars { my $p = shift; tie($_, $p), $_->nop foreach @_; }
-
-Now
-
- my ($a, $b);
- symbolic->vars($a, $b);
- my $c = sqrt($a**2 + $b**2);
-
- $a = 3; $b = 4;
- printf "c5 %s=%f\n", $c, $c;
-
- $a = 12; $b = 5;
- printf "c13 %s=%f\n", $c, $c;
-
-shows that the numeric value of $c follows changes to the values of $a
-and $b.
-
-=head1 AUTHOR
-
-Ilya Zakharevich E<lt>F<ilya@math.mps.ohio-state.edu>E<gt>.
-
-=head1 DIAGNOSTICS
-
-When Perl is run with the B<-Do> switch or its equivalent, overloading
-induces diagnostic messages.
-
-Using the C<m> command of Perl debugger (see L<perldebug>) one can
-deduce which operations are overloaded (and which ancestor triggers
-this overloading). Say, if C<eq> is overloaded, then the method C<(eq>
-is shown by debugger. The method C<()> corresponds to the C<fallback>
-key (in fact a presence of this method shows that this package has
-overloading enabled, and it is what is used by the C<Overloaded>
-function of module C<overload>).
-
-The module might issue the following warnings:
-
-=over 4
-
-=item Odd number of arguments for overload::constant
-
-(W) The call to overload::constant contained an odd number of arguments.
-The arguments should come in pairs.
-
-=item `%s' is not an overloadable type
-
-(W) You tried to overload a constant type the overload package is unaware of.
-
-=item `%s' is not a code reference
-
-(W) The second (fourth, sixth, ...) argument of overload::constant needs
-to be a code reference. Either an anonymous subroutine, or a reference
-to a subroutine.
-
-=back
-
-=head1 BUGS
-
-Because it is used for overloading, the per-package hash %OVERLOAD now
-has a special meaning in Perl. The symbol table is filled with names
-looking like line-noise.
-
-For the purpose of inheritance every overloaded package behaves as if
-C<fallback> is present (possibly undefined). This may create
-interesting effects if some package is not overloaded, but inherits
-from two overloaded packages.
-
-Relation between overloading and tie()ing is broken. Overloading is
-triggered or not basing on the I<previous> class of tie()d value.
-
-This happens because the presence of overloading is checked too early,
-before any tie()d access is attempted. If the FETCH()ed class of the
-tie()d value does not change, a simple workaround is to access the value
-immediately after tie()ing, so that after this call the I<previous> class
-coincides with the current one.
-
-B<Needed:> a way to fix this without a speed penalty.
-
-Barewords are not covered by overloaded string constants.
-
-This document is confusing. There are grammos and misleading language
-used in places. It would seem a total rewrite is needed.
-
-=cut
-
diff --git a/contrib/perl5/lib/perl5db.pl b/contrib/perl5/lib/perl5db.pl
deleted file mode 100644
index 63b4381..0000000
--- a/contrib/perl5/lib/perl5db.pl
+++ /dev/null
@@ -1,2708 +0,0 @@
-package DB;
-
-# Debugger for Perl 5.00x; perl5db.pl patch level:
-
-$VERSION = 1.07;
-$header = "perl5db.pl version $VERSION";
-
-#
-# This file is automatically included if you do perl -d.
-# It's probably not useful to include this yourself.
-#
-# Perl supplies the values for %sub. It effectively inserts
-# a &DB'DB(); in front of every place that can have a
-# breakpoint. Instead of a subroutine call it calls &DB::sub with
-# $DB::sub being the called subroutine. It also inserts a BEGIN
-# {require 'perl5db.pl'} before the first line.
-#
-# After each `require'd file is compiled, but before it is executed, a
-# call to DB::postponed($main::{'_<'.$filename}) is emulated. Here the
-# $filename is the expanded name of the `require'd file (as found as
-# value of %INC).
-#
-# Additional services from Perl interpreter:
-#
-# if caller() is called from the package DB, it provides some
-# additional data.
-#
-# The array @{$main::{'_<'.$filename}} is the line-by-line contents of
-# $filename.
-#
-# The hash %{'_<'.$filename} contains breakpoints and action (it is
-# keyed by line number), and individual entries are settable (as
-# opposed to the whole hash). Only true/false is important to the
-# interpreter, though the values used by perl5db.pl have the form
-# "$break_condition\0$action". Values are magical in numeric context.
-#
-# The scalar ${'_<'.$filename} contains $filename.
-#
-# Note that no subroutine call is possible until &DB::sub is defined
-# (for subroutines defined outside of the package DB). In fact the same is
-# true if $deep is not defined.
-#
-# $Log: perldb.pl,v $
-
-#
-# At start reads $rcfile that may set important options. This file
-# may define a subroutine &afterinit that will be executed after the
-# debugger is initialized.
-#
-# After $rcfile is read reads environment variable PERLDB_OPTS and parses
-# it as a rest of `O ...' line in debugger prompt.
-#
-# The options that can be specified only at startup:
-# [To set in $rcfile, call &parse_options("optionName=new_value").]
-#
-# TTY - the TTY to use for debugging i/o.
-#
-# noTTY - if set, goes in NonStop mode. On interrupt if TTY is not set
-# uses the value of noTTY or "/tmp/perldbtty$$" to find TTY using
-# Term::Rendezvous. Current variant is to have the name of TTY in this
-# file.
-#
-# ReadLine - If false, dummy ReadLine is used, so you can debug
-# ReadLine applications.
-#
-# NonStop - if true, no i/o is performed until interrupt.
-#
-# LineInfo - file or pipe to print line number info to. If it is a
-# pipe, a short "emacs like" message is used.
-#
-# RemotePort - host:port to connect to on remote host for remote debugging.
-#
-# Example $rcfile: (delete leading hashes!)
-#
-# &parse_options("NonStop=1 LineInfo=db.out");
-# sub afterinit { $trace = 1; }
-#
-# The script will run without human intervention, putting trace
-# information into db.out. (If you interrupt it, you would better
-# reset LineInfo to something "interactive"!)
-#
-##################################################################
-
-# Enhanced by ilya@math.ohio-state.edu (Ilya Zakharevich)
-# Latest version available: ftp://ftp.math.ohio-state.edu/pub/users/ilya/perl
-
-# modified Perl debugger, to be run from Emacs in perldb-mode
-# Ray Lischner (uunet!mntgfx!lisch) as of 5 Nov 1990
-# Johan Vromans -- upgrade to 4.0 pl 10
-# Ilya Zakharevich -- patches after 5.001 (and some before ;-)
-
-# Changelog:
-
-# A lot of things changed after 0.94. First of all, core now informs
-# debugger about entry into XSUBs, overloaded operators, tied operations,
-# BEGIN and END. Handy with `O f=2'.
-
-# This can make debugger a little bit too verbose, please be patient
-# and report your problems promptly.
-
-# Now the option frame has 3 values: 0,1,2.
-
-# Note that if DESTROY returns a reference to the object (or object),
-# the deletion of data may be postponed until the next function call,
-# due to the need to examine the return value.
-
-# Changes: 0.95: `v' command shows versions.
-# Changes: 0.96: `v' command shows version of readline.
-# primitive completion works (dynamic variables, subs for `b' and `l',
-# options). Can `p %var'
-# Better help (`h <' now works). New commands <<, >>, {, {{.
-# {dump|print}_trace() coded (to be able to do it from <<cmd).
-# `c sub' documented.
-# At last enough magic combined to stop after the end of debuggee.
-# !! should work now (thanks to Emacs bracket matching an extra
-# `]' in a regexp is caught).
-# `L', `D' and `A' span files now (as documented).
-# Breakpoints in `require'd code are possible (used in `R').
-# Some additional words on internal work of debugger.
-# `b load filename' implemented.
-# `b postpone subr' implemented.
-# now only `q' exits debugger (overwriteable on $inhibit_exit).
-# When restarting debugger breakpoints/actions persist.
-# Buglet: When restarting debugger only one breakpoint/action per
-# autoloaded function persists.
-# Changes: 0.97: NonStop will not stop in at_exit().
-# Option AutoTrace implemented.
-# Trace printed differently if frames are printed too.
-# new `inhibitExit' option.
-# printing of a very long statement interruptible.
-# Changes: 0.98: New command `m' for printing possible methods
-# 'l -' is a synonim for `-'.
-# Cosmetic bugs in printing stack trace.
-# `frame' & 8 to print "expanded args" in stack trace.
-# Can list/break in imported subs.
-# new `maxTraceLen' option.
-# frame & 4 and frame & 8 granted.
-# new command `m'
-# nonstoppable lines do not have `:' near the line number.
-# `b compile subname' implemented.
-# Will not use $` any more.
-# `-' behaves sane now.
-# Changes: 0.99: Completion for `f', `m'.
-# `m' will remove duplicate names instead of duplicate functions.
-# `b load' strips trailing whitespace.
-# completion ignores leading `|'; takes into account current package
-# when completing a subroutine name (same for `l').
-# Changes: 1.07: Many fixed by tchrist 13-March-2000
-# BUG FIXES:
-# + Added bare mimimal security checks on perldb rc files, plus
-# comments on what else is needed.
-# + Fixed the ornaments that made "|h" completely unusable.
-# They are not used in print_help if they will hurt. Strip pod
-# if we're paging to less.
-# + Fixed mis-formatting of help messages caused by ornaments
-# to restore Larry's original formatting.
-# + Fixed many other formatting errors. The code is still suboptimal,
-# and needs a lot of work at restructuing. It's also misindented
-# in many places.
-# + Fixed bug where trying to look at an option like your pager
-# shows "1".
-# + Fixed some $? processing. Note: if you use csh or tcsh, you will
-# lose. You should consider shell escapes not using their shell,
-# or else not caring about detailed status. This should really be
-# unified into one place, too.
-# + Fixed bug where invisible trailing whitespace on commands hoses you,
-# tricking Perl into thinking you wern't calling a debugger command!
-# + Fixed bug where leading whitespace on commands hoses you. (One
-# suggests a leading semicolon or any other irrelevant non-whitespace
-# to indicate literal Perl code.)
-# + Fixed bugs that ate warnings due to wrong selected handle.
-# + Fixed a precedence bug on signal stuff.
-# + Fixed some unseemly wording.
-# + Fixed bug in help command trying to call perl method code.
-# + Fixed to call dumpvar from exception handler. SIGPIPE killed us.
-# ENHANCEMENTS:
-# + Added some comments. This code is still nasty spaghetti.
-# + Added message if you clear your pre/post command stacks which was
-# very easy to do if you just typed a bare >, <, or {. (A command
-# without an argument should *never* be a destructive action; this
-# API is fundamentally screwed up; likewise option setting, which
-# is equally buggered.)
-# + Added command stack dump on argument of "?" for >, <, or {.
-# + Added a semi-built-in doc viewer command that calls man with the
-# proper %Config::Config path (and thus gets caching, man -k, etc),
-# or else perldoc on obstreperous platforms.
-# + Added to and rearranged the help information.
-# + Detected apparent misuse of { ... } to declare a block; this used
-# to work but now is a command, and mysteriously gave no complaint.
-
-####################################################################
-
-# Needed for the statement after exec():
-
-BEGIN { $ini_warn = $^W; $^W = 0 } # Switch compilation warnings off until another BEGIN.
-local($^W) = 0; # Switch run-time warnings off during init.
-warn ( # Do not ;-)
- $dumpvar::hashDepth,
- $dumpvar::arrayDepth,
- $dumpvar::dumpDBFiles,
- $dumpvar::dumpPackages,
- $dumpvar::quoteHighBit,
- $dumpvar::printUndef,
- $dumpvar::globPrint,
- $dumpvar::usageOnly,
- @ARGS,
- $Carp::CarpLevel,
- $panic,
- $second_time,
- ) if 0;
-
-# Command-line + PERLLIB:
-@ini_INC = @INC;
-
-# $prevwarn = $prevdie = $prevbus = $prevsegv = ''; # Does not help?!
-
-$trace = $signal = $single = 0; # Uninitialized warning suppression
- # (local $^W cannot help - other packages!).
-$inhibit_exit = $option{PrintRet} = 1;
-
-@options = qw(hashDepth arrayDepth DumpDBFiles DumpPackages DumpReused
- compactDump veryCompact quote HighBit undefPrint
- globPrint PrintRet UsageOnly frame AutoTrace
- TTY noTTY ReadLine NonStop LineInfo maxTraceLen
- recallCommand ShellBang pager tkRunning ornaments
- signalLevel warnLevel dieLevel inhibit_exit
- ImmediateStop bareStringify
- RemotePort);
-
-%optionVars = (
- hashDepth => \$dumpvar::hashDepth,
- arrayDepth => \$dumpvar::arrayDepth,
- DumpDBFiles => \$dumpvar::dumpDBFiles,
- DumpPackages => \$dumpvar::dumpPackages,
- DumpReused => \$dumpvar::dumpReused,
- HighBit => \$dumpvar::quoteHighBit,
- undefPrint => \$dumpvar::printUndef,
- globPrint => \$dumpvar::globPrint,
- UsageOnly => \$dumpvar::usageOnly,
- bareStringify => \$dumpvar::bareStringify,
- frame => \$frame,
- AutoTrace => \$trace,
- inhibit_exit => \$inhibit_exit,
- maxTraceLen => \$maxtrace,
- ImmediateStop => \$ImmediateStop,
- RemotePort => \$remoteport,
-);
-
-%optionAction = (
- compactDump => \&dumpvar::compactDump,
- veryCompact => \&dumpvar::veryCompact,
- quote => \&dumpvar::quote,
- TTY => \&TTY,
- noTTY => \&noTTY,
- ReadLine => \&ReadLine,
- NonStop => \&NonStop,
- LineInfo => \&LineInfo,
- recallCommand => \&recallCommand,
- ShellBang => \&shellBang,
- pager => \&pager,
- signalLevel => \&signalLevel,
- warnLevel => \&warnLevel,
- dieLevel => \&dieLevel,
- tkRunning => \&tkRunning,
- ornaments => \&ornaments,
- RemotePort => \&RemotePort,
- );
-
-%optionRequire = (
- compactDump => 'dumpvar.pl',
- veryCompact => 'dumpvar.pl',
- quote => 'dumpvar.pl',
- );
-
-# These guys may be defined in $ENV{PERL5DB} :
-$rl = 1 unless defined $rl;
-$warnLevel = 0 unless defined $warnLevel;
-$dieLevel = 0 unless defined $dieLevel;
-$signalLevel = 1 unless defined $signalLevel;
-$pre = [] unless defined $pre;
-$post = [] unless defined $post;
-$pretype = [] unless defined $pretype;
-
-warnLevel($warnLevel);
-dieLevel($dieLevel);
-signalLevel($signalLevel);
-
-&pager(
- (defined($ENV{PAGER})
- ? $ENV{PAGER}
- : ($^O eq 'os2'
- ? 'cmd /c more'
- : 'more'))) unless defined $pager;
-setman();
-&recallCommand("!") unless defined $prc;
-&shellBang("!") unless defined $psh;
-$maxtrace = 400 unless defined $maxtrace;
-
-if (-e "/dev/tty") { # this is the wrong metric!
- $rcfile=".perldb";
-} else {
- $rcfile="perldb.ini";
-}
-
-# This isn't really safe, because there's a race
-# between checking and opening. The solution is to
-# open and fstat the handle, but then you have to read and
-# eval the contents. But then the silly thing gets
-# your lexical scope, which is unfortunately at best.
-sub safe_do {
- my $file = shift;
-
- # Just exactly what part of the word "CORE::" don't you understand?
- local $SIG{__WARN__};
- local $SIG{__DIE__};
-
- unless (is_safe_file($file)) {
- CORE::warn <<EO_GRIPE;
-perldb: Must not source insecure rcfile $file.
- You or the superuser must be the owner, and it must not
- be writable by anyone but its owner.
-EO_GRIPE
- return;
- }
-
- do $file;
- CORE::warn("perldb: couldn't parse $file: $@") if $@;
-}
-
-
-# Verifies that owner is either real user or superuser and that no
-# one but owner may write to it. This function is of limited use
-# when called on a path instead of upon a handle, because there are
-# no guarantees that filename (by dirent) whose file (by ino) is
-# eventually accessed is the same as the one tested.
-# Assumes that the file's existence is not in doubt.
-sub is_safe_file {
- my $path = shift;
- stat($path) || return; # mysteriously vaporized
- my($dev,$ino,$mode,$nlink,$uid,$gid) = stat(_);
-
- return 0 if $uid != 0 && $uid != $<;
- return 0 if $mode & 022;
- return 1;
-}
-
-if (-f $rcfile) {
- safe_do("./$rcfile");
-}
-elsif (defined $ENV{HOME} && -f "$ENV{HOME}/$rcfile") {
- safe_do("$ENV{HOME}/$rcfile");
-}
-elsif (defined $ENV{LOGDIR} && -f "$ENV{LOGDIR}/$rcfile") {
- safe_do("$ENV{LOGDIR}/$rcfile");
-}
-
-if (defined $ENV{PERLDB_OPTS}) {
- parse_options($ENV{PERLDB_OPTS});
-}
-
-# Here begin the unreadable code. It needs fixing.
-
-if (exists $ENV{PERLDB_RESTART}) {
- delete $ENV{PERLDB_RESTART};
- # $restart = 1;
- @hist = get_list('PERLDB_HIST');
- %break_on_load = get_list("PERLDB_ON_LOAD");
- %postponed = get_list("PERLDB_POSTPONE");
- my @had_breakpoints= get_list("PERLDB_VISITED");
- for (0 .. $#had_breakpoints) {
- my %pf = get_list("PERLDB_FILE_$_");
- $postponed_file{$had_breakpoints[$_]} = \%pf if %pf;
- }
- my %opt = get_list("PERLDB_OPT");
- my ($opt,$val);
- while (($opt,$val) = each %opt) {
- $val =~ s/[\\\']/\\$1/g;
- parse_options("$opt'$val'");
- }
- @INC = get_list("PERLDB_INC");
- @ini_INC = @INC;
- $pretype = [get_list("PERLDB_PRETYPE")];
- $pre = [get_list("PERLDB_PRE")];
- $post = [get_list("PERLDB_POST")];
- @typeahead = get_list("PERLDB_TYPEAHEAD", @typeahead);
-}
-
-if ($notty) {
- $runnonstop = 1;
-} else {
- # Is Perl being run from a slave editor or graphical debugger?
- $slave_editor = ((defined $main::ARGV[0]) and ($main::ARGV[0] eq '-emacs'));
- $rl = 0, shift(@main::ARGV) if $slave_editor;
-
- #require Term::ReadLine;
-
- if ($^O eq 'cygwin') {
- # /dev/tty is binary. use stdin for textmode
- undef $console;
- } elsif (-e "/dev/tty") {
- $console = "/dev/tty";
- } elsif ($^O eq 'dos' or -e "con" or $^O eq 'MSWin32') {
- $console = "con";
- } elsif ($^O eq 'MacOS') {
- if ($MacPerl::Version !~ /MPW/) {
- $console = "Dev:Console:Perl Debug"; # Separate window for application
- } else {
- $console = "Dev:Console";
- }
- } else {
- $console = "sys\$command";
- }
-
- if (($^O eq 'MSWin32') and ($slave_editor or defined $ENV{EMACS})) {
- $console = undef;
- }
-
- # Around a bug:
- if (defined $ENV{OS2_SHELL} and ($slave_editor or $ENV{WINDOWID})) { # In OS/2
- $console = undef;
- }
-
- if ($^O eq 'epoc') {
- $console = undef;
- }
-
- $console = $tty if defined $tty;
-
- if (defined $remoteport) {
- require IO::Socket;
- $OUT = new IO::Socket::INET( Timeout => '10',
- PeerAddr => $remoteport,
- Proto => 'tcp',
- );
- if (!$OUT) { die "Unable to connect to remote host: $remoteport\n"; }
- $IN = $OUT;
- }
- else {
- if (defined $console) {
- open(IN,"+<$console") || open(IN,"<$console") || open(IN,"<&STDIN");
- open(OUT,"+>$console") || open(OUT,">$console") || open(OUT,">&STDERR")
- || open(OUT,">&STDOUT"); # so we don't dongle stdout
- } else {
- open(IN,"<&STDIN");
- open(OUT,">&STDERR") || open(OUT,">&STDOUT"); # so we don't dongle stdout
- $console = 'STDIN/OUT';
- }
- # so open("|more") can read from STDOUT and so we don't dingle stdin
- $IN = \*IN;
-
- $OUT = \*OUT;
- }
- select($OUT);
- $| = 1; # for DB::OUT
- select(STDOUT);
-
- $LINEINFO = $OUT unless defined $LINEINFO;
- $lineinfo = $console unless defined $lineinfo;
-
- $| = 1; # for real STDOUT
-
- $header =~ s/.Header: ([^,]+),v(\s+\S+\s+\S+).*$/$1$2/;
- unless ($runnonstop) {
- print $OUT "\nLoading DB routines from $header\n";
- print $OUT ("Editor support ",
- $slave_editor ? "enabled" : "available",
- ".\n");
- print $OUT "\nEnter h or `h h' for help, or `$doccmd perldebug' for more help.\n\n";
- }
-}
-
-@ARGS = @ARGV;
-for (@args) {
- s/\'/\\\'/g;
- s/(.*)/'$1'/ unless /^-?[\d.]+$/;
-}
-
-if (defined &afterinit) { # May be defined in $rcfile
- &afterinit();
-}
-
-$I_m_init = 1;
-
-############################################################ Subroutines
-
-sub DB {
- # _After_ the perl program is compiled, $single is set to 1:
- if ($single and not $second_time++) {
- if ($runnonstop) { # Disable until signal
- for ($i=0; $i <= $stack_depth; ) {
- $stack[$i++] &= ~1;
- }
- $single = 0;
- # return; # Would not print trace!
- } elsif ($ImmediateStop) {
- $ImmediateStop = 0;
- $signal = 1;
- }
- }
- $runnonstop = 0 if $single or $signal; # Disable it if interactive.
- &save;
- ($package, $filename, $line) = caller;
- $filename_ini = $filename;
- $usercontext = '($@, $!, $^E, $,, $/, $\, $^W) = @saved;' .
- "package $package;"; # this won't let them modify, alas
- local(*dbline) = $main::{'_<' . $filename};
- $max = $#dbline;
- if (($stop,$action) = split(/\0/,$dbline{$line})) {
- if ($stop eq '1') {
- $signal |= 1;
- } elsif ($stop) {
- $evalarg = "\$DB::signal |= 1 if do {$stop}"; &eval;
- $dbline{$line} =~ s/;9($|\0)/$1/;
- }
- }
- my $was_signal = $signal;
- if ($trace & 2) {
- for (my $n = 0; $n <= $#to_watch; $n++) {
- $evalarg = $to_watch[$n];
- local $onetimeDump; # Do not output results
- my ($val) = &eval; # Fix context (&eval is doing array)?
- $val = ( (defined $val) ? "'$val'" : 'undef' );
- if ($val ne $old_watch[$n]) {
- $signal = 1;
- print $OUT <<EOP;
-Watchpoint $n:\t$to_watch[$n] changed:
- old value:\t$old_watch[$n]
- new value:\t$val
-EOP
- $old_watch[$n] = $val;
- }
- }
- }
- if ($trace & 4) { # User-installed watch
- return if watchfunction($package, $filename, $line)
- and not $single and not $was_signal and not ($trace & ~4);
- }
- $was_signal = $signal;
- $signal = 0;
- if ($single || ($trace & 1) || $was_signal) {
- if ($slave_editor) {
- $position = "\032\032$filename:$line:0\n";
- print $LINEINFO $position;
- } elsif ($package eq 'DB::fake') {
- $term || &setterm;
- print_help(<<EOP);
-Debugged program terminated. Use B<q> to quit or B<R> to restart,
- use B<O> I<inhibit_exit> to avoid stopping after program termination,
- B<h q>, B<h R> or B<h O> to get additional info.
-EOP
- $package = 'main';
- $usercontext = '($@, $!, $^E, $,, $/, $\, $^W) = @saved;' .
- "package $package;"; # this won't let them modify, alas
- } else {
- $sub =~ s/\'/::/;
- $prefix = $sub =~ /::/ ? "" : "${'package'}::";
- $prefix .= "$sub($filename:";
- $after = ($dbline[$line] =~ /\n$/ ? '' : "\n");
- if (length($prefix) > 30) {
- $position = "$prefix$line):\n$line:\t$dbline[$line]$after";
- $prefix = "";
- $infix = ":\t";
- } else {
- $infix = "):\t";
- $position = "$prefix$line$infix$dbline[$line]$after";
- }
- if ($frame) {
- print $LINEINFO ' ' x $stack_depth, "$line:\t$dbline[$line]$after";
- } else {
- print $LINEINFO $position;
- }
- for ($i = $line + 1; $i <= $max && $dbline[$i] == 0; ++$i) { #{ vi
- last if $dbline[$i] =~ /^\s*[\;\}\#\n]/;
- last if $signal;
- $after = ($dbline[$i] =~ /\n$/ ? '' : "\n");
- $incr_pos = "$prefix$i$infix$dbline[$i]$after";
- $position .= $incr_pos;
- if ($frame) {
- print $LINEINFO ' ' x $stack_depth, "$i:\t$dbline[$i]$after";
- } else {
- print $LINEINFO $incr_pos;
- }
- }
- }
- }
- $evalarg = $action, &eval if $action;
- if ($single || $was_signal) {
- local $level = $level + 1;
- foreach $evalarg (@$pre) {
- &eval;
- }
- print $OUT $stack_depth . " levels deep in subroutine calls!\n"
- if $single & 4;
- $start = $line;
- $incr = -1; # for backward motion.
- @typeahead = (@$pretype, @typeahead);
- CMD:
- while (($term || &setterm),
- ($term_pid == $$ or &resetterm),
- defined ($cmd=&readline(" DB" . ('<' x $level) .
- ($#hist+1) . ('>' x $level) .
- " ")))
- {
- $single = 0;
- $signal = 0;
- $cmd =~ s/\\$/\n/ && do {
- $cmd .= &readline(" cont: ");
- redo CMD;
- };
- $cmd =~ /^$/ && ($cmd = $laststep);
- push(@hist,$cmd) if length($cmd) > 1;
- PIPE: {
- $cmd =~ s/^\s+//s; # trim annoying leading whitespace
- $cmd =~ s/\s+$//s; # trim annoying trailing whitespace
- ($i) = split(/\s+/,$cmd);
- if ($alias{$i}) {
- # squelch the sigmangler
- local $SIG{__DIE__};
- local $SIG{__WARN__};
- eval "\$cmd =~ $alias{$i}";
- if ($@) {
- print $OUT "Couldn't evaluate `$i' alias: $@";
- next CMD;
- }
- }
- $cmd =~ /^q$/ && ($fall_off_end = 1) && exit $?;
- $cmd =~ /^h$/ && do {
- print_help($help);
- next CMD; };
- $cmd =~ /^h\s+h$/ && do {
- print_help($summary);
- next CMD; };
- # support long commands; otherwise bogus errors
- # happen when you ask for h on <CR> for example
- $cmd =~ /^h\s+(\S.*)$/ && do {
- my $asked = $1; # for proper errmsg
- my $qasked = quotemeta($asked); # for searching
- # XXX: finds CR but not <CR>
- if ($help =~ /^<?(?:[IB]<)$qasked/m) {
- while ($help =~ /^(<?(?:[IB]<)$qasked([\s\S]*?)\n)(?!\s)/mg) {
- print_help($1);
- }
- } else {
- print_help("B<$asked> is not a debugger command.\n");
- }
- next CMD; };
- $cmd =~ /^t$/ && do {
- $trace ^= 1;
- print $OUT "Trace = " .
- (($trace & 1) ? "on" : "off" ) . "\n";
- next CMD; };
- $cmd =~ /^S(\s+(!)?(.+))?$/ && do {
- $Srev = defined $2; $Spatt = $3; $Snocheck = ! defined $1;
- foreach $subname (sort(keys %sub)) {
- if ($Snocheck or $Srev^($subname =~ /$Spatt/)) {
- print $OUT $subname,"\n";
- }
- }
- next CMD; };
- $cmd =~ /^v$/ && do {
- list_versions(); next CMD};
- $cmd =~ s/^X\b/V $package/;
- $cmd =~ /^V$/ && do {
- $cmd = "V $package"; };
- $cmd =~ /^V\b\s*(\S+)\s*(.*)/ && do {
- local ($savout) = select($OUT);
- $packname = $1;
- @vars = split(' ',$2);
- do 'dumpvar.pl' unless defined &main::dumpvar;
- if (defined &main::dumpvar) {
- local $frame = 0;
- local $doret = -2;
- # must detect sigpipe failures
- eval { &main::dumpvar($packname,@vars) };
- if ($@) {
- die unless $@ =~ /dumpvar print failed/;
- }
- } else {
- print $OUT "dumpvar.pl not available.\n";
- }
- select ($savout);
- next CMD; };
- $cmd =~ s/^x\b/ / && do { # So that will be evaled
- $onetimeDump = 'dump'; };
- $cmd =~ s/^m\s+([\w:]+)\s*$/ / && do {
- methods($1); next CMD};
- $cmd =~ s/^m\b/ / && do { # So this will be evaled
- $onetimeDump = 'methods'; };
- $cmd =~ /^f\b\s*(.*)/ && do {
- $file = $1;
- $file =~ s/\s+$//;
- if (!$file) {
- print $OUT "The old f command is now the r command.\n";
- print $OUT "The new f command switches filenames.\n";
- next CMD;
- }
- if (!defined $main::{'_<' . $file}) {
- if (($try) = grep(m#^_<.*$file#, keys %main::)) {{
- $try = substr($try,2);
- print $OUT "Choosing $try matching `$file':\n";
- $file = $try;
- }}
- }
- if (!defined $main::{'_<' . $file}) {
- print $OUT "No file matching `$file' is loaded.\n";
- next CMD;
- } elsif ($file ne $filename) {
- *dbline = $main::{'_<' . $file};
- $max = $#dbline;
- $filename = $file;
- $start = 1;
- $cmd = "l";
- } else {
- print $OUT "Already in $file.\n";
- next CMD;
- }
- };
- $cmd =~ s/^l\s+-\s*$/-/;
- $cmd =~ /^([lb])\b\s*(\$.*)/s && do {
- $evalarg = $2;
- my ($s) = &eval;
- print($OUT "Error: $@\n"), next CMD if $@;
- $s = CvGV_name($s);
- print($OUT "Interpreted as: $1 $s\n");
- $cmd = "$1 $s";
- };
- $cmd =~ /^l\b\s*([\':A-Za-z_][\':\w]*(\[.*\])?)/s && do {
- $subname = $1;
- $subname =~ s/\'/::/;
- $subname = $package."::".$subname
- unless $subname =~ /::/;
- $subname = "main".$subname if substr($subname,0,2) eq "::";
- @pieces = split(/:/,find_sub($subname) || $sub{$subname});
- $subrange = pop @pieces;
- $file = join(':', @pieces);
- if ($file ne $filename) {
- print $OUT "Switching to file '$file'.\n"
- unless $slave_editor;
- *dbline = $main::{'_<' . $file};
- $max = $#dbline;
- $filename = $file;
- }
- if ($subrange) {
- if (eval($subrange) < -$window) {
- $subrange =~ s/-.*/+/;
- }
- $cmd = "l $subrange";
- } else {
- print $OUT "Subroutine $subname not found.\n";
- next CMD;
- } };
- $cmd =~ /^\.$/ && do {
- $incr = -1; # for backward motion.
- $start = $line;
- $filename = $filename_ini;
- *dbline = $main::{'_<' . $filename};
- $max = $#dbline;
- print $LINEINFO $position;
- next CMD };
- $cmd =~ /^w\b\s*(\d*)$/ && do {
- $incr = $window - 1;
- $start = $1 if $1;
- $start -= $preview;
- #print $OUT 'l ' . $start . '-' . ($start + $incr);
- $cmd = 'l ' . $start . '-' . ($start + $incr); };
- $cmd =~ /^-$/ && do {
- $start -= $incr + $window + 1;
- $start = 1 if $start <= 0;
- $incr = $window - 1;
- $cmd = 'l ' . ($start) . '+'; };
- $cmd =~ /^l$/ && do {
- $incr = $window - 1;
- $cmd = 'l ' . $start . '-' . ($start + $incr); };
- $cmd =~ /^l\b\s*(\d*)\+(\d*)$/ && do {
- $start = $1 if $1;
- $incr = $2;
- $incr = $window - 1 unless $incr;
- $cmd = 'l ' . $start . '-' . ($start + $incr); };
- $cmd =~ /^l\b\s*((-?[\d\$\.]+)([-,]([\d\$\.]+))?)?/ && do {
- $end = (!defined $2) ? $max : ($4 ? $4 : $2);
- $end = $max if $end > $max;
- $i = $2;
- $i = $line if $i eq '.';
- $i = 1 if $i < 1;
- $incr = $end - $i;
- if ($slave_editor) {
- print $OUT "\032\032$filename:$i:0\n";
- $i = $end;
- } else {
- for (; $i <= $end; $i++) {
- ($stop,$action) = split(/\0/, $dbline{$i});
- $arrow = ($i==$line
- and $filename eq $filename_ini)
- ? '==>'
- : ($dbline[$i]+0 ? ':' : ' ') ;
- $arrow .= 'b' if $stop;
- $arrow .= 'a' if $action;
- print $OUT "$i$arrow\t", $dbline[$i];
- $i++, last if $signal;
- }
- print $OUT "\n" unless $dbline[$i-1] =~ /\n$/;
- }
- $start = $i; # remember in case they want more
- $start = $max if $start > $max;
- next CMD; };
- $cmd =~ /^D$/ && do {
- print $OUT "Deleting all breakpoints...\n";
- my $file;
- for $file (keys %had_breakpoints) {
- local *dbline = $main::{'_<' . $file};
- my $max = $#dbline;
- my $was;
-
- for ($i = 1; $i <= $max ; $i++) {
- if (defined $dbline{$i}) {
- $dbline{$i} =~ s/^[^\0]+//;
- if ($dbline{$i} =~ s/^\0?$//) {
- delete $dbline{$i};
- }
- }
- }
-
- if (not $had_breakpoints{$file} &= ~1) {
- delete $had_breakpoints{$file};
- }
- }
- undef %postponed;
- undef %postponed_file;
- undef %break_on_load;
- next CMD; };
- $cmd =~ /^L$/ && do {
- my $file;
- for $file (keys %had_breakpoints) {
- local *dbline = $main::{'_<' . $file};
- my $max = $#dbline;
- my $was;
-
- for ($i = 1; $i <= $max; $i++) {
- if (defined $dbline{$i}) {
- print $OUT "$file:\n" unless $was++;
- print $OUT " $i:\t", $dbline[$i];
- ($stop,$action) = split(/\0/, $dbline{$i});
- print $OUT " break if (", $stop, ")\n"
- if $stop;
- print $OUT " action: ", $action, "\n"
- if $action;
- last if $signal;
- }
- }
- }
- if (%postponed) {
- print $OUT "Postponed breakpoints in subroutines:\n";
- my $subname;
- for $subname (keys %postponed) {
- print $OUT " $subname\t$postponed{$subname}\n";
- last if $signal;
- }
- }
- my @have = map { # Combined keys
- keys %{$postponed_file{$_}}
- } keys %postponed_file;
- if (@have) {
- print $OUT "Postponed breakpoints in files:\n";
- my ($file, $line);
- for $file (keys %postponed_file) {
- my $db = $postponed_file{$file};
- print $OUT " $file:\n";
- for $line (sort {$a <=> $b} keys %$db) {
- print $OUT " $line:\n";
- my ($stop,$action) = split(/\0/, $$db{$line});
- print $OUT " break if (", $stop, ")\n"
- if $stop;
- print $OUT " action: ", $action, "\n"
- if $action;
- last if $signal;
- }
- last if $signal;
- }
- }
- if (%break_on_load) {
- print $OUT "Breakpoints on load:\n";
- my $file;
- for $file (keys %break_on_load) {
- print $OUT " $file\n";
- last if $signal;
- }
- }
- if ($trace & 2) {
- print $OUT "Watch-expressions:\n";
- my $expr;
- for $expr (@to_watch) {
- print $OUT " $expr\n";
- last if $signal;
- }
- }
- next CMD; };
- $cmd =~ /^b\b\s*load\b\s*(.*)/ && do {
- my $file = $1; $file =~ s/\s+$//;
- {
- $break_on_load{$file} = 1;
- $break_on_load{$::INC{$file}} = 1 if $::INC{$file};
- $file .= '.pm', redo unless $file =~ /\./;
- }
- $had_breakpoints{$file} |= 1;
- print $OUT "Will stop on load of `@{[join '\', `', sort keys %break_on_load]}'.\n";
- next CMD; };
- $cmd =~ /^b\b\s*(postpone|compile)\b\s*([':A-Za-z_][':\w]*)\s*(.*)/ && do {
- my $cond = length $3 ? $3 : '1';
- my ($subname, $break) = ($2, $1 eq 'postpone');
- $subname =~ s/\'/::/g;
- $subname = "${'package'}::" . $subname
- unless $subname =~ /::/;
- $subname = "main".$subname if substr($subname,0,2) eq "::";
- $postponed{$subname} = $break
- ? "break +0 if $cond" : "compile";
- next CMD; };
- $cmd =~ /^b\b\s*([':A-Za-z_][':\w]*(?:\[.*\])?)\s*(.*)/ && do {
- $subname = $1;
- $cond = length $2 ? $2 : '1';
- $subname =~ s/\'/::/g;
- $subname = "${'package'}::" . $subname
- unless $subname =~ /::/;
- $subname = "main".$subname if substr($subname,0,2) eq "::";
- # Filename below can contain ':'
- ($file,$i) = (find_sub($subname) =~ /^(.*):(.*)$/);
- $i += 0;
- if ($i) {
- local $filename = $file;
- local *dbline = $main::{'_<' . $filename};
- $had_breakpoints{$filename} |= 1;
- $max = $#dbline;
- ++$i while $dbline[$i] == 0 && $i < $max;
- $dbline{$i} =~ s/^[^\0]*/$cond/;
- } else {
- print $OUT "Subroutine $subname not found.\n";
- }
- next CMD; };
- $cmd =~ /^b\b\s*(\d*)\s*(.*)/ && do {
- $i = $1 || $line;
- $cond = length $2 ? $2 : '1';
- if ($dbline[$i] == 0) {
- print $OUT "Line $i not breakable.\n";
- } else {
- $had_breakpoints{$filename} |= 1;
- $dbline{$i} =~ s/^[^\0]*/$cond/;
- }
- next CMD; };
- $cmd =~ /^d\b\s*(\d*)/ && do {
- $i = $1 || $line;
- if ($dbline[$i] == 0) {
- print $OUT "Line $i not breakable.\n";
- } else {
- $dbline{$i} =~ s/^[^\0]*//;
- delete $dbline{$i} if $dbline{$i} eq '';
- }
- next CMD; };
- $cmd =~ /^A$/ && do {
- print $OUT "Deleting all actions...\n";
- my $file;
- for $file (keys %had_breakpoints) {
- local *dbline = $main::{'_<' . $file};
- my $max = $#dbline;
- my $was;
-
- for ($i = 1; $i <= $max ; $i++) {
- if (defined $dbline{$i}) {
- $dbline{$i} =~ s/\0[^\0]*//;
- delete $dbline{$i} if $dbline{$i} eq '';
- }
- }
-
- unless ($had_breakpoints{$file} &= ~2) {
- delete $had_breakpoints{$file};
- }
- }
- next CMD; };
- $cmd =~ /^O\s*$/ && do {
- for (@options) {
- &dump_option($_);
- }
- next CMD; };
- $cmd =~ /^O\s*(\S.*)/ && do {
- parse_options($1);
- next CMD; };
- $cmd =~ /^\<\<\s*(.*)/ && do { # \<\< for CPerl sake: not HERE
- push @$pre, action($1);
- next CMD; };
- $cmd =~ /^>>\s*(.*)/ && do {
- push @$post, action($1);
- next CMD; };
- $cmd =~ /^<\s*(.*)/ && do {
- unless ($1) {
- print $OUT "All < actions cleared.\n";
- $pre = [];
- next CMD;
- }
- if ($1 eq '?') {
- unless (@$pre) {
- print $OUT "No pre-prompt Perl actions.\n";
- next CMD;
- }
- print $OUT "Perl commands run before each prompt:\n";
- for my $action ( @$pre ) {
- print $OUT "\t< -- $action\n";
- }
- next CMD;
- }
- $pre = [action($1)];
- next CMD; };
- $cmd =~ /^>\s*(.*)/ && do {
- unless ($1) {
- print $OUT "All > actions cleared.\n";
- $post = [];
- next CMD;
- }
- if ($1 eq '?') {
- unless (@$post) {
- print $OUT "No post-prompt Perl actions.\n";
- next CMD;
- }
- print $OUT "Perl commands run after each prompt:\n";
- for my $action ( @$post ) {
- print $OUT "\t> -- $action\n";
- }
- next CMD;
- }
- $post = [action($1)];
- next CMD; };
- $cmd =~ /^\{\{\s*(.*)/ && do {
- if ($cmd =~ /^\{.*\}$/ && unbalanced(substr($cmd,2))) {
- print $OUT "{{ is now a debugger command\n",
- "use `;{{' if you mean Perl code\n";
- $cmd = "h {{";
- redo CMD;
- }
- push @$pretype, $1;
- next CMD; };
- $cmd =~ /^\{\s*(.*)/ && do {
- unless ($1) {
- print $OUT "All { actions cleared.\n";
- $pretype = [];
- next CMD;
- }
- if ($1 eq '?') {
- unless (@$pretype) {
- print $OUT "No pre-prompt debugger actions.\n";
- next CMD;
- }
- print $OUT "Debugger commands run before each prompt:\n";
- for my $action ( @$pretype ) {
- print $OUT "\t{ -- $action\n";
- }
- next CMD;
- }
- if ($cmd =~ /^\{.*\}$/ && unbalanced(substr($cmd,1))) {
- print $OUT "{ is now a debugger command\n",
- "use `;{' if you mean Perl code\n";
- $cmd = "h {";
- redo CMD;
- }
- $pretype = [$1];
- next CMD; };
- $cmd =~ /^a\b\s*(\d*)\s*(.*)/ && do {
- $i = $1 || $line; $j = $2;
- if (length $j) {
- if ($dbline[$i] == 0) {
- print $OUT "Line $i may not have an action.\n";
- } else {
- $had_breakpoints{$filename} |= 2;
- $dbline{$i} =~ s/\0[^\0]*//;
- $dbline{$i} .= "\0" . action($j);
- }
- } else {
- $dbline{$i} =~ s/\0[^\0]*//;
- delete $dbline{$i} if $dbline{$i} eq '';
- }
- next CMD; };
- $cmd =~ /^n$/ && do {
- end_report(), next CMD if $finished and $level <= 1;
- $single = 2;
- $laststep = $cmd;
- last CMD; };
- $cmd =~ /^s$/ && do {
- end_report(), next CMD if $finished and $level <= 1;
- $single = 1;
- $laststep = $cmd;
- last CMD; };
- $cmd =~ /^c\b\s*([\w:]*)\s*$/ && do {
- end_report(), next CMD if $finished and $level <= 1;
- $subname = $i = $1;
- # Probably not needed, since we finish an interactive
- # sub-session anyway...
- # local $filename = $filename;
- # local *dbline = *dbline; # XXX Would this work?!
- if ($i =~ /\D/) { # subroutine name
- $subname = $package."::".$subname
- unless $subname =~ /::/;
- ($file,$i) = (find_sub($subname) =~ /^(.*):(.*)$/);
- $i += 0;
- if ($i) {
- $filename = $file;
- *dbline = $main::{'_<' . $filename};
- $had_breakpoints{$filename} |= 1;
- $max = $#dbline;
- ++$i while $dbline[$i] == 0 && $i < $max;
- } else {
- print $OUT "Subroutine $subname not found.\n";
- next CMD;
- }
- }
- if ($i) {
- if ($dbline[$i] == 0) {
- print $OUT "Line $i not breakable.\n";
- next CMD;
- }
- $dbline{$i} =~ s/($|\0)/;9$1/; # add one-time-only b.p.
- }
- for ($i=0; $i <= $stack_depth; ) {
- $stack[$i++] &= ~1;
- }
- last CMD; };
- $cmd =~ /^r$/ && do {
- end_report(), next CMD if $finished and $level <= 1;
- $stack[$stack_depth] |= 1;
- $doret = $option{PrintRet} ? $stack_depth - 1 : -2;
- last CMD; };
- $cmd =~ /^R$/ && do {
- print $OUT "Warning: some settings and command-line options may be lost!\n";
- my (@script, @flags, $cl);
- push @flags, '-w' if $ini_warn;
- # Put all the old includes at the start to get
- # the same debugger.
- for (@ini_INC) {
- push @flags, '-I', $_;
- }
- # Arrange for setting the old INC:
- set_list("PERLDB_INC", @ini_INC);
- if ($0 eq '-e') {
- for (1..$#{'::_<-e'}) { # The first line is PERL5DB
- chomp ($cl = ${'::_<-e'}[$_]);
- push @script, '-e', $cl;
- }
- } else {
- @script = $0;
- }
- set_list("PERLDB_HIST",
- $term->Features->{getHistory}
- ? $term->GetHistory : @hist);
- my @had_breakpoints = keys %had_breakpoints;
- set_list("PERLDB_VISITED", @had_breakpoints);
- set_list("PERLDB_OPT", %option);
- set_list("PERLDB_ON_LOAD", %break_on_load);
- my @hard;
- for (0 .. $#had_breakpoints) {
- my $file = $had_breakpoints[$_];
- *dbline = $main::{'_<' . $file};
- next unless %dbline or $postponed_file{$file};
- (push @hard, $file), next
- if $file =~ /^\(eval \d+\)$/;
- my @add;
- @add = %{$postponed_file{$file}}
- if $postponed_file{$file};
- set_list("PERLDB_FILE_$_", %dbline, @add);
- }
- for (@hard) { # Yes, really-really...
- # Find the subroutines in this eval
- *dbline = $main::{'_<' . $_};
- my ($quoted, $sub, %subs, $line) = quotemeta $_;
- for $sub (keys %sub) {
- next unless $sub{$sub} =~ /^$quoted:(\d+)-(\d+)$/;
- $subs{$sub} = [$1, $2];
- }
- unless (%subs) {
- print $OUT
- "No subroutines in $_, ignoring breakpoints.\n";
- next;
- }
- LINES: for $line (keys %dbline) {
- # One breakpoint per sub only:
- my ($offset, $sub, $found);
- SUBS: for $sub (keys %subs) {
- if ($subs{$sub}->[1] >= $line # Not after the subroutine
- and (not defined $offset # Not caught
- or $offset < 0 )) { # or badly caught
- $found = $sub;
- $offset = $line - $subs{$sub}->[0];
- $offset = "+$offset", last SUBS if $offset >= 0;
- }
- }
- if (defined $offset) {
- $postponed{$found} =
- "break $offset if $dbline{$line}";
- } else {
- print $OUT "Breakpoint in $_:$line ignored: after all the subroutines.\n";
- }
- }
- }
- set_list("PERLDB_POSTPONE", %postponed);
- set_list("PERLDB_PRETYPE", @$pretype);
- set_list("PERLDB_PRE", @$pre);
- set_list("PERLDB_POST", @$post);
- set_list("PERLDB_TYPEAHEAD", @typeahead);
- $ENV{PERLDB_RESTART} = 1;
- #print "$^X, '-d', @flags, @script, ($slave_editor ? '-emacs' : ()), @ARGS";
- exec $^X, '-d', @flags, @script, ($slave_editor ? '-emacs' : ()), @ARGS;
- print $OUT "exec failed: $!\n";
- last CMD; };
- $cmd =~ /^T$/ && do {
- print_trace($OUT, 1); # skip DB
- next CMD; };
- $cmd =~ /^W\s*$/ && do {
- $trace &= ~2;
- @to_watch = @old_watch = ();
- next CMD; };
- $cmd =~ /^W\b\s*(.*)/s && do {
- push @to_watch, $1;
- $evalarg = $1;
- my ($val) = &eval;
- $val = (defined $val) ? "'$val'" : 'undef' ;
- push @old_watch, $val;
- $trace |= 2;
- next CMD; };
- $cmd =~ /^\/(.*)$/ && do {
- $inpat = $1;
- $inpat =~ s:([^\\])/$:$1:;
- if ($inpat ne "") {
- # squelch the sigmangler
- local $SIG{__DIE__};
- local $SIG{__WARN__};
- eval '$inpat =~ m'."\a$inpat\a";
- if ($@ ne "") {
- print $OUT "$@";
- next CMD;
- }
- $pat = $inpat;
- }
- $end = $start;
- $incr = -1;
- eval '
- for (;;) {
- ++$start;
- $start = 1 if ($start > $max);
- last if ($start == $end);
- if ($dbline[$start] =~ m' . "\a$pat\a" . 'i) {
- if ($slave_editor) {
- print $OUT "\032\032$filename:$start:0\n";
- } else {
- print $OUT "$start:\t", $dbline[$start], "\n";
- }
- last;
- }
- } ';
- print $OUT "/$pat/: not found\n" if ($start == $end);
- next CMD; };
- $cmd =~ /^\?(.*)$/ && do {
- $inpat = $1;
- $inpat =~ s:([^\\])\?$:$1:;
- if ($inpat ne "") {
- # squelch the sigmangler
- local $SIG{__DIE__};
- local $SIG{__WARN__};
- eval '$inpat =~ m'."\a$inpat\a";
- if ($@ ne "") {
- print $OUT $@;
- next CMD;
- }
- $pat = $inpat;
- }
- $end = $start;
- $incr = -1;
- eval '
- for (;;) {
- --$start;
- $start = $max if ($start <= 0);
- last if ($start == $end);
- if ($dbline[$start] =~ m' . "\a$pat\a" . 'i) {
- if ($slave_editor) {
- print $OUT "\032\032$filename:$start:0\n";
- } else {
- print $OUT "$start:\t", $dbline[$start], "\n";
- }
- last;
- }
- } ';
- print $OUT "?$pat?: not found\n" if ($start == $end);
- next CMD; };
- $cmd =~ /^$rc+\s*(-)?(\d+)?$/ && do {
- pop(@hist) if length($cmd) > 1;
- $i = $1 ? ($#hist-($2||1)) : ($2||$#hist);
- $cmd = $hist[$i];
- print $OUT $cmd, "\n";
- redo CMD; };
- $cmd =~ /^$sh$sh\s*([\x00-\xff]*)/ && do {
- &system($1);
- next CMD; };
- $cmd =~ /^$rc([^$rc].*)$/ && do {
- $pat = "^$1";
- pop(@hist) if length($cmd) > 1;
- for ($i = $#hist; $i; --$i) {
- last if $hist[$i] =~ /$pat/;
- }
- if (!$i) {
- print $OUT "No such command!\n\n";
- next CMD;
- }
- $cmd = $hist[$i];
- print $OUT $cmd, "\n";
- redo CMD; };
- $cmd =~ /^$sh$/ && do {
- &system($ENV{SHELL}||"/bin/sh");
- next CMD; };
- $cmd =~ /^$sh\s*([\x00-\xff]*)/ && do {
- # XXX: using csh or tcsh destroys sigint retvals!
- #&system($1); # use this instead
- &system($ENV{SHELL}||"/bin/sh","-c",$1);
- next CMD; };
- $cmd =~ /^H\b\s*(-(\d+))?/ && do {
- $end = $2 ? ($#hist-$2) : 0;
- $hist = 0 if $hist < 0;
- for ($i=$#hist; $i>$end; $i--) {
- print $OUT "$i: ",$hist[$i],"\n"
- unless $hist[$i] =~ /^.?$/;
- };
- next CMD; };
- $cmd =~ /^(?:man|(?:perl)?doc)\b(?:\s+([^(]*))?$/ && do {
- runman($1);
- next CMD; };
- $cmd =~ s/^p$/print {\$DB::OUT} \$_/;
- $cmd =~ s/^p\b/print {\$DB::OUT} /;
- $cmd =~ s/^=\s*// && do {
- my @keys;
- if (length $cmd == 0) {
- @keys = sort keys %alias;
- }
- elsif (my($k,$v) = ($cmd =~ /^(\S+)\s+(\S.*)/)) {
- # can't use $_ or kill //g state
- for my $x ($k, $v) { $x =~ s/\a/\\a/g }
- $alias{$k} = "s\a$k\a$v\a";
- # squelch the sigmangler
- local $SIG{__DIE__};
- local $SIG{__WARN__};
- unless (eval "sub { s\a$k\a$v\a }; 1") {
- print $OUT "Can't alias $k to $v: $@\n";
- delete $alias{$k};
- next CMD;
- }
- @keys = ($k);
- }
- else {
- @keys = ($cmd);
- }
- for my $k (@keys) {
- if ((my $v = $alias{$k}) =~ ss\a$k\a(.*)\a$1) {
- print $OUT "$k\t= $1\n";
- }
- elsif (defined $alias{$k}) {
- print $OUT "$k\t$alias{$k}\n";
- }
- else {
- print "No alias for $k\n";
- }
- }
- next CMD; };
- $cmd =~ /^\|\|?\s*[^|]/ && do {
- if ($pager =~ /^\|/) {
- open(SAVEOUT,">&STDOUT") || &warn("Can't save STDOUT");
- open(STDOUT,">&OUT") || &warn("Can't redirect STDOUT");
- } else {
- open(SAVEOUT,">&OUT") || &warn("Can't save DB::OUT");
- }
- fix_less();
- unless ($piped=open(OUT,$pager)) {
- &warn("Can't pipe output to `$pager'");
- if ($pager =~ /^\|/) {
- open(OUT,">&STDOUT") # XXX: lost message
- || &warn("Can't restore DB::OUT");
- open(STDOUT,">&SAVEOUT")
- || &warn("Can't restore STDOUT");
- close(SAVEOUT);
- } else {
- open(OUT,">&STDOUT") # XXX: lost message
- || &warn("Can't restore DB::OUT");
- }
- next CMD;
- }
- $SIG{PIPE}= \&DB::catch if $pager =~ /^\|/
- && ("" eq $SIG{PIPE} || "DEFAULT" eq $SIG{PIPE});
- $selected= select(OUT);
- $|= 1;
- select( $selected ), $selected= "" unless $cmd =~ /^\|\|/;
- $cmd =~ s/^\|+\s*//;
- redo PIPE;
- };
- # XXX Local variants do not work!
- $cmd =~ s/^t\s/\$DB::trace |= 1;\n/;
- $cmd =~ s/^s\s/\$DB::single = 1;\n/ && do {$laststep = 's'};
- $cmd =~ s/^n\s/\$DB::single = 2;\n/ && do {$laststep = 'n'};
- } # PIPE:
- $evalarg = "\$^D = \$^D | \$DB::db_stop;\n$cmd"; &eval;
- if ($onetimeDump) {
- $onetimeDump = undef;
- } elsif ($term_pid == $$) {
- print $OUT "\n";
- }
- } continue { # CMD:
- if ($piped) {
- if ($pager =~ /^\|/) {
- $? = 0;
- # we cannot warn here: the handle is missing --tchrist
- close(OUT) || print SAVEOUT "\nCan't close DB::OUT\n";
-
- # most of the $? crud was coping with broken cshisms
- if ($?) {
- print SAVEOUT "Pager `$pager' failed: ";
- if ($? == -1) {
- print SAVEOUT "shell returned -1\n";
- } elsif ($? >> 8) {
- print SAVEOUT
- ( $? & 127 ) ? " (SIG#".($?&127).")" : "",
- ( $? & 128 ) ? " -- core dumped" : "", "\n";
- } else {
- print SAVEOUT "status ", ($? >> 8), "\n";
- }
- }
-
- open(OUT,">&STDOUT") || &warn("Can't restore DB::OUT");
- open(STDOUT,">&SAVEOUT") || &warn("Can't restore STDOUT");
- $SIG{PIPE} = "DEFAULT" if $SIG{PIPE} eq \&DB::catch;
- # Will stop ignoring SIGPIPE if done like nohup(1)
- # does SIGINT but Perl doesn't give us a choice.
- } else {
- open(OUT,">&SAVEOUT") || &warn("Can't restore DB::OUT");
- }
- close(SAVEOUT);
- select($selected), $selected= "" unless $selected eq "";
- $piped= "";
- }
- } # CMD:
- $fall_off_end = 1 unless defined $cmd; # Emulate `q' on EOF
- foreach $evalarg (@$post) {
- &eval;
- }
- } # if ($single || $signal)
- ($@, $!, $^E, $,, $/, $\, $^W) = @saved;
- ();
-}
-
-# The following code may be executed now:
-# BEGIN {warn 4}
-
-sub sub {
- my ($al, $ret, @ret) = "";
- if (length($sub) > 10 && substr($sub, -10, 10) eq '::AUTOLOAD') {
- $al = " for $$sub";
- }
- local $stack_depth = $stack_depth + 1; # Protect from non-local exits
- $#stack = $stack_depth;
- $stack[-1] = $single;
- $single &= 1;
- $single |= 4 if $stack_depth == $deep;
- ($frame & 4
- ? ( (print $LINEINFO ' ' x ($stack_depth - 1), "in "),
- # Why -1? But it works! :-(
- print_trace($LINEINFO, -1, 1, 1, "$sub$al") )
- : print $LINEINFO ' ' x ($stack_depth - 1), "entering $sub$al\n") if $frame;
- if (wantarray) {
- @ret = &$sub;
- $single |= $stack[$stack_depth--];
- ($frame & 4
- ? ( (print $LINEINFO ' ' x $stack_depth, "out "),
- print_trace($LINEINFO, -1, 1, 1, "$sub$al") )
- : print $LINEINFO ' ' x $stack_depth, "exited $sub$al\n") if $frame & 2;
- if ($doret eq $stack_depth or $frame & 16) {
- my $fh = ($doret eq $stack_depth ? $OUT : $LINEINFO);
- print $fh ' ' x $stack_depth if $frame & 16;
- print $fh "list context return from $sub:\n";
- dumpit($fh, \@ret );
- $doret = -2;
- }
- @ret;
- } else {
- if (defined wantarray) {
- $ret = &$sub;
- } else {
- &$sub; undef $ret;
- };
- $single |= $stack[$stack_depth--];
- ($frame & 4
- ? ( (print $LINEINFO ' ' x $stack_depth, "out "),
- print_trace($LINEINFO, -1, 1, 1, "$sub$al") )
- : print $LINEINFO ' ' x $stack_depth, "exited $sub$al\n") if $frame & 2;
- if ($doret eq $stack_depth or $frame & 16 and defined wantarray) {
- my $fh = ($doret eq $stack_depth ? $OUT : $LINEINFO);
- print $fh (' ' x $stack_depth) if $frame & 16;
- print $fh (defined wantarray
- ? "scalar context return from $sub: "
- : "void context return from $sub\n");
- dumpit( $fh, $ret ) if defined wantarray;
- $doret = -2;
- }
- $ret;
- }
-}
-
-sub save {
- @saved = ($@, $!, $^E, $,, $/, $\, $^W);
- $, = ""; $/ = "\n"; $\ = ""; $^W = 0;
-}
-
-# The following takes its argument via $evalarg to preserve current @_
-
-sub eval {
- # 'my' would make it visible from user code
- # but so does local! --tchrist
- local @res;
- {
- local $otrace = $trace;
- local $osingle = $single;
- local $od = $^D;
- { ($evalarg) = $evalarg =~ /(.*)/s; }
- @res = eval "$usercontext $evalarg;\n"; # '\n' for nice recursive debug
- $trace = $otrace;
- $single = $osingle;
- $^D = $od;
- }
- my $at = $@;
- local $saved[0]; # Preserve the old value of $@
- eval { &DB::save };
- if ($at) {
- print $OUT $at;
- } elsif ($onetimeDump eq 'dump') {
- dumpit($OUT, \@res);
- } elsif ($onetimeDump eq 'methods') {
- methods($res[0]);
- }
- @res;
-}
-
-sub postponed_sub {
- my $subname = shift;
- if ($postponed{$subname} =~ s/^break\s([+-]?\d+)\s+if\s//) {
- my $offset = $1 || 0;
- # Filename below can contain ':'
- my ($file,$i) = (find_sub($subname) =~ /^(.*):(\d+)-.*$/);
- if ($i) {
- $i += $offset;
- local *dbline = $main::{'_<' . $file};
- local $^W = 0; # != 0 is magical below
- $had_breakpoints{$file} |= 1;
- my $max = $#dbline;
- ++$i until $dbline[$i] != 0 or $i >= $max;
- $dbline{$i} = delete $postponed{$subname};
- } else {
- print $OUT "Subroutine $subname not found.\n";
- }
- return;
- }
- elsif ($postponed{$subname} eq 'compile') { $signal = 1 }
- #print $OUT "In postponed_sub for `$subname'.\n";
-}
-
-sub postponed {
- if ($ImmediateStop) {
- $ImmediateStop = 0;
- $signal = 1;
- }
- return &postponed_sub
- unless ref \$_[0] eq 'GLOB'; # A subroutine is compiled.
- # Cannot be done before the file is compiled
- local *dbline = shift;
- my $filename = $dbline;
- $filename =~ s/^_<//;
- $signal = 1, print $OUT "'$filename' loaded...\n"
- if $break_on_load{$filename};
- print $LINEINFO ' ' x $stack_depth, "Package $filename.\n" if $frame;
- return unless $postponed_file{$filename};
- $had_breakpoints{$filename} |= 1;
- #%dbline = %{$postponed_file{$filename}}; # Cannot be done: unsufficient magic
- my $key;
- for $key (keys %{$postponed_file{$filename}}) {
- $dbline{$key} = ${$postponed_file{$filename}}{$key};
- }
- delete $postponed_file{$filename};
-}
-
-sub dumpit {
- local ($savout) = select(shift);
- my $osingle = $single;
- my $otrace = $trace;
- $single = $trace = 0;
- local $frame = 0;
- local $doret = -2;
- unless (defined &main::dumpValue) {
- do 'dumpvar.pl';
- }
- if (defined &main::dumpValue) {
- &main::dumpValue(shift);
- } else {
- print $OUT "dumpvar.pl not available.\n";
- }
- $single = $osingle;
- $trace = $otrace;
- select ($savout);
-}
-
-# Tied method do not create a context, so may get wrong message:
-
-sub print_trace {
- my $fh = shift;
- my @sub = dump_trace($_[0] + 1, $_[1]);
- my $short = $_[2]; # Print short report, next one for sub name
- my $s;
- for ($i=0; $i <= $#sub; $i++) {
- last if $signal;
- local $" = ', ';
- my $args = defined $sub[$i]{args}
- ? "(@{ $sub[$i]{args} })"
- : '' ;
- $args = (substr $args, 0, $maxtrace - 3) . '...'
- if length $args > $maxtrace;
- my $file = $sub[$i]{file};
- $file = $file eq '-e' ? $file : "file `$file'" unless $short;
- $s = $sub[$i]{sub};
- $s = (substr $s, 0, $maxtrace - 3) . '...' if length $s > $maxtrace;
- if ($short) {
- my $sub = @_ >= 4 ? $_[3] : $s;
- print $fh "$sub[$i]{context}=$sub$args from $file:$sub[$i]{line}\n";
- } else {
- print $fh "$sub[$i]{context} = $s$args" .
- " called from $file" .
- " line $sub[$i]{line}\n";
- }
- }
-}
-
-sub dump_trace {
- my $skip = shift;
- my $count = shift || 1e9;
- $skip++;
- $count += $skip;
- my ($p,$file,$line,$sub,$h,$args,$e,$r,@a,@sub,$context);
- my $nothard = not $frame & 8;
- local $frame = 0; # Do not want to trace this.
- my $otrace = $trace;
- $trace = 0;
- for ($i = $skip;
- $i < $count and ($p,$file,$line,$sub,$h,$context,$e,$r) = caller($i);
- $i++) {
- @a = ();
- for $arg (@args) {
- my $type;
- if (not defined $arg) {
- push @a, "undef";
- } elsif ($nothard and tied $arg) {
- push @a, "tied";
- } elsif ($nothard and $type = ref $arg) {
- push @a, "ref($type)";
- } else {
- local $_ = "$arg"; # Safe to stringify now - should not call f().
- s/([\'\\])/\\$1/g;
- s/(.*)/'$1'/s
- unless /^(?: -?[\d.]+ | \*[\w:]* )$/x;
- s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
- s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
- push(@a, $_);
- }
- }
- $context = $context ? '@' : (defined $context ? "\$" : '.');
- $args = $h ? [@a] : undef;
- $e =~ s/\n\s*\;\s*\Z// if $e;
- $e =~ s/([\\\'])/\\$1/g if $e;
- if ($r) {
- $sub = "require '$e'";
- } elsif (defined $r) {
- $sub = "eval '$e'";
- } elsif ($sub eq '(eval)') {
- $sub = "eval {...}";
- }
- push(@sub, {context => $context, sub => $sub, args => $args,
- file => $file, line => $line});
- last if $signal;
- }
- $trace = $otrace;
- @sub;
-}
-
-sub action {
- my $action = shift;
- while ($action =~ s/\\$//) {
- #print $OUT "+ ";
- #$action .= "\n";
- $action .= &gets;
- }
- $action;
-}
-
-sub unbalanced {
- # i hate using globals!
- $balanced_brace_re ||= qr{
- ^ \{
- (?:
- (?> [^{}] + ) # Non-parens without backtracking
- |
- (??{ $balanced_brace_re }) # Group with matching parens
- ) *
- \} $
- }x;
- return $_[0] !~ m/$balanced_brace_re/;
-}
-
-sub gets {
- &readline("cont: ");
-}
-
-sub system {
- # We save, change, then restore STDIN and STDOUT to avoid fork() since
- # some non-Unix systems can do system() but have problems with fork().
- open(SAVEIN,"<&STDIN") || &warn("Can't save STDIN");
- open(SAVEOUT,">&STDOUT") || &warn("Can't save STDOUT");
- open(STDIN,"<&IN") || &warn("Can't redirect STDIN");
- open(STDOUT,">&OUT") || &warn("Can't redirect STDOUT");
-
- # XXX: using csh or tcsh destroys sigint retvals!
- system(@_);
- open(STDIN,"<&SAVEIN") || &warn("Can't restore STDIN");
- open(STDOUT,">&SAVEOUT") || &warn("Can't restore STDOUT");
- close(SAVEIN);
- close(SAVEOUT);
-
-
- # most of the $? crud was coping with broken cshisms
- if ($? >> 8) {
- &warn("(Command exited ", ($? >> 8), ")\n");
- } elsif ($?) {
- &warn( "(Command died of SIG#", ($? & 127),
- (($? & 128) ? " -- core dumped" : "") , ")", "\n");
- }
-
- return $?;
-
-}
-
-sub setterm {
- local $frame = 0;
- local $doret = -2;
- eval { require Term::ReadLine } or die $@;
- if ($notty) {
- if ($tty) {
- open(IN,"<$tty") or die "Cannot open TTY `$TTY' for read: $!";
- open(OUT,">$tty") or die "Cannot open TTY `$TTY' for write: $!";
- $IN = \*IN;
- $OUT = \*OUT;
- my $sel = select($OUT);
- $| = 1;
- select($sel);
- } else {
- eval "require Term::Rendezvous;" or die;
- my $rv = $ENV{PERLDB_NOTTY} || "/tmp/perldbtty$$";
- my $term_rv = new Term::Rendezvous $rv;
- $IN = $term_rv->IN;
- $OUT = $term_rv->OUT;
- }
- }
- if (!$rl) {
- $term = new Term::ReadLine::Stub 'perldb', $IN, $OUT;
- } else {
- $term = new Term::ReadLine 'perldb', $IN, $OUT;
-
- $rl_attribs = $term->Attribs;
- $rl_attribs->{basic_word_break_characters} .= '-:+/*,[])}'
- if defined $rl_attribs->{basic_word_break_characters}
- and index($rl_attribs->{basic_word_break_characters}, ":") == -1;
- $rl_attribs->{special_prefixes} = '$@&%';
- $rl_attribs->{completer_word_break_characters} .= '$@&%';
- $rl_attribs->{completion_function} = \&db_complete;
- }
- $LINEINFO = $OUT unless defined $LINEINFO;
- $lineinfo = $console unless defined $lineinfo;
- $term->MinLine(2);
- if ($term->Features->{setHistory} and "@hist" ne "?") {
- $term->SetHistory(@hist);
- }
- ornaments($ornaments) if defined $ornaments;
- $term_pid = $$;
-}
-
-sub resetterm { # We forked, so we need a different TTY
- $term_pid = $$;
- if (defined &get_fork_TTY) {
- &get_fork_TTY;
- } elsif (not defined $fork_TTY
- and defined $ENV{TERM} and $ENV{TERM} eq 'xterm'
- and defined $ENV{WINDOWID} and defined $ENV{DISPLAY}) {
- # Possibly _inside_ XTERM
- open XT, q[3>&1 xterm -title 'Forked Perl debugger' -e sh -c 'tty 1>&3;\
- sleep 10000000' |];
- $fork_TTY = <XT>;
- chomp $fork_TTY;
- }
- if (defined $fork_TTY) {
- TTY($fork_TTY);
- undef $fork_TTY;
- } else {
- print_help(<<EOP);
-I<#########> Forked, but do not know how to change a B<TTY>. I<#########>
- Define B<\$DB::fork_TTY>
- - or a function B<DB::get_fork_TTY()> which will set B<\$DB::fork_TTY>.
- The value of B<\$DB::fork_TTY> should be the name of I<TTY> to use.
- On I<UNIX>-like systems one can get the name of a I<TTY> for the given window
- by typing B<tty>, and disconnect the I<shell> from I<TTY> by B<sleep 1000000>.
-EOP
- }
-}
-
-sub readline {
- local $.;
- if (@typeahead) {
- my $left = @typeahead;
- my $got = shift @typeahead;
- print $OUT "auto(-$left)", shift, $got, "\n";
- $term->AddHistory($got)
- if length($got) > 1 and defined $term->Features->{addHistory};
- return $got;
- }
- local $frame = 0;
- local $doret = -2;
- if (ref $OUT and UNIVERSAL::isa($OUT, 'IO::Socket::INET')) {
- $OUT->write(join('', @_));
- my $stuff;
- $IN->recv( $stuff, 2048 ); # XXX: what's wrong with sysread?
- $stuff;
- }
- else {
- $term->readline(@_);
- }
-}
-
-sub dump_option {
- my ($opt, $val)= @_;
- $val = option_val($opt,'N/A');
- $val =~ s/([\\\'])/\\$1/g;
- printf $OUT "%20s = '%s'\n", $opt, $val;
-}
-
-sub option_val {
- my ($opt, $default)= @_;
- my $val;
- if (defined $optionVars{$opt}
- and defined ${$optionVars{$opt}}) {
- $val = ${$optionVars{$opt}};
- } elsif (defined $optionAction{$opt}
- and defined &{$optionAction{$opt}}) {
- $val = &{$optionAction{$opt}}();
- } elsif (defined $optionAction{$opt}
- and not defined $option{$opt}
- or defined $optionVars{$opt}
- and not defined ${$optionVars{$opt}}) {
- $val = $default;
- } else {
- $val = $option{$opt};
- }
- $val
-}
-
-sub parse_options {
- local($_)= @_;
- # too dangerous to let intuitive usage overwrite important things
- # defaultion should never be the default
- my %opt_needs_val = map { ( $_ => 1 ) } qw{
- arrayDepth hashDepth LineInfo maxTraceLen ornaments
- pager quote ReadLine recallCommand RemotePort ShellBang TTY
- };
- while (length) {
- my $val_defaulted;
- s/^\s+// && next;
- s/^(\w+)(\W?)// or print($OUT "Invalid option `$_'\n"), last;
- my ($opt,$sep) = ($1,$2);
- my $val;
- if ("?" eq $sep) {
- print($OUT "Option query `$opt?' followed by non-space `$_'\n"), last
- if /^\S/;
- #&dump_option($opt);
- } elsif ($sep !~ /\S/) {
- $val_defaulted = 1;
- $val = "1"; # this is an evil default; make 'em set it!
- } elsif ($sep eq "=") {
-
- if (s/ (["']) ( (?: \\. | (?! \1 ) [^\\] )* ) \1 //x) {
- my $quote = $1;
- ($val = $2) =~ s/\\([$quote\\])/$1/g;
- } else {
- s/^(\S*)//;
- $val = $1;
- print OUT qq(Option better cleared using $opt=""\n)
- unless length $val;
- }
-
- } else { #{ to "let some poor schmuck bounce on the % key in B<vi>."
- my ($end) = "\\" . substr( ")]>}$sep", index("([<{",$sep), 1 ); #}
- s/^(([^\\$end]|\\[\\$end])*)$end($|\s+)// or
- print($OUT "Unclosed option value `$opt$sep$_'\n"), last;
- ($val = $1) =~ s/\\([\\$end])/$1/g;
- }
-
- my $option;
- my $matches = grep( /^\Q$opt/ && ($option = $_), @options )
- || grep( /^\Q$opt/i && ($option = $_), @options );
-
- print($OUT "Unknown option `$opt'\n"), next unless $matches;
- print($OUT "Ambiguous option `$opt'\n"), next if $matches > 1;
-
- if ($opt_needs_val{$option} && $val_defaulted) {
- print $OUT "Option `$opt' is non-boolean. Use `O $option=VAL' to set, `O $option?' to query\n";
- next;
- }
-
- $option{$option} = $val if defined $val;
-
- eval qq{
- local \$frame = 0;
- local \$doret = -2;
- require '$optionRequire{$option}';
- 1;
- } || die # XXX: shouldn't happen
- if defined $optionRequire{$option} &&
- defined $val;
-
- ${$optionVars{$option}} = $val
- if defined $optionVars{$option} &&
- defined $val;
-
- &{$optionAction{$option}} ($val)
- if defined $optionAction{$option} &&
- defined &{$optionAction{$option}} &&
- defined $val;
-
- # Not $rcfile
- dump_option($option) unless $OUT eq \*STDERR;
- }
-}
-
-sub set_list {
- my ($stem,@list) = @_;
- my $val;
- $ENV{"${stem}_n"} = @list;
- for $i (0 .. $#list) {
- $val = $list[$i];
- $val =~ s/\\/\\\\/g;
- $val =~ s/([\0-\37\177\200-\377])/"\\0x" . unpack('H2',$1)/eg;
- $ENV{"${stem}_$i"} = $val;
- }
-}
-
-sub get_list {
- my $stem = shift;
- my @list;
- my $n = delete $ENV{"${stem}_n"};
- my $val;
- for $i (0 .. $n - 1) {
- $val = delete $ENV{"${stem}_$i"};
- $val =~ s/\\((\\)|0x(..))/ $2 ? $2 : pack('H2', $3) /ge;
- push @list, $val;
- }
- @list;
-}
-
-sub catch {
- $signal = 1;
- return; # Put nothing on the stack - malloc/free land!
-}
-
-sub warn {
- my($msg)= join("",@_);
- $msg .= ": $!\n" unless $msg =~ /\n$/;
- print $OUT $msg;
-}
-
-sub TTY {
- if (@_ and $term and $term->Features->{newTTY}) {
- my ($in, $out) = shift;
- if ($in =~ /,/) {
- ($in, $out) = split /,/, $in, 2;
- } else {
- $out = $in;
- }
- open IN, $in or die "cannot open `$in' for read: $!";
- open OUT, ">$out" or die "cannot open `$out' for write: $!";
- $term->newTTY(\*IN, \*OUT);
- $IN = \*IN;
- $OUT = \*OUT;
- return $tty = $in;
- } elsif ($term and @_) {
- &warn("Too late to set TTY, enabled on next `R'!\n");
- }
- $tty = shift if @_;
- $tty or $console;
-}
-
-sub noTTY {
- if ($term) {
- &warn("Too late to set noTTY, enabled on next `R'!\n") if @_;
- }
- $notty = shift if @_;
- $notty;
-}
-
-sub ReadLine {
- if ($term) {
- &warn("Too late to set ReadLine, enabled on next `R'!\n") if @_;
- }
- $rl = shift if @_;
- $rl;
-}
-
-sub RemotePort {
- if ($term) {
- &warn("Too late to set RemotePort, enabled on next 'R'!\n") if @_;
- }
- $remoteport = shift if @_;
- $remoteport;
-}
-
-sub tkRunning {
- if (${$term->Features}{tkRunning}) {
- return $term->tkRunning(@_);
- } else {
- print $OUT "tkRunning not supported by current ReadLine package.\n";
- 0;
- }
-}
-
-sub NonStop {
- if ($term) {
- &warn("Too late to set up NonStop mode, enabled on next `R'!\n") if @_;
- }
- $runnonstop = shift if @_;
- $runnonstop;
-}
-
-sub pager {
- if (@_) {
- $pager = shift;
- $pager="|".$pager unless $pager =~ /^(\+?\>|\|)/;
- }
- $pager;
-}
-
-sub shellBang {
- if (@_) {
- $sh = quotemeta shift;
- $sh .= "\\b" if $sh =~ /\w$/;
- }
- $psh = $sh;
- $psh =~ s/\\b$//;
- $psh =~ s/\\(.)/$1/g;
- &sethelp;
- $psh;
-}
-
-sub ornaments {
- if (defined $term) {
- local ($warnLevel,$dieLevel) = (0, 1);
- return '' unless $term->Features->{ornaments};
- eval { $term->ornaments(@_) } || '';
- } else {
- $ornaments = shift;
- }
-}
-
-sub recallCommand {
- if (@_) {
- $rc = quotemeta shift;
- $rc .= "\\b" if $rc =~ /\w$/;
- }
- $prc = $rc;
- $prc =~ s/\\b$//;
- $prc =~ s/\\(.)/$1/g;
- &sethelp;
- $prc;
-}
-
-sub LineInfo {
- return $lineinfo unless @_;
- $lineinfo = shift;
- my $stream = ($lineinfo =~ /^(\+?\>|\|)/) ? $lineinfo : ">$lineinfo";
- $slave_editor = ($stream =~ /^\|/);
- open(LINEINFO, "$stream") || &warn("Cannot open `$stream' for write");
- $LINEINFO = \*LINEINFO;
- my $save = select($LINEINFO);
- $| = 1;
- select($save);
- $lineinfo;
-}
-
-sub list_versions {
- my %version;
- my $file;
- for (keys %INC) {
- $file = $_;
- s,\.p[lm]$,,i ;
- s,/,::,g ;
- s/^perl5db$/DB/;
- s/^Term::ReadLine::readline$/readline/;
- if (defined ${ $_ . '::VERSION' }) {
- $version{$file} = "${ $_ . '::VERSION' } from ";
- }
- $version{$file} .= $INC{$file};
- }
- dumpit($OUT,\%version);
-}
-
-sub sethelp {
- # XXX: make sure these are tabs between the command and explantion,
- # or print_help will screw up your formatting if you have
- # eeevil ornaments enabled. This is an insane mess.
-
- $help = "
-B<T> Stack trace.
-B<s> [I<expr>] Single step [in I<expr>].
-B<n> [I<expr>] Next, steps over subroutine calls [in I<expr>].
-<B<CR>> Repeat last B<n> or B<s> command.
-B<r> Return from current subroutine.
-B<c> [I<line>|I<sub>] Continue; optionally inserts a one-time-only breakpoint
- at the specified position.
-B<l> I<min>B<+>I<incr> List I<incr>+1 lines starting at I<min>.
-B<l> I<min>B<->I<max> List lines I<min> through I<max>.
-B<l> I<line> List single I<line>.
-B<l> I<subname> List first window of lines from subroutine.
-B<l> I<\$var> List first window of lines from subroutine referenced by I<\$var>.
-B<l> List next window of lines.
-B<-> List previous window of lines.
-B<w> [I<line>] List window around I<line>.
-B<.> Return to the executed line.
-B<f> I<filename> Switch to viewing I<filename>. File must be already loaded.
- I<filename> may be either the full name of the file, or a regular
- expression matching the full file name:
- B<f> I</home/me/foo.pl> and B<f> I<oo\\.> may access the same file.
- Evals (with saved bodies) are considered to be filenames:
- B<f> I<(eval 7)> and B<f> I<eval 7\\b> access the body of the 7th eval
- (in the order of execution).
-B</>I<pattern>B</> Search forwards for I<pattern>; final B</> is optional.
-B<?>I<pattern>B<?> Search backwards for I<pattern>; final B<?> is optional.
-B<L> List all breakpoints and actions.
-B<S> [[B<!>]I<pattern>] List subroutine names [not] matching I<pattern>.
-B<t> Toggle trace mode.
-B<t> I<expr> Trace through execution of I<expr>.
-B<b> [I<line>] [I<condition>]
- Set breakpoint; I<line> defaults to the current execution line;
- I<condition> breaks if it evaluates to true, defaults to '1'.
-B<b> I<subname> [I<condition>]
- Set breakpoint at first line of subroutine.
-B<b> I<\$var> Set breakpoint at first line of subroutine referenced by I<\$var>.
-B<b> B<load> I<filename> Set breakpoint on `require'ing the given file.
-B<b> B<postpone> I<subname> [I<condition>]
- Set breakpoint at first line of subroutine after
- it is compiled.
-B<b> B<compile> I<subname>
- Stop after the subroutine is compiled.
-B<d> [I<line>] Delete the breakpoint for I<line>.
-B<D> Delete all breakpoints.
-B<a> [I<line>] I<command>
- Set an action to be done before the I<line> is executed;
- I<line> defaults to the current execution line.
- Sequence is: check for breakpoint/watchpoint, print line
- if necessary, do action, prompt user if necessary,
- execute line.
-B<a> [I<line>] Delete the action for I<line>.
-B<A> Delete all actions.
-B<W> I<expr> Add a global watch-expression.
-B<W> Delete all watch-expressions.
-B<V> [I<pkg> [I<vars>]] List some (default all) variables in package (default current).
- Use B<~>I<pattern> and B<!>I<pattern> for positive and negative regexps.
-B<X> [I<vars>] Same as \"B<V> I<currentpackage> [I<vars>]\".
-B<x> I<expr> Evals expression in list context, dumps the result.
-B<m> I<expr> Evals expression in list context, prints methods callable
- on the first element of the result.
-B<m> I<class> Prints methods callable via the given class.
-
-B<<> ? List Perl commands to run before each prompt.
-B<<> I<expr> Define Perl command to run before each prompt.
-B<<<> I<expr> Add to the list of Perl commands to run before each prompt.
-B<>> ? List Perl commands to run after each prompt.
-B<>> I<expr> Define Perl command to run after each prompt.
-B<>>B<>> I<expr> Add to the list of Perl commands to run after each prompt.
-B<{> I<db_command> Define debugger command to run before each prompt.
-B<{> ? List debugger commands to run before each prompt.
-B<<> I<expr> Define Perl command to run before each prompt.
-B<{{> I<db_command> Add to the list of debugger commands to run before each prompt.
-B<$prc> I<number> Redo a previous command (default previous command).
-B<$prc> I<-number> Redo number'th-to-last command.
-B<$prc> I<pattern> Redo last command that started with I<pattern>.
- See 'B<O> I<recallCommand>' too.
-B<$psh$psh> I<cmd> Run cmd in a subprocess (reads from DB::IN, writes to DB::OUT)"
- . ( $rc eq $sh ? "" : "
-B<$psh> [I<cmd>] Run I<cmd> in subshell (forces \"\$SHELL -c 'cmd'\")." ) . "
- See 'B<O> I<shellBang>' too.
-B<H> I<-number> Display last number commands (default all).
-B<p> I<expr> Same as \"I<print {DB::OUT} expr>\" in current package.
-B<|>I<dbcmd> Run debugger command, piping DB::OUT to current pager.
-B<||>I<dbcmd> Same as B<|>I<dbcmd> but DB::OUT is temporarilly select()ed as well.
-B<\=> [I<alias> I<value>] Define a command alias, or list current aliases.
-I<command> Execute as a perl statement in current package.
-B<v> Show versions of loaded modules.
-B<R> Pure-man-restart of debugger, some of debugger state
- and command-line options may be lost.
- Currently the following setting are preserved:
- history, breakpoints and actions, debugger B<O>ptions
- and the following command-line options: I<-w>, I<-I>, I<-e>.
-
-B<O> [I<opt>] ... Set boolean option to true
-B<O> [I<opt>B<?>] Query options
-B<O> [I<opt>B<=>I<val>] [I<opt>=B<\">I<val>B<\">] ...
- Set options. Use quotes in spaces in value.
- I<recallCommand>, I<ShellBang> chars used to recall command or spawn shell;
- I<pager> program for output of \"|cmd\";
- I<tkRunning> run Tk while prompting (with ReadLine);
- I<signalLevel> I<warnLevel> I<dieLevel> level of verbosity;
- I<inhibit_exit> Allows stepping off the end of the script.
- I<ImmediateStop> Debugger should stop as early as possible.
- I<RemotePort> Remote hostname:port for remote debugging
- The following options affect what happens with B<V>, B<X>, and B<x> commands:
- I<arrayDepth>, I<hashDepth> print only first N elements ('' for all);
- I<compactDump>, I<veryCompact> change style of array and hash dump;
- I<globPrint> whether to print contents of globs;
- I<DumpDBFiles> dump arrays holding debugged files;
- I<DumpPackages> dump symbol tables of packages;
- I<DumpReused> dump contents of \"reused\" addresses;
- I<quote>, I<HighBit>, I<undefPrint> change style of string dump;
- I<bareStringify> Do not print the overload-stringified value;
- Other options include:
- I<PrintRet> affects printing of return value after B<r> command,
- I<frame> affects printing messages on entry and exit from subroutines.
- I<AutoTrace> affects printing messages on every possible breaking point.
- I<maxTraceLen> gives maximal length of evals/args listed in stack trace.
- I<ornaments> affects screen appearance of the command line.
- During startup options are initialized from \$ENV{PERLDB_OPTS}.
- You can put additional initialization options I<TTY>, I<noTTY>,
- I<ReadLine>, I<NonStop>, and I<RemotePort> there (or use
- `B<R>' after you set them).
-
-B<q> or B<^D> Quit. Set B<\$DB::finished = 0> to debug global destruction.
-B<h> [I<db_command>] Get help [on a specific debugger command], enter B<|h> to page.
-B<h h> Summary of debugger commands.
-B<$doccmd> I<manpage> Runs the external doc viewer B<$doccmd> command on the
- named Perl I<manpage>, or on B<$doccmd> itself if omitted.
- Set B<\$DB::doccmd> to change viewer.
-
-Type `|h' for a paged display if this was too hard to read.
-
-"; # Fix balance of vi % matching: } }}
-
- $summary = <<"END_SUM";
-I<List/search source lines:> I<Control script execution:>
- B<l> [I<ln>|I<sub>] List source code B<T> Stack trace
- B<-> or B<.> List previous/current line B<s> [I<expr>] Single step [in expr]
- B<w> [I<line>] List around line B<n> [I<expr>] Next, steps over subs
- B<f> I<filename> View source in file <B<CR>/B<Enter>> Repeat last B<n> or B<s>
- B</>I<pattern>B</> B<?>I<patt>B<?> Search forw/backw B<r> Return from subroutine
- B<v> Show versions of modules B<c> [I<ln>|I<sub>] Continue until position
-I<Debugger controls:> B<L> List break/watch/actions
- B<O> [...] Set debugger options B<t> [I<expr>] Toggle trace [trace expr]
- B<<>[B<<>]|B<{>[B<{>]|B<>>[B<>>] [I<cmd>] Do pre/post-prompt B<b> [I<ln>|I<event>|I<sub>] [I<cnd>] Set breakpoint
- B<$prc> [I<N>|I<pat>] Redo a previous command B<d> [I<ln>] or B<D> Delete a/all breakpoints
- B<H> [I<-num>] Display last num commands B<a> [I<ln>] I<cmd> Do cmd before line
- B<=> [I<a> I<val>] Define/list an alias B<W> I<expr> Add a watch expression
- B<h> [I<db_cmd>] Get help on command B<A> or B<W> Delete all actions/watch
- B<|>[B<|>]I<db_cmd> Send output to pager B<$psh>\[B<$psh>\] I<syscmd> Run cmd in a subprocess
- B<q> or B<^D> Quit B<R> Attempt a restart
-I<Data Examination:> B<expr> Execute perl code, also see: B<s>,B<n>,B<t> I<expr>
- B<x>|B<m> I<expr> Evals expr in list context, dumps the result or lists methods.
- B<p> I<expr> Print expression (uses script's current package).
- 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>]\".
-For more help, type B<h> I<cmd_letter>, or run B<$doccmd perldebug> for all docs.
-END_SUM
- # ')}}; # Fix balance of vi % matching
-}
-
-sub print_help {
- local $_ = shift;
-
- # Restore proper alignment destroyed by eeevil I<> and B<>
- # ornaments: A pox on both their houses!
- #
- # A help command will have everything up to and including
- # the first tab sequence paddeed into a field 16 (or if indented 20)
- # wide. If it's wide than that, an extra space will be added.
- s{
- ^ # only matters at start of line
- ( \040{4} | \t )* # some subcommands are indented
- ( < ? # so <CR> works
- [BI] < [^\t\n] + ) # find an eeevil ornament
- ( \t+ ) # original separation, discarded
- ( .* ) # this will now start (no earlier) than
- # column 16
- } {
- my($leadwhite, $command, $midwhite, $text) = ($1, $2, $3, $4);
- my $clean = $command;
- $clean =~ s/[BI]<([^>]*)>/$1/g;
- # replace with this whole string:
- (length($leadwhite) ? " " x 4 : "")
- . $command
- . ((" " x (16 + (length($leadwhite) ? 4 : 0) - length($clean))) || " ")
- . $text;
-
- }mgex;
-
- s{ # handle bold ornaments
- B < ( [^>] + | > ) >
- } {
- $Term::ReadLine::TermCap::rl_term_set[2]
- . $1
- . $Term::ReadLine::TermCap::rl_term_set[3]
- }gex;
-
- s{ # handle italic ornaments
- I < ( [^>] + | > ) >
- } {
- $Term::ReadLine::TermCap::rl_term_set[0]
- . $1
- . $Term::ReadLine::TermCap::rl_term_set[1]
- }gex;
-
- print $OUT $_;
-}
-
-sub fix_less {
- return if defined $ENV{LESS} && $ENV{LESS} =~ /r/;
- my $is_less = $pager =~ /\bless\b/;
- if ($pager =~ /\bmore\b/) {
- my @st_more = stat('/usr/bin/more');
- my @st_less = stat('/usr/bin/less');
- $is_less = @st_more && @st_less
- && $st_more[0] == $st_less[0]
- && $st_more[1] == $st_less[1];
- }
- # changes environment!
- $ENV{LESS} .= 'r' if $is_less;
-}
-
-sub diesignal {
- local $frame = 0;
- local $doret = -2;
- $SIG{'ABRT'} = 'DEFAULT';
- kill 'ABRT', $$ if $panic++;
- if (defined &Carp::longmess) {
- local $SIG{__WARN__} = '';
- local $Carp::CarpLevel = 2; # mydie + confess
- &warn(Carp::longmess("Signal @_"));
- }
- else {
- print $DB::OUT "Got signal @_\n";
- }
- kill 'ABRT', $$;
-}
-
-sub dbwarn {
- local $frame = 0;
- local $doret = -2;
- local $SIG{__WARN__} = '';
- local $SIG{__DIE__} = '';
- eval { require Carp } if defined $^S; # If error/warning during compilation,
- # require may be broken.
- warn(@_, "\nCannot print stack trace, load with -MCarp option to see stack"),
- return unless defined &Carp::longmess;
- my ($mysingle,$mytrace) = ($single,$trace);
- $single = 0; $trace = 0;
- my $mess = Carp::longmess(@_);
- ($single,$trace) = ($mysingle,$mytrace);
- &warn($mess);
-}
-
-sub dbdie {
- local $frame = 0;
- local $doret = -2;
- local $SIG{__DIE__} = '';
- local $SIG{__WARN__} = '';
- my $i = 0; my $ineval = 0; my $sub;
- if ($dieLevel > 2) {
- local $SIG{__WARN__} = \&dbwarn;
- &warn(@_); # Yell no matter what
- return;
- }
- if ($dieLevel < 2) {
- die @_ if $^S; # in eval propagate
- }
- eval { require Carp } if defined $^S; # If error/warning during compilation,
- # require may be broken.
-
- die(@_, "\nCannot print stack trace, load with -MCarp option to see stack")
- unless defined &Carp::longmess;
-
- # We do not want to debug this chunk (automatic disabling works
- # inside DB::DB, but not in Carp).
- my ($mysingle,$mytrace) = ($single,$trace);
- $single = 0; $trace = 0;
- my $mess = Carp::longmess(@_);
- ($single,$trace) = ($mysingle,$mytrace);
- die $mess;
-}
-
-sub warnLevel {
- if (@_) {
- $prevwarn = $SIG{__WARN__} unless $warnLevel;
- $warnLevel = shift;
- if ($warnLevel) {
- $SIG{__WARN__} = \&DB::dbwarn;
- } else {
- $SIG{__WARN__} = $prevwarn;
- }
- }
- $warnLevel;
-}
-
-sub dieLevel {
- if (@_) {
- $prevdie = $SIG{__DIE__} unless $dieLevel;
- $dieLevel = shift;
- if ($dieLevel) {
- $SIG{__DIE__} = \&DB::dbdie; # if $dieLevel < 2;
- #$SIG{__DIE__} = \&DB::diehard if $dieLevel >= 2;
- print $OUT "Stack dump during die enabled",
- ( $dieLevel == 1 ? " outside of evals" : ""), ".\n"
- if $I_m_init;
- print $OUT "Dump printed too.\n" if $dieLevel > 2;
- } else {
- $SIG{__DIE__} = $prevdie;
- print $OUT "Default die handler restored.\n";
- }
- }
- $dieLevel;
-}
-
-sub signalLevel {
- if (@_) {
- $prevsegv = $SIG{SEGV} unless $signalLevel;
- $prevbus = $SIG{BUS} unless $signalLevel;
- $signalLevel = shift;
- if ($signalLevel) {
- $SIG{SEGV} = \&DB::diesignal;
- $SIG{BUS} = \&DB::diesignal;
- } else {
- $SIG{SEGV} = $prevsegv;
- $SIG{BUS} = $prevbus;
- }
- }
- $signalLevel;
-}
-
-sub CvGV_name {
- my $in = shift;
- my $name = CvGV_name_or_bust($in);
- defined $name ? $name : $in;
-}
-
-sub CvGV_name_or_bust {
- my $in = shift;
- return if $skipCvGV; # Backdoor to avoid problems if XS broken...
- $in = \&$in; # Hard reference...
- eval {require Devel::Peek; 1} or return;
- my $gv = Devel::Peek::CvGV($in) or return;
- *$gv{PACKAGE} . '::' . *$gv{NAME};
-}
-
-sub find_sub {
- my $subr = shift;
- $sub{$subr} or do {
- return unless defined &$subr;
- my $name = CvGV_name_or_bust($subr);
- my $data;
- $data = $sub{$name} if defined $name;
- return $data if defined $data;
-
- # Old stupid way...
- $subr = \&$subr; # Hard reference
- my $s;
- for (keys %sub) {
- $s = $_, last if $subr eq \&$_;
- }
- $sub{$s} if $s;
- }
-}
-
-sub methods {
- my $class = shift;
- $class = ref $class if ref $class;
- local %seen;
- local %packs;
- methods_via($class, '', 1);
- methods_via('UNIVERSAL', 'UNIVERSAL', 0);
-}
-
-sub methods_via {
- my $class = shift;
- return if $packs{$class}++;
- my $prefix = shift;
- my $prepend = $prefix ? "via $prefix: " : '';
- my $name;
- for $name (grep {defined &{${"${class}::"}{$_}}}
- sort keys %{"${class}::"}) {
- next if $seen{ $name }++;
- print $DB::OUT "$prepend$name\n";
- }
- return unless shift; # Recurse?
- for $name (@{"${class}::ISA"}) {
- $prepend = $prefix ? $prefix . " -> $name" : $name;
- methods_via($name, $prepend, 1);
- }
-}
-
-sub setman {
- $doccmd = $^O !~ /^(?:MSWin32|VMS|os2|dos|amigaos|riscos|MacOS)\z/s
- ? "man" # O Happy Day!
- : "perldoc"; # Alas, poor unfortunates
-}
-
-sub runman {
- my $page = shift;
- unless ($page) {
- &system("$doccmd $doccmd");
- return;
- }
- # this way user can override, like with $doccmd="man -Mwhatever"
- # or even just "man " to disable the path check.
- unless ($doccmd eq 'man') {
- &system("$doccmd $page");
- return;
- }
-
- $page = 'perl' if lc($page) eq 'help';
-
- require Config;
- my $man1dir = $Config::Config{'man1dir'};
- my $man3dir = $Config::Config{'man3dir'};
- for ($man1dir, $man3dir) { s#/[^/]*\z## if /\S/ }
- my $manpath = '';
- $manpath .= "$man1dir:" if $man1dir =~ /\S/;
- $manpath .= "$man3dir:" if $man3dir =~ /\S/ && $man1dir ne $man3dir;
- chop $manpath if $manpath;
- # harmless if missing, I figure
- my $oldpath = $ENV{MANPATH};
- $ENV{MANPATH} = $manpath if $manpath;
- my $nopathopt = $^O =~ /dunno what goes here/;
- if (system($doccmd,
- # I just *know* there are men without -M
- (($manpath && !$nopathopt) ? ("-M", $manpath) : ()),
- split ' ', $page) )
- {
- unless ($page =~ /^perl\w/) {
- if (grep { $page eq $_ } qw{
- 5004delta 5005delta amiga api apio book boot bot call compile
- cygwin data dbmfilter debug debguts delta diag doc dos dsc embed
- faq faq1 faq2 faq3 faq4 faq5 faq6 faq7 faq8 faq9 filter fork
- form func guts hack hist hpux intern ipc lexwarn locale lol mod
- modinstall modlib number obj op opentut os2 os390 pod port
- ref reftut run sec style sub syn thrtut tie toc todo toot tootc
- trap unicode var vms win32 xs xstut
- })
- {
- $page =~ s/^/perl/;
- system($doccmd,
- (($manpath && !$nopathopt) ? ("-M", $manpath) : ()),
- $page);
- }
- }
- }
- if (defined $oldpath) {
- $ENV{MANPATH} = $manpath;
- } else {
- delete $ENV{MANPATH};
- }
-}
-
-# The following BEGIN is very handy if debugger goes havoc, debugging debugger?
-
-BEGIN { # This does not compile, alas.
- $IN = \*STDIN; # For bugs before DB::OUT has been opened
- $OUT = \*STDERR; # For errors before DB::OUT has been opened
- $sh = '!';
- $rc = ',';
- @hist = ('?');
- $deep = 100; # warning if stack gets this deep
- $window = 10;
- $preview = 3;
- $sub = '';
- $SIG{INT} = \&DB::catch;
- # This may be enabled to debug debugger:
- #$warnLevel = 1 unless defined $warnLevel;
- #$dieLevel = 1 unless defined $dieLevel;
- #$signalLevel = 1 unless defined $signalLevel;
-
- $db_stop = 0; # Compiler warning
- $db_stop = 1 << 30;
- $level = 0; # Level of recursive debugging
- # @stack and $doret are needed in sub sub, which is called for DB::postponed.
- # Triggers bug (?) in perl is we postpone this until runtime:
- @postponed = @stack = (0);
- $stack_depth = 0; # Localized $#stack
- $doret = -2;
- $frame = 0;
-}
-
-BEGIN {$^W = $ini_warn;} # Switch warnings back
-
-#use Carp; # This did break, left for debuggin
-
-sub db_complete {
- # Specific code for b c l V m f O, &blah, $blah, @blah, %blah
- my($text, $line, $start) = @_;
- my ($itext, $search, $prefix, $pack) =
- ($text, "^\Q${'package'}::\E([^:]+)\$");
-
- return sort grep /^\Q$text/, (keys %sub), qw(postpone load compile), # subroutines
- (map { /$search/ ? ($1) : () } keys %sub)
- if (substr $line, 0, $start) =~ /^\|*[blc]\s+((postpone|compile)\s+)?$/;
- return sort grep /^\Q$text/, values %INC # files
- if (substr $line, 0, $start) =~ /^\|*b\s+load\s+$/;
- return sort map {($_, db_complete($_ . "::", "V ", 2))}
- grep /^\Q$text/, map { /^(.*)::$/ ? ($1) : ()} keys %:: # top-packages
- if (substr $line, 0, $start) =~ /^\|*[Vm]\s+$/ and $text =~ /^\w*$/;
- return sort map {($_, db_complete($_ . "::", "V ", 2))}
- grep !/^main::/,
- grep /^\Q$text/, map { /^(.*)::$/ ? ($prefix . "::$1") : ()} keys %{$prefix . '::'}
- # packages
- if (substr $line, 0, $start) =~ /^\|*[Vm]\s+$/
- and $text =~ /^(.*[^:])::?(\w*)$/ and $prefix = $1;
- if ( $line =~ /^\|*f\s+(.*)/ ) { # Loaded files
- # We may want to complete to (eval 9), so $text may be wrong
- $prefix = length($1) - length($text);
- $text = $1;
- return sort
- map {substr $_, 2 + $prefix} grep /^_<\Q$text/, (keys %main::), $0
- }
- if ((substr $text, 0, 1) eq '&') { # subroutines
- $text = substr $text, 1;
- $prefix = "&";
- return sort map "$prefix$_",
- grep /^\Q$text/,
- (keys %sub),
- (map { /$search/ ? ($1) : () }
- keys %sub);
- }
- if ($text =~ /^[\$@%](.*)::(.*)/) { # symbols in a package
- $pack = ($1 eq 'main' ? '' : $1) . '::';
- $prefix = (substr $text, 0, 1) . $1 . '::';
- $text = $2;
- my @out
- = map "$prefix$_", grep /^\Q$text/, grep /^_?[a-zA-Z]/, keys %$pack ;
- if (@out == 1 and $out[0] =~ /::$/ and $out[0] ne $itext) {
- return db_complete($out[0], $line, $start);
- }
- return sort @out;
- }
- if ($text =~ /^[\$@%]/) { # symbols (in $package + packages in main)
- $pack = ($package eq 'main' ? '' : $package) . '::';
- $prefix = substr $text, 0, 1;
- $text = substr $text, 1;
- my @out = map "$prefix$_", grep /^\Q$text/,
- (grep /^_?[a-zA-Z]/, keys %$pack),
- ( $pack eq '::' ? () : (grep /::$/, keys %::) ) ;
- if (@out == 1 and $out[0] =~ /::$/ and $out[0] ne $itext) {
- return db_complete($out[0], $line, $start);
- }
- return sort @out;
- }
- if ((substr $line, 0, $start) =~ /^\|*O\b.*\s$/) { # Options after a space
- my @out = grep /^\Q$text/, @options;
- my $val = option_val($out[0], undef);
- my $out = '? ';
- if (not defined $val or $val =~ /[\n\r]/) {
- # Can do nothing better
- } elsif ($val =~ /\s/) {
- my $found;
- foreach $l (split //, qq/\"\'\#\|/) {
- $out = "$l$val$l ", last if (index $val, $l) == -1;
- }
- } else {
- $out = "=$val ";
- }
- # Default to value if one completion, to question if many
- $rl_attribs->{completer_terminator_character} = (@out == 1 ? $out : '? ');
- return sort @out;
- }
- return $term->filename_list($text); # filenames
-}
-
-sub end_report {
- print $OUT "Use `q' to quit or `R' to restart. `h q' for details.\n"
-}
-
-END {
- $finished = 1 if $inhibit_exit; # So that some keys may be disabled.
- $fall_off_end = 1 unless $inhibit_exit;
- # Do not stop in at_exit() and destructors on exit:
- $DB::single = !$fall_off_end && !$runnonstop;
- DB::fake::at_exit() unless $fall_off_end or $runnonstop;
-}
-
-package DB::fake;
-
-sub at_exit {
- "Debugged program terminated. Use `q' to quit or `R' to restart.";
-}
-
-package DB; # Do not trace this 1; below!
-
-1;
diff --git a/contrib/perl5/lib/pwd.pl b/contrib/perl5/lib/pwd.pl
deleted file mode 100644
index 6b429eb..0000000
--- a/contrib/perl5/lib/pwd.pl
+++ /dev/null
@@ -1,67 +0,0 @@
-;# pwd.pl - keeps track of current working directory in PWD environment var
-;#
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Cwd
-#
-;# $RCSfile: pwd.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:24:11 $
-;#
-;# $Log: pwd.pl,v $
-;#
-;# Usage:
-;# require "pwd.pl";
-;# &initpwd;
-;# ...
-;# &chdir($newdir);
-
-package pwd;
-
-sub main'initpwd {
- if ($ENV{'PWD'}) {
- local($dd,$di) = stat('.');
- local($pd,$pi) = stat($ENV{'PWD'});
- if (!defined $dd or !defined $pd or $di != $pi or $dd != $pd) {
- chop($ENV{'PWD'} = `pwd`);
- }
- }
- else {
- chop($ENV{'PWD'} = `pwd`);
- }
- if ($ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|) {
- local($pd,$pi) = stat($2);
- local($dd,$di) = stat($1);
- if (defined $pd and defined $dd and $di == $pi and $dd == $pd) {
- $ENV{'PWD'}="$2$3";
- }
- }
-}
-
-sub main'chdir {
- local($newdir) = shift;
- $newdir =~ s|/{2,}|/|g;
- if (chdir $newdir) {
- if ($newdir =~ m#^/#) {
- $ENV{'PWD'} = $newdir;
- }
- else {
- local(@curdir) = split(m#/#,$ENV{'PWD'});
- @curdir = '' unless @curdir;
- foreach $component (split(m#/#, $newdir)) {
- next if $component eq '.';
- pop(@curdir),next if $component eq '..';
- push(@curdir,$component);
- }
- $ENV{'PWD'} = join('/',@curdir) || '/';
- }
- }
- else {
- 0;
- }
-}
-
-1;
diff --git a/contrib/perl5/lib/shellwords.pl b/contrib/perl5/lib/shellwords.pl
deleted file mode 100644
index 1c45a5a..0000000
--- a/contrib/perl5/lib/shellwords.pl
+++ /dev/null
@@ -1,48 +0,0 @@
-;# shellwords.pl
-;#
-;# Usage:
-;# require 'shellwords.pl';
-;# @words = &shellwords($line);
-;# or
-;# @words = &shellwords(@lines);
-;# or
-;# @words = &shellwords; # defaults to $_ (and clobbers it)
-
-sub shellwords {
- package shellwords;
- local($_) = join('', @_) if @_;
- local(@words,$snippet,$field);
-
- s/^\s+//;
- while ($_ ne '') {
- $field = '';
- for (;;) {
- if (s/^"(([^"\\]|\\.)*)"//) {
- ($snippet = $1) =~ s#\\(.)#$1#g;
- }
- elsif (/^"/) {
- die "Unmatched double quote: $_\n";
- }
- elsif (s/^'(([^'\\]|\\.)*)'//) {
- ($snippet = $1) =~ s#\\(.)#$1#g;
- }
- elsif (/^'/) {
- die "Unmatched single quote: $_\n";
- }
- elsif (s/^\\(.)//) {
- $snippet = $1;
- }
- elsif (s/^([^\s\\'"]+)//) {
- $snippet = $1;
- }
- else {
- s/^\s+//;
- last;
- }
- $field .= $snippet;
- }
- push(@words, $field);
- }
- @words;
-}
-1;
diff --git a/contrib/perl5/lib/sigtrap.pm b/contrib/perl5/lib/sigtrap.pm
deleted file mode 100644
index c081123..0000000
--- a/contrib/perl5/lib/sigtrap.pm
+++ /dev/null
@@ -1,289 +0,0 @@
-package sigtrap;
-
-=head1 NAME
-
-sigtrap - Perl pragma to enable simple signal handling
-
-=cut
-
-use Carp;
-
-$VERSION = 1.02;
-$Verbose ||= 0;
-
-sub import {
- my $pkg = shift;
- my $handler = \&handler_traceback;
- my $saw_sig = 0;
- my $untrapped = 0;
- local $_;
-
- Arg_loop:
- while (@_) {
- $_ = shift;
- if (/^[A-Z][A-Z0-9]*$/) {
- $saw_sig++;
- unless ($untrapped and $SIG{$_} and $SIG{$_} ne 'DEFAULT') {
- print "Installing handler $handler for $_\n" if $Verbose;
- $SIG{$_} = $handler;
- }
- }
- elsif ($_ eq 'normal-signals') {
- unshift @_, grep(exists $SIG{$_}, qw(HUP INT PIPE TERM));
- }
- elsif ($_ eq 'error-signals') {
- unshift @_, grep(exists $SIG{$_},
- qw(ABRT BUS EMT FPE ILL QUIT SEGV SYS TRAP));
- }
- elsif ($_ eq 'old-interface-signals') {
- unshift @_,
- grep(exists $SIG{$_},
- qw(ABRT BUS EMT FPE ILL PIPE QUIT SEGV SYS TERM TRAP));
- }
- elsif ($_ eq 'stack-trace') {
- $handler = \&handler_traceback;
- }
- elsif ($_ eq 'die') {
- $handler = \&handler_die;
- }
- elsif ($_ eq 'handler') {
- @_ or croak "No argument specified after 'handler'";
- $handler = shift;
- unless (ref $handler or $handler eq 'IGNORE'
- or $handler eq 'DEFAULT') {
- require Symbol;
- $handler = Symbol::qualify($handler, (caller)[0]);
- }
- }
- elsif ($_ eq 'untrapped') {
- $untrapped = 1;
- }
- elsif ($_ eq 'any') {
- $untrapped = 0;
- }
- elsif ($_ =~ /^\d/) {
- $VERSION >= $_ or croak "sigtrap.pm version $_ required,"
- . " but this is only version $VERSION";
- }
- else {
- croak "Unrecognized argument $_";
- }
- }
- unless ($saw_sig) {
- @_ = qw(old-interface-signals);
- goto Arg_loop;
- }
-}
-
-sub handler_die {
- croak "Caught a SIG$_[0]";
-}
-
-sub handler_traceback {
- package DB; # To get subroutine args.
- $SIG{'ABRT'} = DEFAULT;
- kill 'ABRT', $$ if $panic++;
- syswrite(STDERR, 'Caught a SIG', 12);
- syswrite(STDERR, $_[0], length($_[0]));
- syswrite(STDERR, ' at ', 4);
- ($pack,$file,$line) = caller;
- syswrite(STDERR, $file, length($file));
- syswrite(STDERR, ' line ', 6);
- syswrite(STDERR, $line, length($line));
- syswrite(STDERR, "\n", 1);
-
- # Now go for broke.
- for ($i = 1; ($p,$f,$l,$s,$h,$w,$e,$r) = caller($i); $i++) {
- @a = ();
- for $arg (@args) {
- $_ = "$arg";
- s/([\'\\])/\\$1/g;
- s/([^\0]*)/'$1'/
- unless /^(?: -?[\d.]+ | \*[\w:]* )$/x;
- s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
- s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
- push(@a, $_);
- }
- $w = $w ? '@ = ' : '$ = ';
- $a = $h ? '(' . join(', ', @a) . ')' : '';
- $e =~ s/\n\s*\;\s*\Z// if $e;
- $e =~ s/[\\\']/\\$1/g if $e;
- if ($r) {
- $s = "require '$e'";
- } elsif (defined $r) {
- $s = "eval '$e'";
- } elsif ($s eq '(eval)') {
- $s = "eval {...}";
- }
- $f = "file `$f'" unless $f eq '-e';
- $mess = "$w$s$a called from $f line $l\n";
- syswrite(STDERR, $mess, length($mess));
- }
- kill 'ABRT', $$;
-}
-
-1;
-
-__END__
-
-=head1 SYNOPSIS
-
- use sigtrap;
- use sigtrap qw(stack-trace old-interface-signals); # equivalent
- use sigtrap qw(BUS SEGV PIPE ABRT);
- use sigtrap qw(die INT QUIT);
- use sigtrap qw(die normal-signals);
- use sigtrap qw(die untrapped normal-signals);
- use sigtrap qw(die untrapped normal-signals
- stack-trace any error-signals);
- use sigtrap 'handler' => \&my_handler, 'normal-signals';
- use sigtrap qw(handler my_handler normal-signals
- stack-trace error-signals);
-
-=head1 DESCRIPTION
-
-The B<sigtrap> pragma is a simple interface to installing signal
-handlers. You can have it install one of two handlers supplied by
-B<sigtrap> itself (one which provides a Perl stack trace and one which
-simply C<die()>s), or alternately you can supply your own handler for it
-to install. It can be told only to install a handler for signals which
-are either untrapped or ignored. It has a couple of lists of signals to
-trap, plus you can supply your own list of signals.
-
-The arguments passed to the C<use> statement which invokes B<sigtrap>
-are processed in order. When a signal name or the name of one of
-B<sigtrap>'s signal lists is encountered a handler is immediately
-installed, when an option is encountered it affects subsequently
-installed handlers.
-
-=head1 OPTIONS
-
-=head2 SIGNAL HANDLERS
-
-These options affect which handler will be used for subsequently
-installed signals.
-
-=over 4
-
-=item B<stack-trace>
-
-The handler used for subsequently installed signals outputs a Perl stack
-trace to STDERR and then tries to dump core. This is the default signal
-handler.
-
-=item B<die>
-
-The handler used for subsequently installed signals calls C<die>
-(actually C<croak>) with a message indicating which signal was caught.
-
-=item B<handler> I<your-handler>
-
-I<your-handler> will be used as the handler for subsequently installed
-signals. I<your-handler> can be any value which is valid as an
-assignment to an element of C<%SIG>.
-
-=back
-
-=head2 SIGNAL LISTS
-
-B<sigtrap> has a few built-in lists of signals to trap. They are:
-
-=over 4
-
-=item B<normal-signals>
-
-These are the signals which a program might normally expect to encounter
-and which by default cause it to terminate. They are HUP, INT, PIPE and
-TERM.
-
-=item B<error-signals>
-
-These signals usually indicate a serious problem with the Perl
-interpreter or with your script. They are ABRT, BUS, EMT, FPE, ILL,
-QUIT, SEGV, SYS and TRAP.
-
-=item B<old-interface-signals>
-
-These are the signals which were trapped by default by the old
-B<sigtrap> interface, they are ABRT, BUS, EMT, FPE, ILL, PIPE, QUIT,
-SEGV, SYS, TERM, and TRAP. If no signals or signals lists are passed to
-B<sigtrap>, this list is used.
-
-=back
-
-For each of these three lists, the collection of signals set to be
-trapped is checked before trapping; if your architecture does not
-implement a particular signal, it will not be trapped but rather
-silently ignored.
-
-=head2 OTHER
-
-=over 4
-
-=item B<untrapped>
-
-This token tells B<sigtrap> to install handlers only for subsequently
-listed signals which aren't already trapped or ignored.
-
-=item B<any>
-
-This token tells B<sigtrap> to install handlers for all subsequently
-listed signals. This is the default behavior.
-
-=item I<signal>
-
-Any argument which looks like a signal name (that is,
-C</^[A-Z][A-Z0-9]*$/>) indicates that B<sigtrap> should install a
-handler for that name.
-
-=item I<number>
-
-Require that at least version I<number> of B<sigtrap> is being used.
-
-=back
-
-=head1 EXAMPLES
-
-Provide a stack trace for the old-interface-signals:
-
- use sigtrap;
-
-Ditto:
-
- use sigtrap qw(stack-trace old-interface-signals);
-
-Provide a stack trace on the 4 listed signals only:
-
- use sigtrap qw(BUS SEGV PIPE ABRT);
-
-Die on INT or QUIT:
-
- use sigtrap qw(die INT QUIT);
-
-Die on HUP, INT, PIPE or TERM:
-
- use sigtrap qw(die normal-signals);
-
-Die on HUP, INT, PIPE or TERM, except don't change the behavior for
-signals which are already trapped or ignored:
-
- use sigtrap qw(die untrapped normal-signals);
-
-Die on receipt one of an of the B<normal-signals> which is currently
-B<untrapped>, provide a stack trace on receipt of B<any> of the
-B<error-signals>:
-
- use sigtrap qw(die untrapped normal-signals
- stack-trace any error-signals);
-
-Install my_handler() as the handler for the B<normal-signals>:
-
- use sigtrap 'handler', \&my_handler, 'normal-signals';
-
-Install my_handler() as the handler for the normal-signals, provide a
-Perl stack trace on receipt of one of the error-signals:
-
- use sigtrap qw(handler my_handler normal-signals
- stack-trace error-signals);
-
-=cut
diff --git a/contrib/perl5/lib/stat.pl b/contrib/perl5/lib/stat.pl
deleted file mode 100644
index f7c240a..0000000
--- a/contrib/perl5/lib/stat.pl
+++ /dev/null
@@ -1,31 +0,0 @@
-;# $RCSfile: stat.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:24:13 $
-
-;# Usage:
-;# require 'stat.pl';
-;# @ary = stat(foo);
-;# $st_dev = @ary[$ST_DEV];
-;#
-$ST_DEV = 0 + $[;
-$ST_INO = 1 + $[;
-$ST_MODE = 2 + $[;
-$ST_NLINK = 3 + $[;
-$ST_UID = 4 + $[;
-$ST_GID = 5 + $[;
-$ST_RDEV = 6 + $[;
-$ST_SIZE = 7 + $[;
-$ST_ATIME = 8 + $[;
-$ST_MTIME = 9 + $[;
-$ST_CTIME = 10 + $[;
-$ST_BLKSIZE = 11 + $[;
-$ST_BLOCKS = 12 + $[;
-
-;# Usage:
-;# require 'stat.pl';
-;# do Stat('foo'); # sets st_* as a side effect
-;#
-sub Stat {
- ($st_dev,$st_ino,$st_mode,$st_nlink,$st_uid,$st_gid,$st_rdev,$st_size,
- $st_atime,$st_mtime,$st_ctime,$st_blksize,$st_blocks) = stat(shift(@_));
-}
-
-1;
diff --git a/contrib/perl5/lib/strict.pm b/contrib/perl5/lib/strict.pm
deleted file mode 100644
index 8afb9a3..0000000
--- a/contrib/perl5/lib/strict.pm
+++ /dev/null
@@ -1,117 +0,0 @@
-package strict;
-
-=head1 NAME
-
-strict - Perl pragma to restrict unsafe constructs
-
-=head1 SYNOPSIS
-
- use strict;
-
- use strict "vars";
- use strict "refs";
- use strict "subs";
-
- use strict;
- no strict "vars";
-
-=head1 DESCRIPTION
-
-If no import list is supplied, all possible restrictions are assumed.
-(This is the safest mode to operate in, but is sometimes too strict for
-casual programming.) Currently, there are three possible things to be
-strict about: "subs", "vars", and "refs".
-
-=over 6
-
-=item C<strict refs>
-
-This generates a runtime error if you
-use symbolic references (see L<perlref>).
-
- use strict 'refs';
- $ref = \$foo;
- print $$ref; # ok
- $ref = "foo";
- print $$ref; # runtime error; normally ok
- $file = "STDOUT";
- print $file "Hi!"; # error; note: no comma after $file
-
-There is one exception to this rule:
-
- $bar = \&{'foo'};
- &$bar;
-
-is allowed so that C<goto &$AUTOLOAD> would not break under stricture.
-
-
-=item C<strict vars>
-
-This generates a compile-time error if you access a variable that wasn't
-declared via "our" or C<use vars>,
-localized via C<my()>, or wasn't fully qualified. Because this is to avoid
-variable suicide problems and subtle dynamic scoping issues, a merely
-local() variable isn't good enough. See L<perlfunc/my> and
-L<perlfunc/local>.
-
- use strict 'vars';
- $X::foo = 1; # ok, fully qualified
- my $foo = 10; # ok, my() var
- local $foo = 9; # blows up
-
- package Cinna;
- our $bar; # Declares $bar in current package
- $bar = 'HgS'; # ok, global declared via pragma
-
-The local() generated a compile-time error because you just touched a global
-name without fully qualifying it.
-
-Because of their special use by sort(), the variables $a and $b are
-exempted from this check.
-
-=item C<strict subs>
-
-This disables the poetry optimization, generating a compile-time error if
-you try to use a bareword identifier that's not a subroutine, unless it
-appears in curly braces or on the left hand side of the "=E<gt>" symbol.
-
-
- use strict 'subs';
- $SIG{PIPE} = Plumber; # blows up
- $SIG{PIPE} = "Plumber"; # just fine: bareword in curlies always ok
- $SIG{PIPE} = \&Plumber; # preferred form
-
-
-
-=back
-
-See L<perlmodlib/Pragmatic Modules>.
-
-
-=cut
-
-$strict::VERSION = "1.01";
-
-my %bitmask = (
-refs => 0x00000002,
-subs => 0x00000200,
-vars => 0x00000400
-);
-
-sub bits {
- my $bits = 0;
- foreach my $s (@_){ $bits |= $bitmask{$s} || 0; };
- $bits;
-}
-
-sub import {
- shift;
- $^H |= bits(@_ ? @_ : qw(refs subs vars));
-}
-
-sub unimport {
- shift;
- $^H &= ~ bits(@_ ? @_ : qw(refs subs vars));
-}
-
-1;
diff --git a/contrib/perl5/lib/subs.pm b/contrib/perl5/lib/subs.pm
deleted file mode 100644
index aa332a6..0000000
--- a/contrib/perl5/lib/subs.pm
+++ /dev/null
@@ -1,38 +0,0 @@
-package subs;
-
-=head1 NAME
-
-subs - Perl pragma to predeclare sub names
-
-=head1 SYNOPSIS
-
- use subs qw(frob);
- frob 3..10;
-
-=head1 DESCRIPTION
-
-This will predeclare all the subroutine whose names are
-in the list, allowing you to use them without parentheses
-even before they're declared.
-
-Unlike pragmas that affect the C<$^H> hints variable, the C<use vars> and
-C<use subs> declarations are not BLOCK-scoped. They are thus effective
-for the entire file in which they appear. You may not rescind such
-declarations with C<no vars> or C<no subs>.
-
-See L<perlmodlib/Pragmatic Modules> and L<strict/strict subs>.
-
-=cut
-
-require 5.000;
-
-sub import {
- my $callpack = caller;
- my $pack = shift;
- my @imports = @_;
- foreach $sym (@imports) {
- *{"${callpack}::$sym"} = \&{"${callpack}::$sym"};
- }
-};
-
-1;
diff --git a/contrib/perl5/lib/syslog.pl b/contrib/perl5/lib/syslog.pl
deleted file mode 100644
index f0dbb1c..0000000
--- a/contrib/perl5/lib/syslog.pl
+++ /dev/null
@@ -1,199 +0,0 @@
-#
-# syslog.pl
-#
-# $Log: syslog.pl,v $
-#
-# tom christiansen <tchrist@convex.com>
-# modified to use sockets by Larry Wall <lwall@jpl-devvax.jpl.nasa.gov>
-# NOTE: openlog now takes three arguments, just like openlog(3)
-#
-# call syslog() with a string priority and a list of printf() args
-# like syslog(3)
-#
-# usage: require 'syslog.pl';
-#
-# then (put these all in a script to test function)
-#
-#
-# do openlog($program,'cons,pid','user');
-# do syslog('info','this is another test');
-# do syslog('mail|warning','this is a better test: %d', time);
-# do closelog();
-#
-# do syslog('debug','this is the last test');
-# do openlog("$program $$",'ndelay','user');
-# do syslog('notice','fooprogram: this is really done');
-#
-# $! = 55;
-# do syslog('info','problem was %m'); # %m == $! in syslog(3)
-
-package syslog;
-
-use warnings::register;
-
-$host = 'localhost' unless $host; # set $syslog'host to change
-
-if ($] >= 5 && warnings::enabled()) {
- warnings::warn("You should 'use Sys::Syslog' instead; continuing");
-}
-
-require 'syslog.ph';
-
- eval 'use Socket; 1' ||
- eval { require "socket.ph" } ||
- require "sys/socket.ph";
-
-$maskpri = &LOG_UPTO(&LOG_DEBUG);
-
-sub main'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/;
- &connect if $lo_ndelay;
-}
-
-sub main'closelog {
- $facility = $ident = '';
- &disconnect;
-}
-
-sub main'setlogmask {
- local($oldmask) = $maskpri;
- $maskpri = shift;
- $oldmask;
-}
-
-sub main'syslog {
- local($priority) = shift;
- local($mask) = shift;
- local($message, $whoami);
- local(@words, $num, $numpri, $numfac, $sum);
- local($facility) = $facility; # may need to change temporarily.
-
- die "syslog: expected both priority and mask" unless $mask && $priority;
-
- @words = split(/\W+/, $priority, 2);# Allow "level" or "level|facility".
- undef $numpri;
- undef $numfac;
- foreach (@words) {
- $num = &xlate($_); # Translate word to number.
- if (/^kern$/ || $num < 0) {
- die "syslog: invalid level/facility: $_\n";
- }
- elsif ($num <= &LOG_PRIMASK) {
- die "syslog: too many levels given: $_\n" if defined($numpri);
- $numpri = $num;
- return 0 unless &LOG_MASK($numpri) & $maskpri;
- }
- else {
- die "syslog: too many facilities given: $_\n" if defined($numfac);
- $facility = $_;
- $numfac = $num;
- }
- }
-
- die "syslog: level must be given\n" unless defined($numpri);
-
- if (!defined($numfac)) { # Facility not specified in this call.
- $facility = 'user' unless $facility;
- $numfac = &xlate($facility);
- }
-
- &connect unless $connected;
-
- $whoami = $ident;
-
- if (!$ident && $mask =~ /^(\S.*):\s?(.*)/) {
- $whoami = $1;
- $mask = $2;
- }
-
- unless ($whoami) {
- ($whoami = getlogin) ||
- ($whoami = getpwuid($<)) ||
- ($whoami = 'syslog');
- }
-
- $whoami .= "[$$]" if $lo_pid;
-
- $mask =~ s/%m/$!/g;
- $mask .= "\n" unless $mask =~ /\n$/;
- $message = sprintf ($mask, @_);
-
- $sum = $numpri + $numfac;
- unless (send(SYSLOG,"<$sum>$whoami: $message",0)) {
- if ($lo_cons) {
- if ($pid = fork) {
- unless ($lo_nowait) {
- do {$died = wait;} until $died == $pid || $died < 0;
- }
- }
- else {
- open(CONS,">/dev/console");
- print CONS "<$facility.$priority>$whoami: $message\r";
- exit if defined $pid; # if fork failed, we're parent
- close CONS;
- }
- }
- }
-}
-
-sub xlate {
- local($name) = @_;
- $name = uc $name;
- $name = "LOG_$name" unless $name =~ /^LOG_/;
- $name = "syslog'$name";
- defined &$name ? &$name : -1;
-}
-
-sub connect {
- $pat = 'S n C4 x8';
-
- $af_unix = &AF_UNIX;
- $af_inet = &AF_INET;
-
- $stream = &SOCK_STREAM;
- $datagram = &SOCK_DGRAM;
-
- ($name,$aliases,$proto) = getprotobyname('udp');
- $udp = $proto;
-
- ($name,$aliases,$port,$proto) = getservbyname('syslog','udp');
- $syslog = $port;
-
- if (chop($myname = `hostname`)) {
- ($name,$aliases,$addrtype,$length,@addrs) = gethostbyname($myname);
- die "Can't lookup $myname\n" unless $name;
- @bytes = unpack("C4",$addrs[0]);
- }
- else {
- @bytes = (0,0,0,0);
- }
- $this = pack($pat, $af_inet, 0, @bytes);
-
- if ($host =~ /^\d+\./) {
- @bytes = split(/\./,$host);
- }
- else {
- ($name,$aliases,$addrtype,$length,@addrs) = gethostbyname($host);
- die "Can't lookup $host\n" unless $name;
- @bytes = unpack("C4",$addrs[0]);
- }
- $that = pack($pat,$af_inet,$syslog,@bytes);
-
- socket(SYSLOG,$af_inet,$datagram,$udp) || die "socket: $!\n";
- bind(SYSLOG,$this) || die "bind: $!\n";
- connect(SYSLOG,$that) || die "connect: $!\n";
-
- local($old) = select(SYSLOG); $| = 1; select($old);
- $connected = 1;
-}
-
-sub disconnect {
- close SYSLOG;
- $connected = 0;
-}
-
-1;
diff --git a/contrib/perl5/lib/tainted.pl b/contrib/perl5/lib/tainted.pl
deleted file mode 100644
index 6e24867..0000000
--- a/contrib/perl5/lib/tainted.pl
+++ /dev/null
@@ -1,9 +0,0 @@
-# This subroutine returns true if its argument is tainted, false otherwise.
-
-sub tainted {
- local($@);
- eval { kill 0 * $_[0] };
- $@ =~ /^Insecure/;
-}
-
-1;
diff --git a/contrib/perl5/lib/termcap.pl b/contrib/perl5/lib/termcap.pl
deleted file mode 100644
index f295a2d..0000000
--- a/contrib/perl5/lib/termcap.pl
+++ /dev/null
@@ -1,178 +0,0 @@
-;# $RCSfile: termcap.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:24:16 $
-#
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Term::Cap
-#
-;#
-;# Usage:
-;# require 'ioctl.pl';
-;# ioctl(TTY,$TIOCGETP,$foo);
-;# ($ispeed,$ospeed) = unpack('cc',$foo);
-;# require 'termcap.pl';
-;# &Tgetent('vt100'); # sets $TC{'cm'}, etc.
-;# &Tputs(&Tgoto($TC{'cm'},$col,$row), 0, 'FILEHANDLE');
-;# &Tputs($TC{'dl'},$affcnt,'FILEHANDLE');
-;#
-sub Tgetent {
- local($TERM) = @_;
- local($TERMCAP,$_,$entry,$loop,$field);
-
- # warn "Tgetent: no ospeed set" unless $ospeed;
- foreach $key (keys %TC) {
- delete $TC{$key};
- }
- $TERM = $ENV{'TERM'} unless $TERM;
- $TERM =~ s/(\W)/\\$1/g;
- $TERMCAP = $ENV{'TERMCAP'};
- $TERMCAP = '/etc/termcap' unless $TERMCAP;
- if ($TERMCAP !~ m:^/:) {
- if ($TERMCAP !~ /(^|\|)$TERM[:\|]/) {
- $TERMCAP = '/etc/termcap';
- }
- }
- if ($TERMCAP =~ m:^/:) {
- $entry = '';
- do {
- $loop = "
- open(TERMCAP,'<$TERMCAP') || die \"Can't open $TERMCAP\";
- while (<TERMCAP>) {
- next if /^#/;
- next if /^\t/;
- if (/(^|\\|)${TERM}[:\\|]/) {
- chop;
- while (chop eq '\\\\') {
- \$_ .= <TERMCAP>;
- chop;
- }
- \$_ .= ':';
- last;
- }
- }
- close TERMCAP;
- \$entry .= \$_;
- ";
- eval $loop;
- } while s/:tc=([^:]+):/:/ && ($TERM = $1);
- $TERMCAP = $entry;
- }
-
- foreach $field (split(/:[\s:\\]*/,$TERMCAP)) {
- if ($field =~ /^\w\w$/) {
- $TC{$field} = 1;
- }
- elsif ($field =~ /^(\w\w)#(.*)/) {
- $TC{$1} = $2 if $TC{$1} eq '';
- }
- elsif ($field =~ /^(\w\w)=(.*)/) {
- $entry = $1;
- $_ = $2;
- s/\\E/\033/g;
- s/\\(200)/pack('c',0)/eg; # NUL character
- s/\\(0\d\d)/pack('c',oct($1))/eg; # octal
- s/\\(0x[0-9A-Fa-f][0-9A-Fa-f])/pack('c',hex($1))/eg; # hex
- s/\\(\d\d\d)/pack('c',$1 & 0177)/eg;
- s/\\n/\n/g;
- s/\\r/\r/g;
- s/\\t/\t/g;
- s/\\b/\b/g;
- s/\\f/\f/g;
- s/\\\^/\377/g;
- s/\^\?/\177/g;
- s/\^(.)/pack('c',ord($1) & 31)/eg;
- s/\\(.)/$1/g;
- s/\377/^/g;
- $TC{$entry} = $_ if $TC{$entry} eq '';
- }
- }
- $TC{'pc'} = "\0" if $TC{'pc'} eq '';
- $TC{'bc'} = "\b" if $TC{'bc'} eq '';
-}
-
-@Tputs = (0,200,133.3,90.9,74.3,66.7,50,33.3,16.7,8.3,5.5,4.1,2,1,.5,.2);
-
-sub Tputs {
- local($string,$affcnt,$FH) = @_;
- local($ms);
- if ($string =~ /(^[\d.]+)(\*?)(.*)$/) {
- $ms = $1;
- $ms *= $affcnt if $2;
- $string = $3;
- $decr = $Tputs[$ospeed];
- if ($decr > .1) {
- $ms += $decr / 2;
- $string .= $TC{'pc'} x ($ms / $decr);
- }
- }
- print $FH $string if $FH;
- $string;
-}
-
-sub Tgoto {
- local($string) = shift(@_);
- local($result) = '';
- local($after) = '';
- local($code,$tmp) = @_;
- local(@tmp);
- @tmp = ($tmp,$code);
- local($online) = 0;
- while ($string =~ /^([^%]*)%(.)(.*)/) {
- $result .= $1;
- $code = $2;
- $string = $3;
- if ($code eq 'd') {
- $result .= sprintf("%d",shift(@tmp));
- }
- elsif ($code eq '.') {
- $tmp = shift(@tmp);
- if ($tmp == 0 || $tmp == 4 || $tmp == 10) {
- if ($online) {
- ++$tmp, $after .= $TC{'up'} if $TC{'up'};
- }
- else {
- ++$tmp, $after .= $TC{'bc'};
- }
- }
- $result .= sprintf("%c",$tmp);
- $online = !$online;
- }
- elsif ($code eq '+') {
- $result .= sprintf("%c",shift(@tmp)+ord($string));
- $string = substr($string,1,99);
- $online = !$online;
- }
- elsif ($code eq 'r') {
- ($code,$tmp) = @tmp;
- @tmp = ($tmp,$code);
- $online = !$online;
- }
- elsif ($code eq '>') {
- ($code,$tmp,$string) = unpack("CCa99",$string);
- if ($tmp[$[] > $code) {
- $tmp[$[] += $tmp;
- }
- }
- elsif ($code eq '2') {
- $result .= sprintf("%02d",shift(@tmp));
- $online = !$online;
- }
- elsif ($code eq '3') {
- $result .= sprintf("%03d",shift(@tmp));
- $online = !$online;
- }
- elsif ($code eq 'i') {
- ($code,$tmp) = @tmp;
- @tmp = ($code+1,$tmp+1);
- }
- else {
- return "OOPS";
- }
- }
- $result . $string . $after;
-}
-
-1;
diff --git a/contrib/perl5/lib/timelocal.pl b/contrib/perl5/lib/timelocal.pl
deleted file mode 100644
index ad32275..0000000
--- a/contrib/perl5/lib/timelocal.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-;# timelocal.pl
-;#
-;# Usage:
-;# $time = timelocal($sec,$min,$hours,$mday,$mon,$year);
-;# $time = timegm($sec,$min,$hours,$mday,$mon,$year);
-
-;# This file has been superseded by the Time::Local library module.
-;# It is implemented as a call to that module for backwards compatibility
-;# with code written for perl4; new code should use Time::Local directly.
-
-;# The current implementation shares with the original the questionable
-;# behavior of defining the timelocal() and timegm() functions in the
-;# namespace of whatever package was current when the first instance of
-;# C<require 'timelocal.pl';> was executed in a program.
-
-use Time::Local;
-
-*timelocal::cheat = \&Time::Local::cheat;
diff --git a/contrib/perl5/lib/unicode/ArabLink.pl b/contrib/perl5/lib/unicode/ArabLink.pl
deleted file mode 100644
index 2ad1871..0000000
--- a/contrib/perl5/lib/unicode/ArabLink.pl
+++ /dev/null
@@ -1,45 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0622 0625 R
-0626 D
-0627 R
-0628 D
-0629 R
-062a 062e D
-062f 0632 R
-0633 063a D
-0640 C
-0641 0647 D
-0648 R
-0649 064a D
-0671 0673 R
-0674 U
-0675 0677 R
-0678 0687 D
-0688 0699 R
-069a 06bf D
-06c0 R
-06c1 D
-06c2 06cb R
-06cc D
-06cd R
-06ce D
-06cf R
-06d0 06d1 D
-06d2 06d3 R
-06d5 U
-06fa 06fc D
-0710 R
-0712 0714 D
-0715 0719 R
-071a 071d D
-071e R
-071f 0727 D
-0728 R
-0729 D
-072a R
-072b D
-072c R
-END
diff --git a/contrib/perl5/lib/unicode/ArabLnkGrp.pl b/contrib/perl5/lib/unicode/ArabLnkGrp.pl
deleted file mode 100644
index 1581a04..0000000
--- a/contrib/perl5/lib/unicode/ArabLnkGrp.pl
+++ /dev/null
@@ -1,93 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0622 0623 ALEF
-0624 WAW
-0625 ALEF
-0626 YEH
-0627 ALEF
-0628 BEH
-0629 TEH MARBUTA
-062a 062b BEH
-062c 062e HAH
-062f 0630 DAL
-0631 0632 REH
-0633 0634 SEEN
-0635 0636 SAD
-0637 0638 TAH
-0639 063a AIN
-0640 <no shaping>
-0641 FEH
-0642 QAF
-0643 KAF
-0644 LAM
-0645 MEEM
-0646 NOON
-0647 HEH
-0648 WAW
-0649 064a YEH
-0671 0673 ALEF
-0674 <no shaping>
-0675 ALEF
-0676 0677 WAW
-0678 YEH
-0679 0680 BEH
-0681 0687 HAH
-0688 0690 DAL
-0691 0699 REH
-069a 069c SEEN
-069d 069e SAD
-069f TAH
-06a0 AIN
-06a1 06a6 FEH
-06a7 06a8 QAF
-06a9 GAF
-06aa SWASH KAF
-06ab GAF
-06ac 06ae KAF
-06af 06b4 GAF
-06b5 06b8 LAM
-06b9 06bd NOON
-06be KNOTTED HEH
-06bf HAH
-06c0 TEH MARBUTA
-06c1 HEH GOAL
-06c2 06c3 HAMZA ON HEH GOAL
-06c4 06cb WAW
-06cc YEH
-06cd YEH WITH TAIL
-06ce YEH
-06cf WAW
-06d0 06d1 YEH
-06d2 06d3 YEH BARREE
-06d5 <no shaping>
-06fa SEEN
-06fb SAD
-06fc AIN
-0710 ALAPH
-0712 BETH
-0713 0714 GAMAL
-0715 0716 DALATH RISH
-0717 HE
-0718 WAW
-0719 ZAIN
-071a HETH
-071b 071c TETH
-071d YUDH
-071e YUDH HE
-071f KAPH
-0720 LAMADH
-0721 MIM
-0722 NUN
-0723 SEMKATH
-0724 FINAL SEMKATH
-0725 E
-0726 PE
-0727 REVERSED PE
-0728 SADHE
-0729 QAPH
-072a DALATH RISH
-072b SHIN
-072c TAW
-END
diff --git a/contrib/perl5/lib/unicode/ArabShap.txt b/contrib/perl5/lib/unicode/ArabShap.txt
deleted file mode 100644
index 9b60290..0000000
--- a/contrib/perl5/lib/unicode/ArabShap.txt
+++ /dev/null
@@ -1,199 +0,0 @@
-# ArabicShaping-3.txt
-#
-# This file is a normative contributory data file in the
-# Unicode Character Database.
-#
-# This file defines the shaping classes for Arabic and Syriac
-# positional shaping, repeating in machine readable form the
-# information printed in Tables 8-6, 8-7, 8-8, 8-10, 8-11, and
-# 8-13 of The Unicode Standard, Version 3.0.
-#
-# See sections 8.2 and 8.3 of The Unicode Standard, Version 3.0
-# for more information.
-#
-# Each line contains four fields, separated by a semicolon.
-#
-# The first field gives the code point, in 4-digit hexadecimal
-# form, of an Arabic or Syriac character.
-# The second field gives a short schematic name for that character,
-# abbreviated from the normative Unicode character name.
-# The third field defines the joining type: R right-joining,
-# D dual-joining, U non-joining
-# The fourth field defines the joining group.
-#
-# #############################################################
-
-# Unicode; Schematic Name; Joining Type; Joining Group
-
-# Arabic characters
-
-0622; MADDA ON ALEF; R; ALEF
-0623; HAMZA ON ALEF; R; ALEF
-0624; HAMZA ON WAW; R; WAW
-0625; HAMZA UNDER ALEF; R; ALEF
-0626; HAMZA ON YEH; D; YEH
-0627; ALEF; R; ALEF
-0628; BEH; D; BEH
-0629; TEH MARBUTA; R; TEH MARBUTA
-062A; TEH; D; BEH
-062B; THEH; D; BEH
-062C; JEEM; D; HAH
-062D; HAH; D; HAH
-062E; KHAH; D; HAH
-062F; DAL; R; DAL
-0630; THAL; R; DAL
-0631; REH; R; REH
-0632; ZAIN; R; REH
-0633; SEEN; D; SEEN
-0634; SHEEN; D; SEEN
-0635; SAD; D; SAD
-0636; DAD; D; SAD
-0637; TAH; D; TAH
-0638; ZAH; D; TAH
-0639; AIN; D; AIN
-063A; GHAIN; D; AIN
-0640; TATWEEL; C; <no shaping>
-0641; FEH; D; FEH
-0642; QAF; D; QAF
-0643; KAF; D; KAF
-0644; LAM; D; LAM
-0645; MEEM; D; MEEM
-0646; NOON; D; NOON
-0647; HEH; D; HEH
-0648; WAW; R; WAW
-0649; ALEF MAKSURA; D; YEH
-064A; YEH; D; YEH
-0671; HAMZAT WASL ON ALEF; R; ALEF
-0672; WAVY HAMZA ON ALEF; R; ALEF
-0673; WAVY HAMZA UNDER ALEF; R; ALEF
-0674; HIGH HAMZA; U; <no shaping>
-0675; HIGH HAMZA ALEF; R; ALEF
-0676; HIGH HAMZA WAW; R; WAW
-0677; HIGH HAMZA WAW WITH DAMMA; R; WAW
-0678; HIGH HAMZA YEH; D; YEH
-0679; TEH WITH SMALL TAH; D; BEH
-067A; TEH WITH 2 DOTS VERTICAL ABOVE; D; BEH
-067B; BEH WITH 2 DOTS VERTICAL BELOW; D; BEH
-067C; TEH WITH RING; D; BEH
-067D; TEH WITH 3 DOTS ABOVE DOWNWARD; D; BEH
-067E; TEH WITH 3 DOTS BELOW; D; BEH
-067F; TEH WITH 4 DOTS ABOVE; D; BEH
-0680; BEH WITH 4 DOTS BELOW; D; BEH
-0681; HAMZA ON HAH; D; HAH
-0682; HAH WITH 2 DOTS VERTICAL ABOVE; D; HAH
-0683; HAH WITH MIDDLE 2 DOTS; D; HAH
-0684; HAH WITH MIDDLE 2 DOTS VERTICAL; D; HAH
-0685; HAH WITH 3 DOTS ABOVE; D; HAH
-0686; HAH WITH MIDDLE 3 DOTS DOWNWARD; D; HAH
-0687; HAH WITH MIDDLE 4 DOTS; D; HAH
-0688; DAL WITH SMALL TAH; R; DAL
-0689; DAL WITH RING; R; DAL
-068A; DAL WITH DOT BELOW; R; DAL
-068B; DAL WITH DOT BELOW AND SMALL TAH; R; DAL
-068C; DAL WITH 2 DOTS ABOVE; R; DAL
-068D; DAL WITH 2 DOTS BELOW; R; DAL
-068E; DAL WITH 3 DOTS ABOVE; R; DAL
-068F; DAL WITH 3 DOTS ABOVE DOWNWARD; R; DAL
-0690; DAL WITH 4 DOTS ABOVE; R; DAL
-0691; REH WITH SMALL TAH; R; REH
-0692; REH WITH SMALL V; R; REH
-0693; REH WITH RING; R; REH
-0694; REH WITH DOT BELOW; R; REH
-0695; REH WITH SMALL V BELOW; R; REH
-0696; REH WITH DOT BELOW AND DOT ABOVE; R; REH
-0697; REH WITH 2 DOTS ABOVE; R; REH
-0698; REH WITH 3 DOTS ABOVE; R; REH
-0699; REH WITH 4 DOTS ABOVE; R; REH
-069A; SEEN WITH DOT BELOW AND DOT ABOVE; D; SEEN
-069B; SEEN WITH 3 DOTS BELOW; D; SEEN
-069C; SEEN WITH 3 DOTS BELOW AND 3 DOTS ABOVE; D; SEEN
-069D; SAD WITH 2 DOTS BELOW; D; SAD
-069E; SAD WITH 3 DOTS ABOVE; D; SAD
-069F; TAH WITH 3 DOTS ABOVE; D; TAH
-06A0; AIN WITH 3 DOTS ABOVE; D; AIN
-06A1; DOTLESS FEH; D; FEH
-06A2; FEH WITH DOT MOVED BELOW; D; FEH
-06A3; FEH WITH DOT BELOW; D; FEH
-06A4; FEH WITH 3 DOTS ABOVE; D; FEH
-06A5; FEH WITH 3 DOTS BELOW; D; FEH
-06A6; FEH WITH 4 DOTS ABOVE; D; FEH
-06A7; QAF WITH DOT ABOVE; D; QAF
-06A8; QAF WITH 3 DOTS ABOVE; D; QAF
-06A9; OPEN KAF; D; GAF
-06AA; SWASH KAF; D; SWASH KAF
-06AB; KAF WITH RING; D; GAF
-06AC; KAF WITH DOT ABOVE; D; KAF
-06AD; KAF WITH 3 DOTS ABOVE; D; KAF
-06AE; KAF WITH 3 DOTS BELOW; D; KAF
-06AF; GAF; D; GAF
-06B0; GAF WITH RING; D; GAF
-06B1; GAF WITH 2 DOTS ABOVE; D; GAF
-06B2; GAF WITH 2 DOTS BELOW; D; GAF
-06B3; GAF WITH 2 DOTS VERTICAL BELOW; D; GAF
-06B4; GAF WITH 3 DOTS ABOVE; D; GAF
-06B5; LAM WITH SMALL V; D; LAM
-06B6; LAM WITH DOT ABOVE; D; LAM
-06B7; LAM WITH 3 DOTS ABOVE; D; LAM
-06B8; LAM WITH 3 DOTS BELOW; D; LAM
-06B9; NOON WITH DOT BELOW; D; NOON
-06BA; DOTLESS NOON; D; NOON
-06BB; DOTLESS NOON WITH SMALL TAH; D; NOON
-06BC; NOON WITH RING; D; NOON
-06BD; NOON WITH 3 DOTS ABOVE; D; NOON
-06BE; KNOTTED HEH; D; KNOTTED HEH
-06BF; HAH WITH MIDDLE 3 DOTS DOWNWARD AND DOT ABOVE; D; HAH
-06C0; HAMZA ON HEH; R; TEH MARBUTA
-06C1; HEH GOAL; D; HEH GOAL
-06C2; HAMZA ON HEH GOAL; R; HAMZA ON HEH GOAL
-06C3; TEH MARBUTA GOAL; R; HAMZA ON HEH GOAL
-06C4; WAW WITH RING; R; WAW
-06C5; WAW WITH BAR; R; WAW
-06C6; WAW WITH SMALL V; R; WAW
-06C7; WAW WITH DAMMA; R; WAW
-06C8; WAW WITH ALEF ABOVE; R; WAW
-06C9; WAW WITH INVERTED SMALL V; R; WAW
-06CA; WAW WITH 2 DOTS ABOVE; R; WAW
-06CB; WAW WITH 3 DOTS ABOVE; R; WAW
-06CC; DOTLESS YEH; D; YEH
-06CD; YEH WITH TAIL; R; YEH WITH TAIL
-06CE; YEH WITH SMALL V; D; YEH
-06CF; WAW WITH DOT ABOVE; R; WAW
-06D0; YEH WITH 2 DOTS VERTICAL BELOW; D; YEH
-06D1; YEH WITH 3 DOTS BELOW; D; YEH
-06D2; YEH BARREE; R; YEH BARREE
-06D3; HAMZA ON YEH BARREE; R; YEH BARREE
-06D5; AE; U; <no shaping>
-06FA; SEEN WITH DOT BELOW AND 3 DOTS ABOVE; D; SEEN
-06FB; DAD WITH DOT BELOW; D; SAD
-06FC; GHAIN WITH DOT BELOW; D; AIN
-
-# Syriac characters
-
-0710; ALAPH; R; ALAPH
-0712; BETH; D; BETH
-0713; GAMAL; D; GAMAL
-0714; GAMAL GARSHUNI; D; GAMAL
-0715; DALATH; R; DALATH RISH
-0716; DOTLESS DALATH RISH; R; DALATH RISH
-0717; HE; R; HE
-0718; WAW; R; WAW
-0719; ZAIN; R; ZAIN
-071A; HETH; D; HETH
-071B; TETH; D; TETH
-071C; TETH GARSHUNI; D; TETH
-071D; YUDH; D; YUDH
-071E; YUDH HE; R; YUDH HE
-071F; KAPH; D; KAPH
-0720; LAMADH; D; LAMADH
-0721; MIM; D; MIM
-0722; NUN; D; NUN
-0723; SEMKATH; D; SEMKATH
-0724; FINAL SEMKATH; D; FINAL SEMKATH
-0725; E; D; E
-0726; PE; D; PE
-0727; REVERSED PE; D; REVERSED PE
-0728; SADHE; R; SADHE
-0729; QAPH; D; QAPH
-072A; RISH; R; DALATH RISH
-072B; SHIN; D; SHIN
-072C; TAW; R; TAW
diff --git a/contrib/perl5/lib/unicode/BidiMirr.txt b/contrib/perl5/lib/unicode/BidiMirr.txt
deleted file mode 100644
index 8ac5be9..0000000
--- a/contrib/perl5/lib/unicode/BidiMirr.txt
+++ /dev/null
@@ -1,238 +0,0 @@
-# BidiMirroring-1.txt
-#
-# This file is an informative supplement to the UnicodeData file. It
-# lists characters that have the mirrored property
-# where there is another Unicode character that typically has a glyph
-# that is the mirror image of the original character's glyph.
-# The repertoire covered by the file is Unicode 3.0.1.
-#
-# The file contains a list of lines with mappings from one code point
-# to another one for character-based mirroring.
-# Note that for "real" mirroring, a rendering engine needs to select
-# appropriate alternative glyphs, and that many Unicode characters do not
-# have a mirror-image Unicode character.
-#
-# Each mapping line contains two fields, separated by a semicolon (';').
-# Each of the two fields contains a code point represented as a
-# variable-length hexadecimal value with 4 to 6 digits.
-# A comment indicates where the characters are "BEST FIT" mirroring.
-#
-# Code points with the "mirrored" property but no appropriate mirrors are
-# listed as comments at the end of the file.
-#
-# For information on bidi mirroring, see UTR #21: Bidirectional Algorithm,
-# at http://www.unicode.org/unicode/reports/tr9/
-#
-# Please address any comments to <errata@unicode.org>.
-# Note that this is an archival address: messages will be checked,
-# but do not expect an immediate response.
-#
-# This file was originally created by Markus Scherer
-#
-# ############################################################
-
-0028; 0029 # LEFT PARENTHESIS
-0029; 0028 # RIGHT PARENTHESIS
-003C; 003E # LESS-THAN SIGN
-003E; 003C # GREATER-THAN SIGN
-005B; 005D # LEFT SQUARE BRACKET
-005D; 005B # RIGHT SQUARE BRACKET
-007B; 007D # LEFT CURLY BRACKET
-007D; 007B # RIGHT CURLY BRACKET
-00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-2045; 2046 # LEFT SQUARE BRACKET WITH QUILL
-2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL
-207D; 207E # SUPERSCRIPT LEFT PARENTHESIS
-207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS
-208D; 208E # SUBSCRIPT LEFT PARENTHESIS
-208E; 208D # SUBSCRIPT RIGHT PARENTHESIS
-2208; 220B # ELEMENT OF
-2209; 220C # NOT AN ELEMENT OF
-220A; 220D # SMALL ELEMENT OF
-220B; 2208 # CONTAINS AS MEMBER
-220C; 2209 # DOES NOT CONTAIN AS MEMBER
-220D; 220A # SMALL CONTAINS AS MEMBER
-223C; 223D # TILDE OPERATOR
-223D; 223C # REVERSED TILDE
-2243; 22CD # ASYMPTOTICALLY EQUAL TO
-2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF
-2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO
-2254; 2255 # COLON EQUALS
-2255; 2254 # EQUALS COLON
-2264; 2265 # LESS-THAN OR EQUAL TO
-2265; 2264 # GREATER-THAN OR EQUAL TO
-2266; 2267 # LESS-THAN OVER EQUAL TO
-2267; 2266 # GREATER-THAN OVER EQUAL TO
-2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO
-2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO
-226A; 226B # MUCH LESS-THAN
-226B; 226A # MUCH GREATER-THAN
-226E; 226F # [BEST FIT] NOT LESS-THAN
-226F; 226E # [BEST FIT] NOT GREATER-THAN
-2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO
-2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO
-2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO
-2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO
-2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO
-2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO
-2276; 2277 # LESS-THAN OR GREATER-THAN
-2277; 2276 # GREATER-THAN OR LESS-THAN
-2278; 2279 # NEITHER LESS-THAN NOR GREATER-THAN
-2279; 2278 # NEITHER GREATER-THAN NOR LESS-THAN
-227A; 227B # PRECEDES
-227B; 227A # SUCCEEDS
-227C; 227D # PRECEDES OR EQUAL TO
-227D; 227C # SUCCEEDS OR EQUAL TO
-227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO
-227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO
-2280; 2281 # [BEST FIT] DOES NOT PRECEDE
-2281; 2280 # [BEST FIT] DOES NOT SUCCEED
-2282; 2283 # SUBSET OF
-2283; 2282 # SUPERSET OF
-2284; 2285 # [BEST FIT] NOT A SUBSET OF
-2285; 2284 # [BEST FIT] NOT A SUPERSET OF
-2286; 2287 # SUBSET OF OR EQUAL TO
-2287; 2286 # SUPERSET OF OR EQUAL TO
-2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO
-2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO
-228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO
-228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO
-228F; 2290 # SQUARE IMAGE OF
-2290; 228F # SQUARE ORIGINAL OF
-2291; 2292 # SQUARE IMAGE OF OR EQUAL TO
-2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO
-22A2; 22A3 # RIGHT TACK
-22A3; 22A2 # LEFT TACK
-22B0; 22B1 # PRECEDES UNDER RELATION
-22B1; 22B0 # SUCCEEDS UNDER RELATION
-22B2; 22B3 # NORMAL SUBGROUP OF
-22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP
-22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO
-22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
-22B6; 22B7 # ORIGINAL OF
-22B7; 22B6 # IMAGE OF
-22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CB; 22CC # LEFT SEMIDIRECT PRODUCT
-22CC; 22CB # RIGHT SEMIDIRECT PRODUCT
-22CD; 2243 # REVERSED TILDE EQUALS
-22D0; 22D1 # DOUBLE SUBSET
-22D1; 22D0 # DOUBLE SUPERSET
-22D6; 22D7 # LESS-THAN WITH DOT
-22D7; 22D6 # GREATER-THAN WITH DOT
-22D8; 22D9 # VERY MUCH LESS-THAN
-22D9; 22D8 # VERY MUCH GREATER-THAN
-22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN
-22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN
-22DC; 22DD # EQUAL TO OR LESS-THAN
-22DD; 22DC # EQUAL TO OR GREATER-THAN
-22DE; 22DF # EQUAL TO OR PRECEDES
-22DF; 22DE # EQUAL TO OR SUCCEEDS
-22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL
-22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL
-22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO
-22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO
-22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO
-22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO
-22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO
-22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO
-22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO
-22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO
-22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF
-22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP
-22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO
-22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
-22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS
-22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS
-2308; 2309 # LEFT CEILING
-2309; 2308 # RIGHT CEILING
-230A; 230B # LEFT FLOOR
-230B; 230A # RIGHT FLOOR
-2329; 232A # LEFT-POINTING ANGLE BRACKET
-232A; 2329 # RIGHT-POINTING ANGLE BRACKET
-3008; 3009 # LEFT ANGLE BRACKET
-3009; 3008 # RIGHT ANGLE BRACKET
-300A; 300B # LEFT DOUBLE ANGLE BRACKET
-300B; 300A # RIGHT DOUBLE ANGLE BRACKET
-300C; 300D # [BEST FIT] LEFT CORNER BRACKET
-300D; 300C # [BEST FIT] RIGHT CORNER BRACKET
-300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET
-300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET
-3010; 3011 # LEFT BLACK LENTICULAR BRACKET
-3011; 3010 # RIGHT BLACK LENTICULAR BRACKET
-3014; 3015 # [BEST FIT] LEFT TORTOISE SHELL BRACKET
-3015; 3014 # [BEST FIT] RIGHT TORTOISE SHELL BRACKET
-3016; 3017 # LEFT WHITE LENTICULAR BRACKET
-3017; 3016 # RIGHT WHITE LENTICULAR BRACKET
-3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET
-3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET
-301A; 301B # LEFT WHITE SQUARE BRACKET
-301B; 301A # RIGHT WHITE SQUARE BRACKET
-
-# The following characters have no appropriate mirroring character
-
-# 2201; COMPLEMENT
-# 2202; PARTIAL DIFFERENTIAL
-# 2203; THERE EXISTS
-# 2204; THERE DOES NOT EXIST
-# 2211; N-ARY SUMMATION
-# 2215; DIVISION SLASH
-# 2216; SET MINUS
-# 221A; SQUARE ROOT
-# 221B; CUBE ROOT
-# 221C; FOURTH ROOT
-# 221D; PROPORTIONAL TO
-# 221F; RIGHT ANGLE
-# 2220; ANGLE
-# 2221; MEASURED ANGLE
-# 2222; SPHERICAL ANGLE
-# 2224; DOES NOT DIVIDE
-# 2226; NOT PARALLEL TO
-# 222B; INTEGRAL
-# 222C; DOUBLE INTEGRAL
-# 222D; TRIPLE INTEGRAL
-# 222E; CONTOUR INTEGRAL
-# 222F; SURFACE INTEGRAL
-# 2230; VOLUME INTEGRAL
-# 2231; CLOCKWISE INTEGRAL
-# 2232; CLOCKWISE CONTOUR INTEGRAL
-# 2233; ANTICLOCKWISE CONTOUR INTEGRAL
-# 2239; EXCESS
-# 223B; HOMOTHETIC
-# 223E; INVERTED LAZY S
-# 223F; SINE WAVE
-# 2240; WREATH PRODUCT
-# 2241; NOT TILDE
-# 2242; MINUS TILDE
-# 2244; NOT ASYMPTOTICALLY EQUAL TO
-# 2245; APPROXIMATELY EQUAL TO
-# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
-# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
-# 2248; ALMOST EQUAL TO
-# 2249; NOT ALMOST EQUAL TO
-# 224A; ALMOST EQUAL OR EQUAL TO
-# 224B; TRIPLE TILDE
-# 224C; ALL EQUAL TO
-# 225F; QUESTIONED EQUAL TO
-# 2260; NOT EQUAL TO
-# 2262; NOT IDENTICAL TO
-# 228C; MULTISET
-# 2298; CIRCLED DIVISION SLASH
-# 22A6; ASSERTION
-# 22A7; MODELS
-# 22A8; TRUE
-# 22A9; FORCES
-# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE
-# 22AB; DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-# 22AC; DOES NOT PROVE
-# 22AD; NOT TRUE
-# 22AE; DOES NOT FORCE
-# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-# 22B8; MULTIMAP
-# 22BE; RIGHT ANGLE WITH ARC
-# 22BF; RIGHT TRIANGLE
-# 2320; TOP HALF INTEGRAL
-# 2321; BOTTOM HALF INTEGRAL
diff --git a/contrib/perl5/lib/unicode/Bidirectional.pl b/contrib/perl5/lib/unicode/Bidirectional.pl
deleted file mode 100644
index 3cc2d0a..0000000
--- a/contrib/perl5/lib/unicode/Bidirectional.pl
+++ /dev/null
@@ -1,640 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 0008 BN
-0009 S
-000a B
-000b S
-000c WS
-000d B
-000e 001b BN
-001c 001e B
-001f S
-0020 WS
-0021 0022 ON
-0023 0025 ET
-0026 002a ON
-002b ET
-002c CS
-002d ET
-002e CS
-002f ES
-0030 0039 EN
-003a CS
-003b 0040 ON
-0041 005a L
-005b 0060 ON
-0061 007a L
-007b 007e ON
-007f 0084 BN
-0085 B
-0086 009f BN
-00a0 CS
-00a1 ON
-00a2 00a5 ET
-00a6 00a9 ON
-00aa L
-00ab 00af ON
-00b0 00b1 ET
-00b2 00b3 EN
-00b4 ON
-00b5 L
-00b6 00b8 ON
-00b9 EN
-00ba L
-00bb 00bf ON
-00c0 00d6 L
-00d7 ON
-00d8 00f6 L
-00f7 ON
-00f8 021f L
-0222 0233 L
-0250 02ad L
-02b0 02b8 L
-02b9 02ba ON
-02bb 02c1 L
-02c2 02cf ON
-02d0 02d1 L
-02d2 02df ON
-02e0 02e4 L
-02e5 02ed ON
-02ee L
-0300 034e NSM
-0360 0362 NSM
-0374 0375 ON
-037a L
-037e ON
-0384 0385 ON
-0386 L
-0387 ON
-0388 038a L
-038c L
-038e 03a1 L
-03a3 03ce L
-03d0 03d7 L
-03da 03f3 L
-0400 0482 L
-0483 0486 NSM
-0488 0489 NSM
-048c 04c4 L
-04c7 04c8 L
-04cb 04cc L
-04d0 04f5 L
-04f8 04f9 L
-0531 0556 L
-0559 055f L
-0561 0587 L
-0589 L
-058a ON
-0591 05a1 NSM
-05a3 05b9 NSM
-05bb 05bd NSM
-05be R
-05bf NSM
-05c0 R
-05c1 05c2 NSM
-05c3 R
-05c4 NSM
-05d0 05ea R
-05f0 05f4 R
-060c CS
-061b AL
-061f AL
-0621 063a AL
-0640 064a AL
-064b 0655 NSM
-0660 0669 AN
-066a ET
-066b 066c AN
-066d AL
-0670 NSM
-0671 06d5 AL
-06d6 06e4 NSM
-06e5 06e6 AL
-06e7 06e8 NSM
-06e9 ON
-06ea 06ed NSM
-06f0 06f9 EN
-06fa 06fe AL
-0700 070d AL
-070f BN
-0710 AL
-0711 NSM
-0712 072c AL
-0730 074a NSM
-0780 07a5 AL
-07a6 07b0 NSM
-0901 0902 NSM
-0903 L
-0905 0939 L
-093c NSM
-093d 0940 L
-0941 0948 NSM
-0949 094c L
-094d NSM
-0950 L
-0951 0954 NSM
-0958 0961 L
-0962 0963 NSM
-0964 0970 L
-0981 NSM
-0982 0983 L
-0985 098c L
-098f 0990 L
-0993 09a8 L
-09aa 09b0 L
-09b2 L
-09b6 09b9 L
-09bc NSM
-09be 09c0 L
-09c1 09c4 NSM
-09c7 09c8 L
-09cb 09cc L
-09cd NSM
-09d7 L
-09dc 09dd L
-09df 09e1 L
-09e2 09e3 NSM
-09e6 09f1 L
-09f2 09f3 ET
-09f4 09fa L
-0a02 NSM
-0a05 0a0a L
-0a0f 0a10 L
-0a13 0a28 L
-0a2a 0a30 L
-0a32 0a33 L
-0a35 0a36 L
-0a38 0a39 L
-0a3c NSM
-0a3e 0a40 L
-0a41 0a42 NSM
-0a47 0a48 NSM
-0a4b 0a4d NSM
-0a59 0a5c L
-0a5e L
-0a66 0a6f L
-0a70 0a71 NSM
-0a72 0a74 L
-0a81 0a82 NSM
-0a83 L
-0a85 0a8b L
-0a8d L
-0a8f 0a91 L
-0a93 0aa8 L
-0aaa 0ab0 L
-0ab2 0ab3 L
-0ab5 0ab9 L
-0abc NSM
-0abd 0ac0 L
-0ac1 0ac5 NSM
-0ac7 0ac8 NSM
-0ac9 L
-0acb 0acc L
-0acd NSM
-0ad0 L
-0ae0 L
-0ae6 0aef L
-0b01 NSM
-0b02 0b03 L
-0b05 0b0c L
-0b0f 0b10 L
-0b13 0b28 L
-0b2a 0b30 L
-0b32 0b33 L
-0b36 0b39 L
-0b3c NSM
-0b3d 0b3e L
-0b3f NSM
-0b40 L
-0b41 0b43 NSM
-0b47 0b48 L
-0b4b 0b4c L
-0b4d NSM
-0b56 NSM
-0b57 L
-0b5c 0b5d L
-0b5f 0b61 L
-0b66 0b70 L
-0b82 NSM
-0b83 L
-0b85 0b8a L
-0b8e 0b90 L
-0b92 0b95 L
-0b99 0b9a L
-0b9c L
-0b9e 0b9f L
-0ba3 0ba4 L
-0ba8 0baa L
-0bae 0bb5 L
-0bb7 0bb9 L
-0bbe 0bbf L
-0bc0 NSM
-0bc1 0bc2 L
-0bc6 0bc8 L
-0bca 0bcc L
-0bcd NSM
-0bd7 L
-0be7 0bf2 L
-0c01 0c03 L
-0c05 0c0c L
-0c0e 0c10 L
-0c12 0c28 L
-0c2a 0c33 L
-0c35 0c39 L
-0c3e 0c40 NSM
-0c41 0c44 L
-0c46 0c48 NSM
-0c4a 0c4d NSM
-0c55 0c56 NSM
-0c60 0c61 L
-0c66 0c6f L
-0c82 0c83 L
-0c85 0c8c L
-0c8e 0c90 L
-0c92 0ca8 L
-0caa 0cb3 L
-0cb5 0cb9 L
-0cbe L
-0cbf NSM
-0cc0 0cc4 L
-0cc6 NSM
-0cc7 0cc8 L
-0cca 0ccb L
-0ccc 0ccd NSM
-0cd5 0cd6 L
-0cde L
-0ce0 0ce1 L
-0ce6 0cef L
-0d02 0d03 L
-0d05 0d0c L
-0d0e 0d10 L
-0d12 0d28 L
-0d2a 0d39 L
-0d3e 0d40 L
-0d41 0d43 NSM
-0d46 0d48 L
-0d4a 0d4c L
-0d4d NSM
-0d57 L
-0d60 0d61 L
-0d66 0d6f L
-0d82 0d83 L
-0d85 0d96 L
-0d9a 0db1 L
-0db3 0dbb L
-0dbd L
-0dc0 0dc6 L
-0dca NSM
-0dcf 0dd1 L
-0dd2 0dd4 NSM
-0dd6 NSM
-0dd8 0ddf L
-0df2 0df4 L
-0e01 0e30 L
-0e31 NSM
-0e32 0e33 L
-0e34 0e3a NSM
-0e3f ET
-0e40 0e46 L
-0e47 0e4e NSM
-0e4f 0e5b L
-0e81 0e82 L
-0e84 L
-0e87 0e88 L
-0e8a L
-0e8d L
-0e94 0e97 L
-0e99 0e9f L
-0ea1 0ea3 L
-0ea5 L
-0ea7 L
-0eaa 0eab L
-0ead 0eb0 L
-0eb1 NSM
-0eb2 0eb3 L
-0eb4 0eb9 NSM
-0ebb 0ebc NSM
-0ebd L
-0ec0 0ec4 L
-0ec6 L
-0ec8 0ecd NSM
-0ed0 0ed9 L
-0edc 0edd L
-0f00 0f17 L
-0f18 0f19 NSM
-0f1a 0f34 L
-0f35 NSM
-0f36 L
-0f37 NSM
-0f38 L
-0f39 NSM
-0f3a 0f3d ON
-0f3e 0f47 L
-0f49 0f6a L
-0f71 0f7e NSM
-0f7f L
-0f80 0f84 NSM
-0f85 L
-0f86 0f87 NSM
-0f88 0f8b L
-0f90 0f97 NSM
-0f99 0fbc NSM
-0fbe 0fc5 L
-0fc6 NSM
-0fc7 0fcc L
-0fcf L
-1000 1021 L
-1023 1027 L
-1029 102a L
-102c L
-102d 1030 NSM
-1031 L
-1032 NSM
-1036 1037 NSM
-1038 L
-1039 NSM
-1040 1057 L
-1058 1059 NSM
-10a0 10c5 L
-10d0 10f6 L
-10fb L
-1100 1159 L
-115f 11a2 L
-11a8 11f9 L
-1200 1206 L
-1208 1246 L
-1248 L
-124a 124d L
-1250 1256 L
-1258 L
-125a 125d L
-1260 1286 L
-1288 L
-128a 128d L
-1290 12ae L
-12b0 L
-12b2 12b5 L
-12b8 12be L
-12c0 L
-12c2 12c5 L
-12c8 12ce L
-12d0 12d6 L
-12d8 12ee L
-12f0 130e L
-1310 L
-1312 1315 L
-1318 131e L
-1320 1346 L
-1348 135a L
-1361 137c L
-13a0 13f4 L
-1401 1676 L
-1680 WS
-1681 169a L
-169b 169c ON
-16a0 16f0 L
-1780 17b6 L
-17b7 17bd NSM
-17be 17c5 L
-17c6 NSM
-17c7 17c8 L
-17c9 17d3 NSM
-17d4 17da L
-17db ET
-17dc L
-17e0 17e9 L
-1800 180a ON
-180b 180e BN
-1810 1819 L
-1820 1877 L
-1880 18a8 L
-18a9 NSM
-1e00 1e9b L
-1ea0 1ef9 L
-1f00 1f15 L
-1f18 1f1d L
-1f20 1f45 L
-1f48 1f4d L
-1f50 1f57 L
-1f59 L
-1f5b L
-1f5d L
-1f5f 1f7d L
-1f80 1fb4 L
-1fb6 1fbc L
-1fbd ON
-1fbe L
-1fbf 1fc1 ON
-1fc2 1fc4 L
-1fc6 1fcc L
-1fcd 1fcf ON
-1fd0 1fd3 L
-1fd6 1fdb L
-1fdd 1fdf ON
-1fe0 1fec L
-1fed 1fef ON
-1ff2 1ff4 L
-1ff6 1ffc L
-1ffd 1ffe ON
-2000 200a WS
-200b 200d BN
-200e L
-200f R
-2010 2027 ON
-2028 WS
-2029 B
-202a LRE
-202b RLE
-202c PDF
-202d LRO
-202e RLO
-202f WS
-2030 2034 ET
-2035 2046 ON
-2048 204d ON
-206a 206f BN
-2070 EN
-2074 2079 EN
-207a 207b ET
-207c 207e ON
-207f L
-2080 2089 EN
-208a 208b ET
-208c 208e ON
-20a0 20af ET
-20d0 20e3 NSM
-2100 2101 ON
-2102 L
-2103 2106 ON
-2107 L
-2108 2109 ON
-210a 2113 L
-2114 ON
-2115 L
-2116 2118 ON
-2119 211d L
-211e 2123 ON
-2124 L
-2125 ON
-2126 L
-2127 ON
-2128 L
-2129 ON
-212a 212d L
-212e ET
-212f 2131 L
-2132 ON
-2133 2139 L
-213a ON
-2153 215f ON
-2160 2183 L
-2190 21f3 ON
-2200 2211 ON
-2212 2213 ET
-2214 22f1 ON
-2300 2335 ON
-2336 237a L
-237b ON
-237d 2394 ON
-2395 L
-2396 239a ON
-2400 2426 ON
-2440 244a ON
-2460 249b EN
-249c 24e9 L
-24ea EN
-2500 2595 ON
-25a0 25f7 ON
-2600 2613 ON
-2619 2671 ON
-2701 2704 ON
-2706 2709 ON
-270c 2727 ON
-2729 274b ON
-274d ON
-274f 2752 ON
-2756 ON
-2758 275e ON
-2761 2767 ON
-2776 2794 ON
-2798 27af ON
-27b1 27be ON
-2800 28ff ON
-2e80 2e99 ON
-2e9b 2ef3 ON
-2f00 2fd5 ON
-2ff0 2ffb ON
-3000 WS
-3001 3004 ON
-3005 3007 L
-3008 3020 ON
-3021 3029 L
-302a 302f NSM
-3030 ON
-3031 3035 L
-3036 3037 ON
-3038 303a L
-303e 303f ON
-3041 3094 L
-3099 309a NSM
-309b 309c ON
-309d 309e L
-30a1 30fa L
-30fb ON
-30fc 30fe L
-3105 312c L
-3131 318e L
-3190 31b7 L
-3200 321c L
-3220 3243 L
-3260 327b L
-327f 32b0 L
-32c0 32cb L
-32d0 32fe L
-3300 3376 L
-337b 33dd L
-33e0 33fe L
-3400 4db5 L
-4e00 9fa5 L
-a000 a48c L
-a490 a4a1 ON
-a4a4 a4b3 ON
-a4b5 a4c0 ON
-a4c2 a4c4 ON
-a4c6 ON
-ac00 d7a3 L
-d800 db7f L
-db80 dbff L
-dc00 dfff L
-e000 f8ff L
-f900 fa2d L
-fb00 fb06 L
-fb13 fb17 L
-fb1d R
-fb1e NSM
-fb1f fb28 R
-fb29 ET
-fb2a fb36 R
-fb38 fb3c R
-fb3e R
-fb40 fb41 R
-fb43 fb44 R
-fb46 fb4f R
-fb50 fbb1 AL
-fbd3 fd3d AL
-fd3e fd3f ON
-fd50 fd8f AL
-fd92 fdc7 AL
-fdf0 fdfb AL
-fe20 fe23 NSM
-fe30 fe44 ON
-fe49 fe4f ON
-fe50 CS
-fe51 ON
-fe52 CS
-fe54 ON
-fe55 CS
-fe56 fe5e ON
-fe5f ET
-fe60 fe61 ON
-fe62 fe63 ET
-fe64 fe66 ON
-fe68 ON
-fe69 fe6a ET
-fe6b ON
-fe70 fe72 AL
-fe74 AL
-fe76 fefc AL
-feff BN
-ff01 ff02 ON
-ff03 ff05 ET
-ff06 ff0a ON
-ff0b ET
-ff0c CS
-ff0d ET
-ff0e CS
-ff0f ES
-ff10 ff19 EN
-ff1a CS
-ff1b ff20 ON
-ff21 ff3a L
-ff3b ff40 ON
-ff41 ff5a L
-ff5b ff5e ON
-ff61 ff65 ON
-ff66 ffbe L
-ffc2 ffc7 L
-ffca ffcf L
-ffd2 ffd7 L
-ffda ffdc L
-ffe0 ffe1 ET
-ffe2 ffe4 ON
-ffe5 ffe6 ET
-ffe8 ffee ON
-fff9 fffb BN
-fffc fffd ON
-f0000 ffffd L
-100000 10fffd L
-END
diff --git a/contrib/perl5/lib/unicode/Block.pl b/contrib/perl5/lib/unicode/Block.pl
deleted file mode 100644
index 2b5bfce..0000000
--- a/contrib/perl5/lib/unicode/Block.pl
+++ /dev/null
@@ -1,93 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 007F Basic Latin
-0080 00FF Latin-1 Supplement
-0100 017F Latin Extended-A
-0180 024F Latin Extended-B
-0250 02AF IPA Extensions
-02B0 02FF Spacing Modifier Letters
-0300 036F Combining Diacritical Marks
-0370 03FF Greek
-0400 04FF Cyrillic
-0530 058F Armenian
-0590 05FF Hebrew
-0600 06FF Arabic
-0700 074F Syriac
-0780 07BF Thaana
-0900 097F Devanagari
-0980 09FF Bengali
-0A00 0A7F Gurmukhi
-0A80 0AFF Gujarati
-0B00 0B7F Oriya
-0B80 0BFF Tamil
-0C00 0C7F Telugu
-0C80 0CFF Kannada
-0D00 0D7F Malayalam
-0D80 0DFF Sinhala
-0E00 0E7F Thai
-0E80 0EFF Lao
-0F00 0FFF Tibetan
-1000 109F Myanmar
-10A0 10FF Georgian
-1100 11FF Hangul Jamo
-1200 137F Ethiopic
-13A0 13FF Cherokee
-1400 167F Unified Canadian Aboriginal Syllabics
-1680 169F Ogham
-16A0 16FF Runic
-1780 17FF Khmer
-1800 18AF Mongolian
-1E00 1EFF Latin Extended Additional
-1F00 1FFF Greek Extended
-2000 206F General Punctuation
-2070 209F Superscripts and Subscripts
-20A0 20CF Currency Symbols
-20D0 20FF Combining Marks for Symbols
-2100 214F Letterlike Symbols
-2150 218F Number Forms
-2190 21FF Arrows
-2200 22FF Mathematical Operators
-2300 23FF Miscellaneous Technical
-2400 243F Control Pictures
-2440 245F Optical Character Recognition
-2460 24FF Enclosed Alphanumerics
-2500 257F Box Drawing
-2580 259F Block Elements
-25A0 25FF Geometric Shapes
-2600 26FF Miscellaneous Symbols
-2700 27BF Dingbats
-2800 28FF Braille Patterns
-2E80 2EFF CJK Radicals Supplement
-2F00 2FDF Kangxi Radicals
-2FF0 2FFF Ideographic Description Characters
-3000 303F CJK Symbols and Punctuation
-3040 309F Hiragana
-30A0 30FF Katakana
-3100 312F Bopomofo
-3130 318F Hangul Compatibility Jamo
-3190 319F Kanbun
-31A0 31BF Bopomofo Extended
-3200 32FF Enclosed CJK Letters and Months
-3300 33FF CJK Compatibility
-3400 4DB5 CJK Unified Ideographs Extension A
-4E00 9FFF CJK Unified Ideographs
-A000 A48F Yi Syllables
-A490 A4CF Yi Radicals
-AC00 D7A3 Hangul Syllables
-D800 DB7F High Surrogates
-DB80 DBFF High Private Use Surrogates
-DC00 DFFF Low Surrogates
-E000 F8FF Private Use
-F900 FAFF CJK Compatibility Ideographs
-FB00 FB4F Alphabetic Presentation Forms
-FB50 FDFF Arabic Presentation Forms-A
-FE20 FE2F Combining Half Marks
-FE30 FE4F CJK Compatibility Forms
-FE50 FE6F Small Form Variants
-FE70 FEFE Arabic Presentation Forms-B
-FEFF FEFF Specials
-FF00 FFEF Halfwidth and Fullwidth Forms
-FFF0 FFFD Specials
-END
diff --git a/contrib/perl5/lib/unicode/Blocks.txt b/contrib/perl5/lib/unicode/Blocks.txt
deleted file mode 100644
index 15c8957..0000000
--- a/contrib/perl5/lib/unicode/Blocks.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-# Start Code; End Code; Block Name
-0000; 007F; Basic Latin
-0080; 00FF; Latin-1 Supplement
-0100; 017F; Latin Extended-A
-0180; 024F; Latin Extended-B
-0250; 02AF; IPA Extensions
-02B0; 02FF; Spacing Modifier Letters
-0300; 036F; Combining Diacritical Marks
-0370; 03FF; Greek
-0400; 04FF; Cyrillic
-0530; 058F; Armenian
-0590; 05FF; Hebrew
-0600; 06FF; Arabic
-0700; 074F; Syriac
-0780; 07BF; Thaana
-0900; 097F; Devanagari
-0980; 09FF; Bengali
-0A00; 0A7F; Gurmukhi
-0A80; 0AFF; Gujarati
-0B00; 0B7F; Oriya
-0B80; 0BFF; Tamil
-0C00; 0C7F; Telugu
-0C80; 0CFF; Kannada
-0D00; 0D7F; Malayalam
-0D80; 0DFF; Sinhala
-0E00; 0E7F; Thai
-0E80; 0EFF; Lao
-0F00; 0FFF; Tibetan
-1000; 109F; Myanmar
-10A0; 10FF; Georgian
-1100; 11FF; Hangul Jamo
-1200; 137F; Ethiopic
-13A0; 13FF; Cherokee
-1400; 167F; Unified Canadian Aboriginal Syllabics
-1680; 169F; Ogham
-16A0; 16FF; Runic
-1780; 17FF; Khmer
-1800; 18AF; Mongolian
-1E00; 1EFF; Latin Extended Additional
-1F00; 1FFF; Greek Extended
-2000; 206F; General Punctuation
-2070; 209F; Superscripts and Subscripts
-20A0; 20CF; Currency Symbols
-20D0; 20FF; Combining Marks for Symbols
-2100; 214F; Letterlike Symbols
-2150; 218F; Number Forms
-2190; 21FF; Arrows
-2200; 22FF; Mathematical Operators
-2300; 23FF; Miscellaneous Technical
-2400; 243F; Control Pictures
-2440; 245F; Optical Character Recognition
-2460; 24FF; Enclosed Alphanumerics
-2500; 257F; Box Drawing
-2580; 259F; Block Elements
-25A0; 25FF; Geometric Shapes
-2600; 26FF; Miscellaneous Symbols
-2700; 27BF; Dingbats
-2800; 28FF; Braille Patterns
-2E80; 2EFF; CJK Radicals Supplement
-2F00; 2FDF; Kangxi Radicals
-2FF0; 2FFF; Ideographic Description Characters
-3000; 303F; CJK Symbols and Punctuation
-3040; 309F; Hiragana
-30A0; 30FF; Katakana
-3100; 312F; Bopomofo
-3130; 318F; Hangul Compatibility Jamo
-3190; 319F; Kanbun
-31A0; 31BF; Bopomofo Extended
-3200; 32FF; Enclosed CJK Letters and Months
-3300; 33FF; CJK Compatibility
-3400; 4DB5; CJK Unified Ideographs Extension A
-4E00; 9FFF; CJK Unified Ideographs
-A000; A48F; Yi Syllables
-A490; A4CF; Yi Radicals
-AC00; D7A3; Hangul Syllables
-D800; DB7F; High Surrogates
-DB80; DBFF; High Private Use Surrogates
-DC00; DFFF; Low Surrogates
-E000; F8FF; Private Use
-F900; FAFF; CJK Compatibility Ideographs
-FB00; FB4F; Alphabetic Presentation Forms
-FB50; FDFF; Arabic Presentation Forms-A
-FE20; FE2F; Combining Half Marks
-FE30; FE4F; CJK Compatibility Forms
-FE50; FE6F; Small Form Variants
-FE70; FEFE; Arabic Presentation Forms-B
-FEFF; FEFF; Specials
-FF00; FFEF; Halfwidth and Fullwidth Forms
-FFF0; FFFD; Specials
-
diff --git a/contrib/perl5/lib/unicode/CaseFold.txt b/contrib/perl5/lib/unicode/CaseFold.txt
deleted file mode 100644
index 6529c41..0000000
--- a/contrib/perl5/lib/unicode/CaseFold.txt
+++ /dev/null
@@ -1,821 +0,0 @@
-# CaseFolding-2.txt
-#
-# Case Folding Properties
-#
-# This file is a supplement to the UnicodeData file.
-# It provides a case folding mapping generated from the Unicode Character Database.
-# If all characters are mapped according to this mapping, then
-# case differences (according to UnicodeData.txt and SpecialCasing.txt)
-# are eliminated.
-#
-# For information on case folding, see
-# UTR #21 Case Mappings, at http://www.unicode.org/unicode/reports/tr21/
-#
-# These are informative character properties.
-#
-# Send comments to mark@unicode.org
-#
-# ================================================================================
-# Format
-# ================================================================================
-# The entries in this file are in the following machine-readable format:
-#
-# <code>; <status>; <mapping>; # <name>
-#
-# The status is:
-# L (for Lowercase) if the case mapping matches the standard 1-1 lowercase mapping
-# E (for exception) if it does not.
-#
-# The mapping may consist of multiple characters.
-# If so, they are separated by spaces.
-#
-# =================================================================
-
-0041; L; 0061; #LATIN CAPITAL LETTER A
-0042; L; 0062; #LATIN CAPITAL LETTER B
-0043; L; 0063; #LATIN CAPITAL LETTER C
-0044; L; 0064; #LATIN CAPITAL LETTER D
-0045; L; 0065; #LATIN CAPITAL LETTER E
-0046; L; 0066; #LATIN CAPITAL LETTER F
-0047; L; 0067; #LATIN CAPITAL LETTER G
-0048; L; 0068; #LATIN CAPITAL LETTER H
-0049; L; 0069; #LATIN CAPITAL LETTER I
-004A; L; 006A; #LATIN CAPITAL LETTER J
-004B; L; 006B; #LATIN CAPITAL LETTER K
-004C; L; 006C; #LATIN CAPITAL LETTER L
-004D; L; 006D; #LATIN CAPITAL LETTER M
-004E; L; 006E; #LATIN CAPITAL LETTER N
-004F; L; 006F; #LATIN CAPITAL LETTER O
-0050; L; 0070; #LATIN CAPITAL LETTER P
-0051; L; 0071; #LATIN CAPITAL LETTER Q
-0052; L; 0072; #LATIN CAPITAL LETTER R
-0053; L; 0073; #LATIN CAPITAL LETTER S
-0054; L; 0074; #LATIN CAPITAL LETTER T
-0055; L; 0075; #LATIN CAPITAL LETTER U
-0056; L; 0076; #LATIN CAPITAL LETTER V
-0057; L; 0077; #LATIN CAPITAL LETTER W
-0058; L; 0078; #LATIN CAPITAL LETTER X
-0059; L; 0079; #LATIN CAPITAL LETTER Y
-005A; L; 007A; #LATIN CAPITAL LETTER Z
-00B5; E; 03BC; #MICRO SIGN
-00C0; L; 00E0; #LATIN CAPITAL LETTER A WITH GRAVE
-00C1; L; 00E1; #LATIN CAPITAL LETTER A WITH ACUTE
-00C2; L; 00E2; #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-00C3; L; 00E3; #LATIN CAPITAL LETTER A WITH TILDE
-00C4; L; 00E4; #LATIN CAPITAL LETTER A WITH DIAERESIS
-00C5; L; 00E5; #LATIN CAPITAL LETTER A WITH RING ABOVE
-00C6; L; 00E6; #LATIN CAPITAL LETTER AE
-00C7; L; 00E7; #LATIN CAPITAL LETTER C WITH CEDILLA
-00C8; L; 00E8; #LATIN CAPITAL LETTER E WITH GRAVE
-00C9; L; 00E9; #LATIN CAPITAL LETTER E WITH ACUTE
-00CA; L; 00EA; #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-00CB; L; 00EB; #LATIN CAPITAL LETTER E WITH DIAERESIS
-00CC; L; 00EC; #LATIN CAPITAL LETTER I WITH GRAVE
-00CD; L; 00ED; #LATIN CAPITAL LETTER I WITH ACUTE
-00CE; L; 00EE; #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-00CF; L; 00EF; #LATIN CAPITAL LETTER I WITH DIAERESIS
-00D0; L; 00F0; #LATIN CAPITAL LETTER ETH
-00D1; L; 00F1; #LATIN CAPITAL LETTER N WITH TILDE
-00D2; L; 00F2; #LATIN CAPITAL LETTER O WITH GRAVE
-00D3; L; 00F3; #LATIN CAPITAL LETTER O WITH ACUTE
-00D4; L; 00F4; #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-00D5; L; 00F5; #LATIN CAPITAL LETTER O WITH TILDE
-00D6; L; 00F6; #LATIN CAPITAL LETTER O WITH DIAERESIS
-00D8; L; 00F8; #LATIN CAPITAL LETTER O WITH STROKE
-00D9; L; 00F9; #LATIN CAPITAL LETTER U WITH GRAVE
-00DA; L; 00FA; #LATIN CAPITAL LETTER U WITH ACUTE
-00DB; L; 00FB; #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-00DC; L; 00FC; #LATIN CAPITAL LETTER U WITH DIAERESIS
-00DD; L; 00FD; #LATIN CAPITAL LETTER Y WITH ACUTE
-00DE; L; 00FE; #LATIN CAPITAL LETTER THORN
-00DF; E; 0073 0073; #LATIN SMALL LETTER SHARP S
-0100; L; 0101; #LATIN CAPITAL LETTER A WITH MACRON
-0102; L; 0103; #LATIN CAPITAL LETTER A WITH BREVE
-0104; L; 0105; #LATIN CAPITAL LETTER A WITH OGONEK
-0106; L; 0107; #LATIN CAPITAL LETTER C WITH ACUTE
-0108; L; 0109; #LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-010A; L; 010B; #LATIN CAPITAL LETTER C WITH DOT ABOVE
-010C; L; 010D; #LATIN CAPITAL LETTER C WITH CARON
-010E; L; 010F; #LATIN CAPITAL LETTER D WITH CARON
-0110; L; 0111; #LATIN CAPITAL LETTER D WITH STROKE
-0112; L; 0113; #LATIN CAPITAL LETTER E WITH MACRON
-0114; L; 0115; #LATIN CAPITAL LETTER E WITH BREVE
-0116; L; 0117; #LATIN CAPITAL LETTER E WITH DOT ABOVE
-0118; L; 0119; #LATIN CAPITAL LETTER E WITH OGONEK
-011A; L; 011B; #LATIN CAPITAL LETTER E WITH CARON
-011C; L; 011D; #LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-011E; L; 011F; #LATIN CAPITAL LETTER G WITH BREVE
-0120; L; 0121; #LATIN CAPITAL LETTER G WITH DOT ABOVE
-0122; L; 0123; #LATIN CAPITAL LETTER G WITH CEDILLA
-0124; L; 0125; #LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0126; L; 0127; #LATIN CAPITAL LETTER H WITH STROKE
-0128; L; 0129; #LATIN CAPITAL LETTER I WITH TILDE
-012A; L; 012B; #LATIN CAPITAL LETTER I WITH MACRON
-012C; L; 012D; #LATIN CAPITAL LETTER I WITH BREVE
-012E; L; 012F; #LATIN CAPITAL LETTER I WITH OGONEK
-0130; L; 0069; #LATIN CAPITAL LETTER I WITH DOT ABOVE
-0131; E; 0069; #LATIN SMALL LETTER DOTLESS I
-0132; L; 0133; #LATIN CAPITAL LIGATURE IJ
-0134; L; 0135; #LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-0136; L; 0137; #LATIN CAPITAL LETTER K WITH CEDILLA
-0139; L; 013A; #LATIN CAPITAL LETTER L WITH ACUTE
-013B; L; 013C; #LATIN CAPITAL LETTER L WITH CEDILLA
-013D; L; 013E; #LATIN CAPITAL LETTER L WITH CARON
-013F; L; 0140; #LATIN CAPITAL LETTER L WITH MIDDLE DOT
-0141; L; 0142; #LATIN CAPITAL LETTER L WITH STROKE
-0143; L; 0144; #LATIN CAPITAL LETTER N WITH ACUTE
-0145; L; 0146; #LATIN CAPITAL LETTER N WITH CEDILLA
-0147; L; 0148; #LATIN CAPITAL LETTER N WITH CARON
-0149; E; 02BC 006E; #LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-014A; L; 014B; #LATIN CAPITAL LETTER ENG
-014C; L; 014D; #LATIN CAPITAL LETTER O WITH MACRON
-014E; L; 014F; #LATIN CAPITAL LETTER O WITH BREVE
-0150; L; 0151; #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0152; L; 0153; #LATIN CAPITAL LIGATURE OE
-0154; L; 0155; #LATIN CAPITAL LETTER R WITH ACUTE
-0156; L; 0157; #LATIN CAPITAL LETTER R WITH CEDILLA
-0158; L; 0159; #LATIN CAPITAL LETTER R WITH CARON
-015A; L; 015B; #LATIN CAPITAL LETTER S WITH ACUTE
-015C; L; 015D; #LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-015E; L; 015F; #LATIN CAPITAL LETTER S WITH CEDILLA
-0160; L; 0161; #LATIN CAPITAL LETTER S WITH CARON
-0162; L; 0163; #LATIN CAPITAL LETTER T WITH CEDILLA
-0164; L; 0165; #LATIN CAPITAL LETTER T WITH CARON
-0166; L; 0167; #LATIN CAPITAL LETTER T WITH STROKE
-0168; L; 0169; #LATIN CAPITAL LETTER U WITH TILDE
-016A; L; 016B; #LATIN CAPITAL LETTER U WITH MACRON
-016C; L; 016D; #LATIN CAPITAL LETTER U WITH BREVE
-016E; L; 016F; #LATIN CAPITAL LETTER U WITH RING ABOVE
-0170; L; 0171; #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0172; L; 0173; #LATIN CAPITAL LETTER U WITH OGONEK
-0174; L; 0175; #LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-0176; L; 0177; #LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-0178; L; 00FF; #LATIN CAPITAL LETTER Y WITH DIAERESIS
-0179; L; 017A; #LATIN CAPITAL LETTER Z WITH ACUTE
-017B; L; 017C; #LATIN CAPITAL LETTER Z WITH DOT ABOVE
-017D; L; 017E; #LATIN CAPITAL LETTER Z WITH CARON
-017F; E; 0073; #LATIN SMALL LETTER LONG S
-0181; L; 0253; #LATIN CAPITAL LETTER B WITH HOOK
-0182; L; 0183; #LATIN CAPITAL LETTER B WITH TOPBAR
-0184; L; 0185; #LATIN CAPITAL LETTER TONE SIX
-0186; L; 0254; #LATIN CAPITAL LETTER OPEN O
-0187; L; 0188; #LATIN CAPITAL LETTER C WITH HOOK
-0189; L; 0256; #LATIN CAPITAL LETTER AFRICAN D
-018A; L; 0257; #LATIN CAPITAL LETTER D WITH HOOK
-018B; L; 018C; #LATIN CAPITAL LETTER D WITH TOPBAR
-018E; L; 01DD; #LATIN CAPITAL LETTER REVERSED E
-018F; L; 0259; #LATIN CAPITAL LETTER SCHWA
-0190; L; 025B; #LATIN CAPITAL LETTER OPEN E
-0191; L; 0192; #LATIN CAPITAL LETTER F WITH HOOK
-0193; L; 0260; #LATIN CAPITAL LETTER G WITH HOOK
-0194; L; 0263; #LATIN CAPITAL LETTER GAMMA
-0196; L; 0269; #LATIN CAPITAL LETTER IOTA
-0197; L; 0268; #LATIN CAPITAL LETTER I WITH STROKE
-0198; L; 0199; #LATIN CAPITAL LETTER K WITH HOOK
-019C; L; 026F; #LATIN CAPITAL LETTER TURNED M
-019D; L; 0272; #LATIN CAPITAL LETTER N WITH LEFT HOOK
-019F; L; 0275; #LATIN CAPITAL LETTER O WITH MIDDLE TILDE
-01A0; L; 01A1; #LATIN CAPITAL LETTER O WITH HORN
-01A2; L; 01A3; #LATIN CAPITAL LETTER OI
-01A4; L; 01A5; #LATIN CAPITAL LETTER P WITH HOOK
-01A6; L; 0280; #LATIN LETTER YR
-01A7; L; 01A8; #LATIN CAPITAL LETTER TONE TWO
-01A9; L; 0283; #LATIN CAPITAL LETTER ESH
-01AC; L; 01AD; #LATIN CAPITAL LETTER T WITH HOOK
-01AE; L; 0288; #LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
-01AF; L; 01B0; #LATIN CAPITAL LETTER U WITH HORN
-01B1; L; 028A; #LATIN CAPITAL LETTER UPSILON
-01B2; L; 028B; #LATIN CAPITAL LETTER V WITH HOOK
-01B3; L; 01B4; #LATIN CAPITAL LETTER Y WITH HOOK
-01B5; L; 01B6; #LATIN CAPITAL LETTER Z WITH STROKE
-01B7; L; 0292; #LATIN CAPITAL LETTER EZH
-01B8; L; 01B9; #LATIN CAPITAL LETTER EZH REVERSED
-01BC; L; 01BD; #LATIN CAPITAL LETTER TONE FIVE
-01C4; L; 01C6; #LATIN CAPITAL LETTER DZ WITH CARON
-01C5; L; 01C6; #LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
-01C7; L; 01C9; #LATIN CAPITAL LETTER LJ
-01C8; L; 01C9; #LATIN CAPITAL LETTER L WITH SMALL LETTER J
-01CA; L; 01CC; #LATIN CAPITAL LETTER NJ
-01CB; L; 01CC; #LATIN CAPITAL LETTER N WITH SMALL LETTER J
-01CD; L; 01CE; #LATIN CAPITAL LETTER A WITH CARON
-01CF; L; 01D0; #LATIN CAPITAL LETTER I WITH CARON
-01D1; L; 01D2; #LATIN CAPITAL LETTER O WITH CARON
-01D3; L; 01D4; #LATIN CAPITAL LETTER U WITH CARON
-01D5; L; 01D6; #LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01D7; L; 01D8; #LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D9; L; 01DA; #LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-01DB; L; 01DC; #LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01DE; L; 01DF; #LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-01E0; L; 01E1; #LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
-01E2; L; 01E3; #LATIN CAPITAL LETTER AE WITH MACRON
-01E4; L; 01E5; #LATIN CAPITAL LETTER G WITH STROKE
-01E6; L; 01E7; #LATIN CAPITAL LETTER G WITH CARON
-01E8; L; 01E9; #LATIN CAPITAL LETTER K WITH CARON
-01EA; L; 01EB; #LATIN CAPITAL LETTER O WITH OGONEK
-01EC; L; 01ED; #LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
-01EE; L; 01EF; #LATIN CAPITAL LETTER EZH WITH CARON
-01F0; E; 006A 030C; #LATIN SMALL LETTER J WITH CARON
-01F1; L; 01F3; #LATIN CAPITAL LETTER DZ
-01F2; L; 01F3; #LATIN CAPITAL LETTER D WITH SMALL LETTER Z
-01F4; L; 01F5; #LATIN CAPITAL LETTER G WITH ACUTE
-01F6; L; 0195; #LATIN CAPITAL LETTER HWAIR
-01F7; L; 01BF; #LATIN CAPITAL LETTER WYNN
-01F8; L; 01F9; #LATIN CAPITAL LETTER N WITH GRAVE
-01FA; L; 01FB; #LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-01FC; L; 01FD; #LATIN CAPITAL LETTER AE WITH ACUTE
-01FE; L; 01FF; #LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-0200; L; 0201; #LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
-0202; L; 0203; #LATIN CAPITAL LETTER A WITH INVERTED BREVE
-0204; L; 0205; #LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
-0206; L; 0207; #LATIN CAPITAL LETTER E WITH INVERTED BREVE
-0208; L; 0209; #LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
-020A; L; 020B; #LATIN CAPITAL LETTER I WITH INVERTED BREVE
-020C; L; 020D; #LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
-020E; L; 020F; #LATIN CAPITAL LETTER O WITH INVERTED BREVE
-0210; L; 0211; #LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
-0212; L; 0213; #LATIN CAPITAL LETTER R WITH INVERTED BREVE
-0214; L; 0215; #LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
-0216; L; 0217; #LATIN CAPITAL LETTER U WITH INVERTED BREVE
-0218; L; 0219; #LATIN CAPITAL LETTER S WITH COMMA BELOW
-021A; L; 021B; #LATIN CAPITAL LETTER T WITH COMMA BELOW
-021C; L; 021D; #LATIN CAPITAL LETTER YOGH
-021E; L; 021F; #LATIN CAPITAL LETTER H WITH CARON
-0222; L; 0223; #LATIN CAPITAL LETTER OU
-0224; L; 0225; #LATIN CAPITAL LETTER Z WITH HOOK
-0226; L; 0227; #LATIN CAPITAL LETTER A WITH DOT ABOVE
-0228; L; 0229; #LATIN CAPITAL LETTER E WITH CEDILLA
-022A; L; 022B; #LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-022C; L; 022D; #LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-022E; L; 022F; #LATIN CAPITAL LETTER O WITH DOT ABOVE
-0230; L; 0231; #LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
-0232; L; 0233; #LATIN CAPITAL LETTER Y WITH MACRON
-0345; E; 03B9; #COMBINING GREEK YPOGEGRAMMENI
-0386; L; 03AC; #GREEK CAPITAL LETTER ALPHA WITH TONOS
-0388; L; 03AD; #GREEK CAPITAL LETTER EPSILON WITH TONOS
-0389; L; 03AE; #GREEK CAPITAL LETTER ETA WITH TONOS
-038A; L; 03AF; #GREEK CAPITAL LETTER IOTA WITH TONOS
-038C; L; 03CC; #GREEK CAPITAL LETTER OMICRON WITH TONOS
-038E; L; 03CD; #GREEK CAPITAL LETTER UPSILON WITH TONOS
-038F; L; 03CE; #GREEK CAPITAL LETTER OMEGA WITH TONOS
-0390; E; 03B9 0308 0301; #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0391; L; 03B1; #GREEK CAPITAL LETTER ALPHA
-0392; L; 03B2; #GREEK CAPITAL LETTER BETA
-0393; L; 03B3; #GREEK CAPITAL LETTER GAMMA
-0394; L; 03B4; #GREEK CAPITAL LETTER DELTA
-0395; L; 03B5; #GREEK CAPITAL LETTER EPSILON
-0396; L; 03B6; #GREEK CAPITAL LETTER ZETA
-0397; L; 03B7; #GREEK CAPITAL LETTER ETA
-0398; L; 03B8; #GREEK CAPITAL LETTER THETA
-0399; L; 03B9; #GREEK CAPITAL LETTER IOTA
-039A; L; 03BA; #GREEK CAPITAL LETTER KAPPA
-039B; L; 03BB; #GREEK CAPITAL LETTER LAMDA
-039C; L; 03BC; #GREEK CAPITAL LETTER MU
-039D; L; 03BD; #GREEK CAPITAL LETTER NU
-039E; L; 03BE; #GREEK CAPITAL LETTER XI
-039F; L; 03BF; #GREEK CAPITAL LETTER OMICRON
-03A0; L; 03C0; #GREEK CAPITAL LETTER PI
-03A1; L; 03C1; #GREEK CAPITAL LETTER RHO
-03A3; E; 03C2; #GREEK CAPITAL LETTER SIGMA
-03A4; L; 03C4; #GREEK CAPITAL LETTER TAU
-03A5; L; 03C5; #GREEK CAPITAL LETTER UPSILON
-03A6; L; 03C6; #GREEK CAPITAL LETTER PHI
-03A7; L; 03C7; #GREEK CAPITAL LETTER CHI
-03A8; L; 03C8; #GREEK CAPITAL LETTER PSI
-03A9; L; 03C9; #GREEK CAPITAL LETTER OMEGA
-03AA; L; 03CA; #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-03AB; L; 03CB; #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-03B0; E; 03C5 0308 0301; #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-03C2; L; 03C2; #GREEK SMALL LETTER FINAL SIGMA
-03C3; E; 03C2; #GREEK SMALL LETTER SIGMA
-03D0; E; 03B2; #GREEK BETA SYMBOL
-03D1; E; 03B8; #GREEK THETA SYMBOL
-03D5; E; 03C6; #GREEK PHI SYMBOL
-03D6; E; 03C0; #GREEK PI SYMBOL
-03DA; L; 03DB; #GREEK LETTER STIGMA
-03DC; L; 03DD; #GREEK LETTER DIGAMMA
-03DE; L; 03DF; #GREEK LETTER KOPPA
-03E0; L; 03E1; #GREEK LETTER SAMPI
-03E2; L; 03E3; #COPTIC CAPITAL LETTER SHEI
-03E4; L; 03E5; #COPTIC CAPITAL LETTER FEI
-03E6; L; 03E7; #COPTIC CAPITAL LETTER KHEI
-03E8; L; 03E9; #COPTIC CAPITAL LETTER HORI
-03EA; L; 03EB; #COPTIC CAPITAL LETTER GANGIA
-03EC; L; 03ED; #COPTIC CAPITAL LETTER SHIMA
-03EE; L; 03EF; #COPTIC CAPITAL LETTER DEI
-03F0; E; 03BA; #GREEK KAPPA SYMBOL
-03F1; E; 03C1; #GREEK RHO SYMBOL
-03F2; E; 03C2; #GREEK LUNATE SIGMA SYMBOL
-0400; L; 0450; #CYRILLIC CAPITAL LETTER IE WITH GRAVE
-0401; L; 0451; #CYRILLIC CAPITAL LETTER IO
-0402; L; 0452; #CYRILLIC CAPITAL LETTER DJE
-0403; L; 0453; #CYRILLIC CAPITAL LETTER GJE
-0404; L; 0454; #CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0405; L; 0455; #CYRILLIC CAPITAL LETTER DZE
-0406; L; 0456; #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0407; L; 0457; #CYRILLIC CAPITAL LETTER YI
-0408; L; 0458; #CYRILLIC CAPITAL LETTER JE
-0409; L; 0459; #CYRILLIC CAPITAL LETTER LJE
-040A; L; 045A; #CYRILLIC CAPITAL LETTER NJE
-040B; L; 045B; #CYRILLIC CAPITAL LETTER TSHE
-040C; L; 045C; #CYRILLIC CAPITAL LETTER KJE
-040D; L; 045D; #CYRILLIC CAPITAL LETTER I WITH GRAVE
-040E; L; 045E; #CYRILLIC CAPITAL LETTER SHORT U
-040F; L; 045F; #CYRILLIC CAPITAL LETTER DZHE
-0410; L; 0430; #CYRILLIC CAPITAL LETTER A
-0411; L; 0431; #CYRILLIC CAPITAL LETTER BE
-0412; L; 0432; #CYRILLIC CAPITAL LETTER VE
-0413; L; 0433; #CYRILLIC CAPITAL LETTER GHE
-0414; L; 0434; #CYRILLIC CAPITAL LETTER DE
-0415; L; 0435; #CYRILLIC CAPITAL LETTER IE
-0416; L; 0436; #CYRILLIC CAPITAL LETTER ZHE
-0417; L; 0437; #CYRILLIC CAPITAL LETTER ZE
-0418; L; 0438; #CYRILLIC CAPITAL LETTER I
-0419; L; 0439; #CYRILLIC CAPITAL LETTER SHORT I
-041A; L; 043A; #CYRILLIC CAPITAL LETTER KA
-041B; L; 043B; #CYRILLIC CAPITAL LETTER EL
-041C; L; 043C; #CYRILLIC CAPITAL LETTER EM
-041D; L; 043D; #CYRILLIC CAPITAL LETTER EN
-041E; L; 043E; #CYRILLIC CAPITAL LETTER O
-041F; L; 043F; #CYRILLIC CAPITAL LETTER PE
-0420; L; 0440; #CYRILLIC CAPITAL LETTER ER
-0421; L; 0441; #CYRILLIC CAPITAL LETTER ES
-0422; L; 0442; #CYRILLIC CAPITAL LETTER TE
-0423; L; 0443; #CYRILLIC CAPITAL LETTER U
-0424; L; 0444; #CYRILLIC CAPITAL LETTER EF
-0425; L; 0445; #CYRILLIC CAPITAL LETTER HA
-0426; L; 0446; #CYRILLIC CAPITAL LETTER TSE
-0427; L; 0447; #CYRILLIC CAPITAL LETTER CHE
-0428; L; 0448; #CYRILLIC CAPITAL LETTER SHA
-0429; L; 0449; #CYRILLIC CAPITAL LETTER SHCHA
-042A; L; 044A; #CYRILLIC CAPITAL LETTER HARD SIGN
-042B; L; 044B; #CYRILLIC CAPITAL LETTER YERU
-042C; L; 044C; #CYRILLIC CAPITAL LETTER SOFT SIGN
-042D; L; 044D; #CYRILLIC CAPITAL LETTER E
-042E; L; 044E; #CYRILLIC CAPITAL LETTER YU
-042F; L; 044F; #CYRILLIC CAPITAL LETTER YA
-0460; L; 0461; #CYRILLIC CAPITAL LETTER OMEGA
-0462; L; 0463; #CYRILLIC CAPITAL LETTER YAT
-0464; L; 0465; #CYRILLIC CAPITAL LETTER IOTIFIED E
-0466; L; 0467; #CYRILLIC CAPITAL LETTER LITTLE YUS
-0468; L; 0469; #CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-046A; L; 046B; #CYRILLIC CAPITAL LETTER BIG YUS
-046C; L; 046D; #CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-046E; L; 046F; #CYRILLIC CAPITAL LETTER KSI
-0470; L; 0471; #CYRILLIC CAPITAL LETTER PSI
-0472; L; 0473; #CYRILLIC CAPITAL LETTER FITA
-0474; L; 0475; #CYRILLIC CAPITAL LETTER IZHITSA
-0476; L; 0477; #CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0478; L; 0479; #CYRILLIC CAPITAL LETTER UK
-047A; L; 047B; #CYRILLIC CAPITAL LETTER ROUND OMEGA
-047C; L; 047D; #CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
-047E; L; 047F; #CYRILLIC CAPITAL LETTER OT
-0480; L; 0481; #CYRILLIC CAPITAL LETTER KOPPA
-048C; L; 048D; #CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-048E; L; 048F; #CYRILLIC CAPITAL LETTER ER WITH TICK
-0490; L; 0491; #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0492; L; 0493; #CYRILLIC CAPITAL LETTER GHE WITH STROKE
-0494; L; 0495; #CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
-0496; L; 0497; #CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-0498; L; 0499; #CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-049A; L; 049B; #CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-049C; L; 049D; #CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-049E; L; 049F; #CYRILLIC CAPITAL LETTER KA WITH STROKE
-04A0; L; 04A1; #CYRILLIC CAPITAL LETTER BASHKIR KA
-04A2; L; 04A3; #CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-04A4; L; 04A5; #CYRILLIC CAPITAL LIGATURE EN GHE
-04A6; L; 04A7; #CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
-04A8; L; 04A9; #CYRILLIC CAPITAL LETTER ABKHASIAN HA
-04AA; L; 04AB; #CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-04AC; L; 04AD; #CYRILLIC CAPITAL LETTER TE WITH DESCENDER
-04AE; L; 04AF; #CYRILLIC CAPITAL LETTER STRAIGHT U
-04B0; L; 04B1; #CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-04B2; L; 04B3; #CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-04B4; L; 04B5; #CYRILLIC CAPITAL LIGATURE TE TSE
-04B6; L; 04B7; #CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-04B8; L; 04B9; #CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-04BA; L; 04BB; #CYRILLIC CAPITAL LETTER SHHA
-04BC; L; 04BD; #CYRILLIC CAPITAL LETTER ABKHASIAN CHE
-04BE; L; 04BF; #CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
-04C1; L; 04C2; #CYRILLIC CAPITAL LETTER ZHE WITH BREVE
-04C3; L; 04C4; #CYRILLIC CAPITAL LETTER KA WITH HOOK
-04C7; L; 04C8; #CYRILLIC CAPITAL LETTER EN WITH HOOK
-04CB; L; 04CC; #CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04D0; L; 04D1; #CYRILLIC CAPITAL LETTER A WITH BREVE
-04D2; L; 04D3; #CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04D4; L; 04D5; #CYRILLIC CAPITAL LIGATURE A IE
-04D6; L; 04D7; #CYRILLIC CAPITAL LETTER IE WITH BREVE
-04D8; L; 04D9; #CYRILLIC CAPITAL LETTER SCHWA
-04DA; L; 04DB; #CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04DC; L; 04DD; #CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DE; L; 04DF; #CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04E0; L; 04E1; #CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-04E2; L; 04E3; #CYRILLIC CAPITAL LETTER I WITH MACRON
-04E4; L; 04E5; #CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-04E6; L; 04E7; #CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04E8; L; 04E9; #CYRILLIC CAPITAL LETTER BARRED O
-04EA; L; 04EB; #CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-04EC; L; 04ED; #CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-04EE; L; 04EF; #CYRILLIC CAPITAL LETTER U WITH MACRON
-04F0; L; 04F1; #CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F2; L; 04F3; #CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F4; L; 04F5; #CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F8; L; 04F9; #CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-0531; L; 0561; #ARMENIAN CAPITAL LETTER AYB
-0532; L; 0562; #ARMENIAN CAPITAL LETTER BEN
-0533; L; 0563; #ARMENIAN CAPITAL LETTER GIM
-0534; L; 0564; #ARMENIAN CAPITAL LETTER DA
-0535; L; 0565; #ARMENIAN CAPITAL LETTER ECH
-0536; L; 0566; #ARMENIAN CAPITAL LETTER ZA
-0537; L; 0567; #ARMENIAN CAPITAL LETTER EH
-0538; L; 0568; #ARMENIAN CAPITAL LETTER ET
-0539; L; 0569; #ARMENIAN CAPITAL LETTER TO
-053A; L; 056A; #ARMENIAN CAPITAL LETTER ZHE
-053B; L; 056B; #ARMENIAN CAPITAL LETTER INI
-053C; L; 056C; #ARMENIAN CAPITAL LETTER LIWN
-053D; L; 056D; #ARMENIAN CAPITAL LETTER XEH
-053E; L; 056E; #ARMENIAN CAPITAL LETTER CA
-053F; L; 056F; #ARMENIAN CAPITAL LETTER KEN
-0540; L; 0570; #ARMENIAN CAPITAL LETTER HO
-0541; L; 0571; #ARMENIAN CAPITAL LETTER JA
-0542; L; 0572; #ARMENIAN CAPITAL LETTER GHAD
-0543; L; 0573; #ARMENIAN CAPITAL LETTER CHEH
-0544; L; 0574; #ARMENIAN CAPITAL LETTER MEN
-0545; L; 0575; #ARMENIAN CAPITAL LETTER YI
-0546; L; 0576; #ARMENIAN CAPITAL LETTER NOW
-0547; L; 0577; #ARMENIAN CAPITAL LETTER SHA
-0548; L; 0578; #ARMENIAN CAPITAL LETTER VO
-0549; L; 0579; #ARMENIAN CAPITAL LETTER CHA
-054A; L; 057A; #ARMENIAN CAPITAL LETTER PEH
-054B; L; 057B; #ARMENIAN CAPITAL LETTER JHEH
-054C; L; 057C; #ARMENIAN CAPITAL LETTER RA
-054D; L; 057D; #ARMENIAN CAPITAL LETTER SEH
-054E; L; 057E; #ARMENIAN CAPITAL LETTER VEW
-054F; L; 057F; #ARMENIAN CAPITAL LETTER TIWN
-0550; L; 0580; #ARMENIAN CAPITAL LETTER REH
-0551; L; 0581; #ARMENIAN CAPITAL LETTER CO
-0552; L; 0582; #ARMENIAN CAPITAL LETTER YIWN
-0553; L; 0583; #ARMENIAN CAPITAL LETTER PIWR
-0554; L; 0584; #ARMENIAN CAPITAL LETTER KEH
-0555; L; 0585; #ARMENIAN CAPITAL LETTER OH
-0556; L; 0586; #ARMENIAN CAPITAL LETTER FEH
-0587; E; 0565 0582; #ARMENIAN SMALL LIGATURE ECH YIWN
-1E00; L; 1E01; #LATIN CAPITAL LETTER A WITH RING BELOW
-1E02; L; 1E03; #LATIN CAPITAL LETTER B WITH DOT ABOVE
-1E04; L; 1E05; #LATIN CAPITAL LETTER B WITH DOT BELOW
-1E06; L; 1E07; #LATIN CAPITAL LETTER B WITH LINE BELOW
-1E08; L; 1E09; #LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
-1E0A; L; 1E0B; #LATIN CAPITAL LETTER D WITH DOT ABOVE
-1E0C; L; 1E0D; #LATIN CAPITAL LETTER D WITH DOT BELOW
-1E0E; L; 1E0F; #LATIN CAPITAL LETTER D WITH LINE BELOW
-1E10; L; 1E11; #LATIN CAPITAL LETTER D WITH CEDILLA
-1E12; L; 1E13; #LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
-1E14; L; 1E15; #LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
-1E16; L; 1E17; #LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
-1E18; L; 1E19; #LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
-1E1A; L; 1E1B; #LATIN CAPITAL LETTER E WITH TILDE BELOW
-1E1C; L; 1E1D; #LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
-1E1E; L; 1E1F; #LATIN CAPITAL LETTER F WITH DOT ABOVE
-1E20; L; 1E21; #LATIN CAPITAL LETTER G WITH MACRON
-1E22; L; 1E23; #LATIN CAPITAL LETTER H WITH DOT ABOVE
-1E24; L; 1E25; #LATIN CAPITAL LETTER H WITH DOT BELOW
-1E26; L; 1E27; #LATIN CAPITAL LETTER H WITH DIAERESIS
-1E28; L; 1E29; #LATIN CAPITAL LETTER H WITH CEDILLA
-1E2A; L; 1E2B; #LATIN CAPITAL LETTER H WITH BREVE BELOW
-1E2C; L; 1E2D; #LATIN CAPITAL LETTER I WITH TILDE BELOW
-1E2E; L; 1E2F; #LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
-1E30; L; 1E31; #LATIN CAPITAL LETTER K WITH ACUTE
-1E32; L; 1E33; #LATIN CAPITAL LETTER K WITH DOT BELOW
-1E34; L; 1E35; #LATIN CAPITAL LETTER K WITH LINE BELOW
-1E36; L; 1E37; #LATIN CAPITAL LETTER L WITH DOT BELOW
-1E38; L; 1E39; #LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
-1E3A; L; 1E3B; #LATIN CAPITAL LETTER L WITH LINE BELOW
-1E3C; L; 1E3D; #LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
-1E3E; L; 1E3F; #LATIN CAPITAL LETTER M WITH ACUTE
-1E40; L; 1E41; #LATIN CAPITAL LETTER M WITH DOT ABOVE
-1E42; L; 1E43; #LATIN CAPITAL LETTER M WITH DOT BELOW
-1E44; L; 1E45; #LATIN CAPITAL LETTER N WITH DOT ABOVE
-1E46; L; 1E47; #LATIN CAPITAL LETTER N WITH DOT BELOW
-1E48; L; 1E49; #LATIN CAPITAL LETTER N WITH LINE BELOW
-1E4A; L; 1E4B; #LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
-1E4C; L; 1E4D; #LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-1E4E; L; 1E4F; #LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-1E50; L; 1E51; #LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
-1E52; L; 1E53; #LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
-1E54; L; 1E55; #LATIN CAPITAL LETTER P WITH ACUTE
-1E56; L; 1E57; #LATIN CAPITAL LETTER P WITH DOT ABOVE
-1E58; L; 1E59; #LATIN CAPITAL LETTER R WITH DOT ABOVE
-1E5A; L; 1E5B; #LATIN CAPITAL LETTER R WITH DOT BELOW
-1E5C; L; 1E5D; #LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
-1E5E; L; 1E5F; #LATIN CAPITAL LETTER R WITH LINE BELOW
-1E60; L; 1E61; #LATIN CAPITAL LETTER S WITH DOT ABOVE
-1E62; L; 1E63; #LATIN CAPITAL LETTER S WITH DOT BELOW
-1E64; L; 1E65; #LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
-1E66; L; 1E67; #LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
-1E68; L; 1E69; #LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E6A; L; 1E6B; #LATIN CAPITAL LETTER T WITH DOT ABOVE
-1E6C; L; 1E6D; #LATIN CAPITAL LETTER T WITH DOT BELOW
-1E6E; L; 1E6F; #LATIN CAPITAL LETTER T WITH LINE BELOW
-1E70; L; 1E71; #LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
-1E72; L; 1E73; #LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
-1E74; L; 1E75; #LATIN CAPITAL LETTER U WITH TILDE BELOW
-1E76; L; 1E77; #LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
-1E78; L; 1E79; #LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
-1E7A; L; 1E7B; #LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
-1E7C; L; 1E7D; #LATIN CAPITAL LETTER V WITH TILDE
-1E7E; L; 1E7F; #LATIN CAPITAL LETTER V WITH DOT BELOW
-1E80; L; 1E81; #LATIN CAPITAL LETTER W WITH GRAVE
-1E82; L; 1E83; #LATIN CAPITAL LETTER W WITH ACUTE
-1E84; L; 1E85; #LATIN CAPITAL LETTER W WITH DIAERESIS
-1E86; L; 1E87; #LATIN CAPITAL LETTER W WITH DOT ABOVE
-1E88; L; 1E89; #LATIN CAPITAL LETTER W WITH DOT BELOW
-1E8A; L; 1E8B; #LATIN CAPITAL LETTER X WITH DOT ABOVE
-1E8C; L; 1E8D; #LATIN CAPITAL LETTER X WITH DIAERESIS
-1E8E; L; 1E8F; #LATIN CAPITAL LETTER Y WITH DOT ABOVE
-1E90; L; 1E91; #LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
-1E92; L; 1E93; #LATIN CAPITAL LETTER Z WITH DOT BELOW
-1E94; L; 1E95; #LATIN CAPITAL LETTER Z WITH LINE BELOW
-1E96; E; 0068 0331; #LATIN SMALL LETTER H WITH LINE BELOW
-1E97; E; 0074 0308; #LATIN SMALL LETTER T WITH DIAERESIS
-1E98; E; 0077 030A; #LATIN SMALL LETTER W WITH RING ABOVE
-1E99; E; 0079 030A; #LATIN SMALL LETTER Y WITH RING ABOVE
-1E9A; E; 0061 02BE; #LATIN SMALL LETTER A WITH RIGHT HALF RING
-1E9B; E; 1E61; #LATIN SMALL LETTER LONG S WITH DOT ABOVE
-1EA0; L; 1EA1; #LATIN CAPITAL LETTER A WITH DOT BELOW
-1EA2; L; 1EA3; #LATIN CAPITAL LETTER A WITH HOOK ABOVE
-1EA4; L; 1EA5; #LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA6; L; 1EA7; #LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA8; L; 1EA9; #LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EAA; L; 1EAB; #LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAC; L; 1EAD; #LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAE; L; 1EAF; #LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1EB0; L; 1EB1; #LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1EB2; L; 1EB3; #LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-1EB4; L; 1EB5; #LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1EB6; L; 1EB7; #LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-1EB8; L; 1EB9; #LATIN CAPITAL LETTER E WITH DOT BELOW
-1EBA; L; 1EBB; #LATIN CAPITAL LETTER E WITH HOOK ABOVE
-1EBC; L; 1EBD; #LATIN CAPITAL LETTER E WITH TILDE
-1EBE; L; 1EBF; #LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC0; L; 1EC1; #LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC2; L; 1EC3; #LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC4; L; 1EC5; #LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC6; L; 1EC7; #LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC8; L; 1EC9; #LATIN CAPITAL LETTER I WITH HOOK ABOVE
-1ECA; L; 1ECB; #LATIN CAPITAL LETTER I WITH DOT BELOW
-1ECC; L; 1ECD; #LATIN CAPITAL LETTER O WITH DOT BELOW
-1ECE; L; 1ECF; #LATIN CAPITAL LETTER O WITH HOOK ABOVE
-1ED0; L; 1ED1; #LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED2; L; 1ED3; #LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED4; L; 1ED5; #LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED6; L; 1ED7; #LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED8; L; 1ED9; #LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1EDA; L; 1EDB; #LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-1EDC; L; 1EDD; #LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-1EDE; L; 1EDF; #LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-1EE0; L; 1EE1; #LATIN CAPITAL LETTER O WITH HORN AND TILDE
-1EE2; L; 1EE3; #LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-1EE4; L; 1EE5; #LATIN CAPITAL LETTER U WITH DOT BELOW
-1EE6; L; 1EE7; #LATIN CAPITAL LETTER U WITH HOOK ABOVE
-1EE8; L; 1EE9; #LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-1EEA; L; 1EEB; #LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-1EEC; L; 1EED; #LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-1EEE; L; 1EEF; #LATIN CAPITAL LETTER U WITH HORN AND TILDE
-1EF0; L; 1EF1; #LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-1EF2; L; 1EF3; #LATIN CAPITAL LETTER Y WITH GRAVE
-1EF4; L; 1EF5; #LATIN CAPITAL LETTER Y WITH DOT BELOW
-1EF6; L; 1EF7; #LATIN CAPITAL LETTER Y WITH HOOK ABOVE
-1EF8; L; 1EF9; #LATIN CAPITAL LETTER Y WITH TILDE
-1F08; L; 1F00; #GREEK CAPITAL LETTER ALPHA WITH PSILI
-1F09; L; 1F01; #GREEK CAPITAL LETTER ALPHA WITH DASIA
-1F0A; L; 1F02; #GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
-1F0B; L; 1F03; #GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
-1F0C; L; 1F04; #GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
-1F0D; L; 1F05; #GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
-1F0E; L; 1F06; #GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F0F; L; 1F07; #GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F18; L; 1F10; #GREEK CAPITAL LETTER EPSILON WITH PSILI
-1F19; L; 1F11; #GREEK CAPITAL LETTER EPSILON WITH DASIA
-1F1A; L; 1F12; #GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
-1F1B; L; 1F13; #GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
-1F1C; L; 1F14; #GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
-1F1D; L; 1F15; #GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
-1F28; L; 1F20; #GREEK CAPITAL LETTER ETA WITH PSILI
-1F29; L; 1F21; #GREEK CAPITAL LETTER ETA WITH DASIA
-1F2A; L; 1F22; #GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
-1F2B; L; 1F23; #GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
-1F2C; L; 1F24; #GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
-1F2D; L; 1F25; #GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
-1F2E; L; 1F26; #GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
-1F2F; L; 1F27; #GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
-1F38; L; 1F30; #GREEK CAPITAL LETTER IOTA WITH PSILI
-1F39; L; 1F31; #GREEK CAPITAL LETTER IOTA WITH DASIA
-1F3A; L; 1F32; #GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
-1F3B; L; 1F33; #GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
-1F3C; L; 1F34; #GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
-1F3D; L; 1F35; #GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
-1F3E; L; 1F36; #GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F3F; L; 1F37; #GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F48; L; 1F40; #GREEK CAPITAL LETTER OMICRON WITH PSILI
-1F49; L; 1F41; #GREEK CAPITAL LETTER OMICRON WITH DASIA
-1F4A; L; 1F42; #GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
-1F4B; L; 1F43; #GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
-1F4C; L; 1F44; #GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
-1F4D; L; 1F45; #GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
-1F50; E; 03C5 0313; #GREEK SMALL LETTER UPSILON WITH PSILI
-1F52; E; 03C5 0313 0300; #GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-1F54; E; 03C5 0313 0301; #GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-1F56; E; 03C5 0313 0342; #GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-1F59; L; 1F51; #GREEK CAPITAL LETTER UPSILON WITH DASIA
-1F5B; L; 1F53; #GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
-1F5D; L; 1F55; #GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
-1F5F; L; 1F57; #GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F68; L; 1F60; #GREEK CAPITAL LETTER OMEGA WITH PSILI
-1F69; L; 1F61; #GREEK CAPITAL LETTER OMEGA WITH DASIA
-1F6A; L; 1F62; #GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
-1F6B; L; 1F63; #GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
-1F6C; L; 1F64; #GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
-1F6D; L; 1F65; #GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
-1F6E; L; 1F66; #GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1F6F; L; 1F67; #GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F80; E; 1F00 03B9; #GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-1F81; E; 1F01 03B9; #GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-1F82; E; 1F02 03B9; #GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F83; E; 1F03 03B9; #GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F84; E; 1F04 03B9; #GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F85; E; 1F05 03B9; #GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F86; E; 1F06 03B9; #GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F87; E; 1F07 03B9; #GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F88; E; 1F00 03B9; #GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1F89; E; 1F01 03B9; #GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-1F8A; E; 1F02 03B9; #GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F8B; E; 1F03 03B9; #GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F8C; E; 1F04 03B9; #GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F8D; E; 1F05 03B9; #GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F8E; E; 1F06 03B9; #GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F8F; E; 1F07 03B9; #GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F90; E; 1F20 03B9; #GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-1F91; E; 1F21 03B9; #GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-1F92; E; 1F22 03B9; #GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F93; E; 1F23 03B9; #GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F94; E; 1F24 03B9; #GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F95; E; 1F25 03B9; #GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F96; E; 1F26 03B9; #GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F97; E; 1F27 03B9; #GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F98; E; 1F20 03B9; #GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1F99; E; 1F21 03B9; #GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-1F9A; E; 1F22 03B9; #GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F9B; E; 1F23 03B9; #GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F9C; E; 1F24 03B9; #GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F9D; E; 1F25 03B9; #GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F9E; E; 1F26 03B9; #GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F9F; E; 1F27 03B9; #GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FA0; E; 1F60 03B9; #GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-1FA1; E; 1F61 03B9; #GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-1FA2; E; 1F62 03B9; #GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1FA3; E; 1F63 03B9; #GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1FA4; E; 1F64 03B9; #GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1FA5; E; 1F65 03B9; #GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1FA6; E; 1F66 03B9; #GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1FA7; E; 1F67 03B9; #GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FA8; E; 1F60 03B9; #GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1FA9; E; 1F61 03B9; #GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-1FAA; E; 1F62 03B9; #GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1FAB; E; 1F63 03B9; #GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1FAC; E; 1F64 03B9; #GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1FAD; E; 1F65 03B9; #GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1FAE; E; 1F66 03B9; #GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1FAF; E; 1F67 03B9; #GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FB2; E; 1F70 03B9; #GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-1FB3; E; 03B1 03B9; #GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-1FB4; E; 03AC 03B9; #GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1FB6; E; 03B1 0342; #GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-1FB7; E; 03B1 0342 03B9; #GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FB8; L; 1FB0; #GREEK CAPITAL LETTER ALPHA WITH VRACHY
-1FB9; L; 1FB1; #GREEK CAPITAL LETTER ALPHA WITH MACRON
-1FBA; L; 1F70; #GREEK CAPITAL LETTER ALPHA WITH VARIA
-1FBB; L; 1F71; #GREEK CAPITAL LETTER ALPHA WITH OXIA
-1FBC; E; 03B1 03B9; #GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FBE; E; 03B9; #GREEK PROSGEGRAMMENI
-1FC2; E; 1F74 03B9; #GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-1FC3; E; 03B7 03B9; #GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-1FC4; E; 03AE 03B9; #GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1FC6; E; 03B7 0342; #GREEK SMALL LETTER ETA WITH PERISPOMENI
-1FC7; E; 03B7 0342 03B9; #GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FC8; L; 1F72; #GREEK CAPITAL LETTER EPSILON WITH VARIA
-1FC9; L; 1F73; #GREEK CAPITAL LETTER EPSILON WITH OXIA
-1FCA; L; 1F74; #GREEK CAPITAL LETTER ETA WITH VARIA
-1FCB; L; 1F75; #GREEK CAPITAL LETTER ETA WITH OXIA
-1FCC; E; 03B7 03B9; #GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FD2; E; 03B9 0308 0300; #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-1FD3; E; 03B9 0308 0301; #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD6; E; 03B9 0342; #GREEK SMALL LETTER IOTA WITH PERISPOMENI
-1FD7; E; 03B9 0308 0342; #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1FD8; L; 1FD0; #GREEK CAPITAL LETTER IOTA WITH VRACHY
-1FD9; L; 1FD1; #GREEK CAPITAL LETTER IOTA WITH MACRON
-1FDA; L; 1F76; #GREEK CAPITAL LETTER IOTA WITH VARIA
-1FDB; L; 1F77; #GREEK CAPITAL LETTER IOTA WITH OXIA
-1FE2; E; 03C5 0308 0300; #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-1FE3; E; 03C5 0308 0301; #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-1FE4; E; 03C1 0313; #GREEK SMALL LETTER RHO WITH PSILI
-1FE6; E; 03C5 0342; #GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-1FE7; E; 03C5 0308 0342; #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1FE8; L; 1FE0; #GREEK CAPITAL LETTER UPSILON WITH VRACHY
-1FE9; L; 1FE1; #GREEK CAPITAL LETTER UPSILON WITH MACRON
-1FEA; L; 1F7A; #GREEK CAPITAL LETTER UPSILON WITH VARIA
-1FEB; L; 1F7B; #GREEK CAPITAL LETTER UPSILON WITH OXIA
-1FEC; L; 1FE5; #GREEK CAPITAL LETTER RHO WITH DASIA
-1FF2; E; 1F7C 03B9; #GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-1FF3; E; 03C9 03B9; #GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-1FF4; E; 03CE 03B9; #GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-1FF6; E; 03C9 0342; #GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-1FF7; E; 03C9 0342 03B9; #GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FF8; L; 1F78; #GREEK CAPITAL LETTER OMICRON WITH VARIA
-1FF9; L; 1F79; #GREEK CAPITAL LETTER OMICRON WITH OXIA
-1FFA; L; 1F7C; #GREEK CAPITAL LETTER OMEGA WITH VARIA
-1FFB; L; 1F7D; #GREEK CAPITAL LETTER OMEGA WITH OXIA
-1FFC; E; 03C9 03B9; #GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-2126; L; 03C9; #OHM SIGN
-212A; L; 006B; #KELVIN SIGN
-212B; L; 00E5; #ANGSTROM SIGN
-2160; L; 2170; #ROMAN NUMERAL ONE
-2161; L; 2171; #ROMAN NUMERAL TWO
-2162; L; 2172; #ROMAN NUMERAL THREE
-2163; L; 2173; #ROMAN NUMERAL FOUR
-2164; L; 2174; #ROMAN NUMERAL FIVE
-2165; L; 2175; #ROMAN NUMERAL SIX
-2166; L; 2176; #ROMAN NUMERAL SEVEN
-2167; L; 2177; #ROMAN NUMERAL EIGHT
-2168; L; 2178; #ROMAN NUMERAL NINE
-2169; L; 2179; #ROMAN NUMERAL TEN
-216A; L; 217A; #ROMAN NUMERAL ELEVEN
-216B; L; 217B; #ROMAN NUMERAL TWELVE
-216C; L; 217C; #ROMAN NUMERAL FIFTY
-216D; L; 217D; #ROMAN NUMERAL ONE HUNDRED
-216E; L; 217E; #ROMAN NUMERAL FIVE HUNDRED
-216F; L; 217F; #ROMAN NUMERAL ONE THOUSAND
-24B6; L; 24D0; #CIRCLED LATIN CAPITAL LETTER A
-24B7; L; 24D1; #CIRCLED LATIN CAPITAL LETTER B
-24B8; L; 24D2; #CIRCLED LATIN CAPITAL LETTER C
-24B9; L; 24D3; #CIRCLED LATIN CAPITAL LETTER D
-24BA; L; 24D4; #CIRCLED LATIN CAPITAL LETTER E
-24BB; L; 24D5; #CIRCLED LATIN CAPITAL LETTER F
-24BC; L; 24D6; #CIRCLED LATIN CAPITAL LETTER G
-24BD; L; 24D7; #CIRCLED LATIN CAPITAL LETTER H
-24BE; L; 24D8; #CIRCLED LATIN CAPITAL LETTER I
-24BF; L; 24D9; #CIRCLED LATIN CAPITAL LETTER J
-24C0; L; 24DA; #CIRCLED LATIN CAPITAL LETTER K
-24C1; L; 24DB; #CIRCLED LATIN CAPITAL LETTER L
-24C2; L; 24DC; #CIRCLED LATIN CAPITAL LETTER M
-24C3; L; 24DD; #CIRCLED LATIN CAPITAL LETTER N
-24C4; L; 24DE; #CIRCLED LATIN CAPITAL LETTER O
-24C5; L; 24DF; #CIRCLED LATIN CAPITAL LETTER P
-24C6; L; 24E0; #CIRCLED LATIN CAPITAL LETTER Q
-24C7; L; 24E1; #CIRCLED LATIN CAPITAL LETTER R
-24C8; L; 24E2; #CIRCLED LATIN CAPITAL LETTER S
-24C9; L; 24E3; #CIRCLED LATIN CAPITAL LETTER T
-24CA; L; 24E4; #CIRCLED LATIN CAPITAL LETTER U
-24CB; L; 24E5; #CIRCLED LATIN CAPITAL LETTER V
-24CC; L; 24E6; #CIRCLED LATIN CAPITAL LETTER W
-24CD; L; 24E7; #CIRCLED LATIN CAPITAL LETTER X
-24CE; L; 24E8; #CIRCLED LATIN CAPITAL LETTER Y
-24CF; L; 24E9; #CIRCLED LATIN CAPITAL LETTER Z
-FB00; E; 0066 0066; #LATIN SMALL LIGATURE FF
-FB01; E; 0066 0069; #LATIN SMALL LIGATURE FI
-FB02; E; 0066 006C; #LATIN SMALL LIGATURE FL
-FB03; E; 0066 0066 0069; #LATIN SMALL LIGATURE FFI
-FB04; E; 0066 0066 006C; #LATIN SMALL LIGATURE FFL
-FB05; E; 0073 0074; #LATIN SMALL LIGATURE LONG S T
-FB06; E; 0073 0074; #LATIN SMALL LIGATURE ST
-FB13; E; 0574 0576; #ARMENIAN SMALL LIGATURE MEN NOW
-FB14; E; 0574 0565; #ARMENIAN SMALL LIGATURE MEN ECH
-FB15; E; 0574 056B; #ARMENIAN SMALL LIGATURE MEN INI
-FB16; E; 057E 0576; #ARMENIAN SMALL LIGATURE VEW NOW
-FB17; E; 0574 056D; #ARMENIAN SMALL LIGATURE MEN XEH
-FF21; L; FF41; #FULLWIDTH LATIN CAPITAL LETTER A
-FF22; L; FF42; #FULLWIDTH LATIN CAPITAL LETTER B
-FF23; L; FF43; #FULLWIDTH LATIN CAPITAL LETTER C
-FF24; L; FF44; #FULLWIDTH LATIN CAPITAL LETTER D
-FF25; L; FF45; #FULLWIDTH LATIN CAPITAL LETTER E
-FF26; L; FF46; #FULLWIDTH LATIN CAPITAL LETTER F
-FF27; L; FF47; #FULLWIDTH LATIN CAPITAL LETTER G
-FF28; L; FF48; #FULLWIDTH LATIN CAPITAL LETTER H
-FF29; L; FF49; #FULLWIDTH LATIN CAPITAL LETTER I
-FF2A; L; FF4A; #FULLWIDTH LATIN CAPITAL LETTER J
-FF2B; L; FF4B; #FULLWIDTH LATIN CAPITAL LETTER K
-FF2C; L; FF4C; #FULLWIDTH LATIN CAPITAL LETTER L
-FF2D; L; FF4D; #FULLWIDTH LATIN CAPITAL LETTER M
-FF2E; L; FF4E; #FULLWIDTH LATIN CAPITAL LETTER N
-FF2F; L; FF4F; #FULLWIDTH LATIN CAPITAL LETTER O
-FF30; L; FF50; #FULLWIDTH LATIN CAPITAL LETTER P
-FF31; L; FF51; #FULLWIDTH LATIN CAPITAL LETTER Q
-FF32; L; FF52; #FULLWIDTH LATIN CAPITAL LETTER R
-FF33; L; FF53; #FULLWIDTH LATIN CAPITAL LETTER S
-FF34; L; FF54; #FULLWIDTH LATIN CAPITAL LETTER T
-FF35; L; FF55; #FULLWIDTH LATIN CAPITAL LETTER U
-FF36; L; FF56; #FULLWIDTH LATIN CAPITAL LETTER V
-FF37; L; FF57; #FULLWIDTH LATIN CAPITAL LETTER W
-FF38; L; FF58; #FULLWIDTH LATIN CAPITAL LETTER X
-FF39; L; FF59; #FULLWIDTH LATIN CAPITAL LETTER Y
-FF3A; L; FF5A; #FULLWIDTH LATIN CAPITAL LETTER Z
-
-
diff --git a/contrib/perl5/lib/unicode/Category.pl b/contrib/perl5/lib/unicode/Category.pl
deleted file mode 100644
index 9c81514..0000000
--- a/contrib/perl5/lib/unicode/Category.pl
+++ /dev/null
@@ -1,1508 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 001f Cc
-0020 Zs
-0021 0023 Po
-0024 Sc
-0025 0027 Po
-0028 Ps
-0029 Pe
-002a Po
-002b Sm
-002c Po
-002d Pd
-002e 002f Po
-0030 0039 Nd
-003a 003b Po
-003c 003e Sm
-003f 0040 Po
-0041 005a Lu
-005b Ps
-005c Po
-005d Pe
-005e Sk
-005f Pc
-0060 Sk
-0061 007a Ll
-007b Ps
-007c Sm
-007d Pe
-007e Sm
-007f 009f Cc
-00a0 Zs
-00a1 Po
-00a2 00a5 Sc
-00a6 00a7 So
-00a8 Sk
-00a9 So
-00aa Ll
-00ab Pi
-00ac Sm
-00ad Pd
-00ae So
-00af Sk
-00b0 So
-00b1 Sm
-00b2 00b3 No
-00b4 Sk
-00b5 Ll
-00b6 So
-00b7 Po
-00b8 Sk
-00b9 No
-00ba Ll
-00bb Pf
-00bc 00be No
-00bf Po
-00c0 00d6 Lu
-00d7 Sm
-00d8 00de Lu
-00df 00f6 Ll
-00f7 Sm
-00f8 00ff Ll
-0100 Lu
-0101 Ll
-0102 Lu
-0103 Ll
-0104 Lu
-0105 Ll
-0106 Lu
-0107 Ll
-0108 Lu
-0109 Ll
-010a Lu
-010b Ll
-010c Lu
-010d Ll
-010e Lu
-010f Ll
-0110 Lu
-0111 Ll
-0112 Lu
-0113 Ll
-0114 Lu
-0115 Ll
-0116 Lu
-0117 Ll
-0118 Lu
-0119 Ll
-011a Lu
-011b Ll
-011c Lu
-011d Ll
-011e Lu
-011f Ll
-0120 Lu
-0121 Ll
-0122 Lu
-0123 Ll
-0124 Lu
-0125 Ll
-0126 Lu
-0127 Ll
-0128 Lu
-0129 Ll
-012a Lu
-012b Ll
-012c Lu
-012d Ll
-012e Lu
-012f Ll
-0130 Lu
-0131 Ll
-0132 Lu
-0133 Ll
-0134 Lu
-0135 Ll
-0136 Lu
-0137 0138 Ll
-0139 Lu
-013a Ll
-013b Lu
-013c Ll
-013d Lu
-013e Ll
-013f Lu
-0140 Ll
-0141 Lu
-0142 Ll
-0143 Lu
-0144 Ll
-0145 Lu
-0146 Ll
-0147 Lu
-0148 0149 Ll
-014a Lu
-014b Ll
-014c Lu
-014d Ll
-014e Lu
-014f Ll
-0150 Lu
-0151 Ll
-0152 Lu
-0153 Ll
-0154 Lu
-0155 Ll
-0156 Lu
-0157 Ll
-0158 Lu
-0159 Ll
-015a Lu
-015b Ll
-015c Lu
-015d Ll
-015e Lu
-015f Ll
-0160 Lu
-0161 Ll
-0162 Lu
-0163 Ll
-0164 Lu
-0165 Ll
-0166 Lu
-0167 Ll
-0168 Lu
-0169 Ll
-016a Lu
-016b Ll
-016c Lu
-016d Ll
-016e Lu
-016f Ll
-0170 Lu
-0171 Ll
-0172 Lu
-0173 Ll
-0174 Lu
-0175 Ll
-0176 Lu
-0177 Ll
-0178 0179 Lu
-017a Ll
-017b Lu
-017c Ll
-017d Lu
-017e 0180 Ll
-0181 0182 Lu
-0183 Ll
-0184 Lu
-0185 Ll
-0186 0187 Lu
-0188 Ll
-0189 018b Lu
-018c 018d Ll
-018e 0191 Lu
-0192 Ll
-0193 0194 Lu
-0195 Ll
-0196 0198 Lu
-0199 019b Ll
-019c 019d Lu
-019e Ll
-019f 01a0 Lu
-01a1 Ll
-01a2 Lu
-01a3 Ll
-01a4 Lu
-01a5 Ll
-01a6 01a7 Lu
-01a8 Ll
-01a9 Lu
-01aa 01ab Ll
-01ac Lu
-01ad Ll
-01ae 01af Lu
-01b0 Ll
-01b1 01b3 Lu
-01b4 Ll
-01b5 Lu
-01b6 Ll
-01b7 01b8 Lu
-01b9 01ba Ll
-01bb Lo
-01bc Lu
-01bd 01bf Ll
-01c0 01c3 Lo
-01c4 Lu
-01c5 Lt
-01c6 Ll
-01c7 Lu
-01c8 Lt
-01c9 Ll
-01ca Lu
-01cb Lt
-01cc Ll
-01cd Lu
-01ce Ll
-01cf Lu
-01d0 Ll
-01d1 Lu
-01d2 Ll
-01d3 Lu
-01d4 Ll
-01d5 Lu
-01d6 Ll
-01d7 Lu
-01d8 Ll
-01d9 Lu
-01da Ll
-01db Lu
-01dc 01dd Ll
-01de Lu
-01df Ll
-01e0 Lu
-01e1 Ll
-01e2 Lu
-01e3 Ll
-01e4 Lu
-01e5 Ll
-01e6 Lu
-01e7 Ll
-01e8 Lu
-01e9 Ll
-01ea Lu
-01eb Ll
-01ec Lu
-01ed Ll
-01ee Lu
-01ef 01f0 Ll
-01f1 Lu
-01f2 Lt
-01f3 Ll
-01f4 Lu
-01f5 Ll
-01f6 01f8 Lu
-01f9 Ll
-01fa Lu
-01fb Ll
-01fc Lu
-01fd Ll
-01fe Lu
-01ff Ll
-0200 Lu
-0201 Ll
-0202 Lu
-0203 Ll
-0204 Lu
-0205 Ll
-0206 Lu
-0207 Ll
-0208 Lu
-0209 Ll
-020a Lu
-020b Ll
-020c Lu
-020d Ll
-020e Lu
-020f Ll
-0210 Lu
-0211 Ll
-0212 Lu
-0213 Ll
-0214 Lu
-0215 Ll
-0216 Lu
-0217 Ll
-0218 Lu
-0219 Ll
-021a Lu
-021b Ll
-021c Lu
-021d Ll
-021e Lu
-021f Ll
-0222 Lu
-0223 Ll
-0224 Lu
-0225 Ll
-0226 Lu
-0227 Ll
-0228 Lu
-0229 Ll
-022a Lu
-022b Ll
-022c Lu
-022d Ll
-022e Lu
-022f Ll
-0230 Lu
-0231 Ll
-0232 Lu
-0233 Ll
-0250 02ad Ll
-02b0 02b8 Lm
-02b9 02ba Sk
-02bb 02c1 Lm
-02c2 02cf Sk
-02d0 02d1 Lm
-02d2 02df Sk
-02e0 02e4 Lm
-02e5 02ed Sk
-02ee Lm
-0300 034e Mn
-0360 0362 Mn
-0374 0375 Sk
-037a Lm
-037e Po
-0384 0385 Sk
-0386 Lu
-0387 Po
-0388 038a Lu
-038c Lu
-038e 038f Lu
-0390 Ll
-0391 03a1 Lu
-03a3 03ab Lu
-03ac 03ce Ll
-03d0 03d1 Ll
-03d2 03d4 Lu
-03d5 03d7 Ll
-03da Lu
-03db Ll
-03dc Lu
-03dd Ll
-03de Lu
-03df Ll
-03e0 Lu
-03e1 Ll
-03e2 Lu
-03e3 Ll
-03e4 Lu
-03e5 Ll
-03e6 Lu
-03e7 Ll
-03e8 Lu
-03e9 Ll
-03ea Lu
-03eb Ll
-03ec Lu
-03ed Ll
-03ee Lu
-03ef 03f3 Ll
-0400 042f Lu
-0430 045f Ll
-0460 Lu
-0461 Ll
-0462 Lu
-0463 Ll
-0464 Lu
-0465 Ll
-0466 Lu
-0467 Ll
-0468 Lu
-0469 Ll
-046a Lu
-046b Ll
-046c Lu
-046d Ll
-046e Lu
-046f Ll
-0470 Lu
-0471 Ll
-0472 Lu
-0473 Ll
-0474 Lu
-0475 Ll
-0476 Lu
-0477 Ll
-0478 Lu
-0479 Ll
-047a Lu
-047b Ll
-047c Lu
-047d Ll
-047e Lu
-047f Ll
-0480 Lu
-0481 Ll
-0482 So
-0483 0486 Mn
-0488 0489 Me
-048c Lu
-048d Ll
-048e Lu
-048f Ll
-0490 Lu
-0491 Ll
-0492 Lu
-0493 Ll
-0494 Lu
-0495 Ll
-0496 Lu
-0497 Ll
-0498 Lu
-0499 Ll
-049a Lu
-049b Ll
-049c Lu
-049d Ll
-049e Lu
-049f Ll
-04a0 Lu
-04a1 Ll
-04a2 Lu
-04a3 Ll
-04a4 Lu
-04a5 Ll
-04a6 Lu
-04a7 Ll
-04a8 Lu
-04a9 Ll
-04aa Lu
-04ab Ll
-04ac Lu
-04ad Ll
-04ae Lu
-04af Ll
-04b0 Lu
-04b1 Ll
-04b2 Lu
-04b3 Ll
-04b4 Lu
-04b5 Ll
-04b6 Lu
-04b7 Ll
-04b8 Lu
-04b9 Ll
-04ba Lu
-04bb Ll
-04bc Lu
-04bd Ll
-04be Lu
-04bf Ll
-04c0 04c1 Lu
-04c2 Ll
-04c3 Lu
-04c4 Ll
-04c7 Lu
-04c8 Ll
-04cb Lu
-04cc Ll
-04d0 Lu
-04d1 Ll
-04d2 Lu
-04d3 Ll
-04d4 Lu
-04d5 Ll
-04d6 Lu
-04d7 Ll
-04d8 Lu
-04d9 Ll
-04da Lu
-04db Ll
-04dc Lu
-04dd Ll
-04de Lu
-04df Ll
-04e0 Lu
-04e1 Ll
-04e2 Lu
-04e3 Ll
-04e4 Lu
-04e5 Ll
-04e6 Lu
-04e7 Ll
-04e8 Lu
-04e9 Ll
-04ea Lu
-04eb Ll
-04ec Lu
-04ed Ll
-04ee Lu
-04ef Ll
-04f0 Lu
-04f1 Ll
-04f2 Lu
-04f3 Ll
-04f4 Lu
-04f5 Ll
-04f8 Lu
-04f9 Ll
-0531 0556 Lu
-0559 Lm
-055a 055f Po
-0561 0587 Ll
-0589 Po
-058a Pd
-0591 05a1 Mn
-05a3 05b9 Mn
-05bb 05bd Mn
-05be Po
-05bf Mn
-05c0 Po
-05c1 05c2 Mn
-05c3 Po
-05c4 Mn
-05d0 05ea Lo
-05f0 05f2 Lo
-05f3 05f4 Po
-060c Po
-061b Po
-061f Po
-0621 063a Lo
-0640 Lm
-0641 064a Lo
-064b 0655 Mn
-0660 0669 Nd
-066a 066d Po
-0670 Mn
-0671 06d3 Lo
-06d4 Po
-06d5 Lo
-06d6 06dc Mn
-06dd 06de Me
-06df 06e4 Mn
-06e5 06e6 Lm
-06e7 06e8 Mn
-06e9 So
-06ea 06ed Mn
-06f0 06f9 Nd
-06fa 06fc Lo
-06fd 06fe So
-0700 070d Po
-070f Cf
-0710 Lo
-0711 Mn
-0712 072c Lo
-0730 074a Mn
-0780 07a5 Lo
-07a6 07b0 Mn
-0901 0902 Mn
-0903 Mc
-0905 0939 Lo
-093c Mn
-093d Lo
-093e 0940 Mc
-0941 0948 Mn
-0949 094c Mc
-094d Mn
-0950 Lo
-0951 0954 Mn
-0958 0961 Lo
-0962 0963 Mn
-0964 0965 Po
-0966 096f Nd
-0970 Po
-0981 Mn
-0982 0983 Mc
-0985 098c Lo
-098f 0990 Lo
-0993 09a8 Lo
-09aa 09b0 Lo
-09b2 Lo
-09b6 09b9 Lo
-09bc Mn
-09be 09c0 Mc
-09c1 09c4 Mn
-09c7 09c8 Mc
-09cb 09cc Mc
-09cd Mn
-09d7 Mc
-09dc 09dd Lo
-09df 09e1 Lo
-09e2 09e3 Mn
-09e6 09ef Nd
-09f0 09f1 Lo
-09f2 09f3 Sc
-09f4 09f9 No
-09fa So
-0a02 Mn
-0a05 0a0a Lo
-0a0f 0a10 Lo
-0a13 0a28 Lo
-0a2a 0a30 Lo
-0a32 0a33 Lo
-0a35 0a36 Lo
-0a38 0a39 Lo
-0a3c Mn
-0a3e 0a40 Mc
-0a41 0a42 Mn
-0a47 0a48 Mn
-0a4b 0a4d Mn
-0a59 0a5c Lo
-0a5e Lo
-0a66 0a6f Nd
-0a70 0a71 Mn
-0a72 0a74 Lo
-0a81 0a82 Mn
-0a83 Mc
-0a85 0a8b Lo
-0a8d Lo
-0a8f 0a91 Lo
-0a93 0aa8 Lo
-0aaa 0ab0 Lo
-0ab2 0ab3 Lo
-0ab5 0ab9 Lo
-0abc Mn
-0abd Lo
-0abe 0ac0 Mc
-0ac1 0ac5 Mn
-0ac7 0ac8 Mn
-0ac9 Mc
-0acb 0acc Mc
-0acd Mn
-0ad0 Lo
-0ae0 Lo
-0ae6 0aef Nd
-0b01 Mn
-0b02 0b03 Mc
-0b05 0b0c Lo
-0b0f 0b10 Lo
-0b13 0b28 Lo
-0b2a 0b30 Lo
-0b32 0b33 Lo
-0b36 0b39 Lo
-0b3c Mn
-0b3d Lo
-0b3e Mc
-0b3f Mn
-0b40 Mc
-0b41 0b43 Mn
-0b47 0b48 Mc
-0b4b 0b4c Mc
-0b4d Mn
-0b56 Mn
-0b57 Mc
-0b5c 0b5d Lo
-0b5f 0b61 Lo
-0b66 0b6f Nd
-0b70 So
-0b82 Mn
-0b83 Mc
-0b85 0b8a Lo
-0b8e 0b90 Lo
-0b92 0b95 Lo
-0b99 0b9a Lo
-0b9c Lo
-0b9e 0b9f Lo
-0ba3 0ba4 Lo
-0ba8 0baa Lo
-0bae 0bb5 Lo
-0bb7 0bb9 Lo
-0bbe 0bbf Mc
-0bc0 Mn
-0bc1 0bc2 Mc
-0bc6 0bc8 Mc
-0bca 0bcc Mc
-0bcd Mn
-0bd7 Mc
-0be7 0bef Nd
-0bf0 0bf2 No
-0c01 0c03 Mc
-0c05 0c0c Lo
-0c0e 0c10 Lo
-0c12 0c28 Lo
-0c2a 0c33 Lo
-0c35 0c39 Lo
-0c3e 0c40 Mn
-0c41 0c44 Mc
-0c46 0c48 Mn
-0c4a 0c4d Mn
-0c55 0c56 Mn
-0c60 0c61 Lo
-0c66 0c6f Nd
-0c82 0c83 Mc
-0c85 0c8c Lo
-0c8e 0c90 Lo
-0c92 0ca8 Lo
-0caa 0cb3 Lo
-0cb5 0cb9 Lo
-0cbe Mc
-0cbf Mn
-0cc0 0cc4 Mc
-0cc6 Mn
-0cc7 0cc8 Mc
-0cca 0ccb Mc
-0ccc 0ccd Mn
-0cd5 0cd6 Mc
-0cde Lo
-0ce0 0ce1 Lo
-0ce6 0cef Nd
-0d02 0d03 Mc
-0d05 0d0c Lo
-0d0e 0d10 Lo
-0d12 0d28 Lo
-0d2a 0d39 Lo
-0d3e 0d40 Mc
-0d41 0d43 Mn
-0d46 0d48 Mc
-0d4a 0d4c Mc
-0d4d Mn
-0d57 Mc
-0d60 0d61 Lo
-0d66 0d6f Nd
-0d82 0d83 Mc
-0d85 0d96 Lo
-0d9a 0db1 Lo
-0db3 0dbb Lo
-0dbd Lo
-0dc0 0dc6 Lo
-0dca Mn
-0dcf 0dd1 Mc
-0dd2 0dd4 Mn
-0dd6 Mn
-0dd8 0ddf Mc
-0df2 0df3 Mc
-0df4 Po
-0e01 0e30 Lo
-0e31 Mn
-0e32 0e33 Lo
-0e34 0e3a Mn
-0e3f Sc
-0e40 0e45 Lo
-0e46 Lm
-0e47 0e4e Mn
-0e4f Po
-0e50 0e59 Nd
-0e5a 0e5b Po
-0e81 0e82 Lo
-0e84 Lo
-0e87 0e88 Lo
-0e8a Lo
-0e8d Lo
-0e94 0e97 Lo
-0e99 0e9f Lo
-0ea1 0ea3 Lo
-0ea5 Lo
-0ea7 Lo
-0eaa 0eab Lo
-0ead 0eb0 Lo
-0eb1 Mn
-0eb2 0eb3 Lo
-0eb4 0eb9 Mn
-0ebb 0ebc Mn
-0ebd Lo
-0ec0 0ec4 Lo
-0ec6 Lm
-0ec8 0ecd Mn
-0ed0 0ed9 Nd
-0edc 0edd Lo
-0f00 Lo
-0f01 0f03 So
-0f04 0f12 Po
-0f13 0f17 So
-0f18 0f19 Mn
-0f1a 0f1f So
-0f20 0f29 Nd
-0f2a 0f33 No
-0f34 So
-0f35 Mn
-0f36 So
-0f37 Mn
-0f38 So
-0f39 Mn
-0f3a Ps
-0f3b Pe
-0f3c Ps
-0f3d Pe
-0f3e 0f3f Mc
-0f40 0f47 Lo
-0f49 0f6a Lo
-0f71 0f7e Mn
-0f7f Mc
-0f80 0f84 Mn
-0f85 Po
-0f86 0f87 Mn
-0f88 0f8b Lo
-0f90 0f97 Mn
-0f99 0fbc Mn
-0fbe 0fc5 So
-0fc6 Mn
-0fc7 0fcc So
-0fcf So
-1000 1021 Lo
-1023 1027 Lo
-1029 102a Lo
-102c Mc
-102d 1030 Mn
-1031 Mc
-1032 Mn
-1036 1037 Mn
-1038 Mc
-1039 Mn
-1040 1049 Nd
-104a 104f Po
-1050 1055 Lo
-1056 1057 Mc
-1058 1059 Mn
-10a0 10c5 Lu
-10d0 10f6 Lo
-10fb Po
-1100 1159 Lo
-115f 11a2 Lo
-11a8 11f9 Lo
-1200 1206 Lo
-1208 1246 Lo
-1248 Lo
-124a 124d Lo
-1250 1256 Lo
-1258 Lo
-125a 125d Lo
-1260 1286 Lo
-1288 Lo
-128a 128d Lo
-1290 12ae Lo
-12b0 Lo
-12b2 12b5 Lo
-12b8 12be Lo
-12c0 Lo
-12c2 12c5 Lo
-12c8 12ce Lo
-12d0 12d6 Lo
-12d8 12ee Lo
-12f0 130e Lo
-1310 Lo
-1312 1315 Lo
-1318 131e Lo
-1320 1346 Lo
-1348 135a Lo
-1361 1368 Po
-1369 1371 Nd
-1372 137c No
-13a0 13f4 Lo
-1401 166c Lo
-166d 166e Po
-166f 1676 Lo
-1680 Zs
-1681 169a Lo
-169b Ps
-169c Pe
-16a0 16ea Lo
-16eb 16ed Po
-16ee 16f0 No
-1780 17b3 Lo
-17b4 17b6 Mc
-17b7 17bd Mn
-17be 17c5 Mc
-17c6 Mn
-17c7 17c8 Mc
-17c9 17d3 Mn
-17d4 17da Po
-17db Sc
-17dc Po
-17e0 17e9 Nd
-1800 1805 Po
-1806 Pd
-1807 180a Po
-180b 180e Cf
-1810 1819 Nd
-1820 1842 Lo
-1843 Lm
-1844 1877 Lo
-1880 18a8 Lo
-18a9 Mn
-1e00 Lu
-1e01 Ll
-1e02 Lu
-1e03 Ll
-1e04 Lu
-1e05 Ll
-1e06 Lu
-1e07 Ll
-1e08 Lu
-1e09 Ll
-1e0a Lu
-1e0b Ll
-1e0c Lu
-1e0d Ll
-1e0e Lu
-1e0f Ll
-1e10 Lu
-1e11 Ll
-1e12 Lu
-1e13 Ll
-1e14 Lu
-1e15 Ll
-1e16 Lu
-1e17 Ll
-1e18 Lu
-1e19 Ll
-1e1a Lu
-1e1b Ll
-1e1c Lu
-1e1d Ll
-1e1e Lu
-1e1f Ll
-1e20 Lu
-1e21 Ll
-1e22 Lu
-1e23 Ll
-1e24 Lu
-1e25 Ll
-1e26 Lu
-1e27 Ll
-1e28 Lu
-1e29 Ll
-1e2a Lu
-1e2b Ll
-1e2c Lu
-1e2d Ll
-1e2e Lu
-1e2f Ll
-1e30 Lu
-1e31 Ll
-1e32 Lu
-1e33 Ll
-1e34 Lu
-1e35 Ll
-1e36 Lu
-1e37 Ll
-1e38 Lu
-1e39 Ll
-1e3a Lu
-1e3b Ll
-1e3c Lu
-1e3d Ll
-1e3e Lu
-1e3f Ll
-1e40 Lu
-1e41 Ll
-1e42 Lu
-1e43 Ll
-1e44 Lu
-1e45 Ll
-1e46 Lu
-1e47 Ll
-1e48 Lu
-1e49 Ll
-1e4a Lu
-1e4b Ll
-1e4c Lu
-1e4d Ll
-1e4e Lu
-1e4f Ll
-1e50 Lu
-1e51 Ll
-1e52 Lu
-1e53 Ll
-1e54 Lu
-1e55 Ll
-1e56 Lu
-1e57 Ll
-1e58 Lu
-1e59 Ll
-1e5a Lu
-1e5b Ll
-1e5c Lu
-1e5d Ll
-1e5e Lu
-1e5f Ll
-1e60 Lu
-1e61 Ll
-1e62 Lu
-1e63 Ll
-1e64 Lu
-1e65 Ll
-1e66 Lu
-1e67 Ll
-1e68 Lu
-1e69 Ll
-1e6a Lu
-1e6b Ll
-1e6c Lu
-1e6d Ll
-1e6e Lu
-1e6f Ll
-1e70 Lu
-1e71 Ll
-1e72 Lu
-1e73 Ll
-1e74 Lu
-1e75 Ll
-1e76 Lu
-1e77 Ll
-1e78 Lu
-1e79 Ll
-1e7a Lu
-1e7b Ll
-1e7c Lu
-1e7d Ll
-1e7e Lu
-1e7f Ll
-1e80 Lu
-1e81 Ll
-1e82 Lu
-1e83 Ll
-1e84 Lu
-1e85 Ll
-1e86 Lu
-1e87 Ll
-1e88 Lu
-1e89 Ll
-1e8a Lu
-1e8b Ll
-1e8c Lu
-1e8d Ll
-1e8e Lu
-1e8f Ll
-1e90 Lu
-1e91 Ll
-1e92 Lu
-1e93 Ll
-1e94 Lu
-1e95 1e9b Ll
-1ea0 Lu
-1ea1 Ll
-1ea2 Lu
-1ea3 Ll
-1ea4 Lu
-1ea5 Ll
-1ea6 Lu
-1ea7 Ll
-1ea8 Lu
-1ea9 Ll
-1eaa Lu
-1eab Ll
-1eac Lu
-1ead Ll
-1eae Lu
-1eaf Ll
-1eb0 Lu
-1eb1 Ll
-1eb2 Lu
-1eb3 Ll
-1eb4 Lu
-1eb5 Ll
-1eb6 Lu
-1eb7 Ll
-1eb8 Lu
-1eb9 Ll
-1eba Lu
-1ebb Ll
-1ebc Lu
-1ebd Ll
-1ebe Lu
-1ebf Ll
-1ec0 Lu
-1ec1 Ll
-1ec2 Lu
-1ec3 Ll
-1ec4 Lu
-1ec5 Ll
-1ec6 Lu
-1ec7 Ll
-1ec8 Lu
-1ec9 Ll
-1eca Lu
-1ecb Ll
-1ecc Lu
-1ecd Ll
-1ece Lu
-1ecf Ll
-1ed0 Lu
-1ed1 Ll
-1ed2 Lu
-1ed3 Ll
-1ed4 Lu
-1ed5 Ll
-1ed6 Lu
-1ed7 Ll
-1ed8 Lu
-1ed9 Ll
-1eda Lu
-1edb Ll
-1edc Lu
-1edd Ll
-1ede Lu
-1edf Ll
-1ee0 Lu
-1ee1 Ll
-1ee2 Lu
-1ee3 Ll
-1ee4 Lu
-1ee5 Ll
-1ee6 Lu
-1ee7 Ll
-1ee8 Lu
-1ee9 Ll
-1eea Lu
-1eeb Ll
-1eec Lu
-1eed Ll
-1eee Lu
-1eef Ll
-1ef0 Lu
-1ef1 Ll
-1ef2 Lu
-1ef3 Ll
-1ef4 Lu
-1ef5 Ll
-1ef6 Lu
-1ef7 Ll
-1ef8 Lu
-1ef9 Ll
-1f00 1f07 Ll
-1f08 1f0f Lu
-1f10 1f15 Ll
-1f18 1f1d Lu
-1f20 1f27 Ll
-1f28 1f2f Lu
-1f30 1f37 Ll
-1f38 1f3f Lu
-1f40 1f45 Ll
-1f48 1f4d Lu
-1f50 1f57 Ll
-1f59 Lu
-1f5b Lu
-1f5d Lu
-1f5f Lu
-1f60 1f67 Ll
-1f68 1f6f Lu
-1f70 1f7d Ll
-1f80 1f87 Ll
-1f88 1f8f Lt
-1f90 1f97 Ll
-1f98 1f9f Lt
-1fa0 1fa7 Ll
-1fa8 1faf Lt
-1fb0 1fb4 Ll
-1fb6 1fb7 Ll
-1fb8 1fbb Lu
-1fbc Lt
-1fbd Sk
-1fbe Ll
-1fbf 1fc1 Sk
-1fc2 1fc4 Ll
-1fc6 1fc7 Ll
-1fc8 1fcb Lu
-1fcc Lt
-1fcd 1fcf Sk
-1fd0 1fd3 Ll
-1fd6 1fd7 Ll
-1fd8 1fdb Lu
-1fdd 1fdf Sk
-1fe0 1fe7 Ll
-1fe8 1fec Lu
-1fed 1fef Sk
-1ff2 1ff4 Ll
-1ff6 1ff7 Ll
-1ff8 1ffb Lu
-1ffc Lt
-1ffd 1ffe Sk
-2000 200b Zs
-200c 200f Cf
-2010 2015 Pd
-2016 2017 Po
-2018 Pi
-2019 Pf
-201a Ps
-201b 201c Pi
-201d Pf
-201e Ps
-201f Pi
-2020 2027 Po
-2028 Zl
-2029 Zp
-202a 202e Cf
-202f Zs
-2030 2038 Po
-2039 Pi
-203a Pf
-203b 203e Po
-203f 2040 Pc
-2041 2043 Po
-2044 Sm
-2045 Ps
-2046 Pe
-2048 204d Po
-206a 206f Cf
-2070 No
-2074 2079 No
-207a 207c Sm
-207d Ps
-207e Pe
-207f Ll
-2080 2089 No
-208a 208c Sm
-208d Ps
-208e Pe
-20a0 20af Sc
-20d0 20dc Mn
-20dd 20e0 Me
-20e1 Mn
-20e2 20e3 Me
-2100 2101 So
-2102 Lu
-2103 2106 So
-2107 Lu
-2108 2109 So
-210a Ll
-210b 210d Lu
-210e 210f Ll
-2110 2112 Lu
-2113 Ll
-2114 So
-2115 Lu
-2116 2118 So
-2119 211d Lu
-211e 2123 So
-2124 Lu
-2125 So
-2126 Lu
-2127 So
-2128 Lu
-2129 So
-212a 212d Lu
-212e So
-212f Ll
-2130 2131 Lu
-2132 So
-2133 Lu
-2134 Ll
-2135 2138 Lo
-2139 Ll
-213a So
-2153 215f No
-2160 2183 Nl
-2190 2194 Sm
-2195 2199 So
-219a 219b Sm
-219c 219f So
-21a0 Sm
-21a1 21a2 So
-21a3 Sm
-21a4 21a5 So
-21a6 Sm
-21a7 21ad So
-21ae Sm
-21af 21cd So
-21ce 21cf Sm
-21d0 21d1 So
-21d2 Sm
-21d3 So
-21d4 Sm
-21d5 21f3 So
-2200 22f1 Sm
-2300 2307 So
-2308 230b Sm
-230c 231f So
-2320 2321 Sm
-2322 2328 So
-2329 Ps
-232a Pe
-232b 237b So
-237d 239a So
-2400 2426 So
-2440 244a So
-2460 249b No
-249c 24e9 So
-24ea No
-2500 2595 So
-25a0 25b6 So
-25b7 Sm
-25b8 25c0 So
-25c1 Sm
-25c2 25f7 So
-2600 2613 So
-2619 266e So
-266f Sm
-2670 2671 So
-2701 2704 So
-2706 2709 So
-270c 2727 So
-2729 274b So
-274d So
-274f 2752 So
-2756 So
-2758 275e So
-2761 2767 So
-2776 2793 No
-2794 So
-2798 27af So
-27b1 27be So
-2800 28ff So
-2e80 2e99 So
-2e9b 2ef3 So
-2f00 2fd5 So
-2ff0 2ffb So
-3000 Zs
-3001 3003 Po
-3004 So
-3005 Lm
-3006 Lo
-3007 Nl
-3008 Ps
-3009 Pe
-300a Ps
-300b Pe
-300c Ps
-300d Pe
-300e Ps
-300f Pe
-3010 Ps
-3011 Pe
-3012 3013 So
-3014 Ps
-3015 Pe
-3016 Ps
-3017 Pe
-3018 Ps
-3019 Pe
-301a Ps
-301b Pe
-301c Pd
-301d Ps
-301e 301f Pe
-3020 So
-3021 3029 Nl
-302a 302f Mn
-3030 Pd
-3031 3035 Lm
-3036 3037 So
-3038 303a Nl
-303e 303f So
-3041 3094 Lo
-3099 309a Mn
-309b 309c Sk
-309d 309e Lm
-30a1 30fa Lo
-30fb Pc
-30fc 30fe Lm
-3105 312c Lo
-3131 318e Lo
-3190 3191 So
-3192 3195 No
-3196 319f So
-31a0 31b7 Lo
-3200 321c So
-3220 3229 No
-322a 3243 So
-3260 327b So
-327f So
-3280 3289 No
-328a 32b0 So
-32c0 32cb So
-32d0 32fe So
-3300 3376 So
-337b 33dd So
-33e0 33fe So
-3400 4db5 Lo
-4e00 9fa5 Lo
-a000 a48c Lo
-a490 a4a1 So
-a4a4 a4b3 So
-a4b5 a4c0 So
-a4c2 a4c4 So
-a4c6 So
-ac00 d7a3 Lo
-d800 db7f Cs
-db80 dbff Cs
-dc00 dfff Cs
-e000 f8ff Co
-f900 fa2d Lo
-fb00 fb06 Ll
-fb13 fb17 Ll
-fb1d Lo
-fb1e Mn
-fb1f fb28 Lo
-fb29 Sm
-fb2a fb36 Lo
-fb38 fb3c Lo
-fb3e Lo
-fb40 fb41 Lo
-fb43 fb44 Lo
-fb46 fbb1 Lo
-fbd3 fd3d Lo
-fd3e Ps
-fd3f Pe
-fd50 fd8f Lo
-fd92 fdc7 Lo
-fdf0 fdfb Lo
-fe20 fe23 Mn
-fe30 Po
-fe31 fe32 Pd
-fe33 fe34 Pc
-fe35 Ps
-fe36 Pe
-fe37 Ps
-fe38 Pe
-fe39 Ps
-fe3a Pe
-fe3b Ps
-fe3c Pe
-fe3d Ps
-fe3e Pe
-fe3f Ps
-fe40 Pe
-fe41 Ps
-fe42 Pe
-fe43 Ps
-fe44 Pe
-fe49 fe4c Po
-fe4d fe4f Pc
-fe50 fe52 Po
-fe54 fe57 Po
-fe58 Pd
-fe59 Ps
-fe5a Pe
-fe5b Ps
-fe5c Pe
-fe5d Ps
-fe5e Pe
-fe5f fe61 Po
-fe62 Sm
-fe63 Pd
-fe64 fe66 Sm
-fe68 Po
-fe69 Sc
-fe6a fe6b Po
-fe70 fe72 Lo
-fe74 Lo
-fe76 fefc Lo
-feff Cf
-ff01 ff03 Po
-ff04 Sc
-ff05 ff07 Po
-ff08 Ps
-ff09 Pe
-ff0a Po
-ff0b Sm
-ff0c Po
-ff0d Pd
-ff0e ff0f Po
-ff10 ff19 Nd
-ff1a ff1b Po
-ff1c ff1e Sm
-ff1f ff20 Po
-ff21 ff3a Lu
-ff3b Ps
-ff3c Po
-ff3d Pe
-ff3e Sk
-ff3f Pc
-ff40 Sk
-ff41 ff5a Ll
-ff5b Ps
-ff5c Sm
-ff5d Pe
-ff5e Sm
-ff61 Po
-ff62 Ps
-ff63 Pe
-ff64 Po
-ff65 Pc
-ff66 ff6f Lo
-ff70 Lm
-ff71 ff9d Lo
-ff9e ff9f Lm
-ffa0 ffbe Lo
-ffc2 ffc7 Lo
-ffca ffcf Lo
-ffd2 ffd7 Lo
-ffda ffdc Lo
-ffe0 ffe1 Sc
-ffe2 Sm
-ffe3 Sk
-ffe4 So
-ffe5 ffe6 Sc
-ffe8 So
-ffe9 ffec Sm
-ffed ffee So
-fff9 fffb Cf
-fffc fffd So
-f0000 ffffd Co
-100000 10fffd Co
-END
diff --git a/contrib/perl5/lib/unicode/CombiningClass.pl b/contrib/perl5/lib/unicode/CombiningClass.pl
deleted file mode 100644
index 628b9c6..0000000
--- a/contrib/perl5/lib/unicode/CombiningClass.pl
+++ /dev/null
@@ -1,152 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0300 0314 230
-0315 232
-0316 0319 220
-031a 232
-031b 216
-031c 0320 220
-0321 0322 202
-0323 0326 220
-0327 0328 202
-0329 0333 220
-0334 0338 1
-0339 033c 220
-033d 0344 230
-0345 240
-0346 230
-0347 0349 220
-034a 034c 230
-034d 034e 220
-0360 0361 234
-0362 233
-0483 0486 230
-0591 220
-0592 0595 230
-0596 220
-0597 0599 230
-059a 222
-059b 220
-059c 05a1 230
-05a3 05a7 220
-05a8 05a9 230
-05aa 220
-05ab 05ac 230
-05ad 222
-05ae 228
-05af 230
-05b0 10
-05b1 11
-05b2 12
-05b3 13
-05b4 14
-05b5 15
-05b6 16
-05b7 17
-05b8 18
-05b9 19
-05bb 20
-05bc 21
-05bd 22
-05bf 23
-05c1 24
-05c2 25
-05c4 230
-064b 27
-064c 28
-064d 29
-064e 30
-064f 31
-0650 32
-0651 33
-0652 34
-0653 0654 230
-0655 220
-0670 35
-06d6 06dc 230
-06df 06e2 230
-06e3 220
-06e4 230
-06e7 06e8 230
-06ea 220
-06eb 06ec 230
-06ed 220
-0711 36
-0730 230
-0731 220
-0732 0733 230
-0734 220
-0735 0736 230
-0737 0739 220
-073a 230
-073b 073c 220
-073d 230
-073e 220
-073f 0741 230
-0742 220
-0743 230
-0744 220
-0745 230
-0746 220
-0747 230
-0748 220
-0749 074a 230
-093c 7
-094d 9
-0951 230
-0952 220
-0953 0954 230
-09bc 7
-09cd 9
-0a3c 7
-0a4d 9
-0abc 7
-0acd 9
-0b3c 7
-0b4d 9
-0bcd 9
-0c4d 9
-0c55 84
-0c56 91
-0ccd 9
-0d4d 9
-0dca 9
-0e38 0e39 103
-0e3a 9
-0e48 0e4b 107
-0eb8 0eb9 118
-0ec8 0ecb 122
-0f18 0f19 220
-0f35 220
-0f37 220
-0f39 216
-0f71 129
-0f72 130
-0f74 132
-0f7a 0f7d 130
-0f80 130
-0f82 0f83 230
-0f84 9
-0f86 0f87 230
-0fc6 220
-1037 7
-1039 9
-17d2 9
-18a9 228
-20d0 20d1 230
-20d2 20d3 1
-20d4 20d7 230
-20d8 20da 1
-20db 20dc 230
-20e1 230
-302a 218
-302b 228
-302c 232
-302d 222
-302e 302f 224
-3099 309a 8
-fb1e 26
-fe20 fe23 230
-END
diff --git a/contrib/perl5/lib/unicode/CompExcl.txt b/contrib/perl5/lib/unicode/CompExcl.txt
deleted file mode 100644
index 53f8467..0000000
--- a/contrib/perl5/lib/unicode/CompExcl.txt
+++ /dev/null
@@ -1,145 +0,0 @@
-# CompositionExclusions-2.txt
-#
-# Composition Exclusions
-# This file lists the characters from the UTR #15 Composition Exclusion Table.
-#
-# For more information, see
-# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
-
-# (1) Script Specifics
-# This list of characters cannot be derived from the UnicodeData file.
-
-0958 # DEVANAGARI LETTER QA
-0959 # DEVANAGARI LETTER KHHA
-095A # DEVANAGARI LETTER GHHA
-095B # DEVANAGARI LETTER ZA
-095C # DEVANAGARI LETTER DDDHA
-095D # DEVANAGARI LETTER RHA
-095E # DEVANAGARI LETTER FA
-095F # DEVANAGARI LETTER YYA
-09DC # BENGALI LETTER RRA
-09DD # BENGALI LETTER RHA
-09DF # BENGALI LETTER YYA
-0A33 # GURMUKHI LETTER LLA
-0A36 # GURMUKHI LETTER SHA
-0A59 # GURMUKHI LETTER KHHA
-0A5A # GURMUKHI LETTER GHHA
-0A5B # GURMUKHI LETTER ZA
-0A5E # GURMUKHI LETTER FA
-0B5C # ORIYA LETTER RRA
-0B5D # ORIYA LETTER RHA
-0F43 # TIBETAN LETTER GHA
-0F4D # TIBETAN LETTER DDHA
-0F52 # TIBETAN LETTER DHA
-0F57 # TIBETAN LETTER BHA
-0F5C # TIBETAN LETTER DZHA
-0F69 # TIBETAN LETTER KSSA
-0F76 # TIBETAN VOWEL SIGN VOCALIC R
-0F78 # TIBETAN VOWEL SIGN VOCALIC L
-0F93 # TIBETAN SUBJOINED LETTER GHA
-0F9D # TIBETAN SUBJOINED LETTER DDHA
-0FA2 # TIBETAN SUBJOINED LETTER DHA
-0FA7 # TIBETAN SUBJOINED LETTER BHA
-0FAC # TIBETAN SUBJOINED LETTER DZHA
-0FB9 # TIBETAN SUBJOINED LETTER KSSA
-FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
-FB2A # HEBREW LETTER SHIN WITH SHIN DOT
-FB2B # HEBREW LETTER SHIN WITH SIN DOT
-FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
-FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
-FB2E # HEBREW LETTER ALEF WITH PATAH
-FB2F # HEBREW LETTER ALEF WITH QAMATS
-FB30 # HEBREW LETTER ALEF WITH MAPIQ
-FB31 # HEBREW LETTER BET WITH DAGESH
-FB32 # HEBREW LETTER GIMEL WITH DAGESH
-FB33 # HEBREW LETTER DALET WITH DAGESH
-FB34 # HEBREW LETTER HE WITH MAPIQ
-FB35 # HEBREW LETTER VAV WITH DAGESH
-FB36 # HEBREW LETTER ZAYIN WITH DAGESH
-FB38 # HEBREW LETTER TET WITH DAGESH
-FB39 # HEBREW LETTER YOD WITH DAGESH
-FB3A # HEBREW LETTER FINAL KAF WITH DAGESH
-FB3B # HEBREW LETTER KAF WITH DAGESH
-FB3C # HEBREW LETTER LAMED WITH DAGESH
-FB3E # HEBREW LETTER MEM WITH DAGESH
-FB40 # HEBREW LETTER NUN WITH DAGESH
-FB41 # HEBREW LETTER SAMEKH WITH DAGESH
-FB43 # HEBREW LETTER FINAL PE WITH DAGESH
-FB44 # HEBREW LETTER PE WITH DAGESH
-FB46 # HEBREW LETTER TSADI WITH DAGESH
-FB47 # HEBREW LETTER QOF WITH DAGESH
-FB48 # HEBREW LETTER RESH WITH DAGESH
-FB49 # HEBREW LETTER SHIN WITH DAGESH
-FB4A # HEBREW LETTER TAV WITH DAGESH
-FB4B # HEBREW LETTER VAV WITH HOLAM
-FB4C # HEBREW LETTER BET WITH RAFE
-FB4D # HEBREW LETTER KAF WITH RAFE
-FB4E # HEBREW LETTER PE WITH RAFE
-
-# (2) Post Composition Version characters
-# These characters cannot be derived from the UnicodeData file.
-# (There are no characters in this category in this version of Unicode.)
-
-# (3) Singleton Decompositions
-# These characters can be derived from the UnicodeData file
-# by including all characters whose canonical decomposition
-# consists of a single character.
-# These characters are simply quoted here for reference.
-
-# 0340 COMBINING GRAVE TONE MARK
-# 0341 COMBINING ACUTE TONE MARK
-# 0343 COMBINING GREEK KORONIS
-# 0374 GREEK NUMERAL SIGN
-# 037E GREEK QUESTION MARK
-# 0387 GREEK ANO TELEIA
-# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA
-# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA
-# 1F75 GREEK SMALL LETTER ETA WITH OXIA
-# 1F77 GREEK SMALL LETTER IOTA WITH OXIA
-# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA
-# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA
-# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA
-# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
-# 1FBE GREEK PROSGEGRAMMENI
-# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
-# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA
-# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
-# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
-# 1FEE GREEK DIALYTIKA AND OXIA
-# 1FEF GREEK VARIA
-# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
-# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
-# 1FFD GREEK OXIA
-# 2000 EN QUAD
-# 2001 EM QUAD
-# 2126 OHM SIGN
-# 212A KELVIN SIGN
-# 212B ANGSTROM SIGN
-# 2329 LEFT-POINTING ANGLE BRACKET
-# 232A RIGHT-POINTING ANGLE BRACKET
-# F900 CJK COMPATIBILITY IDEOGRAPH-F900
-#.. FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D
-# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
-# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
-# FA15 CJK COMPATIBILITY IDEOGRAPH-FA15
-#.. FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E
-# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
-# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
-# FA25 CJK COMPATIBILITY IDEOGRAPH-FA25
-# FA26 CJK COMPATIBILITY IDEOGRAPH-FA26
-# FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A
-#.. FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D
-
-# (4) Non-Starter Decompositions
-# These characters can be derived from the UnicodeData file
-# by including all characters whose canonical decomposition consists
-# of a sequence of characters, the first of which has a non-zero
-# combining class.
-# These characters are simply quoted here for reference.
-
-# 0344 COMBINING GREEK DIALYTIKA TONOS
-# 0F73 TIBETAN VOWEL SIGN II
-# 0F75 TIBETAN VOWEL SIGN UU
-# 0F81 TIBETAN VOWEL SIGN REVERSED II
diff --git a/contrib/perl5/lib/unicode/Decomposition.pl b/contrib/perl5/lib/unicode/Decomposition.pl
deleted file mode 100644
index 1fe29cd..0000000
--- a/contrib/perl5/lib/unicode/Decomposition.pl
+++ /dev/null
@@ -1,3470 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00a0 <noBreak> 0020
-00a8 <compat> 0020 0308
-00aa <super> 0061
-00af <compat> 0020 0304
-00b2 <super> 0032
-00b3 <super> 0033
-00b4 <compat> 0020 0301
-00b5 <compat> 03BC
-00b8 <compat> 0020 0327
-00b9 <super> 0031
-00ba <super> 006F
-00bc <fraction> 0031 2044 0034
-00bd <fraction> 0031 2044 0032
-00be <fraction> 0033 2044 0034
-00c0 0041 0300
-00c1 0041 0301
-00c2 0041 0302
-00c3 0041 0303
-00c4 0041 0308
-00c5 0041 030A
-00c7 0043 0327
-00c8 0045 0300
-00c9 0045 0301
-00ca 0045 0302
-00cb 0045 0308
-00cc 0049 0300
-00cd 0049 0301
-00ce 0049 0302
-00cf 0049 0308
-00d1 004E 0303
-00d2 004F 0300
-00d3 004F 0301
-00d4 004F 0302
-00d5 004F 0303
-00d6 004F 0308
-00d9 0055 0300
-00da 0055 0301
-00db 0055 0302
-00dc 0055 0308
-00dd 0059 0301
-00e0 0061 0300
-00e1 0061 0301
-00e2 0061 0302
-00e3 0061 0303
-00e4 0061 0308
-00e5 0061 030A
-00e7 0063 0327
-00e8 0065 0300
-00e9 0065 0301
-00ea 0065 0302
-00eb 0065 0308
-00ec 0069 0300
-00ed 0069 0301
-00ee 0069 0302
-00ef 0069 0308
-00f1 006E 0303
-00f2 006F 0300
-00f3 006F 0301
-00f4 006F 0302
-00f5 006F 0303
-00f6 006F 0308
-00f9 0075 0300
-00fa 0075 0301
-00fb 0075 0302
-00fc 0075 0308
-00fd 0079 0301
-00ff 0079 0308
-0100 0041 0304
-0101 0061 0304
-0102 0041 0306
-0103 0061 0306
-0104 0041 0328
-0105 0061 0328
-0106 0043 0301
-0107 0063 0301
-0108 0043 0302
-0109 0063 0302
-010a 0043 0307
-010b 0063 0307
-010c 0043 030C
-010d 0063 030C
-010e 0044 030C
-010f 0064 030C
-0112 0045 0304
-0113 0065 0304
-0114 0045 0306
-0115 0065 0306
-0116 0045 0307
-0117 0065 0307
-0118 0045 0328
-0119 0065 0328
-011a 0045 030C
-011b 0065 030C
-011c 0047 0302
-011d 0067 0302
-011e 0047 0306
-011f 0067 0306
-0120 0047 0307
-0121 0067 0307
-0122 0047 0327
-0123 0067 0327
-0124 0048 0302
-0125 0068 0302
-0128 0049 0303
-0129 0069 0303
-012a 0049 0304
-012b 0069 0304
-012c 0049 0306
-012d 0069 0306
-012e 0049 0328
-012f 0069 0328
-0130 0049 0307
-0132 <compat> 0049 004A
-0133 <compat> 0069 006A
-0134 004A 0302
-0135 006A 0302
-0136 004B 0327
-0137 006B 0327
-0139 004C 0301
-013a 006C 0301
-013b 004C 0327
-013c 006C 0327
-013d 004C 030C
-013e 006C 030C
-013f <compat> 004C 00B7
-0140 <compat> 006C 00B7
-0143 004E 0301
-0144 006E 0301
-0145 004E 0327
-0146 006E 0327
-0147 004E 030C
-0148 006E 030C
-0149 <compat> 02BC 006E
-014c 004F 0304
-014d 006F 0304
-014e 004F 0306
-014f 006F 0306
-0150 004F 030B
-0151 006F 030B
-0154 0052 0301
-0155 0072 0301
-0156 0052 0327
-0157 0072 0327
-0158 0052 030C
-0159 0072 030C
-015a 0053 0301
-015b 0073 0301
-015c 0053 0302
-015d 0073 0302
-015e 0053 0327
-015f 0073 0327
-0160 0053 030C
-0161 0073 030C
-0162 0054 0327
-0163 0074 0327
-0164 0054 030C
-0165 0074 030C
-0168 0055 0303
-0169 0075 0303
-016a 0055 0304
-016b 0075 0304
-016c 0055 0306
-016d 0075 0306
-016e 0055 030A
-016f 0075 030A
-0170 0055 030B
-0171 0075 030B
-0172 0055 0328
-0173 0075 0328
-0174 0057 0302
-0175 0077 0302
-0176 0059 0302
-0177 0079 0302
-0178 0059 0308
-0179 005A 0301
-017a 007A 0301
-017b 005A 0307
-017c 007A 0307
-017d 005A 030C
-017e 007A 030C
-017f <compat> 0073
-01a0 004F 031B
-01a1 006F 031B
-01af 0055 031B
-01b0 0075 031B
-01c4 <compat> 0044 017D
-01c5 <compat> 0044 017E
-01c6 <compat> 0064 017E
-01c7 <compat> 004C 004A
-01c8 <compat> 004C 006A
-01c9 <compat> 006C 006A
-01ca <compat> 004E 004A
-01cb <compat> 004E 006A
-01cc <compat> 006E 006A
-01cd 0041 030C
-01ce 0061 030C
-01cf 0049 030C
-01d0 0069 030C
-01d1 004F 030C
-01d2 006F 030C
-01d3 0055 030C
-01d4 0075 030C
-01d5 00DC 0304
-01d6 00FC 0304
-01d7 00DC 0301
-01d8 00FC 0301
-01d9 00DC 030C
-01da 00FC 030C
-01db 00DC 0300
-01dc 00FC 0300
-01de 00C4 0304
-01df 00E4 0304
-01e0 0226 0304
-01e1 0227 0304
-01e2 00C6 0304
-01e3 00E6 0304
-01e6 0047 030C
-01e7 0067 030C
-01e8 004B 030C
-01e9 006B 030C
-01ea 004F 0328
-01eb 006F 0328
-01ec 01EA 0304
-01ed 01EB 0304
-01ee 01B7 030C
-01ef 0292 030C
-01f0 006A 030C
-01f1 <compat> 0044 005A
-01f2 <compat> 0044 007A
-01f3 <compat> 0064 007A
-01f4 0047 0301
-01f5 0067 0301
-01f8 004E 0300
-01f9 006E 0300
-01fa 00C5 0301
-01fb 00E5 0301
-01fc 00C6 0301
-01fd 00E6 0301
-01fe 00D8 0301
-01ff 00F8 0301
-0200 0041 030F
-0201 0061 030F
-0202 0041 0311
-0203 0061 0311
-0204 0045 030F
-0205 0065 030F
-0206 0045 0311
-0207 0065 0311
-0208 0049 030F
-0209 0069 030F
-020a 0049 0311
-020b 0069 0311
-020c 004F 030F
-020d 006F 030F
-020e 004F 0311
-020f 006F 0311
-0210 0052 030F
-0211 0072 030F
-0212 0052 0311
-0213 0072 0311
-0214 0055 030F
-0215 0075 030F
-0216 0055 0311
-0217 0075 0311
-0218 0053 0326
-0219 0073 0326
-021a 0054 0326
-021b 0074 0326
-021e 0048 030C
-021f 0068 030C
-0226 0041 0307
-0227 0061 0307
-0228 0045 0327
-0229 0065 0327
-022a 00D6 0304
-022b 00F6 0304
-022c 00D5 0304
-022d 00F5 0304
-022e 004F 0307
-022f 006F 0307
-0230 022E 0304
-0231 022F 0304
-0232 0059 0304
-0233 0079 0304
-02b0 <super> 0068
-02b1 <super> 0266
-02b2 <super> 006A
-02b3 <super> 0072
-02b4 <super> 0279
-02b5 <super> 027B
-02b6 <super> 0281
-02b7 <super> 0077
-02b8 <super> 0079
-02d8 <compat> 0020 0306
-02d9 <compat> 0020 0307
-02da <compat> 0020 030A
-02db <compat> 0020 0328
-02dc <compat> 0020 0303
-02dd <compat> 0020 030B
-02e0 <super> 0263
-02e1 <super> 006C
-02e2 <super> 0073
-02e3 <super> 0078
-02e4 <super> 0295
-0340 0300
-0341 0301
-0343 0313
-0344 0308 0301
-0374 02B9
-037a <compat> 0020 0345
-037e 003B
-0384 <compat> 0020 0301
-0385 00A8 0301
-0386 0391 0301
-0387 00B7
-0388 0395 0301
-0389 0397 0301
-038a 0399 0301
-038c 039F 0301
-038e 03A5 0301
-038f 03A9 0301
-0390 03CA 0301
-03aa 0399 0308
-03ab 03A5 0308
-03ac 03B1 0301
-03ad 03B5 0301
-03ae 03B7 0301
-03af 03B9 0301
-03b0 03CB 0301
-03ca 03B9 0308
-03cb 03C5 0308
-03cc 03BF 0301
-03cd 03C5 0301
-03ce 03C9 0301
-03d0 <compat> 03B2
-03d1 <compat> 03B8
-03d2 <compat> 03A5
-03d3 03D2 0301
-03d4 03D2 0308
-03d5 <compat> 03C6
-03d6 <compat> 03C0
-03f0 <compat> 03BA
-03f1 <compat> 03C1
-03f2 <compat> 03C2
-0400 0415 0300
-0401 0415 0308
-0403 0413 0301
-0407 0406 0308
-040c 041A 0301
-040d 0418 0300
-040e 0423 0306
-0419 0418 0306
-0439 0438 0306
-0450 0435 0300
-0451 0435 0308
-0453 0433 0301
-0457 0456 0308
-045c 043A 0301
-045d 0438 0300
-045e 0443 0306
-0476 0474 030F
-0477 0475 030F
-04c1 0416 0306
-04c2 0436 0306
-04d0 0410 0306
-04d1 0430 0306
-04d2 0410 0308
-04d3 0430 0308
-04d6 0415 0306
-04d7 0435 0306
-04da 04D8 0308
-04db 04D9 0308
-04dc 0416 0308
-04dd 0436 0308
-04de 0417 0308
-04df 0437 0308
-04e2 0418 0304
-04e3 0438 0304
-04e4 0418 0308
-04e5 0438 0308
-04e6 041E 0308
-04e7 043E 0308
-04ea 04E8 0308
-04eb 04E9 0308
-04ec 042D 0308
-04ed 044D 0308
-04ee 0423 0304
-04ef 0443 0304
-04f0 0423 0308
-04f1 0443 0308
-04f2 0423 030B
-04f3 0443 030B
-04f4 0427 0308
-04f5 0447 0308
-04f8 042B 0308
-04f9 044B 0308
-0587 <compat> 0565 0582
-0622 0627 0653
-0623 0627 0654
-0624 0648 0654
-0625 0627 0655
-0626 064A 0654
-0675 <compat> 0627 0674
-0676 <compat> 0648 0674
-0677 <compat> 06C7 0674
-0678 <compat> 064A 0674
-06c0 06D5 0654
-06c2 06C1 0654
-06d3 06D2 0654
-0929 0928 093C
-0931 0930 093C
-0934 0933 093C
-0958 0915 093C
-0959 0916 093C
-095a 0917 093C
-095b 091C 093C
-095c 0921 093C
-095d 0922 093C
-095e 092B 093C
-095f 092F 093C
-09cb 09C7 09BE
-09cc 09C7 09D7
-09dc 09A1 09BC
-09dd 09A2 09BC
-09df 09AF 09BC
-0a33 0A32 0A3C
-0a36 0A38 0A3C
-0a59 0A16 0A3C
-0a5a 0A17 0A3C
-0a5b 0A1C 0A3C
-0a5e 0A2B 0A3C
-0b48 0B47 0B56
-0b4b 0B47 0B3E
-0b4c 0B47 0B57
-0b5c 0B21 0B3C
-0b5d 0B22 0B3C
-0b94 0B92 0BD7
-0bca 0BC6 0BBE
-0bcb 0BC7 0BBE
-0bcc 0BC6 0BD7
-0c48 0C46 0C56
-0cc0 0CBF 0CD5
-0cc7 0CC6 0CD5
-0cc8 0CC6 0CD6
-0cca 0CC6 0CC2
-0ccb 0CCA 0CD5
-0d4a 0D46 0D3E
-0d4b 0D47 0D3E
-0d4c 0D46 0D57
-0dda 0DD9 0DCA
-0ddc 0DD9 0DCF
-0ddd 0DDC 0DCA
-0dde 0DD9 0DDF
-0e33 <compat> 0E4D 0E32
-0eb3 <compat> 0ECD 0EB2
-0edc <compat> 0EAB 0E99
-0edd <compat> 0EAB 0EA1
-0f0c <noBreak> 0F0B
-0f43 0F42 0FB7
-0f4d 0F4C 0FB7
-0f52 0F51 0FB7
-0f57 0F56 0FB7
-0f5c 0F5B 0FB7
-0f69 0F40 0FB5
-0f73 0F71 0F72
-0f75 0F71 0F74
-0f76 0FB2 0F80
-0f77 <compat> 0FB2 0F81
-0f78 0FB3 0F80
-0f79 <compat> 0FB3 0F81
-0f81 0F71 0F80
-0f93 0F92 0FB7
-0f9d 0F9C 0FB7
-0fa2 0FA1 0FB7
-0fa7 0FA6 0FB7
-0fac 0FAB 0FB7
-0fb9 0F90 0FB5
-1026 1025 102E
-1e00 0041 0325
-1e01 0061 0325
-1e02 0042 0307
-1e03 0062 0307
-1e04 0042 0323
-1e05 0062 0323
-1e06 0042 0331
-1e07 0062 0331
-1e08 00C7 0301
-1e09 00E7 0301
-1e0a 0044 0307
-1e0b 0064 0307
-1e0c 0044 0323
-1e0d 0064 0323
-1e0e 0044 0331
-1e0f 0064 0331
-1e10 0044 0327
-1e11 0064 0327
-1e12 0044 032D
-1e13 0064 032D
-1e14 0112 0300
-1e15 0113 0300
-1e16 0112 0301
-1e17 0113 0301
-1e18 0045 032D
-1e19 0065 032D
-1e1a 0045 0330
-1e1b 0065 0330
-1e1c 0228 0306
-1e1d 0229 0306
-1e1e 0046 0307
-1e1f 0066 0307
-1e20 0047 0304
-1e21 0067 0304
-1e22 0048 0307
-1e23 0068 0307
-1e24 0048 0323
-1e25 0068 0323
-1e26 0048 0308
-1e27 0068 0308
-1e28 0048 0327
-1e29 0068 0327
-1e2a 0048 032E
-1e2b 0068 032E
-1e2c 0049 0330
-1e2d 0069 0330
-1e2e 00CF 0301
-1e2f 00EF 0301
-1e30 004B 0301
-1e31 006B 0301
-1e32 004B 0323
-1e33 006B 0323
-1e34 004B 0331
-1e35 006B 0331
-1e36 004C 0323
-1e37 006C 0323
-1e38 1E36 0304
-1e39 1E37 0304
-1e3a 004C 0331
-1e3b 006C 0331
-1e3c 004C 032D
-1e3d 006C 032D
-1e3e 004D 0301
-1e3f 006D 0301
-1e40 004D 0307
-1e41 006D 0307
-1e42 004D 0323
-1e43 006D 0323
-1e44 004E 0307
-1e45 006E 0307
-1e46 004E 0323
-1e47 006E 0323
-1e48 004E 0331
-1e49 006E 0331
-1e4a 004E 032D
-1e4b 006E 032D
-1e4c 00D5 0301
-1e4d 00F5 0301
-1e4e 00D5 0308
-1e4f 00F5 0308
-1e50 014C 0300
-1e51 014D 0300
-1e52 014C 0301
-1e53 014D 0301
-1e54 0050 0301
-1e55 0070 0301
-1e56 0050 0307
-1e57 0070 0307
-1e58 0052 0307
-1e59 0072 0307
-1e5a 0052 0323
-1e5b 0072 0323
-1e5c 1E5A 0304
-1e5d 1E5B 0304
-1e5e 0052 0331
-1e5f 0072 0331
-1e60 0053 0307
-1e61 0073 0307
-1e62 0053 0323
-1e63 0073 0323
-1e64 015A 0307
-1e65 015B 0307
-1e66 0160 0307
-1e67 0161 0307
-1e68 1E62 0307
-1e69 1E63 0307
-1e6a 0054 0307
-1e6b 0074 0307
-1e6c 0054 0323
-1e6d 0074 0323
-1e6e 0054 0331
-1e6f 0074 0331
-1e70 0054 032D
-1e71 0074 032D
-1e72 0055 0324
-1e73 0075 0324
-1e74 0055 0330
-1e75 0075 0330
-1e76 0055 032D
-1e77 0075 032D
-1e78 0168 0301
-1e79 0169 0301
-1e7a 016A 0308
-1e7b 016B 0308
-1e7c 0056 0303
-1e7d 0076 0303
-1e7e 0056 0323
-1e7f 0076 0323
-1e80 0057 0300
-1e81 0077 0300
-1e82 0057 0301
-1e83 0077 0301
-1e84 0057 0308
-1e85 0077 0308
-1e86 0057 0307
-1e87 0077 0307
-1e88 0057 0323
-1e89 0077 0323
-1e8a 0058 0307
-1e8b 0078 0307
-1e8c 0058 0308
-1e8d 0078 0308
-1e8e 0059 0307
-1e8f 0079 0307
-1e90 005A 0302
-1e91 007A 0302
-1e92 005A 0323
-1e93 007A 0323
-1e94 005A 0331
-1e95 007A 0331
-1e96 0068 0331
-1e97 0074 0308
-1e98 0077 030A
-1e99 0079 030A
-1e9a <compat> 0061 02BE
-1e9b 017F 0307
-1ea0 0041 0323
-1ea1 0061 0323
-1ea2 0041 0309
-1ea3 0061 0309
-1ea4 00C2 0301
-1ea5 00E2 0301
-1ea6 00C2 0300
-1ea7 00E2 0300
-1ea8 00C2 0309
-1ea9 00E2 0309
-1eaa 00C2 0303
-1eab 00E2 0303
-1eac 1EA0 0302
-1ead 1EA1 0302
-1eae 0102 0301
-1eaf 0103 0301
-1eb0 0102 0300
-1eb1 0103 0300
-1eb2 0102 0309
-1eb3 0103 0309
-1eb4 0102 0303
-1eb5 0103 0303
-1eb6 1EA0 0306
-1eb7 1EA1 0306
-1eb8 0045 0323
-1eb9 0065 0323
-1eba 0045 0309
-1ebb 0065 0309
-1ebc 0045 0303
-1ebd 0065 0303
-1ebe 00CA 0301
-1ebf 00EA 0301
-1ec0 00CA 0300
-1ec1 00EA 0300
-1ec2 00CA 0309
-1ec3 00EA 0309
-1ec4 00CA 0303
-1ec5 00EA 0303
-1ec6 1EB8 0302
-1ec7 1EB9 0302
-1ec8 0049 0309
-1ec9 0069 0309
-1eca 0049 0323
-1ecb 0069 0323
-1ecc 004F 0323
-1ecd 006F 0323
-1ece 004F 0309
-1ecf 006F 0309
-1ed0 00D4 0301
-1ed1 00F4 0301
-1ed2 00D4 0300
-1ed3 00F4 0300
-1ed4 00D4 0309
-1ed5 00F4 0309
-1ed6 00D4 0303
-1ed7 00F4 0303
-1ed8 1ECC 0302
-1ed9 1ECD 0302
-1eda 01A0 0301
-1edb 01A1 0301
-1edc 01A0 0300
-1edd 01A1 0300
-1ede 01A0 0309
-1edf 01A1 0309
-1ee0 01A0 0303
-1ee1 01A1 0303
-1ee2 01A0 0323
-1ee3 01A1 0323
-1ee4 0055 0323
-1ee5 0075 0323
-1ee6 0055 0309
-1ee7 0075 0309
-1ee8 01AF 0301
-1ee9 01B0 0301
-1eea 01AF 0300
-1eeb 01B0 0300
-1eec 01AF 0309
-1eed 01B0 0309
-1eee 01AF 0303
-1eef 01B0 0303
-1ef0 01AF 0323
-1ef1 01B0 0323
-1ef2 0059 0300
-1ef3 0079 0300
-1ef4 0059 0323
-1ef5 0079 0323
-1ef6 0059 0309
-1ef7 0079 0309
-1ef8 0059 0303
-1ef9 0079 0303
-1f00 03B1 0313
-1f01 03B1 0314
-1f02 1F00 0300
-1f03 1F01 0300
-1f04 1F00 0301
-1f05 1F01 0301
-1f06 1F00 0342
-1f07 1F01 0342
-1f08 0391 0313
-1f09 0391 0314
-1f0a 1F08 0300
-1f0b 1F09 0300
-1f0c 1F08 0301
-1f0d 1F09 0301
-1f0e 1F08 0342
-1f0f 1F09 0342
-1f10 03B5 0313
-1f11 03B5 0314
-1f12 1F10 0300
-1f13 1F11 0300
-1f14 1F10 0301
-1f15 1F11 0301
-1f18 0395 0313
-1f19 0395 0314
-1f1a 1F18 0300
-1f1b 1F19 0300
-1f1c 1F18 0301
-1f1d 1F19 0301
-1f20 03B7 0313
-1f21 03B7 0314
-1f22 1F20 0300
-1f23 1F21 0300
-1f24 1F20 0301
-1f25 1F21 0301
-1f26 1F20 0342
-1f27 1F21 0342
-1f28 0397 0313
-1f29 0397 0314
-1f2a 1F28 0300
-1f2b 1F29 0300
-1f2c 1F28 0301
-1f2d 1F29 0301
-1f2e 1F28 0342
-1f2f 1F29 0342
-1f30 03B9 0313
-1f31 03B9 0314
-1f32 1F30 0300
-1f33 1F31 0300
-1f34 1F30 0301
-1f35 1F31 0301
-1f36 1F30 0342
-1f37 1F31 0342
-1f38 0399 0313
-1f39 0399 0314
-1f3a 1F38 0300
-1f3b 1F39 0300
-1f3c 1F38 0301
-1f3d 1F39 0301
-1f3e 1F38 0342
-1f3f 1F39 0342
-1f40 03BF 0313
-1f41 03BF 0314
-1f42 1F40 0300
-1f43 1F41 0300
-1f44 1F40 0301
-1f45 1F41 0301
-1f48 039F 0313
-1f49 039F 0314
-1f4a 1F48 0300
-1f4b 1F49 0300
-1f4c 1F48 0301
-1f4d 1F49 0301
-1f50 03C5 0313
-1f51 03C5 0314
-1f52 1F50 0300
-1f53 1F51 0300
-1f54 1F50 0301
-1f55 1F51 0301
-1f56 1F50 0342
-1f57 1F51 0342
-1f59 03A5 0314
-1f5b 1F59 0300
-1f5d 1F59 0301
-1f5f 1F59 0342
-1f60 03C9 0313
-1f61 03C9 0314
-1f62 1F60 0300
-1f63 1F61 0300
-1f64 1F60 0301
-1f65 1F61 0301
-1f66 1F60 0342
-1f67 1F61 0342
-1f68 03A9 0313
-1f69 03A9 0314
-1f6a 1F68 0300
-1f6b 1F69 0300
-1f6c 1F68 0301
-1f6d 1F69 0301
-1f6e 1F68 0342
-1f6f 1F69 0342
-1f70 03B1 0300
-1f71 03AC
-1f72 03B5 0300
-1f73 03AD
-1f74 03B7 0300
-1f75 03AE
-1f76 03B9 0300
-1f77 03AF
-1f78 03BF 0300
-1f79 03CC
-1f7a 03C5 0300
-1f7b 03CD
-1f7c 03C9 0300
-1f7d 03CE
-1f80 1F00 0345
-1f81 1F01 0345
-1f82 1F02 0345
-1f83 1F03 0345
-1f84 1F04 0345
-1f85 1F05 0345
-1f86 1F06 0345
-1f87 1F07 0345
-1f88 1F08 0345
-1f89 1F09 0345
-1f8a 1F0A 0345
-1f8b 1F0B 0345
-1f8c 1F0C 0345
-1f8d 1F0D 0345
-1f8e 1F0E 0345
-1f8f 1F0F 0345
-1f90 1F20 0345
-1f91 1F21 0345
-1f92 1F22 0345
-1f93 1F23 0345
-1f94 1F24 0345
-1f95 1F25 0345
-1f96 1F26 0345
-1f97 1F27 0345
-1f98 1F28 0345
-1f99 1F29 0345
-1f9a 1F2A 0345
-1f9b 1F2B 0345
-1f9c 1F2C 0345
-1f9d 1F2D 0345
-1f9e 1F2E 0345
-1f9f 1F2F 0345
-1fa0 1F60 0345
-1fa1 1F61 0345
-1fa2 1F62 0345
-1fa3 1F63 0345
-1fa4 1F64 0345
-1fa5 1F65 0345
-1fa6 1F66 0345
-1fa7 1F67 0345
-1fa8 1F68 0345
-1fa9 1F69 0345
-1faa 1F6A 0345
-1fab 1F6B 0345
-1fac 1F6C 0345
-1fad 1F6D 0345
-1fae 1F6E 0345
-1faf 1F6F 0345
-1fb0 03B1 0306
-1fb1 03B1 0304
-1fb2 1F70 0345
-1fb3 03B1 0345
-1fb4 03AC 0345
-1fb6 03B1 0342
-1fb7 1FB6 0345
-1fb8 0391 0306
-1fb9 0391 0304
-1fba 0391 0300
-1fbb 0386
-1fbc 0391 0345
-1fbd <compat> 0020 0313
-1fbe 03B9
-1fbf <compat> 0020 0313
-1fc0 <compat> 0020 0342
-1fc1 00A8 0342
-1fc2 1F74 0345
-1fc3 03B7 0345
-1fc4 03AE 0345
-1fc6 03B7 0342
-1fc7 1FC6 0345
-1fc8 0395 0300
-1fc9 0388
-1fca 0397 0300
-1fcb 0389
-1fcc 0397 0345
-1fcd 1FBF 0300
-1fce 1FBF 0301
-1fcf 1FBF 0342
-1fd0 03B9 0306
-1fd1 03B9 0304
-1fd2 03CA 0300
-1fd3 0390
-1fd6 03B9 0342
-1fd7 03CA 0342
-1fd8 0399 0306
-1fd9 0399 0304
-1fda 0399 0300
-1fdb 038A
-1fdd 1FFE 0300
-1fde 1FFE 0301
-1fdf 1FFE 0342
-1fe0 03C5 0306
-1fe1 03C5 0304
-1fe2 03CB 0300
-1fe3 03B0
-1fe4 03C1 0313
-1fe5 03C1 0314
-1fe6 03C5 0342
-1fe7 03CB 0342
-1fe8 03A5 0306
-1fe9 03A5 0304
-1fea 03A5 0300
-1feb 038E
-1fec 03A1 0314
-1fed 00A8 0300
-1fee 0385
-1fef 0060
-1ff2 1F7C 0345
-1ff3 03C9 0345
-1ff4 03CE 0345
-1ff6 03C9 0342
-1ff7 1FF6 0345
-1ff8 039F 0300
-1ff9 038C
-1ffa 03A9 0300
-1ffb 038F
-1ffc 03A9 0345
-1ffd 00B4
-1ffe <compat> 0020 0314
-2000 2002
-2001 2003
-2002 2006 <compat> 0020
-2007 <noBreak> 0020
-2008 200a <compat> 0020
-2011 <noBreak> 2010
-2017 <compat> 0020 0333
-2024 <compat> 002E
-2025 <compat> 002E 002E
-2026 <compat> 002E 002E 002E
-202f <noBreak> 0020
-2033 <compat> 2032 2032
-2034 <compat> 2032 2032 2032
-2036 <compat> 2035 2035
-2037 <compat> 2035 2035 2035
-203c <compat> 0021 0021
-203e <compat> 0020 0305
-2048 <compat> 003F 0021
-2049 <compat> 0021 003F
-2070 <super> 0030
-2074 <super> 0034
-2075 <super> 0035
-2076 <super> 0036
-2077 <super> 0037
-2078 <super> 0038
-2079 <super> 0039
-207a <super> 002B
-207b <super> 2212
-207c <super> 003D
-207d <super> 0028
-207e <super> 0029
-207f <super> 006E
-2080 <sub> 0030
-2081 <sub> 0031
-2082 <sub> 0032
-2083 <sub> 0033
-2084 <sub> 0034
-2085 <sub> 0035
-2086 <sub> 0036
-2087 <sub> 0037
-2088 <sub> 0038
-2089 <sub> 0039
-208a <sub> 002B
-208b <sub> 2212
-208c <sub> 003D
-208d <sub> 0028
-208e <sub> 0029
-20a8 <compat> 0052 0073
-2100 <compat> 0061 002F 0063
-2101 <compat> 0061 002F 0073
-2102 <font> 0043
-2103 <compat> 00B0 0043
-2105 <compat> 0063 002F 006F
-2106 <compat> 0063 002F 0075
-2107 <compat> 0190
-2109 <compat> 00B0 0046
-210a <font> 0067
-210b 210d <font> 0048
-210e <font> 0068
-210f <font> 0127
-2110 2111 <font> 0049
-2112 <font> 004C
-2113 <font> 006C
-2115 <font> 004E
-2116 <compat> 004E 006F
-2119 <font> 0050
-211a <font> 0051
-211b 211d <font> 0052
-2120 <super> 0053 004D
-2121 <compat> 0054 0045 004C
-2122 <super> 0054 004D
-2124 <font> 005A
-2126 03A9
-2128 <font> 005A
-212a 004B
-212b 00C5
-212c <font> 0042
-212d <font> 0043
-212f <font> 0065
-2130 <font> 0045
-2131 <font> 0046
-2133 <font> 004D
-2134 <font> 006F
-2135 <compat> 05D0
-2136 <compat> 05D1
-2137 <compat> 05D2
-2138 <compat> 05D3
-2139 <font> 0069
-2153 <fraction> 0031 2044 0033
-2154 <fraction> 0032 2044 0033
-2155 <fraction> 0031 2044 0035
-2156 <fraction> 0032 2044 0035
-2157 <fraction> 0033 2044 0035
-2158 <fraction> 0034 2044 0035
-2159 <fraction> 0031 2044 0036
-215a <fraction> 0035 2044 0036
-215b <fraction> 0031 2044 0038
-215c <fraction> 0033 2044 0038
-215d <fraction> 0035 2044 0038
-215e <fraction> 0037 2044 0038
-215f <fraction> 0031 2044
-2160 <compat> 0049
-2161 <compat> 0049 0049
-2162 <compat> 0049 0049 0049
-2163 <compat> 0049 0056
-2164 <compat> 0056
-2165 <compat> 0056 0049
-2166 <compat> 0056 0049 0049
-2167 <compat> 0056 0049 0049 0049
-2168 <compat> 0049 0058
-2169 <compat> 0058
-216a <compat> 0058 0049
-216b <compat> 0058 0049 0049
-216c <compat> 004C
-216d <compat> 0043
-216e <compat> 0044
-216f <compat> 004D
-2170 <compat> 0069
-2171 <compat> 0069 0069
-2172 <compat> 0069 0069 0069
-2173 <compat> 0069 0076
-2174 <compat> 0076
-2175 <compat> 0076 0069
-2176 <compat> 0076 0069 0069
-2177 <compat> 0076 0069 0069 0069
-2178 <compat> 0069 0078
-2179 <compat> 0078
-217a <compat> 0078 0069
-217b <compat> 0078 0069 0069
-217c <compat> 006C
-217d <compat> 0063
-217e <compat> 0064
-217f <compat> 006D
-219a 2190 0338
-219b 2192 0338
-21ae 2194 0338
-21cd 21D0 0338
-21ce 21D4 0338
-21cf 21D2 0338
-2204 2203 0338
-2209 2208 0338
-220c 220B 0338
-2224 2223 0338
-2226 2225 0338
-222c <compat> 222B 222B
-222d <compat> 222B 222B 222B
-222f <compat> 222E 222E
-2230 <compat> 222E 222E 222E
-2241 223C 0338
-2244 2243 0338
-2247 2245 0338
-2249 2248 0338
-2260 003D 0338
-2262 2261 0338
-226d 224D 0338
-226e 003C 0338
-226f 003E 0338
-2270 2264 0338
-2271 2265 0338
-2274 2272 0338
-2275 2273 0338
-2278 2276 0338
-2279 2277 0338
-2280 227A 0338
-2281 227B 0338
-2284 2282 0338
-2285 2283 0338
-2288 2286 0338
-2289 2287 0338
-22ac 22A2 0338
-22ad 22A8 0338
-22ae 22A9 0338
-22af 22AB 0338
-22e0 227C 0338
-22e1 227D 0338
-22e2 2291 0338
-22e3 2292 0338
-22ea 22B2 0338
-22eb 22B3 0338
-22ec 22B4 0338
-22ed 22B5 0338
-2329 3008
-232a 3009
-2460 <circle> 0031
-2461 <circle> 0032
-2462 <circle> 0033
-2463 <circle> 0034
-2464 <circle> 0035
-2465 <circle> 0036
-2466 <circle> 0037
-2467 <circle> 0038
-2468 <circle> 0039
-2469 <circle> 0031 0030
-246a <circle> 0031 0031
-246b <circle> 0031 0032
-246c <circle> 0031 0033
-246d <circle> 0031 0034
-246e <circle> 0031 0035
-246f <circle> 0031 0036
-2470 <circle> 0031 0037
-2471 <circle> 0031 0038
-2472 <circle> 0031 0039
-2473 <circle> 0032 0030
-2474 <compat> 0028 0031 0029
-2475 <compat> 0028 0032 0029
-2476 <compat> 0028 0033 0029
-2477 <compat> 0028 0034 0029
-2478 <compat> 0028 0035 0029
-2479 <compat> 0028 0036 0029
-247a <compat> 0028 0037 0029
-247b <compat> 0028 0038 0029
-247c <compat> 0028 0039 0029
-247d <compat> 0028 0031 0030 0029
-247e <compat> 0028 0031 0031 0029
-247f <compat> 0028 0031 0032 0029
-2480 <compat> 0028 0031 0033 0029
-2481 <compat> 0028 0031 0034 0029
-2482 <compat> 0028 0031 0035 0029
-2483 <compat> 0028 0031 0036 0029
-2484 <compat> 0028 0031 0037 0029
-2485 <compat> 0028 0031 0038 0029
-2486 <compat> 0028 0031 0039 0029
-2487 <compat> 0028 0032 0030 0029
-2488 <compat> 0031 002E
-2489 <compat> 0032 002E
-248a <compat> 0033 002E
-248b <compat> 0034 002E
-248c <compat> 0035 002E
-248d <compat> 0036 002E
-248e <compat> 0037 002E
-248f <compat> 0038 002E
-2490 <compat> 0039 002E
-2491 <compat> 0031 0030 002E
-2492 <compat> 0031 0031 002E
-2493 <compat> 0031 0032 002E
-2494 <compat> 0031 0033 002E
-2495 <compat> 0031 0034 002E
-2496 <compat> 0031 0035 002E
-2497 <compat> 0031 0036 002E
-2498 <compat> 0031 0037 002E
-2499 <compat> 0031 0038 002E
-249a <compat> 0031 0039 002E
-249b <compat> 0032 0030 002E
-249c <compat> 0028 0061 0029
-249d <compat> 0028 0062 0029
-249e <compat> 0028 0063 0029
-249f <compat> 0028 0064 0029
-24a0 <compat> 0028 0065 0029
-24a1 <compat> 0028 0066 0029
-24a2 <compat> 0028 0067 0029
-24a3 <compat> 0028 0068 0029
-24a4 <compat> 0028 0069 0029
-24a5 <compat> 0028 006A 0029
-24a6 <compat> 0028 006B 0029
-24a7 <compat> 0028 006C 0029
-24a8 <compat> 0028 006D 0029
-24a9 <compat> 0028 006E 0029
-24aa <compat> 0028 006F 0029
-24ab <compat> 0028 0070 0029
-24ac <compat> 0028 0071 0029
-24ad <compat> 0028 0072 0029
-24ae <compat> 0028 0073 0029
-24af <compat> 0028 0074 0029
-24b0 <compat> 0028 0075 0029
-24b1 <compat> 0028 0076 0029
-24b2 <compat> 0028 0077 0029
-24b3 <compat> 0028 0078 0029
-24b4 <compat> 0028 0079 0029
-24b5 <compat> 0028 007A 0029
-24b6 <circle> 0041
-24b7 <circle> 0042
-24b8 <circle> 0043
-24b9 <circle> 0044
-24ba <circle> 0045
-24bb <circle> 0046
-24bc <circle> 0047
-24bd <circle> 0048
-24be <circle> 0049
-24bf <circle> 004A
-24c0 <circle> 004B
-24c1 <circle> 004C
-24c2 <circle> 004D
-24c3 <circle> 004E
-24c4 <circle> 004F
-24c5 <circle> 0050
-24c6 <circle> 0051
-24c7 <circle> 0052
-24c8 <circle> 0053
-24c9 <circle> 0054
-24ca <circle> 0055
-24cb <circle> 0056
-24cc <circle> 0057
-24cd <circle> 0058
-24ce <circle> 0059
-24cf <circle> 005A
-24d0 <circle> 0061
-24d1 <circle> 0062
-24d2 <circle> 0063
-24d3 <circle> 0064
-24d4 <circle> 0065
-24d5 <circle> 0066
-24d6 <circle> 0067
-24d7 <circle> 0068
-24d8 <circle> 0069
-24d9 <circle> 006A
-24da <circle> 006B
-24db <circle> 006C
-24dc <circle> 006D
-24dd <circle> 006E
-24de <circle> 006F
-24df <circle> 0070
-24e0 <circle> 0071
-24e1 <circle> 0072
-24e2 <circle> 0073
-24e3 <circle> 0074
-24e4 <circle> 0075
-24e5 <circle> 0076
-24e6 <circle> 0077
-24e7 <circle> 0078
-24e8 <circle> 0079
-24e9 <circle> 007A
-24ea <circle> 0030
-2e9f <compat> 6BCD
-2ef3 <compat> 9F9F
-2f00 <compat> 4E00
-2f01 <compat> 4E28
-2f02 <compat> 4E36
-2f03 <compat> 4E3F
-2f04 <compat> 4E59
-2f05 <compat> 4E85
-2f06 <compat> 4E8C
-2f07 <compat> 4EA0
-2f08 <compat> 4EBA
-2f09 <compat> 513F
-2f0a <compat> 5165
-2f0b <compat> 516B
-2f0c <compat> 5182
-2f0d <compat> 5196
-2f0e <compat> 51AB
-2f0f <compat> 51E0
-2f10 <compat> 51F5
-2f11 <compat> 5200
-2f12 <compat> 529B
-2f13 <compat> 52F9
-2f14 <compat> 5315
-2f15 <compat> 531A
-2f16 <compat> 5338
-2f17 <compat> 5341
-2f18 <compat> 535C
-2f19 <compat> 5369
-2f1a <compat> 5382
-2f1b <compat> 53B6
-2f1c <compat> 53C8
-2f1d <compat> 53E3
-2f1e <compat> 56D7
-2f1f <compat> 571F
-2f20 <compat> 58EB
-2f21 <compat> 5902
-2f22 <compat> 590A
-2f23 <compat> 5915
-2f24 <compat> 5927
-2f25 <compat> 5973
-2f26 <compat> 5B50
-2f27 <compat> 5B80
-2f28 <compat> 5BF8
-2f29 <compat> 5C0F
-2f2a <compat> 5C22
-2f2b <compat> 5C38
-2f2c <compat> 5C6E
-2f2d <compat> 5C71
-2f2e <compat> 5DDB
-2f2f <compat> 5DE5
-2f30 <compat> 5DF1
-2f31 <compat> 5DFE
-2f32 <compat> 5E72
-2f33 <compat> 5E7A
-2f34 <compat> 5E7F
-2f35 <compat> 5EF4
-2f36 <compat> 5EFE
-2f37 <compat> 5F0B
-2f38 <compat> 5F13
-2f39 <compat> 5F50
-2f3a <compat> 5F61
-2f3b <compat> 5F73
-2f3c <compat> 5FC3
-2f3d <compat> 6208
-2f3e <compat> 6236
-2f3f <compat> 624B
-2f40 <compat> 652F
-2f41 <compat> 6534
-2f42 <compat> 6587
-2f43 <compat> 6597
-2f44 <compat> 65A4
-2f45 <compat> 65B9
-2f46 <compat> 65E0
-2f47 <compat> 65E5
-2f48 <compat> 66F0
-2f49 <compat> 6708
-2f4a <compat> 6728
-2f4b <compat> 6B20
-2f4c <compat> 6B62
-2f4d <compat> 6B79
-2f4e <compat> 6BB3
-2f4f <compat> 6BCB
-2f50 <compat> 6BD4
-2f51 <compat> 6BDB
-2f52 <compat> 6C0F
-2f53 <compat> 6C14
-2f54 <compat> 6C34
-2f55 <compat> 706B
-2f56 <compat> 722A
-2f57 <compat> 7236
-2f58 <compat> 723B
-2f59 <compat> 723F
-2f5a <compat> 7247
-2f5b <compat> 7259
-2f5c <compat> 725B
-2f5d <compat> 72AC
-2f5e <compat> 7384
-2f5f <compat> 7389
-2f60 <compat> 74DC
-2f61 <compat> 74E6
-2f62 <compat> 7518
-2f63 <compat> 751F
-2f64 <compat> 7528
-2f65 <compat> 7530
-2f66 <compat> 758B
-2f67 <compat> 7592
-2f68 <compat> 7676
-2f69 <compat> 767D
-2f6a <compat> 76AE
-2f6b <compat> 76BF
-2f6c <compat> 76EE
-2f6d <compat> 77DB
-2f6e <compat> 77E2
-2f6f <compat> 77F3
-2f70 <compat> 793A
-2f71 <compat> 79B8
-2f72 <compat> 79BE
-2f73 <compat> 7A74
-2f74 <compat> 7ACB
-2f75 <compat> 7AF9
-2f76 <compat> 7C73
-2f77 <compat> 7CF8
-2f78 <compat> 7F36
-2f79 <compat> 7F51
-2f7a <compat> 7F8A
-2f7b <compat> 7FBD
-2f7c <compat> 8001
-2f7d <compat> 800C
-2f7e <compat> 8012
-2f7f <compat> 8033
-2f80 <compat> 807F
-2f81 <compat> 8089
-2f82 <compat> 81E3
-2f83 <compat> 81EA
-2f84 <compat> 81F3
-2f85 <compat> 81FC
-2f86 <compat> 820C
-2f87 <compat> 821B
-2f88 <compat> 821F
-2f89 <compat> 826E
-2f8a <compat> 8272
-2f8b <compat> 8278
-2f8c <compat> 864D
-2f8d <compat> 866B
-2f8e <compat> 8840
-2f8f <compat> 884C
-2f90 <compat> 8863
-2f91 <compat> 897E
-2f92 <compat> 898B
-2f93 <compat> 89D2
-2f94 <compat> 8A00
-2f95 <compat> 8C37
-2f96 <compat> 8C46
-2f97 <compat> 8C55
-2f98 <compat> 8C78
-2f99 <compat> 8C9D
-2f9a <compat> 8D64
-2f9b <compat> 8D70
-2f9c <compat> 8DB3
-2f9d <compat> 8EAB
-2f9e <compat> 8ECA
-2f9f <compat> 8F9B
-2fa0 <compat> 8FB0
-2fa1 <compat> 8FB5
-2fa2 <compat> 9091
-2fa3 <compat> 9149
-2fa4 <compat> 91C6
-2fa5 <compat> 91CC
-2fa6 <compat> 91D1
-2fa7 <compat> 9577
-2fa8 <compat> 9580
-2fa9 <compat> 961C
-2faa <compat> 96B6
-2fab <compat> 96B9
-2fac <compat> 96E8
-2fad <compat> 9751
-2fae <compat> 975E
-2faf <compat> 9762
-2fb0 <compat> 9769
-2fb1 <compat> 97CB
-2fb2 <compat> 97ED
-2fb3 <compat> 97F3
-2fb4 <compat> 9801
-2fb5 <compat> 98A8
-2fb6 <compat> 98DB
-2fb7 <compat> 98DF
-2fb8 <compat> 9996
-2fb9 <compat> 9999
-2fba <compat> 99AC
-2fbb <compat> 9AA8
-2fbc <compat> 9AD8
-2fbd <compat> 9ADF
-2fbe <compat> 9B25
-2fbf <compat> 9B2F
-2fc0 <compat> 9B32
-2fc1 <compat> 9B3C
-2fc2 <compat> 9B5A
-2fc3 <compat> 9CE5
-2fc4 <compat> 9E75
-2fc5 <compat> 9E7F
-2fc6 <compat> 9EA5
-2fc7 <compat> 9EBB
-2fc8 <compat> 9EC3
-2fc9 <compat> 9ECD
-2fca <compat> 9ED1
-2fcb <compat> 9EF9
-2fcc <compat> 9EFD
-2fcd <compat> 9F0E
-2fce <compat> 9F13
-2fcf <compat> 9F20
-2fd0 <compat> 9F3B
-2fd1 <compat> 9F4A
-2fd2 <compat> 9F52
-2fd3 <compat> 9F8D
-2fd4 <compat> 9F9C
-2fd5 <compat> 9FA0
-3000 <wide> 0020
-3036 <compat> 3012
-3038 <compat> 5341
-3039 <compat> 5344
-303a <compat> 5345
-304c 304B 3099
-304e 304D 3099
-3050 304F 3099
-3052 3051 3099
-3054 3053 3099
-3056 3055 3099
-3058 3057 3099
-305a 3059 3099
-305c 305B 3099
-305e 305D 3099
-3060 305F 3099
-3062 3061 3099
-3065 3064 3099
-3067 3066 3099
-3069 3068 3099
-3070 306F 3099
-3071 306F 309A
-3073 3072 3099
-3074 3072 309A
-3076 3075 3099
-3077 3075 309A
-3079 3078 3099
-307a 3078 309A
-307c 307B 3099
-307d 307B 309A
-3094 3046 3099
-309b <compat> 0020 3099
-309c <compat> 0020 309A
-309e 309D 3099
-30ac 30AB 3099
-30ae 30AD 3099
-30b0 30AF 3099
-30b2 30B1 3099
-30b4 30B3 3099
-30b6 30B5 3099
-30b8 30B7 3099
-30ba 30B9 3099
-30bc 30BB 3099
-30be 30BD 3099
-30c0 30BF 3099
-30c2 30C1 3099
-30c5 30C4 3099
-30c7 30C6 3099
-30c9 30C8 3099
-30d0 30CF 3099
-30d1 30CF 309A
-30d3 30D2 3099
-30d4 30D2 309A
-30d6 30D5 3099
-30d7 30D5 309A
-30d9 30D8 3099
-30da 30D8 309A
-30dc 30DB 3099
-30dd 30DB 309A
-30f4 30A6 3099
-30f7 30EF 3099
-30f8 30F0 3099
-30f9 30F1 3099
-30fa 30F2 3099
-30fe 30FD 3099
-3131 <compat> 1100
-3132 <compat> 1101
-3133 <compat> 11AA
-3134 <compat> 1102
-3135 <compat> 11AC
-3136 <compat> 11AD
-3137 <compat> 1103
-3138 <compat> 1104
-3139 <compat> 1105
-313a <compat> 11B0
-313b <compat> 11B1
-313c <compat> 11B2
-313d <compat> 11B3
-313e <compat> 11B4
-313f <compat> 11B5
-3140 <compat> 111A
-3141 <compat> 1106
-3142 <compat> 1107
-3143 <compat> 1108
-3144 <compat> 1121
-3145 <compat> 1109
-3146 <compat> 110A
-3147 <compat> 110B
-3148 <compat> 110C
-3149 <compat> 110D
-314a <compat> 110E
-314b <compat> 110F
-314c <compat> 1110
-314d <compat> 1111
-314e <compat> 1112
-314f <compat> 1161
-3150 <compat> 1162
-3151 <compat> 1163
-3152 <compat> 1164
-3153 <compat> 1165
-3154 <compat> 1166
-3155 <compat> 1167
-3156 <compat> 1168
-3157 <compat> 1169
-3158 <compat> 116A
-3159 <compat> 116B
-315a <compat> 116C
-315b <compat> 116D
-315c <compat> 116E
-315d <compat> 116F
-315e <compat> 1170
-315f <compat> 1171
-3160 <compat> 1172
-3161 <compat> 1173
-3162 <compat> 1174
-3163 <compat> 1175
-3164 <compat> 1160
-3165 <compat> 1114
-3166 <compat> 1115
-3167 <compat> 11C7
-3168 <compat> 11C8
-3169 <compat> 11CC
-316a <compat> 11CE
-316b <compat> 11D3
-316c <compat> 11D7
-316d <compat> 11D9
-316e <compat> 111C
-316f <compat> 11DD
-3170 <compat> 11DF
-3171 <compat> 111D
-3172 <compat> 111E
-3173 <compat> 1120
-3174 <compat> 1122
-3175 <compat> 1123
-3176 <compat> 1127
-3177 <compat> 1129
-3178 <compat> 112B
-3179 <compat> 112C
-317a <compat> 112D
-317b <compat> 112E
-317c <compat> 112F
-317d <compat> 1132
-317e <compat> 1136
-317f <compat> 1140
-3180 <compat> 1147
-3181 <compat> 114C
-3182 <compat> 11F1
-3183 <compat> 11F2
-3184 <compat> 1157
-3185 <compat> 1158
-3186 <compat> 1159
-3187 <compat> 1184
-3188 <compat> 1185
-3189 <compat> 1188
-318a <compat> 1191
-318b <compat> 1192
-318c <compat> 1194
-318d <compat> 119E
-318e <compat> 11A1
-3192 <super> 4E00
-3193 <super> 4E8C
-3194 <super> 4E09
-3195 <super> 56DB
-3196 <super> 4E0A
-3197 <super> 4E2D
-3198 <super> 4E0B
-3199 <super> 7532
-319a <super> 4E59
-319b <super> 4E19
-319c <super> 4E01
-319d <super> 5929
-319e <super> 5730
-319f <super> 4EBA
-3200 <compat> 0028 1100 0029
-3201 <compat> 0028 1102 0029
-3202 <compat> 0028 1103 0029
-3203 <compat> 0028 1105 0029
-3204 <compat> 0028 1106 0029
-3205 <compat> 0028 1107 0029
-3206 <compat> 0028 1109 0029
-3207 <compat> 0028 110B 0029
-3208 <compat> 0028 110C 0029
-3209 <compat> 0028 110E 0029
-320a <compat> 0028 110F 0029
-320b <compat> 0028 1110 0029
-320c <compat> 0028 1111 0029
-320d <compat> 0028 1112 0029
-320e <compat> 0028 1100 1161 0029
-320f <compat> 0028 1102 1161 0029
-3210 <compat> 0028 1103 1161 0029
-3211 <compat> 0028 1105 1161 0029
-3212 <compat> 0028 1106 1161 0029
-3213 <compat> 0028 1107 1161 0029
-3214 <compat> 0028 1109 1161 0029
-3215 <compat> 0028 110B 1161 0029
-3216 <compat> 0028 110C 1161 0029
-3217 <compat> 0028 110E 1161 0029
-3218 <compat> 0028 110F 1161 0029
-3219 <compat> 0028 1110 1161 0029
-321a <compat> 0028 1111 1161 0029
-321b <compat> 0028 1112 1161 0029
-321c <compat> 0028 110C 116E 0029
-3220 <compat> 0028 4E00 0029
-3221 <compat> 0028 4E8C 0029
-3222 <compat> 0028 4E09 0029
-3223 <compat> 0028 56DB 0029
-3224 <compat> 0028 4E94 0029
-3225 <compat> 0028 516D 0029
-3226 <compat> 0028 4E03 0029
-3227 <compat> 0028 516B 0029
-3228 <compat> 0028 4E5D 0029
-3229 <compat> 0028 5341 0029
-322a <compat> 0028 6708 0029
-322b <compat> 0028 706B 0029
-322c <compat> 0028 6C34 0029
-322d <compat> 0028 6728 0029
-322e <compat> 0028 91D1 0029
-322f <compat> 0028 571F 0029
-3230 <compat> 0028 65E5 0029
-3231 <compat> 0028 682A 0029
-3232 <compat> 0028 6709 0029
-3233 <compat> 0028 793E 0029
-3234 <compat> 0028 540D 0029
-3235 <compat> 0028 7279 0029
-3236 <compat> 0028 8CA1 0029
-3237 <compat> 0028 795D 0029
-3238 <compat> 0028 52B4 0029
-3239 <compat> 0028 4EE3 0029
-323a <compat> 0028 547C 0029
-323b <compat> 0028 5B66 0029
-323c <compat> 0028 76E3 0029
-323d <compat> 0028 4F01 0029
-323e <compat> 0028 8CC7 0029
-323f <compat> 0028 5354 0029
-3240 <compat> 0028 796D 0029
-3241 <compat> 0028 4F11 0029
-3242 <compat> 0028 81EA 0029
-3243 <compat> 0028 81F3 0029
-3260 <circle> 1100
-3261 <circle> 1102
-3262 <circle> 1103
-3263 <circle> 1105
-3264 <circle> 1106
-3265 <circle> 1107
-3266 <circle> 1109
-3267 <circle> 110B
-3268 <circle> 110C
-3269 <circle> 110E
-326a <circle> 110F
-326b <circle> 1110
-326c <circle> 1111
-326d <circle> 1112
-326e <circle> 1100 1161
-326f <circle> 1102 1161
-3270 <circle> 1103 1161
-3271 <circle> 1105 1161
-3272 <circle> 1106 1161
-3273 <circle> 1107 1161
-3274 <circle> 1109 1161
-3275 <circle> 110B 1161
-3276 <circle> 110C 1161
-3277 <circle> 110E 1161
-3278 <circle> 110F 1161
-3279 <circle> 1110 1161
-327a <circle> 1111 1161
-327b <circle> 1112 1161
-3280 <circle> 4E00
-3281 <circle> 4E8C
-3282 <circle> 4E09
-3283 <circle> 56DB
-3284 <circle> 4E94
-3285 <circle> 516D
-3286 <circle> 4E03
-3287 <circle> 516B
-3288 <circle> 4E5D
-3289 <circle> 5341
-328a <circle> 6708
-328b <circle> 706B
-328c <circle> 6C34
-328d <circle> 6728
-328e <circle> 91D1
-328f <circle> 571F
-3290 <circle> 65E5
-3291 <circle> 682A
-3292 <circle> 6709
-3293 <circle> 793E
-3294 <circle> 540D
-3295 <circle> 7279
-3296 <circle> 8CA1
-3297 <circle> 795D
-3298 <circle> 52B4
-3299 <circle> 79D8
-329a <circle> 7537
-329b <circle> 5973
-329c <circle> 9069
-329d <circle> 512A
-329e <circle> 5370
-329f <circle> 6CE8
-32a0 <circle> 9805
-32a1 <circle> 4F11
-32a2 <circle> 5199
-32a3 <circle> 6B63
-32a4 <circle> 4E0A
-32a5 <circle> 4E2D
-32a6 <circle> 4E0B
-32a7 <circle> 5DE6
-32a8 <circle> 53F3
-32a9 <circle> 533B
-32aa <circle> 5B97
-32ab <circle> 5B66
-32ac <circle> 76E3
-32ad <circle> 4F01
-32ae <circle> 8CC7
-32af <circle> 5354
-32b0 <circle> 591C
-32c0 <compat> 0031 6708
-32c1 <compat> 0032 6708
-32c2 <compat> 0033 6708
-32c3 <compat> 0034 6708
-32c4 <compat> 0035 6708
-32c5 <compat> 0036 6708
-32c6 <compat> 0037 6708
-32c7 <compat> 0038 6708
-32c8 <compat> 0039 6708
-32c9 <compat> 0031 0030 6708
-32ca <compat> 0031 0031 6708
-32cb <compat> 0031 0032 6708
-32d0 <circle> 30A2
-32d1 <circle> 30A4
-32d2 <circle> 30A6
-32d3 <circle> 30A8
-32d4 <circle> 30AA
-32d5 <circle> 30AB
-32d6 <circle> 30AD
-32d7 <circle> 30AF
-32d8 <circle> 30B1
-32d9 <circle> 30B3
-32da <circle> 30B5
-32db <circle> 30B7
-32dc <circle> 30B9
-32dd <circle> 30BB
-32de <circle> 30BD
-32df <circle> 30BF
-32e0 <circle> 30C1
-32e1 <circle> 30C4
-32e2 <circle> 30C6
-32e3 <circle> 30C8
-32e4 <circle> 30CA
-32e5 <circle> 30CB
-32e6 <circle> 30CC
-32e7 <circle> 30CD
-32e8 <circle> 30CE
-32e9 <circle> 30CF
-32ea <circle> 30D2
-32eb <circle> 30D5
-32ec <circle> 30D8
-32ed <circle> 30DB
-32ee <circle> 30DE
-32ef <circle> 30DF
-32f0 <circle> 30E0
-32f1 <circle> 30E1
-32f2 <circle> 30E2
-32f3 <circle> 30E4
-32f4 <circle> 30E6
-32f5 <circle> 30E8
-32f6 <circle> 30E9
-32f7 <circle> 30EA
-32f8 <circle> 30EB
-32f9 <circle> 30EC
-32fa <circle> 30ED
-32fb <circle> 30EF
-32fc <circle> 30F0
-32fd <circle> 30F1
-32fe <circle> 30F2
-3300 <square> 30A2 30D1 30FC 30C8
-3301 <square> 30A2 30EB 30D5 30A1
-3302 <square> 30A2 30F3 30DA 30A2
-3303 <square> 30A2 30FC 30EB
-3304 <square> 30A4 30CB 30F3 30B0
-3305 <square> 30A4 30F3 30C1
-3306 <square> 30A6 30A9 30F3
-3307 <square> 30A8 30B9 30AF 30FC 30C9
-3308 <square> 30A8 30FC 30AB 30FC
-3309 <square> 30AA 30F3 30B9
-330a <square> 30AA 30FC 30E0
-330b <square> 30AB 30A4 30EA
-330c <square> 30AB 30E9 30C3 30C8
-330d <square> 30AB 30ED 30EA 30FC
-330e <square> 30AC 30ED 30F3
-330f <square> 30AC 30F3 30DE
-3310 <square> 30AE 30AC
-3311 <square> 30AE 30CB 30FC
-3312 <square> 30AD 30E5 30EA 30FC
-3313 <square> 30AE 30EB 30C0 30FC
-3314 <square> 30AD 30ED
-3315 <square> 30AD 30ED 30B0 30E9 30E0
-3316 <square> 30AD 30ED 30E1 30FC 30C8 30EB
-3317 <square> 30AD 30ED 30EF 30C3 30C8
-3318 <square> 30B0 30E9 30E0
-3319 <square> 30B0 30E9 30E0 30C8 30F3
-331a <square> 30AF 30EB 30BC 30A4 30ED
-331b <square> 30AF 30ED 30FC 30CD
-331c <square> 30B1 30FC 30B9
-331d <square> 30B3 30EB 30CA
-331e <square> 30B3 30FC 30DD
-331f <square> 30B5 30A4 30AF 30EB
-3320 <square> 30B5 30F3 30C1 30FC 30E0
-3321 <square> 30B7 30EA 30F3 30B0
-3322 <square> 30BB 30F3 30C1
-3323 <square> 30BB 30F3 30C8
-3324 <square> 30C0 30FC 30B9
-3325 <square> 30C7 30B7
-3326 <square> 30C9 30EB
-3327 <square> 30C8 30F3
-3328 <square> 30CA 30CE
-3329 <square> 30CE 30C3 30C8
-332a <square> 30CF 30A4 30C4
-332b <square> 30D1 30FC 30BB 30F3 30C8
-332c <square> 30D1 30FC 30C4
-332d <square> 30D0 30FC 30EC 30EB
-332e <square> 30D4 30A2 30B9 30C8 30EB
-332f <square> 30D4 30AF 30EB
-3330 <square> 30D4 30B3
-3331 <square> 30D3 30EB
-3332 <square> 30D5 30A1 30E9 30C3 30C9
-3333 <square> 30D5 30A3 30FC 30C8
-3334 <square> 30D6 30C3 30B7 30A7 30EB
-3335 <square> 30D5 30E9 30F3
-3336 <square> 30D8 30AF 30BF 30FC 30EB
-3337 <square> 30DA 30BD
-3338 <square> 30DA 30CB 30D2
-3339 <square> 30D8 30EB 30C4
-333a <square> 30DA 30F3 30B9
-333b <square> 30DA 30FC 30B8
-333c <square> 30D9 30FC 30BF
-333d <square> 30DD 30A4 30F3 30C8
-333e <square> 30DC 30EB 30C8
-333f <square> 30DB 30F3
-3340 <square> 30DD 30F3 30C9
-3341 <square> 30DB 30FC 30EB
-3342 <square> 30DB 30FC 30F3
-3343 <square> 30DE 30A4 30AF 30ED
-3344 <square> 30DE 30A4 30EB
-3345 <square> 30DE 30C3 30CF
-3346 <square> 30DE 30EB 30AF
-3347 <square> 30DE 30F3 30B7 30E7 30F3
-3348 <square> 30DF 30AF 30ED 30F3
-3349 <square> 30DF 30EA
-334a <square> 30DF 30EA 30D0 30FC 30EB
-334b <square> 30E1 30AC
-334c <square> 30E1 30AC 30C8 30F3
-334d <square> 30E1 30FC 30C8 30EB
-334e <square> 30E4 30FC 30C9
-334f <square> 30E4 30FC 30EB
-3350 <square> 30E6 30A2 30F3
-3351 <square> 30EA 30C3 30C8 30EB
-3352 <square> 30EA 30E9
-3353 <square> 30EB 30D4 30FC
-3354 <square> 30EB 30FC 30D6 30EB
-3355 <square> 30EC 30E0
-3356 <square> 30EC 30F3 30C8 30B2 30F3
-3357 <square> 30EF 30C3 30C8
-3358 <compat> 0030 70B9
-3359 <compat> 0031 70B9
-335a <compat> 0032 70B9
-335b <compat> 0033 70B9
-335c <compat> 0034 70B9
-335d <compat> 0035 70B9
-335e <compat> 0036 70B9
-335f <compat> 0037 70B9
-3360 <compat> 0038 70B9
-3361 <compat> 0039 70B9
-3362 <compat> 0031 0030 70B9
-3363 <compat> 0031 0031 70B9
-3364 <compat> 0031 0032 70B9
-3365 <compat> 0031 0033 70B9
-3366 <compat> 0031 0034 70B9
-3367 <compat> 0031 0035 70B9
-3368 <compat> 0031 0036 70B9
-3369 <compat> 0031 0037 70B9
-336a <compat> 0031 0038 70B9
-336b <compat> 0031 0039 70B9
-336c <compat> 0032 0030 70B9
-336d <compat> 0032 0031 70B9
-336e <compat> 0032 0032 70B9
-336f <compat> 0032 0033 70B9
-3370 <compat> 0032 0034 70B9
-3371 <square> 0068 0050 0061
-3372 <square> 0064 0061
-3373 <square> 0041 0055
-3374 <square> 0062 0061 0072
-3375 <square> 006F 0056
-3376 <square> 0070 0063
-337b <square> 5E73 6210
-337c <square> 662D 548C
-337d <square> 5927 6B63
-337e <square> 660E 6CBB
-337f <square> 682A 5F0F 4F1A 793E
-3380 <square> 0070 0041
-3381 <square> 006E 0041
-3382 <square> 03BC 0041
-3383 <square> 006D 0041
-3384 <square> 006B 0041
-3385 <square> 004B 0042
-3386 <square> 004D 0042
-3387 <square> 0047 0042
-3388 <square> 0063 0061 006C
-3389 <square> 006B 0063 0061 006C
-338a <square> 0070 0046
-338b <square> 006E 0046
-338c <square> 03BC 0046
-338d <square> 03BC 0067
-338e <square> 006D 0067
-338f <square> 006B 0067
-3390 <square> 0048 007A
-3391 <square> 006B 0048 007A
-3392 <square> 004D 0048 007A
-3393 <square> 0047 0048 007A
-3394 <square> 0054 0048 007A
-3395 <square> 03BC 2113
-3396 <square> 006D 2113
-3397 <square> 0064 2113
-3398 <square> 006B 2113
-3399 <square> 0066 006D
-339a <square> 006E 006D
-339b <square> 03BC 006D
-339c <square> 006D 006D
-339d <square> 0063 006D
-339e <square> 006B 006D
-339f <square> 006D 006D 00B2
-33a0 <square> 0063 006D 00B2
-33a1 <square> 006D 00B2
-33a2 <square> 006B 006D 00B2
-33a3 <square> 006D 006D 00B3
-33a4 <square> 0063 006D 00B3
-33a5 <square> 006D 00B3
-33a6 <square> 006B 006D 00B3
-33a7 <square> 006D 2215 0073
-33a8 <square> 006D 2215 0073 00B2
-33a9 <square> 0050 0061
-33aa <square> 006B 0050 0061
-33ab <square> 004D 0050 0061
-33ac <square> 0047 0050 0061
-33ad <square> 0072 0061 0064
-33ae <square> 0072 0061 0064 2215 0073
-33af <square> 0072 0061 0064 2215 0073 00B2
-33b0 <square> 0070 0073
-33b1 <square> 006E 0073
-33b2 <square> 03BC 0073
-33b3 <square> 006D 0073
-33b4 <square> 0070 0056
-33b5 <square> 006E 0056
-33b6 <square> 03BC 0056
-33b7 <square> 006D 0056
-33b8 <square> 006B 0056
-33b9 <square> 004D 0056
-33ba <square> 0070 0057
-33bb <square> 006E 0057
-33bc <square> 03BC 0057
-33bd <square> 006D 0057
-33be <square> 006B 0057
-33bf <square> 004D 0057
-33c0 <square> 006B 03A9
-33c1 <square> 004D 03A9
-33c2 <square> 0061 002E 006D 002E
-33c3 <square> 0042 0071
-33c4 <square> 0063 0063
-33c5 <square> 0063 0064
-33c6 <square> 0043 2215 006B 0067
-33c7 <square> 0043 006F 002E
-33c8 <square> 0064 0042
-33c9 <square> 0047 0079
-33ca <square> 0068 0061
-33cb <square> 0048 0050
-33cc <square> 0069 006E
-33cd <square> 004B 004B
-33ce <square> 004B 004D
-33cf <square> 006B 0074
-33d0 <square> 006C 006D
-33d1 <square> 006C 006E
-33d2 <square> 006C 006F 0067
-33d3 <square> 006C 0078
-33d4 <square> 006D 0062
-33d5 <square> 006D 0069 006C
-33d6 <square> 006D 006F 006C
-33d7 <square> 0050 0048
-33d8 <square> 0070 002E 006D 002E
-33d9 <square> 0050 0050 004D
-33da <square> 0050 0052
-33db <square> 0073 0072
-33dc <square> 0053 0076
-33dd <square> 0057 0062
-33e0 <compat> 0031 65E5
-33e1 <compat> 0032 65E5
-33e2 <compat> 0033 65E5
-33e3 <compat> 0034 65E5
-33e4 <compat> 0035 65E5
-33e5 <compat> 0036 65E5
-33e6 <compat> 0037 65E5
-33e7 <compat> 0038 65E5
-33e8 <compat> 0039 65E5
-33e9 <compat> 0031 0030 65E5
-33ea <compat> 0031 0031 65E5
-33eb <compat> 0031 0032 65E5
-33ec <compat> 0031 0033 65E5
-33ed <compat> 0031 0034 65E5
-33ee <compat> 0031 0035 65E5
-33ef <compat> 0031 0036 65E5
-33f0 <compat> 0031 0037 65E5
-33f1 <compat> 0031 0038 65E5
-33f2 <compat> 0031 0039 65E5
-33f3 <compat> 0032 0030 65E5
-33f4 <compat> 0032 0031 65E5
-33f5 <compat> 0032 0032 65E5
-33f6 <compat> 0032 0033 65E5
-33f7 <compat> 0032 0034 65E5
-33f8 <compat> 0032 0035 65E5
-33f9 <compat> 0032 0036 65E5
-33fa <compat> 0032 0037 65E5
-33fb <compat> 0032 0038 65E5
-33fc <compat> 0032 0039 65E5
-33fd <compat> 0033 0030 65E5
-33fe <compat> 0033 0031 65E5
-f900 8C48
-f901 66F4
-f902 8ECA
-f903 8CC8
-f904 6ED1
-f905 4E32
-f906 53E5
-f907 f908 9F9C
-f909 5951
-f90a 91D1
-f90b 5587
-f90c 5948
-f90d 61F6
-f90e 7669
-f90f 7F85
-f910 863F
-f911 87BA
-f912 88F8
-f913 908F
-f914 6A02
-f915 6D1B
-f916 70D9
-f917 73DE
-f918 843D
-f919 916A
-f91a 99F1
-f91b 4E82
-f91c 5375
-f91d 6B04
-f91e 721B
-f91f 862D
-f920 9E1E
-f921 5D50
-f922 6FEB
-f923 85CD
-f924 8964
-f925 62C9
-f926 81D8
-f927 881F
-f928 5ECA
-f929 6717
-f92a 6D6A
-f92b 72FC
-f92c 90CE
-f92d 4F86
-f92e 51B7
-f92f 52DE
-f930 64C4
-f931 6AD3
-f932 7210
-f933 76E7
-f934 8001
-f935 8606
-f936 865C
-f937 8DEF
-f938 9732
-f939 9B6F
-f93a 9DFA
-f93b 788C
-f93c 797F
-f93d 7DA0
-f93e 83C9
-f93f 9304
-f940 9E7F
-f941 8AD6
-f942 58DF
-f943 5F04
-f944 7C60
-f945 807E
-f946 7262
-f947 78CA
-f948 8CC2
-f949 96F7
-f94a 58D8
-f94b 5C62
-f94c 6A13
-f94d 6DDA
-f94e 6F0F
-f94f 7D2F
-f950 7E37
-f951 96FB
-f952 52D2
-f953 808B
-f954 51DC
-f955 51CC
-f956 7A1C
-f957 7DBE
-f958 83F1
-f959 9675
-f95a 8B80
-f95b 62CF
-f95c 6A02
-f95d 8AFE
-f95e 4E39
-f95f 5BE7
-f960 6012
-f961 7387
-f962 7570
-f963 5317
-f964 78FB
-f965 4FBF
-f966 5FA9
-f967 4E0D
-f968 6CCC
-f969 6578
-f96a 7D22
-f96b 53C3
-f96c 585E
-f96d 7701
-f96e 8449
-f96f 8AAA
-f970 6BBA
-f971 8FB0
-f972 6C88
-f973 62FE
-f974 82E5
-f975 63A0
-f976 7565
-f977 4EAE
-f978 5169
-f979 51C9
-f97a 6881
-f97b 7CE7
-f97c 826F
-f97d 8AD2
-f97e 91CF
-f97f 52F5
-f980 5442
-f981 5973
-f982 5EEC
-f983 65C5
-f984 6FFE
-f985 792A
-f986 95AD
-f987 9A6A
-f988 9E97
-f989 9ECE
-f98a 529B
-f98b 66C6
-f98c 6B77
-f98d 8F62
-f98e 5E74
-f98f 6190
-f990 6200
-f991 649A
-f992 6F23
-f993 7149
-f994 7489
-f995 79CA
-f996 7DF4
-f997 806F
-f998 8F26
-f999 84EE
-f99a 9023
-f99b 934A
-f99c 5217
-f99d 52A3
-f99e 54BD
-f99f 70C8
-f9a0 88C2
-f9a1 8AAA
-f9a2 5EC9
-f9a3 5FF5
-f9a4 637B
-f9a5 6BAE
-f9a6 7C3E
-f9a7 7375
-f9a8 4EE4
-f9a9 56F9
-f9aa 5BE7
-f9ab 5DBA
-f9ac 601C
-f9ad 73B2
-f9ae 7469
-f9af 7F9A
-f9b0 8046
-f9b1 9234
-f9b2 96F6
-f9b3 9748
-f9b4 9818
-f9b5 4F8B
-f9b6 79AE
-f9b7 91B4
-f9b8 96B8
-f9b9 60E1
-f9ba 4E86
-f9bb 50DA
-f9bc 5BEE
-f9bd 5C3F
-f9be 6599
-f9bf 6A02
-f9c0 71CE
-f9c1 7642
-f9c2 84FC
-f9c3 907C
-f9c4 9F8D
-f9c5 6688
-f9c6 962E
-f9c7 5289
-f9c8 677B
-f9c9 67F3
-f9ca 6D41
-f9cb 6E9C
-f9cc 7409
-f9cd 7559
-f9ce 786B
-f9cf 7D10
-f9d0 985E
-f9d1 516D
-f9d2 622E
-f9d3 9678
-f9d4 502B
-f9d5 5D19
-f9d6 6DEA
-f9d7 8F2A
-f9d8 5F8B
-f9d9 6144
-f9da 6817
-f9db 7387
-f9dc 9686
-f9dd 5229
-f9de 540F
-f9df 5C65
-f9e0 6613
-f9e1 674E
-f9e2 68A8
-f9e3 6CE5
-f9e4 7406
-f9e5 75E2
-f9e6 7F79
-f9e7 88CF
-f9e8 88E1
-f9e9 91CC
-f9ea 96E2
-f9eb 533F
-f9ec 6EBA
-f9ed 541D
-f9ee 71D0
-f9ef 7498
-f9f0 85FA
-f9f1 96A3
-f9f2 9C57
-f9f3 9E9F
-f9f4 6797
-f9f5 6DCB
-f9f6 81E8
-f9f7 7ACB
-f9f8 7B20
-f9f9 7C92
-f9fa 72C0
-f9fb 7099
-f9fc 8B58
-f9fd 4EC0
-f9fe 8336
-f9ff 523A
-fa00 5207
-fa01 5EA6
-fa02 62D3
-fa03 7CD6
-fa04 5B85
-fa05 6D1E
-fa06 66B4
-fa07 8F3B
-fa08 884C
-fa09 964D
-fa0a 898B
-fa0b 5ED3
-fa0c 5140
-fa0d 55C0
-fa10 585A
-fa12 6674
-fa15 51DE
-fa16 732A
-fa17 76CA
-fa18 793C
-fa19 795E
-fa1a 7965
-fa1b 798F
-fa1c 9756
-fa1d 7CBE
-fa1e 7FBD
-fa20 8612
-fa22 8AF8
-fa25 9038
-fa26 90FD
-fa2a 98EF
-fa2b 98FC
-fa2c 9928
-fa2d 9DB4
-fb00 <compat> 0066 0066
-fb01 <compat> 0066 0069
-fb02 <compat> 0066 006C
-fb03 <compat> 0066 0066 0069
-fb04 <compat> 0066 0066 006C
-fb05 <compat> 017F 0074
-fb06 <compat> 0073 0074
-fb13 <compat> 0574 0576
-fb14 <compat> 0574 0565
-fb15 <compat> 0574 056B
-fb16 <compat> 057E 0576
-fb17 <compat> 0574 056D
-fb1d 05D9 05B4
-fb1f 05F2 05B7
-fb20 <font> 05E2
-fb21 <font> 05D0
-fb22 <font> 05D3
-fb23 <font> 05D4
-fb24 <font> 05DB
-fb25 <font> 05DC
-fb26 <font> 05DD
-fb27 <font> 05E8
-fb28 <font> 05EA
-fb29 <font> 002B
-fb2a 05E9 05C1
-fb2b 05E9 05C2
-fb2c FB49 05C1
-fb2d FB49 05C2
-fb2e 05D0 05B7
-fb2f 05D0 05B8
-fb30 05D0 05BC
-fb31 05D1 05BC
-fb32 05D2 05BC
-fb33 05D3 05BC
-fb34 05D4 05BC
-fb35 05D5 05BC
-fb36 05D6 05BC
-fb38 05D8 05BC
-fb39 05D9 05BC
-fb3a 05DA 05BC
-fb3b 05DB 05BC
-fb3c 05DC 05BC
-fb3e 05DE 05BC
-fb40 05E0 05BC
-fb41 05E1 05BC
-fb43 05E3 05BC
-fb44 05E4 05BC
-fb46 05E6 05BC
-fb47 05E7 05BC
-fb48 05E8 05BC
-fb49 05E9 05BC
-fb4a 05EA 05BC
-fb4b 05D5 05B9
-fb4c 05D1 05BF
-fb4d 05DB 05BF
-fb4e 05E4 05BF
-fb4f <compat> 05D0 05DC
-fb50 <isolated> 0671
-fb51 <final> 0671
-fb52 <isolated> 067B
-fb53 <final> 067B
-fb54 <initial> 067B
-fb55 <medial> 067B
-fb56 <isolated> 067E
-fb57 <final> 067E
-fb58 <initial> 067E
-fb59 <medial> 067E
-fb5a <isolated> 0680
-fb5b <final> 0680
-fb5c <initial> 0680
-fb5d <medial> 0680
-fb5e <isolated> 067A
-fb5f <final> 067A
-fb60 <initial> 067A
-fb61 <medial> 067A
-fb62 <isolated> 067F
-fb63 <final> 067F
-fb64 <initial> 067F
-fb65 <medial> 067F
-fb66 <isolated> 0679
-fb67 <final> 0679
-fb68 <initial> 0679
-fb69 <medial> 0679
-fb6a <isolated> 06A4
-fb6b <final> 06A4
-fb6c <initial> 06A4
-fb6d <medial> 06A4
-fb6e <isolated> 06A6
-fb6f <final> 06A6
-fb70 <initial> 06A6
-fb71 <medial> 06A6
-fb72 <isolated> 0684
-fb73 <final> 0684
-fb74 <initial> 0684
-fb75 <medial> 0684
-fb76 <isolated> 0683
-fb77 <final> 0683
-fb78 <initial> 0683
-fb79 <medial> 0683
-fb7a <isolated> 0686
-fb7b <final> 0686
-fb7c <initial> 0686
-fb7d <medial> 0686
-fb7e <isolated> 0687
-fb7f <final> 0687
-fb80 <initial> 0687
-fb81 <medial> 0687
-fb82 <isolated> 068D
-fb83 <final> 068D
-fb84 <isolated> 068C
-fb85 <final> 068C
-fb86 <isolated> 068E
-fb87 <final> 068E
-fb88 <isolated> 0688
-fb89 <final> 0688
-fb8a <isolated> 0698
-fb8b <final> 0698
-fb8c <isolated> 0691
-fb8d <final> 0691
-fb8e <isolated> 06A9
-fb8f <final> 06A9
-fb90 <initial> 06A9
-fb91 <medial> 06A9
-fb92 <isolated> 06AF
-fb93 <final> 06AF
-fb94 <initial> 06AF
-fb95 <medial> 06AF
-fb96 <isolated> 06B3
-fb97 <final> 06B3
-fb98 <initial> 06B3
-fb99 <medial> 06B3
-fb9a <isolated> 06B1
-fb9b <final> 06B1
-fb9c <initial> 06B1
-fb9d <medial> 06B1
-fb9e <isolated> 06BA
-fb9f <final> 06BA
-fba0 <isolated> 06BB
-fba1 <final> 06BB
-fba2 <initial> 06BB
-fba3 <medial> 06BB
-fba4 <isolated> 06C0
-fba5 <final> 06C0
-fba6 <isolated> 06C1
-fba7 <final> 06C1
-fba8 <initial> 06C1
-fba9 <medial> 06C1
-fbaa <isolated> 06BE
-fbab <final> 06BE
-fbac <initial> 06BE
-fbad <medial> 06BE
-fbae <isolated> 06D2
-fbaf <final> 06D2
-fbb0 <isolated> 06D3
-fbb1 <final> 06D3
-fbd3 <isolated> 06AD
-fbd4 <final> 06AD
-fbd5 <initial> 06AD
-fbd6 <medial> 06AD
-fbd7 <isolated> 06C7
-fbd8 <final> 06C7
-fbd9 <isolated> 06C6
-fbda <final> 06C6
-fbdb <isolated> 06C8
-fbdc <final> 06C8
-fbdd <isolated> 0677
-fbde <isolated> 06CB
-fbdf <final> 06CB
-fbe0 <isolated> 06C5
-fbe1 <final> 06C5
-fbe2 <isolated> 06C9
-fbe3 <final> 06C9
-fbe4 <isolated> 06D0
-fbe5 <final> 06D0
-fbe6 <initial> 06D0
-fbe7 <medial> 06D0
-fbe8 <initial> 0649
-fbe9 <medial> 0649
-fbea <isolated> 0626 0627
-fbeb <final> 0626 0627
-fbec <isolated> 0626 06D5
-fbed <final> 0626 06D5
-fbee <isolated> 0626 0648
-fbef <final> 0626 0648
-fbf0 <isolated> 0626 06C7
-fbf1 <final> 0626 06C7
-fbf2 <isolated> 0626 06C6
-fbf3 <final> 0626 06C6
-fbf4 <isolated> 0626 06C8
-fbf5 <final> 0626 06C8
-fbf6 <isolated> 0626 06D0
-fbf7 <final> 0626 06D0
-fbf8 <initial> 0626 06D0
-fbf9 <isolated> 0626 0649
-fbfa <final> 0626 0649
-fbfb <initial> 0626 0649
-fbfc <isolated> 06CC
-fbfd <final> 06CC
-fbfe <initial> 06CC
-fbff <medial> 06CC
-fc00 <isolated> 0626 062C
-fc01 <isolated> 0626 062D
-fc02 <isolated> 0626 0645
-fc03 <isolated> 0626 0649
-fc04 <isolated> 0626 064A
-fc05 <isolated> 0628 062C
-fc06 <isolated> 0628 062D
-fc07 <isolated> 0628 062E
-fc08 <isolated> 0628 0645
-fc09 <isolated> 0628 0649
-fc0a <isolated> 0628 064A
-fc0b <isolated> 062A 062C
-fc0c <isolated> 062A 062D
-fc0d <isolated> 062A 062E
-fc0e <isolated> 062A 0645
-fc0f <isolated> 062A 0649
-fc10 <isolated> 062A 064A
-fc11 <isolated> 062B 062C
-fc12 <isolated> 062B 0645
-fc13 <isolated> 062B 0649
-fc14 <isolated> 062B 064A
-fc15 <isolated> 062C 062D
-fc16 <isolated> 062C 0645
-fc17 <isolated> 062D 062C
-fc18 <isolated> 062D 0645
-fc19 <isolated> 062E 062C
-fc1a <isolated> 062E 062D
-fc1b <isolated> 062E 0645
-fc1c <isolated> 0633 062C
-fc1d <isolated> 0633 062D
-fc1e <isolated> 0633 062E
-fc1f <isolated> 0633 0645
-fc20 <isolated> 0635 062D
-fc21 <isolated> 0635 0645
-fc22 <isolated> 0636 062C
-fc23 <isolated> 0636 062D
-fc24 <isolated> 0636 062E
-fc25 <isolated> 0636 0645
-fc26 <isolated> 0637 062D
-fc27 <isolated> 0637 0645
-fc28 <isolated> 0638 0645
-fc29 <isolated> 0639 062C
-fc2a <isolated> 0639 0645
-fc2b <isolated> 063A 062C
-fc2c <isolated> 063A 0645
-fc2d <isolated> 0641 062C
-fc2e <isolated> 0641 062D
-fc2f <isolated> 0641 062E
-fc30 <isolated> 0641 0645
-fc31 <isolated> 0641 0649
-fc32 <isolated> 0641 064A
-fc33 <isolated> 0642 062D
-fc34 <isolated> 0642 0645
-fc35 <isolated> 0642 0649
-fc36 <isolated> 0642 064A
-fc37 <isolated> 0643 0627
-fc38 <isolated> 0643 062C
-fc39 <isolated> 0643 062D
-fc3a <isolated> 0643 062E
-fc3b <isolated> 0643 0644
-fc3c <isolated> 0643 0645
-fc3d <isolated> 0643 0649
-fc3e <isolated> 0643 064A
-fc3f <isolated> 0644 062C
-fc40 <isolated> 0644 062D
-fc41 <isolated> 0644 062E
-fc42 <isolated> 0644 0645
-fc43 <isolated> 0644 0649
-fc44 <isolated> 0644 064A
-fc45 <isolated> 0645 062C
-fc46 <isolated> 0645 062D
-fc47 <isolated> 0645 062E
-fc48 <isolated> 0645 0645
-fc49 <isolated> 0645 0649
-fc4a <isolated> 0645 064A
-fc4b <isolated> 0646 062C
-fc4c <isolated> 0646 062D
-fc4d <isolated> 0646 062E
-fc4e <isolated> 0646 0645
-fc4f <isolated> 0646 0649
-fc50 <isolated> 0646 064A
-fc51 <isolated> 0647 062C
-fc52 <isolated> 0647 0645
-fc53 <isolated> 0647 0649
-fc54 <isolated> 0647 064A
-fc55 <isolated> 064A 062C
-fc56 <isolated> 064A 062D
-fc57 <isolated> 064A 062E
-fc58 <isolated> 064A 0645
-fc59 <isolated> 064A 0649
-fc5a <isolated> 064A 064A
-fc5b <isolated> 0630 0670
-fc5c <isolated> 0631 0670
-fc5d <isolated> 0649 0670
-fc5e <isolated> 0020 064C 0651
-fc5f <isolated> 0020 064D 0651
-fc60 <isolated> 0020 064E 0651
-fc61 <isolated> 0020 064F 0651
-fc62 <isolated> 0020 0650 0651
-fc63 <isolated> 0020 0651 0670
-fc64 <final> 0626 0631
-fc65 <final> 0626 0632
-fc66 <final> 0626 0645
-fc67 <final> 0626 0646
-fc68 <final> 0626 0649
-fc69 <final> 0626 064A
-fc6a <final> 0628 0631
-fc6b <final> 0628 0632
-fc6c <final> 0628 0645
-fc6d <final> 0628 0646
-fc6e <final> 0628 0649
-fc6f <final> 0628 064A
-fc70 <final> 062A 0631
-fc71 <final> 062A 0632
-fc72 <final> 062A 0645
-fc73 <final> 062A 0646
-fc74 <final> 062A 0649
-fc75 <final> 062A 064A
-fc76 <final> 062B 0631
-fc77 <final> 062B 0632
-fc78 <final> 062B 0645
-fc79 <final> 062B 0646
-fc7a <final> 062B 0649
-fc7b <final> 062B 064A
-fc7c <final> 0641 0649
-fc7d <final> 0641 064A
-fc7e <final> 0642 0649
-fc7f <final> 0642 064A
-fc80 <final> 0643 0627
-fc81 <final> 0643 0644
-fc82 <final> 0643 0645
-fc83 <final> 0643 0649
-fc84 <final> 0643 064A
-fc85 <final> 0644 0645
-fc86 <final> 0644 0649
-fc87 <final> 0644 064A
-fc88 <final> 0645 0627
-fc89 <final> 0645 0645
-fc8a <final> 0646 0631
-fc8b <final> 0646 0632
-fc8c <final> 0646 0645
-fc8d <final> 0646 0646
-fc8e <final> 0646 0649
-fc8f <final> 0646 064A
-fc90 <final> 0649 0670
-fc91 <final> 064A 0631
-fc92 <final> 064A 0632
-fc93 <final> 064A 0645
-fc94 <final> 064A 0646
-fc95 <final> 064A 0649
-fc96 <final> 064A 064A
-fc97 <initial> 0626 062C
-fc98 <initial> 0626 062D
-fc99 <initial> 0626 062E
-fc9a <initial> 0626 0645
-fc9b <initial> 0626 0647
-fc9c <initial> 0628 062C
-fc9d <initial> 0628 062D
-fc9e <initial> 0628 062E
-fc9f <initial> 0628 0645
-fca0 <initial> 0628 0647
-fca1 <initial> 062A 062C
-fca2 <initial> 062A 062D
-fca3 <initial> 062A 062E
-fca4 <initial> 062A 0645
-fca5 <initial> 062A 0647
-fca6 <initial> 062B 0645
-fca7 <initial> 062C 062D
-fca8 <initial> 062C 0645
-fca9 <initial> 062D 062C
-fcaa <initial> 062D 0645
-fcab <initial> 062E 062C
-fcac <initial> 062E 0645
-fcad <initial> 0633 062C
-fcae <initial> 0633 062D
-fcaf <initial> 0633 062E
-fcb0 <initial> 0633 0645
-fcb1 <initial> 0635 062D
-fcb2 <initial> 0635 062E
-fcb3 <initial> 0635 0645
-fcb4 <initial> 0636 062C
-fcb5 <initial> 0636 062D
-fcb6 <initial> 0636 062E
-fcb7 <initial> 0636 0645
-fcb8 <initial> 0637 062D
-fcb9 <initial> 0638 0645
-fcba <initial> 0639 062C
-fcbb <initial> 0639 0645
-fcbc <initial> 063A 062C
-fcbd <initial> 063A 0645
-fcbe <initial> 0641 062C
-fcbf <initial> 0641 062D
-fcc0 <initial> 0641 062E
-fcc1 <initial> 0641 0645
-fcc2 <initial> 0642 062D
-fcc3 <initial> 0642 0645
-fcc4 <initial> 0643 062C
-fcc5 <initial> 0643 062D
-fcc6 <initial> 0643 062E
-fcc7 <initial> 0643 0644
-fcc8 <initial> 0643 0645
-fcc9 <initial> 0644 062C
-fcca <initial> 0644 062D
-fccb <initial> 0644 062E
-fccc <initial> 0644 0645
-fccd <initial> 0644 0647
-fcce <initial> 0645 062C
-fccf <initial> 0645 062D
-fcd0 <initial> 0645 062E
-fcd1 <initial> 0645 0645
-fcd2 <initial> 0646 062C
-fcd3 <initial> 0646 062D
-fcd4 <initial> 0646 062E
-fcd5 <initial> 0646 0645
-fcd6 <initial> 0646 0647
-fcd7 <initial> 0647 062C
-fcd8 <initial> 0647 0645
-fcd9 <initial> 0647 0670
-fcda <initial> 064A 062C
-fcdb <initial> 064A 062D
-fcdc <initial> 064A 062E
-fcdd <initial> 064A 0645
-fcde <initial> 064A 0647
-fcdf <medial> 0626 0645
-fce0 <medial> 0626 0647
-fce1 <medial> 0628 0645
-fce2 <medial> 0628 0647
-fce3 <medial> 062A 0645
-fce4 <medial> 062A 0647
-fce5 <medial> 062B 0645
-fce6 <medial> 062B 0647
-fce7 <medial> 0633 0645
-fce8 <medial> 0633 0647
-fce9 <medial> 0634 0645
-fcea <medial> 0634 0647
-fceb <medial> 0643 0644
-fcec <medial> 0643 0645
-fced <medial> 0644 0645
-fcee <medial> 0646 0645
-fcef <medial> 0646 0647
-fcf0 <medial> 064A 0645
-fcf1 <medial> 064A 0647
-fcf2 <medial> 0640 064E 0651
-fcf3 <medial> 0640 064F 0651
-fcf4 <medial> 0640 0650 0651
-fcf5 <isolated> 0637 0649
-fcf6 <isolated> 0637 064A
-fcf7 <isolated> 0639 0649
-fcf8 <isolated> 0639 064A
-fcf9 <isolated> 063A 0649
-fcfa <isolated> 063A 064A
-fcfb <isolated> 0633 0649
-fcfc <isolated> 0633 064A
-fcfd <isolated> 0634 0649
-fcfe <isolated> 0634 064A
-fcff <isolated> 062D 0649
-fd00 <isolated> 062D 064A
-fd01 <isolated> 062C 0649
-fd02 <isolated> 062C 064A
-fd03 <isolated> 062E 0649
-fd04 <isolated> 062E 064A
-fd05 <isolated> 0635 0649
-fd06 <isolated> 0635 064A
-fd07 <isolated> 0636 0649
-fd08 <isolated> 0636 064A
-fd09 <isolated> 0634 062C
-fd0a <isolated> 0634 062D
-fd0b <isolated> 0634 062E
-fd0c <isolated> 0634 0645
-fd0d <isolated> 0634 0631
-fd0e <isolated> 0633 0631
-fd0f <isolated> 0635 0631
-fd10 <isolated> 0636 0631
-fd11 <final> 0637 0649
-fd12 <final> 0637 064A
-fd13 <final> 0639 0649
-fd14 <final> 0639 064A
-fd15 <final> 063A 0649
-fd16 <final> 063A 064A
-fd17 <final> 0633 0649
-fd18 <final> 0633 064A
-fd19 <final> 0634 0649
-fd1a <final> 0634 064A
-fd1b <final> 062D 0649
-fd1c <final> 062D 064A
-fd1d <final> 062C 0649
-fd1e <final> 062C 064A
-fd1f <final> 062E 0649
-fd20 <final> 062E 064A
-fd21 <final> 0635 0649
-fd22 <final> 0635 064A
-fd23 <final> 0636 0649
-fd24 <final> 0636 064A
-fd25 <final> 0634 062C
-fd26 <final> 0634 062D
-fd27 <final> 0634 062E
-fd28 <final> 0634 0645
-fd29 <final> 0634 0631
-fd2a <final> 0633 0631
-fd2b <final> 0635 0631
-fd2c <final> 0636 0631
-fd2d <initial> 0634 062C
-fd2e <initial> 0634 062D
-fd2f <initial> 0634 062E
-fd30 <initial> 0634 0645
-fd31 <initial> 0633 0647
-fd32 <initial> 0634 0647
-fd33 <initial> 0637 0645
-fd34 <medial> 0633 062C
-fd35 <medial> 0633 062D
-fd36 <medial> 0633 062E
-fd37 <medial> 0634 062C
-fd38 <medial> 0634 062D
-fd39 <medial> 0634 062E
-fd3a <medial> 0637 0645
-fd3b <medial> 0638 0645
-fd3c <final> 0627 064B
-fd3d <isolated> 0627 064B
-fd50 <initial> 062A 062C 0645
-fd51 <final> 062A 062D 062C
-fd52 <initial> 062A 062D 062C
-fd53 <initial> 062A 062D 0645
-fd54 <initial> 062A 062E 0645
-fd55 <initial> 062A 0645 062C
-fd56 <initial> 062A 0645 062D
-fd57 <initial> 062A 0645 062E
-fd58 <final> 062C 0645 062D
-fd59 <initial> 062C 0645 062D
-fd5a <final> 062D 0645 064A
-fd5b <final> 062D 0645 0649
-fd5c <initial> 0633 062D 062C
-fd5d <initial> 0633 062C 062D
-fd5e <final> 0633 062C 0649
-fd5f <final> 0633 0645 062D
-fd60 <initial> 0633 0645 062D
-fd61 <initial> 0633 0645 062C
-fd62 <final> 0633 0645 0645
-fd63 <initial> 0633 0645 0645
-fd64 <final> 0635 062D 062D
-fd65 <initial> 0635 062D 062D
-fd66 <final> 0635 0645 0645
-fd67 <final> 0634 062D 0645
-fd68 <initial> 0634 062D 0645
-fd69 <final> 0634 062C 064A
-fd6a <final> 0634 0645 062E
-fd6b <initial> 0634 0645 062E
-fd6c <final> 0634 0645 0645
-fd6d <initial> 0634 0645 0645
-fd6e <final> 0636 062D 0649
-fd6f <final> 0636 062E 0645
-fd70 <initial> 0636 062E 0645
-fd71 <final> 0637 0645 062D
-fd72 <initial> 0637 0645 062D
-fd73 <initial> 0637 0645 0645
-fd74 <final> 0637 0645 064A
-fd75 <final> 0639 062C 0645
-fd76 <final> 0639 0645 0645
-fd77 <initial> 0639 0645 0645
-fd78 <final> 0639 0645 0649
-fd79 <final> 063A 0645 0645
-fd7a <final> 063A 0645 064A
-fd7b <final> 063A 0645 0649
-fd7c <final> 0641 062E 0645
-fd7d <initial> 0641 062E 0645
-fd7e <final> 0642 0645 062D
-fd7f <final> 0642 0645 0645
-fd80 <final> 0644 062D 0645
-fd81 <final> 0644 062D 064A
-fd82 <final> 0644 062D 0649
-fd83 <initial> 0644 062C 062C
-fd84 <final> 0644 062C 062C
-fd85 <final> 0644 062E 0645
-fd86 <initial> 0644 062E 0645
-fd87 <final> 0644 0645 062D
-fd88 <initial> 0644 0645 062D
-fd89 <initial> 0645 062D 062C
-fd8a <initial> 0645 062D 0645
-fd8b <final> 0645 062D 064A
-fd8c <initial> 0645 062C 062D
-fd8d <initial> 0645 062C 0645
-fd8e <initial> 0645 062E 062C
-fd8f <initial> 0645 062E 0645
-fd92 <initial> 0645 062C 062E
-fd93 <initial> 0647 0645 062C
-fd94 <initial> 0647 0645 0645
-fd95 <initial> 0646 062D 0645
-fd96 <final> 0646 062D 0649
-fd97 <final> 0646 062C 0645
-fd98 <initial> 0646 062C 0645
-fd99 <final> 0646 062C 0649
-fd9a <final> 0646 0645 064A
-fd9b <final> 0646 0645 0649
-fd9c <final> 064A 0645 0645
-fd9d <initial> 064A 0645 0645
-fd9e <final> 0628 062E 064A
-fd9f <final> 062A 062C 064A
-fda0 <final> 062A 062C 0649
-fda1 <final> 062A 062E 064A
-fda2 <final> 062A 062E 0649
-fda3 <final> 062A 0645 064A
-fda4 <final> 062A 0645 0649
-fda5 <final> 062C 0645 064A
-fda6 <final> 062C 062D 0649
-fda7 <final> 062C 0645 0649
-fda8 <final> 0633 062E 0649
-fda9 <final> 0635 062D 064A
-fdaa <final> 0634 062D 064A
-fdab <final> 0636 062D 064A
-fdac <final> 0644 062C 064A
-fdad <final> 0644 0645 064A
-fdae <final> 064A 062D 064A
-fdaf <final> 064A 062C 064A
-fdb0 <final> 064A 0645 064A
-fdb1 <final> 0645 0645 064A
-fdb2 <final> 0642 0645 064A
-fdb3 <final> 0646 062D 064A
-fdb4 <initial> 0642 0645 062D
-fdb5 <initial> 0644 062D 0645
-fdb6 <final> 0639 0645 064A
-fdb7 <final> 0643 0645 064A
-fdb8 <initial> 0646 062C 062D
-fdb9 <final> 0645 062E 064A
-fdba <initial> 0644 062C 0645
-fdbb <final> 0643 0645 0645
-fdbc <final> 0644 062C 0645
-fdbd <final> 0646 062C 062D
-fdbe <final> 062C 062D 064A
-fdbf <final> 062D 062C 064A
-fdc0 <final> 0645 062C 064A
-fdc1 <final> 0641 0645 064A
-fdc2 <final> 0628 062D 064A
-fdc3 <initial> 0643 0645 0645
-fdc4 <initial> 0639 062C 0645
-fdc5 <initial> 0635 0645 0645
-fdc6 <final> 0633 062E 064A
-fdc7 <final> 0646 062C 064A
-fdf0 <isolated> 0635 0644 06D2
-fdf1 <isolated> 0642 0644 06D2
-fdf2 <isolated> 0627 0644 0644 0647
-fdf3 <isolated> 0627 0643 0628 0631
-fdf4 <isolated> 0645 062D 0645 062F
-fdf5 <isolated> 0635 0644 0639 0645
-fdf6 <isolated> 0631 0633 0648 0644
-fdf7 <isolated> 0639 0644 064A 0647
-fdf8 <isolated> 0648 0633 0644 0645
-fdf9 <isolated> 0635 0644 0649
-fdfa <isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645
-fdfb <isolated> 062C 0644 0020 062C 0644 0627 0644 0647
-fe30 <vertical> 2025
-fe31 <vertical> 2014
-fe32 <vertical> 2013
-fe33 fe34 <vertical> 005F
-fe35 <vertical> 0028
-fe36 <vertical> 0029
-fe37 <vertical> 007B
-fe38 <vertical> 007D
-fe39 <vertical> 3014
-fe3a <vertical> 3015
-fe3b <vertical> 3010
-fe3c <vertical> 3011
-fe3d <vertical> 300A
-fe3e <vertical> 300B
-fe3f <vertical> 3008
-fe40 <vertical> 3009
-fe41 <vertical> 300C
-fe42 <vertical> 300D
-fe43 <vertical> 300E
-fe44 <vertical> 300F
-fe49 fe4c <compat> 203E
-fe4d fe4f <compat> 005F
-fe50 <small> 002C
-fe51 <small> 3001
-fe52 <small> 002E
-fe54 <small> 003B
-fe55 <small> 003A
-fe56 <small> 003F
-fe57 <small> 0021
-fe58 <small> 2014
-fe59 <small> 0028
-fe5a <small> 0029
-fe5b <small> 007B
-fe5c <small> 007D
-fe5d <small> 3014
-fe5e <small> 3015
-fe5f <small> 0023
-fe60 <small> 0026
-fe61 <small> 002A
-fe62 <small> 002B
-fe63 <small> 002D
-fe64 <small> 003C
-fe65 <small> 003E
-fe66 <small> 003D
-fe68 <small> 005C
-fe69 <small> 0024
-fe6a <small> 0025
-fe6b <small> 0040
-fe70 <isolated> 0020 064B
-fe71 <medial> 0640 064B
-fe72 <isolated> 0020 064C
-fe74 <isolated> 0020 064D
-fe76 <isolated> 0020 064E
-fe77 <medial> 0640 064E
-fe78 <isolated> 0020 064F
-fe79 <medial> 0640 064F
-fe7a <isolated> 0020 0650
-fe7b <medial> 0640 0650
-fe7c <isolated> 0020 0651
-fe7d <medial> 0640 0651
-fe7e <isolated> 0020 0652
-fe7f <medial> 0640 0652
-fe80 <isolated> 0621
-fe81 <isolated> 0622
-fe82 <final> 0622
-fe83 <isolated> 0623
-fe84 <final> 0623
-fe85 <isolated> 0624
-fe86 <final> 0624
-fe87 <isolated> 0625
-fe88 <final> 0625
-fe89 <isolated> 0626
-fe8a <final> 0626
-fe8b <initial> 0626
-fe8c <medial> 0626
-fe8d <isolated> 0627
-fe8e <final> 0627
-fe8f <isolated> 0628
-fe90 <final> 0628
-fe91 <initial> 0628
-fe92 <medial> 0628
-fe93 <isolated> 0629
-fe94 <final> 0629
-fe95 <isolated> 062A
-fe96 <final> 062A
-fe97 <initial> 062A
-fe98 <medial> 062A
-fe99 <isolated> 062B
-fe9a <final> 062B
-fe9b <initial> 062B
-fe9c <medial> 062B
-fe9d <isolated> 062C
-fe9e <final> 062C
-fe9f <initial> 062C
-fea0 <medial> 062C
-fea1 <isolated> 062D
-fea2 <final> 062D
-fea3 <initial> 062D
-fea4 <medial> 062D
-fea5 <isolated> 062E
-fea6 <final> 062E
-fea7 <initial> 062E
-fea8 <medial> 062E
-fea9 <isolated> 062F
-feaa <final> 062F
-feab <isolated> 0630
-feac <final> 0630
-fead <isolated> 0631
-feae <final> 0631
-feaf <isolated> 0632
-feb0 <final> 0632
-feb1 <isolated> 0633
-feb2 <final> 0633
-feb3 <initial> 0633
-feb4 <medial> 0633
-feb5 <isolated> 0634
-feb6 <final> 0634
-feb7 <initial> 0634
-feb8 <medial> 0634
-feb9 <isolated> 0635
-feba <final> 0635
-febb <initial> 0635
-febc <medial> 0635
-febd <isolated> 0636
-febe <final> 0636
-febf <initial> 0636
-fec0 <medial> 0636
-fec1 <isolated> 0637
-fec2 <final> 0637
-fec3 <initial> 0637
-fec4 <medial> 0637
-fec5 <isolated> 0638
-fec6 <final> 0638
-fec7 <initial> 0638
-fec8 <medial> 0638
-fec9 <isolated> 0639
-feca <final> 0639
-fecb <initial> 0639
-fecc <medial> 0639
-fecd <isolated> 063A
-fece <final> 063A
-fecf <initial> 063A
-fed0 <medial> 063A
-fed1 <isolated> 0641
-fed2 <final> 0641
-fed3 <initial> 0641
-fed4 <medial> 0641
-fed5 <isolated> 0642
-fed6 <final> 0642
-fed7 <initial> 0642
-fed8 <medial> 0642
-fed9 <isolated> 0643
-feda <final> 0643
-fedb <initial> 0643
-fedc <medial> 0643
-fedd <isolated> 0644
-fede <final> 0644
-fedf <initial> 0644
-fee0 <medial> 0644
-fee1 <isolated> 0645
-fee2 <final> 0645
-fee3 <initial> 0645
-fee4 <medial> 0645
-fee5 <isolated> 0646
-fee6 <final> 0646
-fee7 <initial> 0646
-fee8 <medial> 0646
-fee9 <isolated> 0647
-feea <final> 0647
-feeb <initial> 0647
-feec <medial> 0647
-feed <isolated> 0648
-feee <final> 0648
-feef <isolated> 0649
-fef0 <final> 0649
-fef1 <isolated> 064A
-fef2 <final> 064A
-fef3 <initial> 064A
-fef4 <medial> 064A
-fef5 <isolated> 0644 0622
-fef6 <final> 0644 0622
-fef7 <isolated> 0644 0623
-fef8 <final> 0644 0623
-fef9 <isolated> 0644 0625
-fefa <final> 0644 0625
-fefb <isolated> 0644 0627
-fefc <final> 0644 0627
-ff01 <wide> 0021
-ff02 <wide> 0022
-ff03 <wide> 0023
-ff04 <wide> 0024
-ff05 <wide> 0025
-ff06 <wide> 0026
-ff07 <wide> 0027
-ff08 <wide> 0028
-ff09 <wide> 0029
-ff0a <wide> 002A
-ff0b <wide> 002B
-ff0c <wide> 002C
-ff0d <wide> 002D
-ff0e <wide> 002E
-ff0f <wide> 002F
-ff10 <wide> 0030
-ff11 <wide> 0031
-ff12 <wide> 0032
-ff13 <wide> 0033
-ff14 <wide> 0034
-ff15 <wide> 0035
-ff16 <wide> 0036
-ff17 <wide> 0037
-ff18 <wide> 0038
-ff19 <wide> 0039
-ff1a <wide> 003A
-ff1b <wide> 003B
-ff1c <wide> 003C
-ff1d <wide> 003D
-ff1e <wide> 003E
-ff1f <wide> 003F
-ff20 <wide> 0040
-ff21 <wide> 0041
-ff22 <wide> 0042
-ff23 <wide> 0043
-ff24 <wide> 0044
-ff25 <wide> 0045
-ff26 <wide> 0046
-ff27 <wide> 0047
-ff28 <wide> 0048
-ff29 <wide> 0049
-ff2a <wide> 004A
-ff2b <wide> 004B
-ff2c <wide> 004C
-ff2d <wide> 004D
-ff2e <wide> 004E
-ff2f <wide> 004F
-ff30 <wide> 0050
-ff31 <wide> 0051
-ff32 <wide> 0052
-ff33 <wide> 0053
-ff34 <wide> 0054
-ff35 <wide> 0055
-ff36 <wide> 0056
-ff37 <wide> 0057
-ff38 <wide> 0058
-ff39 <wide> 0059
-ff3a <wide> 005A
-ff3b <wide> 005B
-ff3c <wide> 005C
-ff3d <wide> 005D
-ff3e <wide> 005E
-ff3f <wide> 005F
-ff40 <wide> 0060
-ff41 <wide> 0061
-ff42 <wide> 0062
-ff43 <wide> 0063
-ff44 <wide> 0064
-ff45 <wide> 0065
-ff46 <wide> 0066
-ff47 <wide> 0067
-ff48 <wide> 0068
-ff49 <wide> 0069
-ff4a <wide> 006A
-ff4b <wide> 006B
-ff4c <wide> 006C
-ff4d <wide> 006D
-ff4e <wide> 006E
-ff4f <wide> 006F
-ff50 <wide> 0070
-ff51 <wide> 0071
-ff52 <wide> 0072
-ff53 <wide> 0073
-ff54 <wide> 0074
-ff55 <wide> 0075
-ff56 <wide> 0076
-ff57 <wide> 0077
-ff58 <wide> 0078
-ff59 <wide> 0079
-ff5a <wide> 007A
-ff5b <wide> 007B
-ff5c <wide> 007C
-ff5d <wide> 007D
-ff5e <wide> 007E
-ff61 <narrow> 3002
-ff62 <narrow> 300C
-ff63 <narrow> 300D
-ff64 <narrow> 3001
-ff65 <narrow> 30FB
-ff66 <narrow> 30F2
-ff67 <narrow> 30A1
-ff68 <narrow> 30A3
-ff69 <narrow> 30A5
-ff6a <narrow> 30A7
-ff6b <narrow> 30A9
-ff6c <narrow> 30E3
-ff6d <narrow> 30E5
-ff6e <narrow> 30E7
-ff6f <narrow> 30C3
-ff70 <narrow> 30FC
-ff71 <narrow> 30A2
-ff72 <narrow> 30A4
-ff73 <narrow> 30A6
-ff74 <narrow> 30A8
-ff75 <narrow> 30AA
-ff76 <narrow> 30AB
-ff77 <narrow> 30AD
-ff78 <narrow> 30AF
-ff79 <narrow> 30B1
-ff7a <narrow> 30B3
-ff7b <narrow> 30B5
-ff7c <narrow> 30B7
-ff7d <narrow> 30B9
-ff7e <narrow> 30BB
-ff7f <narrow> 30BD
-ff80 <narrow> 30BF
-ff81 <narrow> 30C1
-ff82 <narrow> 30C4
-ff83 <narrow> 30C6
-ff84 <narrow> 30C8
-ff85 <narrow> 30CA
-ff86 <narrow> 30CB
-ff87 <narrow> 30CC
-ff88 <narrow> 30CD
-ff89 <narrow> 30CE
-ff8a <narrow> 30CF
-ff8b <narrow> 30D2
-ff8c <narrow> 30D5
-ff8d <narrow> 30D8
-ff8e <narrow> 30DB
-ff8f <narrow> 30DE
-ff90 <narrow> 30DF
-ff91 <narrow> 30E0
-ff92 <narrow> 30E1
-ff93 <narrow> 30E2
-ff94 <narrow> 30E4
-ff95 <narrow> 30E6
-ff96 <narrow> 30E8
-ff97 <narrow> 30E9
-ff98 <narrow> 30EA
-ff99 <narrow> 30EB
-ff9a <narrow> 30EC
-ff9b <narrow> 30ED
-ff9c <narrow> 30EF
-ff9d <narrow> 30F3
-ff9e <narrow> 3099
-ff9f <narrow> 309A
-ffa0 <narrow> 3164
-ffa1 <narrow> 3131
-ffa2 <narrow> 3132
-ffa3 <narrow> 3133
-ffa4 <narrow> 3134
-ffa5 <narrow> 3135
-ffa6 <narrow> 3136
-ffa7 <narrow> 3137
-ffa8 <narrow> 3138
-ffa9 <narrow> 3139
-ffaa <narrow> 313A
-ffab <narrow> 313B
-ffac <narrow> 313C
-ffad <narrow> 313D
-ffae <narrow> 313E
-ffaf <narrow> 313F
-ffb0 <narrow> 3140
-ffb1 <narrow> 3141
-ffb2 <narrow> 3142
-ffb3 <narrow> 3143
-ffb4 <narrow> 3144
-ffb5 <narrow> 3145
-ffb6 <narrow> 3146
-ffb7 <narrow> 3147
-ffb8 <narrow> 3148
-ffb9 <narrow> 3149
-ffba <narrow> 314A
-ffbb <narrow> 314B
-ffbc <narrow> 314C
-ffbd <narrow> 314D
-ffbe <narrow> 314E
-ffc2 <narrow> 314F
-ffc3 <narrow> 3150
-ffc4 <narrow> 3151
-ffc5 <narrow> 3152
-ffc6 <narrow> 3153
-ffc7 <narrow> 3154
-ffca <narrow> 3155
-ffcb <narrow> 3156
-ffcc <narrow> 3157
-ffcd <narrow> 3158
-ffce <narrow> 3159
-ffcf <narrow> 315A
-ffd2 <narrow> 315B
-ffd3 <narrow> 315C
-ffd4 <narrow> 315D
-ffd5 <narrow> 315E
-ffd6 <narrow> 315F
-ffd7 <narrow> 3160
-ffda <narrow> 3161
-ffdb <narrow> 3162
-ffdc <narrow> 3163
-ffe0 <wide> 00A2
-ffe1 <wide> 00A3
-ffe2 <wide> 00AC
-ffe3 <wide> 00AF
-ffe4 <wide> 00A6
-ffe5 <wide> 00A5
-ffe6 <wide> 20A9
-ffe8 <narrow> 2502
-ffe9 <narrow> 2190
-ffea <narrow> 2191
-ffeb <narrow> 2192
-ffec <narrow> 2193
-ffed <narrow> 25A0
-ffee <narrow> 25CB
-END
diff --git a/contrib/perl5/lib/unicode/EAWidth.txt b/contrib/perl5/lib/unicode/EAWidth.txt
deleted file mode 100644
index 2b3577b..0000000
--- a/contrib/perl5/lib/unicode/EAWidth.txt
+++ /dev/null
@@ -1,10636 +0,0 @@
-# EastAsianWidth-3.txt
-#
-# East Asian Width Properties
-#
-# This file is a supplement to the UnicodeData file.
-# It contains informative data only.
-# The format is three fields separated by semicolons.
-# Field 1: Unicode value
-# Field 2: East Asian Width property, consisting of one of the following values:
-# "N", "A", "H", "W", "F", "Na"
-# - Assigned characters that are not listed explicitly are given the value "N".
-# - Characters within ranges marked by "First>" and "Last>" are omitted,
-# as in UnicodeData.txt. For example, the following means that
-# all characters between 3400 and 4DB5 have the value "W"
-# 3400;W;<CJK Ideograph Extension A, First>
-# 4DB5;W;<CJK Ideograph Extension A, Last>
-# Field 3: Unicode name (this is purely informative)
-#
-# See UTR #11: East Asian Character Width for more information
-0000;N;<control>
-0001;N;<control>
-0002;N;<control>
-0003;N;<control>
-0004;N;<control>
-0005;N;<control>
-0006;N;<control>
-0007;N;<control>
-0008;N;<control>
-0009;N;<control>
-000A;N;<control>
-000B;N;<control>
-000C;N;<control>
-000D;N;<control>
-000E;N;<control>
-000F;N;<control>
-0010;N;<control>
-0011;N;<control>
-0012;N;<control>
-0013;N;<control>
-0014;N;<control>
-0015;N;<control>
-0016;N;<control>
-0017;N;<control>
-0018;N;<control>
-0019;N;<control>
-001A;N;<control>
-001B;N;<control>
-001C;N;<control>
-001D;N;<control>
-001E;N;<control>
-001F;N;<control>
-0020;Na;SPACE
-0021;Na;EXCLAMATION MARK
-0022;Na;QUOTATION MARK
-0023;Na;NUMBER SIGN
-0024;Na;DOLLAR SIGN
-0025;Na;PERCENT SIGN
-0026;Na;AMPERSAND
-0027;Na;APOSTROPHE
-0028;Na;LEFT PARENTHESIS
-0029;Na;RIGHT PARENTHESIS
-002A;Na;ASTERISK
-002B;Na;PLUS SIGN
-002C;Na;COMMA
-002D;Na;HYPHEN-MINUS
-002E;Na;FULL STOP
-002F;Na;SOLIDUS
-0030;Na;DIGIT ZERO
-0031;Na;DIGIT ONE
-0032;Na;DIGIT TWO
-0033;Na;DIGIT THREE
-0034;Na;DIGIT FOUR
-0035;Na;DIGIT FIVE
-0036;Na;DIGIT SIX
-0037;Na;DIGIT SEVEN
-0038;Na;DIGIT EIGHT
-0039;Na;DIGIT NINE
-003A;Na;COLON
-003B;Na;SEMICOLON
-003C;Na;LESS-THAN SIGN
-003D;Na;EQUALS SIGN
-003E;Na;GREATER-THAN SIGN
-003F;Na;QUESTION MARK
-0040;Na;COMMERCIAL AT
-0041;Na;LATIN CAPITAL LETTER A
-0042;Na;LATIN CAPITAL LETTER B
-0043;Na;LATIN CAPITAL LETTER C
-0044;Na;LATIN CAPITAL LETTER D
-0045;Na;LATIN CAPITAL LETTER E
-0046;Na;LATIN CAPITAL LETTER F
-0047;Na;LATIN CAPITAL LETTER G
-0048;Na;LATIN CAPITAL LETTER H
-0049;Na;LATIN CAPITAL LETTER I
-004A;Na;LATIN CAPITAL LETTER J
-004B;Na;LATIN CAPITAL LETTER K
-004C;Na;LATIN CAPITAL LETTER L
-004D;Na;LATIN CAPITAL LETTER M
-004E;Na;LATIN CAPITAL LETTER N
-004F;Na;LATIN CAPITAL LETTER O
-0050;Na;LATIN CAPITAL LETTER P
-0051;Na;LATIN CAPITAL LETTER Q
-0052;Na;LATIN CAPITAL LETTER R
-0053;Na;LATIN CAPITAL LETTER S
-0054;Na;LATIN CAPITAL LETTER T
-0055;Na;LATIN CAPITAL LETTER U
-0056;Na;LATIN CAPITAL LETTER V
-0057;Na;LATIN CAPITAL LETTER W
-0058;Na;LATIN CAPITAL LETTER X
-0059;Na;LATIN CAPITAL LETTER Y
-005A;Na;LATIN CAPITAL LETTER Z
-005B;Na;LEFT SQUARE BRACKET
-005C;Na;REVERSE SOLIDUS
-005D;Na;RIGHT SQUARE BRACKET
-005E;Na;CIRCUMFLEX ACCENT
-005F;Na;LOW LINE
-0060;Na;GRAVE ACCENT
-0061;Na;LATIN SMALL LETTER A
-0062;Na;LATIN SMALL LETTER B
-0063;Na;LATIN SMALL LETTER C
-0064;Na;LATIN SMALL LETTER D
-0065;Na;LATIN SMALL LETTER E
-0066;Na;LATIN SMALL LETTER F
-0067;Na;LATIN SMALL LETTER G
-0068;Na;LATIN SMALL LETTER H
-0069;Na;LATIN SMALL LETTER I
-006A;Na;LATIN SMALL LETTER J
-006B;Na;LATIN SMALL LETTER K
-006C;Na;LATIN SMALL LETTER L
-006D;Na;LATIN SMALL LETTER M
-006E;Na;LATIN SMALL LETTER N
-006F;Na;LATIN SMALL LETTER O
-0070;Na;LATIN SMALL LETTER P
-0071;Na;LATIN SMALL LETTER Q
-0072;Na;LATIN SMALL LETTER R
-0073;Na;LATIN SMALL LETTER S
-0074;Na;LATIN SMALL LETTER T
-0075;Na;LATIN SMALL LETTER U
-0076;Na;LATIN SMALL LETTER V
-0077;Na;LATIN SMALL LETTER W
-0078;Na;LATIN SMALL LETTER X
-0079;Na;LATIN SMALL LETTER Y
-007A;Na;LATIN SMALL LETTER Z
-007B;Na;LEFT CURLY BRACKET
-007C;Na;VERTICAL LINE
-007D;Na;RIGHT CURLY BRACKET
-007E;Na;TILDE
-007F;N;<control>
-0080;N;<control>
-0081;N;<control>
-0082;N;<control>
-0083;N;<control>
-0084;N;<control>
-0085;N;<control>
-0086;N;<control>
-0087;N;<control>
-0088;N;<control>
-0089;N;<control>
-008A;N;<control>
-008B;N;<control>
-008C;N;<control>
-008D;N;<control>
-008E;N;<control>
-008F;N;<control>
-0090;N;<control>
-0091;N;<control>
-0092;N;<control>
-0093;N;<control>
-0094;N;<control>
-0095;N;<control>
-0096;N;<control>
-0097;N;<control>
-0098;N;<control>
-0099;N;<control>
-009A;N;<control>
-009B;N;<control>
-009C;N;<control>
-009D;N;<control>
-009E;N;<control>
-009F;N;<control>
-00A0;N;NO-BREAK SPACE
-00A1;A;INVERTED EXCLAMATION MARK
-00A2;Na;CENT SIGN
-00A3;Na;POUND SIGN
-00A4;A;CURRENCY SIGN
-00A5;Na;YEN SIGN
-00A6;Na;BROKEN BAR
-00A7;A;SECTION SIGN
-00A8;A;DIAERESIS
-00A9;N;COPYRIGHT SIGN
-00AA;A;FEMININE ORDINAL INDICATOR
-00AB;N;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-00AC;Na;NOT SIGN
-00AD;A;SOFT HYPHEN
-00AE;N;REGISTERED SIGN
-00AF;Na;MACRON
-00B0;A;DEGREE SIGN
-00B1;A;PLUS-MINUS SIGN
-00B2;A;SUPERSCRIPT TWO
-00B3;A;SUPERSCRIPT THREE
-00B4;A;ACUTE ACCENT
-00B5;N;MICRO SIGN
-00B6;A;PILCROW SIGN
-00B7;A;MIDDLE DOT
-00B8;A;CEDILLA
-00B9;A;SUPERSCRIPT ONE
-00BA;A;MASCULINE ORDINAL INDICATOR
-00BB;N;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BC;A;VULGAR FRACTION ONE QUARTER
-00BD;A;VULGAR FRACTION ONE HALF
-00BE;A;VULGAR FRACTION THREE QUARTERS
-00BF;A;INVERTED QUESTION MARK
-00C0;N;LATIN CAPITAL LETTER A WITH GRAVE
-00C1;N;LATIN CAPITAL LETTER A WITH ACUTE
-00C2;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-00C3;N;LATIN CAPITAL LETTER A WITH TILDE
-00C4;N;LATIN CAPITAL LETTER A WITH DIAERESIS
-00C5;N;LATIN CAPITAL LETTER A WITH RING ABOVE
-00C6;A;LATIN CAPITAL LETTER AE
-00C7;N;LATIN CAPITAL LETTER C WITH CEDILLA
-00C8;N;LATIN CAPITAL LETTER E WITH GRAVE
-00C9;N;LATIN CAPITAL LETTER E WITH ACUTE
-00CA;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-00CB;N;LATIN CAPITAL LETTER E WITH DIAERESIS
-00CC;N;LATIN CAPITAL LETTER I WITH GRAVE
-00CD;N;LATIN CAPITAL LETTER I WITH ACUTE
-00CE;N;LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-00CF;N;LATIN CAPITAL LETTER I WITH DIAERESIS
-00D0;A;LATIN CAPITAL LETTER ETH
-00D1;N;LATIN CAPITAL LETTER N WITH TILDE
-00D2;N;LATIN CAPITAL LETTER O WITH GRAVE
-00D3;N;LATIN CAPITAL LETTER O WITH ACUTE
-00D4;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-00D5;N;LATIN CAPITAL LETTER O WITH TILDE
-00D6;N;LATIN CAPITAL LETTER O WITH DIAERESIS
-00D7;A;MULTIPLICATION SIGN
-00D8;A;LATIN CAPITAL LETTER O WITH STROKE
-00D9;N;LATIN CAPITAL LETTER U WITH GRAVE
-00DA;N;LATIN CAPITAL LETTER U WITH ACUTE
-00DB;N;LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-00DC;N;LATIN CAPITAL LETTER U WITH DIAERESIS
-00DD;N;LATIN CAPITAL LETTER Y WITH ACUTE
-00DE;A;LATIN CAPITAL LETTER THORN
-00DF;A;LATIN SMALL LETTER SHARP S
-00E0;A;LATIN SMALL LETTER A WITH GRAVE
-00E1;A;LATIN SMALL LETTER A WITH ACUTE
-00E2;N;LATIN SMALL LETTER A WITH CIRCUMFLEX
-00E3;N;LATIN SMALL LETTER A WITH TILDE
-00E4;N;LATIN SMALL LETTER A WITH DIAERESIS
-00E5;N;LATIN SMALL LETTER A WITH RING ABOVE
-00E6;A;LATIN SMALL LETTER AE
-00E7;N;LATIN SMALL LETTER C WITH CEDILLA
-00E8;A;LATIN SMALL LETTER E WITH GRAVE
-00E9;A;LATIN SMALL LETTER E WITH ACUTE
-00EA;A;LATIN SMALL LETTER E WITH CIRCUMFLEX
-00EB;N;LATIN SMALL LETTER E WITH DIAERESIS
-00EC;A;LATIN SMALL LETTER I WITH GRAVE
-00ED;A;LATIN SMALL LETTER I WITH ACUTE
-00EE;N;LATIN SMALL LETTER I WITH CIRCUMFLEX
-00EF;N;LATIN SMALL LETTER I WITH DIAERESIS
-00F0;A;LATIN SMALL LETTER ETH
-00F1;N;LATIN SMALL LETTER N WITH TILDE
-00F2;A;LATIN SMALL LETTER O WITH GRAVE
-00F3;A;LATIN SMALL LETTER O WITH ACUTE
-00F4;N;LATIN SMALL LETTER O WITH CIRCUMFLEX
-00F5;N;LATIN SMALL LETTER O WITH TILDE
-00F6;N;LATIN SMALL LETTER O WITH DIAERESIS
-00F7;A;DIVISION SIGN
-00F8;A;LATIN SMALL LETTER O WITH STROKE
-00F9;A;LATIN SMALL LETTER U WITH GRAVE
-00FA;A;LATIN SMALL LETTER U WITH ACUTE
-00FB;N;LATIN SMALL LETTER U WITH CIRCUMFLEX
-00FC;A;LATIN SMALL LETTER U WITH DIAERESIS
-00FD;N;LATIN SMALL LETTER Y WITH ACUTE
-00FE;A;LATIN SMALL LETTER THORN
-00FF;N;LATIN SMALL LETTER Y WITH DIAERESIS
-0100;N;LATIN CAPITAL LETTER A WITH MACRON
-0101;A;LATIN SMALL LETTER A WITH MACRON
-0102;N;LATIN CAPITAL LETTER A WITH BREVE
-0103;N;LATIN SMALL LETTER A WITH BREVE
-0104;N;LATIN CAPITAL LETTER A WITH OGONEK
-0105;N;LATIN SMALL LETTER A WITH OGONEK
-0106;N;LATIN CAPITAL LETTER C WITH ACUTE
-0107;N;LATIN SMALL LETTER C WITH ACUTE
-0108;N;LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-0109;N;LATIN SMALL LETTER C WITH CIRCUMFLEX
-010A;N;LATIN CAPITAL LETTER C WITH DOT ABOVE
-010B;N;LATIN SMALL LETTER C WITH DOT ABOVE
-010C;N;LATIN CAPITAL LETTER C WITH CARON
-010D;N;LATIN SMALL LETTER C WITH CARON
-010E;N;LATIN CAPITAL LETTER D WITH CARON
-010F;N;LATIN SMALL LETTER D WITH CARON
-0110;N;LATIN CAPITAL LETTER D WITH STROKE
-0111;A;LATIN SMALL LETTER D WITH STROKE
-0112;N;LATIN CAPITAL LETTER E WITH MACRON
-0113;A;LATIN SMALL LETTER E WITH MACRON
-0114;N;LATIN CAPITAL LETTER E WITH BREVE
-0115;N;LATIN SMALL LETTER E WITH BREVE
-0116;N;LATIN CAPITAL LETTER E WITH DOT ABOVE
-0117;N;LATIN SMALL LETTER E WITH DOT ABOVE
-0118;N;LATIN CAPITAL LETTER E WITH OGONEK
-0119;N;LATIN SMALL LETTER E WITH OGONEK
-011A;N;LATIN CAPITAL LETTER E WITH CARON
-011B;A;LATIN SMALL LETTER E WITH CARON
-011C;N;LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-011D;N;LATIN SMALL LETTER G WITH CIRCUMFLEX
-011E;N;LATIN CAPITAL LETTER G WITH BREVE
-011F;N;LATIN SMALL LETTER G WITH BREVE
-0120;N;LATIN CAPITAL LETTER G WITH DOT ABOVE
-0121;N;LATIN SMALL LETTER G WITH DOT ABOVE
-0122;N;LATIN CAPITAL LETTER G WITH CEDILLA
-0123;N;LATIN SMALL LETTER G WITH CEDILLA
-0124;N;LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0125;N;LATIN SMALL LETTER H WITH CIRCUMFLEX
-0126;A;LATIN CAPITAL LETTER H WITH STROKE
-0127;A;LATIN SMALL LETTER H WITH STROKE
-0128;N;LATIN CAPITAL LETTER I WITH TILDE
-0129;N;LATIN SMALL LETTER I WITH TILDE
-012A;N;LATIN CAPITAL LETTER I WITH MACRON
-012B;A;LATIN SMALL LETTER I WITH MACRON
-012C;N;LATIN CAPITAL LETTER I WITH BREVE
-012D;N;LATIN SMALL LETTER I WITH BREVE
-012E;N;LATIN CAPITAL LETTER I WITH OGONEK
-012F;N;LATIN SMALL LETTER I WITH OGONEK
-0130;N;LATIN CAPITAL LETTER I WITH DOT ABOVE
-0131;A;LATIN SMALL LETTER DOTLESS I
-0132;A;LATIN CAPITAL LIGATURE IJ
-0133;A;LATIN SMALL LIGATURE IJ
-0134;N;LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-0135;N;LATIN SMALL LETTER J WITH CIRCUMFLEX
-0136;N;LATIN CAPITAL LETTER K WITH CEDILLA
-0137;N;LATIN SMALL LETTER K WITH CEDILLA
-0138;A;LATIN SMALL LETTER KRA
-0139;N;LATIN CAPITAL LETTER L WITH ACUTE
-013A;N;LATIN SMALL LETTER L WITH ACUTE
-013B;N;LATIN CAPITAL LETTER L WITH CEDILLA
-013C;N;LATIN SMALL LETTER L WITH CEDILLA
-013D;N;LATIN CAPITAL LETTER L WITH CARON
-013E;N;LATIN SMALL LETTER L WITH CARON
-013F;A;LATIN CAPITAL LETTER L WITH MIDDLE DOT
-0140;A;LATIN SMALL LETTER L WITH MIDDLE DOT
-0141;A;LATIN CAPITAL LETTER L WITH STROKE
-0142;A;LATIN SMALL LETTER L WITH STROKE
-0143;N;LATIN CAPITAL LETTER N WITH ACUTE
-0144;A;LATIN SMALL LETTER N WITH ACUTE
-0145;N;LATIN CAPITAL LETTER N WITH CEDILLA
-0146;N;LATIN SMALL LETTER N WITH CEDILLA
-0147;N;LATIN CAPITAL LETTER N WITH CARON
-0148;A;LATIN SMALL LETTER N WITH CARON
-0149;A;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-014A;A;LATIN CAPITAL LETTER ENG
-014B;N;LATIN SMALL LETTER ENG
-014C;N;LATIN CAPITAL LETTER O WITH MACRON
-014D;A;LATIN SMALL LETTER O WITH MACRON
-014E;N;LATIN CAPITAL LETTER O WITH BREVE
-014F;N;LATIN SMALL LETTER O WITH BREVE
-0150;N;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0151;N;LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0152;A;LATIN CAPITAL LIGATURE OE
-0153;A;LATIN SMALL LIGATURE OE
-0154;N;LATIN CAPITAL LETTER R WITH ACUTE
-0155;N;LATIN SMALL LETTER R WITH ACUTE
-0156;N;LATIN CAPITAL LETTER R WITH CEDILLA
-0157;N;LATIN SMALL LETTER R WITH CEDILLA
-0158;N;LATIN CAPITAL LETTER R WITH CARON
-0159;N;LATIN SMALL LETTER R WITH CARON
-015A;N;LATIN CAPITAL LETTER S WITH ACUTE
-015B;N;LATIN SMALL LETTER S WITH ACUTE
-015C;N;LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-015D;N;LATIN SMALL LETTER S WITH CIRCUMFLEX
-015E;N;LATIN CAPITAL LETTER S WITH CEDILLA
-015F;N;LATIN SMALL LETTER S WITH CEDILLA
-0160;N;LATIN CAPITAL LETTER S WITH CARON
-0161;N;LATIN SMALL LETTER S WITH CARON
-0162;N;LATIN CAPITAL LETTER T WITH CEDILLA
-0163;N;LATIN SMALL LETTER T WITH CEDILLA
-0164;N;LATIN CAPITAL LETTER T WITH CARON
-0165;N;LATIN SMALL LETTER T WITH CARON
-0166;A;LATIN CAPITAL LETTER T WITH STROKE
-0167;A;LATIN SMALL LETTER T WITH STROKE
-0168;N;LATIN CAPITAL LETTER U WITH TILDE
-0169;N;LATIN SMALL LETTER U WITH TILDE
-016A;N;LATIN CAPITAL LETTER U WITH MACRON
-016B;A;LATIN SMALL LETTER U WITH MACRON
-016C;N;LATIN CAPITAL LETTER U WITH BREVE
-016D;N;LATIN SMALL LETTER U WITH BREVE
-016E;N;LATIN CAPITAL LETTER U WITH RING ABOVE
-016F;N;LATIN SMALL LETTER U WITH RING ABOVE
-0170;N;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0171;N;LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0172;N;LATIN CAPITAL LETTER U WITH OGONEK
-0173;N;LATIN SMALL LETTER U WITH OGONEK
-0174;N;LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-0175;N;LATIN SMALL LETTER W WITH CIRCUMFLEX
-0176;N;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-0177;N;LATIN SMALL LETTER Y WITH CIRCUMFLEX
-0178;N;LATIN CAPITAL LETTER Y WITH DIAERESIS
-0179;N;LATIN CAPITAL LETTER Z WITH ACUTE
-017A;N;LATIN SMALL LETTER Z WITH ACUTE
-017B;N;LATIN CAPITAL LETTER Z WITH DOT ABOVE
-017C;N;LATIN SMALL LETTER Z WITH DOT ABOVE
-017D;N;LATIN CAPITAL LETTER Z WITH CARON
-017E;N;LATIN SMALL LETTER Z WITH CARON
-017F;N;LATIN SMALL LETTER LONG S
-0180;N;LATIN SMALL LETTER B WITH STROKE
-0181;N;LATIN CAPITAL LETTER B WITH HOOK
-0182;N;LATIN CAPITAL LETTER B WITH TOPBAR
-0183;N;LATIN SMALL LETTER B WITH TOPBAR
-0184;N;LATIN CAPITAL LETTER TONE SIX
-0185;N;LATIN SMALL LETTER TONE SIX
-0186;N;LATIN CAPITAL LETTER OPEN O
-0187;N;LATIN CAPITAL LETTER C WITH HOOK
-0188;N;LATIN SMALL LETTER C WITH HOOK
-0189;N;LATIN CAPITAL LETTER AFRICAN D
-018A;N;LATIN CAPITAL LETTER D WITH HOOK
-018B;N;LATIN CAPITAL LETTER D WITH TOPBAR
-018C;N;LATIN SMALL LETTER D WITH TOPBAR
-018D;N;LATIN SMALL LETTER TURNED DELTA
-018E;N;LATIN CAPITAL LETTER REVERSED E
-018F;N;LATIN CAPITAL LETTER SCHWA
-0190;N;LATIN CAPITAL LETTER OPEN E
-0191;N;LATIN CAPITAL LETTER F WITH HOOK
-0192;N;LATIN SMALL LETTER F WITH HOOK
-0193;N;LATIN CAPITAL LETTER G WITH HOOK
-0194;N;LATIN CAPITAL LETTER GAMMA
-0195;N;LATIN SMALL LETTER HV
-0196;N;LATIN CAPITAL LETTER IOTA
-0197;N;LATIN CAPITAL LETTER I WITH STROKE
-0198;N;LATIN CAPITAL LETTER K WITH HOOK
-0199;N;LATIN SMALL LETTER K WITH HOOK
-019A;N;LATIN SMALL LETTER L WITH BAR
-019B;N;LATIN SMALL LETTER LAMBDA WITH STROKE
-019C;N;LATIN CAPITAL LETTER TURNED M
-019D;N;LATIN CAPITAL LETTER N WITH LEFT HOOK
-019E;N;LATIN SMALL LETTER N WITH LONG RIGHT LEG
-019F;N;LATIN CAPITAL LETTER O WITH MIDDLE TILDE
-01A0;N;LATIN CAPITAL LETTER O WITH HORN
-01A1;N;LATIN SMALL LETTER O WITH HORN
-01A2;N;LATIN CAPITAL LETTER OI
-01A3;N;LATIN SMALL LETTER OI
-01A4;N;LATIN CAPITAL LETTER P WITH HOOK
-01A5;N;LATIN SMALL LETTER P WITH HOOK
-01A6;N;LATIN LETTER YR
-01A7;N;LATIN CAPITAL LETTER TONE TWO
-01A8;N;LATIN SMALL LETTER TONE TWO
-01A9;N;LATIN CAPITAL LETTER ESH
-01AA;N;LATIN LETTER REVERSED ESH LOOP
-01AB;N;LATIN SMALL LETTER T WITH PALATAL HOOK
-01AC;N;LATIN CAPITAL LETTER T WITH HOOK
-01AD;N;LATIN SMALL LETTER T WITH HOOK
-01AE;N;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
-01AF;N;LATIN CAPITAL LETTER U WITH HORN
-01B0;N;LATIN SMALL LETTER U WITH HORN
-01B1;N;LATIN CAPITAL LETTER UPSILON
-01B2;N;LATIN CAPITAL LETTER V WITH HOOK
-01B3;N;LATIN CAPITAL LETTER Y WITH HOOK
-01B4;N;LATIN SMALL LETTER Y WITH HOOK
-01B5;N;LATIN CAPITAL LETTER Z WITH STROKE
-01B6;N;LATIN SMALL LETTER Z WITH STROKE
-01B7;N;LATIN CAPITAL LETTER EZH
-01B8;N;LATIN CAPITAL LETTER EZH REVERSED
-01B9;N;LATIN SMALL LETTER EZH REVERSED
-01BA;N;LATIN SMALL LETTER EZH WITH TAIL
-01BB;N;LATIN LETTER TWO WITH STROKE
-01BC;N;LATIN CAPITAL LETTER TONE FIVE
-01BD;N;LATIN SMALL LETTER TONE FIVE
-01BE;N;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
-01BF;N;LATIN LETTER WYNN
-01C0;N;LATIN LETTER DENTAL CLICK
-01C1;N;LATIN LETTER LATERAL CLICK
-01C2;N;LATIN LETTER ALVEOLAR CLICK
-01C3;N;LATIN LETTER RETROFLEX CLICK
-01C4;N;LATIN CAPITAL LETTER DZ WITH CARON
-01C5;N;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
-01C6;N;LATIN SMALL LETTER DZ WITH CARON
-01C7;N;LATIN CAPITAL LETTER LJ
-01C8;N;LATIN CAPITAL LETTER L WITH SMALL LETTER J
-01C9;N;LATIN SMALL LETTER LJ
-01CA;N;LATIN CAPITAL LETTER NJ
-01CB;N;LATIN CAPITAL LETTER N WITH SMALL LETTER J
-01CC;N;LATIN SMALL LETTER NJ
-01CD;N;LATIN CAPITAL LETTER A WITH CARON
-01CE;A;LATIN SMALL LETTER A WITH CARON
-01CF;N;LATIN CAPITAL LETTER I WITH CARON
-01D0;A;LATIN SMALL LETTER I WITH CARON
-01D1;N;LATIN CAPITAL LETTER O WITH CARON
-01D2;A;LATIN SMALL LETTER O WITH CARON
-01D3;N;LATIN CAPITAL LETTER U WITH CARON
-01D4;A;LATIN SMALL LETTER U WITH CARON
-01D5;N;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01D6;A;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D7;N;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D8;A;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D9;N;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-01DA;A;LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01DB;N;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01DC;A;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DD;N;LATIN SMALL LETTER TURNED E
-01DE;N;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-01DF;N;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01E0;N;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
-01E1;N;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
-01E2;N;LATIN CAPITAL LETTER AE WITH MACRON
-01E3;N;LATIN SMALL LETTER AE WITH MACRON
-01E4;N;LATIN CAPITAL LETTER G WITH STROKE
-01E5;N;LATIN SMALL LETTER G WITH STROKE
-01E6;N;LATIN CAPITAL LETTER G WITH CARON
-01E7;N;LATIN SMALL LETTER G WITH CARON
-01E8;N;LATIN CAPITAL LETTER K WITH CARON
-01E9;N;LATIN SMALL LETTER K WITH CARON
-01EA;N;LATIN CAPITAL LETTER O WITH OGONEK
-01EB;N;LATIN SMALL LETTER O WITH OGONEK
-01EC;N;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
-01ED;N;LATIN SMALL LETTER O WITH OGONEK AND MACRON
-01EE;N;LATIN CAPITAL LETTER EZH WITH CARON
-01EF;N;LATIN SMALL LETTER EZH WITH CARON
-01F0;N;LATIN SMALL LETTER J WITH CARON
-01F1;N;LATIN CAPITAL LETTER DZ
-01F2;N;LATIN CAPITAL LETTER D WITH SMALL LETTER Z
-01F3;N;LATIN SMALL LETTER DZ
-01F4;N;LATIN CAPITAL LETTER G WITH ACUTE
-01F5;N;LATIN SMALL LETTER G WITH ACUTE
-01F6;N;LATIN CAPITAL LETTER HWAIR
-01F7;N;LATIN CAPITAL LETTER WYNN
-01F8;N;LATIN CAPITAL LETTER N WITH GRAVE
-01F9;N;LATIN SMALL LETTER N WITH GRAVE
-01FA;N;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-01FB;N;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FC;N;LATIN CAPITAL LETTER AE WITH ACUTE
-01FD;N;LATIN SMALL LETTER AE WITH ACUTE
-01FE;N;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-01FF;N;LATIN SMALL LETTER O WITH STROKE AND ACUTE
-0200;N;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
-0201;N;LATIN SMALL LETTER A WITH DOUBLE GRAVE
-0202;N;LATIN CAPITAL LETTER A WITH INVERTED BREVE
-0203;N;LATIN SMALL LETTER A WITH INVERTED BREVE
-0204;N;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
-0205;N;LATIN SMALL LETTER E WITH DOUBLE GRAVE
-0206;N;LATIN CAPITAL LETTER E WITH INVERTED BREVE
-0207;N;LATIN SMALL LETTER E WITH INVERTED BREVE
-0208;N;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
-0209;N;LATIN SMALL LETTER I WITH DOUBLE GRAVE
-020A;N;LATIN CAPITAL LETTER I WITH INVERTED BREVE
-020B;N;LATIN SMALL LETTER I WITH INVERTED BREVE
-020C;N;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
-020D;N;LATIN SMALL LETTER O WITH DOUBLE GRAVE
-020E;N;LATIN CAPITAL LETTER O WITH INVERTED BREVE
-020F;N;LATIN SMALL LETTER O WITH INVERTED BREVE
-0210;N;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
-0211;N;LATIN SMALL LETTER R WITH DOUBLE GRAVE
-0212;N;LATIN CAPITAL LETTER R WITH INVERTED BREVE
-0213;N;LATIN SMALL LETTER R WITH INVERTED BREVE
-0214;N;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
-0215;N;LATIN SMALL LETTER U WITH DOUBLE GRAVE
-0216;N;LATIN CAPITAL LETTER U WITH INVERTED BREVE
-0217;N;LATIN SMALL LETTER U WITH INVERTED BREVE
-0218;N;LATIN CAPITAL LETTER S WITH COMMA BELOW
-0219;N;LATIN SMALL LETTER S WITH COMMA BELOW
-021A;N;LATIN CAPITAL LETTER T WITH COMMA BELOW
-021B;N;LATIN SMALL LETTER T WITH COMMA BELOW
-021C;N;LATIN CAPITAL LETTER YOGH
-021D;N;LATIN SMALL LETTER YOGH
-021E;N;LATIN CAPITAL LETTER H WITH CARON
-021F;N;LATIN SMALL LETTER H WITH CARON
-0222;N;LATIN CAPITAL LETTER OU
-0223;N;LATIN SMALL LETTER OU
-0224;N;LATIN CAPITAL LETTER Z WITH HOOK
-0225;N;LATIN SMALL LETTER Z WITH HOOK
-0226;N;LATIN CAPITAL LETTER A WITH DOT ABOVE
-0227;N;LATIN SMALL LETTER A WITH DOT ABOVE
-0228;N;LATIN CAPITAL LETTER E WITH CEDILLA
-0229;N;LATIN SMALL LETTER E WITH CEDILLA
-022A;N;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-022B;N;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022C;N;LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-022D;N;LATIN SMALL LETTER O WITH TILDE AND MACRON
-022E;N;LATIN CAPITAL LETTER O WITH DOT ABOVE
-022F;N;LATIN SMALL LETTER O WITH DOT ABOVE
-0230;N;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
-0231;N;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
-0232;N;LATIN CAPITAL LETTER Y WITH MACRON
-0233;N;LATIN SMALL LETTER Y WITH MACRON
-0250;N;LATIN SMALL LETTER TURNED A
-0251;A;LATIN SMALL LETTER ALPHA
-0252;N;LATIN SMALL LETTER TURNED ALPHA
-0253;N;LATIN SMALL LETTER B WITH HOOK
-0254;N;LATIN SMALL LETTER OPEN O
-0255;N;LATIN SMALL LETTER C WITH CURL
-0256;N;LATIN SMALL LETTER D WITH TAIL
-0257;N;LATIN SMALL LETTER D WITH HOOK
-0258;N;LATIN SMALL LETTER REVERSED E
-0259;N;LATIN SMALL LETTER SCHWA
-025A;N;LATIN SMALL LETTER SCHWA WITH HOOK
-025B;N;LATIN SMALL LETTER OPEN E
-025C;N;LATIN SMALL LETTER REVERSED OPEN E
-025D;N;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
-025E;N;LATIN SMALL LETTER CLOSED REVERSED OPEN E
-025F;N;LATIN SMALL LETTER DOTLESS J WITH STROKE
-0260;N;LATIN SMALL LETTER G WITH HOOK
-0261;A;LATIN SMALL LETTER SCRIPT G
-0262;N;LATIN LETTER SMALL CAPITAL G
-0263;N;LATIN SMALL LETTER GAMMA
-0264;N;LATIN SMALL LETTER RAMS HORN
-0265;N;LATIN SMALL LETTER TURNED H
-0266;N;LATIN SMALL LETTER H WITH HOOK
-0267;N;LATIN SMALL LETTER HENG WITH HOOK
-0268;N;LATIN SMALL LETTER I WITH STROKE
-0269;N;LATIN SMALL LETTER IOTA
-026A;N;LATIN LETTER SMALL CAPITAL I
-026B;N;LATIN SMALL LETTER L WITH MIDDLE TILDE
-026C;N;LATIN SMALL LETTER L WITH BELT
-026D;N;LATIN SMALL LETTER L WITH RETROFLEX HOOK
-026E;N;LATIN SMALL LETTER LEZH
-026F;N;LATIN SMALL LETTER TURNED M
-0270;N;LATIN SMALL LETTER TURNED M WITH LONG LEG
-0271;N;LATIN SMALL LETTER M WITH HOOK
-0272;N;LATIN SMALL LETTER N WITH LEFT HOOK
-0273;N;LATIN SMALL LETTER N WITH RETROFLEX HOOK
-0274;N;LATIN LETTER SMALL CAPITAL N
-0275;N;LATIN SMALL LETTER BARRED O
-0276;N;LATIN LETTER SMALL CAPITAL OE
-0277;N;LATIN SMALL LETTER CLOSED OMEGA
-0278;N;LATIN SMALL LETTER PHI
-0279;N;LATIN SMALL LETTER TURNED R
-027A;N;LATIN SMALL LETTER TURNED R WITH LONG LEG
-027B;N;LATIN SMALL LETTER TURNED R WITH HOOK
-027C;N;LATIN SMALL LETTER R WITH LONG LEG
-027D;N;LATIN SMALL LETTER R WITH TAIL
-027E;N;LATIN SMALL LETTER R WITH FISHHOOK
-027F;N;LATIN SMALL LETTER REVERSED R WITH FISHHOOK
-0280;N;LATIN LETTER SMALL CAPITAL R
-0281;N;LATIN LETTER SMALL CAPITAL INVERTED R
-0282;N;LATIN SMALL LETTER S WITH HOOK
-0283;N;LATIN SMALL LETTER ESH
-0284;N;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
-0285;N;LATIN SMALL LETTER SQUAT REVERSED ESH
-0286;N;LATIN SMALL LETTER ESH WITH CURL
-0287;N;LATIN SMALL LETTER TURNED T
-0288;N;LATIN SMALL LETTER T WITH RETROFLEX HOOK
-0289;N;LATIN SMALL LETTER U BAR
-028A;N;LATIN SMALL LETTER UPSILON
-028B;N;LATIN SMALL LETTER V WITH HOOK
-028C;N;LATIN SMALL LETTER TURNED V
-028D;N;LATIN SMALL LETTER TURNED W
-028E;N;LATIN SMALL LETTER TURNED Y
-028F;N;LATIN LETTER SMALL CAPITAL Y
-0290;N;LATIN SMALL LETTER Z WITH RETROFLEX HOOK
-0291;N;LATIN SMALL LETTER Z WITH CURL
-0292;N;LATIN SMALL LETTER EZH
-0293;N;LATIN SMALL LETTER EZH WITH CURL
-0294;N;LATIN LETTER GLOTTAL STOP
-0295;N;LATIN LETTER PHARYNGEAL VOICED FRICATIVE
-0296;N;LATIN LETTER INVERTED GLOTTAL STOP
-0297;N;LATIN LETTER STRETCHED C
-0298;N;LATIN LETTER BILABIAL CLICK
-0299;N;LATIN LETTER SMALL CAPITAL B
-029A;N;LATIN SMALL LETTER CLOSED OPEN E
-029B;N;LATIN LETTER SMALL CAPITAL G WITH HOOK
-029C;N;LATIN LETTER SMALL CAPITAL H
-029D;N;LATIN SMALL LETTER J WITH CROSSED-TAIL
-029E;N;LATIN SMALL LETTER TURNED K
-029F;N;LATIN LETTER SMALL CAPITAL L
-02A0;N;LATIN SMALL LETTER Q WITH HOOK
-02A1;N;LATIN LETTER GLOTTAL STOP WITH STROKE
-02A2;N;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
-02A3;N;LATIN SMALL LETTER DZ DIGRAPH
-02A4;N;LATIN SMALL LETTER DEZH DIGRAPH
-02A5;N;LATIN SMALL LETTER DZ DIGRAPH WITH CURL
-02A6;N;LATIN SMALL LETTER TS DIGRAPH
-02A7;N;LATIN SMALL LETTER TESH DIGRAPH
-02A8;N;LATIN SMALL LETTER TC DIGRAPH WITH CURL
-02A9;N;LATIN SMALL LETTER FENG DIGRAPH
-02AA;N;LATIN SMALL LETTER LS DIGRAPH
-02AB;N;LATIN SMALL LETTER LZ DIGRAPH
-02AC;N;LATIN LETTER BILABIAL PERCUSSIVE
-02AD;N;LATIN LETTER BIDENTAL PERCUSSIVE
-02B0;N;MODIFIER LETTER SMALL H
-02B1;N;MODIFIER LETTER SMALL H WITH HOOK
-02B2;N;MODIFIER LETTER SMALL J
-02B3;N;MODIFIER LETTER SMALL R
-02B4;N;MODIFIER LETTER SMALL TURNED R
-02B5;N;MODIFIER LETTER SMALL TURNED R WITH HOOK
-02B6;N;MODIFIER LETTER SMALL CAPITAL INVERTED R
-02B7;N;MODIFIER LETTER SMALL W
-02B8;N;MODIFIER LETTER SMALL Y
-02B9;N;MODIFIER LETTER PRIME
-02BA;N;MODIFIER LETTER DOUBLE PRIME
-02BB;N;MODIFIER LETTER TURNED COMMA
-02BC;N;MODIFIER LETTER APOSTROPHE
-02BD;N;MODIFIER LETTER REVERSED COMMA
-02BE;N;MODIFIER LETTER RIGHT HALF RING
-02BF;N;MODIFIER LETTER LEFT HALF RING
-02C0;N;MODIFIER LETTER GLOTTAL STOP
-02C1;N;MODIFIER LETTER REVERSED GLOTTAL STOP
-02C2;N;MODIFIER LETTER LEFT ARROWHEAD
-02C3;N;MODIFIER LETTER RIGHT ARROWHEAD
-02C4;N;MODIFIER LETTER UP ARROWHEAD
-02C5;N;MODIFIER LETTER DOWN ARROWHEAD
-02C6;N;MODIFIER LETTER CIRCUMFLEX ACCENT
-02C7;A;CARON
-02C8;N;MODIFIER LETTER VERTICAL LINE
-02C9;A;MODIFIER LETTER MACRON
-02CA;A;MODIFIER LETTER ACUTE ACCENT
-02CB;A;MODIFIER LETTER GRAVE ACCENT
-02CC;N;MODIFIER LETTER LOW VERTICAL LINE
-02CD;A;MODIFIER LETTER LOW MACRON
-02CE;N;MODIFIER LETTER LOW GRAVE ACCENT
-02CF;N;MODIFIER LETTER LOW ACUTE ACCENT
-02D0;A;MODIFIER LETTER TRIANGULAR COLON
-02D1;N;MODIFIER LETTER HALF TRIANGULAR COLON
-02D2;N;MODIFIER LETTER CENTRED RIGHT HALF RING
-02D3;N;MODIFIER LETTER CENTRED LEFT HALF RING
-02D4;N;MODIFIER LETTER UP TACK
-02D5;N;MODIFIER LETTER DOWN TACK
-02D6;N;MODIFIER LETTER PLUS SIGN
-02D7;N;MODIFIER LETTER MINUS SIGN
-02D8;A;BREVE
-02D9;A;DOT ABOVE
-02DA;A;RING ABOVE
-02DB;A;OGONEK
-02DC;N;SMALL TILDE
-02DD;A;DOUBLE ACUTE ACCENT
-02DE;N;MODIFIER LETTER RHOTIC HOOK
-02DF;N;MODIFIER LETTER CROSS ACCENT
-02E0;N;MODIFIER LETTER SMALL GAMMA
-02E1;N;MODIFIER LETTER SMALL L
-02E2;N;MODIFIER LETTER SMALL S
-02E3;N;MODIFIER LETTER SMALL X
-02E4;N;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-02E5;N;MODIFIER LETTER EXTRA-HIGH TONE BAR
-02E6;N;MODIFIER LETTER HIGH TONE BAR
-02E7;N;MODIFIER LETTER MID TONE BAR
-02E8;N;MODIFIER LETTER LOW TONE BAR
-02E9;N;MODIFIER LETTER EXTRA-LOW TONE BAR
-02EA;N;MODIFIER LETTER YIN DEPARTING TONE MARK
-02EB;N;MODIFIER LETTER YANG DEPARTING TONE MARK
-02EC;N;MODIFIER LETTER VOICING
-02ED;N;MODIFIER LETTER UNASPIRATED
-02EE;N;MODIFIER LETTER DOUBLE APOSTROPHE
-0300;A;COMBINING GRAVE ACCENT
-0301;A;COMBINING ACUTE ACCENT
-0302;A;COMBINING CIRCUMFLEX ACCENT
-0303;A;COMBINING TILDE
-0304;A;COMBINING MACRON
-0305;A;COMBINING OVERLINE
-0306;A;COMBINING BREVE
-0307;A;COMBINING DOT ABOVE
-0308;A;COMBINING DIAERESIS
-0309;A;COMBINING HOOK ABOVE
-030A;A;COMBINING RING ABOVE
-030B;A;COMBINING DOUBLE ACUTE ACCENT
-030C;A;COMBINING CARON
-030D;A;COMBINING VERTICAL LINE ABOVE
-030E;A;COMBINING DOUBLE VERTICAL LINE ABOVE
-030F;A;COMBINING DOUBLE GRAVE ACCENT
-0310;A;COMBINING CANDRABINDU
-0311;A;COMBINING INVERTED BREVE
-0312;A;COMBINING TURNED COMMA ABOVE
-0313;A;COMBINING COMMA ABOVE
-0314;A;COMBINING REVERSED COMMA ABOVE
-0315;A;COMBINING COMMA ABOVE RIGHT
-0316;A;COMBINING GRAVE ACCENT BELOW
-0317;A;COMBINING ACUTE ACCENT BELOW
-0318;A;COMBINING LEFT TACK BELOW
-0319;A;COMBINING RIGHT TACK BELOW
-031A;A;COMBINING LEFT ANGLE ABOVE
-031B;A;COMBINING HORN
-031C;A;COMBINING LEFT HALF RING BELOW
-031D;A;COMBINING UP TACK BELOW
-031E;A;COMBINING DOWN TACK BELOW
-031F;A;COMBINING PLUS SIGN BELOW
-0320;A;COMBINING MINUS SIGN BELOW
-0321;A;COMBINING PALATALIZED HOOK BELOW
-0322;A;COMBINING RETROFLEX HOOK BELOW
-0323;A;COMBINING DOT BELOW
-0324;A;COMBINING DIAERESIS BELOW
-0325;A;COMBINING RING BELOW
-0326;A;COMBINING COMMA BELOW
-0327;A;COMBINING CEDILLA
-0328;A;COMBINING OGONEK
-0329;A;COMBINING VERTICAL LINE BELOW
-032A;A;COMBINING BRIDGE BELOW
-032B;A;COMBINING INVERTED DOUBLE ARCH BELOW
-032C;A;COMBINING CARON BELOW
-032D;A;COMBINING CIRCUMFLEX ACCENT BELOW
-032E;A;COMBINING BREVE BELOW
-032F;A;COMBINING INVERTED BREVE BELOW
-0330;A;COMBINING TILDE BELOW
-0331;A;COMBINING MACRON BELOW
-0332;A;COMBINING LOW LINE
-0333;A;COMBINING DOUBLE LOW LINE
-0334;A;COMBINING TILDE OVERLAY
-0335;A;COMBINING SHORT STROKE OVERLAY
-0336;A;COMBINING LONG STROKE OVERLAY
-0337;A;COMBINING SHORT SOLIDUS OVERLAY
-0338;A;COMBINING LONG SOLIDUS OVERLAY
-0339;A;COMBINING RIGHT HALF RING BELOW
-033A;A;COMBINING INVERTED BRIDGE BELOW
-033B;A;COMBINING SQUARE BELOW
-033C;A;COMBINING SEAGULL BELOW
-033D;A;COMBINING X ABOVE
-033E;A;COMBINING VERTICAL TILDE
-033F;A;COMBINING DOUBLE OVERLINE
-0340;A;COMBINING GRAVE TONE MARK
-0341;A;COMBINING ACUTE TONE MARK
-0342;A;COMBINING GREEK PERISPOMENI
-0343;A;COMBINING GREEK KORONIS
-0344;A;COMBINING GREEK DIALYTIKA TONOS
-0345;A;COMBINING GREEK YPOGEGRAMMENI
-0346;A;COMBINING BRIDGE ABOVE
-0347;A;COMBINING EQUALS SIGN BELOW
-0348;A;COMBINING DOUBLE VERTICAL LINE BELOW
-0349;A;COMBINING LEFT ANGLE BELOW
-034A;A;COMBINING NOT TILDE ABOVE
-034B;A;COMBINING HOMOTHETIC ABOVE
-034C;A;COMBINING ALMOST EQUAL TO ABOVE
-034D;A;COMBINING LEFT RIGHT ARROW BELOW
-034E;A;COMBINING UPWARDS ARROW BELOW
-0360;A;COMBINING DOUBLE TILDE
-0361;A;COMBINING DOUBLE INVERTED BREVE
-0362;A;COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-0374;N;GREEK NUMERAL SIGN
-0375;N;GREEK LOWER NUMERAL SIGN
-037A;N;GREEK YPOGEGRAMMENI
-037E;N;GREEK QUESTION MARK
-0384;N;GREEK TONOS
-0385;N;GREEK DIALYTIKA TONOS
-0386;N;GREEK CAPITAL LETTER ALPHA WITH TONOS
-0387;N;GREEK ANO TELEIA
-0388;N;GREEK CAPITAL LETTER EPSILON WITH TONOS
-0389;N;GREEK CAPITAL LETTER ETA WITH TONOS
-038A;N;GREEK CAPITAL LETTER IOTA WITH TONOS
-038C;N;GREEK CAPITAL LETTER OMICRON WITH TONOS
-038E;N;GREEK CAPITAL LETTER UPSILON WITH TONOS
-038F;N;GREEK CAPITAL LETTER OMEGA WITH TONOS
-0390;N;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0391;A;GREEK CAPITAL LETTER ALPHA
-0392;A;GREEK CAPITAL LETTER BETA
-0393;A;GREEK CAPITAL LETTER GAMMA
-0394;A;GREEK CAPITAL LETTER DELTA
-0395;A;GREEK CAPITAL LETTER EPSILON
-0396;A;GREEK CAPITAL LETTER ZETA
-0397;A;GREEK CAPITAL LETTER ETA
-0398;A;GREEK CAPITAL LETTER THETA
-0399;A;GREEK CAPITAL LETTER IOTA
-039A;A;GREEK CAPITAL LETTER KAPPA
-039B;A;GREEK CAPITAL LETTER LAMDA
-039C;A;GREEK CAPITAL LETTER MU
-039D;A;GREEK CAPITAL LETTER NU
-039E;A;GREEK CAPITAL LETTER XI
-039F;A;GREEK CAPITAL LETTER OMICRON
-03A0;A;GREEK CAPITAL LETTER PI
-03A1;A;GREEK CAPITAL LETTER RHO
-03A3;A;GREEK CAPITAL LETTER SIGMA
-03A4;A;GREEK CAPITAL LETTER TAU
-03A5;A;GREEK CAPITAL LETTER UPSILON
-03A6;A;GREEK CAPITAL LETTER PHI
-03A7;A;GREEK CAPITAL LETTER CHI
-03A8;A;GREEK CAPITAL LETTER PSI
-03A9;A;GREEK CAPITAL LETTER OMEGA
-03AA;N;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-03AB;N;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-03AC;N;GREEK SMALL LETTER ALPHA WITH TONOS
-03AD;N;GREEK SMALL LETTER EPSILON WITH TONOS
-03AE;N;GREEK SMALL LETTER ETA WITH TONOS
-03AF;N;GREEK SMALL LETTER IOTA WITH TONOS
-03B0;N;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-03B1;A;GREEK SMALL LETTER ALPHA
-03B2;A;GREEK SMALL LETTER BETA
-03B3;A;GREEK SMALL LETTER GAMMA
-03B4;A;GREEK SMALL LETTER DELTA
-03B5;A;GREEK SMALL LETTER EPSILON
-03B6;A;GREEK SMALL LETTER ZETA
-03B7;A;GREEK SMALL LETTER ETA
-03B8;A;GREEK SMALL LETTER THETA
-03B9;A;GREEK SMALL LETTER IOTA
-03BA;A;GREEK SMALL LETTER KAPPA
-03BB;A;GREEK SMALL LETTER LAMDA
-03BC;A;GREEK SMALL LETTER MU
-03BD;A;GREEK SMALL LETTER NU
-03BE;A;GREEK SMALL LETTER XI
-03BF;A;GREEK SMALL LETTER OMICRON
-03C0;A;GREEK SMALL LETTER PI
-03C1;A;GREEK SMALL LETTER RHO
-03C2;N;GREEK SMALL LETTER FINAL SIGMA
-03C3;A;GREEK SMALL LETTER SIGMA
-03C4;A;GREEK SMALL LETTER TAU
-03C5;A;GREEK SMALL LETTER UPSILON
-03C6;A;GREEK SMALL LETTER PHI
-03C7;A;GREEK SMALL LETTER CHI
-03C8;A;GREEK SMALL LETTER PSI
-03C9;A;GREEK SMALL LETTER OMEGA
-03CA;N;GREEK SMALL LETTER IOTA WITH DIALYTIKA
-03CB;N;GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-03CC;N;GREEK SMALL LETTER OMICRON WITH TONOS
-03CD;N;GREEK SMALL LETTER UPSILON WITH TONOS
-03CE;N;GREEK SMALL LETTER OMEGA WITH TONOS
-03D0;N;GREEK BETA SYMBOL
-03D1;N;GREEK THETA SYMBOL
-03D2;N;GREEK UPSILON WITH HOOK SYMBOL
-03D3;N;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
-03D4;N;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
-03D5;N;GREEK PHI SYMBOL
-03D6;N;GREEK PI SYMBOL
-03D7;N;GREEK KAI SYMBOL
-03DA;N;GREEK LETTER STIGMA
-03DB;N;GREEK SMALL LETTER STIGMA
-03DC;N;GREEK LETTER DIGAMMA
-03DD;N;GREEK SMALL LETTER DIGAMMA
-03DE;N;GREEK LETTER KOPPA
-03DF;N;GREEK SMALL LETTER KOPPA
-03E0;N;GREEK LETTER SAMPI
-03E1;N;GREEK SMALL LETTER SAMPI
-03E2;N;COPTIC CAPITAL LETTER SHEI
-03E3;N;COPTIC SMALL LETTER SHEI
-03E4;N;COPTIC CAPITAL LETTER FEI
-03E5;N;COPTIC SMALL LETTER FEI
-03E6;N;COPTIC CAPITAL LETTER KHEI
-03E7;N;COPTIC SMALL LETTER KHEI
-03E8;N;COPTIC CAPITAL LETTER HORI
-03E9;N;COPTIC SMALL LETTER HORI
-03EA;N;COPTIC CAPITAL LETTER GANGIA
-03EB;N;COPTIC SMALL LETTER GANGIA
-03EC;N;COPTIC CAPITAL LETTER SHIMA
-03ED;N;COPTIC SMALL LETTER SHIMA
-03EE;N;COPTIC CAPITAL LETTER DEI
-03EF;N;COPTIC SMALL LETTER DEI
-03F0;N;GREEK KAPPA SYMBOL
-03F1;N;GREEK RHO SYMBOL
-03F2;N;GREEK LUNATE SIGMA SYMBOL
-03F3;N;GREEK LETTER YOT
-0400;N;CYRILLIC CAPITAL LETTER IE WITH GRAVE
-0401;A;CYRILLIC CAPITAL LETTER IO
-0402;N;CYRILLIC CAPITAL LETTER DJE
-0403;N;CYRILLIC CAPITAL LETTER GJE
-0404;N;CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0405;N;CYRILLIC CAPITAL LETTER DZE
-0406;N;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0407;N;CYRILLIC CAPITAL LETTER YI
-0408;N;CYRILLIC CAPITAL LETTER JE
-0409;N;CYRILLIC CAPITAL LETTER LJE
-040A;N;CYRILLIC CAPITAL LETTER NJE
-040B;N;CYRILLIC CAPITAL LETTER TSHE
-040C;N;CYRILLIC CAPITAL LETTER KJE
-040D;N;CYRILLIC CAPITAL LETTER I WITH GRAVE
-040E;N;CYRILLIC CAPITAL LETTER SHORT U
-040F;N;CYRILLIC CAPITAL LETTER DZHE
-0410;A;CYRILLIC CAPITAL LETTER A
-0411;A;CYRILLIC CAPITAL LETTER BE
-0412;A;CYRILLIC CAPITAL LETTER VE
-0413;A;CYRILLIC CAPITAL LETTER GHE
-0414;A;CYRILLIC CAPITAL LETTER DE
-0415;A;CYRILLIC CAPITAL LETTER IE
-0416;A;CYRILLIC CAPITAL LETTER ZHE
-0417;A;CYRILLIC CAPITAL LETTER ZE
-0418;A;CYRILLIC CAPITAL LETTER I
-0419;A;CYRILLIC CAPITAL LETTER SHORT I
-041A;A;CYRILLIC CAPITAL LETTER KA
-041B;A;CYRILLIC CAPITAL LETTER EL
-041C;A;CYRILLIC CAPITAL LETTER EM
-041D;A;CYRILLIC CAPITAL LETTER EN
-041E;A;CYRILLIC CAPITAL LETTER O
-041F;A;CYRILLIC CAPITAL LETTER PE
-0420;A;CYRILLIC CAPITAL LETTER ER
-0421;A;CYRILLIC CAPITAL LETTER ES
-0422;A;CYRILLIC CAPITAL LETTER TE
-0423;A;CYRILLIC CAPITAL LETTER U
-0424;A;CYRILLIC CAPITAL LETTER EF
-0425;A;CYRILLIC CAPITAL LETTER HA
-0426;A;CYRILLIC CAPITAL LETTER TSE
-0427;A;CYRILLIC CAPITAL LETTER CHE
-0428;A;CYRILLIC CAPITAL LETTER SHA
-0429;A;CYRILLIC CAPITAL LETTER SHCHA
-042A;A;CYRILLIC CAPITAL LETTER HARD SIGN
-042B;A;CYRILLIC CAPITAL LETTER YERU
-042C;A;CYRILLIC CAPITAL LETTER SOFT SIGN
-042D;A;CYRILLIC CAPITAL LETTER E
-042E;A;CYRILLIC CAPITAL LETTER YU
-042F;A;CYRILLIC CAPITAL LETTER YA
-0430;A;CYRILLIC SMALL LETTER A
-0431;A;CYRILLIC SMALL LETTER BE
-0432;A;CYRILLIC SMALL LETTER VE
-0433;A;CYRILLIC SMALL LETTER GHE
-0434;A;CYRILLIC SMALL LETTER DE
-0435;A;CYRILLIC SMALL LETTER IE
-0436;A;CYRILLIC SMALL LETTER ZHE
-0437;A;CYRILLIC SMALL LETTER ZE
-0438;A;CYRILLIC SMALL LETTER I
-0439;A;CYRILLIC SMALL LETTER SHORT I
-043A;A;CYRILLIC SMALL LETTER KA
-043B;A;CYRILLIC SMALL LETTER EL
-043C;A;CYRILLIC SMALL LETTER EM
-043D;A;CYRILLIC SMALL LETTER EN
-043E;A;CYRILLIC SMALL LETTER O
-043F;A;CYRILLIC SMALL LETTER PE
-0440;A;CYRILLIC SMALL LETTER ER
-0441;A;CYRILLIC SMALL LETTER ES
-0442;A;CYRILLIC SMALL LETTER TE
-0443;A;CYRILLIC SMALL LETTER U
-0444;A;CYRILLIC SMALL LETTER EF
-0445;A;CYRILLIC SMALL LETTER HA
-0446;A;CYRILLIC SMALL LETTER TSE
-0447;A;CYRILLIC SMALL LETTER CHE
-0448;A;CYRILLIC SMALL LETTER SHA
-0449;A;CYRILLIC SMALL LETTER SHCHA
-044A;A;CYRILLIC SMALL LETTER HARD SIGN
-044B;A;CYRILLIC SMALL LETTER YERU
-044C;A;CYRILLIC SMALL LETTER SOFT SIGN
-044D;A;CYRILLIC SMALL LETTER E
-044E;A;CYRILLIC SMALL LETTER YU
-044F;A;CYRILLIC SMALL LETTER YA
-0450;N;CYRILLIC SMALL LETTER IE WITH GRAVE
-0451;A;CYRILLIC SMALL LETTER IO
-0452;N;CYRILLIC SMALL LETTER DJE
-0453;N;CYRILLIC SMALL LETTER GJE
-0454;N;CYRILLIC SMALL LETTER UKRAINIAN IE
-0455;N;CYRILLIC SMALL LETTER DZE
-0456;N;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0457;N;CYRILLIC SMALL LETTER YI
-0458;N;CYRILLIC SMALL LETTER JE
-0459;N;CYRILLIC SMALL LETTER LJE
-045A;N;CYRILLIC SMALL LETTER NJE
-045B;N;CYRILLIC SMALL LETTER TSHE
-045C;N;CYRILLIC SMALL LETTER KJE
-045D;N;CYRILLIC SMALL LETTER I WITH GRAVE
-045E;N;CYRILLIC SMALL LETTER SHORT U
-045F;N;CYRILLIC SMALL LETTER DZHE
-0460;N;CYRILLIC CAPITAL LETTER OMEGA
-0461;N;CYRILLIC SMALL LETTER OMEGA
-0462;N;CYRILLIC CAPITAL LETTER YAT
-0463;N;CYRILLIC SMALL LETTER YAT
-0464;N;CYRILLIC CAPITAL LETTER IOTIFIED E
-0465;N;CYRILLIC SMALL LETTER IOTIFIED E
-0466;N;CYRILLIC CAPITAL LETTER LITTLE YUS
-0467;N;CYRILLIC SMALL LETTER LITTLE YUS
-0468;N;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-0469;N;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
-046A;N;CYRILLIC CAPITAL LETTER BIG YUS
-046B;N;CYRILLIC SMALL LETTER BIG YUS
-046C;N;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-046D;N;CYRILLIC SMALL LETTER IOTIFIED BIG YUS
-046E;N;CYRILLIC CAPITAL LETTER KSI
-046F;N;CYRILLIC SMALL LETTER KSI
-0470;N;CYRILLIC CAPITAL LETTER PSI
-0471;N;CYRILLIC SMALL LETTER PSI
-0472;N;CYRILLIC CAPITAL LETTER FITA
-0473;N;CYRILLIC SMALL LETTER FITA
-0474;N;CYRILLIC CAPITAL LETTER IZHITSA
-0475;N;CYRILLIC SMALL LETTER IZHITSA
-0476;N;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0477;N;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0478;N;CYRILLIC CAPITAL LETTER UK
-0479;N;CYRILLIC SMALL LETTER UK
-047A;N;CYRILLIC CAPITAL LETTER ROUND OMEGA
-047B;N;CYRILLIC SMALL LETTER ROUND OMEGA
-047C;N;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
-047D;N;CYRILLIC SMALL LETTER OMEGA WITH TITLO
-047E;N;CYRILLIC CAPITAL LETTER OT
-047F;N;CYRILLIC SMALL LETTER OT
-0480;N;CYRILLIC CAPITAL LETTER KOPPA
-0481;N;CYRILLIC SMALL LETTER KOPPA
-0482;N;CYRILLIC THOUSANDS SIGN
-0483;N;COMBINING CYRILLIC TITLO
-0484;N;COMBINING CYRILLIC PALATALIZATION
-0485;N;COMBINING CYRILLIC DASIA PNEUMATA
-0486;N;COMBINING CYRILLIC PSILI PNEUMATA
-0488;N;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
-0489;N;COMBINING CYRILLIC MILLIONS SIGN
-048C;N;CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-048D;N;CYRILLIC SMALL LETTER SEMISOFT SIGN
-048E;N;CYRILLIC CAPITAL LETTER ER WITH TICK
-048F;N;CYRILLIC SMALL LETTER ER WITH TICK
-0490;N;CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0491;N;CYRILLIC SMALL LETTER GHE WITH UPTURN
-0492;N;CYRILLIC CAPITAL LETTER GHE WITH STROKE
-0493;N;CYRILLIC SMALL LETTER GHE WITH STROKE
-0494;N;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
-0495;N;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
-0496;N;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-0497;N;CYRILLIC SMALL LETTER ZHE WITH DESCENDER
-0498;N;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-0499;N;CYRILLIC SMALL LETTER ZE WITH DESCENDER
-049A;N;CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-049B;N;CYRILLIC SMALL LETTER KA WITH DESCENDER
-049C;N;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-049D;N;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
-049E;N;CYRILLIC CAPITAL LETTER KA WITH STROKE
-049F;N;CYRILLIC SMALL LETTER KA WITH STROKE
-04A0;N;CYRILLIC CAPITAL LETTER BASHKIR KA
-04A1;N;CYRILLIC SMALL LETTER BASHKIR KA
-04A2;N;CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-04A3;N;CYRILLIC SMALL LETTER EN WITH DESCENDER
-04A4;N;CYRILLIC CAPITAL LIGATURE EN GHE
-04A5;N;CYRILLIC SMALL LIGATURE EN GHE
-04A6;N;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
-04A7;N;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
-04A8;N;CYRILLIC CAPITAL LETTER ABKHASIAN HA
-04A9;N;CYRILLIC SMALL LETTER ABKHASIAN HA
-04AA;N;CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-04AB;N;CYRILLIC SMALL LETTER ES WITH DESCENDER
-04AC;N;CYRILLIC CAPITAL LETTER TE WITH DESCENDER
-04AD;N;CYRILLIC SMALL LETTER TE WITH DESCENDER
-04AE;N;CYRILLIC CAPITAL LETTER STRAIGHT U
-04AF;N;CYRILLIC SMALL LETTER STRAIGHT U
-04B0;N;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-04B1;N;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
-04B2;N;CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-04B3;N;CYRILLIC SMALL LETTER HA WITH DESCENDER
-04B4;N;CYRILLIC CAPITAL LIGATURE TE TSE
-04B5;N;CYRILLIC SMALL LIGATURE TE TSE
-04B6;N;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-04B7;N;CYRILLIC SMALL LETTER CHE WITH DESCENDER
-04B8;N;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-04B9;N;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
-04BA;N;CYRILLIC CAPITAL LETTER SHHA
-04BB;N;CYRILLIC SMALL LETTER SHHA
-04BC;N;CYRILLIC CAPITAL LETTER ABKHASIAN CHE
-04BD;N;CYRILLIC SMALL LETTER ABKHASIAN CHE
-04BE;N;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
-04BF;N;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
-04C0;N;CYRILLIC LETTER PALOCHKA
-04C1;N;CYRILLIC CAPITAL LETTER ZHE WITH BREVE
-04C2;N;CYRILLIC SMALL LETTER ZHE WITH BREVE
-04C3;N;CYRILLIC CAPITAL LETTER KA WITH HOOK
-04C4;N;CYRILLIC SMALL LETTER KA WITH HOOK
-04C7;N;CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C8;N;CYRILLIC SMALL LETTER EN WITH HOOK
-04CB;N;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CC;N;CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04D0;N;CYRILLIC CAPITAL LETTER A WITH BREVE
-04D1;N;CYRILLIC SMALL LETTER A WITH BREVE
-04D2;N;CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04D3;N;CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D4;N;CYRILLIC CAPITAL LIGATURE A IE
-04D5;N;CYRILLIC SMALL LIGATURE A IE
-04D6;N;CYRILLIC CAPITAL LETTER IE WITH BREVE
-04D7;N;CYRILLIC SMALL LETTER IE WITH BREVE
-04D8;N;CYRILLIC CAPITAL LETTER SCHWA
-04D9;N;CYRILLIC SMALL LETTER SCHWA
-04DA;N;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04DB;N;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DC;N;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DD;N;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DE;N;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04DF;N;CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04E0;N;CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-04E1;N;CYRILLIC SMALL LETTER ABKHASIAN DZE
-04E2;N;CYRILLIC CAPITAL LETTER I WITH MACRON
-04E3;N;CYRILLIC SMALL LETTER I WITH MACRON
-04E4;N;CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-04E5;N;CYRILLIC SMALL LETTER I WITH DIAERESIS
-04E6;N;CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04E7;N;CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E8;N;CYRILLIC CAPITAL LETTER BARRED O
-04E9;N;CYRILLIC SMALL LETTER BARRED O
-04EA;N;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-04EB;N;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EC;N;CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-04ED;N;CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EE;N;CYRILLIC CAPITAL LETTER U WITH MACRON
-04EF;N;CYRILLIC SMALL LETTER U WITH MACRON
-04F0;N;CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F1;N;CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F2;N;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F3;N;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F4;N;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F5;N;CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F8;N;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04F9;N;CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-0531;N;ARMENIAN CAPITAL LETTER AYB
-0532;N;ARMENIAN CAPITAL LETTER BEN
-0533;N;ARMENIAN CAPITAL LETTER GIM
-0534;N;ARMENIAN CAPITAL LETTER DA
-0535;N;ARMENIAN CAPITAL LETTER ECH
-0536;N;ARMENIAN CAPITAL LETTER ZA
-0537;N;ARMENIAN CAPITAL LETTER EH
-0538;N;ARMENIAN CAPITAL LETTER ET
-0539;N;ARMENIAN CAPITAL LETTER TO
-053A;N;ARMENIAN CAPITAL LETTER ZHE
-053B;N;ARMENIAN CAPITAL LETTER INI
-053C;N;ARMENIAN CAPITAL LETTER LIWN
-053D;N;ARMENIAN CAPITAL LETTER XEH
-053E;N;ARMENIAN CAPITAL LETTER CA
-053F;N;ARMENIAN CAPITAL LETTER KEN
-0540;N;ARMENIAN CAPITAL LETTER HO
-0541;N;ARMENIAN CAPITAL LETTER JA
-0542;N;ARMENIAN CAPITAL LETTER GHAD
-0543;N;ARMENIAN CAPITAL LETTER CHEH
-0544;N;ARMENIAN CAPITAL LETTER MEN
-0545;N;ARMENIAN CAPITAL LETTER YI
-0546;N;ARMENIAN CAPITAL LETTER NOW
-0547;N;ARMENIAN CAPITAL LETTER SHA
-0548;N;ARMENIAN CAPITAL LETTER VO
-0549;N;ARMENIAN CAPITAL LETTER CHA
-054A;N;ARMENIAN CAPITAL LETTER PEH
-054B;N;ARMENIAN CAPITAL LETTER JHEH
-054C;N;ARMENIAN CAPITAL LETTER RA
-054D;N;ARMENIAN CAPITAL LETTER SEH
-054E;N;ARMENIAN CAPITAL LETTER VEW
-054F;N;ARMENIAN CAPITAL LETTER TIWN
-0550;N;ARMENIAN CAPITAL LETTER REH
-0551;N;ARMENIAN CAPITAL LETTER CO
-0552;N;ARMENIAN CAPITAL LETTER YIWN
-0553;N;ARMENIAN CAPITAL LETTER PIWR
-0554;N;ARMENIAN CAPITAL LETTER KEH
-0555;N;ARMENIAN CAPITAL LETTER OH
-0556;N;ARMENIAN CAPITAL LETTER FEH
-0559;N;ARMENIAN MODIFIER LETTER LEFT HALF RING
-055A;N;ARMENIAN APOSTROPHE
-055B;N;ARMENIAN EMPHASIS MARK
-055C;N;ARMENIAN EXCLAMATION MARK
-055D;N;ARMENIAN COMMA
-055E;N;ARMENIAN QUESTION MARK
-055F;N;ARMENIAN ABBREVIATION MARK
-0561;N;ARMENIAN SMALL LETTER AYB
-0562;N;ARMENIAN SMALL LETTER BEN
-0563;N;ARMENIAN SMALL LETTER GIM
-0564;N;ARMENIAN SMALL LETTER DA
-0565;N;ARMENIAN SMALL LETTER ECH
-0566;N;ARMENIAN SMALL LETTER ZA
-0567;N;ARMENIAN SMALL LETTER EH
-0568;N;ARMENIAN SMALL LETTER ET
-0569;N;ARMENIAN SMALL LETTER TO
-056A;N;ARMENIAN SMALL LETTER ZHE
-056B;N;ARMENIAN SMALL LETTER INI
-056C;N;ARMENIAN SMALL LETTER LIWN
-056D;N;ARMENIAN SMALL LETTER XEH
-056E;N;ARMENIAN SMALL LETTER CA
-056F;N;ARMENIAN SMALL LETTER KEN
-0570;N;ARMENIAN SMALL LETTER HO
-0571;N;ARMENIAN SMALL LETTER JA
-0572;N;ARMENIAN SMALL LETTER GHAD
-0573;N;ARMENIAN SMALL LETTER CHEH
-0574;N;ARMENIAN SMALL LETTER MEN
-0575;N;ARMENIAN SMALL LETTER YI
-0576;N;ARMENIAN SMALL LETTER NOW
-0577;N;ARMENIAN SMALL LETTER SHA
-0578;N;ARMENIAN SMALL LETTER VO
-0579;N;ARMENIAN SMALL LETTER CHA
-057A;N;ARMENIAN SMALL LETTER PEH
-057B;N;ARMENIAN SMALL LETTER JHEH
-057C;N;ARMENIAN SMALL LETTER RA
-057D;N;ARMENIAN SMALL LETTER SEH
-057E;N;ARMENIAN SMALL LETTER VEW
-057F;N;ARMENIAN SMALL LETTER TIWN
-0580;N;ARMENIAN SMALL LETTER REH
-0581;N;ARMENIAN SMALL LETTER CO
-0582;N;ARMENIAN SMALL LETTER YIWN
-0583;N;ARMENIAN SMALL LETTER PIWR
-0584;N;ARMENIAN SMALL LETTER KEH
-0585;N;ARMENIAN SMALL LETTER OH
-0586;N;ARMENIAN SMALL LETTER FEH
-0587;N;ARMENIAN SMALL LIGATURE ECH YIWN
-0589;N;ARMENIAN FULL STOP
-058A;N;ARMENIAN HYPHEN
-0591;N;HEBREW ACCENT ETNAHTA
-0592;N;HEBREW ACCENT SEGOL
-0593;N;HEBREW ACCENT SHALSHELET
-0594;N;HEBREW ACCENT ZAQEF QATAN
-0595;N;HEBREW ACCENT ZAQEF GADOL
-0596;N;HEBREW ACCENT TIPEHA
-0597;N;HEBREW ACCENT REVIA
-0598;N;HEBREW ACCENT ZARQA
-0599;N;HEBREW ACCENT PASHTA
-059A;N;HEBREW ACCENT YETIV
-059B;N;HEBREW ACCENT TEVIR
-059C;N;HEBREW ACCENT GERESH
-059D;N;HEBREW ACCENT GERESH MUQDAM
-059E;N;HEBREW ACCENT GERSHAYIM
-059F;N;HEBREW ACCENT QARNEY PARA
-05A0;N;HEBREW ACCENT TELISHA GEDOLA
-05A1;N;HEBREW ACCENT PAZER
-05A3;N;HEBREW ACCENT MUNAH
-05A4;N;HEBREW ACCENT MAHAPAKH
-05A5;N;HEBREW ACCENT MERKHA
-05A6;N;HEBREW ACCENT MERKHA KEFULA
-05A7;N;HEBREW ACCENT DARGA
-05A8;N;HEBREW ACCENT QADMA
-05A9;N;HEBREW ACCENT TELISHA QETANA
-05AA;N;HEBREW ACCENT YERAH BEN YOMO
-05AB;N;HEBREW ACCENT OLE
-05AC;N;HEBREW ACCENT ILUY
-05AD;N;HEBREW ACCENT DEHI
-05AE;N;HEBREW ACCENT ZINOR
-05AF;N;HEBREW MARK MASORA CIRCLE
-05B0;N;HEBREW POINT SHEVA
-05B1;N;HEBREW POINT HATAF SEGOL
-05B2;N;HEBREW POINT HATAF PATAH
-05B3;N;HEBREW POINT HATAF QAMATS
-05B4;N;HEBREW POINT HIRIQ
-05B5;N;HEBREW POINT TSERE
-05B6;N;HEBREW POINT SEGOL
-05B7;N;HEBREW POINT PATAH
-05B8;N;HEBREW POINT QAMATS
-05B9;N;HEBREW POINT HOLAM
-05BB;N;HEBREW POINT QUBUTS
-05BC;N;HEBREW POINT DAGESH OR MAPIQ
-05BD;N;HEBREW POINT METEG
-05BE;N;HEBREW PUNCTUATION MAQAF
-05BF;N;HEBREW POINT RAFE
-05C0;N;HEBREW PUNCTUATION PASEQ
-05C1;N;HEBREW POINT SHIN DOT
-05C2;N;HEBREW POINT SIN DOT
-05C3;N;HEBREW PUNCTUATION SOF PASUQ
-05C4;N;HEBREW MARK UPPER DOT
-05D0;N;HEBREW LETTER ALEF
-05D1;N;HEBREW LETTER BET
-05D2;N;HEBREW LETTER GIMEL
-05D3;N;HEBREW LETTER DALET
-05D4;N;HEBREW LETTER HE
-05D5;N;HEBREW LETTER VAV
-05D6;N;HEBREW LETTER ZAYIN
-05D7;N;HEBREW LETTER HET
-05D8;N;HEBREW LETTER TET
-05D9;N;HEBREW LETTER YOD
-05DA;N;HEBREW LETTER FINAL KAF
-05DB;N;HEBREW LETTER KAF
-05DC;N;HEBREW LETTER LAMED
-05DD;N;HEBREW LETTER FINAL MEM
-05DE;N;HEBREW LETTER MEM
-05DF;N;HEBREW LETTER FINAL NUN
-05E0;N;HEBREW LETTER NUN
-05E1;N;HEBREW LETTER SAMEKH
-05E2;N;HEBREW LETTER AYIN
-05E3;N;HEBREW LETTER FINAL PE
-05E4;N;HEBREW LETTER PE
-05E5;N;HEBREW LETTER FINAL TSADI
-05E6;N;HEBREW LETTER TSADI
-05E7;N;HEBREW LETTER QOF
-05E8;N;HEBREW LETTER RESH
-05E9;N;HEBREW LETTER SHIN
-05EA;N;HEBREW LETTER TAV
-05F0;N;HEBREW LIGATURE YIDDISH DOUBLE VAV
-05F1;N;HEBREW LIGATURE YIDDISH VAV YOD
-05F2;N;HEBREW LIGATURE YIDDISH DOUBLE YOD
-05F3;N;HEBREW PUNCTUATION GERESH
-05F4;N;HEBREW PUNCTUATION GERSHAYIM
-060C;N;ARABIC COMMA
-061B;N;ARABIC SEMICOLON
-061F;N;ARABIC QUESTION MARK
-0621;N;ARABIC LETTER HAMZA
-0622;N;ARABIC LETTER ALEF WITH MADDA ABOVE
-0623;N;ARABIC LETTER ALEF WITH HAMZA ABOVE
-0624;N;ARABIC LETTER WAW WITH HAMZA ABOVE
-0625;N;ARABIC LETTER ALEF WITH HAMZA BELOW
-0626;N;ARABIC LETTER YEH WITH HAMZA ABOVE
-0627;N;ARABIC LETTER ALEF
-0628;N;ARABIC LETTER BEH
-0629;N;ARABIC LETTER TEH MARBUTA
-062A;N;ARABIC LETTER TEH
-062B;N;ARABIC LETTER THEH
-062C;N;ARABIC LETTER JEEM
-062D;N;ARABIC LETTER HAH
-062E;N;ARABIC LETTER KHAH
-062F;N;ARABIC LETTER DAL
-0630;N;ARABIC LETTER THAL
-0631;N;ARABIC LETTER REH
-0632;N;ARABIC LETTER ZAIN
-0633;N;ARABIC LETTER SEEN
-0634;N;ARABIC LETTER SHEEN
-0635;N;ARABIC LETTER SAD
-0636;N;ARABIC LETTER DAD
-0637;N;ARABIC LETTER TAH
-0638;N;ARABIC LETTER ZAH
-0639;N;ARABIC LETTER AIN
-063A;N;ARABIC LETTER GHAIN
-0640;N;ARABIC TATWEEL
-0641;N;ARABIC LETTER FEH
-0642;N;ARABIC LETTER QAF
-0643;N;ARABIC LETTER KAF
-0644;N;ARABIC LETTER LAM
-0645;N;ARABIC LETTER MEEM
-0646;N;ARABIC LETTER NOON
-0647;N;ARABIC LETTER HEH
-0648;N;ARABIC LETTER WAW
-0649;N;ARABIC LETTER ALEF MAKSURA
-064A;N;ARABIC LETTER YEH
-064B;N;ARABIC FATHATAN
-064C;N;ARABIC DAMMATAN
-064D;N;ARABIC KASRATAN
-064E;N;ARABIC FATHA
-064F;N;ARABIC DAMMA
-0650;N;ARABIC KASRA
-0651;N;ARABIC SHADDA
-0652;N;ARABIC SUKUN
-0653;N;ARABIC MADDAH ABOVE
-0654;N;ARABIC HAMZA ABOVE
-0655;N;ARABIC HAMZA BELOW
-0660;N;ARABIC-INDIC DIGIT ZERO
-0661;N;ARABIC-INDIC DIGIT ONE
-0662;N;ARABIC-INDIC DIGIT TWO
-0663;N;ARABIC-INDIC DIGIT THREE
-0664;N;ARABIC-INDIC DIGIT FOUR
-0665;N;ARABIC-INDIC DIGIT FIVE
-0666;N;ARABIC-INDIC DIGIT SIX
-0667;N;ARABIC-INDIC DIGIT SEVEN
-0668;N;ARABIC-INDIC DIGIT EIGHT
-0669;N;ARABIC-INDIC DIGIT NINE
-066A;N;ARABIC PERCENT SIGN
-066B;N;ARABIC DECIMAL SEPARATOR
-066C;N;ARABIC THOUSANDS SEPARATOR
-066D;N;ARABIC FIVE POINTED STAR
-0670;N;ARABIC LETTER SUPERSCRIPT ALEF
-0671;N;ARABIC LETTER ALEF WASLA
-0672;N;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
-0673;N;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
-0674;N;ARABIC LETTER HIGH HAMZA
-0675;N;ARABIC LETTER HIGH HAMZA ALEF
-0676;N;ARABIC LETTER HIGH HAMZA WAW
-0677;N;ARABIC LETTER U WITH HAMZA ABOVE
-0678;N;ARABIC LETTER HIGH HAMZA YEH
-0679;N;ARABIC LETTER TTEH
-067A;N;ARABIC LETTER TTEHEH
-067B;N;ARABIC LETTER BEEH
-067C;N;ARABIC LETTER TEH WITH RING
-067D;N;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
-067E;N;ARABIC LETTER PEH
-067F;N;ARABIC LETTER TEHEH
-0680;N;ARABIC LETTER BEHEH
-0681;N;ARABIC LETTER HAH WITH HAMZA ABOVE
-0682;N;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
-0683;N;ARABIC LETTER NYEH
-0684;N;ARABIC LETTER DYEH
-0685;N;ARABIC LETTER HAH WITH THREE DOTS ABOVE
-0686;N;ARABIC LETTER TCHEH
-0687;N;ARABIC LETTER TCHEHEH
-0688;N;ARABIC LETTER DDAL
-0689;N;ARABIC LETTER DAL WITH RING
-068A;N;ARABIC LETTER DAL WITH DOT BELOW
-068B;N;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
-068C;N;ARABIC LETTER DAHAL
-068D;N;ARABIC LETTER DDAHAL
-068E;N;ARABIC LETTER DUL
-068F;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
-0690;N;ARABIC LETTER DAL WITH FOUR DOTS ABOVE
-0691;N;ARABIC LETTER RREH
-0692;N;ARABIC LETTER REH WITH SMALL V
-0693;N;ARABIC LETTER REH WITH RING
-0694;N;ARABIC LETTER REH WITH DOT BELOW
-0695;N;ARABIC LETTER REH WITH SMALL V BELOW
-0696;N;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
-0697;N;ARABIC LETTER REH WITH TWO DOTS ABOVE
-0698;N;ARABIC LETTER JEH
-0699;N;ARABIC LETTER REH WITH FOUR DOTS ABOVE
-069A;N;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
-069B;N;ARABIC LETTER SEEN WITH THREE DOTS BELOW
-069C;N;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
-069D;N;ARABIC LETTER SAD WITH TWO DOTS BELOW
-069E;N;ARABIC LETTER SAD WITH THREE DOTS ABOVE
-069F;N;ARABIC LETTER TAH WITH THREE DOTS ABOVE
-06A0;N;ARABIC LETTER AIN WITH THREE DOTS ABOVE
-06A1;N;ARABIC LETTER DOTLESS FEH
-06A2;N;ARABIC LETTER FEH WITH DOT MOVED BELOW
-06A3;N;ARABIC LETTER FEH WITH DOT BELOW
-06A4;N;ARABIC LETTER VEH
-06A5;N;ARABIC LETTER FEH WITH THREE DOTS BELOW
-06A6;N;ARABIC LETTER PEHEH
-06A7;N;ARABIC LETTER QAF WITH DOT ABOVE
-06A8;N;ARABIC LETTER QAF WITH THREE DOTS ABOVE
-06A9;N;ARABIC LETTER KEHEH
-06AA;N;ARABIC LETTER SWASH KAF
-06AB;N;ARABIC LETTER KAF WITH RING
-06AC;N;ARABIC LETTER KAF WITH DOT ABOVE
-06AD;N;ARABIC LETTER NG
-06AE;N;ARABIC LETTER KAF WITH THREE DOTS BELOW
-06AF;N;ARABIC LETTER GAF
-06B0;N;ARABIC LETTER GAF WITH RING
-06B1;N;ARABIC LETTER NGOEH
-06B2;N;ARABIC LETTER GAF WITH TWO DOTS BELOW
-06B3;N;ARABIC LETTER GUEH
-06B4;N;ARABIC LETTER GAF WITH THREE DOTS ABOVE
-06B5;N;ARABIC LETTER LAM WITH SMALL V
-06B6;N;ARABIC LETTER LAM WITH DOT ABOVE
-06B7;N;ARABIC LETTER LAM WITH THREE DOTS ABOVE
-06B8;N;ARABIC LETTER LAM WITH THREE DOTS BELOW
-06B9;N;ARABIC LETTER NOON WITH DOT BELOW
-06BA;N;ARABIC LETTER NOON GHUNNA
-06BB;N;ARABIC LETTER RNOON
-06BC;N;ARABIC LETTER NOON WITH RING
-06BD;N;ARABIC LETTER NOON WITH THREE DOTS ABOVE
-06BE;N;ARABIC LETTER HEH DOACHASHMEE
-06BF;N;ARABIC LETTER TCHEH WITH DOT ABOVE
-06C0;N;ARABIC LETTER HEH WITH YEH ABOVE
-06C1;N;ARABIC LETTER HEH GOAL
-06C2;N;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
-06C3;N;ARABIC LETTER TEH MARBUTA GOAL
-06C4;N;ARABIC LETTER WAW WITH RING
-06C5;N;ARABIC LETTER KIRGHIZ OE
-06C6;N;ARABIC LETTER OE
-06C7;N;ARABIC LETTER U
-06C8;N;ARABIC LETTER YU
-06C9;N;ARABIC LETTER KIRGHIZ YU
-06CA;N;ARABIC LETTER WAW WITH TWO DOTS ABOVE
-06CB;N;ARABIC LETTER VE
-06CC;N;ARABIC LETTER FARSI YEH
-06CD;N;ARABIC LETTER YEH WITH TAIL
-06CE;N;ARABIC LETTER YEH WITH SMALL V
-06CF;N;ARABIC LETTER WAW WITH DOT ABOVE
-06D0;N;ARABIC LETTER E
-06D1;N;ARABIC LETTER YEH WITH THREE DOTS BELOW
-06D2;N;ARABIC LETTER YEH BARREE
-06D3;N;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
-06D4;N;ARABIC FULL STOP
-06D5;N;ARABIC LETTER AE
-06D6;N;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
-06D7;N;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
-06D8;N;ARABIC SMALL HIGH MEEM INITIAL FORM
-06D9;N;ARABIC SMALL HIGH LAM ALEF
-06DA;N;ARABIC SMALL HIGH JEEM
-06DB;N;ARABIC SMALL HIGH THREE DOTS
-06DC;N;ARABIC SMALL HIGH SEEN
-06DD;N;ARABIC END OF AYAH
-06DE;N;ARABIC START OF RUB EL HIZB
-06DF;N;ARABIC SMALL HIGH ROUNDED ZERO
-06E0;N;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
-06E1;N;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
-06E2;N;ARABIC SMALL HIGH MEEM ISOLATED FORM
-06E3;N;ARABIC SMALL LOW SEEN
-06E4;N;ARABIC SMALL HIGH MADDA
-06E5;N;ARABIC SMALL WAW
-06E6;N;ARABIC SMALL YEH
-06E7;N;ARABIC SMALL HIGH YEH
-06E8;N;ARABIC SMALL HIGH NOON
-06E9;N;ARABIC PLACE OF SAJDAH
-06EA;N;ARABIC EMPTY CENTRE LOW STOP
-06EB;N;ARABIC EMPTY CENTRE HIGH STOP
-06EC;N;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
-06ED;N;ARABIC SMALL LOW MEEM
-06F0;N;EXTENDED ARABIC-INDIC DIGIT ZERO
-06F1;N;EXTENDED ARABIC-INDIC DIGIT ONE
-06F2;N;EXTENDED ARABIC-INDIC DIGIT TWO
-06F3;N;EXTENDED ARABIC-INDIC DIGIT THREE
-06F4;N;EXTENDED ARABIC-INDIC DIGIT FOUR
-06F5;N;EXTENDED ARABIC-INDIC DIGIT FIVE
-06F6;N;EXTENDED ARABIC-INDIC DIGIT SIX
-06F7;N;EXTENDED ARABIC-INDIC DIGIT SEVEN
-06F8;N;EXTENDED ARABIC-INDIC DIGIT EIGHT
-06F9;N;EXTENDED ARABIC-INDIC DIGIT NINE
-06FA;N;ARABIC LETTER SHEEN WITH DOT BELOW
-06FB;N;ARABIC LETTER DAD WITH DOT BELOW
-06FC;N;ARABIC LETTER GHAIN WITH DOT BELOW
-06FD;N;ARABIC SIGN SINDHI AMPERSAND
-06FE;N;ARABIC SIGN SINDHI POSTPOSITION MEN
-0700;N;SYRIAC END OF PARAGRAPH
-0701;N;SYRIAC SUPRALINEAR FULL STOP
-0702;N;SYRIAC SUBLINEAR FULL STOP
-0703;N;SYRIAC SUPRALINEAR COLON
-0704;N;SYRIAC SUBLINEAR COLON
-0705;N;SYRIAC HORIZONTAL COLON
-0706;N;SYRIAC COLON SKEWED LEFT
-0707;N;SYRIAC COLON SKEWED RIGHT
-0708;N;SYRIAC SUPRALINEAR COLON SKEWED LEFT
-0709;N;SYRIAC SUBLINEAR COLON SKEWED RIGHT
-070A;N;SYRIAC CONTRACTION
-070B;N;SYRIAC HARKLEAN OBELUS
-070C;N;SYRIAC HARKLEAN METOBELUS
-070D;N;SYRIAC HARKLEAN ASTERISCUS
-070F;N;SYRIAC ABBREVIATION MARK
-0710;N;SYRIAC LETTER ALAPH
-0711;N;SYRIAC LETTER SUPERSCRIPT ALAPH
-0712;N;SYRIAC LETTER BETH
-0713;N;SYRIAC LETTER GAMAL
-0714;N;SYRIAC LETTER GAMAL GARSHUNI
-0715;N;SYRIAC LETTER DALATH
-0716;N;SYRIAC LETTER DOTLESS DALATH RISH
-0717;N;SYRIAC LETTER HE
-0718;N;SYRIAC LETTER WAW
-0719;N;SYRIAC LETTER ZAIN
-071A;N;SYRIAC LETTER HETH
-071B;N;SYRIAC LETTER TETH
-071C;N;SYRIAC LETTER TETH GARSHUNI
-071D;N;SYRIAC LETTER YUDH
-071E;N;SYRIAC LETTER YUDH HE
-071F;N;SYRIAC LETTER KAPH
-0720;N;SYRIAC LETTER LAMADH
-0721;N;SYRIAC LETTER MIM
-0722;N;SYRIAC LETTER NUN
-0723;N;SYRIAC LETTER SEMKATH
-0724;N;SYRIAC LETTER FINAL SEMKATH
-0725;N;SYRIAC LETTER E
-0726;N;SYRIAC LETTER PE
-0727;N;SYRIAC LETTER REVERSED PE
-0728;N;SYRIAC LETTER SADHE
-0729;N;SYRIAC LETTER QAPH
-072A;N;SYRIAC LETTER RISH
-072B;N;SYRIAC LETTER SHIN
-072C;N;SYRIAC LETTER TAW
-0730;N;SYRIAC PTHAHA ABOVE
-0731;N;SYRIAC PTHAHA BELOW
-0732;N;SYRIAC PTHAHA DOTTED
-0733;N;SYRIAC ZQAPHA ABOVE
-0734;N;SYRIAC ZQAPHA BELOW
-0735;N;SYRIAC ZQAPHA DOTTED
-0736;N;SYRIAC RBASA ABOVE
-0737;N;SYRIAC RBASA BELOW
-0738;N;SYRIAC DOTTED ZLAMA HORIZONTAL
-0739;N;SYRIAC DOTTED ZLAMA ANGULAR
-073A;N;SYRIAC HBASA ABOVE
-073B;N;SYRIAC HBASA BELOW
-073C;N;SYRIAC HBASA-ESASA DOTTED
-073D;N;SYRIAC ESASA ABOVE
-073E;N;SYRIAC ESASA BELOW
-073F;N;SYRIAC RWAHA
-0740;N;SYRIAC FEMININE DOT
-0741;N;SYRIAC QUSHSHAYA
-0742;N;SYRIAC RUKKAKHA
-0743;N;SYRIAC TWO VERTICAL DOTS ABOVE
-0744;N;SYRIAC TWO VERTICAL DOTS BELOW
-0745;N;SYRIAC THREE DOTS ABOVE
-0746;N;SYRIAC THREE DOTS BELOW
-0747;N;SYRIAC OBLIQUE LINE ABOVE
-0748;N;SYRIAC OBLIQUE LINE BELOW
-0749;N;SYRIAC MUSIC
-074A;N;SYRIAC BARREKH
-0780;N;THAANA LETTER HAA
-0781;N;THAANA LETTER SHAVIYANI
-0782;N;THAANA LETTER NOONU
-0783;N;THAANA LETTER RAA
-0784;N;THAANA LETTER BAA
-0785;N;THAANA LETTER LHAVIYANI
-0786;N;THAANA LETTER KAAFU
-0787;N;THAANA LETTER ALIFU
-0788;N;THAANA LETTER VAAVU
-0789;N;THAANA LETTER MEEMU
-078A;N;THAANA LETTER FAAFU
-078B;N;THAANA LETTER DHAALU
-078C;N;THAANA LETTER THAA
-078D;N;THAANA LETTER LAAMU
-078E;N;THAANA LETTER GAAFU
-078F;N;THAANA LETTER GNAVIYANI
-0790;N;THAANA LETTER SEENU
-0791;N;THAANA LETTER DAVIYANI
-0792;N;THAANA LETTER ZAVIYANI
-0793;N;THAANA LETTER TAVIYANI
-0794;N;THAANA LETTER YAA
-0795;N;THAANA LETTER PAVIYANI
-0796;N;THAANA LETTER JAVIYANI
-0797;N;THAANA LETTER CHAVIYANI
-0798;N;THAANA LETTER TTAA
-0799;N;THAANA LETTER HHAA
-079A;N;THAANA LETTER KHAA
-079B;N;THAANA LETTER THAALU
-079C;N;THAANA LETTER ZAA
-079D;N;THAANA LETTER SHEENU
-079E;N;THAANA LETTER SAADHU
-079F;N;THAANA LETTER DAADHU
-07A0;N;THAANA LETTER TO
-07A1;N;THAANA LETTER ZO
-07A2;N;THAANA LETTER AINU
-07A3;N;THAANA LETTER GHAINU
-07A4;N;THAANA LETTER QAAFU
-07A5;N;THAANA LETTER WAAVU
-07A6;N;THAANA ABAFILI
-07A7;N;THAANA AABAAFILI
-07A8;N;THAANA IBIFILI
-07A9;N;THAANA EEBEEFILI
-07AA;N;THAANA UBUFILI
-07AB;N;THAANA OOBOOFILI
-07AC;N;THAANA EBEFILI
-07AD;N;THAANA EYBEYFILI
-07AE;N;THAANA OBOFILI
-07AF;N;THAANA OABOAFILI
-07B0;N;THAANA SUKUN
-0901;N;DEVANAGARI SIGN CANDRABINDU
-0902;N;DEVANAGARI SIGN ANUSVARA
-0903;N;DEVANAGARI SIGN VISARGA
-0905;N;DEVANAGARI LETTER A
-0906;N;DEVANAGARI LETTER AA
-0907;N;DEVANAGARI LETTER I
-0908;N;DEVANAGARI LETTER II
-0909;N;DEVANAGARI LETTER U
-090A;N;DEVANAGARI LETTER UU
-090B;N;DEVANAGARI LETTER VOCALIC R
-090C;N;DEVANAGARI LETTER VOCALIC L
-090D;N;DEVANAGARI LETTER CANDRA E
-090E;N;DEVANAGARI LETTER SHORT E
-090F;N;DEVANAGARI LETTER E
-0910;N;DEVANAGARI LETTER AI
-0911;N;DEVANAGARI LETTER CANDRA O
-0912;N;DEVANAGARI LETTER SHORT O
-0913;N;DEVANAGARI LETTER O
-0914;N;DEVANAGARI LETTER AU
-0915;N;DEVANAGARI LETTER KA
-0916;N;DEVANAGARI LETTER KHA
-0917;N;DEVANAGARI LETTER GA
-0918;N;DEVANAGARI LETTER GHA
-0919;N;DEVANAGARI LETTER NGA
-091A;N;DEVANAGARI LETTER CA
-091B;N;DEVANAGARI LETTER CHA
-091C;N;DEVANAGARI LETTER JA
-091D;N;DEVANAGARI LETTER JHA
-091E;N;DEVANAGARI LETTER NYA
-091F;N;DEVANAGARI LETTER TTA
-0920;N;DEVANAGARI LETTER TTHA
-0921;N;DEVANAGARI LETTER DDA
-0922;N;DEVANAGARI LETTER DDHA
-0923;N;DEVANAGARI LETTER NNA
-0924;N;DEVANAGARI LETTER TA
-0925;N;DEVANAGARI LETTER THA
-0926;N;DEVANAGARI LETTER DA
-0927;N;DEVANAGARI LETTER DHA
-0928;N;DEVANAGARI LETTER NA
-0929;N;DEVANAGARI LETTER NNNA
-092A;N;DEVANAGARI LETTER PA
-092B;N;DEVANAGARI LETTER PHA
-092C;N;DEVANAGARI LETTER BA
-092D;N;DEVANAGARI LETTER BHA
-092E;N;DEVANAGARI LETTER MA
-092F;N;DEVANAGARI LETTER YA
-0930;N;DEVANAGARI LETTER RA
-0931;N;DEVANAGARI LETTER RRA
-0932;N;DEVANAGARI LETTER LA
-0933;N;DEVANAGARI LETTER LLA
-0934;N;DEVANAGARI LETTER LLLA
-0935;N;DEVANAGARI LETTER VA
-0936;N;DEVANAGARI LETTER SHA
-0937;N;DEVANAGARI LETTER SSA
-0938;N;DEVANAGARI LETTER SA
-0939;N;DEVANAGARI LETTER HA
-093C;N;DEVANAGARI SIGN NUKTA
-093D;N;DEVANAGARI SIGN AVAGRAHA
-093E;N;DEVANAGARI VOWEL SIGN AA
-093F;N;DEVANAGARI VOWEL SIGN I
-0940;N;DEVANAGARI VOWEL SIGN II
-0941;N;DEVANAGARI VOWEL SIGN U
-0942;N;DEVANAGARI VOWEL SIGN UU
-0943;N;DEVANAGARI VOWEL SIGN VOCALIC R
-0944;N;DEVANAGARI VOWEL SIGN VOCALIC RR
-0945;N;DEVANAGARI VOWEL SIGN CANDRA E
-0946;N;DEVANAGARI VOWEL SIGN SHORT E
-0947;N;DEVANAGARI VOWEL SIGN E
-0948;N;DEVANAGARI VOWEL SIGN AI
-0949;N;DEVANAGARI VOWEL SIGN CANDRA O
-094A;N;DEVANAGARI VOWEL SIGN SHORT O
-094B;N;DEVANAGARI VOWEL SIGN O
-094C;N;DEVANAGARI VOWEL SIGN AU
-094D;N;DEVANAGARI SIGN VIRAMA
-0950;N;DEVANAGARI OM
-0951;N;DEVANAGARI STRESS SIGN UDATTA
-0952;N;DEVANAGARI STRESS SIGN ANUDATTA
-0953;N;DEVANAGARI GRAVE ACCENT
-0954;N;DEVANAGARI ACUTE ACCENT
-0958;N;DEVANAGARI LETTER QA
-0959;N;DEVANAGARI LETTER KHHA
-095A;N;DEVANAGARI LETTER GHHA
-095B;N;DEVANAGARI LETTER ZA
-095C;N;DEVANAGARI LETTER DDDHA
-095D;N;DEVANAGARI LETTER RHA
-095E;N;DEVANAGARI LETTER FA
-095F;N;DEVANAGARI LETTER YYA
-0960;N;DEVANAGARI LETTER VOCALIC RR
-0961;N;DEVANAGARI LETTER VOCALIC LL
-0962;N;DEVANAGARI VOWEL SIGN VOCALIC L
-0963;N;DEVANAGARI VOWEL SIGN VOCALIC LL
-0964;N;DEVANAGARI DANDA
-0965;N;DEVANAGARI DOUBLE DANDA
-0966;N;DEVANAGARI DIGIT ZERO
-0967;N;DEVANAGARI DIGIT ONE
-0968;N;DEVANAGARI DIGIT TWO
-0969;N;DEVANAGARI DIGIT THREE
-096A;N;DEVANAGARI DIGIT FOUR
-096B;N;DEVANAGARI DIGIT FIVE
-096C;N;DEVANAGARI DIGIT SIX
-096D;N;DEVANAGARI DIGIT SEVEN
-096E;N;DEVANAGARI DIGIT EIGHT
-096F;N;DEVANAGARI DIGIT NINE
-0970;N;DEVANAGARI ABBREVIATION SIGN
-0981;N;BENGALI SIGN CANDRABINDU
-0982;N;BENGALI SIGN ANUSVARA
-0983;N;BENGALI SIGN VISARGA
-0985;N;BENGALI LETTER A
-0986;N;BENGALI LETTER AA
-0987;N;BENGALI LETTER I
-0988;N;BENGALI LETTER II
-0989;N;BENGALI LETTER U
-098A;N;BENGALI LETTER UU
-098B;N;BENGALI LETTER VOCALIC R
-098C;N;BENGALI LETTER VOCALIC L
-098F;N;BENGALI LETTER E
-0990;N;BENGALI LETTER AI
-0993;N;BENGALI LETTER O
-0994;N;BENGALI LETTER AU
-0995;N;BENGALI LETTER KA
-0996;N;BENGALI LETTER KHA
-0997;N;BENGALI LETTER GA
-0998;N;BENGALI LETTER GHA
-0999;N;BENGALI LETTER NGA
-099A;N;BENGALI LETTER CA
-099B;N;BENGALI LETTER CHA
-099C;N;BENGALI LETTER JA
-099D;N;BENGALI LETTER JHA
-099E;N;BENGALI LETTER NYA
-099F;N;BENGALI LETTER TTA
-09A0;N;BENGALI LETTER TTHA
-09A1;N;BENGALI LETTER DDA
-09A2;N;BENGALI LETTER DDHA
-09A3;N;BENGALI LETTER NNA
-09A4;N;BENGALI LETTER TA
-09A5;N;BENGALI LETTER THA
-09A6;N;BENGALI LETTER DA
-09A7;N;BENGALI LETTER DHA
-09A8;N;BENGALI LETTER NA
-09AA;N;BENGALI LETTER PA
-09AB;N;BENGALI LETTER PHA
-09AC;N;BENGALI LETTER BA
-09AD;N;BENGALI LETTER BHA
-09AE;N;BENGALI LETTER MA
-09AF;N;BENGALI LETTER YA
-09B0;N;BENGALI LETTER RA
-09B2;N;BENGALI LETTER LA
-09B6;N;BENGALI LETTER SHA
-09B7;N;BENGALI LETTER SSA
-09B8;N;BENGALI LETTER SA
-09B9;N;BENGALI LETTER HA
-09BC;N;BENGALI SIGN NUKTA
-09BE;N;BENGALI VOWEL SIGN AA
-09BF;N;BENGALI VOWEL SIGN I
-09C0;N;BENGALI VOWEL SIGN II
-09C1;N;BENGALI VOWEL SIGN U
-09C2;N;BENGALI VOWEL SIGN UU
-09C3;N;BENGALI VOWEL SIGN VOCALIC R
-09C4;N;BENGALI VOWEL SIGN VOCALIC RR
-09C7;N;BENGALI VOWEL SIGN E
-09C8;N;BENGALI VOWEL SIGN AI
-09CB;N;BENGALI VOWEL SIGN O
-09CC;N;BENGALI VOWEL SIGN AU
-09CD;N;BENGALI SIGN VIRAMA
-09D7;N;BENGALI AU LENGTH MARK
-09DC;N;BENGALI LETTER RRA
-09DD;N;BENGALI LETTER RHA
-09DF;N;BENGALI LETTER YYA
-09E0;N;BENGALI LETTER VOCALIC RR
-09E1;N;BENGALI LETTER VOCALIC LL
-09E2;N;BENGALI VOWEL SIGN VOCALIC L
-09E3;N;BENGALI VOWEL SIGN VOCALIC LL
-09E6;N;BENGALI DIGIT ZERO
-09E7;N;BENGALI DIGIT ONE
-09E8;N;BENGALI DIGIT TWO
-09E9;N;BENGALI DIGIT THREE
-09EA;N;BENGALI DIGIT FOUR
-09EB;N;BENGALI DIGIT FIVE
-09EC;N;BENGALI DIGIT SIX
-09ED;N;BENGALI DIGIT SEVEN
-09EE;N;BENGALI DIGIT EIGHT
-09EF;N;BENGALI DIGIT NINE
-09F0;N;BENGALI LETTER RA WITH MIDDLE DIAGONAL
-09F1;N;BENGALI LETTER RA WITH LOWER DIAGONAL
-09F2;N;BENGALI RUPEE MARK
-09F3;N;BENGALI RUPEE SIGN
-09F4;N;BENGALI CURRENCY NUMERATOR ONE
-09F5;N;BENGALI CURRENCY NUMERATOR TWO
-09F6;N;BENGALI CURRENCY NUMERATOR THREE
-09F7;N;BENGALI CURRENCY NUMERATOR FOUR
-09F8;N;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
-09F9;N;BENGALI CURRENCY DENOMINATOR SIXTEEN
-09FA;N;BENGALI ISSHAR
-0A02;N;GURMUKHI SIGN BINDI
-0A05;N;GURMUKHI LETTER A
-0A06;N;GURMUKHI LETTER AA
-0A07;N;GURMUKHI LETTER I
-0A08;N;GURMUKHI LETTER II
-0A09;N;GURMUKHI LETTER U
-0A0A;N;GURMUKHI LETTER UU
-0A0F;N;GURMUKHI LETTER EE
-0A10;N;GURMUKHI LETTER AI
-0A13;N;GURMUKHI LETTER OO
-0A14;N;GURMUKHI LETTER AU
-0A15;N;GURMUKHI LETTER KA
-0A16;N;GURMUKHI LETTER KHA
-0A17;N;GURMUKHI LETTER GA
-0A18;N;GURMUKHI LETTER GHA
-0A19;N;GURMUKHI LETTER NGA
-0A1A;N;GURMUKHI LETTER CA
-0A1B;N;GURMUKHI LETTER CHA
-0A1C;N;GURMUKHI LETTER JA
-0A1D;N;GURMUKHI LETTER JHA
-0A1E;N;GURMUKHI LETTER NYA
-0A1F;N;GURMUKHI LETTER TTA
-0A20;N;GURMUKHI LETTER TTHA
-0A21;N;GURMUKHI LETTER DDA
-0A22;N;GURMUKHI LETTER DDHA
-0A23;N;GURMUKHI LETTER NNA
-0A24;N;GURMUKHI LETTER TA
-0A25;N;GURMUKHI LETTER THA
-0A26;N;GURMUKHI LETTER DA
-0A27;N;GURMUKHI LETTER DHA
-0A28;N;GURMUKHI LETTER NA
-0A2A;N;GURMUKHI LETTER PA
-0A2B;N;GURMUKHI LETTER PHA
-0A2C;N;GURMUKHI LETTER BA
-0A2D;N;GURMUKHI LETTER BHA
-0A2E;N;GURMUKHI LETTER MA
-0A2F;N;GURMUKHI LETTER YA
-0A30;N;GURMUKHI LETTER RA
-0A32;N;GURMUKHI LETTER LA
-0A33;N;GURMUKHI LETTER LLA
-0A35;N;GURMUKHI LETTER VA
-0A36;N;GURMUKHI LETTER SHA
-0A38;N;GURMUKHI LETTER SA
-0A39;N;GURMUKHI LETTER HA
-0A3C;N;GURMUKHI SIGN NUKTA
-0A3E;N;GURMUKHI VOWEL SIGN AA
-0A3F;N;GURMUKHI VOWEL SIGN I
-0A40;N;GURMUKHI VOWEL SIGN II
-0A41;N;GURMUKHI VOWEL SIGN U
-0A42;N;GURMUKHI VOWEL SIGN UU
-0A47;N;GURMUKHI VOWEL SIGN EE
-0A48;N;GURMUKHI VOWEL SIGN AI
-0A4B;N;GURMUKHI VOWEL SIGN OO
-0A4C;N;GURMUKHI VOWEL SIGN AU
-0A4D;N;GURMUKHI SIGN VIRAMA
-0A59;N;GURMUKHI LETTER KHHA
-0A5A;N;GURMUKHI LETTER GHHA
-0A5B;N;GURMUKHI LETTER ZA
-0A5C;N;GURMUKHI LETTER RRA
-0A5E;N;GURMUKHI LETTER FA
-0A66;N;GURMUKHI DIGIT ZERO
-0A67;N;GURMUKHI DIGIT ONE
-0A68;N;GURMUKHI DIGIT TWO
-0A69;N;GURMUKHI DIGIT THREE
-0A6A;N;GURMUKHI DIGIT FOUR
-0A6B;N;GURMUKHI DIGIT FIVE
-0A6C;N;GURMUKHI DIGIT SIX
-0A6D;N;GURMUKHI DIGIT SEVEN
-0A6E;N;GURMUKHI DIGIT EIGHT
-0A6F;N;GURMUKHI DIGIT NINE
-0A70;N;GURMUKHI TIPPI
-0A71;N;GURMUKHI ADDAK
-0A72;N;GURMUKHI IRI
-0A73;N;GURMUKHI URA
-0A74;N;GURMUKHI EK ONKAR
-0A81;N;GUJARATI SIGN CANDRABINDU
-0A82;N;GUJARATI SIGN ANUSVARA
-0A83;N;GUJARATI SIGN VISARGA
-0A85;N;GUJARATI LETTER A
-0A86;N;GUJARATI LETTER AA
-0A87;N;GUJARATI LETTER I
-0A88;N;GUJARATI LETTER II
-0A89;N;GUJARATI LETTER U
-0A8A;N;GUJARATI LETTER UU
-0A8B;N;GUJARATI LETTER VOCALIC R
-0A8D;N;GUJARATI VOWEL CANDRA E
-0A8F;N;GUJARATI LETTER E
-0A90;N;GUJARATI LETTER AI
-0A91;N;GUJARATI VOWEL CANDRA O
-0A93;N;GUJARATI LETTER O
-0A94;N;GUJARATI LETTER AU
-0A95;N;GUJARATI LETTER KA
-0A96;N;GUJARATI LETTER KHA
-0A97;N;GUJARATI LETTER GA
-0A98;N;GUJARATI LETTER GHA
-0A99;N;GUJARATI LETTER NGA
-0A9A;N;GUJARATI LETTER CA
-0A9B;N;GUJARATI LETTER CHA
-0A9C;N;GUJARATI LETTER JA
-0A9D;N;GUJARATI LETTER JHA
-0A9E;N;GUJARATI LETTER NYA
-0A9F;N;GUJARATI LETTER TTA
-0AA0;N;GUJARATI LETTER TTHA
-0AA1;N;GUJARATI LETTER DDA
-0AA2;N;GUJARATI LETTER DDHA
-0AA3;N;GUJARATI LETTER NNA
-0AA4;N;GUJARATI LETTER TA
-0AA5;N;GUJARATI LETTER THA
-0AA6;N;GUJARATI LETTER DA
-0AA7;N;GUJARATI LETTER DHA
-0AA8;N;GUJARATI LETTER NA
-0AAA;N;GUJARATI LETTER PA
-0AAB;N;GUJARATI LETTER PHA
-0AAC;N;GUJARATI LETTER BA
-0AAD;N;GUJARATI LETTER BHA
-0AAE;N;GUJARATI LETTER MA
-0AAF;N;GUJARATI LETTER YA
-0AB0;N;GUJARATI LETTER RA
-0AB2;N;GUJARATI LETTER LA
-0AB3;N;GUJARATI LETTER LLA
-0AB5;N;GUJARATI LETTER VA
-0AB6;N;GUJARATI LETTER SHA
-0AB7;N;GUJARATI LETTER SSA
-0AB8;N;GUJARATI LETTER SA
-0AB9;N;GUJARATI LETTER HA
-0ABC;N;GUJARATI SIGN NUKTA
-0ABD;N;GUJARATI SIGN AVAGRAHA
-0ABE;N;GUJARATI VOWEL SIGN AA
-0ABF;N;GUJARATI VOWEL SIGN I
-0AC0;N;GUJARATI VOWEL SIGN II
-0AC1;N;GUJARATI VOWEL SIGN U
-0AC2;N;GUJARATI VOWEL SIGN UU
-0AC3;N;GUJARATI VOWEL SIGN VOCALIC R
-0AC4;N;GUJARATI VOWEL SIGN VOCALIC RR
-0AC5;N;GUJARATI VOWEL SIGN CANDRA E
-0AC7;N;GUJARATI VOWEL SIGN E
-0AC8;N;GUJARATI VOWEL SIGN AI
-0AC9;N;GUJARATI VOWEL SIGN CANDRA O
-0ACB;N;GUJARATI VOWEL SIGN O
-0ACC;N;GUJARATI VOWEL SIGN AU
-0ACD;N;GUJARATI SIGN VIRAMA
-0AD0;N;GUJARATI OM
-0AE0;N;GUJARATI LETTER VOCALIC RR
-0AE6;N;GUJARATI DIGIT ZERO
-0AE7;N;GUJARATI DIGIT ONE
-0AE8;N;GUJARATI DIGIT TWO
-0AE9;N;GUJARATI DIGIT THREE
-0AEA;N;GUJARATI DIGIT FOUR
-0AEB;N;GUJARATI DIGIT FIVE
-0AEC;N;GUJARATI DIGIT SIX
-0AED;N;GUJARATI DIGIT SEVEN
-0AEE;N;GUJARATI DIGIT EIGHT
-0AEF;N;GUJARATI DIGIT NINE
-0B01;N;ORIYA SIGN CANDRABINDU
-0B02;N;ORIYA SIGN ANUSVARA
-0B03;N;ORIYA SIGN VISARGA
-0B05;N;ORIYA LETTER A
-0B06;N;ORIYA LETTER AA
-0B07;N;ORIYA LETTER I
-0B08;N;ORIYA LETTER II
-0B09;N;ORIYA LETTER U
-0B0A;N;ORIYA LETTER UU
-0B0B;N;ORIYA LETTER VOCALIC R
-0B0C;N;ORIYA LETTER VOCALIC L
-0B0F;N;ORIYA LETTER E
-0B10;N;ORIYA LETTER AI
-0B13;N;ORIYA LETTER O
-0B14;N;ORIYA LETTER AU
-0B15;N;ORIYA LETTER KA
-0B16;N;ORIYA LETTER KHA
-0B17;N;ORIYA LETTER GA
-0B18;N;ORIYA LETTER GHA
-0B19;N;ORIYA LETTER NGA
-0B1A;N;ORIYA LETTER CA
-0B1B;N;ORIYA LETTER CHA
-0B1C;N;ORIYA LETTER JA
-0B1D;N;ORIYA LETTER JHA
-0B1E;N;ORIYA LETTER NYA
-0B1F;N;ORIYA LETTER TTA
-0B20;N;ORIYA LETTER TTHA
-0B21;N;ORIYA LETTER DDA
-0B22;N;ORIYA LETTER DDHA
-0B23;N;ORIYA LETTER NNA
-0B24;N;ORIYA LETTER TA
-0B25;N;ORIYA LETTER THA
-0B26;N;ORIYA LETTER DA
-0B27;N;ORIYA LETTER DHA
-0B28;N;ORIYA LETTER NA
-0B2A;N;ORIYA LETTER PA
-0B2B;N;ORIYA LETTER PHA
-0B2C;N;ORIYA LETTER BA
-0B2D;N;ORIYA LETTER BHA
-0B2E;N;ORIYA LETTER MA
-0B2F;N;ORIYA LETTER YA
-0B30;N;ORIYA LETTER RA
-0B32;N;ORIYA LETTER LA
-0B33;N;ORIYA LETTER LLA
-0B36;N;ORIYA LETTER SHA
-0B37;N;ORIYA LETTER SSA
-0B38;N;ORIYA LETTER SA
-0B39;N;ORIYA LETTER HA
-0B3C;N;ORIYA SIGN NUKTA
-0B3D;N;ORIYA SIGN AVAGRAHA
-0B3E;N;ORIYA VOWEL SIGN AA
-0B3F;N;ORIYA VOWEL SIGN I
-0B40;N;ORIYA VOWEL SIGN II
-0B41;N;ORIYA VOWEL SIGN U
-0B42;N;ORIYA VOWEL SIGN UU
-0B43;N;ORIYA VOWEL SIGN VOCALIC R
-0B47;N;ORIYA VOWEL SIGN E
-0B48;N;ORIYA VOWEL SIGN AI
-0B4B;N;ORIYA VOWEL SIGN O
-0B4C;N;ORIYA VOWEL SIGN AU
-0B4D;N;ORIYA SIGN VIRAMA
-0B56;N;ORIYA AI LENGTH MARK
-0B57;N;ORIYA AU LENGTH MARK
-0B5C;N;ORIYA LETTER RRA
-0B5D;N;ORIYA LETTER RHA
-0B5F;N;ORIYA LETTER YYA
-0B60;N;ORIYA LETTER VOCALIC RR
-0B61;N;ORIYA LETTER VOCALIC LL
-0B66;N;ORIYA DIGIT ZERO
-0B67;N;ORIYA DIGIT ONE
-0B68;N;ORIYA DIGIT TWO
-0B69;N;ORIYA DIGIT THREE
-0B6A;N;ORIYA DIGIT FOUR
-0B6B;N;ORIYA DIGIT FIVE
-0B6C;N;ORIYA DIGIT SIX
-0B6D;N;ORIYA DIGIT SEVEN
-0B6E;N;ORIYA DIGIT EIGHT
-0B6F;N;ORIYA DIGIT NINE
-0B70;N;ORIYA ISSHAR
-0B82;N;TAMIL SIGN ANUSVARA
-0B83;N;TAMIL SIGN VISARGA
-0B85;N;TAMIL LETTER A
-0B86;N;TAMIL LETTER AA
-0B87;N;TAMIL LETTER I
-0B88;N;TAMIL LETTER II
-0B89;N;TAMIL LETTER U
-0B8A;N;TAMIL LETTER UU
-0B8E;N;TAMIL LETTER E
-0B8F;N;TAMIL LETTER EE
-0B90;N;TAMIL LETTER AI
-0B92;N;TAMIL LETTER O
-0B93;N;TAMIL LETTER OO
-0B94;N;TAMIL LETTER AU
-0B95;N;TAMIL LETTER KA
-0B99;N;TAMIL LETTER NGA
-0B9A;N;TAMIL LETTER CA
-0B9C;N;TAMIL LETTER JA
-0B9E;N;TAMIL LETTER NYA
-0B9F;N;TAMIL LETTER TTA
-0BA3;N;TAMIL LETTER NNA
-0BA4;N;TAMIL LETTER TA
-0BA8;N;TAMIL LETTER NA
-0BA9;N;TAMIL LETTER NNNA
-0BAA;N;TAMIL LETTER PA
-0BAE;N;TAMIL LETTER MA
-0BAF;N;TAMIL LETTER YA
-0BB0;N;TAMIL LETTER RA
-0BB1;N;TAMIL LETTER RRA
-0BB2;N;TAMIL LETTER LA
-0BB3;N;TAMIL LETTER LLA
-0BB4;N;TAMIL LETTER LLLA
-0BB5;N;TAMIL LETTER VA
-0BB7;N;TAMIL LETTER SSA
-0BB8;N;TAMIL LETTER SA
-0BB9;N;TAMIL LETTER HA
-0BBE;N;TAMIL VOWEL SIGN AA
-0BBF;N;TAMIL VOWEL SIGN I
-0BC0;N;TAMIL VOWEL SIGN II
-0BC1;N;TAMIL VOWEL SIGN U
-0BC2;N;TAMIL VOWEL SIGN UU
-0BC6;N;TAMIL VOWEL SIGN E
-0BC7;N;TAMIL VOWEL SIGN EE
-0BC8;N;TAMIL VOWEL SIGN AI
-0BCA;N;TAMIL VOWEL SIGN O
-0BCB;N;TAMIL VOWEL SIGN OO
-0BCC;N;TAMIL VOWEL SIGN AU
-0BCD;N;TAMIL SIGN VIRAMA
-0BD7;N;TAMIL AU LENGTH MARK
-0BE7;N;TAMIL DIGIT ONE
-0BE8;N;TAMIL DIGIT TWO
-0BE9;N;TAMIL DIGIT THREE
-0BEA;N;TAMIL DIGIT FOUR
-0BEB;N;TAMIL DIGIT FIVE
-0BEC;N;TAMIL DIGIT SIX
-0BED;N;TAMIL DIGIT SEVEN
-0BEE;N;TAMIL DIGIT EIGHT
-0BEF;N;TAMIL DIGIT NINE
-0BF0;N;TAMIL NUMBER TEN
-0BF1;N;TAMIL NUMBER ONE HUNDRED
-0BF2;N;TAMIL NUMBER ONE THOUSAND
-0C01;N;TELUGU SIGN CANDRABINDU
-0C02;N;TELUGU SIGN ANUSVARA
-0C03;N;TELUGU SIGN VISARGA
-0C05;N;TELUGU LETTER A
-0C06;N;TELUGU LETTER AA
-0C07;N;TELUGU LETTER I
-0C08;N;TELUGU LETTER II
-0C09;N;TELUGU LETTER U
-0C0A;N;TELUGU LETTER UU
-0C0B;N;TELUGU LETTER VOCALIC R
-0C0C;N;TELUGU LETTER VOCALIC L
-0C0E;N;TELUGU LETTER E
-0C0F;N;TELUGU LETTER EE
-0C10;N;TELUGU LETTER AI
-0C12;N;TELUGU LETTER O
-0C13;N;TELUGU LETTER OO
-0C14;N;TELUGU LETTER AU
-0C15;N;TELUGU LETTER KA
-0C16;N;TELUGU LETTER KHA
-0C17;N;TELUGU LETTER GA
-0C18;N;TELUGU LETTER GHA
-0C19;N;TELUGU LETTER NGA
-0C1A;N;TELUGU LETTER CA
-0C1B;N;TELUGU LETTER CHA
-0C1C;N;TELUGU LETTER JA
-0C1D;N;TELUGU LETTER JHA
-0C1E;N;TELUGU LETTER NYA
-0C1F;N;TELUGU LETTER TTA
-0C20;N;TELUGU LETTER TTHA
-0C21;N;TELUGU LETTER DDA
-0C22;N;TELUGU LETTER DDHA
-0C23;N;TELUGU LETTER NNA
-0C24;N;TELUGU LETTER TA
-0C25;N;TELUGU LETTER THA
-0C26;N;TELUGU LETTER DA
-0C27;N;TELUGU LETTER DHA
-0C28;N;TELUGU LETTER NA
-0C2A;N;TELUGU LETTER PA
-0C2B;N;TELUGU LETTER PHA
-0C2C;N;TELUGU LETTER BA
-0C2D;N;TELUGU LETTER BHA
-0C2E;N;TELUGU LETTER MA
-0C2F;N;TELUGU LETTER YA
-0C30;N;TELUGU LETTER RA
-0C31;N;TELUGU LETTER RRA
-0C32;N;TELUGU LETTER LA
-0C33;N;TELUGU LETTER LLA
-0C35;N;TELUGU LETTER VA
-0C36;N;TELUGU LETTER SHA
-0C37;N;TELUGU LETTER SSA
-0C38;N;TELUGU LETTER SA
-0C39;N;TELUGU LETTER HA
-0C3E;N;TELUGU VOWEL SIGN AA
-0C3F;N;TELUGU VOWEL SIGN I
-0C40;N;TELUGU VOWEL SIGN II
-0C41;N;TELUGU VOWEL SIGN U
-0C42;N;TELUGU VOWEL SIGN UU
-0C43;N;TELUGU VOWEL SIGN VOCALIC R
-0C44;N;TELUGU VOWEL SIGN VOCALIC RR
-0C46;N;TELUGU VOWEL SIGN E
-0C47;N;TELUGU VOWEL SIGN EE
-0C48;N;TELUGU VOWEL SIGN AI
-0C4A;N;TELUGU VOWEL SIGN O
-0C4B;N;TELUGU VOWEL SIGN OO
-0C4C;N;TELUGU VOWEL SIGN AU
-0C4D;N;TELUGU SIGN VIRAMA
-0C55;N;TELUGU LENGTH MARK
-0C56;N;TELUGU AI LENGTH MARK
-0C60;N;TELUGU LETTER VOCALIC RR
-0C61;N;TELUGU LETTER VOCALIC LL
-0C66;N;TELUGU DIGIT ZERO
-0C67;N;TELUGU DIGIT ONE
-0C68;N;TELUGU DIGIT TWO
-0C69;N;TELUGU DIGIT THREE
-0C6A;N;TELUGU DIGIT FOUR
-0C6B;N;TELUGU DIGIT FIVE
-0C6C;N;TELUGU DIGIT SIX
-0C6D;N;TELUGU DIGIT SEVEN
-0C6E;N;TELUGU DIGIT EIGHT
-0C6F;N;TELUGU DIGIT NINE
-0C82;N;KANNADA SIGN ANUSVARA
-0C83;N;KANNADA SIGN VISARGA
-0C85;N;KANNADA LETTER A
-0C86;N;KANNADA LETTER AA
-0C87;N;KANNADA LETTER I
-0C88;N;KANNADA LETTER II
-0C89;N;KANNADA LETTER U
-0C8A;N;KANNADA LETTER UU
-0C8B;N;KANNADA LETTER VOCALIC R
-0C8C;N;KANNADA LETTER VOCALIC L
-0C8E;N;KANNADA LETTER E
-0C8F;N;KANNADA LETTER EE
-0C90;N;KANNADA LETTER AI
-0C92;N;KANNADA LETTER O
-0C93;N;KANNADA LETTER OO
-0C94;N;KANNADA LETTER AU
-0C95;N;KANNADA LETTER KA
-0C96;N;KANNADA LETTER KHA
-0C97;N;KANNADA LETTER GA
-0C98;N;KANNADA LETTER GHA
-0C99;N;KANNADA LETTER NGA
-0C9A;N;KANNADA LETTER CA
-0C9B;N;KANNADA LETTER CHA
-0C9C;N;KANNADA LETTER JA
-0C9D;N;KANNADA LETTER JHA
-0C9E;N;KANNADA LETTER NYA
-0C9F;N;KANNADA LETTER TTA
-0CA0;N;KANNADA LETTER TTHA
-0CA1;N;KANNADA LETTER DDA
-0CA2;N;KANNADA LETTER DDHA
-0CA3;N;KANNADA LETTER NNA
-0CA4;N;KANNADA LETTER TA
-0CA5;N;KANNADA LETTER THA
-0CA6;N;KANNADA LETTER DA
-0CA7;N;KANNADA LETTER DHA
-0CA8;N;KANNADA LETTER NA
-0CAA;N;KANNADA LETTER PA
-0CAB;N;KANNADA LETTER PHA
-0CAC;N;KANNADA LETTER BA
-0CAD;N;KANNADA LETTER BHA
-0CAE;N;KANNADA LETTER MA
-0CAF;N;KANNADA LETTER YA
-0CB0;N;KANNADA LETTER RA
-0CB1;N;KANNADA LETTER RRA
-0CB2;N;KANNADA LETTER LA
-0CB3;N;KANNADA LETTER LLA
-0CB5;N;KANNADA LETTER VA
-0CB6;N;KANNADA LETTER SHA
-0CB7;N;KANNADA LETTER SSA
-0CB8;N;KANNADA LETTER SA
-0CB9;N;KANNADA LETTER HA
-0CBE;N;KANNADA VOWEL SIGN AA
-0CBF;N;KANNADA VOWEL SIGN I
-0CC0;N;KANNADA VOWEL SIGN II
-0CC1;N;KANNADA VOWEL SIGN U
-0CC2;N;KANNADA VOWEL SIGN UU
-0CC3;N;KANNADA VOWEL SIGN VOCALIC R
-0CC4;N;KANNADA VOWEL SIGN VOCALIC RR
-0CC6;N;KANNADA VOWEL SIGN E
-0CC7;N;KANNADA VOWEL SIGN EE
-0CC8;N;KANNADA VOWEL SIGN AI
-0CCA;N;KANNADA VOWEL SIGN O
-0CCB;N;KANNADA VOWEL SIGN OO
-0CCC;N;KANNADA VOWEL SIGN AU
-0CCD;N;KANNADA SIGN VIRAMA
-0CD5;N;KANNADA LENGTH MARK
-0CD6;N;KANNADA AI LENGTH MARK
-0CDE;N;KANNADA LETTER FA
-0CE0;N;KANNADA LETTER VOCALIC RR
-0CE1;N;KANNADA LETTER VOCALIC LL
-0CE6;N;KANNADA DIGIT ZERO
-0CE7;N;KANNADA DIGIT ONE
-0CE8;N;KANNADA DIGIT TWO
-0CE9;N;KANNADA DIGIT THREE
-0CEA;N;KANNADA DIGIT FOUR
-0CEB;N;KANNADA DIGIT FIVE
-0CEC;N;KANNADA DIGIT SIX
-0CED;N;KANNADA DIGIT SEVEN
-0CEE;N;KANNADA DIGIT EIGHT
-0CEF;N;KANNADA DIGIT NINE
-0D02;N;MALAYALAM SIGN ANUSVARA
-0D03;N;MALAYALAM SIGN VISARGA
-0D05;N;MALAYALAM LETTER A
-0D06;N;MALAYALAM LETTER AA
-0D07;N;MALAYALAM LETTER I
-0D08;N;MALAYALAM LETTER II
-0D09;N;MALAYALAM LETTER U
-0D0A;N;MALAYALAM LETTER UU
-0D0B;N;MALAYALAM LETTER VOCALIC R
-0D0C;N;MALAYALAM LETTER VOCALIC L
-0D0E;N;MALAYALAM LETTER E
-0D0F;N;MALAYALAM LETTER EE
-0D10;N;MALAYALAM LETTER AI
-0D12;N;MALAYALAM LETTER O
-0D13;N;MALAYALAM LETTER OO
-0D14;N;MALAYALAM LETTER AU
-0D15;N;MALAYALAM LETTER KA
-0D16;N;MALAYALAM LETTER KHA
-0D17;N;MALAYALAM LETTER GA
-0D18;N;MALAYALAM LETTER GHA
-0D19;N;MALAYALAM LETTER NGA
-0D1A;N;MALAYALAM LETTER CA
-0D1B;N;MALAYALAM LETTER CHA
-0D1C;N;MALAYALAM LETTER JA
-0D1D;N;MALAYALAM LETTER JHA
-0D1E;N;MALAYALAM LETTER NYA
-0D1F;N;MALAYALAM LETTER TTA
-0D20;N;MALAYALAM LETTER TTHA
-0D21;N;MALAYALAM LETTER DDA
-0D22;N;MALAYALAM LETTER DDHA
-0D23;N;MALAYALAM LETTER NNA
-0D24;N;MALAYALAM LETTER TA
-0D25;N;MALAYALAM LETTER THA
-0D26;N;MALAYALAM LETTER DA
-0D27;N;MALAYALAM LETTER DHA
-0D28;N;MALAYALAM LETTER NA
-0D2A;N;MALAYALAM LETTER PA
-0D2B;N;MALAYALAM LETTER PHA
-0D2C;N;MALAYALAM LETTER BA
-0D2D;N;MALAYALAM LETTER BHA
-0D2E;N;MALAYALAM LETTER MA
-0D2F;N;MALAYALAM LETTER YA
-0D30;N;MALAYALAM LETTER RA
-0D31;N;MALAYALAM LETTER RRA
-0D32;N;MALAYALAM LETTER LA
-0D33;N;MALAYALAM LETTER LLA
-0D34;N;MALAYALAM LETTER LLLA
-0D35;N;MALAYALAM LETTER VA
-0D36;N;MALAYALAM LETTER SHA
-0D37;N;MALAYALAM LETTER SSA
-0D38;N;MALAYALAM LETTER SA
-0D39;N;MALAYALAM LETTER HA
-0D3E;N;MALAYALAM VOWEL SIGN AA
-0D3F;N;MALAYALAM VOWEL SIGN I
-0D40;N;MALAYALAM VOWEL SIGN II
-0D41;N;MALAYALAM VOWEL SIGN U
-0D42;N;MALAYALAM VOWEL SIGN UU
-0D43;N;MALAYALAM VOWEL SIGN VOCALIC R
-0D46;N;MALAYALAM VOWEL SIGN E
-0D47;N;MALAYALAM VOWEL SIGN EE
-0D48;N;MALAYALAM VOWEL SIGN AI
-0D4A;N;MALAYALAM VOWEL SIGN O
-0D4B;N;MALAYALAM VOWEL SIGN OO
-0D4C;N;MALAYALAM VOWEL SIGN AU
-0D4D;N;MALAYALAM SIGN VIRAMA
-0D57;N;MALAYALAM AU LENGTH MARK
-0D60;N;MALAYALAM LETTER VOCALIC RR
-0D61;N;MALAYALAM LETTER VOCALIC LL
-0D66;N;MALAYALAM DIGIT ZERO
-0D67;N;MALAYALAM DIGIT ONE
-0D68;N;MALAYALAM DIGIT TWO
-0D69;N;MALAYALAM DIGIT THREE
-0D6A;N;MALAYALAM DIGIT FOUR
-0D6B;N;MALAYALAM DIGIT FIVE
-0D6C;N;MALAYALAM DIGIT SIX
-0D6D;N;MALAYALAM DIGIT SEVEN
-0D6E;N;MALAYALAM DIGIT EIGHT
-0D6F;N;MALAYALAM DIGIT NINE
-0D82;N;SINHALA SIGN ANUSVARAYA
-0D83;N;SINHALA SIGN VISARGAYA
-0D85;N;SINHALA LETTER AYANNA
-0D86;N;SINHALA LETTER AAYANNA
-0D87;N;SINHALA LETTER AEYANNA
-0D88;N;SINHALA LETTER AEEYANNA
-0D89;N;SINHALA LETTER IYANNA
-0D8A;N;SINHALA LETTER IIYANNA
-0D8B;N;SINHALA LETTER UYANNA
-0D8C;N;SINHALA LETTER UUYANNA
-0D8D;N;SINHALA LETTER IRUYANNA
-0D8E;N;SINHALA LETTER IRUUYANNA
-0D8F;N;SINHALA LETTER ILUYANNA
-0D90;N;SINHALA LETTER ILUUYANNA
-0D91;N;SINHALA LETTER EYANNA
-0D92;N;SINHALA LETTER EEYANNA
-0D93;N;SINHALA LETTER AIYANNA
-0D94;N;SINHALA LETTER OYANNA
-0D95;N;SINHALA LETTER OOYANNA
-0D96;N;SINHALA LETTER AUYANNA
-0D9A;N;SINHALA LETTER ALPAPRAANA KAYANNA
-0D9B;N;SINHALA LETTER MAHAAPRAANA KAYANNA
-0D9C;N;SINHALA LETTER ALPAPRAANA GAYANNA
-0D9D;N;SINHALA LETTER MAHAAPRAANA GAYANNA
-0D9E;N;SINHALA LETTER KANTAJA NAASIKYAYA
-0D9F;N;SINHALA LETTER SANYAKA GAYANNA
-0DA0;N;SINHALA LETTER ALPAPRAANA CAYANNA
-0DA1;N;SINHALA LETTER MAHAAPRAANA CAYANNA
-0DA2;N;SINHALA LETTER ALPAPRAANA JAYANNA
-0DA3;N;SINHALA LETTER MAHAAPRAANA JAYANNA
-0DA4;N;SINHALA LETTER TAALUJA NAASIKYAYA
-0DA5;N;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
-0DA6;N;SINHALA LETTER SANYAKA JAYANNA
-0DA7;N;SINHALA LETTER ALPAPRAANA TTAYANNA
-0DA8;N;SINHALA LETTER MAHAAPRAANA TTAYANNA
-0DA9;N;SINHALA LETTER ALPAPRAANA DDAYANNA
-0DAA;N;SINHALA LETTER MAHAAPRAANA DDAYANNA
-0DAB;N;SINHALA LETTER MUURDHAJA NAYANNA
-0DAC;N;SINHALA LETTER SANYAKA DDAYANNA
-0DAD;N;SINHALA LETTER ALPAPRAANA TAYANNA
-0DAE;N;SINHALA LETTER MAHAAPRAANA TAYANNA
-0DAF;N;SINHALA LETTER ALPAPRAANA DAYANNA
-0DB0;N;SINHALA LETTER MAHAAPRAANA DAYANNA
-0DB1;N;SINHALA LETTER DANTAJA NAYANNA
-0DB3;N;SINHALA LETTER SANYAKA DAYANNA
-0DB4;N;SINHALA LETTER ALPAPRAANA PAYANNA
-0DB5;N;SINHALA LETTER MAHAAPRAANA PAYANNA
-0DB6;N;SINHALA LETTER ALPAPRAANA BAYANNA
-0DB7;N;SINHALA LETTER MAHAAPRAANA BAYANNA
-0DB8;N;SINHALA LETTER MAYANNA
-0DB9;N;SINHALA LETTER AMBA BAYANNA
-0DBA;N;SINHALA LETTER YAYANNA
-0DBB;N;SINHALA LETTER RAYANNA
-0DBD;N;SINHALA LETTER DANTAJA LAYANNA
-0DC0;N;SINHALA LETTER VAYANNA
-0DC1;N;SINHALA LETTER TAALUJA SAYANNA
-0DC2;N;SINHALA LETTER MUURDHAJA SAYANNA
-0DC3;N;SINHALA LETTER DANTAJA SAYANNA
-0DC4;N;SINHALA LETTER HAYANNA
-0DC5;N;SINHALA LETTER MUURDHAJA LAYANNA
-0DC6;N;SINHALA LETTER FAYANNA
-0DCA;N;SINHALA SIGN AL-LAKUNA
-0DCF;N;SINHALA VOWEL SIGN AELA-PILLA
-0DD0;N;SINHALA VOWEL SIGN KETTI AEDA-PILLA
-0DD1;N;SINHALA VOWEL SIGN DIGA AEDA-PILLA
-0DD2;N;SINHALA VOWEL SIGN KETTI IS-PILLA
-0DD3;N;SINHALA VOWEL SIGN DIGA IS-PILLA
-0DD4;N;SINHALA VOWEL SIGN KETTI PAA-PILLA
-0DD6;N;SINHALA VOWEL SIGN DIGA PAA-PILLA
-0DD8;N;SINHALA VOWEL SIGN GAETTA-PILLA
-0DD9;N;SINHALA VOWEL SIGN KOMBUVA
-0DDA;N;SINHALA VOWEL SIGN DIGA KOMBUVA
-0DDB;N;SINHALA VOWEL SIGN KOMBU DEKA
-0DDC;N;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
-0DDD;N;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
-0DDE;N;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
-0DDF;N;SINHALA VOWEL SIGN GAYANUKITTA
-0DF2;N;SINHALA VOWEL SIGN DIGA GAETTA-PILLA
-0DF3;N;SINHALA VOWEL SIGN DIGA GAYANUKITTA
-0DF4;N;SINHALA PUNCTUATION KUNDDALIYA
-0E01;N;THAI CHARACTER KO KAI
-0E02;N;THAI CHARACTER KHO KHAI
-0E03;N;THAI CHARACTER KHO KHUAT
-0E04;N;THAI CHARACTER KHO KHWAI
-0E05;N;THAI CHARACTER KHO KHON
-0E06;N;THAI CHARACTER KHO RAKHANG
-0E07;N;THAI CHARACTER NGO NGU
-0E08;N;THAI CHARACTER CHO CHAN
-0E09;N;THAI CHARACTER CHO CHING
-0E0A;N;THAI CHARACTER CHO CHANG
-0E0B;N;THAI CHARACTER SO SO
-0E0C;N;THAI CHARACTER CHO CHOE
-0E0D;N;THAI CHARACTER YO YING
-0E0E;N;THAI CHARACTER DO CHADA
-0E0F;N;THAI CHARACTER TO PATAK
-0E10;N;THAI CHARACTER THO THAN
-0E11;N;THAI CHARACTER THO NANGMONTHO
-0E12;N;THAI CHARACTER THO PHUTHAO
-0E13;N;THAI CHARACTER NO NEN
-0E14;N;THAI CHARACTER DO DEK
-0E15;N;THAI CHARACTER TO TAO
-0E16;N;THAI CHARACTER THO THUNG
-0E17;N;THAI CHARACTER THO THAHAN
-0E18;N;THAI CHARACTER THO THONG
-0E19;N;THAI CHARACTER NO NU
-0E1A;N;THAI CHARACTER BO BAIMAI
-0E1B;N;THAI CHARACTER PO PLA
-0E1C;N;THAI CHARACTER PHO PHUNG
-0E1D;N;THAI CHARACTER FO FA
-0E1E;N;THAI CHARACTER PHO PHAN
-0E1F;N;THAI CHARACTER FO FAN
-0E20;N;THAI CHARACTER PHO SAMPHAO
-0E21;N;THAI CHARACTER MO MA
-0E22;N;THAI CHARACTER YO YAK
-0E23;N;THAI CHARACTER RO RUA
-0E24;N;THAI CHARACTER RU
-0E25;N;THAI CHARACTER LO LING
-0E26;N;THAI CHARACTER LU
-0E27;N;THAI CHARACTER WO WAEN
-0E28;N;THAI CHARACTER SO SALA
-0E29;N;THAI CHARACTER SO RUSI
-0E2A;N;THAI CHARACTER SO SUA
-0E2B;N;THAI CHARACTER HO HIP
-0E2C;N;THAI CHARACTER LO CHULA
-0E2D;N;THAI CHARACTER O ANG
-0E2E;N;THAI CHARACTER HO NOKHUK
-0E2F;N;THAI CHARACTER PAIYANNOI
-0E30;N;THAI CHARACTER SARA A
-0E31;N;THAI CHARACTER MAI HAN-AKAT
-0E32;N;THAI CHARACTER SARA AA
-0E33;N;THAI CHARACTER SARA AM
-0E34;N;THAI CHARACTER SARA I
-0E35;N;THAI CHARACTER SARA II
-0E36;N;THAI CHARACTER SARA UE
-0E37;N;THAI CHARACTER SARA UEE
-0E38;N;THAI CHARACTER SARA U
-0E39;N;THAI CHARACTER SARA UU
-0E3A;N;THAI CHARACTER PHINTHU
-0E3F;N;THAI CURRENCY SYMBOL BAHT
-0E40;N;THAI CHARACTER SARA E
-0E41;N;THAI CHARACTER SARA AE
-0E42;N;THAI CHARACTER SARA O
-0E43;N;THAI CHARACTER SARA AI MAIMUAN
-0E44;N;THAI CHARACTER SARA AI MAIMALAI
-0E45;N;THAI CHARACTER LAKKHANGYAO
-0E46;N;THAI CHARACTER MAIYAMOK
-0E47;N;THAI CHARACTER MAITAIKHU
-0E48;N;THAI CHARACTER MAI EK
-0E49;N;THAI CHARACTER MAI THO
-0E4A;N;THAI CHARACTER MAI TRI
-0E4B;N;THAI CHARACTER MAI CHATTAWA
-0E4C;N;THAI CHARACTER THANTHAKHAT
-0E4D;N;THAI CHARACTER NIKHAHIT
-0E4E;N;THAI CHARACTER YAMAKKAN
-0E4F;N;THAI CHARACTER FONGMAN
-0E50;N;THAI DIGIT ZERO
-0E51;N;THAI DIGIT ONE
-0E52;N;THAI DIGIT TWO
-0E53;N;THAI DIGIT THREE
-0E54;N;THAI DIGIT FOUR
-0E55;N;THAI DIGIT FIVE
-0E56;N;THAI DIGIT SIX
-0E57;N;THAI DIGIT SEVEN
-0E58;N;THAI DIGIT EIGHT
-0E59;N;THAI DIGIT NINE
-0E5A;N;THAI CHARACTER ANGKHANKHU
-0E5B;N;THAI CHARACTER KHOMUT
-0E81;N;LAO LETTER KO
-0E82;N;LAO LETTER KHO SUNG
-0E84;N;LAO LETTER KHO TAM
-0E87;N;LAO LETTER NGO
-0E88;N;LAO LETTER CO
-0E8A;N;LAO LETTER SO TAM
-0E8D;N;LAO LETTER NYO
-0E94;N;LAO LETTER DO
-0E95;N;LAO LETTER TO
-0E96;N;LAO LETTER THO SUNG
-0E97;N;LAO LETTER THO TAM
-0E99;N;LAO LETTER NO
-0E9A;N;LAO LETTER BO
-0E9B;N;LAO LETTER PO
-0E9C;N;LAO LETTER PHO SUNG
-0E9D;N;LAO LETTER FO TAM
-0E9E;N;LAO LETTER PHO TAM
-0E9F;N;LAO LETTER FO SUNG
-0EA1;N;LAO LETTER MO
-0EA2;N;LAO LETTER YO
-0EA3;N;LAO LETTER LO LING
-0EA5;N;LAO LETTER LO LOOT
-0EA7;N;LAO LETTER WO
-0EAA;N;LAO LETTER SO SUNG
-0EAB;N;LAO LETTER HO SUNG
-0EAD;N;LAO LETTER O
-0EAE;N;LAO LETTER HO TAM
-0EAF;N;LAO ELLIPSIS
-0EB0;N;LAO VOWEL SIGN A
-0EB1;N;LAO VOWEL SIGN MAI KAN
-0EB2;N;LAO VOWEL SIGN AA
-0EB3;N;LAO VOWEL SIGN AM
-0EB4;N;LAO VOWEL SIGN I
-0EB5;N;LAO VOWEL SIGN II
-0EB6;N;LAO VOWEL SIGN Y
-0EB7;N;LAO VOWEL SIGN YY
-0EB8;N;LAO VOWEL SIGN U
-0EB9;N;LAO VOWEL SIGN UU
-0EBB;N;LAO VOWEL SIGN MAI KON
-0EBC;N;LAO SEMIVOWEL SIGN LO
-0EBD;N;LAO SEMIVOWEL SIGN NYO
-0EC0;N;LAO VOWEL SIGN E
-0EC1;N;LAO VOWEL SIGN EI
-0EC2;N;LAO VOWEL SIGN O
-0EC3;N;LAO VOWEL SIGN AY
-0EC4;N;LAO VOWEL SIGN AI
-0EC6;N;LAO KO LA
-0EC8;N;LAO TONE MAI EK
-0EC9;N;LAO TONE MAI THO
-0ECA;N;LAO TONE MAI TI
-0ECB;N;LAO TONE MAI CATAWA
-0ECC;N;LAO CANCELLATION MARK
-0ECD;N;LAO NIGGAHITA
-0ED0;N;LAO DIGIT ZERO
-0ED1;N;LAO DIGIT ONE
-0ED2;N;LAO DIGIT TWO
-0ED3;N;LAO DIGIT THREE
-0ED4;N;LAO DIGIT FOUR
-0ED5;N;LAO DIGIT FIVE
-0ED6;N;LAO DIGIT SIX
-0ED7;N;LAO DIGIT SEVEN
-0ED8;N;LAO DIGIT EIGHT
-0ED9;N;LAO DIGIT NINE
-0EDC;N;LAO HO NO
-0EDD;N;LAO HO MO
-0F00;N;TIBETAN SYLLABLE OM
-0F01;N;TIBETAN MARK GTER YIG MGO TRUNCATED A
-0F02;N;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA
-0F03;N;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
-0F04;N;TIBETAN MARK INITIAL YIG MGO MDUN MA
-0F05;N;TIBETAN MARK CLOSING YIG MGO SGAB MA
-0F06;N;TIBETAN MARK CARET YIG MGO PHUR SHAD MA
-0F07;N;TIBETAN MARK YIG MGO TSHEG SHAD MA
-0F08;N;TIBETAN MARK SBRUL SHAD
-0F09;N;TIBETAN MARK BSKUR YIG MGO
-0F0A;N;TIBETAN MARK BKA- SHOG YIG MGO
-0F0B;N;TIBETAN MARK INTERSYLLABIC TSHEG
-0F0C;N;TIBETAN MARK DELIMITER TSHEG BSTAR
-0F0D;N;TIBETAN MARK SHAD
-0F0E;N;TIBETAN MARK NYIS SHAD
-0F0F;N;TIBETAN MARK TSHEG SHAD
-0F10;N;TIBETAN MARK NYIS TSHEG SHAD
-0F11;N;TIBETAN MARK RIN CHEN SPUNGS SHAD
-0F12;N;TIBETAN MARK RGYA GRAM SHAD
-0F13;N;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
-0F14;N;TIBETAN MARK GTER TSHEG
-0F15;N;TIBETAN LOGOTYPE SIGN CHAD RTAGS
-0F16;N;TIBETAN LOGOTYPE SIGN LHAG RTAGS
-0F17;N;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
-0F18;N;TIBETAN ASTROLOGICAL SIGN -KHYUD PA
-0F19;N;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
-0F1A;N;TIBETAN SIGN RDEL DKAR GCIG
-0F1B;N;TIBETAN SIGN RDEL DKAR GNYIS
-0F1C;N;TIBETAN SIGN RDEL DKAR GSUM
-0F1D;N;TIBETAN SIGN RDEL NAG GCIG
-0F1E;N;TIBETAN SIGN RDEL NAG GNYIS
-0F1F;N;TIBETAN SIGN RDEL DKAR RDEL NAG
-0F20;N;TIBETAN DIGIT ZERO
-0F21;N;TIBETAN DIGIT ONE
-0F22;N;TIBETAN DIGIT TWO
-0F23;N;TIBETAN DIGIT THREE
-0F24;N;TIBETAN DIGIT FOUR
-0F25;N;TIBETAN DIGIT FIVE
-0F26;N;TIBETAN DIGIT SIX
-0F27;N;TIBETAN DIGIT SEVEN
-0F28;N;TIBETAN DIGIT EIGHT
-0F29;N;TIBETAN DIGIT NINE
-0F2A;N;TIBETAN DIGIT HALF ONE
-0F2B;N;TIBETAN DIGIT HALF TWO
-0F2C;N;TIBETAN DIGIT HALF THREE
-0F2D;N;TIBETAN DIGIT HALF FOUR
-0F2E;N;TIBETAN DIGIT HALF FIVE
-0F2F;N;TIBETAN DIGIT HALF SIX
-0F30;N;TIBETAN DIGIT HALF SEVEN
-0F31;N;TIBETAN DIGIT HALF EIGHT
-0F32;N;TIBETAN DIGIT HALF NINE
-0F33;N;TIBETAN DIGIT HALF ZERO
-0F34;N;TIBETAN MARK BSDUS RTAGS
-0F35;N;TIBETAN MARK NGAS BZUNG NYI ZLA
-0F36;N;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
-0F37;N;TIBETAN MARK NGAS BZUNG SGOR RTAGS
-0F38;N;TIBETAN MARK CHE MGO
-0F39;N;TIBETAN MARK TSA -PHRU
-0F3A;N;TIBETAN MARK GUG RTAGS GYON
-0F3B;N;TIBETAN MARK GUG RTAGS GYAS
-0F3C;N;TIBETAN MARK ANG KHANG GYON
-0F3D;N;TIBETAN MARK ANG KHANG GYAS
-0F3E;N;TIBETAN SIGN YAR TSHES
-0F3F;N;TIBETAN SIGN MAR TSHES
-0F40;N;TIBETAN LETTER KA
-0F41;N;TIBETAN LETTER KHA
-0F42;N;TIBETAN LETTER GA
-0F43;N;TIBETAN LETTER GHA
-0F44;N;TIBETAN LETTER NGA
-0F45;N;TIBETAN LETTER CA
-0F46;N;TIBETAN LETTER CHA
-0F47;N;TIBETAN LETTER JA
-0F49;N;TIBETAN LETTER NYA
-0F4A;N;TIBETAN LETTER TTA
-0F4B;N;TIBETAN LETTER TTHA
-0F4C;N;TIBETAN LETTER DDA
-0F4D;N;TIBETAN LETTER DDHA
-0F4E;N;TIBETAN LETTER NNA
-0F4F;N;TIBETAN LETTER TA
-0F50;N;TIBETAN LETTER THA
-0F51;N;TIBETAN LETTER DA
-0F52;N;TIBETAN LETTER DHA
-0F53;N;TIBETAN LETTER NA
-0F54;N;TIBETAN LETTER PA
-0F55;N;TIBETAN LETTER PHA
-0F56;N;TIBETAN LETTER BA
-0F57;N;TIBETAN LETTER BHA
-0F58;N;TIBETAN LETTER MA
-0F59;N;TIBETAN LETTER TSA
-0F5A;N;TIBETAN LETTER TSHA
-0F5B;N;TIBETAN LETTER DZA
-0F5C;N;TIBETAN LETTER DZHA
-0F5D;N;TIBETAN LETTER WA
-0F5E;N;TIBETAN LETTER ZHA
-0F5F;N;TIBETAN LETTER ZA
-0F60;N;TIBETAN LETTER -A
-0F61;N;TIBETAN LETTER YA
-0F62;N;TIBETAN LETTER RA
-0F63;N;TIBETAN LETTER LA
-0F64;N;TIBETAN LETTER SHA
-0F65;N;TIBETAN LETTER SSA
-0F66;N;TIBETAN LETTER SA
-0F67;N;TIBETAN LETTER HA
-0F68;N;TIBETAN LETTER A
-0F69;N;TIBETAN LETTER KSSA
-0F6A;N;TIBETAN LETTER FIXED-FORM RA
-0F71;N;TIBETAN VOWEL SIGN AA
-0F72;N;TIBETAN VOWEL SIGN I
-0F73;N;TIBETAN VOWEL SIGN II
-0F74;N;TIBETAN VOWEL SIGN U
-0F75;N;TIBETAN VOWEL SIGN UU
-0F76;N;TIBETAN VOWEL SIGN VOCALIC R
-0F77;N;TIBETAN VOWEL SIGN VOCALIC RR
-0F78;N;TIBETAN VOWEL SIGN VOCALIC L
-0F79;N;TIBETAN VOWEL SIGN VOCALIC LL
-0F7A;N;TIBETAN VOWEL SIGN E
-0F7B;N;TIBETAN VOWEL SIGN EE
-0F7C;N;TIBETAN VOWEL SIGN O
-0F7D;N;TIBETAN VOWEL SIGN OO
-0F7E;N;TIBETAN SIGN RJES SU NGA RO
-0F7F;N;TIBETAN SIGN RNAM BCAD
-0F80;N;TIBETAN VOWEL SIGN REVERSED I
-0F81;N;TIBETAN VOWEL SIGN REVERSED II
-0F82;N;TIBETAN SIGN NYI ZLA NAA DA
-0F83;N;TIBETAN SIGN SNA LDAN
-0F84;N;TIBETAN MARK HALANTA
-0F85;N;TIBETAN MARK PALUTA
-0F86;N;TIBETAN SIGN LCI RTAGS
-0F87;N;TIBETAN SIGN YANG RTAGS
-0F88;N;TIBETAN SIGN LCE TSA CAN
-0F89;N;TIBETAN SIGN MCHU CAN
-0F8A;N;TIBETAN SIGN GRU CAN RGYINGS
-0F8B;N;TIBETAN SIGN GRU MED RGYINGS
-0F90;N;TIBETAN SUBJOINED LETTER KA
-0F91;N;TIBETAN SUBJOINED LETTER KHA
-0F92;N;TIBETAN SUBJOINED LETTER GA
-0F93;N;TIBETAN SUBJOINED LETTER GHA
-0F94;N;TIBETAN SUBJOINED LETTER NGA
-0F95;N;TIBETAN SUBJOINED LETTER CA
-0F96;N;TIBETAN SUBJOINED LETTER CHA
-0F97;N;TIBETAN SUBJOINED LETTER JA
-0F99;N;TIBETAN SUBJOINED LETTER NYA
-0F9A;N;TIBETAN SUBJOINED LETTER TTA
-0F9B;N;TIBETAN SUBJOINED LETTER TTHA
-0F9C;N;TIBETAN SUBJOINED LETTER DDA
-0F9D;N;TIBETAN SUBJOINED LETTER DDHA
-0F9E;N;TIBETAN SUBJOINED LETTER NNA
-0F9F;N;TIBETAN SUBJOINED LETTER TA
-0FA0;N;TIBETAN SUBJOINED LETTER THA
-0FA1;N;TIBETAN SUBJOINED LETTER DA
-0FA2;N;TIBETAN SUBJOINED LETTER DHA
-0FA3;N;TIBETAN SUBJOINED LETTER NA
-0FA4;N;TIBETAN SUBJOINED LETTER PA
-0FA5;N;TIBETAN SUBJOINED LETTER PHA
-0FA6;N;TIBETAN SUBJOINED LETTER BA
-0FA7;N;TIBETAN SUBJOINED LETTER BHA
-0FA8;N;TIBETAN SUBJOINED LETTER MA
-0FA9;N;TIBETAN SUBJOINED LETTER TSA
-0FAA;N;TIBETAN SUBJOINED LETTER TSHA
-0FAB;N;TIBETAN SUBJOINED LETTER DZA
-0FAC;N;TIBETAN SUBJOINED LETTER DZHA
-0FAD;N;TIBETAN SUBJOINED LETTER WA
-0FAE;N;TIBETAN SUBJOINED LETTER ZHA
-0FAF;N;TIBETAN SUBJOINED LETTER ZA
-0FB0;N;TIBETAN SUBJOINED LETTER -A
-0FB1;N;TIBETAN SUBJOINED LETTER YA
-0FB2;N;TIBETAN SUBJOINED LETTER RA
-0FB3;N;TIBETAN SUBJOINED LETTER LA
-0FB4;N;TIBETAN SUBJOINED LETTER SHA
-0FB5;N;TIBETAN SUBJOINED LETTER SSA
-0FB6;N;TIBETAN SUBJOINED LETTER SA
-0FB7;N;TIBETAN SUBJOINED LETTER HA
-0FB8;N;TIBETAN SUBJOINED LETTER A
-0FB9;N;TIBETAN SUBJOINED LETTER KSSA
-0FBA;N;TIBETAN SUBJOINED LETTER FIXED-FORM WA
-0FBB;N;TIBETAN SUBJOINED LETTER FIXED-FORM YA
-0FBC;N;TIBETAN SUBJOINED LETTER FIXED-FORM RA
-0FBE;N;TIBETAN KU RU KHA
-0FBF;N;TIBETAN KU RU KHA BZHI MIG CAN
-0FC0;N;TIBETAN CANTILLATION SIGN HEAVY BEAT
-0FC1;N;TIBETAN CANTILLATION SIGN LIGHT BEAT
-0FC2;N;TIBETAN CANTILLATION SIGN CANG TE-U
-0FC3;N;TIBETAN CANTILLATION SIGN SBUB -CHAL
-0FC4;N;TIBETAN SYMBOL DRIL BU
-0FC5;N;TIBETAN SYMBOL RDO RJE
-0FC6;N;TIBETAN SYMBOL PADMA GDAN
-0FC7;N;TIBETAN SYMBOL RDO RJE RGYA GRAM
-0FC8;N;TIBETAN SYMBOL PHUR PA
-0FC9;N;TIBETAN SYMBOL NOR BU
-0FCA;N;TIBETAN SYMBOL NOR BU NYIS -KHYIL
-0FCB;N;TIBETAN SYMBOL NOR BU GSUM -KHYIL
-0FCC;N;TIBETAN SYMBOL NOR BU BZHI -KHYIL
-0FCF;N;TIBETAN SIGN RDEL NAG GSUM
-1000;N;MYANMAR LETTER KA
-1001;N;MYANMAR LETTER KHA
-1002;N;MYANMAR LETTER GA
-1003;N;MYANMAR LETTER GHA
-1004;N;MYANMAR LETTER NGA
-1005;N;MYANMAR LETTER CA
-1006;N;MYANMAR LETTER CHA
-1007;N;MYANMAR LETTER JA
-1008;N;MYANMAR LETTER JHA
-1009;N;MYANMAR LETTER NYA
-100A;N;MYANMAR LETTER NNYA
-100B;N;MYANMAR LETTER TTA
-100C;N;MYANMAR LETTER TTHA
-100D;N;MYANMAR LETTER DDA
-100E;N;MYANMAR LETTER DDHA
-100F;N;MYANMAR LETTER NNA
-1010;N;MYANMAR LETTER TA
-1011;N;MYANMAR LETTER THA
-1012;N;MYANMAR LETTER DA
-1013;N;MYANMAR LETTER DHA
-1014;N;MYANMAR LETTER NA
-1015;N;MYANMAR LETTER PA
-1016;N;MYANMAR LETTER PHA
-1017;N;MYANMAR LETTER BA
-1018;N;MYANMAR LETTER BHA
-1019;N;MYANMAR LETTER MA
-101A;N;MYANMAR LETTER YA
-101B;N;MYANMAR LETTER RA
-101C;N;MYANMAR LETTER LA
-101D;N;MYANMAR LETTER WA
-101E;N;MYANMAR LETTER SA
-101F;N;MYANMAR LETTER HA
-1020;N;MYANMAR LETTER LLA
-1021;N;MYANMAR LETTER A
-1023;N;MYANMAR LETTER I
-1024;N;MYANMAR LETTER II
-1025;N;MYANMAR LETTER U
-1026;N;MYANMAR LETTER UU
-1027;N;MYANMAR LETTER E
-1029;N;MYANMAR LETTER O
-102A;N;MYANMAR LETTER AU
-102C;N;MYANMAR VOWEL SIGN AA
-102D;N;MYANMAR VOWEL SIGN I
-102E;N;MYANMAR VOWEL SIGN II
-102F;N;MYANMAR VOWEL SIGN U
-1030;N;MYANMAR VOWEL SIGN UU
-1031;N;MYANMAR VOWEL SIGN E
-1032;N;MYANMAR VOWEL SIGN AI
-1036;N;MYANMAR SIGN ANUSVARA
-1037;N;MYANMAR SIGN DOT BELOW
-1038;N;MYANMAR SIGN VISARGA
-1039;N;MYANMAR SIGN VIRAMA
-1040;N;MYANMAR DIGIT ZERO
-1041;N;MYANMAR DIGIT ONE
-1042;N;MYANMAR DIGIT TWO
-1043;N;MYANMAR DIGIT THREE
-1044;N;MYANMAR DIGIT FOUR
-1045;N;MYANMAR DIGIT FIVE
-1046;N;MYANMAR DIGIT SIX
-1047;N;MYANMAR DIGIT SEVEN
-1048;N;MYANMAR DIGIT EIGHT
-1049;N;MYANMAR DIGIT NINE
-104A;N;MYANMAR SIGN LITTLE SECTION
-104B;N;MYANMAR SIGN SECTION
-104C;N;MYANMAR SYMBOL LOCATIVE
-104D;N;MYANMAR SYMBOL COMPLETED
-104E;N;MYANMAR SYMBOL AFOREMENTIONED
-104F;N;MYANMAR SYMBOL GENITIVE
-1050;N;MYANMAR LETTER SHA
-1051;N;MYANMAR LETTER SSA
-1052;N;MYANMAR LETTER VOCALIC R
-1053;N;MYANMAR LETTER VOCALIC RR
-1054;N;MYANMAR LETTER VOCALIC L
-1055;N;MYANMAR LETTER VOCALIC LL
-1056;N;MYANMAR VOWEL SIGN VOCALIC R
-1057;N;MYANMAR VOWEL SIGN VOCALIC RR
-1058;N;MYANMAR VOWEL SIGN VOCALIC L
-1059;N;MYANMAR VOWEL SIGN VOCALIC LL
-10A0;N;GEORGIAN CAPITAL LETTER AN
-10A1;N;GEORGIAN CAPITAL LETTER BAN
-10A2;N;GEORGIAN CAPITAL LETTER GAN
-10A3;N;GEORGIAN CAPITAL LETTER DON
-10A4;N;GEORGIAN CAPITAL LETTER EN
-10A5;N;GEORGIAN CAPITAL LETTER VIN
-10A6;N;GEORGIAN CAPITAL LETTER ZEN
-10A7;N;GEORGIAN CAPITAL LETTER TAN
-10A8;N;GEORGIAN CAPITAL LETTER IN
-10A9;N;GEORGIAN CAPITAL LETTER KAN
-10AA;N;GEORGIAN CAPITAL LETTER LAS
-10AB;N;GEORGIAN CAPITAL LETTER MAN
-10AC;N;GEORGIAN CAPITAL LETTER NAR
-10AD;N;GEORGIAN CAPITAL LETTER ON
-10AE;N;GEORGIAN CAPITAL LETTER PAR
-10AF;N;GEORGIAN CAPITAL LETTER ZHAR
-10B0;N;GEORGIAN CAPITAL LETTER RAE
-10B1;N;GEORGIAN CAPITAL LETTER SAN
-10B2;N;GEORGIAN CAPITAL LETTER TAR
-10B3;N;GEORGIAN CAPITAL LETTER UN
-10B4;N;GEORGIAN CAPITAL LETTER PHAR
-10B5;N;GEORGIAN CAPITAL LETTER KHAR
-10B6;N;GEORGIAN CAPITAL LETTER GHAN
-10B7;N;GEORGIAN CAPITAL LETTER QAR
-10B8;N;GEORGIAN CAPITAL LETTER SHIN
-10B9;N;GEORGIAN CAPITAL LETTER CHIN
-10BA;N;GEORGIAN CAPITAL LETTER CAN
-10BB;N;GEORGIAN CAPITAL LETTER JIL
-10BC;N;GEORGIAN CAPITAL LETTER CIL
-10BD;N;GEORGIAN CAPITAL LETTER CHAR
-10BE;N;GEORGIAN CAPITAL LETTER XAN
-10BF;N;GEORGIAN CAPITAL LETTER JHAN
-10C0;N;GEORGIAN CAPITAL LETTER HAE
-10C1;N;GEORGIAN CAPITAL LETTER HE
-10C2;N;GEORGIAN CAPITAL LETTER HIE
-10C3;N;GEORGIAN CAPITAL LETTER WE
-10C4;N;GEORGIAN CAPITAL LETTER HAR
-10C5;N;GEORGIAN CAPITAL LETTER HOE
-10D0;N;GEORGIAN LETTER AN
-10D1;N;GEORGIAN LETTER BAN
-10D2;N;GEORGIAN LETTER GAN
-10D3;N;GEORGIAN LETTER DON
-10D4;N;GEORGIAN LETTER EN
-10D5;N;GEORGIAN LETTER VIN
-10D6;N;GEORGIAN LETTER ZEN
-10D7;N;GEORGIAN LETTER TAN
-10D8;N;GEORGIAN LETTER IN
-10D9;N;GEORGIAN LETTER KAN
-10DA;N;GEORGIAN LETTER LAS
-10DB;N;GEORGIAN LETTER MAN
-10DC;N;GEORGIAN LETTER NAR
-10DD;N;GEORGIAN LETTER ON
-10DE;N;GEORGIAN LETTER PAR
-10DF;N;GEORGIAN LETTER ZHAR
-10E0;N;GEORGIAN LETTER RAE
-10E1;N;GEORGIAN LETTER SAN
-10E2;N;GEORGIAN LETTER TAR
-10E3;N;GEORGIAN LETTER UN
-10E4;N;GEORGIAN LETTER PHAR
-10E5;N;GEORGIAN LETTER KHAR
-10E6;N;GEORGIAN LETTER GHAN
-10E7;N;GEORGIAN LETTER QAR
-10E8;N;GEORGIAN LETTER SHIN
-10E9;N;GEORGIAN LETTER CHIN
-10EA;N;GEORGIAN LETTER CAN
-10EB;N;GEORGIAN LETTER JIL
-10EC;N;GEORGIAN LETTER CIL
-10ED;N;GEORGIAN LETTER CHAR
-10EE;N;GEORGIAN LETTER XAN
-10EF;N;GEORGIAN LETTER JHAN
-10F0;N;GEORGIAN LETTER HAE
-10F1;N;GEORGIAN LETTER HE
-10F2;N;GEORGIAN LETTER HIE
-10F3;N;GEORGIAN LETTER WE
-10F4;N;GEORGIAN LETTER HAR
-10F5;N;GEORGIAN LETTER HOE
-10F6;N;GEORGIAN LETTER FI
-10FB;N;GEORGIAN PARAGRAPH SEPARATOR
-1100;W;HANGUL CHOSEONG KIYEOK
-1101;W;HANGUL CHOSEONG SSANGKIYEOK
-1102;W;HANGUL CHOSEONG NIEUN
-1103;W;HANGUL CHOSEONG TIKEUT
-1104;W;HANGUL CHOSEONG SSANGTIKEUT
-1105;W;HANGUL CHOSEONG RIEUL
-1106;W;HANGUL CHOSEONG MIEUM
-1107;W;HANGUL CHOSEONG PIEUP
-1108;W;HANGUL CHOSEONG SSANGPIEUP
-1109;W;HANGUL CHOSEONG SIOS
-110A;W;HANGUL CHOSEONG SSANGSIOS
-110B;W;HANGUL CHOSEONG IEUNG
-110C;W;HANGUL CHOSEONG CIEUC
-110D;W;HANGUL CHOSEONG SSANGCIEUC
-110E;W;HANGUL CHOSEONG CHIEUCH
-110F;W;HANGUL CHOSEONG KHIEUKH
-1110;W;HANGUL CHOSEONG THIEUTH
-1111;W;HANGUL CHOSEONG PHIEUPH
-1112;W;HANGUL CHOSEONG HIEUH
-1113;W;HANGUL CHOSEONG NIEUN-KIYEOK
-1114;W;HANGUL CHOSEONG SSANGNIEUN
-1115;W;HANGUL CHOSEONG NIEUN-TIKEUT
-1116;W;HANGUL CHOSEONG NIEUN-PIEUP
-1117;W;HANGUL CHOSEONG TIKEUT-KIYEOK
-1118;W;HANGUL CHOSEONG RIEUL-NIEUN
-1119;W;HANGUL CHOSEONG SSANGRIEUL
-111A;W;HANGUL CHOSEONG RIEUL-HIEUH
-111B;W;HANGUL CHOSEONG KAPYEOUNRIEUL
-111C;W;HANGUL CHOSEONG MIEUM-PIEUP
-111D;W;HANGUL CHOSEONG KAPYEOUNMIEUM
-111E;W;HANGUL CHOSEONG PIEUP-KIYEOK
-111F;W;HANGUL CHOSEONG PIEUP-NIEUN
-1120;W;HANGUL CHOSEONG PIEUP-TIKEUT
-1121;W;HANGUL CHOSEONG PIEUP-SIOS
-1122;W;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
-1123;W;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
-1124;W;HANGUL CHOSEONG PIEUP-SIOS-PIEUP
-1125;W;HANGUL CHOSEONG PIEUP-SSANGSIOS
-1126;W;HANGUL CHOSEONG PIEUP-SIOS-CIEUC
-1127;W;HANGUL CHOSEONG PIEUP-CIEUC
-1128;W;HANGUL CHOSEONG PIEUP-CHIEUCH
-1129;W;HANGUL CHOSEONG PIEUP-THIEUTH
-112A;W;HANGUL CHOSEONG PIEUP-PHIEUPH
-112B;W;HANGUL CHOSEONG KAPYEOUNPIEUP
-112C;W;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
-112D;W;HANGUL CHOSEONG SIOS-KIYEOK
-112E;W;HANGUL CHOSEONG SIOS-NIEUN
-112F;W;HANGUL CHOSEONG SIOS-TIKEUT
-1130;W;HANGUL CHOSEONG SIOS-RIEUL
-1131;W;HANGUL CHOSEONG SIOS-MIEUM
-1132;W;HANGUL CHOSEONG SIOS-PIEUP
-1133;W;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
-1134;W;HANGUL CHOSEONG SIOS-SSANGSIOS
-1135;W;HANGUL CHOSEONG SIOS-IEUNG
-1136;W;HANGUL CHOSEONG SIOS-CIEUC
-1137;W;HANGUL CHOSEONG SIOS-CHIEUCH
-1138;W;HANGUL CHOSEONG SIOS-KHIEUKH
-1139;W;HANGUL CHOSEONG SIOS-THIEUTH
-113A;W;HANGUL CHOSEONG SIOS-PHIEUPH
-113B;W;HANGUL CHOSEONG SIOS-HIEUH
-113C;W;HANGUL CHOSEONG CHITUEUMSIOS
-113D;W;HANGUL CHOSEONG CHITUEUMSSANGSIOS
-113E;W;HANGUL CHOSEONG CEONGCHIEUMSIOS
-113F;W;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
-1140;W;HANGUL CHOSEONG PANSIOS
-1141;W;HANGUL CHOSEONG IEUNG-KIYEOK
-1142;W;HANGUL CHOSEONG IEUNG-TIKEUT
-1143;W;HANGUL CHOSEONG IEUNG-MIEUM
-1144;W;HANGUL CHOSEONG IEUNG-PIEUP
-1145;W;HANGUL CHOSEONG IEUNG-SIOS
-1146;W;HANGUL CHOSEONG IEUNG-PANSIOS
-1147;W;HANGUL CHOSEONG SSANGIEUNG
-1148;W;HANGUL CHOSEONG IEUNG-CIEUC
-1149;W;HANGUL CHOSEONG IEUNG-CHIEUCH
-114A;W;HANGUL CHOSEONG IEUNG-THIEUTH
-114B;W;HANGUL CHOSEONG IEUNG-PHIEUPH
-114C;W;HANGUL CHOSEONG YESIEUNG
-114D;W;HANGUL CHOSEONG CIEUC-IEUNG
-114E;W;HANGUL CHOSEONG CHITUEUMCIEUC
-114F;W;HANGUL CHOSEONG CHITUEUMSSANGCIEUC
-1150;W;HANGUL CHOSEONG CEONGCHIEUMCIEUC
-1151;W;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
-1152;W;HANGUL CHOSEONG CHIEUCH-KHIEUKH
-1153;W;HANGUL CHOSEONG CHIEUCH-HIEUH
-1154;W;HANGUL CHOSEONG CHITUEUMCHIEUCH
-1155;W;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
-1156;W;HANGUL CHOSEONG PHIEUPH-PIEUP
-1157;W;HANGUL CHOSEONG KAPYEOUNPHIEUPH
-1158;W;HANGUL CHOSEONG SSANGHIEUH
-1159;W;HANGUL CHOSEONG YEORINHIEUH
-115F;W;HANGUL CHOSEONG FILLER
-1160;N;HANGUL JUNGSEONG FILLER
-1161;N;HANGUL JUNGSEONG A
-1162;N;HANGUL JUNGSEONG AE
-1163;N;HANGUL JUNGSEONG YA
-1164;N;HANGUL JUNGSEONG YAE
-1165;N;HANGUL JUNGSEONG EO
-1166;N;HANGUL JUNGSEONG E
-1167;N;HANGUL JUNGSEONG YEO
-1168;N;HANGUL JUNGSEONG YE
-1169;N;HANGUL JUNGSEONG O
-116A;N;HANGUL JUNGSEONG WA
-116B;N;HANGUL JUNGSEONG WAE
-116C;N;HANGUL JUNGSEONG OE
-116D;N;HANGUL JUNGSEONG YO
-116E;N;HANGUL JUNGSEONG U
-116F;N;HANGUL JUNGSEONG WEO
-1170;N;HANGUL JUNGSEONG WE
-1171;N;HANGUL JUNGSEONG WI
-1172;N;HANGUL JUNGSEONG YU
-1173;N;HANGUL JUNGSEONG EU
-1174;N;HANGUL JUNGSEONG YI
-1175;N;HANGUL JUNGSEONG I
-1176;N;HANGUL JUNGSEONG A-O
-1177;N;HANGUL JUNGSEONG A-U
-1178;N;HANGUL JUNGSEONG YA-O
-1179;N;HANGUL JUNGSEONG YA-YO
-117A;N;HANGUL JUNGSEONG EO-O
-117B;N;HANGUL JUNGSEONG EO-U
-117C;N;HANGUL JUNGSEONG EO-EU
-117D;N;HANGUL JUNGSEONG YEO-O
-117E;N;HANGUL JUNGSEONG YEO-U
-117F;N;HANGUL JUNGSEONG O-EO
-1180;N;HANGUL JUNGSEONG O-E
-1181;N;HANGUL JUNGSEONG O-YE
-1182;N;HANGUL JUNGSEONG O-O
-1183;N;HANGUL JUNGSEONG O-U
-1184;N;HANGUL JUNGSEONG YO-YA
-1185;N;HANGUL JUNGSEONG YO-YAE
-1186;N;HANGUL JUNGSEONG YO-YEO
-1187;N;HANGUL JUNGSEONG YO-O
-1188;N;HANGUL JUNGSEONG YO-I
-1189;N;HANGUL JUNGSEONG U-A
-118A;N;HANGUL JUNGSEONG U-AE
-118B;N;HANGUL JUNGSEONG U-EO-EU
-118C;N;HANGUL JUNGSEONG U-YE
-118D;N;HANGUL JUNGSEONG U-U
-118E;N;HANGUL JUNGSEONG YU-A
-118F;N;HANGUL JUNGSEONG YU-EO
-1190;N;HANGUL JUNGSEONG YU-E
-1191;N;HANGUL JUNGSEONG YU-YEO
-1192;N;HANGUL JUNGSEONG YU-YE
-1193;N;HANGUL JUNGSEONG YU-U
-1194;N;HANGUL JUNGSEONG YU-I
-1195;N;HANGUL JUNGSEONG EU-U
-1196;N;HANGUL JUNGSEONG EU-EU
-1197;N;HANGUL JUNGSEONG YI-U
-1198;N;HANGUL JUNGSEONG I-A
-1199;N;HANGUL JUNGSEONG I-YA
-119A;N;HANGUL JUNGSEONG I-O
-119B;N;HANGUL JUNGSEONG I-U
-119C;N;HANGUL JUNGSEONG I-EU
-119D;N;HANGUL JUNGSEONG I-ARAEA
-119E;N;HANGUL JUNGSEONG ARAEA
-119F;N;HANGUL JUNGSEONG ARAEA-EO
-11A0;N;HANGUL JUNGSEONG ARAEA-U
-11A1;N;HANGUL JUNGSEONG ARAEA-I
-11A2;N;HANGUL JUNGSEONG SSANGARAEA
-11A8;N;HANGUL JONGSEONG KIYEOK
-11A9;N;HANGUL JONGSEONG SSANGKIYEOK
-11AA;N;HANGUL JONGSEONG KIYEOK-SIOS
-11AB;N;HANGUL JONGSEONG NIEUN
-11AC;N;HANGUL JONGSEONG NIEUN-CIEUC
-11AD;N;HANGUL JONGSEONG NIEUN-HIEUH
-11AE;N;HANGUL JONGSEONG TIKEUT
-11AF;N;HANGUL JONGSEONG RIEUL
-11B0;N;HANGUL JONGSEONG RIEUL-KIYEOK
-11B1;N;HANGUL JONGSEONG RIEUL-MIEUM
-11B2;N;HANGUL JONGSEONG RIEUL-PIEUP
-11B3;N;HANGUL JONGSEONG RIEUL-SIOS
-11B4;N;HANGUL JONGSEONG RIEUL-THIEUTH
-11B5;N;HANGUL JONGSEONG RIEUL-PHIEUPH
-11B6;N;HANGUL JONGSEONG RIEUL-HIEUH
-11B7;N;HANGUL JONGSEONG MIEUM
-11B8;N;HANGUL JONGSEONG PIEUP
-11B9;N;HANGUL JONGSEONG PIEUP-SIOS
-11BA;N;HANGUL JONGSEONG SIOS
-11BB;N;HANGUL JONGSEONG SSANGSIOS
-11BC;N;HANGUL JONGSEONG IEUNG
-11BD;N;HANGUL JONGSEONG CIEUC
-11BE;N;HANGUL JONGSEONG CHIEUCH
-11BF;N;HANGUL JONGSEONG KHIEUKH
-11C0;N;HANGUL JONGSEONG THIEUTH
-11C1;N;HANGUL JONGSEONG PHIEUPH
-11C2;N;HANGUL JONGSEONG HIEUH
-11C3;N;HANGUL JONGSEONG KIYEOK-RIEUL
-11C4;N;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
-11C5;N;HANGUL JONGSEONG NIEUN-KIYEOK
-11C6;N;HANGUL JONGSEONG NIEUN-TIKEUT
-11C7;N;HANGUL JONGSEONG NIEUN-SIOS
-11C8;N;HANGUL JONGSEONG NIEUN-PANSIOS
-11C9;N;HANGUL JONGSEONG NIEUN-THIEUTH
-11CA;N;HANGUL JONGSEONG TIKEUT-KIYEOK
-11CB;N;HANGUL JONGSEONG TIKEUT-RIEUL
-11CC;N;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
-11CD;N;HANGUL JONGSEONG RIEUL-NIEUN
-11CE;N;HANGUL JONGSEONG RIEUL-TIKEUT
-11CF;N;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
-11D0;N;HANGUL JONGSEONG SSANGRIEUL
-11D1;N;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
-11D2;N;HANGUL JONGSEONG RIEUL-MIEUM-SIOS
-11D3;N;HANGUL JONGSEONG RIEUL-PIEUP-SIOS
-11D4;N;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
-11D5;N;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
-11D6;N;HANGUL JONGSEONG RIEUL-SSANGSIOS
-11D7;N;HANGUL JONGSEONG RIEUL-PANSIOS
-11D8;N;HANGUL JONGSEONG RIEUL-KHIEUKH
-11D9;N;HANGUL JONGSEONG RIEUL-YEORINHIEUH
-11DA;N;HANGUL JONGSEONG MIEUM-KIYEOK
-11DB;N;HANGUL JONGSEONG MIEUM-RIEUL
-11DC;N;HANGUL JONGSEONG MIEUM-PIEUP
-11DD;N;HANGUL JONGSEONG MIEUM-SIOS
-11DE;N;HANGUL JONGSEONG MIEUM-SSANGSIOS
-11DF;N;HANGUL JONGSEONG MIEUM-PANSIOS
-11E0;N;HANGUL JONGSEONG MIEUM-CHIEUCH
-11E1;N;HANGUL JONGSEONG MIEUM-HIEUH
-11E2;N;HANGUL JONGSEONG KAPYEOUNMIEUM
-11E3;N;HANGUL JONGSEONG PIEUP-RIEUL
-11E4;N;HANGUL JONGSEONG PIEUP-PHIEUPH
-11E5;N;HANGUL JONGSEONG PIEUP-HIEUH
-11E6;N;HANGUL JONGSEONG KAPYEOUNPIEUP
-11E7;N;HANGUL JONGSEONG SIOS-KIYEOK
-11E8;N;HANGUL JONGSEONG SIOS-TIKEUT
-11E9;N;HANGUL JONGSEONG SIOS-RIEUL
-11EA;N;HANGUL JONGSEONG SIOS-PIEUP
-11EB;N;HANGUL JONGSEONG PANSIOS
-11EC;N;HANGUL JONGSEONG IEUNG-KIYEOK
-11ED;N;HANGUL JONGSEONG IEUNG-SSANGKIYEOK
-11EE;N;HANGUL JONGSEONG SSANGIEUNG
-11EF;N;HANGUL JONGSEONG IEUNG-KHIEUKH
-11F0;N;HANGUL JONGSEONG YESIEUNG
-11F1;N;HANGUL JONGSEONG YESIEUNG-SIOS
-11F2;N;HANGUL JONGSEONG YESIEUNG-PANSIOS
-11F3;N;HANGUL JONGSEONG PHIEUPH-PIEUP
-11F4;N;HANGUL JONGSEONG KAPYEOUNPHIEUPH
-11F5;N;HANGUL JONGSEONG HIEUH-NIEUN
-11F6;N;HANGUL JONGSEONG HIEUH-RIEUL
-11F7;N;HANGUL JONGSEONG HIEUH-MIEUM
-11F8;N;HANGUL JONGSEONG HIEUH-PIEUP
-11F9;N;HANGUL JONGSEONG YEORINHIEUH
-1200;N;ETHIOPIC SYLLABLE HA
-1201;N;ETHIOPIC SYLLABLE HU
-1202;N;ETHIOPIC SYLLABLE HI
-1203;N;ETHIOPIC SYLLABLE HAA
-1204;N;ETHIOPIC SYLLABLE HEE
-1205;N;ETHIOPIC SYLLABLE HE
-1206;N;ETHIOPIC SYLLABLE HO
-1208;N;ETHIOPIC SYLLABLE LA
-1209;N;ETHIOPIC SYLLABLE LU
-120A;N;ETHIOPIC SYLLABLE LI
-120B;N;ETHIOPIC SYLLABLE LAA
-120C;N;ETHIOPIC SYLLABLE LEE
-120D;N;ETHIOPIC SYLLABLE LE
-120E;N;ETHIOPIC SYLLABLE LO
-120F;N;ETHIOPIC SYLLABLE LWA
-1210;N;ETHIOPIC SYLLABLE HHA
-1211;N;ETHIOPIC SYLLABLE HHU
-1212;N;ETHIOPIC SYLLABLE HHI
-1213;N;ETHIOPIC SYLLABLE HHAA
-1214;N;ETHIOPIC SYLLABLE HHEE
-1215;N;ETHIOPIC SYLLABLE HHE
-1216;N;ETHIOPIC SYLLABLE HHO
-1217;N;ETHIOPIC SYLLABLE HHWA
-1218;N;ETHIOPIC SYLLABLE MA
-1219;N;ETHIOPIC SYLLABLE MU
-121A;N;ETHIOPIC SYLLABLE MI
-121B;N;ETHIOPIC SYLLABLE MAA
-121C;N;ETHIOPIC SYLLABLE MEE
-121D;N;ETHIOPIC SYLLABLE ME
-121E;N;ETHIOPIC SYLLABLE MO
-121F;N;ETHIOPIC SYLLABLE MWA
-1220;N;ETHIOPIC SYLLABLE SZA
-1221;N;ETHIOPIC SYLLABLE SZU
-1222;N;ETHIOPIC SYLLABLE SZI
-1223;N;ETHIOPIC SYLLABLE SZAA
-1224;N;ETHIOPIC SYLLABLE SZEE
-1225;N;ETHIOPIC SYLLABLE SZE
-1226;N;ETHIOPIC SYLLABLE SZO
-1227;N;ETHIOPIC SYLLABLE SZWA
-1228;N;ETHIOPIC SYLLABLE RA
-1229;N;ETHIOPIC SYLLABLE RU
-122A;N;ETHIOPIC SYLLABLE RI
-122B;N;ETHIOPIC SYLLABLE RAA
-122C;N;ETHIOPIC SYLLABLE REE
-122D;N;ETHIOPIC SYLLABLE RE
-122E;N;ETHIOPIC SYLLABLE RO
-122F;N;ETHIOPIC SYLLABLE RWA
-1230;N;ETHIOPIC SYLLABLE SA
-1231;N;ETHIOPIC SYLLABLE SU
-1232;N;ETHIOPIC SYLLABLE SI
-1233;N;ETHIOPIC SYLLABLE SAA
-1234;N;ETHIOPIC SYLLABLE SEE
-1235;N;ETHIOPIC SYLLABLE SE
-1236;N;ETHIOPIC SYLLABLE SO
-1237;N;ETHIOPIC SYLLABLE SWA
-1238;N;ETHIOPIC SYLLABLE SHA
-1239;N;ETHIOPIC SYLLABLE SHU
-123A;N;ETHIOPIC SYLLABLE SHI
-123B;N;ETHIOPIC SYLLABLE SHAA
-123C;N;ETHIOPIC SYLLABLE SHEE
-123D;N;ETHIOPIC SYLLABLE SHE
-123E;N;ETHIOPIC SYLLABLE SHO
-123F;N;ETHIOPIC SYLLABLE SHWA
-1240;N;ETHIOPIC SYLLABLE QA
-1241;N;ETHIOPIC SYLLABLE QU
-1242;N;ETHIOPIC SYLLABLE QI
-1243;N;ETHIOPIC SYLLABLE QAA
-1244;N;ETHIOPIC SYLLABLE QEE
-1245;N;ETHIOPIC SYLLABLE QE
-1246;N;ETHIOPIC SYLLABLE QO
-1248;N;ETHIOPIC SYLLABLE QWA
-124A;N;ETHIOPIC SYLLABLE QWI
-124B;N;ETHIOPIC SYLLABLE QWAA
-124C;N;ETHIOPIC SYLLABLE QWEE
-124D;N;ETHIOPIC SYLLABLE QWE
-1250;N;ETHIOPIC SYLLABLE QHA
-1251;N;ETHIOPIC SYLLABLE QHU
-1252;N;ETHIOPIC SYLLABLE QHI
-1253;N;ETHIOPIC SYLLABLE QHAA
-1254;N;ETHIOPIC SYLLABLE QHEE
-1255;N;ETHIOPIC SYLLABLE QHE
-1256;N;ETHIOPIC SYLLABLE QHO
-1258;N;ETHIOPIC SYLLABLE QHWA
-125A;N;ETHIOPIC SYLLABLE QHWI
-125B;N;ETHIOPIC SYLLABLE QHWAA
-125C;N;ETHIOPIC SYLLABLE QHWEE
-125D;N;ETHIOPIC SYLLABLE QHWE
-1260;N;ETHIOPIC SYLLABLE BA
-1261;N;ETHIOPIC SYLLABLE BU
-1262;N;ETHIOPIC SYLLABLE BI
-1263;N;ETHIOPIC SYLLABLE BAA
-1264;N;ETHIOPIC SYLLABLE BEE
-1265;N;ETHIOPIC SYLLABLE BE
-1266;N;ETHIOPIC SYLLABLE BO
-1267;N;ETHIOPIC SYLLABLE BWA
-1268;N;ETHIOPIC SYLLABLE VA
-1269;N;ETHIOPIC SYLLABLE VU
-126A;N;ETHIOPIC SYLLABLE VI
-126B;N;ETHIOPIC SYLLABLE VAA
-126C;N;ETHIOPIC SYLLABLE VEE
-126D;N;ETHIOPIC SYLLABLE VE
-126E;N;ETHIOPIC SYLLABLE VO
-126F;N;ETHIOPIC SYLLABLE VWA
-1270;N;ETHIOPIC SYLLABLE TA
-1271;N;ETHIOPIC SYLLABLE TU
-1272;N;ETHIOPIC SYLLABLE TI
-1273;N;ETHIOPIC SYLLABLE TAA
-1274;N;ETHIOPIC SYLLABLE TEE
-1275;N;ETHIOPIC SYLLABLE TE
-1276;N;ETHIOPIC SYLLABLE TO
-1277;N;ETHIOPIC SYLLABLE TWA
-1278;N;ETHIOPIC SYLLABLE CA
-1279;N;ETHIOPIC SYLLABLE CU
-127A;N;ETHIOPIC SYLLABLE CI
-127B;N;ETHIOPIC SYLLABLE CAA
-127C;N;ETHIOPIC SYLLABLE CEE
-127D;N;ETHIOPIC SYLLABLE CE
-127E;N;ETHIOPIC SYLLABLE CO
-127F;N;ETHIOPIC SYLLABLE CWA
-1280;N;ETHIOPIC SYLLABLE XA
-1281;N;ETHIOPIC SYLLABLE XU
-1282;N;ETHIOPIC SYLLABLE XI
-1283;N;ETHIOPIC SYLLABLE XAA
-1284;N;ETHIOPIC SYLLABLE XEE
-1285;N;ETHIOPIC SYLLABLE XE
-1286;N;ETHIOPIC SYLLABLE XO
-1288;N;ETHIOPIC SYLLABLE XWA
-128A;N;ETHIOPIC SYLLABLE XWI
-128B;N;ETHIOPIC SYLLABLE XWAA
-128C;N;ETHIOPIC SYLLABLE XWEE
-128D;N;ETHIOPIC SYLLABLE XWE
-1290;N;ETHIOPIC SYLLABLE NA
-1291;N;ETHIOPIC SYLLABLE NU
-1292;N;ETHIOPIC SYLLABLE NI
-1293;N;ETHIOPIC SYLLABLE NAA
-1294;N;ETHIOPIC SYLLABLE NEE
-1295;N;ETHIOPIC SYLLABLE NE
-1296;N;ETHIOPIC SYLLABLE NO
-1297;N;ETHIOPIC SYLLABLE NWA
-1298;N;ETHIOPIC SYLLABLE NYA
-1299;N;ETHIOPIC SYLLABLE NYU
-129A;N;ETHIOPIC SYLLABLE NYI
-129B;N;ETHIOPIC SYLLABLE NYAA
-129C;N;ETHIOPIC SYLLABLE NYEE
-129D;N;ETHIOPIC SYLLABLE NYE
-129E;N;ETHIOPIC SYLLABLE NYO
-129F;N;ETHIOPIC SYLLABLE NYWA
-12A0;N;ETHIOPIC SYLLABLE GLOTTAL A
-12A1;N;ETHIOPIC SYLLABLE GLOTTAL U
-12A2;N;ETHIOPIC SYLLABLE GLOTTAL I
-12A3;N;ETHIOPIC SYLLABLE GLOTTAL AA
-12A4;N;ETHIOPIC SYLLABLE GLOTTAL EE
-12A5;N;ETHIOPIC SYLLABLE GLOTTAL E
-12A6;N;ETHIOPIC SYLLABLE GLOTTAL O
-12A7;N;ETHIOPIC SYLLABLE GLOTTAL WA
-12A8;N;ETHIOPIC SYLLABLE KA
-12A9;N;ETHIOPIC SYLLABLE KU
-12AA;N;ETHIOPIC SYLLABLE KI
-12AB;N;ETHIOPIC SYLLABLE KAA
-12AC;N;ETHIOPIC SYLLABLE KEE
-12AD;N;ETHIOPIC SYLLABLE KE
-12AE;N;ETHIOPIC SYLLABLE KO
-12B0;N;ETHIOPIC SYLLABLE KWA
-12B2;N;ETHIOPIC SYLLABLE KWI
-12B3;N;ETHIOPIC SYLLABLE KWAA
-12B4;N;ETHIOPIC SYLLABLE KWEE
-12B5;N;ETHIOPIC SYLLABLE KWE
-12B8;N;ETHIOPIC SYLLABLE KXA
-12B9;N;ETHIOPIC SYLLABLE KXU
-12BA;N;ETHIOPIC SYLLABLE KXI
-12BB;N;ETHIOPIC SYLLABLE KXAA
-12BC;N;ETHIOPIC SYLLABLE KXEE
-12BD;N;ETHIOPIC SYLLABLE KXE
-12BE;N;ETHIOPIC SYLLABLE KXO
-12C0;N;ETHIOPIC SYLLABLE KXWA
-12C2;N;ETHIOPIC SYLLABLE KXWI
-12C3;N;ETHIOPIC SYLLABLE KXWAA
-12C4;N;ETHIOPIC SYLLABLE KXWEE
-12C5;N;ETHIOPIC SYLLABLE KXWE
-12C8;N;ETHIOPIC SYLLABLE WA
-12C9;N;ETHIOPIC SYLLABLE WU
-12CA;N;ETHIOPIC SYLLABLE WI
-12CB;N;ETHIOPIC SYLLABLE WAA
-12CC;N;ETHIOPIC SYLLABLE WEE
-12CD;N;ETHIOPIC SYLLABLE WE
-12CE;N;ETHIOPIC SYLLABLE WO
-12D0;N;ETHIOPIC SYLLABLE PHARYNGEAL A
-12D1;N;ETHIOPIC SYLLABLE PHARYNGEAL U
-12D2;N;ETHIOPIC SYLLABLE PHARYNGEAL I
-12D3;N;ETHIOPIC SYLLABLE PHARYNGEAL AA
-12D4;N;ETHIOPIC SYLLABLE PHARYNGEAL EE
-12D5;N;ETHIOPIC SYLLABLE PHARYNGEAL E
-12D6;N;ETHIOPIC SYLLABLE PHARYNGEAL O
-12D8;N;ETHIOPIC SYLLABLE ZA
-12D9;N;ETHIOPIC SYLLABLE ZU
-12DA;N;ETHIOPIC SYLLABLE ZI
-12DB;N;ETHIOPIC SYLLABLE ZAA
-12DC;N;ETHIOPIC SYLLABLE ZEE
-12DD;N;ETHIOPIC SYLLABLE ZE
-12DE;N;ETHIOPIC SYLLABLE ZO
-12DF;N;ETHIOPIC SYLLABLE ZWA
-12E0;N;ETHIOPIC SYLLABLE ZHA
-12E1;N;ETHIOPIC SYLLABLE ZHU
-12E2;N;ETHIOPIC SYLLABLE ZHI
-12E3;N;ETHIOPIC SYLLABLE ZHAA
-12E4;N;ETHIOPIC SYLLABLE ZHEE
-12E5;N;ETHIOPIC SYLLABLE ZHE
-12E6;N;ETHIOPIC SYLLABLE ZHO
-12E7;N;ETHIOPIC SYLLABLE ZHWA
-12E8;N;ETHIOPIC SYLLABLE YA
-12E9;N;ETHIOPIC SYLLABLE YU
-12EA;N;ETHIOPIC SYLLABLE YI
-12EB;N;ETHIOPIC SYLLABLE YAA
-12EC;N;ETHIOPIC SYLLABLE YEE
-12ED;N;ETHIOPIC SYLLABLE YE
-12EE;N;ETHIOPIC SYLLABLE YO
-12F0;N;ETHIOPIC SYLLABLE DA
-12F1;N;ETHIOPIC SYLLABLE DU
-12F2;N;ETHIOPIC SYLLABLE DI
-12F3;N;ETHIOPIC SYLLABLE DAA
-12F4;N;ETHIOPIC SYLLABLE DEE
-12F5;N;ETHIOPIC SYLLABLE DE
-12F6;N;ETHIOPIC SYLLABLE DO
-12F7;N;ETHIOPIC SYLLABLE DWA
-12F8;N;ETHIOPIC SYLLABLE DDA
-12F9;N;ETHIOPIC SYLLABLE DDU
-12FA;N;ETHIOPIC SYLLABLE DDI
-12FB;N;ETHIOPIC SYLLABLE DDAA
-12FC;N;ETHIOPIC SYLLABLE DDEE
-12FD;N;ETHIOPIC SYLLABLE DDE
-12FE;N;ETHIOPIC SYLLABLE DDO
-12FF;N;ETHIOPIC SYLLABLE DDWA
-1300;N;ETHIOPIC SYLLABLE JA
-1301;N;ETHIOPIC SYLLABLE JU
-1302;N;ETHIOPIC SYLLABLE JI
-1303;N;ETHIOPIC SYLLABLE JAA
-1304;N;ETHIOPIC SYLLABLE JEE
-1305;N;ETHIOPIC SYLLABLE JE
-1306;N;ETHIOPIC SYLLABLE JO
-1307;N;ETHIOPIC SYLLABLE JWA
-1308;N;ETHIOPIC SYLLABLE GA
-1309;N;ETHIOPIC SYLLABLE GU
-130A;N;ETHIOPIC SYLLABLE GI
-130B;N;ETHIOPIC SYLLABLE GAA
-130C;N;ETHIOPIC SYLLABLE GEE
-130D;N;ETHIOPIC SYLLABLE GE
-130E;N;ETHIOPIC SYLLABLE GO
-1310;N;ETHIOPIC SYLLABLE GWA
-1312;N;ETHIOPIC SYLLABLE GWI
-1313;N;ETHIOPIC SYLLABLE GWAA
-1314;N;ETHIOPIC SYLLABLE GWEE
-1315;N;ETHIOPIC SYLLABLE GWE
-1318;N;ETHIOPIC SYLLABLE GGA
-1319;N;ETHIOPIC SYLLABLE GGU
-131A;N;ETHIOPIC SYLLABLE GGI
-131B;N;ETHIOPIC SYLLABLE GGAA
-131C;N;ETHIOPIC SYLLABLE GGEE
-131D;N;ETHIOPIC SYLLABLE GGE
-131E;N;ETHIOPIC SYLLABLE GGO
-1320;N;ETHIOPIC SYLLABLE THA
-1321;N;ETHIOPIC SYLLABLE THU
-1322;N;ETHIOPIC SYLLABLE THI
-1323;N;ETHIOPIC SYLLABLE THAA
-1324;N;ETHIOPIC SYLLABLE THEE
-1325;N;ETHIOPIC SYLLABLE THE
-1326;N;ETHIOPIC SYLLABLE THO
-1327;N;ETHIOPIC SYLLABLE THWA
-1328;N;ETHIOPIC SYLLABLE CHA
-1329;N;ETHIOPIC SYLLABLE CHU
-132A;N;ETHIOPIC SYLLABLE CHI
-132B;N;ETHIOPIC SYLLABLE CHAA
-132C;N;ETHIOPIC SYLLABLE CHEE
-132D;N;ETHIOPIC SYLLABLE CHE
-132E;N;ETHIOPIC SYLLABLE CHO
-132F;N;ETHIOPIC SYLLABLE CHWA
-1330;N;ETHIOPIC SYLLABLE PHA
-1331;N;ETHIOPIC SYLLABLE PHU
-1332;N;ETHIOPIC SYLLABLE PHI
-1333;N;ETHIOPIC SYLLABLE PHAA
-1334;N;ETHIOPIC SYLLABLE PHEE
-1335;N;ETHIOPIC SYLLABLE PHE
-1336;N;ETHIOPIC SYLLABLE PHO
-1337;N;ETHIOPIC SYLLABLE PHWA
-1338;N;ETHIOPIC SYLLABLE TSA
-1339;N;ETHIOPIC SYLLABLE TSU
-133A;N;ETHIOPIC SYLLABLE TSI
-133B;N;ETHIOPIC SYLLABLE TSAA
-133C;N;ETHIOPIC SYLLABLE TSEE
-133D;N;ETHIOPIC SYLLABLE TSE
-133E;N;ETHIOPIC SYLLABLE TSO
-133F;N;ETHIOPIC SYLLABLE TSWA
-1340;N;ETHIOPIC SYLLABLE TZA
-1341;N;ETHIOPIC SYLLABLE TZU
-1342;N;ETHIOPIC SYLLABLE TZI
-1343;N;ETHIOPIC SYLLABLE TZAA
-1344;N;ETHIOPIC SYLLABLE TZEE
-1345;N;ETHIOPIC SYLLABLE TZE
-1346;N;ETHIOPIC SYLLABLE TZO
-1348;N;ETHIOPIC SYLLABLE FA
-1349;N;ETHIOPIC SYLLABLE FU
-134A;N;ETHIOPIC SYLLABLE FI
-134B;N;ETHIOPIC SYLLABLE FAA
-134C;N;ETHIOPIC SYLLABLE FEE
-134D;N;ETHIOPIC SYLLABLE FE
-134E;N;ETHIOPIC SYLLABLE FO
-134F;N;ETHIOPIC SYLLABLE FWA
-1350;N;ETHIOPIC SYLLABLE PA
-1351;N;ETHIOPIC SYLLABLE PU
-1352;N;ETHIOPIC SYLLABLE PI
-1353;N;ETHIOPIC SYLLABLE PAA
-1354;N;ETHIOPIC SYLLABLE PEE
-1355;N;ETHIOPIC SYLLABLE PE
-1356;N;ETHIOPIC SYLLABLE PO
-1357;N;ETHIOPIC SYLLABLE PWA
-1358;N;ETHIOPIC SYLLABLE RYA
-1359;N;ETHIOPIC SYLLABLE MYA
-135A;N;ETHIOPIC SYLLABLE FYA
-1361;N;ETHIOPIC WORDSPACE
-1362;N;ETHIOPIC FULL STOP
-1363;N;ETHIOPIC COMMA
-1364;N;ETHIOPIC SEMICOLON
-1365;N;ETHIOPIC COLON
-1366;N;ETHIOPIC PREFACE COLON
-1367;N;ETHIOPIC QUESTION MARK
-1368;N;ETHIOPIC PARAGRAPH SEPARATOR
-1369;N;ETHIOPIC DIGIT ONE
-136A;N;ETHIOPIC DIGIT TWO
-136B;N;ETHIOPIC DIGIT THREE
-136C;N;ETHIOPIC DIGIT FOUR
-136D;N;ETHIOPIC DIGIT FIVE
-136E;N;ETHIOPIC DIGIT SIX
-136F;N;ETHIOPIC DIGIT SEVEN
-1370;N;ETHIOPIC DIGIT EIGHT
-1371;N;ETHIOPIC DIGIT NINE
-1372;N;ETHIOPIC NUMBER TEN
-1373;N;ETHIOPIC NUMBER TWENTY
-1374;N;ETHIOPIC NUMBER THIRTY
-1375;N;ETHIOPIC NUMBER FORTY
-1376;N;ETHIOPIC NUMBER FIFTY
-1377;N;ETHIOPIC NUMBER SIXTY
-1378;N;ETHIOPIC NUMBER SEVENTY
-1379;N;ETHIOPIC NUMBER EIGHTY
-137A;N;ETHIOPIC NUMBER NINETY
-137B;N;ETHIOPIC NUMBER HUNDRED
-137C;N;ETHIOPIC NUMBER TEN THOUSAND
-13A0;N;CHEROKEE LETTER A
-13A1;N;CHEROKEE LETTER E
-13A2;N;CHEROKEE LETTER I
-13A3;N;CHEROKEE LETTER O
-13A4;N;CHEROKEE LETTER U
-13A5;N;CHEROKEE LETTER V
-13A6;N;CHEROKEE LETTER GA
-13A7;N;CHEROKEE LETTER KA
-13A8;N;CHEROKEE LETTER GE
-13A9;N;CHEROKEE LETTER GI
-13AA;N;CHEROKEE LETTER GO
-13AB;N;CHEROKEE LETTER GU
-13AC;N;CHEROKEE LETTER GV
-13AD;N;CHEROKEE LETTER HA
-13AE;N;CHEROKEE LETTER HE
-13AF;N;CHEROKEE LETTER HI
-13B0;N;CHEROKEE LETTER HO
-13B1;N;CHEROKEE LETTER HU
-13B2;N;CHEROKEE LETTER HV
-13B3;N;CHEROKEE LETTER LA
-13B4;N;CHEROKEE LETTER LE
-13B5;N;CHEROKEE LETTER LI
-13B6;N;CHEROKEE LETTER LO
-13B7;N;CHEROKEE LETTER LU
-13B8;N;CHEROKEE LETTER LV
-13B9;N;CHEROKEE LETTER MA
-13BA;N;CHEROKEE LETTER ME
-13BB;N;CHEROKEE LETTER MI
-13BC;N;CHEROKEE LETTER MO
-13BD;N;CHEROKEE LETTER MU
-13BE;N;CHEROKEE LETTER NA
-13BF;N;CHEROKEE LETTER HNA
-13C0;N;CHEROKEE LETTER NAH
-13C1;N;CHEROKEE LETTER NE
-13C2;N;CHEROKEE LETTER NI
-13C3;N;CHEROKEE LETTER NO
-13C4;N;CHEROKEE LETTER NU
-13C5;N;CHEROKEE LETTER NV
-13C6;N;CHEROKEE LETTER QUA
-13C7;N;CHEROKEE LETTER QUE
-13C8;N;CHEROKEE LETTER QUI
-13C9;N;CHEROKEE LETTER QUO
-13CA;N;CHEROKEE LETTER QUU
-13CB;N;CHEROKEE LETTER QUV
-13CC;N;CHEROKEE LETTER SA
-13CD;N;CHEROKEE LETTER S
-13CE;N;CHEROKEE LETTER SE
-13CF;N;CHEROKEE LETTER SI
-13D0;N;CHEROKEE LETTER SO
-13D1;N;CHEROKEE LETTER SU
-13D2;N;CHEROKEE LETTER SV
-13D3;N;CHEROKEE LETTER DA
-13D4;N;CHEROKEE LETTER TA
-13D5;N;CHEROKEE LETTER DE
-13D6;N;CHEROKEE LETTER TE
-13D7;N;CHEROKEE LETTER DI
-13D8;N;CHEROKEE LETTER TI
-13D9;N;CHEROKEE LETTER DO
-13DA;N;CHEROKEE LETTER DU
-13DB;N;CHEROKEE LETTER DV
-13DC;N;CHEROKEE LETTER DLA
-13DD;N;CHEROKEE LETTER TLA
-13DE;N;CHEROKEE LETTER TLE
-13DF;N;CHEROKEE LETTER TLI
-13E0;N;CHEROKEE LETTER TLO
-13E1;N;CHEROKEE LETTER TLU
-13E2;N;CHEROKEE LETTER TLV
-13E3;N;CHEROKEE LETTER TSA
-13E4;N;CHEROKEE LETTER TSE
-13E5;N;CHEROKEE LETTER TSI
-13E6;N;CHEROKEE LETTER TSO
-13E7;N;CHEROKEE LETTER TSU
-13E8;N;CHEROKEE LETTER TSV
-13E9;N;CHEROKEE LETTER WA
-13EA;N;CHEROKEE LETTER WE
-13EB;N;CHEROKEE LETTER WI
-13EC;N;CHEROKEE LETTER WO
-13ED;N;CHEROKEE LETTER WU
-13EE;N;CHEROKEE LETTER WV
-13EF;N;CHEROKEE LETTER YA
-13F0;N;CHEROKEE LETTER YE
-13F1;N;CHEROKEE LETTER YI
-13F2;N;CHEROKEE LETTER YO
-13F3;N;CHEROKEE LETTER YU
-13F4;N;CHEROKEE LETTER YV
-1401;N;CANADIAN SYLLABICS E
-1402;N;CANADIAN SYLLABICS AAI
-1403;N;CANADIAN SYLLABICS I
-1404;N;CANADIAN SYLLABICS II
-1405;N;CANADIAN SYLLABICS O
-1406;N;CANADIAN SYLLABICS OO
-1407;N;CANADIAN SYLLABICS Y-CREE OO
-1408;N;CANADIAN SYLLABICS CARRIER EE
-1409;N;CANADIAN SYLLABICS CARRIER I
-140A;N;CANADIAN SYLLABICS A
-140B;N;CANADIAN SYLLABICS AA
-140C;N;CANADIAN SYLLABICS WE
-140D;N;CANADIAN SYLLABICS WEST-CREE WE
-140E;N;CANADIAN SYLLABICS WI
-140F;N;CANADIAN SYLLABICS WEST-CREE WI
-1410;N;CANADIAN SYLLABICS WII
-1411;N;CANADIAN SYLLABICS WEST-CREE WII
-1412;N;CANADIAN SYLLABICS WO
-1413;N;CANADIAN SYLLABICS WEST-CREE WO
-1414;N;CANADIAN SYLLABICS WOO
-1415;N;CANADIAN SYLLABICS WEST-CREE WOO
-1416;N;CANADIAN SYLLABICS NASKAPI WOO
-1417;N;CANADIAN SYLLABICS WA
-1418;N;CANADIAN SYLLABICS WEST-CREE WA
-1419;N;CANADIAN SYLLABICS WAA
-141A;N;CANADIAN SYLLABICS WEST-CREE WAA
-141B;N;CANADIAN SYLLABICS NASKAPI WAA
-141C;N;CANADIAN SYLLABICS AI
-141D;N;CANADIAN SYLLABICS Y-CREE W
-141E;N;CANADIAN SYLLABICS GLOTTAL STOP
-141F;N;CANADIAN SYLLABICS FINAL ACUTE
-1420;N;CANADIAN SYLLABICS FINAL GRAVE
-1421;N;CANADIAN SYLLABICS FINAL BOTTOM HALF RING
-1422;N;CANADIAN SYLLABICS FINAL TOP HALF RING
-1423;N;CANADIAN SYLLABICS FINAL RIGHT HALF RING
-1424;N;CANADIAN SYLLABICS FINAL RING
-1425;N;CANADIAN SYLLABICS FINAL DOUBLE ACUTE
-1426;N;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
-1427;N;CANADIAN SYLLABICS FINAL MIDDLE DOT
-1428;N;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
-1429;N;CANADIAN SYLLABICS FINAL PLUS
-142A;N;CANADIAN SYLLABICS FINAL DOWN TACK
-142B;N;CANADIAN SYLLABICS EN
-142C;N;CANADIAN SYLLABICS IN
-142D;N;CANADIAN SYLLABICS ON
-142E;N;CANADIAN SYLLABICS AN
-142F;N;CANADIAN SYLLABICS PE
-1430;N;CANADIAN SYLLABICS PAAI
-1431;N;CANADIAN SYLLABICS PI
-1432;N;CANADIAN SYLLABICS PII
-1433;N;CANADIAN SYLLABICS PO
-1434;N;CANADIAN SYLLABICS POO
-1435;N;CANADIAN SYLLABICS Y-CREE POO
-1436;N;CANADIAN SYLLABICS CARRIER HEE
-1437;N;CANADIAN SYLLABICS CARRIER HI
-1438;N;CANADIAN SYLLABICS PA
-1439;N;CANADIAN SYLLABICS PAA
-143A;N;CANADIAN SYLLABICS PWE
-143B;N;CANADIAN SYLLABICS WEST-CREE PWE
-143C;N;CANADIAN SYLLABICS PWI
-143D;N;CANADIAN SYLLABICS WEST-CREE PWI
-143E;N;CANADIAN SYLLABICS PWII
-143F;N;CANADIAN SYLLABICS WEST-CREE PWII
-1440;N;CANADIAN SYLLABICS PWO
-1441;N;CANADIAN SYLLABICS WEST-CREE PWO
-1442;N;CANADIAN SYLLABICS PWOO
-1443;N;CANADIAN SYLLABICS WEST-CREE PWOO
-1444;N;CANADIAN SYLLABICS PWA
-1445;N;CANADIAN SYLLABICS WEST-CREE PWA
-1446;N;CANADIAN SYLLABICS PWAA
-1447;N;CANADIAN SYLLABICS WEST-CREE PWAA
-1448;N;CANADIAN SYLLABICS Y-CREE PWAA
-1449;N;CANADIAN SYLLABICS P
-144A;N;CANADIAN SYLLABICS WEST-CREE P
-144B;N;CANADIAN SYLLABICS CARRIER H
-144C;N;CANADIAN SYLLABICS TE
-144D;N;CANADIAN SYLLABICS TAAI
-144E;N;CANADIAN SYLLABICS TI
-144F;N;CANADIAN SYLLABICS TII
-1450;N;CANADIAN SYLLABICS TO
-1451;N;CANADIAN SYLLABICS TOO
-1452;N;CANADIAN SYLLABICS Y-CREE TOO
-1453;N;CANADIAN SYLLABICS CARRIER DEE
-1454;N;CANADIAN SYLLABICS CARRIER DI
-1455;N;CANADIAN SYLLABICS TA
-1456;N;CANADIAN SYLLABICS TAA
-1457;N;CANADIAN SYLLABICS TWE
-1458;N;CANADIAN SYLLABICS WEST-CREE TWE
-1459;N;CANADIAN SYLLABICS TWI
-145A;N;CANADIAN SYLLABICS WEST-CREE TWI
-145B;N;CANADIAN SYLLABICS TWII
-145C;N;CANADIAN SYLLABICS WEST-CREE TWII
-145D;N;CANADIAN SYLLABICS TWO
-145E;N;CANADIAN SYLLABICS WEST-CREE TWO
-145F;N;CANADIAN SYLLABICS TWOO
-1460;N;CANADIAN SYLLABICS WEST-CREE TWOO
-1461;N;CANADIAN SYLLABICS TWA
-1462;N;CANADIAN SYLLABICS WEST-CREE TWA
-1463;N;CANADIAN SYLLABICS TWAA
-1464;N;CANADIAN SYLLABICS WEST-CREE TWAA
-1465;N;CANADIAN SYLLABICS NASKAPI TWAA
-1466;N;CANADIAN SYLLABICS T
-1467;N;CANADIAN SYLLABICS TTE
-1468;N;CANADIAN SYLLABICS TTI
-1469;N;CANADIAN SYLLABICS TTO
-146A;N;CANADIAN SYLLABICS TTA
-146B;N;CANADIAN SYLLABICS KE
-146C;N;CANADIAN SYLLABICS KAAI
-146D;N;CANADIAN SYLLABICS KI
-146E;N;CANADIAN SYLLABICS KII
-146F;N;CANADIAN SYLLABICS KO
-1470;N;CANADIAN SYLLABICS KOO
-1471;N;CANADIAN SYLLABICS Y-CREE KOO
-1472;N;CANADIAN SYLLABICS KA
-1473;N;CANADIAN SYLLABICS KAA
-1474;N;CANADIAN SYLLABICS KWE
-1475;N;CANADIAN SYLLABICS WEST-CREE KWE
-1476;N;CANADIAN SYLLABICS KWI
-1477;N;CANADIAN SYLLABICS WEST-CREE KWI
-1478;N;CANADIAN SYLLABICS KWII
-1479;N;CANADIAN SYLLABICS WEST-CREE KWII
-147A;N;CANADIAN SYLLABICS KWO
-147B;N;CANADIAN SYLLABICS WEST-CREE KWO
-147C;N;CANADIAN SYLLABICS KWOO
-147D;N;CANADIAN SYLLABICS WEST-CREE KWOO
-147E;N;CANADIAN SYLLABICS KWA
-147F;N;CANADIAN SYLLABICS WEST-CREE KWA
-1480;N;CANADIAN SYLLABICS KWAA
-1481;N;CANADIAN SYLLABICS WEST-CREE KWAA
-1482;N;CANADIAN SYLLABICS NASKAPI KWAA
-1483;N;CANADIAN SYLLABICS K
-1484;N;CANADIAN SYLLABICS KW
-1485;N;CANADIAN SYLLABICS SOUTH-SLAVEY KEH
-1486;N;CANADIAN SYLLABICS SOUTH-SLAVEY KIH
-1487;N;CANADIAN SYLLABICS SOUTH-SLAVEY KOH
-1488;N;CANADIAN SYLLABICS SOUTH-SLAVEY KAH
-1489;N;CANADIAN SYLLABICS CE
-148A;N;CANADIAN SYLLABICS CAAI
-148B;N;CANADIAN SYLLABICS CI
-148C;N;CANADIAN SYLLABICS CII
-148D;N;CANADIAN SYLLABICS CO
-148E;N;CANADIAN SYLLABICS COO
-148F;N;CANADIAN SYLLABICS Y-CREE COO
-1490;N;CANADIAN SYLLABICS CA
-1491;N;CANADIAN SYLLABICS CAA
-1492;N;CANADIAN SYLLABICS CWE
-1493;N;CANADIAN SYLLABICS WEST-CREE CWE
-1494;N;CANADIAN SYLLABICS CWI
-1495;N;CANADIAN SYLLABICS WEST-CREE CWI
-1496;N;CANADIAN SYLLABICS CWII
-1497;N;CANADIAN SYLLABICS WEST-CREE CWII
-1498;N;CANADIAN SYLLABICS CWO
-1499;N;CANADIAN SYLLABICS WEST-CREE CWO
-149A;N;CANADIAN SYLLABICS CWOO
-149B;N;CANADIAN SYLLABICS WEST-CREE CWOO
-149C;N;CANADIAN SYLLABICS CWA
-149D;N;CANADIAN SYLLABICS WEST-CREE CWA
-149E;N;CANADIAN SYLLABICS CWAA
-149F;N;CANADIAN SYLLABICS WEST-CREE CWAA
-14A0;N;CANADIAN SYLLABICS NASKAPI CWAA
-14A1;N;CANADIAN SYLLABICS C
-14A2;N;CANADIAN SYLLABICS SAYISI TH
-14A3;N;CANADIAN SYLLABICS ME
-14A4;N;CANADIAN SYLLABICS MAAI
-14A5;N;CANADIAN SYLLABICS MI
-14A6;N;CANADIAN SYLLABICS MII
-14A7;N;CANADIAN SYLLABICS MO
-14A8;N;CANADIAN SYLLABICS MOO
-14A9;N;CANADIAN SYLLABICS Y-CREE MOO
-14AA;N;CANADIAN SYLLABICS MA
-14AB;N;CANADIAN SYLLABICS MAA
-14AC;N;CANADIAN SYLLABICS MWE
-14AD;N;CANADIAN SYLLABICS WEST-CREE MWE
-14AE;N;CANADIAN SYLLABICS MWI
-14AF;N;CANADIAN SYLLABICS WEST-CREE MWI
-14B0;N;CANADIAN SYLLABICS MWII
-14B1;N;CANADIAN SYLLABICS WEST-CREE MWII
-14B2;N;CANADIAN SYLLABICS MWO
-14B3;N;CANADIAN SYLLABICS WEST-CREE MWO
-14B4;N;CANADIAN SYLLABICS MWOO
-14B5;N;CANADIAN SYLLABICS WEST-CREE MWOO
-14B6;N;CANADIAN SYLLABICS MWA
-14B7;N;CANADIAN SYLLABICS WEST-CREE MWA
-14B8;N;CANADIAN SYLLABICS MWAA
-14B9;N;CANADIAN SYLLABICS WEST-CREE MWAA
-14BA;N;CANADIAN SYLLABICS NASKAPI MWAA
-14BB;N;CANADIAN SYLLABICS M
-14BC;N;CANADIAN SYLLABICS WEST-CREE M
-14BD;N;CANADIAN SYLLABICS MH
-14BE;N;CANADIAN SYLLABICS ATHAPASCAN M
-14BF;N;CANADIAN SYLLABICS SAYISI M
-14C0;N;CANADIAN SYLLABICS NE
-14C1;N;CANADIAN SYLLABICS NAAI
-14C2;N;CANADIAN SYLLABICS NI
-14C3;N;CANADIAN SYLLABICS NII
-14C4;N;CANADIAN SYLLABICS NO
-14C5;N;CANADIAN SYLLABICS NOO
-14C6;N;CANADIAN SYLLABICS Y-CREE NOO
-14C7;N;CANADIAN SYLLABICS NA
-14C8;N;CANADIAN SYLLABICS NAA
-14C9;N;CANADIAN SYLLABICS NWE
-14CA;N;CANADIAN SYLLABICS WEST-CREE NWE
-14CB;N;CANADIAN SYLLABICS NWA
-14CC;N;CANADIAN SYLLABICS WEST-CREE NWA
-14CD;N;CANADIAN SYLLABICS NWAA
-14CE;N;CANADIAN SYLLABICS WEST-CREE NWAA
-14CF;N;CANADIAN SYLLABICS NASKAPI NWAA
-14D0;N;CANADIAN SYLLABICS N
-14D1;N;CANADIAN SYLLABICS CARRIER NG
-14D2;N;CANADIAN SYLLABICS NH
-14D3;N;CANADIAN SYLLABICS LE
-14D4;N;CANADIAN SYLLABICS LAAI
-14D5;N;CANADIAN SYLLABICS LI
-14D6;N;CANADIAN SYLLABICS LII
-14D7;N;CANADIAN SYLLABICS LO
-14D8;N;CANADIAN SYLLABICS LOO
-14D9;N;CANADIAN SYLLABICS Y-CREE LOO
-14DA;N;CANADIAN SYLLABICS LA
-14DB;N;CANADIAN SYLLABICS LAA
-14DC;N;CANADIAN SYLLABICS LWE
-14DD;N;CANADIAN SYLLABICS WEST-CREE LWE
-14DE;N;CANADIAN SYLLABICS LWI
-14DF;N;CANADIAN SYLLABICS WEST-CREE LWI
-14E0;N;CANADIAN SYLLABICS LWII
-14E1;N;CANADIAN SYLLABICS WEST-CREE LWII
-14E2;N;CANADIAN SYLLABICS LWO
-14E3;N;CANADIAN SYLLABICS WEST-CREE LWO
-14E4;N;CANADIAN SYLLABICS LWOO
-14E5;N;CANADIAN SYLLABICS WEST-CREE LWOO
-14E6;N;CANADIAN SYLLABICS LWA
-14E7;N;CANADIAN SYLLABICS WEST-CREE LWA
-14E8;N;CANADIAN SYLLABICS LWAA
-14E9;N;CANADIAN SYLLABICS WEST-CREE LWAA
-14EA;N;CANADIAN SYLLABICS L
-14EB;N;CANADIAN SYLLABICS WEST-CREE L
-14EC;N;CANADIAN SYLLABICS MEDIAL L
-14ED;N;CANADIAN SYLLABICS SE
-14EE;N;CANADIAN SYLLABICS SAAI
-14EF;N;CANADIAN SYLLABICS SI
-14F0;N;CANADIAN SYLLABICS SII
-14F1;N;CANADIAN SYLLABICS SO
-14F2;N;CANADIAN SYLLABICS SOO
-14F3;N;CANADIAN SYLLABICS Y-CREE SOO
-14F4;N;CANADIAN SYLLABICS SA
-14F5;N;CANADIAN SYLLABICS SAA
-14F6;N;CANADIAN SYLLABICS SWE
-14F7;N;CANADIAN SYLLABICS WEST-CREE SWE
-14F8;N;CANADIAN SYLLABICS SWI
-14F9;N;CANADIAN SYLLABICS WEST-CREE SWI
-14FA;N;CANADIAN SYLLABICS SWII
-14FB;N;CANADIAN SYLLABICS WEST-CREE SWII
-14FC;N;CANADIAN SYLLABICS SWO
-14FD;N;CANADIAN SYLLABICS WEST-CREE SWO
-14FE;N;CANADIAN SYLLABICS SWOO
-14FF;N;CANADIAN SYLLABICS WEST-CREE SWOO
-1500;N;CANADIAN SYLLABICS SWA
-1501;N;CANADIAN SYLLABICS WEST-CREE SWA
-1502;N;CANADIAN SYLLABICS SWAA
-1503;N;CANADIAN SYLLABICS WEST-CREE SWAA
-1504;N;CANADIAN SYLLABICS NASKAPI SWAA
-1505;N;CANADIAN SYLLABICS S
-1506;N;CANADIAN SYLLABICS ATHAPASCAN S
-1507;N;CANADIAN SYLLABICS SW
-1508;N;CANADIAN SYLLABICS BLACKFOOT S
-1509;N;CANADIAN SYLLABICS MOOSE-CREE SK
-150A;N;CANADIAN SYLLABICS NASKAPI SKW
-150B;N;CANADIAN SYLLABICS NASKAPI S-W
-150C;N;CANADIAN SYLLABICS NASKAPI SPWA
-150D;N;CANADIAN SYLLABICS NASKAPI STWA
-150E;N;CANADIAN SYLLABICS NASKAPI SKWA
-150F;N;CANADIAN SYLLABICS NASKAPI SCWA
-1510;N;CANADIAN SYLLABICS SHE
-1511;N;CANADIAN SYLLABICS SHI
-1512;N;CANADIAN SYLLABICS SHII
-1513;N;CANADIAN SYLLABICS SHO
-1514;N;CANADIAN SYLLABICS SHOO
-1515;N;CANADIAN SYLLABICS SHA
-1516;N;CANADIAN SYLLABICS SHAA
-1517;N;CANADIAN SYLLABICS SHWE
-1518;N;CANADIAN SYLLABICS WEST-CREE SHWE
-1519;N;CANADIAN SYLLABICS SHWI
-151A;N;CANADIAN SYLLABICS WEST-CREE SHWI
-151B;N;CANADIAN SYLLABICS SHWII
-151C;N;CANADIAN SYLLABICS WEST-CREE SHWII
-151D;N;CANADIAN SYLLABICS SHWO
-151E;N;CANADIAN SYLLABICS WEST-CREE SHWO
-151F;N;CANADIAN SYLLABICS SHWOO
-1520;N;CANADIAN SYLLABICS WEST-CREE SHWOO
-1521;N;CANADIAN SYLLABICS SHWA
-1522;N;CANADIAN SYLLABICS WEST-CREE SHWA
-1523;N;CANADIAN SYLLABICS SHWAA
-1524;N;CANADIAN SYLLABICS WEST-CREE SHWAA
-1525;N;CANADIAN SYLLABICS SH
-1526;N;CANADIAN SYLLABICS YE
-1527;N;CANADIAN SYLLABICS YAAI
-1528;N;CANADIAN SYLLABICS YI
-1529;N;CANADIAN SYLLABICS YII
-152A;N;CANADIAN SYLLABICS YO
-152B;N;CANADIAN SYLLABICS YOO
-152C;N;CANADIAN SYLLABICS Y-CREE YOO
-152D;N;CANADIAN SYLLABICS YA
-152E;N;CANADIAN SYLLABICS YAA
-152F;N;CANADIAN SYLLABICS YWE
-1530;N;CANADIAN SYLLABICS WEST-CREE YWE
-1531;N;CANADIAN SYLLABICS YWI
-1532;N;CANADIAN SYLLABICS WEST-CREE YWI
-1533;N;CANADIAN SYLLABICS YWII
-1534;N;CANADIAN SYLLABICS WEST-CREE YWII
-1535;N;CANADIAN SYLLABICS YWO
-1536;N;CANADIAN SYLLABICS WEST-CREE YWO
-1537;N;CANADIAN SYLLABICS YWOO
-1538;N;CANADIAN SYLLABICS WEST-CREE YWOO
-1539;N;CANADIAN SYLLABICS YWA
-153A;N;CANADIAN SYLLABICS WEST-CREE YWA
-153B;N;CANADIAN SYLLABICS YWAA
-153C;N;CANADIAN SYLLABICS WEST-CREE YWAA
-153D;N;CANADIAN SYLLABICS NASKAPI YWAA
-153E;N;CANADIAN SYLLABICS Y
-153F;N;CANADIAN SYLLABICS BIBLE-CREE Y
-1540;N;CANADIAN SYLLABICS WEST-CREE Y
-1541;N;CANADIAN SYLLABICS SAYISI YI
-1542;N;CANADIAN SYLLABICS RE
-1543;N;CANADIAN SYLLABICS R-CREE RE
-1544;N;CANADIAN SYLLABICS WEST-CREE LE
-1545;N;CANADIAN SYLLABICS RAAI
-1546;N;CANADIAN SYLLABICS RI
-1547;N;CANADIAN SYLLABICS RII
-1548;N;CANADIAN SYLLABICS RO
-1549;N;CANADIAN SYLLABICS ROO
-154A;N;CANADIAN SYLLABICS WEST-CREE LO
-154B;N;CANADIAN SYLLABICS RA
-154C;N;CANADIAN SYLLABICS RAA
-154D;N;CANADIAN SYLLABICS WEST-CREE LA
-154E;N;CANADIAN SYLLABICS RWAA
-154F;N;CANADIAN SYLLABICS WEST-CREE RWAA
-1550;N;CANADIAN SYLLABICS R
-1551;N;CANADIAN SYLLABICS WEST-CREE R
-1552;N;CANADIAN SYLLABICS MEDIAL R
-1553;N;CANADIAN SYLLABICS FE
-1554;N;CANADIAN SYLLABICS FAAI
-1555;N;CANADIAN SYLLABICS FI
-1556;N;CANADIAN SYLLABICS FII
-1557;N;CANADIAN SYLLABICS FO
-1558;N;CANADIAN SYLLABICS FOO
-1559;N;CANADIAN SYLLABICS FA
-155A;N;CANADIAN SYLLABICS FAA
-155B;N;CANADIAN SYLLABICS FWAA
-155C;N;CANADIAN SYLLABICS WEST-CREE FWAA
-155D;N;CANADIAN SYLLABICS F
-155E;N;CANADIAN SYLLABICS THE
-155F;N;CANADIAN SYLLABICS N-CREE THE
-1560;N;CANADIAN SYLLABICS THI
-1561;N;CANADIAN SYLLABICS N-CREE THI
-1562;N;CANADIAN SYLLABICS THII
-1563;N;CANADIAN SYLLABICS N-CREE THII
-1564;N;CANADIAN SYLLABICS THO
-1565;N;CANADIAN SYLLABICS THOO
-1566;N;CANADIAN SYLLABICS THA
-1567;N;CANADIAN SYLLABICS THAA
-1568;N;CANADIAN SYLLABICS THWAA
-1569;N;CANADIAN SYLLABICS WEST-CREE THWAA
-156A;N;CANADIAN SYLLABICS TH
-156B;N;CANADIAN SYLLABICS TTHE
-156C;N;CANADIAN SYLLABICS TTHI
-156D;N;CANADIAN SYLLABICS TTHO
-156E;N;CANADIAN SYLLABICS TTHA
-156F;N;CANADIAN SYLLABICS TTH
-1570;N;CANADIAN SYLLABICS TYE
-1571;N;CANADIAN SYLLABICS TYI
-1572;N;CANADIAN SYLLABICS TYO
-1573;N;CANADIAN SYLLABICS TYA
-1574;N;CANADIAN SYLLABICS NUNAVIK HE
-1575;N;CANADIAN SYLLABICS NUNAVIK HI
-1576;N;CANADIAN SYLLABICS NUNAVIK HII
-1577;N;CANADIAN SYLLABICS NUNAVIK HO
-1578;N;CANADIAN SYLLABICS NUNAVIK HOO
-1579;N;CANADIAN SYLLABICS NUNAVIK HA
-157A;N;CANADIAN SYLLABICS NUNAVIK HAA
-157B;N;CANADIAN SYLLABICS NUNAVIK H
-157C;N;CANADIAN SYLLABICS NUNAVUT H
-157D;N;CANADIAN SYLLABICS HK
-157E;N;CANADIAN SYLLABICS QAAI
-157F;N;CANADIAN SYLLABICS QI
-1580;N;CANADIAN SYLLABICS QII
-1581;N;CANADIAN SYLLABICS QO
-1582;N;CANADIAN SYLLABICS QOO
-1583;N;CANADIAN SYLLABICS QA
-1584;N;CANADIAN SYLLABICS QAA
-1585;N;CANADIAN SYLLABICS Q
-1586;N;CANADIAN SYLLABICS TLHE
-1587;N;CANADIAN SYLLABICS TLHI
-1588;N;CANADIAN SYLLABICS TLHO
-1589;N;CANADIAN SYLLABICS TLHA
-158A;N;CANADIAN SYLLABICS WEST-CREE RE
-158B;N;CANADIAN SYLLABICS WEST-CREE RI
-158C;N;CANADIAN SYLLABICS WEST-CREE RO
-158D;N;CANADIAN SYLLABICS WEST-CREE RA
-158E;N;CANADIAN SYLLABICS NGAAI
-158F;N;CANADIAN SYLLABICS NGI
-1590;N;CANADIAN SYLLABICS NGII
-1591;N;CANADIAN SYLLABICS NGO
-1592;N;CANADIAN SYLLABICS NGOO
-1593;N;CANADIAN SYLLABICS NGA
-1594;N;CANADIAN SYLLABICS NGAA
-1595;N;CANADIAN SYLLABICS NG
-1596;N;CANADIAN SYLLABICS NNG
-1597;N;CANADIAN SYLLABICS SAYISI SHE
-1598;N;CANADIAN SYLLABICS SAYISI SHI
-1599;N;CANADIAN SYLLABICS SAYISI SHO
-159A;N;CANADIAN SYLLABICS SAYISI SHA
-159B;N;CANADIAN SYLLABICS WOODS-CREE THE
-159C;N;CANADIAN SYLLABICS WOODS-CREE THI
-159D;N;CANADIAN SYLLABICS WOODS-CREE THO
-159E;N;CANADIAN SYLLABICS WOODS-CREE THA
-159F;N;CANADIAN SYLLABICS WOODS-CREE TH
-15A0;N;CANADIAN SYLLABICS LHI
-15A1;N;CANADIAN SYLLABICS LHII
-15A2;N;CANADIAN SYLLABICS LHO
-15A3;N;CANADIAN SYLLABICS LHOO
-15A4;N;CANADIAN SYLLABICS LHA
-15A5;N;CANADIAN SYLLABICS LHAA
-15A6;N;CANADIAN SYLLABICS LH
-15A7;N;CANADIAN SYLLABICS TH-CREE THE
-15A8;N;CANADIAN SYLLABICS TH-CREE THI
-15A9;N;CANADIAN SYLLABICS TH-CREE THII
-15AA;N;CANADIAN SYLLABICS TH-CREE THO
-15AB;N;CANADIAN SYLLABICS TH-CREE THOO
-15AC;N;CANADIAN SYLLABICS TH-CREE THA
-15AD;N;CANADIAN SYLLABICS TH-CREE THAA
-15AE;N;CANADIAN SYLLABICS TH-CREE TH
-15AF;N;CANADIAN SYLLABICS AIVILIK B
-15B0;N;CANADIAN SYLLABICS BLACKFOOT E
-15B1;N;CANADIAN SYLLABICS BLACKFOOT I
-15B2;N;CANADIAN SYLLABICS BLACKFOOT O
-15B3;N;CANADIAN SYLLABICS BLACKFOOT A
-15B4;N;CANADIAN SYLLABICS BLACKFOOT WE
-15B5;N;CANADIAN SYLLABICS BLACKFOOT WI
-15B6;N;CANADIAN SYLLABICS BLACKFOOT WO
-15B7;N;CANADIAN SYLLABICS BLACKFOOT WA
-15B8;N;CANADIAN SYLLABICS BLACKFOOT NE
-15B9;N;CANADIAN SYLLABICS BLACKFOOT NI
-15BA;N;CANADIAN SYLLABICS BLACKFOOT NO
-15BB;N;CANADIAN SYLLABICS BLACKFOOT NA
-15BC;N;CANADIAN SYLLABICS BLACKFOOT KE
-15BD;N;CANADIAN SYLLABICS BLACKFOOT KI
-15BE;N;CANADIAN SYLLABICS BLACKFOOT KO
-15BF;N;CANADIAN SYLLABICS BLACKFOOT KA
-15C0;N;CANADIAN SYLLABICS SAYISI HE
-15C1;N;CANADIAN SYLLABICS SAYISI HI
-15C2;N;CANADIAN SYLLABICS SAYISI HO
-15C3;N;CANADIAN SYLLABICS SAYISI HA
-15C4;N;CANADIAN SYLLABICS CARRIER GHU
-15C5;N;CANADIAN SYLLABICS CARRIER GHO
-15C6;N;CANADIAN SYLLABICS CARRIER GHE
-15C7;N;CANADIAN SYLLABICS CARRIER GHEE
-15C8;N;CANADIAN SYLLABICS CARRIER GHI
-15C9;N;CANADIAN SYLLABICS CARRIER GHA
-15CA;N;CANADIAN SYLLABICS CARRIER RU
-15CB;N;CANADIAN SYLLABICS CARRIER RO
-15CC;N;CANADIAN SYLLABICS CARRIER RE
-15CD;N;CANADIAN SYLLABICS CARRIER REE
-15CE;N;CANADIAN SYLLABICS CARRIER RI
-15CF;N;CANADIAN SYLLABICS CARRIER RA
-15D0;N;CANADIAN SYLLABICS CARRIER WU
-15D1;N;CANADIAN SYLLABICS CARRIER WO
-15D2;N;CANADIAN SYLLABICS CARRIER WE
-15D3;N;CANADIAN SYLLABICS CARRIER WEE
-15D4;N;CANADIAN SYLLABICS CARRIER WI
-15D5;N;CANADIAN SYLLABICS CARRIER WA
-15D6;N;CANADIAN SYLLABICS CARRIER HWU
-15D7;N;CANADIAN SYLLABICS CARRIER HWO
-15D8;N;CANADIAN SYLLABICS CARRIER HWE
-15D9;N;CANADIAN SYLLABICS CARRIER HWEE
-15DA;N;CANADIAN SYLLABICS CARRIER HWI
-15DB;N;CANADIAN SYLLABICS CARRIER HWA
-15DC;N;CANADIAN SYLLABICS CARRIER THU
-15DD;N;CANADIAN SYLLABICS CARRIER THO
-15DE;N;CANADIAN SYLLABICS CARRIER THE
-15DF;N;CANADIAN SYLLABICS CARRIER THEE
-15E0;N;CANADIAN SYLLABICS CARRIER THI
-15E1;N;CANADIAN SYLLABICS CARRIER THA
-15E2;N;CANADIAN SYLLABICS CARRIER TTU
-15E3;N;CANADIAN SYLLABICS CARRIER TTO
-15E4;N;CANADIAN SYLLABICS CARRIER TTE
-15E5;N;CANADIAN SYLLABICS CARRIER TTEE
-15E6;N;CANADIAN SYLLABICS CARRIER TTI
-15E7;N;CANADIAN SYLLABICS CARRIER TTA
-15E8;N;CANADIAN SYLLABICS CARRIER PU
-15E9;N;CANADIAN SYLLABICS CARRIER PO
-15EA;N;CANADIAN SYLLABICS CARRIER PE
-15EB;N;CANADIAN SYLLABICS CARRIER PEE
-15EC;N;CANADIAN SYLLABICS CARRIER PI
-15ED;N;CANADIAN SYLLABICS CARRIER PA
-15EE;N;CANADIAN SYLLABICS CARRIER P
-15EF;N;CANADIAN SYLLABICS CARRIER GU
-15F0;N;CANADIAN SYLLABICS CARRIER GO
-15F1;N;CANADIAN SYLLABICS CARRIER GE
-15F2;N;CANADIAN SYLLABICS CARRIER GEE
-15F3;N;CANADIAN SYLLABICS CARRIER GI
-15F4;N;CANADIAN SYLLABICS CARRIER GA
-15F5;N;CANADIAN SYLLABICS CARRIER KHU
-15F6;N;CANADIAN SYLLABICS CARRIER KHO
-15F7;N;CANADIAN SYLLABICS CARRIER KHE
-15F8;N;CANADIAN SYLLABICS CARRIER KHEE
-15F9;N;CANADIAN SYLLABICS CARRIER KHI
-15FA;N;CANADIAN SYLLABICS CARRIER KHA
-15FB;N;CANADIAN SYLLABICS CARRIER KKU
-15FC;N;CANADIAN SYLLABICS CARRIER KKO
-15FD;N;CANADIAN SYLLABICS CARRIER KKE
-15FE;N;CANADIAN SYLLABICS CARRIER KKEE
-15FF;N;CANADIAN SYLLABICS CARRIER KKI
-1600;N;CANADIAN SYLLABICS CARRIER KKA
-1601;N;CANADIAN SYLLABICS CARRIER KK
-1602;N;CANADIAN SYLLABICS CARRIER NU
-1603;N;CANADIAN SYLLABICS CARRIER NO
-1604;N;CANADIAN SYLLABICS CARRIER NE
-1605;N;CANADIAN SYLLABICS CARRIER NEE
-1606;N;CANADIAN SYLLABICS CARRIER NI
-1607;N;CANADIAN SYLLABICS CARRIER NA
-1608;N;CANADIAN SYLLABICS CARRIER MU
-1609;N;CANADIAN SYLLABICS CARRIER MO
-160A;N;CANADIAN SYLLABICS CARRIER ME
-160B;N;CANADIAN SYLLABICS CARRIER MEE
-160C;N;CANADIAN SYLLABICS CARRIER MI
-160D;N;CANADIAN SYLLABICS CARRIER MA
-160E;N;CANADIAN SYLLABICS CARRIER YU
-160F;N;CANADIAN SYLLABICS CARRIER YO
-1610;N;CANADIAN SYLLABICS CARRIER YE
-1611;N;CANADIAN SYLLABICS CARRIER YEE
-1612;N;CANADIAN SYLLABICS CARRIER YI
-1613;N;CANADIAN SYLLABICS CARRIER YA
-1614;N;CANADIAN SYLLABICS CARRIER JU
-1615;N;CANADIAN SYLLABICS SAYISI JU
-1616;N;CANADIAN SYLLABICS CARRIER JO
-1617;N;CANADIAN SYLLABICS CARRIER JE
-1618;N;CANADIAN SYLLABICS CARRIER JEE
-1619;N;CANADIAN SYLLABICS CARRIER JI
-161A;N;CANADIAN SYLLABICS SAYISI JI
-161B;N;CANADIAN SYLLABICS CARRIER JA
-161C;N;CANADIAN SYLLABICS CARRIER JJU
-161D;N;CANADIAN SYLLABICS CARRIER JJO
-161E;N;CANADIAN SYLLABICS CARRIER JJE
-161F;N;CANADIAN SYLLABICS CARRIER JJEE
-1620;N;CANADIAN SYLLABICS CARRIER JJI
-1621;N;CANADIAN SYLLABICS CARRIER JJA
-1622;N;CANADIAN SYLLABICS CARRIER LU
-1623;N;CANADIAN SYLLABICS CARRIER LO
-1624;N;CANADIAN SYLLABICS CARRIER LE
-1625;N;CANADIAN SYLLABICS CARRIER LEE
-1626;N;CANADIAN SYLLABICS CARRIER LI
-1627;N;CANADIAN SYLLABICS CARRIER LA
-1628;N;CANADIAN SYLLABICS CARRIER DLU
-1629;N;CANADIAN SYLLABICS CARRIER DLO
-162A;N;CANADIAN SYLLABICS CARRIER DLE
-162B;N;CANADIAN SYLLABICS CARRIER DLEE
-162C;N;CANADIAN SYLLABICS CARRIER DLI
-162D;N;CANADIAN SYLLABICS CARRIER DLA
-162E;N;CANADIAN SYLLABICS CARRIER LHU
-162F;N;CANADIAN SYLLABICS CARRIER LHO
-1630;N;CANADIAN SYLLABICS CARRIER LHE
-1631;N;CANADIAN SYLLABICS CARRIER LHEE
-1632;N;CANADIAN SYLLABICS CARRIER LHI
-1633;N;CANADIAN SYLLABICS CARRIER LHA
-1634;N;CANADIAN SYLLABICS CARRIER TLHU
-1635;N;CANADIAN SYLLABICS CARRIER TLHO
-1636;N;CANADIAN SYLLABICS CARRIER TLHE
-1637;N;CANADIAN SYLLABICS CARRIER TLHEE
-1638;N;CANADIAN SYLLABICS CARRIER TLHI
-1639;N;CANADIAN SYLLABICS CARRIER TLHA
-163A;N;CANADIAN SYLLABICS CARRIER TLU
-163B;N;CANADIAN SYLLABICS CARRIER TLO
-163C;N;CANADIAN SYLLABICS CARRIER TLE
-163D;N;CANADIAN SYLLABICS CARRIER TLEE
-163E;N;CANADIAN SYLLABICS CARRIER TLI
-163F;N;CANADIAN SYLLABICS CARRIER TLA
-1640;N;CANADIAN SYLLABICS CARRIER ZU
-1641;N;CANADIAN SYLLABICS CARRIER ZO
-1642;N;CANADIAN SYLLABICS CARRIER ZE
-1643;N;CANADIAN SYLLABICS CARRIER ZEE
-1644;N;CANADIAN SYLLABICS CARRIER ZI
-1645;N;CANADIAN SYLLABICS CARRIER ZA
-1646;N;CANADIAN SYLLABICS CARRIER Z
-1647;N;CANADIAN SYLLABICS CARRIER INITIAL Z
-1648;N;CANADIAN SYLLABICS CARRIER DZU
-1649;N;CANADIAN SYLLABICS CARRIER DZO
-164A;N;CANADIAN SYLLABICS CARRIER DZE
-164B;N;CANADIAN SYLLABICS CARRIER DZEE
-164C;N;CANADIAN SYLLABICS CARRIER DZI
-164D;N;CANADIAN SYLLABICS CARRIER DZA
-164E;N;CANADIAN SYLLABICS CARRIER SU
-164F;N;CANADIAN SYLLABICS CARRIER SO
-1650;N;CANADIAN SYLLABICS CARRIER SE
-1651;N;CANADIAN SYLLABICS CARRIER SEE
-1652;N;CANADIAN SYLLABICS CARRIER SI
-1653;N;CANADIAN SYLLABICS CARRIER SA
-1654;N;CANADIAN SYLLABICS CARRIER SHU
-1655;N;CANADIAN SYLLABICS CARRIER SHO
-1656;N;CANADIAN SYLLABICS CARRIER SHE
-1657;N;CANADIAN SYLLABICS CARRIER SHEE
-1658;N;CANADIAN SYLLABICS CARRIER SHI
-1659;N;CANADIAN SYLLABICS CARRIER SHA
-165A;N;CANADIAN SYLLABICS CARRIER SH
-165B;N;CANADIAN SYLLABICS CARRIER TSU
-165C;N;CANADIAN SYLLABICS CARRIER TSO
-165D;N;CANADIAN SYLLABICS CARRIER TSE
-165E;N;CANADIAN SYLLABICS CARRIER TSEE
-165F;N;CANADIAN SYLLABICS CARRIER TSI
-1660;N;CANADIAN SYLLABICS CARRIER TSA
-1661;N;CANADIAN SYLLABICS CARRIER CHU
-1662;N;CANADIAN SYLLABICS CARRIER CHO
-1663;N;CANADIAN SYLLABICS CARRIER CHE
-1664;N;CANADIAN SYLLABICS CARRIER CHEE
-1665;N;CANADIAN SYLLABICS CARRIER CHI
-1666;N;CANADIAN SYLLABICS CARRIER CHA
-1667;N;CANADIAN SYLLABICS CARRIER TTSU
-1668;N;CANADIAN SYLLABICS CARRIER TTSO
-1669;N;CANADIAN SYLLABICS CARRIER TTSE
-166A;N;CANADIAN SYLLABICS CARRIER TTSEE
-166B;N;CANADIAN SYLLABICS CARRIER TTSI
-166C;N;CANADIAN SYLLABICS CARRIER TTSA
-166D;N;CANADIAN SYLLABICS CHI SIGN
-166E;N;CANADIAN SYLLABICS FULL STOP
-166F;N;CANADIAN SYLLABICS QAI
-1670;N;CANADIAN SYLLABICS NGAI
-1671;N;CANADIAN SYLLABICS NNGI
-1672;N;CANADIAN SYLLABICS NNGII
-1673;N;CANADIAN SYLLABICS NNGO
-1674;N;CANADIAN SYLLABICS NNGOO
-1675;N;CANADIAN SYLLABICS NNGA
-1676;N;CANADIAN SYLLABICS NNGAA
-1680;N;OGHAM SPACE MARK
-1681;N;OGHAM LETTER BEITH
-1682;N;OGHAM LETTER LUIS
-1683;N;OGHAM LETTER FEARN
-1684;N;OGHAM LETTER SAIL
-1685;N;OGHAM LETTER NION
-1686;N;OGHAM LETTER UATH
-1687;N;OGHAM LETTER DAIR
-1688;N;OGHAM LETTER TINNE
-1689;N;OGHAM LETTER COLL
-168A;N;OGHAM LETTER CEIRT
-168B;N;OGHAM LETTER MUIN
-168C;N;OGHAM LETTER GORT
-168D;N;OGHAM LETTER NGEADAL
-168E;N;OGHAM LETTER STRAIF
-168F;N;OGHAM LETTER RUIS
-1690;N;OGHAM LETTER AILM
-1691;N;OGHAM LETTER ONN
-1692;N;OGHAM LETTER UR
-1693;N;OGHAM LETTER EADHADH
-1694;N;OGHAM LETTER IODHADH
-1695;N;OGHAM LETTER EABHADH
-1696;N;OGHAM LETTER OR
-1697;N;OGHAM LETTER UILLEANN
-1698;N;OGHAM LETTER IFIN
-1699;N;OGHAM LETTER EAMHANCHOLL
-169A;N;OGHAM LETTER PEITH
-169B;N;OGHAM FEATHER MARK
-169C;N;OGHAM REVERSED FEATHER MARK
-16A0;N;RUNIC LETTER FEHU FEOH FE F
-16A1;N;RUNIC LETTER V
-16A2;N;RUNIC LETTER URUZ UR U
-16A3;N;RUNIC LETTER YR
-16A4;N;RUNIC LETTER Y
-16A5;N;RUNIC LETTER W
-16A6;N;RUNIC LETTER THURISAZ THURS THORN
-16A7;N;RUNIC LETTER ETH
-16A8;N;RUNIC LETTER ANSUZ A
-16A9;N;RUNIC LETTER OS O
-16AA;N;RUNIC LETTER AC A
-16AB;N;RUNIC LETTER AESC
-16AC;N;RUNIC LETTER LONG-BRANCH-OSS O
-16AD;N;RUNIC LETTER SHORT-TWIG-OSS O
-16AE;N;RUNIC LETTER O
-16AF;N;RUNIC LETTER OE
-16B0;N;RUNIC LETTER ON
-16B1;N;RUNIC LETTER RAIDO RAD REID R
-16B2;N;RUNIC LETTER KAUNA
-16B3;N;RUNIC LETTER CEN
-16B4;N;RUNIC LETTER KAUN K
-16B5;N;RUNIC LETTER G
-16B6;N;RUNIC LETTER ENG
-16B7;N;RUNIC LETTER GEBO GYFU G
-16B8;N;RUNIC LETTER GAR
-16B9;N;RUNIC LETTER WUNJO WYNN W
-16BA;N;RUNIC LETTER HAGLAZ H
-16BB;N;RUNIC LETTER HAEGL H
-16BC;N;RUNIC LETTER LONG-BRANCH-HAGALL H
-16BD;N;RUNIC LETTER SHORT-TWIG-HAGALL H
-16BE;N;RUNIC LETTER NAUDIZ NYD NAUD N
-16BF;N;RUNIC LETTER SHORT-TWIG-NAUD N
-16C0;N;RUNIC LETTER DOTTED-N
-16C1;N;RUNIC LETTER ISAZ IS ISS I
-16C2;N;RUNIC LETTER E
-16C3;N;RUNIC LETTER JERAN J
-16C4;N;RUNIC LETTER GER
-16C5;N;RUNIC LETTER LONG-BRANCH-AR AE
-16C6;N;RUNIC LETTER SHORT-TWIG-AR A
-16C7;N;RUNIC LETTER IWAZ EOH
-16C8;N;RUNIC LETTER PERTHO PEORTH P
-16C9;N;RUNIC LETTER ALGIZ EOLHX
-16CA;N;RUNIC LETTER SOWILO S
-16CB;N;RUNIC LETTER SIGEL LONG-BRANCH-SOL S
-16CC;N;RUNIC LETTER SHORT-TWIG-SOL S
-16CD;N;RUNIC LETTER C
-16CE;N;RUNIC LETTER Z
-16CF;N;RUNIC LETTER TIWAZ TIR TYR T
-16D0;N;RUNIC LETTER SHORT-TWIG-TYR T
-16D1;N;RUNIC LETTER D
-16D2;N;RUNIC LETTER BERKANAN BEORC BJARKAN B
-16D3;N;RUNIC LETTER SHORT-TWIG-BJARKAN B
-16D4;N;RUNIC LETTER DOTTED-P
-16D5;N;RUNIC LETTER OPEN-P
-16D6;N;RUNIC LETTER EHWAZ EH E
-16D7;N;RUNIC LETTER MANNAZ MAN M
-16D8;N;RUNIC LETTER LONG-BRANCH-MADR M
-16D9;N;RUNIC LETTER SHORT-TWIG-MADR M
-16DA;N;RUNIC LETTER LAUKAZ LAGU LOGR L
-16DB;N;RUNIC LETTER DOTTED-L
-16DC;N;RUNIC LETTER INGWAZ
-16DD;N;RUNIC LETTER ING
-16DE;N;RUNIC LETTER DAGAZ DAEG D
-16DF;N;RUNIC LETTER OTHALAN ETHEL O
-16E0;N;RUNIC LETTER EAR
-16E1;N;RUNIC LETTER IOR
-16E2;N;RUNIC LETTER CWEORTH
-16E3;N;RUNIC LETTER CALC
-16E4;N;RUNIC LETTER CEALC
-16E5;N;RUNIC LETTER STAN
-16E6;N;RUNIC LETTER LONG-BRANCH-YR
-16E7;N;RUNIC LETTER SHORT-TWIG-YR
-16E8;N;RUNIC LETTER ICELANDIC-YR
-16E9;N;RUNIC LETTER Q
-16EA;N;RUNIC LETTER X
-16EB;N;RUNIC SINGLE PUNCTUATION
-16EC;N;RUNIC MULTIPLE PUNCTUATION
-16ED;N;RUNIC CROSS PUNCTUATION
-16EE;N;RUNIC ARLAUG SYMBOL
-16EF;N;RUNIC TVIMADUR SYMBOL
-16F0;N;RUNIC BELGTHOR SYMBOL
-1780;N;KHMER LETTER KA
-1781;N;KHMER LETTER KHA
-1782;N;KHMER LETTER KO
-1783;N;KHMER LETTER KHO
-1784;N;KHMER LETTER NGO
-1785;N;KHMER LETTER CA
-1786;N;KHMER LETTER CHA
-1787;N;KHMER LETTER CO
-1788;N;KHMER LETTER CHO
-1789;N;KHMER LETTER NYO
-178A;N;KHMER LETTER DA
-178B;N;KHMER LETTER TTHA
-178C;N;KHMER LETTER DO
-178D;N;KHMER LETTER TTHO
-178E;N;KHMER LETTER NNO
-178F;N;KHMER LETTER TA
-1790;N;KHMER LETTER THA
-1791;N;KHMER LETTER TO
-1792;N;KHMER LETTER THO
-1793;N;KHMER LETTER NO
-1794;N;KHMER LETTER BA
-1795;N;KHMER LETTER PHA
-1796;N;KHMER LETTER PO
-1797;N;KHMER LETTER PHO
-1798;N;KHMER LETTER MO
-1799;N;KHMER LETTER YO
-179A;N;KHMER LETTER RO
-179B;N;KHMER LETTER LO
-179C;N;KHMER LETTER VO
-179D;N;KHMER LETTER SHA
-179E;N;KHMER LETTER SSO
-179F;N;KHMER LETTER SA
-17A0;N;KHMER LETTER HA
-17A1;N;KHMER LETTER LA
-17A2;N;KHMER LETTER QA
-17A3;N;KHMER INDEPENDENT VOWEL QAQ
-17A4;N;KHMER INDEPENDENT VOWEL QAA
-17A5;N;KHMER INDEPENDENT VOWEL QI
-17A6;N;KHMER INDEPENDENT VOWEL QII
-17A7;N;KHMER INDEPENDENT VOWEL QU
-17A8;N;KHMER INDEPENDENT VOWEL QUK
-17A9;N;KHMER INDEPENDENT VOWEL QUU
-17AA;N;KHMER INDEPENDENT VOWEL QUUV
-17AB;N;KHMER INDEPENDENT VOWEL RY
-17AC;N;KHMER INDEPENDENT VOWEL RYY
-17AD;N;KHMER INDEPENDENT VOWEL LY
-17AE;N;KHMER INDEPENDENT VOWEL LYY
-17AF;N;KHMER INDEPENDENT VOWEL QE
-17B0;N;KHMER INDEPENDENT VOWEL QAI
-17B1;N;KHMER INDEPENDENT VOWEL QOO TYPE ONE
-17B2;N;KHMER INDEPENDENT VOWEL QOO TYPE TWO
-17B3;N;KHMER INDEPENDENT VOWEL QAU
-17B4;N;KHMER VOWEL INHERENT AQ
-17B5;N;KHMER VOWEL INHERENT AA
-17B6;N;KHMER VOWEL SIGN AA
-17B7;N;KHMER VOWEL SIGN I
-17B8;N;KHMER VOWEL SIGN II
-17B9;N;KHMER VOWEL SIGN Y
-17BA;N;KHMER VOWEL SIGN YY
-17BB;N;KHMER VOWEL SIGN U
-17BC;N;KHMER VOWEL SIGN UU
-17BD;N;KHMER VOWEL SIGN UA
-17BE;N;KHMER VOWEL SIGN OE
-17BF;N;KHMER VOWEL SIGN YA
-17C0;N;KHMER VOWEL SIGN IE
-17C1;N;KHMER VOWEL SIGN E
-17C2;N;KHMER VOWEL SIGN AE
-17C3;N;KHMER VOWEL SIGN AI
-17C4;N;KHMER VOWEL SIGN OO
-17C5;N;KHMER VOWEL SIGN AU
-17C6;N;KHMER SIGN NIKAHIT
-17C7;N;KHMER SIGN REAHMUK
-17C8;N;KHMER SIGN YUUKALEAPINTU
-17C9;N;KHMER SIGN MUUSIKATOAN
-17CA;N;KHMER SIGN TRIISAP
-17CB;N;KHMER SIGN BANTOC
-17CC;N;KHMER SIGN ROBAT
-17CD;N;KHMER SIGN TOANDAKHIAT
-17CE;N;KHMER SIGN KAKABAT
-17CF;N;KHMER SIGN AHSDA
-17D0;N;KHMER SIGN SAMYOK SANNYA
-17D1;N;KHMER SIGN VIRIAM
-17D2;N;KHMER SIGN COENG
-17D3;N;KHMER SIGN BATHAMASAT
-17D4;N;KHMER SIGN KHAN
-17D5;N;KHMER SIGN BARIYOOSAN
-17D6;N;KHMER SIGN CAMNUC PII KUUH
-17D7;N;KHMER SIGN LEK TOO
-17D8;N;KHMER SIGN BEYYAL
-17D9;N;KHMER SIGN PHNAEK MUAN
-17DA;N;KHMER SIGN KOOMUUT
-17DB;N;KHMER CURRENCY SYMBOL RIEL
-17DC;N;KHMER SIGN AVAKRAHASANYA
-17E0;N;KHMER DIGIT ZERO
-17E1;N;KHMER DIGIT ONE
-17E2;N;KHMER DIGIT TWO
-17E3;N;KHMER DIGIT THREE
-17E4;N;KHMER DIGIT FOUR
-17E5;N;KHMER DIGIT FIVE
-17E6;N;KHMER DIGIT SIX
-17E7;N;KHMER DIGIT SEVEN
-17E8;N;KHMER DIGIT EIGHT
-17E9;N;KHMER DIGIT NINE
-1800;N;MONGOLIAN BIRGA
-1801;N;MONGOLIAN ELLIPSIS
-1802;N;MONGOLIAN COMMA
-1803;N;MONGOLIAN FULL STOP
-1804;N;MONGOLIAN COLON
-1805;N;MONGOLIAN FOUR DOTS
-1806;N;MONGOLIAN TODO SOFT HYPHEN
-1807;N;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
-1808;N;MONGOLIAN MANCHU COMMA
-1809;N;MONGOLIAN MANCHU FULL STOP
-180A;N;MONGOLIAN NIRUGU
-180B;N;MONGOLIAN FREE VARIATION SELECTOR ONE
-180C;N;MONGOLIAN FREE VARIATION SELECTOR TWO
-180D;N;MONGOLIAN FREE VARIATION SELECTOR THREE
-180E;N;MONGOLIAN VOWEL SEPARATOR
-1810;N;MONGOLIAN DIGIT ZERO
-1811;N;MONGOLIAN DIGIT ONE
-1812;N;MONGOLIAN DIGIT TWO
-1813;N;MONGOLIAN DIGIT THREE
-1814;N;MONGOLIAN DIGIT FOUR
-1815;N;MONGOLIAN DIGIT FIVE
-1816;N;MONGOLIAN DIGIT SIX
-1817;N;MONGOLIAN DIGIT SEVEN
-1818;N;MONGOLIAN DIGIT EIGHT
-1819;N;MONGOLIAN DIGIT NINE
-1820;N;MONGOLIAN LETTER A
-1821;N;MONGOLIAN LETTER E
-1822;N;MONGOLIAN LETTER I
-1823;N;MONGOLIAN LETTER O
-1824;N;MONGOLIAN LETTER U
-1825;N;MONGOLIAN LETTER OE
-1826;N;MONGOLIAN LETTER UE
-1827;N;MONGOLIAN LETTER EE
-1828;N;MONGOLIAN LETTER NA
-1829;N;MONGOLIAN LETTER ANG
-182A;N;MONGOLIAN LETTER BA
-182B;N;MONGOLIAN LETTER PA
-182C;N;MONGOLIAN LETTER QA
-182D;N;MONGOLIAN LETTER GA
-182E;N;MONGOLIAN LETTER MA
-182F;N;MONGOLIAN LETTER LA
-1830;N;MONGOLIAN LETTER SA
-1831;N;MONGOLIAN LETTER SHA
-1832;N;MONGOLIAN LETTER TA
-1833;N;MONGOLIAN LETTER DA
-1834;N;MONGOLIAN LETTER CHA
-1835;N;MONGOLIAN LETTER JA
-1836;N;MONGOLIAN LETTER YA
-1837;N;MONGOLIAN LETTER RA
-1838;N;MONGOLIAN LETTER WA
-1839;N;MONGOLIAN LETTER FA
-183A;N;MONGOLIAN LETTER KA
-183B;N;MONGOLIAN LETTER KHA
-183C;N;MONGOLIAN LETTER TSA
-183D;N;MONGOLIAN LETTER ZA
-183E;N;MONGOLIAN LETTER HAA
-183F;N;MONGOLIAN LETTER ZRA
-1840;N;MONGOLIAN LETTER LHA
-1841;N;MONGOLIAN LETTER ZHI
-1842;N;MONGOLIAN LETTER CHI
-1843;N;MONGOLIAN LETTER TODO LONG VOWEL SIGN
-1844;N;MONGOLIAN LETTER TODO E
-1845;N;MONGOLIAN LETTER TODO I
-1846;N;MONGOLIAN LETTER TODO O
-1847;N;MONGOLIAN LETTER TODO U
-1848;N;MONGOLIAN LETTER TODO OE
-1849;N;MONGOLIAN LETTER TODO UE
-184A;N;MONGOLIAN LETTER TODO ANG
-184B;N;MONGOLIAN LETTER TODO BA
-184C;N;MONGOLIAN LETTER TODO PA
-184D;N;MONGOLIAN LETTER TODO QA
-184E;N;MONGOLIAN LETTER TODO GA
-184F;N;MONGOLIAN LETTER TODO MA
-1850;N;MONGOLIAN LETTER TODO TA
-1851;N;MONGOLIAN LETTER TODO DA
-1852;N;MONGOLIAN LETTER TODO CHA
-1853;N;MONGOLIAN LETTER TODO JA
-1854;N;MONGOLIAN LETTER TODO TSA
-1855;N;MONGOLIAN LETTER TODO YA
-1856;N;MONGOLIAN LETTER TODO WA
-1857;N;MONGOLIAN LETTER TODO KA
-1858;N;MONGOLIAN LETTER TODO GAA
-1859;N;MONGOLIAN LETTER TODO HAA
-185A;N;MONGOLIAN LETTER TODO JIA
-185B;N;MONGOLIAN LETTER TODO NIA
-185C;N;MONGOLIAN LETTER TODO DZA
-185D;N;MONGOLIAN LETTER SIBE E
-185E;N;MONGOLIAN LETTER SIBE I
-185F;N;MONGOLIAN LETTER SIBE IY
-1860;N;MONGOLIAN LETTER SIBE UE
-1861;N;MONGOLIAN LETTER SIBE U
-1862;N;MONGOLIAN LETTER SIBE ANG
-1863;N;MONGOLIAN LETTER SIBE KA
-1864;N;MONGOLIAN LETTER SIBE GA
-1865;N;MONGOLIAN LETTER SIBE HA
-1866;N;MONGOLIAN LETTER SIBE PA
-1867;N;MONGOLIAN LETTER SIBE SHA
-1868;N;MONGOLIAN LETTER SIBE TA
-1869;N;MONGOLIAN LETTER SIBE DA
-186A;N;MONGOLIAN LETTER SIBE JA
-186B;N;MONGOLIAN LETTER SIBE FA
-186C;N;MONGOLIAN LETTER SIBE GAA
-186D;N;MONGOLIAN LETTER SIBE HAA
-186E;N;MONGOLIAN LETTER SIBE TSA
-186F;N;MONGOLIAN LETTER SIBE ZA
-1870;N;MONGOLIAN LETTER SIBE RAA
-1871;N;MONGOLIAN LETTER SIBE CHA
-1872;N;MONGOLIAN LETTER SIBE ZHA
-1873;N;MONGOLIAN LETTER MANCHU I
-1874;N;MONGOLIAN LETTER MANCHU KA
-1875;N;MONGOLIAN LETTER MANCHU RA
-1876;N;MONGOLIAN LETTER MANCHU FA
-1877;N;MONGOLIAN LETTER MANCHU ZHA
-1880;N;MONGOLIAN LETTER ALI GALI ANUSVARA ONE
-1881;N;MONGOLIAN LETTER ALI GALI VISARGA ONE
-1882;N;MONGOLIAN LETTER ALI GALI DAMARU
-1883;N;MONGOLIAN LETTER ALI GALI UBADAMA
-1884;N;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
-1885;N;MONGOLIAN LETTER ALI GALI BALUDA
-1886;N;MONGOLIAN LETTER ALI GALI THREE BALUDA
-1887;N;MONGOLIAN LETTER ALI GALI A
-1888;N;MONGOLIAN LETTER ALI GALI I
-1889;N;MONGOLIAN LETTER ALI GALI KA
-188A;N;MONGOLIAN LETTER ALI GALI NGA
-188B;N;MONGOLIAN LETTER ALI GALI CA
-188C;N;MONGOLIAN LETTER ALI GALI TTA
-188D;N;MONGOLIAN LETTER ALI GALI TTHA
-188E;N;MONGOLIAN LETTER ALI GALI DDA
-188F;N;MONGOLIAN LETTER ALI GALI NNA
-1890;N;MONGOLIAN LETTER ALI GALI TA
-1891;N;MONGOLIAN LETTER ALI GALI DA
-1892;N;MONGOLIAN LETTER ALI GALI PA
-1893;N;MONGOLIAN LETTER ALI GALI PHA
-1894;N;MONGOLIAN LETTER ALI GALI SSA
-1895;N;MONGOLIAN LETTER ALI GALI ZHA
-1896;N;MONGOLIAN LETTER ALI GALI ZA
-1897;N;MONGOLIAN LETTER ALI GALI AH
-1898;N;MONGOLIAN LETTER TODO ALI GALI TA
-1899;N;MONGOLIAN LETTER TODO ALI GALI ZHA
-189A;N;MONGOLIAN LETTER MANCHU ALI GALI GHA
-189B;N;MONGOLIAN LETTER MANCHU ALI GALI NGA
-189C;N;MONGOLIAN LETTER MANCHU ALI GALI CA
-189D;N;MONGOLIAN LETTER MANCHU ALI GALI JHA
-189E;N;MONGOLIAN LETTER MANCHU ALI GALI TTA
-189F;N;MONGOLIAN LETTER MANCHU ALI GALI DDHA
-18A0;N;MONGOLIAN LETTER MANCHU ALI GALI TA
-18A1;N;MONGOLIAN LETTER MANCHU ALI GALI DHA
-18A2;N;MONGOLIAN LETTER MANCHU ALI GALI SSA
-18A3;N;MONGOLIAN LETTER MANCHU ALI GALI CYA
-18A4;N;MONGOLIAN LETTER MANCHU ALI GALI ZHA
-18A5;N;MONGOLIAN LETTER MANCHU ALI GALI ZA
-18A6;N;MONGOLIAN LETTER ALI GALI HALF U
-18A7;N;MONGOLIAN LETTER ALI GALI HALF YA
-18A8;N;MONGOLIAN LETTER MANCHU ALI GALI BHA
-18A9;N;MONGOLIAN LETTER ALI GALI DAGALGA
-1E00;N;LATIN CAPITAL LETTER A WITH RING BELOW
-1E01;N;LATIN SMALL LETTER A WITH RING BELOW
-1E02;N;LATIN CAPITAL LETTER B WITH DOT ABOVE
-1E03;N;LATIN SMALL LETTER B WITH DOT ABOVE
-1E04;N;LATIN CAPITAL LETTER B WITH DOT BELOW
-1E05;N;LATIN SMALL LETTER B WITH DOT BELOW
-1E06;N;LATIN CAPITAL LETTER B WITH LINE BELOW
-1E07;N;LATIN SMALL LETTER B WITH LINE BELOW
-1E08;N;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
-1E09;N;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
-1E0A;N;LATIN CAPITAL LETTER D WITH DOT ABOVE
-1E0B;N;LATIN SMALL LETTER D WITH DOT ABOVE
-1E0C;N;LATIN CAPITAL LETTER D WITH DOT BELOW
-1E0D;N;LATIN SMALL LETTER D WITH DOT BELOW
-1E0E;N;LATIN CAPITAL LETTER D WITH LINE BELOW
-1E0F;N;LATIN SMALL LETTER D WITH LINE BELOW
-1E10;N;LATIN CAPITAL LETTER D WITH CEDILLA
-1E11;N;LATIN SMALL LETTER D WITH CEDILLA
-1E12;N;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
-1E13;N;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
-1E14;N;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
-1E15;N;LATIN SMALL LETTER E WITH MACRON AND GRAVE
-1E16;N;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
-1E17;N;LATIN SMALL LETTER E WITH MACRON AND ACUTE
-1E18;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
-1E19;N;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
-1E1A;N;LATIN CAPITAL LETTER E WITH TILDE BELOW
-1E1B;N;LATIN SMALL LETTER E WITH TILDE BELOW
-1E1C;N;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
-1E1D;N;LATIN SMALL LETTER E WITH CEDILLA AND BREVE
-1E1E;N;LATIN CAPITAL LETTER F WITH DOT ABOVE
-1E1F;N;LATIN SMALL LETTER F WITH DOT ABOVE
-1E20;N;LATIN CAPITAL LETTER G WITH MACRON
-1E21;N;LATIN SMALL LETTER G WITH MACRON
-1E22;N;LATIN CAPITAL LETTER H WITH DOT ABOVE
-1E23;N;LATIN SMALL LETTER H WITH DOT ABOVE
-1E24;N;LATIN CAPITAL LETTER H WITH DOT BELOW
-1E25;N;LATIN SMALL LETTER H WITH DOT BELOW
-1E26;N;LATIN CAPITAL LETTER H WITH DIAERESIS
-1E27;N;LATIN SMALL LETTER H WITH DIAERESIS
-1E28;N;LATIN CAPITAL LETTER H WITH CEDILLA
-1E29;N;LATIN SMALL LETTER H WITH CEDILLA
-1E2A;N;LATIN CAPITAL LETTER H WITH BREVE BELOW
-1E2B;N;LATIN SMALL LETTER H WITH BREVE BELOW
-1E2C;N;LATIN CAPITAL LETTER I WITH TILDE BELOW
-1E2D;N;LATIN SMALL LETTER I WITH TILDE BELOW
-1E2E;N;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
-1E2F;N;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
-1E30;N;LATIN CAPITAL LETTER K WITH ACUTE
-1E31;N;LATIN SMALL LETTER K WITH ACUTE
-1E32;N;LATIN CAPITAL LETTER K WITH DOT BELOW
-1E33;N;LATIN SMALL LETTER K WITH DOT BELOW
-1E34;N;LATIN CAPITAL LETTER K WITH LINE BELOW
-1E35;N;LATIN SMALL LETTER K WITH LINE BELOW
-1E36;N;LATIN CAPITAL LETTER L WITH DOT BELOW
-1E37;N;LATIN SMALL LETTER L WITH DOT BELOW
-1E38;N;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
-1E39;N;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
-1E3A;N;LATIN CAPITAL LETTER L WITH LINE BELOW
-1E3B;N;LATIN SMALL LETTER L WITH LINE BELOW
-1E3C;N;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
-1E3D;N;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
-1E3E;N;LATIN CAPITAL LETTER M WITH ACUTE
-1E3F;N;LATIN SMALL LETTER M WITH ACUTE
-1E40;N;LATIN CAPITAL LETTER M WITH DOT ABOVE
-1E41;N;LATIN SMALL LETTER M WITH DOT ABOVE
-1E42;N;LATIN CAPITAL LETTER M WITH DOT BELOW
-1E43;N;LATIN SMALL LETTER M WITH DOT BELOW
-1E44;N;LATIN CAPITAL LETTER N WITH DOT ABOVE
-1E45;N;LATIN SMALL LETTER N WITH DOT ABOVE
-1E46;N;LATIN CAPITAL LETTER N WITH DOT BELOW
-1E47;N;LATIN SMALL LETTER N WITH DOT BELOW
-1E48;N;LATIN CAPITAL LETTER N WITH LINE BELOW
-1E49;N;LATIN SMALL LETTER N WITH LINE BELOW
-1E4A;N;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
-1E4B;N;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
-1E4C;N;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-1E4D;N;LATIN SMALL LETTER O WITH TILDE AND ACUTE
-1E4E;N;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-1E4F;N;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
-1E50;N;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
-1E51;N;LATIN SMALL LETTER O WITH MACRON AND GRAVE
-1E52;N;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
-1E53;N;LATIN SMALL LETTER O WITH MACRON AND ACUTE
-1E54;N;LATIN CAPITAL LETTER P WITH ACUTE
-1E55;N;LATIN SMALL LETTER P WITH ACUTE
-1E56;N;LATIN CAPITAL LETTER P WITH DOT ABOVE
-1E57;N;LATIN SMALL LETTER P WITH DOT ABOVE
-1E58;N;LATIN CAPITAL LETTER R WITH DOT ABOVE
-1E59;N;LATIN SMALL LETTER R WITH DOT ABOVE
-1E5A;N;LATIN CAPITAL LETTER R WITH DOT BELOW
-1E5B;N;LATIN SMALL LETTER R WITH DOT BELOW
-1E5C;N;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
-1E5D;N;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
-1E5E;N;LATIN CAPITAL LETTER R WITH LINE BELOW
-1E5F;N;LATIN SMALL LETTER R WITH LINE BELOW
-1E60;N;LATIN CAPITAL LETTER S WITH DOT ABOVE
-1E61;N;LATIN SMALL LETTER S WITH DOT ABOVE
-1E62;N;LATIN CAPITAL LETTER S WITH DOT BELOW
-1E63;N;LATIN SMALL LETTER S WITH DOT BELOW
-1E64;N;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
-1E65;N;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
-1E66;N;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
-1E67;N;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
-1E68;N;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E69;N;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E6A;N;LATIN CAPITAL LETTER T WITH DOT ABOVE
-1E6B;N;LATIN SMALL LETTER T WITH DOT ABOVE
-1E6C;N;LATIN CAPITAL LETTER T WITH DOT BELOW
-1E6D;N;LATIN SMALL LETTER T WITH DOT BELOW
-1E6E;N;LATIN CAPITAL LETTER T WITH LINE BELOW
-1E6F;N;LATIN SMALL LETTER T WITH LINE BELOW
-1E70;N;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
-1E71;N;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
-1E72;N;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
-1E73;N;LATIN SMALL LETTER U WITH DIAERESIS BELOW
-1E74;N;LATIN CAPITAL LETTER U WITH TILDE BELOW
-1E75;N;LATIN SMALL LETTER U WITH TILDE BELOW
-1E76;N;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
-1E77;N;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
-1E78;N;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
-1E79;N;LATIN SMALL LETTER U WITH TILDE AND ACUTE
-1E7A;N;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
-1E7B;N;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
-1E7C;N;LATIN CAPITAL LETTER V WITH TILDE
-1E7D;N;LATIN SMALL LETTER V WITH TILDE
-1E7E;N;LATIN CAPITAL LETTER V WITH DOT BELOW
-1E7F;N;LATIN SMALL LETTER V WITH DOT BELOW
-1E80;N;LATIN CAPITAL LETTER W WITH GRAVE
-1E81;N;LATIN SMALL LETTER W WITH GRAVE
-1E82;N;LATIN CAPITAL LETTER W WITH ACUTE
-1E83;N;LATIN SMALL LETTER W WITH ACUTE
-1E84;N;LATIN CAPITAL LETTER W WITH DIAERESIS
-1E85;N;LATIN SMALL LETTER W WITH DIAERESIS
-1E86;N;LATIN CAPITAL LETTER W WITH DOT ABOVE
-1E87;N;LATIN SMALL LETTER W WITH DOT ABOVE
-1E88;N;LATIN CAPITAL LETTER W WITH DOT BELOW
-1E89;N;LATIN SMALL LETTER W WITH DOT BELOW
-1E8A;N;LATIN CAPITAL LETTER X WITH DOT ABOVE
-1E8B;N;LATIN SMALL LETTER X WITH DOT ABOVE
-1E8C;N;LATIN CAPITAL LETTER X WITH DIAERESIS
-1E8D;N;LATIN SMALL LETTER X WITH DIAERESIS
-1E8E;N;LATIN CAPITAL LETTER Y WITH DOT ABOVE
-1E8F;N;LATIN SMALL LETTER Y WITH DOT ABOVE
-1E90;N;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
-1E91;N;LATIN SMALL LETTER Z WITH CIRCUMFLEX
-1E92;N;LATIN CAPITAL LETTER Z WITH DOT BELOW
-1E93;N;LATIN SMALL LETTER Z WITH DOT BELOW
-1E94;N;LATIN CAPITAL LETTER Z WITH LINE BELOW
-1E95;N;LATIN SMALL LETTER Z WITH LINE BELOW
-1E96;N;LATIN SMALL LETTER H WITH LINE BELOW
-1E97;N;LATIN SMALL LETTER T WITH DIAERESIS
-1E98;N;LATIN SMALL LETTER W WITH RING ABOVE
-1E99;N;LATIN SMALL LETTER Y WITH RING ABOVE
-1E9A;N;LATIN SMALL LETTER A WITH RIGHT HALF RING
-1E9B;N;LATIN SMALL LETTER LONG S WITH DOT ABOVE
-1EA0;N;LATIN CAPITAL LETTER A WITH DOT BELOW
-1EA1;N;LATIN SMALL LETTER A WITH DOT BELOW
-1EA2;N;LATIN CAPITAL LETTER A WITH HOOK ABOVE
-1EA3;N;LATIN SMALL LETTER A WITH HOOK ABOVE
-1EA4;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA5;N;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA6;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA7;N;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA8;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EA9;N;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EAA;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAB;N;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAC;N;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAD;N;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAE;N;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1EAF;N;LATIN SMALL LETTER A WITH BREVE AND ACUTE
-1EB0;N;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1EB1;N;LATIN SMALL LETTER A WITH BREVE AND GRAVE
-1EB2;N;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-1EB3;N;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
-1EB4;N;LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1EB5;N;LATIN SMALL LETTER A WITH BREVE AND TILDE
-1EB6;N;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-1EB7;N;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
-1EB8;N;LATIN CAPITAL LETTER E WITH DOT BELOW
-1EB9;N;LATIN SMALL LETTER E WITH DOT BELOW
-1EBA;N;LATIN CAPITAL LETTER E WITH HOOK ABOVE
-1EBB;N;LATIN SMALL LETTER E WITH HOOK ABOVE
-1EBC;N;LATIN CAPITAL LETTER E WITH TILDE
-1EBD;N;LATIN SMALL LETTER E WITH TILDE
-1EBE;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBF;N;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC0;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC1;N;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC2;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC3;N;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC4;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC5;N;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC6;N;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC7;N;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC8;N;LATIN CAPITAL LETTER I WITH HOOK ABOVE
-1EC9;N;LATIN SMALL LETTER I WITH HOOK ABOVE
-1ECA;N;LATIN CAPITAL LETTER I WITH DOT BELOW
-1ECB;N;LATIN SMALL LETTER I WITH DOT BELOW
-1ECC;N;LATIN CAPITAL LETTER O WITH DOT BELOW
-1ECD;N;LATIN SMALL LETTER O WITH DOT BELOW
-1ECE;N;LATIN CAPITAL LETTER O WITH HOOK ABOVE
-1ECF;N;LATIN SMALL LETTER O WITH HOOK ABOVE
-1ED0;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED1;N;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED2;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED3;N;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED4;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED5;N;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED6;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED7;N;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED8;N;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED9;N;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1EDA;N;LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-1EDB;N;LATIN SMALL LETTER O WITH HORN AND ACUTE
-1EDC;N;LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-1EDD;N;LATIN SMALL LETTER O WITH HORN AND GRAVE
-1EDE;N;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-1EDF;N;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
-1EE0;N;LATIN CAPITAL LETTER O WITH HORN AND TILDE
-1EE1;N;LATIN SMALL LETTER O WITH HORN AND TILDE
-1EE2;N;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-1EE3;N;LATIN SMALL LETTER O WITH HORN AND DOT BELOW
-1EE4;N;LATIN CAPITAL LETTER U WITH DOT BELOW
-1EE5;N;LATIN SMALL LETTER U WITH DOT BELOW
-1EE6;N;LATIN CAPITAL LETTER U WITH HOOK ABOVE
-1EE7;N;LATIN SMALL LETTER U WITH HOOK ABOVE
-1EE8;N;LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-1EE9;N;LATIN SMALL LETTER U WITH HORN AND ACUTE
-1EEA;N;LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-1EEB;N;LATIN SMALL LETTER U WITH HORN AND GRAVE
-1EEC;N;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-1EED;N;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
-1EEE;N;LATIN CAPITAL LETTER U WITH HORN AND TILDE
-1EEF;N;LATIN SMALL LETTER U WITH HORN AND TILDE
-1EF0;N;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-1EF1;N;LATIN SMALL LETTER U WITH HORN AND DOT BELOW
-1EF2;N;LATIN CAPITAL LETTER Y WITH GRAVE
-1EF3;N;LATIN SMALL LETTER Y WITH GRAVE
-1EF4;N;LATIN CAPITAL LETTER Y WITH DOT BELOW
-1EF5;N;LATIN SMALL LETTER Y WITH DOT BELOW
-1EF6;N;LATIN CAPITAL LETTER Y WITH HOOK ABOVE
-1EF7;N;LATIN SMALL LETTER Y WITH HOOK ABOVE
-1EF8;N;LATIN CAPITAL LETTER Y WITH TILDE
-1EF9;N;LATIN SMALL LETTER Y WITH TILDE
-1F00;N;GREEK SMALL LETTER ALPHA WITH PSILI
-1F01;N;GREEK SMALL LETTER ALPHA WITH DASIA
-1F02;N;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
-1F03;N;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
-1F04;N;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
-1F05;N;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
-1F06;N;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F07;N;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F08;N;GREEK CAPITAL LETTER ALPHA WITH PSILI
-1F09;N;GREEK CAPITAL LETTER ALPHA WITH DASIA
-1F0A;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
-1F0B;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
-1F0C;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
-1F0D;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
-1F0E;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F0F;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F10;N;GREEK SMALL LETTER EPSILON WITH PSILI
-1F11;N;GREEK SMALL LETTER EPSILON WITH DASIA
-1F12;N;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
-1F13;N;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
-1F14;N;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
-1F15;N;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
-1F18;N;GREEK CAPITAL LETTER EPSILON WITH PSILI
-1F19;N;GREEK CAPITAL LETTER EPSILON WITH DASIA
-1F1A;N;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
-1F1B;N;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
-1F1C;N;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
-1F1D;N;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
-1F20;N;GREEK SMALL LETTER ETA WITH PSILI
-1F21;N;GREEK SMALL LETTER ETA WITH DASIA
-1F22;N;GREEK SMALL LETTER ETA WITH PSILI AND VARIA
-1F23;N;GREEK SMALL LETTER ETA WITH DASIA AND VARIA
-1F24;N;GREEK SMALL LETTER ETA WITH PSILI AND OXIA
-1F25;N;GREEK SMALL LETTER ETA WITH DASIA AND OXIA
-1F26;N;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
-1F27;N;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
-1F28;N;GREEK CAPITAL LETTER ETA WITH PSILI
-1F29;N;GREEK CAPITAL LETTER ETA WITH DASIA
-1F2A;N;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
-1F2B;N;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
-1F2C;N;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
-1F2D;N;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
-1F2E;N;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
-1F2F;N;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
-1F30;N;GREEK SMALL LETTER IOTA WITH PSILI
-1F31;N;GREEK SMALL LETTER IOTA WITH DASIA
-1F32;N;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
-1F33;N;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
-1F34;N;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
-1F35;N;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
-1F36;N;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F37;N;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F38;N;GREEK CAPITAL LETTER IOTA WITH PSILI
-1F39;N;GREEK CAPITAL LETTER IOTA WITH DASIA
-1F3A;N;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
-1F3B;N;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
-1F3C;N;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
-1F3D;N;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
-1F3E;N;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F3F;N;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F40;N;GREEK SMALL LETTER OMICRON WITH PSILI
-1F41;N;GREEK SMALL LETTER OMICRON WITH DASIA
-1F42;N;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
-1F43;N;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
-1F44;N;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
-1F45;N;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
-1F48;N;GREEK CAPITAL LETTER OMICRON WITH PSILI
-1F49;N;GREEK CAPITAL LETTER OMICRON WITH DASIA
-1F4A;N;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
-1F4B;N;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
-1F4C;N;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
-1F4D;N;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
-1F50;N;GREEK SMALL LETTER UPSILON WITH PSILI
-1F51;N;GREEK SMALL LETTER UPSILON WITH DASIA
-1F52;N;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-1F53;N;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
-1F54;N;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-1F55;N;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
-1F56;N;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-1F57;N;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F59;N;GREEK CAPITAL LETTER UPSILON WITH DASIA
-1F5B;N;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
-1F5D;N;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
-1F5F;N;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F60;N;GREEK SMALL LETTER OMEGA WITH PSILI
-1F61;N;GREEK SMALL LETTER OMEGA WITH DASIA
-1F62;N;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
-1F63;N;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
-1F64;N;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
-1F65;N;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
-1F66;N;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1F67;N;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F68;N;GREEK CAPITAL LETTER OMEGA WITH PSILI
-1F69;N;GREEK CAPITAL LETTER OMEGA WITH DASIA
-1F6A;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
-1F6B;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
-1F6C;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
-1F6D;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
-1F6E;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1F6F;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F70;N;GREEK SMALL LETTER ALPHA WITH VARIA
-1F71;N;GREEK SMALL LETTER ALPHA WITH OXIA
-1F72;N;GREEK SMALL LETTER EPSILON WITH VARIA
-1F73;N;GREEK SMALL LETTER EPSILON WITH OXIA
-1F74;N;GREEK SMALL LETTER ETA WITH VARIA
-1F75;N;GREEK SMALL LETTER ETA WITH OXIA
-1F76;N;GREEK SMALL LETTER IOTA WITH VARIA
-1F77;N;GREEK SMALL LETTER IOTA WITH OXIA
-1F78;N;GREEK SMALL LETTER OMICRON WITH VARIA
-1F79;N;GREEK SMALL LETTER OMICRON WITH OXIA
-1F7A;N;GREEK SMALL LETTER UPSILON WITH VARIA
-1F7B;N;GREEK SMALL LETTER UPSILON WITH OXIA
-1F7C;N;GREEK SMALL LETTER OMEGA WITH VARIA
-1F7D;N;GREEK SMALL LETTER OMEGA WITH OXIA
-1F80;N;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-1F81;N;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-1F82;N;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F83;N;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F84;N;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F85;N;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F86;N;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F87;N;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F88;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1F89;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-1F8A;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F8B;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F8C;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F8D;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F8E;N;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F8F;N;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F90;N;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-1F91;N;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-1F92;N;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F93;N;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F94;N;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F95;N;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F96;N;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F97;N;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F98;N;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1F99;N;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-1F9A;N;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F9B;N;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F9C;N;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F9D;N;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F9E;N;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F9F;N;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FA0;N;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-1FA1;N;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-1FA2;N;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1FA3;N;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1FA4;N;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1FA5;N;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1FA6;N;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1FA7;N;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FA8;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1FA9;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-1FAA;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1FAB;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1FAC;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1FAD;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1FAE;N;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1FAF;N;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FB0;N;GREEK SMALL LETTER ALPHA WITH VRACHY
-1FB1;N;GREEK SMALL LETTER ALPHA WITH MACRON
-1FB2;N;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-1FB3;N;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-1FB4;N;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1FB6;N;GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-1FB7;N;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FB8;N;GREEK CAPITAL LETTER ALPHA WITH VRACHY
-1FB9;N;GREEK CAPITAL LETTER ALPHA WITH MACRON
-1FBA;N;GREEK CAPITAL LETTER ALPHA WITH VARIA
-1FBB;N;GREEK CAPITAL LETTER ALPHA WITH OXIA
-1FBC;N;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FBD;N;GREEK KORONIS
-1FBE;N;GREEK PROSGEGRAMMENI
-1FBF;N;GREEK PSILI
-1FC0;N;GREEK PERISPOMENI
-1FC1;N;GREEK DIALYTIKA AND PERISPOMENI
-1FC2;N;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-1FC3;N;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-1FC4;N;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1FC6;N;GREEK SMALL LETTER ETA WITH PERISPOMENI
-1FC7;N;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FC8;N;GREEK CAPITAL LETTER EPSILON WITH VARIA
-1FC9;N;GREEK CAPITAL LETTER EPSILON WITH OXIA
-1FCA;N;GREEK CAPITAL LETTER ETA WITH VARIA
-1FCB;N;GREEK CAPITAL LETTER ETA WITH OXIA
-1FCC;N;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FCD;N;GREEK PSILI AND VARIA
-1FCE;N;GREEK PSILI AND OXIA
-1FCF;N;GREEK PSILI AND PERISPOMENI
-1FD0;N;GREEK SMALL LETTER IOTA WITH VRACHY
-1FD1;N;GREEK SMALL LETTER IOTA WITH MACRON
-1FD2;N;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-1FD3;N;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD6;N;GREEK SMALL LETTER IOTA WITH PERISPOMENI
-1FD7;N;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1FD8;N;GREEK CAPITAL LETTER IOTA WITH VRACHY
-1FD9;N;GREEK CAPITAL LETTER IOTA WITH MACRON
-1FDA;N;GREEK CAPITAL LETTER IOTA WITH VARIA
-1FDB;N;GREEK CAPITAL LETTER IOTA WITH OXIA
-1FDD;N;GREEK DASIA AND VARIA
-1FDE;N;GREEK DASIA AND OXIA
-1FDF;N;GREEK DASIA AND PERISPOMENI
-1FE0;N;GREEK SMALL LETTER UPSILON WITH VRACHY
-1FE1;N;GREEK SMALL LETTER UPSILON WITH MACRON
-1FE2;N;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-1FE3;N;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-1FE4;N;GREEK SMALL LETTER RHO WITH PSILI
-1FE5;N;GREEK SMALL LETTER RHO WITH DASIA
-1FE6;N;GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-1FE7;N;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1FE8;N;GREEK CAPITAL LETTER UPSILON WITH VRACHY
-1FE9;N;GREEK CAPITAL LETTER UPSILON WITH MACRON
-1FEA;N;GREEK CAPITAL LETTER UPSILON WITH VARIA
-1FEB;N;GREEK CAPITAL LETTER UPSILON WITH OXIA
-1FEC;N;GREEK CAPITAL LETTER RHO WITH DASIA
-1FED;N;GREEK DIALYTIKA AND VARIA
-1FEE;N;GREEK DIALYTIKA AND OXIA
-1FEF;N;GREEK VARIA
-1FF2;N;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-1FF3;N;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-1FF4;N;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-1FF6;N;GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-1FF7;N;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FF8;N;GREEK CAPITAL LETTER OMICRON WITH VARIA
-1FF9;N;GREEK CAPITAL LETTER OMICRON WITH OXIA
-1FFA;N;GREEK CAPITAL LETTER OMEGA WITH VARIA
-1FFB;N;GREEK CAPITAL LETTER OMEGA WITH OXIA
-1FFC;N;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-1FFD;N;GREEK OXIA
-1FFE;N;GREEK DASIA
-2000;N;EN QUAD
-2001;N;EM QUAD
-2002;N;EN SPACE
-2003;N;EM SPACE
-2004;N;THREE-PER-EM SPACE
-2005;N;FOUR-PER-EM SPACE
-2006;N;SIX-PER-EM SPACE
-2007;N;FIGURE SPACE
-2008;N;PUNCTUATION SPACE
-2009;N;THIN SPACE
-200A;N;HAIR SPACE
-200B;N;ZERO WIDTH SPACE
-200C;N;ZERO WIDTH NON-JOINER
-200D;N;ZERO WIDTH JOINER
-200E;N;LEFT-TO-RIGHT MARK
-200F;N;RIGHT-TO-LEFT MARK
-2010;A;HYPHEN
-2011;N;NON-BREAKING HYPHEN
-2012;N;FIGURE DASH
-2013;A;EN DASH
-2014;A;EM DASH
-2015;A;HORIZONTAL BAR
-2016;A;DOUBLE VERTICAL LINE
-2017;N;DOUBLE LOW LINE
-2018;A;LEFT SINGLE QUOTATION MARK
-2019;A;RIGHT SINGLE QUOTATION MARK
-201A;N;SINGLE LOW-9 QUOTATION MARK
-201B;N;SINGLE HIGH-REVERSED-9 QUOTATION MARK
-201C;A;LEFT DOUBLE QUOTATION MARK
-201D;A;RIGHT DOUBLE QUOTATION MARK
-201E;N;DOUBLE LOW-9 QUOTATION MARK
-201F;N;DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-2020;A;DAGGER
-2021;A;DOUBLE DAGGER
-2022;N;BULLET
-2023;N;TRIANGULAR BULLET
-2024;N;ONE DOT LEADER
-2025;A;TWO DOT LEADER
-2026;A;HORIZONTAL ELLIPSIS
-2027;A;HYPHENATION POINT
-2028;N;LINE SEPARATOR
-2029;N;PARAGRAPH SEPARATOR
-202A;N;LEFT-TO-RIGHT EMBEDDING
-202B;N;RIGHT-TO-LEFT EMBEDDING
-202C;N;POP DIRECTIONAL FORMATTING
-202D;N;LEFT-TO-RIGHT OVERRIDE
-202E;N;RIGHT-TO-LEFT OVERRIDE
-202F;N;NARROW NO-BREAK SPACE
-2030;A;PER MILLE SIGN
-2031;N;PER TEN THOUSAND SIGN
-2032;A;PRIME
-2033;A;DOUBLE PRIME
-2034;N;TRIPLE PRIME
-2035;A;REVERSED PRIME
-2036;N;REVERSED DOUBLE PRIME
-2037;N;REVERSED TRIPLE PRIME
-2038;N;CARET
-2039;N;SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203A;N;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-203B;A;REFERENCE MARK
-203C;N;DOUBLE EXCLAMATION MARK
-203D;N;INTERROBANG
-203E;N;OVERLINE
-203F;N;UNDERTIE
-2040;N;CHARACTER TIE
-2041;N;CARET INSERTION POINT
-2042;N;ASTERISM
-2043;N;HYPHEN BULLET
-2044;N;FRACTION SLASH
-2045;N;LEFT SQUARE BRACKET WITH QUILL
-2046;N;RIGHT SQUARE BRACKET WITH QUILL
-2048;N;QUESTION EXCLAMATION MARK
-2049;N;EXCLAMATION QUESTION MARK
-204A;N;TIRONIAN SIGN ET
-204B;N;REVERSED PILCROW SIGN
-204C;N;BLACK LEFTWARDS BULLET
-204D;N;BLACK RIGHTWARDS BULLET
-206A;N;INHIBIT SYMMETRIC SWAPPING
-206B;N;ACTIVATE SYMMETRIC SWAPPING
-206C;N;INHIBIT ARABIC FORM SHAPING
-206D;N;ACTIVATE ARABIC FORM SHAPING
-206E;N;NATIONAL DIGIT SHAPES
-206F;N;NOMINAL DIGIT SHAPES
-2070;N;SUPERSCRIPT ZERO
-2074;A;SUPERSCRIPT FOUR
-2075;N;SUPERSCRIPT FIVE
-2076;N;SUPERSCRIPT SIX
-2077;N;SUPERSCRIPT SEVEN
-2078;N;SUPERSCRIPT EIGHT
-2079;N;SUPERSCRIPT NINE
-207A;N;SUPERSCRIPT PLUS SIGN
-207B;N;SUPERSCRIPT MINUS
-207C;N;SUPERSCRIPT EQUALS SIGN
-207D;N;SUPERSCRIPT LEFT PARENTHESIS
-207E;N;SUPERSCRIPT RIGHT PARENTHESIS
-207F;A;SUPERSCRIPT LATIN SMALL LETTER N
-2080;N;SUBSCRIPT ZERO
-2081;A;SUBSCRIPT ONE
-2082;A;SUBSCRIPT TWO
-2083;A;SUBSCRIPT THREE
-2084;A;SUBSCRIPT FOUR
-2085;N;SUBSCRIPT FIVE
-2086;N;SUBSCRIPT SIX
-2087;N;SUBSCRIPT SEVEN
-2088;N;SUBSCRIPT EIGHT
-2089;N;SUBSCRIPT NINE
-208A;N;SUBSCRIPT PLUS SIGN
-208B;N;SUBSCRIPT MINUS
-208C;N;SUBSCRIPT EQUALS SIGN
-208D;N;SUBSCRIPT LEFT PARENTHESIS
-208E;N;SUBSCRIPT RIGHT PARENTHESIS
-20A0;N;EURO-CURRENCY SIGN
-20A1;N;COLON SIGN
-20A2;N;CRUZEIRO SIGN
-20A3;N;FRENCH FRANC SIGN
-20A4;N;LIRA SIGN
-20A5;N;MILL SIGN
-20A6;N;NAIRA SIGN
-20A7;N;PESETA SIGN
-20A8;N;RUPEE SIGN
-20A9;H;WON SIGN
-20AA;N;NEW SHEQEL SIGN
-20AB;N;DONG SIGN
-20AC;A;EURO SIGN
-20AD;N;KIP SIGN
-20AE;N;TUGRIK SIGN
-20AF;N;DRACHMA SIGN
-20D0;N;COMBINING LEFT HARPOON ABOVE
-20D1;N;COMBINING RIGHT HARPOON ABOVE
-20D2;N;COMBINING LONG VERTICAL LINE OVERLAY
-20D3;N;COMBINING SHORT VERTICAL LINE OVERLAY
-20D4;N;COMBINING ANTICLOCKWISE ARROW ABOVE
-20D5;N;COMBINING CLOCKWISE ARROW ABOVE
-20D6;N;COMBINING LEFT ARROW ABOVE
-20D7;N;COMBINING RIGHT ARROW ABOVE
-20D8;N;COMBINING RING OVERLAY
-20D9;N;COMBINING CLOCKWISE RING OVERLAY
-20DA;N;COMBINING ANTICLOCKWISE RING OVERLAY
-20DB;N;COMBINING THREE DOTS ABOVE
-20DC;N;COMBINING FOUR DOTS ABOVE
-20DD;N;COMBINING ENCLOSING CIRCLE
-20DE;N;COMBINING ENCLOSING SQUARE
-20DF;N;COMBINING ENCLOSING DIAMOND
-20E0;N;COMBINING ENCLOSING CIRCLE BACKSLASH
-20E1;N;COMBINING LEFT RIGHT ARROW ABOVE
-20E2;N;COMBINING ENCLOSING SCREEN
-20E3;N;COMBINING ENCLOSING KEYCAP
-2100;N;ACCOUNT OF
-2101;N;ADDRESSED TO THE SUBJECT
-2102;N;DOUBLE-STRUCK CAPITAL C
-2103;A;DEGREE CELSIUS
-2104;N;CENTRE LINE SYMBOL
-2105;A;CARE OF
-2106;N;CADA UNA
-2107;N;EULER CONSTANT
-2108;N;SCRUPLE
-2109;A;DEGREE FAHRENHEIT
-210A;N;SCRIPT SMALL G
-210B;N;SCRIPT CAPITAL H
-210C;N;BLACK-LETTER CAPITAL H
-210D;N;DOUBLE-STRUCK CAPITAL H
-210E;N;PLANCK CONSTANT
-210F;N;PLANCK CONSTANT OVER TWO PI
-2110;N;SCRIPT CAPITAL I
-2111;N;BLACK-LETTER CAPITAL I
-2112;N;SCRIPT CAPITAL L
-2113;A;SCRIPT SMALL L
-2114;N;L B BAR SYMBOL
-2115;N;DOUBLE-STRUCK CAPITAL N
-2116;N;NUMERO SIGN
-2117;N;SOUND RECORDING COPYRIGHT
-2118;N;SCRIPT CAPITAL P
-2119;N;DOUBLE-STRUCK CAPITAL P
-211A;N;DOUBLE-STRUCK CAPITAL Q
-211B;N;SCRIPT CAPITAL R
-211C;N;BLACK-LETTER CAPITAL R
-211D;N;DOUBLE-STRUCK CAPITAL R
-211E;N;PRESCRIPTION TAKE
-211F;N;RESPONSE
-2120;N;SERVICE MARK
-2121;A;TELEPHONE SIGN
-2122;A;TRADE MARK SIGN
-2123;N;VERSICLE
-2124;N;DOUBLE-STRUCK CAPITAL Z
-2125;N;OUNCE SIGN
-2126;A;OHM SIGN
-2127;N;INVERTED OHM SIGN
-2128;N;BLACK-LETTER CAPITAL Z
-2129;N;TURNED GREEK SMALL LETTER IOTA
-212A;N;KELVIN SIGN
-212B;A;ANGSTROM SIGN
-212C;N;SCRIPT CAPITAL B
-212D;N;BLACK-LETTER CAPITAL C
-212E;N;ESTIMATED SYMBOL
-212F;N;SCRIPT SMALL E
-2130;N;SCRIPT CAPITAL E
-2131;N;SCRIPT CAPITAL F
-2132;N;TURNED CAPITAL F
-2133;N;SCRIPT CAPITAL M
-2134;N;SCRIPT SMALL O
-2135;N;ALEF SYMBOL
-2136;N;BET SYMBOL
-2137;N;GIMEL SYMBOL
-2138;N;DALET SYMBOL
-2139;N;INFORMATION SOURCE
-213A;N;ROTATED CAPITAL Q
-2153;N;VULGAR FRACTION ONE THIRD
-2154;A;VULGAR FRACTION TWO THIRDS
-2155;A;VULGAR FRACTION ONE FIFTH
-2156;N;VULGAR FRACTION TWO FIFTHS
-2157;N;VULGAR FRACTION THREE FIFTHS
-2158;N;VULGAR FRACTION FOUR FIFTHS
-2159;N;VULGAR FRACTION ONE SIXTH
-215A;N;VULGAR FRACTION FIVE SIXTHS
-215B;A;VULGAR FRACTION ONE EIGHTH
-215C;N;VULGAR FRACTION THREE EIGHTHS
-215D;N;VULGAR FRACTION FIVE EIGHTHS
-215E;A;VULGAR FRACTION SEVEN EIGHTHS
-215F;N;FRACTION NUMERATOR ONE
-2160;A;ROMAN NUMERAL ONE
-2161;A;ROMAN NUMERAL TWO
-2162;A;ROMAN NUMERAL THREE
-2163;A;ROMAN NUMERAL FOUR
-2164;A;ROMAN NUMERAL FIVE
-2165;A;ROMAN NUMERAL SIX
-2166;A;ROMAN NUMERAL SEVEN
-2167;A;ROMAN NUMERAL EIGHT
-2168;A;ROMAN NUMERAL NINE
-2169;A;ROMAN NUMERAL TEN
-216A;A;ROMAN NUMERAL ELEVEN
-216B;A;ROMAN NUMERAL TWELVE
-216C;N;ROMAN NUMERAL FIFTY
-216D;N;ROMAN NUMERAL ONE HUNDRED
-216E;N;ROMAN NUMERAL FIVE HUNDRED
-216F;N;ROMAN NUMERAL ONE THOUSAND
-2170;A;SMALL ROMAN NUMERAL ONE
-2171;A;SMALL ROMAN NUMERAL TWO
-2172;A;SMALL ROMAN NUMERAL THREE
-2173;A;SMALL ROMAN NUMERAL FOUR
-2174;A;SMALL ROMAN NUMERAL FIVE
-2175;A;SMALL ROMAN NUMERAL SIX
-2176;A;SMALL ROMAN NUMERAL SEVEN
-2177;A;SMALL ROMAN NUMERAL EIGHT
-2178;A;SMALL ROMAN NUMERAL NINE
-2179;A;SMALL ROMAN NUMERAL TEN
-217A;N;SMALL ROMAN NUMERAL ELEVEN
-217B;N;SMALL ROMAN NUMERAL TWELVE
-217C;N;SMALL ROMAN NUMERAL FIFTY
-217D;N;SMALL ROMAN NUMERAL ONE HUNDRED
-217E;N;SMALL ROMAN NUMERAL FIVE HUNDRED
-217F;N;SMALL ROMAN NUMERAL ONE THOUSAND
-2180;N;ROMAN NUMERAL ONE THOUSAND C D
-2181;N;ROMAN NUMERAL FIVE THOUSAND
-2182;N;ROMAN NUMERAL TEN THOUSAND
-2183;N;ROMAN NUMERAL REVERSED ONE HUNDRED
-2190;A;LEFTWARDS ARROW
-2191;A;UPWARDS ARROW
-2192;A;RIGHTWARDS ARROW
-2193;A;DOWNWARDS ARROW
-2194;A;LEFT RIGHT ARROW
-2195;A;UP DOWN ARROW
-2196;A;NORTH WEST ARROW
-2197;A;NORTH EAST ARROW
-2198;A;SOUTH EAST ARROW
-2199;A;SOUTH WEST ARROW
-219A;N;LEFTWARDS ARROW WITH STROKE
-219B;N;RIGHTWARDS ARROW WITH STROKE
-219C;N;LEFTWARDS WAVE ARROW
-219D;N;RIGHTWARDS WAVE ARROW
-219E;N;LEFTWARDS TWO HEADED ARROW
-219F;N;UPWARDS TWO HEADED ARROW
-21A0;N;RIGHTWARDS TWO HEADED ARROW
-21A1;N;DOWNWARDS TWO HEADED ARROW
-21A2;N;LEFTWARDS ARROW WITH TAIL
-21A3;N;RIGHTWARDS ARROW WITH TAIL
-21A4;N;LEFTWARDS ARROW FROM BAR
-21A5;N;UPWARDS ARROW FROM BAR
-21A6;N;RIGHTWARDS ARROW FROM BAR
-21A7;N;DOWNWARDS ARROW FROM BAR
-21A8;N;UP DOWN ARROW WITH BASE
-21A9;N;LEFTWARDS ARROW WITH HOOK
-21AA;N;RIGHTWARDS ARROW WITH HOOK
-21AB;N;LEFTWARDS ARROW WITH LOOP
-21AC;N;RIGHTWARDS ARROW WITH LOOP
-21AD;N;LEFT RIGHT WAVE ARROW
-21AE;N;LEFT RIGHT ARROW WITH STROKE
-21AF;N;DOWNWARDS ZIGZAG ARROW
-21B0;N;UPWARDS ARROW WITH TIP LEFTWARDS
-21B1;N;UPWARDS ARROW WITH TIP RIGHTWARDS
-21B2;N;DOWNWARDS ARROW WITH TIP LEFTWARDS
-21B3;N;DOWNWARDS ARROW WITH TIP RIGHTWARDS
-21B4;N;RIGHTWARDS ARROW WITH CORNER DOWNWARDS
-21B5;N;DOWNWARDS ARROW WITH CORNER LEFTWARDS
-21B6;N;ANTICLOCKWISE TOP SEMICIRCLE ARROW
-21B7;N;CLOCKWISE TOP SEMICIRCLE ARROW
-21B8;N;NORTH WEST ARROW TO LONG BAR
-21B9;N;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
-21BA;N;ANTICLOCKWISE OPEN CIRCLE ARROW
-21BB;N;CLOCKWISE OPEN CIRCLE ARROW
-21BC;N;LEFTWARDS HARPOON WITH BARB UPWARDS
-21BD;N;LEFTWARDS HARPOON WITH BARB DOWNWARDS
-21BE;N;UPWARDS HARPOON WITH BARB RIGHTWARDS
-21BF;N;UPWARDS HARPOON WITH BARB LEFTWARDS
-21C0;N;RIGHTWARDS HARPOON WITH BARB UPWARDS
-21C1;N;RIGHTWARDS HARPOON WITH BARB DOWNWARDS
-21C2;N;DOWNWARDS HARPOON WITH BARB RIGHTWARDS
-21C3;N;DOWNWARDS HARPOON WITH BARB LEFTWARDS
-21C4;N;RIGHTWARDS ARROW OVER LEFTWARDS ARROW
-21C5;N;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
-21C6;N;LEFTWARDS ARROW OVER RIGHTWARDS ARROW
-21C7;N;LEFTWARDS PAIRED ARROWS
-21C8;N;UPWARDS PAIRED ARROWS
-21C9;N;RIGHTWARDS PAIRED ARROWS
-21CA;N;DOWNWARDS PAIRED ARROWS
-21CB;N;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
-21CC;N;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
-21CD;N;LEFTWARDS DOUBLE ARROW WITH STROKE
-21CE;N;LEFT RIGHT DOUBLE ARROW WITH STROKE
-21CF;N;RIGHTWARDS DOUBLE ARROW WITH STROKE
-21D0;N;LEFTWARDS DOUBLE ARROW
-21D1;N;UPWARDS DOUBLE ARROW
-21D2;A;RIGHTWARDS DOUBLE ARROW
-21D3;N;DOWNWARDS DOUBLE ARROW
-21D4;A;LEFT RIGHT DOUBLE ARROW
-21D5;N;UP DOWN DOUBLE ARROW
-21D6;N;NORTH WEST DOUBLE ARROW
-21D7;N;NORTH EAST DOUBLE ARROW
-21D8;N;SOUTH EAST DOUBLE ARROW
-21D9;N;SOUTH WEST DOUBLE ARROW
-21DA;N;LEFTWARDS TRIPLE ARROW
-21DB;N;RIGHTWARDS TRIPLE ARROW
-21DC;N;LEFTWARDS SQUIGGLE ARROW
-21DD;N;RIGHTWARDS SQUIGGLE ARROW
-21DE;N;UPWARDS ARROW WITH DOUBLE STROKE
-21DF;N;DOWNWARDS ARROW WITH DOUBLE STROKE
-21E0;N;LEFTWARDS DASHED ARROW
-21E1;N;UPWARDS DASHED ARROW
-21E2;N;RIGHTWARDS DASHED ARROW
-21E3;N;DOWNWARDS DASHED ARROW
-21E4;N;LEFTWARDS ARROW TO BAR
-21E5;N;RIGHTWARDS ARROW TO BAR
-21E6;N;LEFTWARDS WHITE ARROW
-21E7;N;UPWARDS WHITE ARROW
-21E8;N;RIGHTWARDS WHITE ARROW
-21E9;N;DOWNWARDS WHITE ARROW
-21EA;N;UPWARDS WHITE ARROW FROM BAR
-21EB;N;UPWARDS WHITE ARROW ON PEDESTAL
-21EC;N;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
-21ED;N;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
-21EE;N;UPWARDS WHITE DOUBLE ARROW
-21EF;N;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
-21F0;N;RIGHTWARDS WHITE ARROW FROM WALL
-21F1;N;NORTH WEST ARROW TO CORNER
-21F2;N;SOUTH EAST ARROW TO CORNER
-21F3;N;UP DOWN WHITE ARROW
-2200;A;FOR ALL
-2201;N;COMPLEMENT
-2202;A;PARTIAL DIFFERENTIAL
-2203;A;THERE EXISTS
-2204;N;THERE DOES NOT EXIST
-2205;N;EMPTY SET
-2206;N;INCREMENT
-2207;A;NABLA
-2208;A;ELEMENT OF
-2209;N;NOT AN ELEMENT OF
-220A;N;SMALL ELEMENT OF
-220B;A;CONTAINS AS MEMBER
-220C;N;DOES NOT CONTAIN AS MEMBER
-220D;N;SMALL CONTAINS AS MEMBER
-220E;N;END OF PROOF
-220F;A;N-ARY PRODUCT
-2210;N;N-ARY COPRODUCT
-2211;A;N-ARY SUMMATION
-2212;N;MINUS SIGN
-2213;N;MINUS-OR-PLUS SIGN
-2214;N;DOT PLUS
-2215;A;DIVISION SLASH
-2216;N;SET MINUS
-2217;N;ASTERISK OPERATOR
-2218;N;RING OPERATOR
-2219;N;BULLET OPERATOR
-221A;A;SQUARE ROOT
-221B;N;CUBE ROOT
-221C;N;FOURTH ROOT
-221D;A;PROPORTIONAL TO
-221E;A;INFINITY
-221F;A;RIGHT ANGLE
-2220;A;ANGLE
-2221;N;MEASURED ANGLE
-2222;N;SPHERICAL ANGLE
-2223;A;DIVIDES
-2224;N;DOES NOT DIVIDE
-2225;A;PARALLEL TO
-2226;N;NOT PARALLEL TO
-2227;A;LOGICAL AND
-2228;A;LOGICAL OR
-2229;A;INTERSECTION
-222A;A;UNION
-222B;A;INTEGRAL
-222C;A;DOUBLE INTEGRAL
-222D;N;TRIPLE INTEGRAL
-222E;A;CONTOUR INTEGRAL
-222F;N;SURFACE INTEGRAL
-2230;N;VOLUME INTEGRAL
-2231;N;CLOCKWISE INTEGRAL
-2232;N;CLOCKWISE CONTOUR INTEGRAL
-2233;N;ANTICLOCKWISE CONTOUR INTEGRAL
-2234;A;THEREFORE
-2235;A;BECAUSE
-2236;A;RATIO
-2237;A;PROPORTION
-2238;N;DOT MINUS
-2239;N;EXCESS
-223A;N;GEOMETRIC PROPORTION
-223B;N;HOMOTHETIC
-223C;A;TILDE OPERATOR
-223D;A;REVERSED TILDE
-223E;N;INVERTED LAZY S
-223F;N;SINE WAVE
-2240;N;WREATH PRODUCT
-2241;N;NOT TILDE
-2242;N;MINUS TILDE
-2243;N;ASYMPTOTICALLY EQUAL TO
-2244;N;NOT ASYMPTOTICALLY EQUAL TO
-2245;N;APPROXIMATELY EQUAL TO
-2246;N;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
-2247;N;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
-2248;A;ALMOST EQUAL TO
-2249;N;NOT ALMOST EQUAL TO
-224A;N;ALMOST EQUAL OR EQUAL TO
-224B;N;TRIPLE TILDE
-224C;A;ALL EQUAL TO
-224D;N;EQUIVALENT TO
-224E;N;GEOMETRICALLY EQUIVALENT TO
-224F;N;DIFFERENCE BETWEEN
-2250;N;APPROACHES THE LIMIT
-2251;N;GEOMETRICALLY EQUAL TO
-2252;A;APPROXIMATELY EQUAL TO OR THE IMAGE OF
-2253;N;IMAGE OF OR APPROXIMATELY EQUAL TO
-2254;N;COLON EQUALS
-2255;N;EQUALS COLON
-2256;N;RING IN EQUAL TO
-2257;N;RING EQUAL TO
-2258;N;CORRESPONDS TO
-2259;N;ESTIMATES
-225A;N;EQUIANGULAR TO
-225B;N;STAR EQUALS
-225C;N;DELTA EQUAL TO
-225D;N;EQUAL TO BY DEFINITION
-225E;N;MEASURED BY
-225F;N;QUESTIONED EQUAL TO
-2260;A;NOT EQUAL TO
-2261;A;IDENTICAL TO
-2262;N;NOT IDENTICAL TO
-2263;N;STRICTLY EQUIVALENT TO
-2264;A;LESS-THAN OR EQUAL TO
-2265;A;GREATER-THAN OR EQUAL TO
-2266;A;LESS-THAN OVER EQUAL TO
-2267;A;GREATER-THAN OVER EQUAL TO
-2268;N;LESS-THAN BUT NOT EQUAL TO
-2269;N;GREATER-THAN BUT NOT EQUAL TO
-226A;A;MUCH LESS-THAN
-226B;A;MUCH GREATER-THAN
-226C;N;BETWEEN
-226D;N;NOT EQUIVALENT TO
-226E;A;NOT LESS-THAN
-226F;A;NOT GREATER-THAN
-2270;N;NEITHER LESS-THAN NOR EQUAL TO
-2271;N;NEITHER GREATER-THAN NOR EQUAL TO
-2272;N;LESS-THAN OR EQUIVALENT TO
-2273;N;GREATER-THAN OR EQUIVALENT TO
-2274;N;NEITHER LESS-THAN NOR EQUIVALENT TO
-2275;N;NEITHER GREATER-THAN NOR EQUIVALENT TO
-2276;N;LESS-THAN OR GREATER-THAN
-2277;N;GREATER-THAN OR LESS-THAN
-2278;N;NEITHER LESS-THAN NOR GREATER-THAN
-2279;N;NEITHER GREATER-THAN NOR LESS-THAN
-227A;N;PRECEDES
-227B;N;SUCCEEDS
-227C;N;PRECEDES OR EQUAL TO
-227D;N;SUCCEEDS OR EQUAL TO
-227E;N;PRECEDES OR EQUIVALENT TO
-227F;N;SUCCEEDS OR EQUIVALENT TO
-2280;N;DOES NOT PRECEDE
-2281;N;DOES NOT SUCCEED
-2282;A;SUBSET OF
-2283;A;SUPERSET OF
-2284;N;NOT A SUBSET OF
-2285;N;NOT A SUPERSET OF
-2286;A;SUBSET OF OR EQUAL TO
-2287;A;SUPERSET OF OR EQUAL TO
-2288;N;NEITHER A SUBSET OF NOR EQUAL TO
-2289;N;NEITHER A SUPERSET OF NOR EQUAL TO
-228A;N;SUBSET OF WITH NOT EQUAL TO
-228B;N;SUPERSET OF WITH NOT EQUAL TO
-228C;N;MULTISET
-228D;N;MULTISET MULTIPLICATION
-228E;N;MULTISET UNION
-228F;N;SQUARE IMAGE OF
-2290;N;SQUARE ORIGINAL OF
-2291;N;SQUARE IMAGE OF OR EQUAL TO
-2292;N;SQUARE ORIGINAL OF OR EQUAL TO
-2293;N;SQUARE CAP
-2294;N;SQUARE CUP
-2295;A;CIRCLED PLUS
-2296;N;CIRCLED MINUS
-2297;N;CIRCLED TIMES
-2298;N;CIRCLED DIVISION SLASH
-2299;A;CIRCLED DOT OPERATOR
-229A;N;CIRCLED RING OPERATOR
-229B;N;CIRCLED ASTERISK OPERATOR
-229C;N;CIRCLED EQUALS
-229D;N;CIRCLED DASH
-229E;N;SQUARED PLUS
-229F;N;SQUARED MINUS
-22A0;N;SQUARED TIMES
-22A1;N;SQUARED DOT OPERATOR
-22A2;N;RIGHT TACK
-22A3;N;LEFT TACK
-22A4;N;DOWN TACK
-22A5;A;UP TACK
-22A6;N;ASSERTION
-22A7;N;MODELS
-22A8;N;TRUE
-22A9;N;FORCES
-22AA;N;TRIPLE VERTICAL BAR RIGHT TURNSTILE
-22AB;N;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-22AC;N;DOES NOT PROVE
-22AD;N;NOT TRUE
-22AE;N;DOES NOT FORCE
-22AF;N;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-22B0;N;PRECEDES UNDER RELATION
-22B1;N;SUCCEEDS UNDER RELATION
-22B2;N;NORMAL SUBGROUP OF
-22B3;N;CONTAINS AS NORMAL SUBGROUP
-22B4;N;NORMAL SUBGROUP OF OR EQUAL TO
-22B5;N;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
-22B6;N;ORIGINAL OF
-22B7;N;IMAGE OF
-22B8;N;MULTIMAP
-22B9;N;HERMITIAN CONJUGATE MATRIX
-22BA;N;INTERCALATE
-22BB;N;XOR
-22BC;N;NAND
-22BD;N;NOR
-22BE;N;RIGHT ANGLE WITH ARC
-22BF;A;RIGHT TRIANGLE
-22C0;N;N-ARY LOGICAL AND
-22C1;N;N-ARY LOGICAL OR
-22C2;N;N-ARY INTERSECTION
-22C3;N;N-ARY UNION
-22C4;N;DIAMOND OPERATOR
-22C5;N;DOT OPERATOR
-22C6;N;STAR OPERATOR
-22C7;N;DIVISION TIMES
-22C8;N;BOWTIE
-22C9;N;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CA;N;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CB;N;LEFT SEMIDIRECT PRODUCT
-22CC;N;RIGHT SEMIDIRECT PRODUCT
-22CD;N;REVERSED TILDE EQUALS
-22CE;N;CURLY LOGICAL OR
-22CF;N;CURLY LOGICAL AND
-22D0;N;DOUBLE SUBSET
-22D1;N;DOUBLE SUPERSET
-22D2;N;DOUBLE INTERSECTION
-22D3;N;DOUBLE UNION
-22D4;N;PITCHFORK
-22D5;N;EQUAL AND PARALLEL TO
-22D6;N;LESS-THAN WITH DOT
-22D7;N;GREATER-THAN WITH DOT
-22D8;N;VERY MUCH LESS-THAN
-22D9;N;VERY MUCH GREATER-THAN
-22DA;N;LESS-THAN EQUAL TO OR GREATER-THAN
-22DB;N;GREATER-THAN EQUAL TO OR LESS-THAN
-22DC;N;EQUAL TO OR LESS-THAN
-22DD;N;EQUAL TO OR GREATER-THAN
-22DE;N;EQUAL TO OR PRECEDES
-22DF;N;EQUAL TO OR SUCCEEDS
-22E0;N;DOES NOT PRECEDE OR EQUAL
-22E1;N;DOES NOT SUCCEED OR EQUAL
-22E2;N;NOT SQUARE IMAGE OF OR EQUAL TO
-22E3;N;NOT SQUARE ORIGINAL OF OR EQUAL TO
-22E4;N;SQUARE IMAGE OF OR NOT EQUAL TO
-22E5;N;SQUARE ORIGINAL OF OR NOT EQUAL TO
-22E6;N;LESS-THAN BUT NOT EQUIVALENT TO
-22E7;N;GREATER-THAN BUT NOT EQUIVALENT TO
-22E8;N;PRECEDES BUT NOT EQUIVALENT TO
-22E9;N;SUCCEEDS BUT NOT EQUIVALENT TO
-22EA;N;NOT NORMAL SUBGROUP OF
-22EB;N;DOES NOT CONTAIN AS NORMAL SUBGROUP
-22EC;N;NOT NORMAL SUBGROUP OF OR EQUAL TO
-22ED;N;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
-22EE;N;VERTICAL ELLIPSIS
-22EF;N;MIDLINE HORIZONTAL ELLIPSIS
-22F0;N;UP RIGHT DIAGONAL ELLIPSIS
-22F1;N;DOWN RIGHT DIAGONAL ELLIPSIS
-2300;N;DIAMETER SIGN
-2301;N;ELECTRIC ARROW
-2302;N;HOUSE
-2303;N;UP ARROWHEAD
-2304;N;DOWN ARROWHEAD
-2305;N;PROJECTIVE
-2306;N;PERSPECTIVE
-2307;N;WAVY LINE
-2308;N;LEFT CEILING
-2309;N;RIGHT CEILING
-230A;N;LEFT FLOOR
-230B;N;RIGHT FLOOR
-230C;N;BOTTOM RIGHT CROP
-230D;N;BOTTOM LEFT CROP
-230E;N;TOP RIGHT CROP
-230F;N;TOP LEFT CROP
-2310;N;REVERSED NOT SIGN
-2311;N;SQUARE LOZENGE
-2312;A;ARC
-2313;N;SEGMENT
-2314;N;SECTOR
-2315;N;TELEPHONE RECORDER
-2316;N;POSITION INDICATOR
-2317;N;VIEWDATA SQUARE
-2318;N;PLACE OF INTEREST SIGN
-2319;N;TURNED NOT SIGN
-231A;N;WATCH
-231B;N;HOURGLASS
-231C;N;TOP LEFT CORNER
-231D;N;TOP RIGHT CORNER
-231E;N;BOTTOM LEFT CORNER
-231F;N;BOTTOM RIGHT CORNER
-2320;N;TOP HALF INTEGRAL
-2321;N;BOTTOM HALF INTEGRAL
-2322;N;FROWN
-2323;N;SMILE
-2324;N;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
-2325;N;OPTION KEY
-2326;N;ERASE TO THE RIGHT
-2327;N;X IN A RECTANGLE BOX
-2328;N;KEYBOARD
-2329;N;LEFT-POINTING ANGLE BRACKET
-232A;N;RIGHT-POINTING ANGLE BRACKET
-232B;N;ERASE TO THE LEFT
-232C;N;BENZENE RING
-232D;N;CYLINDRICITY
-232E;N;ALL AROUND-PROFILE
-232F;N;SYMMETRY
-2330;N;TOTAL RUNOUT
-2331;N;DIMENSION ORIGIN
-2332;N;CONICAL TAPER
-2333;N;SLOPE
-2334;N;COUNTERBORE
-2335;N;COUNTERSINK
-2336;N;APL FUNCTIONAL SYMBOL I-BEAM
-2337;N;APL FUNCTIONAL SYMBOL SQUISH QUAD
-2338;N;APL FUNCTIONAL SYMBOL QUAD EQUAL
-2339;N;APL FUNCTIONAL SYMBOL QUAD DIVIDE
-233A;N;APL FUNCTIONAL SYMBOL QUAD DIAMOND
-233B;N;APL FUNCTIONAL SYMBOL QUAD JOT
-233C;N;APL FUNCTIONAL SYMBOL QUAD CIRCLE
-233D;N;APL FUNCTIONAL SYMBOL CIRCLE STILE
-233E;N;APL FUNCTIONAL SYMBOL CIRCLE JOT
-233F;N;APL FUNCTIONAL SYMBOL SLASH BAR
-2340;N;APL FUNCTIONAL SYMBOL BACKSLASH BAR
-2341;N;APL FUNCTIONAL SYMBOL QUAD SLASH
-2342;N;APL FUNCTIONAL SYMBOL QUAD BACKSLASH
-2343;N;APL FUNCTIONAL SYMBOL QUAD LESS-THAN
-2344;N;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
-2345;N;APL FUNCTIONAL SYMBOL LEFTWARDS VANE
-2346;N;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
-2347;N;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
-2348;N;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
-2349;N;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
-234A;N;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
-234B;N;APL FUNCTIONAL SYMBOL DELTA STILE
-234C;N;APL FUNCTIONAL SYMBOL QUAD DOWN CARET
-234D;N;APL FUNCTIONAL SYMBOL QUAD DELTA
-234E;N;APL FUNCTIONAL SYMBOL DOWN TACK JOT
-234F;N;APL FUNCTIONAL SYMBOL UPWARDS VANE
-2350;N;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
-2351;N;APL FUNCTIONAL SYMBOL UP TACK OVERBAR
-2352;N;APL FUNCTIONAL SYMBOL DEL STILE
-2353;N;APL FUNCTIONAL SYMBOL QUAD UP CARET
-2354;N;APL FUNCTIONAL SYMBOL QUAD DEL
-2355;N;APL FUNCTIONAL SYMBOL UP TACK JOT
-2356;N;APL FUNCTIONAL SYMBOL DOWNWARDS VANE
-2357;N;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
-2358;N;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
-2359;N;APL FUNCTIONAL SYMBOL DELTA UNDERBAR
-235A;N;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
-235B;N;APL FUNCTIONAL SYMBOL JOT UNDERBAR
-235C;N;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
-235D;N;APL FUNCTIONAL SYMBOL UP SHOE JOT
-235E;N;APL FUNCTIONAL SYMBOL QUOTE QUAD
-235F;N;APL FUNCTIONAL SYMBOL CIRCLE STAR
-2360;N;APL FUNCTIONAL SYMBOL QUAD COLON
-2361;N;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
-2362;N;APL FUNCTIONAL SYMBOL DEL DIAERESIS
-2363;N;APL FUNCTIONAL SYMBOL STAR DIAERESIS
-2364;N;APL FUNCTIONAL SYMBOL JOT DIAERESIS
-2365;N;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
-2366;N;APL FUNCTIONAL SYMBOL DOWN SHOE STILE
-2367;N;APL FUNCTIONAL SYMBOL LEFT SHOE STILE
-2368;N;APL FUNCTIONAL SYMBOL TILDE DIAERESIS
-2369;N;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
-236A;N;APL FUNCTIONAL SYMBOL COMMA BAR
-236B;N;APL FUNCTIONAL SYMBOL DEL TILDE
-236C;N;APL FUNCTIONAL SYMBOL ZILDE
-236D;N;APL FUNCTIONAL SYMBOL STILE TILDE
-236E;N;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
-236F;N;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
-2370;N;APL FUNCTIONAL SYMBOL QUAD QUESTION
-2371;N;APL FUNCTIONAL SYMBOL DOWN CARET TILDE
-2372;N;APL FUNCTIONAL SYMBOL UP CARET TILDE
-2373;N;APL FUNCTIONAL SYMBOL IOTA
-2374;N;APL FUNCTIONAL SYMBOL RHO
-2375;N;APL FUNCTIONAL SYMBOL OMEGA
-2376;N;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
-2377;N;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
-2378;N;APL FUNCTIONAL SYMBOL IOTA UNDERBAR
-2379;N;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
-237A;N;APL FUNCTIONAL SYMBOL ALPHA
-237B;N;NOT CHECK MARK
-237D;N;SHOULDERED OPEN BOX
-237E;N;BELL SYMBOL
-237F;N;VERTICAL LINE WITH MIDDLE DOT
-2380;N;INSERTION SYMBOL
-2381;N;CONTINUOUS UNDERLINE SYMBOL
-2382;N;DISCONTINUOUS UNDERLINE SYMBOL
-2383;N;EMPHASIS SYMBOL
-2384;N;COMPOSITION SYMBOL
-2385;N;WHITE SQUARE WITH CENTRE VERTICAL LINE
-2386;N;ENTER SYMBOL
-2387;N;ALTERNATIVE KEY SYMBOL
-2388;N;HELM SYMBOL
-2389;N;CIRCLED HORIZONTAL BAR WITH NOTCH
-238A;N;CIRCLED TRIANGLE DOWN
-238B;N;BROKEN CIRCLE WITH NORTHWEST ARROW
-238C;N;UNDO SYMBOL
-238D;N;MONOSTABLE SYMBOL
-238E;N;HYSTERESIS SYMBOL
-238F;N;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
-2390;N;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
-2391;N;PASSIVE-PULL-DOWN-OUTPUT SYMBOL
-2392;N;PASSIVE-PULL-UP-OUTPUT SYMBOL
-2393;N;DIRECT CURRENT SYMBOL FORM TWO
-2394;N;SOFTWARE-FUNCTION SYMBOL
-2395;N;APL FUNCTIONAL SYMBOL QUAD
-2396;N;DECIMAL SEPARATOR KEY SYMBOL
-2397;N;PREVIOUS PAGE
-2398;N;NEXT PAGE
-2399;N;PRINT SCREEN SYMBOL
-239A;N;CLEAR SCREEN SYMBOL
-2400;N;SYMBOL FOR NULL
-2401;N;SYMBOL FOR START OF HEADING
-2402;N;SYMBOL FOR START OF TEXT
-2403;N;SYMBOL FOR END OF TEXT
-2404;N;SYMBOL FOR END OF TRANSMISSION
-2405;N;SYMBOL FOR ENQUIRY
-2406;N;SYMBOL FOR ACKNOWLEDGE
-2407;N;SYMBOL FOR BELL
-2408;N;SYMBOL FOR BACKSPACE
-2409;N;SYMBOL FOR HORIZONTAL TABULATION
-240A;N;SYMBOL FOR LINE FEED
-240B;N;SYMBOL FOR VERTICAL TABULATION
-240C;N;SYMBOL FOR FORM FEED
-240D;N;SYMBOL FOR CARRIAGE RETURN
-240E;N;SYMBOL FOR SHIFT OUT
-240F;N;SYMBOL FOR SHIFT IN
-2410;N;SYMBOL FOR DATA LINK ESCAPE
-2411;N;SYMBOL FOR DEVICE CONTROL ONE
-2412;N;SYMBOL FOR DEVICE CONTROL TWO
-2413;N;SYMBOL FOR DEVICE CONTROL THREE
-2414;N;SYMBOL FOR DEVICE CONTROL FOUR
-2415;N;SYMBOL FOR NEGATIVE ACKNOWLEDGE
-2416;N;SYMBOL FOR SYNCHRONOUS IDLE
-2417;N;SYMBOL FOR END OF TRANSMISSION BLOCK
-2418;N;SYMBOL FOR CANCEL
-2419;N;SYMBOL FOR END OF MEDIUM
-241A;N;SYMBOL FOR SUBSTITUTE
-241B;N;SYMBOL FOR ESCAPE
-241C;N;SYMBOL FOR FILE SEPARATOR
-241D;N;SYMBOL FOR GROUP SEPARATOR
-241E;N;SYMBOL FOR RECORD SEPARATOR
-241F;N;SYMBOL FOR UNIT SEPARATOR
-2420;N;SYMBOL FOR SPACE
-2421;N;SYMBOL FOR DELETE
-2422;N;BLANK SYMBOL
-2423;N;OPEN BOX
-2424;N;SYMBOL FOR NEWLINE
-2425;N;SYMBOL FOR DELETE FORM TWO
-2426;N;SYMBOL FOR SUBSTITUTE FORM TWO
-2440;N;OCR HOOK
-2441;N;OCR CHAIR
-2442;N;OCR FORK
-2443;N;OCR INVERTED FORK
-2444;N;OCR BELT BUCKLE
-2445;N;OCR BOW TIE
-2446;N;OCR BRANCH BANK IDENTIFICATION
-2447;N;OCR AMOUNT OF CHECK
-2448;N;OCR DASH
-2449;N;OCR CUSTOMER ACCOUNT NUMBER
-244A;N;OCR DOUBLE BACKSLASH
-2460;A;CIRCLED DIGIT ONE
-2461;A;CIRCLED DIGIT TWO
-2462;A;CIRCLED DIGIT THREE
-2463;A;CIRCLED DIGIT FOUR
-2464;A;CIRCLED DIGIT FIVE
-2465;A;CIRCLED DIGIT SIX
-2466;A;CIRCLED DIGIT SEVEN
-2467;A;CIRCLED DIGIT EIGHT
-2468;A;CIRCLED DIGIT NINE
-2469;A;CIRCLED NUMBER TEN
-246A;A;CIRCLED NUMBER ELEVEN
-246B;A;CIRCLED NUMBER TWELVE
-246C;A;CIRCLED NUMBER THIRTEEN
-246D;A;CIRCLED NUMBER FOURTEEN
-246E;A;CIRCLED NUMBER FIFTEEN
-246F;A;CIRCLED NUMBER SIXTEEN
-2470;A;CIRCLED NUMBER SEVENTEEN
-2471;A;CIRCLED NUMBER EIGHTEEN
-2472;A;CIRCLED NUMBER NINETEEN
-2473;A;CIRCLED NUMBER TWENTY
-2474;A;PARENTHESIZED DIGIT ONE
-2475;A;PARENTHESIZED DIGIT TWO
-2476;A;PARENTHESIZED DIGIT THREE
-2477;A;PARENTHESIZED DIGIT FOUR
-2478;A;PARENTHESIZED DIGIT FIVE
-2479;A;PARENTHESIZED DIGIT SIX
-247A;A;PARENTHESIZED DIGIT SEVEN
-247B;A;PARENTHESIZED DIGIT EIGHT
-247C;A;PARENTHESIZED DIGIT NINE
-247D;A;PARENTHESIZED NUMBER TEN
-247E;A;PARENTHESIZED NUMBER ELEVEN
-247F;A;PARENTHESIZED NUMBER TWELVE
-2480;A;PARENTHESIZED NUMBER THIRTEEN
-2481;A;PARENTHESIZED NUMBER FOURTEEN
-2482;A;PARENTHESIZED NUMBER FIFTEEN
-2483;A;PARENTHESIZED NUMBER SIXTEEN
-2484;A;PARENTHESIZED NUMBER SEVENTEEN
-2485;A;PARENTHESIZED NUMBER EIGHTEEN
-2486;A;PARENTHESIZED NUMBER NINETEEN
-2487;A;PARENTHESIZED NUMBER TWENTY
-2488;A;DIGIT ONE FULL STOP
-2489;A;DIGIT TWO FULL STOP
-248A;A;DIGIT THREE FULL STOP
-248B;A;DIGIT FOUR FULL STOP
-248C;A;DIGIT FIVE FULL STOP
-248D;A;DIGIT SIX FULL STOP
-248E;A;DIGIT SEVEN FULL STOP
-248F;A;DIGIT EIGHT FULL STOP
-2490;A;DIGIT NINE FULL STOP
-2491;A;NUMBER TEN FULL STOP
-2492;A;NUMBER ELEVEN FULL STOP
-2493;A;NUMBER TWELVE FULL STOP
-2494;A;NUMBER THIRTEEN FULL STOP
-2495;A;NUMBER FOURTEEN FULL STOP
-2496;A;NUMBER FIFTEEN FULL STOP
-2497;A;NUMBER SIXTEEN FULL STOP
-2498;A;NUMBER SEVENTEEN FULL STOP
-2499;A;NUMBER EIGHTEEN FULL STOP
-249A;A;NUMBER NINETEEN FULL STOP
-249B;A;NUMBER TWENTY FULL STOP
-249C;A;PARENTHESIZED LATIN SMALL LETTER A
-249D;A;PARENTHESIZED LATIN SMALL LETTER B
-249E;A;PARENTHESIZED LATIN SMALL LETTER C
-249F;A;PARENTHESIZED LATIN SMALL LETTER D
-24A0;A;PARENTHESIZED LATIN SMALL LETTER E
-24A1;A;PARENTHESIZED LATIN SMALL LETTER F
-24A2;A;PARENTHESIZED LATIN SMALL LETTER G
-24A3;A;PARENTHESIZED LATIN SMALL LETTER H
-24A4;A;PARENTHESIZED LATIN SMALL LETTER I
-24A5;A;PARENTHESIZED LATIN SMALL LETTER J
-24A6;A;PARENTHESIZED LATIN SMALL LETTER K
-24A7;A;PARENTHESIZED LATIN SMALL LETTER L
-24A8;A;PARENTHESIZED LATIN SMALL LETTER M
-24A9;A;PARENTHESIZED LATIN SMALL LETTER N
-24AA;A;PARENTHESIZED LATIN SMALL LETTER O
-24AB;A;PARENTHESIZED LATIN SMALL LETTER P
-24AC;A;PARENTHESIZED LATIN SMALL LETTER Q
-24AD;A;PARENTHESIZED LATIN SMALL LETTER R
-24AE;A;PARENTHESIZED LATIN SMALL LETTER S
-24AF;A;PARENTHESIZED LATIN SMALL LETTER T
-24B0;A;PARENTHESIZED LATIN SMALL LETTER U
-24B1;A;PARENTHESIZED LATIN SMALL LETTER V
-24B2;A;PARENTHESIZED LATIN SMALL LETTER W
-24B3;A;PARENTHESIZED LATIN SMALL LETTER X
-24B4;A;PARENTHESIZED LATIN SMALL LETTER Y
-24B5;A;PARENTHESIZED LATIN SMALL LETTER Z
-24B6;A;CIRCLED LATIN CAPITAL LETTER A
-24B7;A;CIRCLED LATIN CAPITAL LETTER B
-24B8;A;CIRCLED LATIN CAPITAL LETTER C
-24B9;A;CIRCLED LATIN CAPITAL LETTER D
-24BA;A;CIRCLED LATIN CAPITAL LETTER E
-24BB;A;CIRCLED LATIN CAPITAL LETTER F
-24BC;A;CIRCLED LATIN CAPITAL LETTER G
-24BD;A;CIRCLED LATIN CAPITAL LETTER H
-24BE;A;CIRCLED LATIN CAPITAL LETTER I
-24BF;A;CIRCLED LATIN CAPITAL LETTER J
-24C0;N;CIRCLED LATIN CAPITAL LETTER K
-24C1;N;CIRCLED LATIN CAPITAL LETTER L
-24C2;N;CIRCLED LATIN CAPITAL LETTER M
-24C3;N;CIRCLED LATIN CAPITAL LETTER N
-24C4;N;CIRCLED LATIN CAPITAL LETTER O
-24C5;N;CIRCLED LATIN CAPITAL LETTER P
-24C6;N;CIRCLED LATIN CAPITAL LETTER Q
-24C7;N;CIRCLED LATIN CAPITAL LETTER R
-24C8;N;CIRCLED LATIN CAPITAL LETTER S
-24C9;N;CIRCLED LATIN CAPITAL LETTER T
-24CA;N;CIRCLED LATIN CAPITAL LETTER U
-24CB;N;CIRCLED LATIN CAPITAL LETTER V
-24CC;N;CIRCLED LATIN CAPITAL LETTER W
-24CD;N;CIRCLED LATIN CAPITAL LETTER X
-24CE;N;CIRCLED LATIN CAPITAL LETTER Y
-24CF;N;CIRCLED LATIN CAPITAL LETTER Z
-24D0;A;CIRCLED LATIN SMALL LETTER A
-24D1;A;CIRCLED LATIN SMALL LETTER B
-24D2;A;CIRCLED LATIN SMALL LETTER C
-24D3;A;CIRCLED LATIN SMALL LETTER D
-24D4;A;CIRCLED LATIN SMALL LETTER E
-24D5;A;CIRCLED LATIN SMALL LETTER F
-24D6;A;CIRCLED LATIN SMALL LETTER G
-24D7;A;CIRCLED LATIN SMALL LETTER H
-24D8;A;CIRCLED LATIN SMALL LETTER I
-24D9;A;CIRCLED LATIN SMALL LETTER J
-24DA;A;CIRCLED LATIN SMALL LETTER K
-24DB;A;CIRCLED LATIN SMALL LETTER L
-24DC;A;CIRCLED LATIN SMALL LETTER M
-24DD;A;CIRCLED LATIN SMALL LETTER N
-24DE;A;CIRCLED LATIN SMALL LETTER O
-24DF;A;CIRCLED LATIN SMALL LETTER P
-24E0;A;CIRCLED LATIN SMALL LETTER Q
-24E1;A;CIRCLED LATIN SMALL LETTER R
-24E2;A;CIRCLED LATIN SMALL LETTER S
-24E3;A;CIRCLED LATIN SMALL LETTER T
-24E4;A;CIRCLED LATIN SMALL LETTER U
-24E5;A;CIRCLED LATIN SMALL LETTER V
-24E6;A;CIRCLED LATIN SMALL LETTER W
-24E7;A;CIRCLED LATIN SMALL LETTER X
-24E8;A;CIRCLED LATIN SMALL LETTER Y
-24E9;A;CIRCLED LATIN SMALL LETTER Z
-24EA;N;CIRCLED DIGIT ZERO
-2500;A;BOX DRAWINGS LIGHT HORIZONTAL
-2501;A;BOX DRAWINGS HEAVY HORIZONTAL
-2502;A;BOX DRAWINGS LIGHT VERTICAL
-2503;A;BOX DRAWINGS HEAVY VERTICAL
-2504;A;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
-2505;A;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
-2506;A;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
-2507;A;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
-2508;A;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
-2509;A;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
-250A;A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
-250B;A;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
-250C;A;BOX DRAWINGS LIGHT DOWN AND RIGHT
-250D;A;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
-250E;A;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
-250F;A;BOX DRAWINGS HEAVY DOWN AND RIGHT
-2510;A;BOX DRAWINGS LIGHT DOWN AND LEFT
-2511;A;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
-2512;A;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
-2513;A;BOX DRAWINGS HEAVY DOWN AND LEFT
-2514;A;BOX DRAWINGS LIGHT UP AND RIGHT
-2515;A;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
-2516;A;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
-2517;A;BOX DRAWINGS HEAVY UP AND RIGHT
-2518;A;BOX DRAWINGS LIGHT UP AND LEFT
-2519;A;BOX DRAWINGS UP LIGHT AND LEFT HEAVY
-251A;A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT
-251B;A;BOX DRAWINGS HEAVY UP AND LEFT
-251C;A;BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-251D;A;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
-251E;A;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
-251F;A;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
-2520;A;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
-2521;A;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
-2522;A;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
-2523;A;BOX DRAWINGS HEAVY VERTICAL AND RIGHT
-2524;A;BOX DRAWINGS LIGHT VERTICAL AND LEFT
-2525;A;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
-2526;A;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
-2527;A;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
-2528;A;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
-2529;A;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
-252A;A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
-252B;A;BOX DRAWINGS HEAVY VERTICAL AND LEFT
-252C;A;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-252D;A;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
-252E;A;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
-252F;A;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
-2530;A;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
-2531;A;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
-2532;A;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
-2533;A;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
-2534;A;BOX DRAWINGS LIGHT UP AND HORIZONTAL
-2535;A;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
-2536;A;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
-2537;A;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
-2538;A;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
-2539;A;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
-253A;A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
-253B;A;BOX DRAWINGS HEAVY UP AND HORIZONTAL
-253C;A;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-253D;A;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
-253E;A;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
-253F;A;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
-2540;A;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
-2541;A;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
-2542;A;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
-2543;A;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
-2544;A;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
-2545;A;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
-2546;A;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
-2547;A;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
-2548;A;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
-2549;A;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
-254A;A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
-254B;A;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
-254C;N;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
-254D;N;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
-254E;N;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
-254F;N;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
-2550;A;BOX DRAWINGS DOUBLE HORIZONTAL
-2551;A;BOX DRAWINGS DOUBLE VERTICAL
-2552;A;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-2553;A;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-2554;A;BOX DRAWINGS DOUBLE DOWN AND RIGHT
-2555;A;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-2556;A;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-2557;A;BOX DRAWINGS DOUBLE DOWN AND LEFT
-2558;A;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-2559;A;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-255A;A;BOX DRAWINGS DOUBLE UP AND RIGHT
-255B;A;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-255C;A;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-255D;A;BOX DRAWINGS DOUBLE UP AND LEFT
-255E;A;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-255F;A;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-2560;A;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-2561;A;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-2562;A;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-2563;A;BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-2564;A;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-2565;A;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-2566;A;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-2567;A;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-2568;A;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-2569;A;BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-256A;A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-256B;A;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-256C;A;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-256D;A;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
-256E;A;BOX DRAWINGS LIGHT ARC DOWN AND LEFT
-256F;A;BOX DRAWINGS LIGHT ARC UP AND LEFT
-2570;A;BOX DRAWINGS LIGHT ARC UP AND RIGHT
-2571;A;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
-2572;A;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
-2573;A;BOX DRAWINGS LIGHT DIAGONAL CROSS
-2574;A;BOX DRAWINGS LIGHT LEFT
-2575;N;BOX DRAWINGS LIGHT UP
-2576;N;BOX DRAWINGS LIGHT RIGHT
-2577;N;BOX DRAWINGS LIGHT DOWN
-2578;N;BOX DRAWINGS HEAVY LEFT
-2579;N;BOX DRAWINGS HEAVY UP
-257A;N;BOX DRAWINGS HEAVY RIGHT
-257B;N;BOX DRAWINGS HEAVY DOWN
-257C;N;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
-257D;N;BOX DRAWINGS LIGHT UP AND HEAVY DOWN
-257E;N;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
-257F;N;BOX DRAWINGS HEAVY UP AND LIGHT DOWN
-2580;A;UPPER HALF BLOCK
-2581;A;LOWER ONE EIGHTH BLOCK
-2582;A;LOWER ONE QUARTER BLOCK
-2583;A;LOWER THREE EIGHTHS BLOCK
-2584;A;LOWER HALF BLOCK
-2585;A;LOWER FIVE EIGHTHS BLOCK
-2586;A;LOWER THREE QUARTERS BLOCK
-2587;A;LOWER SEVEN EIGHTHS BLOCK
-2588;A;FULL BLOCK
-2589;A;LEFT SEVEN EIGHTHS BLOCK
-258A;A;LEFT THREE QUARTERS BLOCK
-258B;A;LEFT FIVE EIGHTHS BLOCK
-258C;A;LEFT HALF BLOCK
-258D;A;LEFT THREE EIGHTHS BLOCK
-258E;A;LEFT ONE QUARTER BLOCK
-258F;A;LEFT ONE EIGHTH BLOCK
-2590;N;RIGHT HALF BLOCK
-2591;N;LIGHT SHADE
-2592;A;MEDIUM SHADE
-2593;A;DARK SHADE
-2594;A;UPPER ONE EIGHTH BLOCK
-2595;A;RIGHT ONE EIGHTH BLOCK
-25A0;A;BLACK SQUARE
-25A1;A;WHITE SQUARE
-25A2;N;WHITE SQUARE WITH ROUNDED CORNERS
-25A3;A;WHITE SQUARE CONTAINING BLACK SMALL SQUARE
-25A4;A;SQUARE WITH HORIZONTAL FILL
-25A5;A;SQUARE WITH VERTICAL FILL
-25A6;A;SQUARE WITH ORTHOGONAL CROSSHATCH FILL
-25A7;A;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
-25A8;A;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
-25A9;A;SQUARE WITH DIAGONAL CROSSHATCH FILL
-25AA;N;BLACK SMALL SQUARE
-25AB;N;WHITE SMALL SQUARE
-25AC;N;BLACK RECTANGLE
-25AD;N;WHITE RECTANGLE
-25AE;N;BLACK VERTICAL RECTANGLE
-25AF;N;WHITE VERTICAL RECTANGLE
-25B0;N;BLACK PARALLELOGRAM
-25B1;N;WHITE PARALLELOGRAM
-25B2;A;BLACK UP-POINTING TRIANGLE
-25B3;A;WHITE UP-POINTING TRIANGLE
-25B4;N;BLACK UP-POINTING SMALL TRIANGLE
-25B5;N;WHITE UP-POINTING SMALL TRIANGLE
-25B6;A;BLACK RIGHT-POINTING TRIANGLE
-25B7;A;WHITE RIGHT-POINTING TRIANGLE
-25B8;N;BLACK RIGHT-POINTING SMALL TRIANGLE
-25B9;N;WHITE RIGHT-POINTING SMALL TRIANGLE
-25BA;N;BLACK RIGHT-POINTING POINTER
-25BB;N;WHITE RIGHT-POINTING POINTER
-25BC;A;BLACK DOWN-POINTING TRIANGLE
-25BD;A;WHITE DOWN-POINTING TRIANGLE
-25BE;N;BLACK DOWN-POINTING SMALL TRIANGLE
-25BF;N;WHITE DOWN-POINTING SMALL TRIANGLE
-25C0;A;BLACK LEFT-POINTING TRIANGLE
-25C1;A;WHITE LEFT-POINTING TRIANGLE
-25C2;N;BLACK LEFT-POINTING SMALL TRIANGLE
-25C3;N;WHITE LEFT-POINTING SMALL TRIANGLE
-25C4;N;BLACK LEFT-POINTING POINTER
-25C5;N;WHITE LEFT-POINTING POINTER
-25C6;A;BLACK DIAMOND
-25C7;A;WHITE DIAMOND
-25C8;A;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
-25C9;N;FISHEYE
-25CA;N;LOZENGE
-25CB;A;WHITE CIRCLE
-25CC;N;DOTTED CIRCLE
-25CD;N;CIRCLE WITH VERTICAL FILL
-25CE;A;BULLSEYE
-25CF;A;BLACK CIRCLE
-25D0;A;CIRCLE WITH LEFT HALF BLACK
-25D1;A;CIRCLE WITH RIGHT HALF BLACK
-25D2;N;CIRCLE WITH LOWER HALF BLACK
-25D3;N;CIRCLE WITH UPPER HALF BLACK
-25D4;N;CIRCLE WITH UPPER RIGHT QUADRANT BLACK
-25D5;N;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
-25D6;N;LEFT HALF BLACK CIRCLE
-25D7;N;RIGHT HALF BLACK CIRCLE
-25D8;N;INVERSE BULLET
-25D9;N;INVERSE WHITE CIRCLE
-25DA;N;UPPER HALF INVERSE WHITE CIRCLE
-25DB;N;LOWER HALF INVERSE WHITE CIRCLE
-25DC;N;UPPER LEFT QUADRANT CIRCULAR ARC
-25DD;N;UPPER RIGHT QUADRANT CIRCULAR ARC
-25DE;N;LOWER RIGHT QUADRANT CIRCULAR ARC
-25DF;N;LOWER LEFT QUADRANT CIRCULAR ARC
-25E0;N;UPPER HALF CIRCLE
-25E1;N;LOWER HALF CIRCLE
-25E2;A;BLACK LOWER RIGHT TRIANGLE
-25E3;A;BLACK LOWER LEFT TRIANGLE
-25E4;A;BLACK UPPER LEFT TRIANGLE
-25E5;A;BLACK UPPER RIGHT TRIANGLE
-25E6;N;WHITE BULLET
-25E7;N;SQUARE WITH LEFT HALF BLACK
-25E8;N;SQUARE WITH RIGHT HALF BLACK
-25E9;N;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
-25EA;N;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
-25EB;N;WHITE SQUARE WITH VERTICAL BISECTING LINE
-25EC;N;WHITE UP-POINTING TRIANGLE WITH DOT
-25ED;N;UP-POINTING TRIANGLE WITH LEFT HALF BLACK
-25EE;N;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
-25EF;A;LARGE CIRCLE
-25F0;N;WHITE SQUARE WITH UPPER LEFT QUADRANT
-25F1;N;WHITE SQUARE WITH LOWER LEFT QUADRANT
-25F2;N;WHITE SQUARE WITH LOWER RIGHT QUADRANT
-25F3;N;WHITE SQUARE WITH UPPER RIGHT QUADRANT
-25F4;N;WHITE CIRCLE WITH UPPER LEFT QUADRANT
-25F5;N;WHITE CIRCLE WITH LOWER LEFT QUADRANT
-25F6;N;WHITE CIRCLE WITH LOWER RIGHT QUADRANT
-25F7;N;WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-2600;N;BLACK SUN WITH RAYS
-2601;N;CLOUD
-2602;N;UMBRELLA
-2603;N;SNOWMAN
-2604;N;COMET
-2605;A;BLACK STAR
-2606;A;WHITE STAR
-2607;N;LIGHTNING
-2608;N;THUNDERSTORM
-2609;A;SUN
-260A;N;ASCENDING NODE
-260B;N;DESCENDING NODE
-260C;N;CONJUNCTION
-260D;N;OPPOSITION
-260E;A;BLACK TELEPHONE
-260F;A;WHITE TELEPHONE
-2610;N;BALLOT BOX
-2611;N;BALLOT BOX WITH CHECK
-2612;N;BALLOT BOX WITH X
-2613;N;SALTIRE
-2619;N;REVERSED ROTATED FLORAL HEART BULLET
-261A;N;BLACK LEFT POINTING INDEX
-261B;N;BLACK RIGHT POINTING INDEX
-261C;A;WHITE LEFT POINTING INDEX
-261D;N;WHITE UP POINTING INDEX
-261E;A;WHITE RIGHT POINTING INDEX
-261F;N;WHITE DOWN POINTING INDEX
-2620;N;SKULL AND CROSSBONES
-2621;N;CAUTION SIGN
-2622;N;RADIOACTIVE SIGN
-2623;N;BIOHAZARD SIGN
-2624;N;CADUCEUS
-2625;N;ANKH
-2626;N;ORTHODOX CROSS
-2627;N;CHI RHO
-2628;N;CROSS OF LORRAINE
-2629;N;CROSS OF JERUSALEM
-262A;N;STAR AND CRESCENT
-262B;N;FARSI SYMBOL
-262C;N;ADI SHAKTI
-262D;N;HAMMER AND SICKLE
-262E;N;PEACE SYMBOL
-262F;N;YIN YANG
-2630;N;TRIGRAM FOR HEAVEN
-2631;N;TRIGRAM FOR LAKE
-2632;N;TRIGRAM FOR FIRE
-2633;N;TRIGRAM FOR THUNDER
-2634;N;TRIGRAM FOR WIND
-2635;N;TRIGRAM FOR WATER
-2636;N;TRIGRAM FOR MOUNTAIN
-2637;N;TRIGRAM FOR EARTH
-2638;N;WHEEL OF DHARMA
-2639;N;WHITE FROWNING FACE
-263A;N;WHITE SMILING FACE
-263B;N;BLACK SMILING FACE
-263C;N;WHITE SUN WITH RAYS
-263D;N;FIRST QUARTER MOON
-263E;N;LAST QUARTER MOON
-263F;N;MERCURY
-2640;A;FEMALE SIGN
-2641;N;EARTH
-2642;A;MALE SIGN
-2643;N;JUPITER
-2644;N;SATURN
-2645;N;URANUS
-2646;N;NEPTUNE
-2647;N;PLUTO
-2648;N;ARIES
-2649;N;TAURUS
-264A;N;GEMINI
-264B;N;CANCER
-264C;N;LEO
-264D;N;VIRGO
-264E;N;LIBRA
-264F;N;SCORPIUS
-2650;N;SAGITTARIUS
-2651;N;CAPRICORN
-2652;N;AQUARIUS
-2653;N;PISCES
-2654;N;WHITE CHESS KING
-2655;N;WHITE CHESS QUEEN
-2656;N;WHITE CHESS ROOK
-2657;N;WHITE CHESS BISHOP
-2658;N;WHITE CHESS KNIGHT
-2659;N;WHITE CHESS PAWN
-265A;N;BLACK CHESS KING
-265B;N;BLACK CHESS QUEEN
-265C;N;BLACK CHESS ROOK
-265D;N;BLACK CHESS BISHOP
-265E;N;BLACK CHESS KNIGHT
-265F;N;BLACK CHESS PAWN
-2660;A;BLACK SPADE SUIT
-2661;A;WHITE HEART SUIT
-2662;N;WHITE DIAMOND SUIT
-2663;A;BLACK CLUB SUIT
-2664;A;WHITE SPADE SUIT
-2665;A;BLACK HEART SUIT
-2666;N;BLACK DIAMOND SUIT
-2667;A;WHITE CLUB SUIT
-2668;A;HOT SPRINGS
-2669;A;QUARTER NOTE
-266A;A;EIGHTH NOTE
-266B;N;BEAMED EIGHTH NOTES
-266C;A;BEAMED SIXTEENTH NOTES
-266D;A;MUSIC FLAT SIGN
-266E;N;MUSIC NATURAL SIGN
-266F;A;MUSIC SHARP SIGN
-2670;N;WEST SYRIAC CROSS
-2671;N;EAST SYRIAC CROSS
-2701;N;UPPER BLADE SCISSORS
-2702;N;BLACK SCISSORS
-2703;N;LOWER BLADE SCISSORS
-2704;N;WHITE SCISSORS
-2706;N;TELEPHONE LOCATION SIGN
-2707;N;TAPE DRIVE
-2708;N;AIRPLANE
-2709;N;ENVELOPE
-270C;N;VICTORY HAND
-270D;N;WRITING HAND
-270E;N;LOWER RIGHT PENCIL
-270F;N;PENCIL
-2710;N;UPPER RIGHT PENCIL
-2711;N;WHITE NIB
-2712;N;BLACK NIB
-2713;N;CHECK MARK
-2714;N;HEAVY CHECK MARK
-2715;N;MULTIPLICATION X
-2716;N;HEAVY MULTIPLICATION X
-2717;N;BALLOT X
-2718;N;HEAVY BALLOT X
-2719;N;OUTLINED GREEK CROSS
-271A;N;HEAVY GREEK CROSS
-271B;N;OPEN CENTRE CROSS
-271C;N;HEAVY OPEN CENTRE CROSS
-271D;N;LATIN CROSS
-271E;N;SHADOWED WHITE LATIN CROSS
-271F;N;OUTLINED LATIN CROSS
-2720;N;MALTESE CROSS
-2721;N;STAR OF DAVID
-2722;N;FOUR TEARDROP-SPOKED ASTERISK
-2723;N;FOUR BALLOON-SPOKED ASTERISK
-2724;N;HEAVY FOUR BALLOON-SPOKED ASTERISK
-2725;N;FOUR CLUB-SPOKED ASTERISK
-2726;N;BLACK FOUR POINTED STAR
-2727;N;WHITE FOUR POINTED STAR
-2729;N;STRESS OUTLINED WHITE STAR
-272A;N;CIRCLED WHITE STAR
-272B;N;OPEN CENTRE BLACK STAR
-272C;N;BLACK CENTRE WHITE STAR
-272D;N;OUTLINED BLACK STAR
-272E;N;HEAVY OUTLINED BLACK STAR
-272F;N;PINWHEEL STAR
-2730;N;SHADOWED WHITE STAR
-2731;N;HEAVY ASTERISK
-2732;N;OPEN CENTRE ASTERISK
-2733;N;EIGHT SPOKED ASTERISK
-2734;N;EIGHT POINTED BLACK STAR
-2735;N;EIGHT POINTED PINWHEEL STAR
-2736;N;SIX POINTED BLACK STAR
-2737;N;EIGHT POINTED RECTILINEAR BLACK STAR
-2738;N;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
-2739;N;TWELVE POINTED BLACK STAR
-273A;N;SIXTEEN POINTED ASTERISK
-273B;N;TEARDROP-SPOKED ASTERISK
-273C;N;OPEN CENTRE TEARDROP-SPOKED ASTERISK
-273D;N;HEAVY TEARDROP-SPOKED ASTERISK
-273E;N;SIX PETALLED BLACK AND WHITE FLORETTE
-273F;N;BLACK FLORETTE
-2740;N;WHITE FLORETTE
-2741;N;EIGHT PETALLED OUTLINED BLACK FLORETTE
-2742;N;CIRCLED OPEN CENTRE EIGHT POINTED STAR
-2743;N;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
-2744;N;SNOWFLAKE
-2745;N;TIGHT TRIFOLIATE SNOWFLAKE
-2746;N;HEAVY CHEVRON SNOWFLAKE
-2747;N;SPARKLE
-2748;N;HEAVY SPARKLE
-2749;N;BALLOON-SPOKED ASTERISK
-274A;N;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274B;N;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274D;N;SHADOWED WHITE CIRCLE
-274F;N;LOWER RIGHT DROP-SHADOWED WHITE SQUARE
-2750;N;UPPER RIGHT DROP-SHADOWED WHITE SQUARE
-2751;N;LOWER RIGHT SHADOWED WHITE SQUARE
-2752;N;UPPER RIGHT SHADOWED WHITE SQUARE
-2756;N;BLACK DIAMOND MINUS WHITE X
-2758;N;LIGHT VERTICAL BAR
-2759;N;MEDIUM VERTICAL BAR
-275A;N;HEAVY VERTICAL BAR
-275B;N;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
-275C;N;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
-275D;N;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
-275E;N;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-2761;N;CURVED STEM PARAGRAPH SIGN ORNAMENT
-2762;N;HEAVY EXCLAMATION MARK ORNAMENT
-2763;N;HEAVY HEART EXCLAMATION MARK ORNAMENT
-2764;N;HEAVY BLACK HEART
-2765;N;ROTATED HEAVY BLACK HEART BULLET
-2766;N;FLORAL HEART
-2767;N;ROTATED FLORAL HEART BULLET
-2776;N;DINGBAT NEGATIVE CIRCLED DIGIT ONE
-2777;N;DINGBAT NEGATIVE CIRCLED DIGIT TWO
-2778;N;DINGBAT NEGATIVE CIRCLED DIGIT THREE
-2779;N;DINGBAT NEGATIVE CIRCLED DIGIT FOUR
-277A;N;DINGBAT NEGATIVE CIRCLED DIGIT FIVE
-277B;N;DINGBAT NEGATIVE CIRCLED DIGIT SIX
-277C;N;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
-277D;N;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
-277E;N;DINGBAT NEGATIVE CIRCLED DIGIT NINE
-277F;N;DINGBAT NEGATIVE CIRCLED NUMBER TEN
-2780;N;DINGBAT CIRCLED SANS-SERIF DIGIT ONE
-2781;N;DINGBAT CIRCLED SANS-SERIF DIGIT TWO
-2782;N;DINGBAT CIRCLED SANS-SERIF DIGIT THREE
-2783;N;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
-2784;N;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
-2785;N;DINGBAT CIRCLED SANS-SERIF DIGIT SIX
-2786;N;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
-2787;N;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
-2788;N;DINGBAT CIRCLED SANS-SERIF DIGIT NINE
-2789;N;DINGBAT CIRCLED SANS-SERIF NUMBER TEN
-278A;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
-278B;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
-278C;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
-278D;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
-278E;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
-278F;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
-2790;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
-2791;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
-2792;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
-2793;N;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
-2794;N;HEAVY WIDE-HEADED RIGHTWARDS ARROW
-2798;N;HEAVY SOUTH EAST ARROW
-2799;N;HEAVY RIGHTWARDS ARROW
-279A;N;HEAVY NORTH EAST ARROW
-279B;N;DRAFTING POINT RIGHTWARDS ARROW
-279C;N;HEAVY ROUND-TIPPED RIGHTWARDS ARROW
-279D;N;TRIANGLE-HEADED RIGHTWARDS ARROW
-279E;N;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
-279F;N;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-27A0;N;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-27A1;N;BLACK RIGHTWARDS ARROW
-27A2;N;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
-27A3;N;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
-27A4;N;BLACK RIGHTWARDS ARROWHEAD
-27A5;N;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
-27A6;N;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
-27A7;N;SQUAT BLACK RIGHTWARDS ARROW
-27A8;N;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
-27A9;N;RIGHT-SHADED WHITE RIGHTWARDS ARROW
-27AA;N;LEFT-SHADED WHITE RIGHTWARDS ARROW
-27AB;N;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-27AC;N;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-27AD;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27AE;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27AF;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B1;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B2;N;CIRCLED HEAVY WHITE RIGHTWARDS ARROW
-27B3;N;WHITE-FEATHERED RIGHTWARDS ARROW
-27B4;N;BLACK-FEATHERED SOUTH EAST ARROW
-27B5;N;BLACK-FEATHERED RIGHTWARDS ARROW
-27B6;N;BLACK-FEATHERED NORTH EAST ARROW
-27B7;N;HEAVY BLACK-FEATHERED SOUTH EAST ARROW
-27B8;N;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
-27B9;N;HEAVY BLACK-FEATHERED NORTH EAST ARROW
-27BA;N;TEARDROP-BARBED RIGHTWARDS ARROW
-27BB;N;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
-27BC;N;WEDGE-TAILED RIGHTWARDS ARROW
-27BD;N;HEAVY WEDGE-TAILED RIGHTWARDS ARROW
-27BE;N;OPEN-OUTLINED RIGHTWARDS ARROW
-2800;N;BRAILLE PATTERN BLANK
-2801;N;BRAILLE PATTERN DOTS-1
-2802;N;BRAILLE PATTERN DOTS-2
-2803;N;BRAILLE PATTERN DOTS-12
-2804;N;BRAILLE PATTERN DOTS-3
-2805;N;BRAILLE PATTERN DOTS-13
-2806;N;BRAILLE PATTERN DOTS-23
-2807;N;BRAILLE PATTERN DOTS-123
-2808;N;BRAILLE PATTERN DOTS-4
-2809;N;BRAILLE PATTERN DOTS-14
-280A;N;BRAILLE PATTERN DOTS-24
-280B;N;BRAILLE PATTERN DOTS-124
-280C;N;BRAILLE PATTERN DOTS-34
-280D;N;BRAILLE PATTERN DOTS-134
-280E;N;BRAILLE PATTERN DOTS-234
-280F;N;BRAILLE PATTERN DOTS-1234
-2810;N;BRAILLE PATTERN DOTS-5
-2811;N;BRAILLE PATTERN DOTS-15
-2812;N;BRAILLE PATTERN DOTS-25
-2813;N;BRAILLE PATTERN DOTS-125
-2814;N;BRAILLE PATTERN DOTS-35
-2815;N;BRAILLE PATTERN DOTS-135
-2816;N;BRAILLE PATTERN DOTS-235
-2817;N;BRAILLE PATTERN DOTS-1235
-2818;N;BRAILLE PATTERN DOTS-45
-2819;N;BRAILLE PATTERN DOTS-145
-281A;N;BRAILLE PATTERN DOTS-245
-281B;N;BRAILLE PATTERN DOTS-1245
-281C;N;BRAILLE PATTERN DOTS-345
-281D;N;BRAILLE PATTERN DOTS-1345
-281E;N;BRAILLE PATTERN DOTS-2345
-281F;N;BRAILLE PATTERN DOTS-12345
-2820;N;BRAILLE PATTERN DOTS-6
-2821;N;BRAILLE PATTERN DOTS-16
-2822;N;BRAILLE PATTERN DOTS-26
-2823;N;BRAILLE PATTERN DOTS-126
-2824;N;BRAILLE PATTERN DOTS-36
-2825;N;BRAILLE PATTERN DOTS-136
-2826;N;BRAILLE PATTERN DOTS-236
-2827;N;BRAILLE PATTERN DOTS-1236
-2828;N;BRAILLE PATTERN DOTS-46
-2829;N;BRAILLE PATTERN DOTS-146
-282A;N;BRAILLE PATTERN DOTS-246
-282B;N;BRAILLE PATTERN DOTS-1246
-282C;N;BRAILLE PATTERN DOTS-346
-282D;N;BRAILLE PATTERN DOTS-1346
-282E;N;BRAILLE PATTERN DOTS-2346
-282F;N;BRAILLE PATTERN DOTS-12346
-2830;N;BRAILLE PATTERN DOTS-56
-2831;N;BRAILLE PATTERN DOTS-156
-2832;N;BRAILLE PATTERN DOTS-256
-2833;N;BRAILLE PATTERN DOTS-1256
-2834;N;BRAILLE PATTERN DOTS-356
-2835;N;BRAILLE PATTERN DOTS-1356
-2836;N;BRAILLE PATTERN DOTS-2356
-2837;N;BRAILLE PATTERN DOTS-12356
-2838;N;BRAILLE PATTERN DOTS-456
-2839;N;BRAILLE PATTERN DOTS-1456
-283A;N;BRAILLE PATTERN DOTS-2456
-283B;N;BRAILLE PATTERN DOTS-12456
-283C;N;BRAILLE PATTERN DOTS-3456
-283D;N;BRAILLE PATTERN DOTS-13456
-283E;N;BRAILLE PATTERN DOTS-23456
-283F;N;BRAILLE PATTERN DOTS-123456
-2840;N;BRAILLE PATTERN DOTS-7
-2841;N;BRAILLE PATTERN DOTS-17
-2842;N;BRAILLE PATTERN DOTS-27
-2843;N;BRAILLE PATTERN DOTS-127
-2844;N;BRAILLE PATTERN DOTS-37
-2845;N;BRAILLE PATTERN DOTS-137
-2846;N;BRAILLE PATTERN DOTS-237
-2847;N;BRAILLE PATTERN DOTS-1237
-2848;N;BRAILLE PATTERN DOTS-47
-2849;N;BRAILLE PATTERN DOTS-147
-284A;N;BRAILLE PATTERN DOTS-247
-284B;N;BRAILLE PATTERN DOTS-1247
-284C;N;BRAILLE PATTERN DOTS-347
-284D;N;BRAILLE PATTERN DOTS-1347
-284E;N;BRAILLE PATTERN DOTS-2347
-284F;N;BRAILLE PATTERN DOTS-12347
-2850;N;BRAILLE PATTERN DOTS-57
-2851;N;BRAILLE PATTERN DOTS-157
-2852;N;BRAILLE PATTERN DOTS-257
-2853;N;BRAILLE PATTERN DOTS-1257
-2854;N;BRAILLE PATTERN DOTS-357
-2855;N;BRAILLE PATTERN DOTS-1357
-2856;N;BRAILLE PATTERN DOTS-2357
-2857;N;BRAILLE PATTERN DOTS-12357
-2858;N;BRAILLE PATTERN DOTS-457
-2859;N;BRAILLE PATTERN DOTS-1457
-285A;N;BRAILLE PATTERN DOTS-2457
-285B;N;BRAILLE PATTERN DOTS-12457
-285C;N;BRAILLE PATTERN DOTS-3457
-285D;N;BRAILLE PATTERN DOTS-13457
-285E;N;BRAILLE PATTERN DOTS-23457
-285F;N;BRAILLE PATTERN DOTS-123457
-2860;N;BRAILLE PATTERN DOTS-67
-2861;N;BRAILLE PATTERN DOTS-167
-2862;N;BRAILLE PATTERN DOTS-267
-2863;N;BRAILLE PATTERN DOTS-1267
-2864;N;BRAILLE PATTERN DOTS-367
-2865;N;BRAILLE PATTERN DOTS-1367
-2866;N;BRAILLE PATTERN DOTS-2367
-2867;N;BRAILLE PATTERN DOTS-12367
-2868;N;BRAILLE PATTERN DOTS-467
-2869;N;BRAILLE PATTERN DOTS-1467
-286A;N;BRAILLE PATTERN DOTS-2467
-286B;N;BRAILLE PATTERN DOTS-12467
-286C;N;BRAILLE PATTERN DOTS-3467
-286D;N;BRAILLE PATTERN DOTS-13467
-286E;N;BRAILLE PATTERN DOTS-23467
-286F;N;BRAILLE PATTERN DOTS-123467
-2870;N;BRAILLE PATTERN DOTS-567
-2871;N;BRAILLE PATTERN DOTS-1567
-2872;N;BRAILLE PATTERN DOTS-2567
-2873;N;BRAILLE PATTERN DOTS-12567
-2874;N;BRAILLE PATTERN DOTS-3567
-2875;N;BRAILLE PATTERN DOTS-13567
-2876;N;BRAILLE PATTERN DOTS-23567
-2877;N;BRAILLE PATTERN DOTS-123567
-2878;N;BRAILLE PATTERN DOTS-4567
-2879;N;BRAILLE PATTERN DOTS-14567
-287A;N;BRAILLE PATTERN DOTS-24567
-287B;N;BRAILLE PATTERN DOTS-124567
-287C;N;BRAILLE PATTERN DOTS-34567
-287D;N;BRAILLE PATTERN DOTS-134567
-287E;N;BRAILLE PATTERN DOTS-234567
-287F;N;BRAILLE PATTERN DOTS-1234567
-2880;N;BRAILLE PATTERN DOTS-8
-2881;N;BRAILLE PATTERN DOTS-18
-2882;N;BRAILLE PATTERN DOTS-28
-2883;N;BRAILLE PATTERN DOTS-128
-2884;N;BRAILLE PATTERN DOTS-38
-2885;N;BRAILLE PATTERN DOTS-138
-2886;N;BRAILLE PATTERN DOTS-238
-2887;N;BRAILLE PATTERN DOTS-1238
-2888;N;BRAILLE PATTERN DOTS-48
-2889;N;BRAILLE PATTERN DOTS-148
-288A;N;BRAILLE PATTERN DOTS-248
-288B;N;BRAILLE PATTERN DOTS-1248
-288C;N;BRAILLE PATTERN DOTS-348
-288D;N;BRAILLE PATTERN DOTS-1348
-288E;N;BRAILLE PATTERN DOTS-2348
-288F;N;BRAILLE PATTERN DOTS-12348
-2890;N;BRAILLE PATTERN DOTS-58
-2891;N;BRAILLE PATTERN DOTS-158
-2892;N;BRAILLE PATTERN DOTS-258
-2893;N;BRAILLE PATTERN DOTS-1258
-2894;N;BRAILLE PATTERN DOTS-358
-2895;N;BRAILLE PATTERN DOTS-1358
-2896;N;BRAILLE PATTERN DOTS-2358
-2897;N;BRAILLE PATTERN DOTS-12358
-2898;N;BRAILLE PATTERN DOTS-458
-2899;N;BRAILLE PATTERN DOTS-1458
-289A;N;BRAILLE PATTERN DOTS-2458
-289B;N;BRAILLE PATTERN DOTS-12458
-289C;N;BRAILLE PATTERN DOTS-3458
-289D;N;BRAILLE PATTERN DOTS-13458
-289E;N;BRAILLE PATTERN DOTS-23458
-289F;N;BRAILLE PATTERN DOTS-123458
-28A0;N;BRAILLE PATTERN DOTS-68
-28A1;N;BRAILLE PATTERN DOTS-168
-28A2;N;BRAILLE PATTERN DOTS-268
-28A3;N;BRAILLE PATTERN DOTS-1268
-28A4;N;BRAILLE PATTERN DOTS-368
-28A5;N;BRAILLE PATTERN DOTS-1368
-28A6;N;BRAILLE PATTERN DOTS-2368
-28A7;N;BRAILLE PATTERN DOTS-12368
-28A8;N;BRAILLE PATTERN DOTS-468
-28A9;N;BRAILLE PATTERN DOTS-1468
-28AA;N;BRAILLE PATTERN DOTS-2468
-28AB;N;BRAILLE PATTERN DOTS-12468
-28AC;N;BRAILLE PATTERN DOTS-3468
-28AD;N;BRAILLE PATTERN DOTS-13468
-28AE;N;BRAILLE PATTERN DOTS-23468
-28AF;N;BRAILLE PATTERN DOTS-123468
-28B0;N;BRAILLE PATTERN DOTS-568
-28B1;N;BRAILLE PATTERN DOTS-1568
-28B2;N;BRAILLE PATTERN DOTS-2568
-28B3;N;BRAILLE PATTERN DOTS-12568
-28B4;N;BRAILLE PATTERN DOTS-3568
-28B5;N;BRAILLE PATTERN DOTS-13568
-28B6;N;BRAILLE PATTERN DOTS-23568
-28B7;N;BRAILLE PATTERN DOTS-123568
-28B8;N;BRAILLE PATTERN DOTS-4568
-28B9;N;BRAILLE PATTERN DOTS-14568
-28BA;N;BRAILLE PATTERN DOTS-24568
-28BB;N;BRAILLE PATTERN DOTS-124568
-28BC;N;BRAILLE PATTERN DOTS-34568
-28BD;N;BRAILLE PATTERN DOTS-134568
-28BE;N;BRAILLE PATTERN DOTS-234568
-28BF;N;BRAILLE PATTERN DOTS-1234568
-28C0;N;BRAILLE PATTERN DOTS-78
-28C1;N;BRAILLE PATTERN DOTS-178
-28C2;N;BRAILLE PATTERN DOTS-278
-28C3;N;BRAILLE PATTERN DOTS-1278
-28C4;N;BRAILLE PATTERN DOTS-378
-28C5;N;BRAILLE PATTERN DOTS-1378
-28C6;N;BRAILLE PATTERN DOTS-2378
-28C7;N;BRAILLE PATTERN DOTS-12378
-28C8;N;BRAILLE PATTERN DOTS-478
-28C9;N;BRAILLE PATTERN DOTS-1478
-28CA;N;BRAILLE PATTERN DOTS-2478
-28CB;N;BRAILLE PATTERN DOTS-12478
-28CC;N;BRAILLE PATTERN DOTS-3478
-28CD;N;BRAILLE PATTERN DOTS-13478
-28CE;N;BRAILLE PATTERN DOTS-23478
-28CF;N;BRAILLE PATTERN DOTS-123478
-28D0;N;BRAILLE PATTERN DOTS-578
-28D1;N;BRAILLE PATTERN DOTS-1578
-28D2;N;BRAILLE PATTERN DOTS-2578
-28D3;N;BRAILLE PATTERN DOTS-12578
-28D4;N;BRAILLE PATTERN DOTS-3578
-28D5;N;BRAILLE PATTERN DOTS-13578
-28D6;N;BRAILLE PATTERN DOTS-23578
-28D7;N;BRAILLE PATTERN DOTS-123578
-28D8;N;BRAILLE PATTERN DOTS-4578
-28D9;N;BRAILLE PATTERN DOTS-14578
-28DA;N;BRAILLE PATTERN DOTS-24578
-28DB;N;BRAILLE PATTERN DOTS-124578
-28DC;N;BRAILLE PATTERN DOTS-34578
-28DD;N;BRAILLE PATTERN DOTS-134578
-28DE;N;BRAILLE PATTERN DOTS-234578
-28DF;N;BRAILLE PATTERN DOTS-1234578
-28E0;N;BRAILLE PATTERN DOTS-678
-28E1;N;BRAILLE PATTERN DOTS-1678
-28E2;N;BRAILLE PATTERN DOTS-2678
-28E3;N;BRAILLE PATTERN DOTS-12678
-28E4;N;BRAILLE PATTERN DOTS-3678
-28E5;N;BRAILLE PATTERN DOTS-13678
-28E6;N;BRAILLE PATTERN DOTS-23678
-28E7;N;BRAILLE PATTERN DOTS-123678
-28E8;N;BRAILLE PATTERN DOTS-4678
-28E9;N;BRAILLE PATTERN DOTS-14678
-28EA;N;BRAILLE PATTERN DOTS-24678
-28EB;N;BRAILLE PATTERN DOTS-124678
-28EC;N;BRAILLE PATTERN DOTS-34678
-28ED;N;BRAILLE PATTERN DOTS-134678
-28EE;N;BRAILLE PATTERN DOTS-234678
-28EF;N;BRAILLE PATTERN DOTS-1234678
-28F0;N;BRAILLE PATTERN DOTS-5678
-28F1;N;BRAILLE PATTERN DOTS-15678
-28F2;N;BRAILLE PATTERN DOTS-25678
-28F3;N;BRAILLE PATTERN DOTS-125678
-28F4;N;BRAILLE PATTERN DOTS-35678
-28F5;N;BRAILLE PATTERN DOTS-135678
-28F6;N;BRAILLE PATTERN DOTS-235678
-28F7;N;BRAILLE PATTERN DOTS-1235678
-28F8;N;BRAILLE PATTERN DOTS-45678
-28F9;N;BRAILLE PATTERN DOTS-145678
-28FA;N;BRAILLE PATTERN DOTS-245678
-28FB;N;BRAILLE PATTERN DOTS-1245678
-28FC;N;BRAILLE PATTERN DOTS-345678
-28FD;N;BRAILLE PATTERN DOTS-1345678
-28FE;N;BRAILLE PATTERN DOTS-2345678
-28FF;N;BRAILLE PATTERN DOTS-12345678
-2E80;W;CJK RADICAL REPEAT
-2E81;W;CJK RADICAL CLIFF
-2E82;W;CJK RADICAL SECOND ONE
-2E83;W;CJK RADICAL SECOND TWO
-2E84;W;CJK RADICAL SECOND THREE
-2E85;W;CJK RADICAL PERSON
-2E86;W;CJK RADICAL BOX
-2E87;W;CJK RADICAL TABLE
-2E88;W;CJK RADICAL KNIFE ONE
-2E89;W;CJK RADICAL KNIFE TWO
-2E8A;W;CJK RADICAL DIVINATION
-2E8B;W;CJK RADICAL SEAL
-2E8C;W;CJK RADICAL SMALL ONE
-2E8D;W;CJK RADICAL SMALL TWO
-2E8E;W;CJK RADICAL LAME ONE
-2E8F;W;CJK RADICAL LAME TWO
-2E90;W;CJK RADICAL LAME THREE
-2E91;W;CJK RADICAL LAME FOUR
-2E92;W;CJK RADICAL SNAKE
-2E93;W;CJK RADICAL THREAD
-2E94;W;CJK RADICAL SNOUT ONE
-2E95;W;CJK RADICAL SNOUT TWO
-2E96;W;CJK RADICAL HEART ONE
-2E97;W;CJK RADICAL HEART TWO
-2E98;W;CJK RADICAL HAND
-2E99;W;CJK RADICAL RAP
-2E9B;W;CJK RADICAL CHOKE
-2E9C;W;CJK RADICAL SUN
-2E9D;W;CJK RADICAL MOON
-2E9E;W;CJK RADICAL DEATH
-2E9F;W;CJK RADICAL MOTHER
-2EA0;W;CJK RADICAL CIVILIAN
-2EA1;W;CJK RADICAL WATER ONE
-2EA2;W;CJK RADICAL WATER TWO
-2EA3;W;CJK RADICAL FIRE
-2EA4;W;CJK RADICAL PAW ONE
-2EA5;W;CJK RADICAL PAW TWO
-2EA6;W;CJK RADICAL SIMPLIFIED HALF TREE TRUNK
-2EA7;W;CJK RADICAL COW
-2EA8;W;CJK RADICAL DOG
-2EA9;W;CJK RADICAL JADE
-2EAA;W;CJK RADICAL BOLT OF CLOTH
-2EAB;W;CJK RADICAL EYE
-2EAC;W;CJK RADICAL SPIRIT ONE
-2EAD;W;CJK RADICAL SPIRIT TWO
-2EAE;W;CJK RADICAL BAMBOO
-2EAF;W;CJK RADICAL SILK
-2EB0;W;CJK RADICAL C-SIMPLIFIED SILK
-2EB1;W;CJK RADICAL NET ONE
-2EB2;W;CJK RADICAL NET TWO
-2EB3;W;CJK RADICAL NET THREE
-2EB4;W;CJK RADICAL NET FOUR
-2EB5;W;CJK RADICAL MESH
-2EB6;W;CJK RADICAL SHEEP
-2EB7;W;CJK RADICAL RAM
-2EB8;W;CJK RADICAL EWE
-2EB9;W;CJK RADICAL OLD
-2EBA;W;CJK RADICAL BRUSH ONE
-2EBB;W;CJK RADICAL BRUSH TWO
-2EBC;W;CJK RADICAL MEAT
-2EBD;W;CJK RADICAL MORTAR
-2EBE;W;CJK RADICAL GRASS ONE
-2EBF;W;CJK RADICAL GRASS TWO
-2EC0;W;CJK RADICAL GRASS THREE
-2EC1;W;CJK RADICAL TIGER
-2EC2;W;CJK RADICAL CLOTHES
-2EC3;W;CJK RADICAL WEST ONE
-2EC4;W;CJK RADICAL WEST TWO
-2EC5;W;CJK RADICAL C-SIMPLIFIED SEE
-2EC6;W;CJK RADICAL SIMPLIFIED HORN
-2EC7;W;CJK RADICAL HORN
-2EC8;W;CJK RADICAL C-SIMPLIFIED SPEECH
-2EC9;W;CJK RADICAL C-SIMPLIFIED SHELL
-2ECA;W;CJK RADICAL FOOT
-2ECB;W;CJK RADICAL C-SIMPLIFIED CART
-2ECC;W;CJK RADICAL SIMPLIFIED WALK
-2ECD;W;CJK RADICAL WALK ONE
-2ECE;W;CJK RADICAL WALK TWO
-2ECF;W;CJK RADICAL CITY
-2ED0;W;CJK RADICAL C-SIMPLIFIED GOLD
-2ED1;W;CJK RADICAL LONG ONE
-2ED2;W;CJK RADICAL LONG TWO
-2ED3;W;CJK RADICAL C-SIMPLIFIED LONG
-2ED4;W;CJK RADICAL C-SIMPLIFIED GATE
-2ED5;W;CJK RADICAL MOUND ONE
-2ED6;W;CJK RADICAL MOUND TWO
-2ED7;W;CJK RADICAL RAIN
-2ED8;W;CJK RADICAL BLUE
-2ED9;W;CJK RADICAL C-SIMPLIFIED TANNED LEATHER
-2EDA;W;CJK RADICAL C-SIMPLIFIED LEAF
-2EDB;W;CJK RADICAL C-SIMPLIFIED WIND
-2EDC;W;CJK RADICAL C-SIMPLIFIED FLY
-2EDD;W;CJK RADICAL EAT ONE
-2EDE;W;CJK RADICAL EAT TWO
-2EDF;W;CJK RADICAL EAT THREE
-2EE0;W;CJK RADICAL C-SIMPLIFIED EAT
-2EE1;W;CJK RADICAL HEAD
-2EE2;W;CJK RADICAL C-SIMPLIFIED HORSE
-2EE3;W;CJK RADICAL BONE
-2EE4;W;CJK RADICAL GHOST
-2EE5;W;CJK RADICAL C-SIMPLIFIED FISH
-2EE6;W;CJK RADICAL C-SIMPLIFIED BIRD
-2EE7;W;CJK RADICAL C-SIMPLIFIED SALT
-2EE8;W;CJK RADICAL SIMPLIFIED WHEAT
-2EE9;W;CJK RADICAL SIMPLIFIED YELLOW
-2EEA;W;CJK RADICAL C-SIMPLIFIED FROG
-2EEB;W;CJK RADICAL J-SIMPLIFIED EVEN
-2EEC;W;CJK RADICAL C-SIMPLIFIED EVEN
-2EED;W;CJK RADICAL J-SIMPLIFIED TOOTH
-2EEE;W;CJK RADICAL C-SIMPLIFIED TOOTH
-2EEF;W;CJK RADICAL J-SIMPLIFIED DRAGON
-2EF0;W;CJK RADICAL C-SIMPLIFIED DRAGON
-2EF1;W;CJK RADICAL TURTLE
-2EF2;W;CJK RADICAL J-SIMPLIFIED TURTLE
-2EF3;W;CJK RADICAL C-SIMPLIFIED TURTLE
-2F00;W;KANGXI RADICAL ONE
-2F01;W;KANGXI RADICAL LINE
-2F02;W;KANGXI RADICAL DOT
-2F03;W;KANGXI RADICAL SLASH
-2F04;W;KANGXI RADICAL SECOND
-2F05;W;KANGXI RADICAL HOOK
-2F06;W;KANGXI RADICAL TWO
-2F07;W;KANGXI RADICAL LID
-2F08;W;KANGXI RADICAL MAN
-2F09;W;KANGXI RADICAL LEGS
-2F0A;W;KANGXI RADICAL ENTER
-2F0B;W;KANGXI RADICAL EIGHT
-2F0C;W;KANGXI RADICAL DOWN BOX
-2F0D;W;KANGXI RADICAL COVER
-2F0E;W;KANGXI RADICAL ICE
-2F0F;W;KANGXI RADICAL TABLE
-2F10;W;KANGXI RADICAL OPEN BOX
-2F11;W;KANGXI RADICAL KNIFE
-2F12;W;KANGXI RADICAL POWER
-2F13;W;KANGXI RADICAL WRAP
-2F14;W;KANGXI RADICAL SPOON
-2F15;W;KANGXI RADICAL RIGHT OPEN BOX
-2F16;W;KANGXI RADICAL HIDING ENCLOSURE
-2F17;W;KANGXI RADICAL TEN
-2F18;W;KANGXI RADICAL DIVINATION
-2F19;W;KANGXI RADICAL SEAL
-2F1A;W;KANGXI RADICAL CLIFF
-2F1B;W;KANGXI RADICAL PRIVATE
-2F1C;W;KANGXI RADICAL AGAIN
-2F1D;W;KANGXI RADICAL MOUTH
-2F1E;W;KANGXI RADICAL ENCLOSURE
-2F1F;W;KANGXI RADICAL EARTH
-2F20;W;KANGXI RADICAL SCHOLAR
-2F21;W;KANGXI RADICAL GO
-2F22;W;KANGXI RADICAL GO SLOWLY
-2F23;W;KANGXI RADICAL EVENING
-2F24;W;KANGXI RADICAL BIG
-2F25;W;KANGXI RADICAL WOMAN
-2F26;W;KANGXI RADICAL CHILD
-2F27;W;KANGXI RADICAL ROOF
-2F28;W;KANGXI RADICAL INCH
-2F29;W;KANGXI RADICAL SMALL
-2F2A;W;KANGXI RADICAL LAME
-2F2B;W;KANGXI RADICAL CORPSE
-2F2C;W;KANGXI RADICAL SPROUT
-2F2D;W;KANGXI RADICAL MOUNTAIN
-2F2E;W;KANGXI RADICAL RIVER
-2F2F;W;KANGXI RADICAL WORK
-2F30;W;KANGXI RADICAL ONESELF
-2F31;W;KANGXI RADICAL TURBAN
-2F32;W;KANGXI RADICAL DRY
-2F33;W;KANGXI RADICAL SHORT THREAD
-2F34;W;KANGXI RADICAL DOTTED CLIFF
-2F35;W;KANGXI RADICAL LONG STRIDE
-2F36;W;KANGXI RADICAL TWO HANDS
-2F37;W;KANGXI RADICAL SHOOT
-2F38;W;KANGXI RADICAL BOW
-2F39;W;KANGXI RADICAL SNOUT
-2F3A;W;KANGXI RADICAL BRISTLE
-2F3B;W;KANGXI RADICAL STEP
-2F3C;W;KANGXI RADICAL HEART
-2F3D;W;KANGXI RADICAL HALBERD
-2F3E;W;KANGXI RADICAL DOOR
-2F3F;W;KANGXI RADICAL HAND
-2F40;W;KANGXI RADICAL BRANCH
-2F41;W;KANGXI RADICAL RAP
-2F42;W;KANGXI RADICAL SCRIPT
-2F43;W;KANGXI RADICAL DIPPER
-2F44;W;KANGXI RADICAL AXE
-2F45;W;KANGXI RADICAL SQUARE
-2F46;W;KANGXI RADICAL NOT
-2F47;W;KANGXI RADICAL SUN
-2F48;W;KANGXI RADICAL SAY
-2F49;W;KANGXI RADICAL MOON
-2F4A;W;KANGXI RADICAL TREE
-2F4B;W;KANGXI RADICAL LACK
-2F4C;W;KANGXI RADICAL STOP
-2F4D;W;KANGXI RADICAL DEATH
-2F4E;W;KANGXI RADICAL WEAPON
-2F4F;W;KANGXI RADICAL DO NOT
-2F50;W;KANGXI RADICAL COMPARE
-2F51;W;KANGXI RADICAL FUR
-2F52;W;KANGXI RADICAL CLAN
-2F53;W;KANGXI RADICAL STEAM
-2F54;W;KANGXI RADICAL WATER
-2F55;W;KANGXI RADICAL FIRE
-2F56;W;KANGXI RADICAL CLAW
-2F57;W;KANGXI RADICAL FATHER
-2F58;W;KANGXI RADICAL DOUBLE X
-2F59;W;KANGXI RADICAL HALF TREE TRUNK
-2F5A;W;KANGXI RADICAL SLICE
-2F5B;W;KANGXI RADICAL FANG
-2F5C;W;KANGXI RADICAL COW
-2F5D;W;KANGXI RADICAL DOG
-2F5E;W;KANGXI RADICAL PROFOUND
-2F5F;W;KANGXI RADICAL JADE
-2F60;W;KANGXI RADICAL MELON
-2F61;W;KANGXI RADICAL TILE
-2F62;W;KANGXI RADICAL SWEET
-2F63;W;KANGXI RADICAL LIFE
-2F64;W;KANGXI RADICAL USE
-2F65;W;KANGXI RADICAL FIELD
-2F66;W;KANGXI RADICAL BOLT OF CLOTH
-2F67;W;KANGXI RADICAL SICKNESS
-2F68;W;KANGXI RADICAL DOTTED TENT
-2F69;W;KANGXI RADICAL WHITE
-2F6A;W;KANGXI RADICAL SKIN
-2F6B;W;KANGXI RADICAL DISH
-2F6C;W;KANGXI RADICAL EYE
-2F6D;W;KANGXI RADICAL SPEAR
-2F6E;W;KANGXI RADICAL ARROW
-2F6F;W;KANGXI RADICAL STONE
-2F70;W;KANGXI RADICAL SPIRIT
-2F71;W;KANGXI RADICAL TRACK
-2F72;W;KANGXI RADICAL GRAIN
-2F73;W;KANGXI RADICAL CAVE
-2F74;W;KANGXI RADICAL STAND
-2F75;W;KANGXI RADICAL BAMBOO
-2F76;W;KANGXI RADICAL RICE
-2F77;W;KANGXI RADICAL SILK
-2F78;W;KANGXI RADICAL JAR
-2F79;W;KANGXI RADICAL NET
-2F7A;W;KANGXI RADICAL SHEEP
-2F7B;W;KANGXI RADICAL FEATHER
-2F7C;W;KANGXI RADICAL OLD
-2F7D;W;KANGXI RADICAL AND
-2F7E;W;KANGXI RADICAL PLOW
-2F7F;W;KANGXI RADICAL EAR
-2F80;W;KANGXI RADICAL BRUSH
-2F81;W;KANGXI RADICAL MEAT
-2F82;W;KANGXI RADICAL MINISTER
-2F83;W;KANGXI RADICAL SELF
-2F84;W;KANGXI RADICAL ARRIVE
-2F85;W;KANGXI RADICAL MORTAR
-2F86;W;KANGXI RADICAL TONGUE
-2F87;W;KANGXI RADICAL OPPOSE
-2F88;W;KANGXI RADICAL BOAT
-2F89;W;KANGXI RADICAL STOPPING
-2F8A;W;KANGXI RADICAL COLOR
-2F8B;W;KANGXI RADICAL GRASS
-2F8C;W;KANGXI RADICAL TIGER
-2F8D;W;KANGXI RADICAL INSECT
-2F8E;W;KANGXI RADICAL BLOOD
-2F8F;W;KANGXI RADICAL WALK ENCLOSURE
-2F90;W;KANGXI RADICAL CLOTHES
-2F91;W;KANGXI RADICAL WEST
-2F92;W;KANGXI RADICAL SEE
-2F93;W;KANGXI RADICAL HORN
-2F94;W;KANGXI RADICAL SPEECH
-2F95;W;KANGXI RADICAL VALLEY
-2F96;W;KANGXI RADICAL BEAN
-2F97;W;KANGXI RADICAL PIG
-2F98;W;KANGXI RADICAL BADGER
-2F99;W;KANGXI RADICAL SHELL
-2F9A;W;KANGXI RADICAL RED
-2F9B;W;KANGXI RADICAL RUN
-2F9C;W;KANGXI RADICAL FOOT
-2F9D;W;KANGXI RADICAL BODY
-2F9E;W;KANGXI RADICAL CART
-2F9F;W;KANGXI RADICAL BITTER
-2FA0;W;KANGXI RADICAL MORNING
-2FA1;W;KANGXI RADICAL WALK
-2FA2;W;KANGXI RADICAL CITY
-2FA3;W;KANGXI RADICAL WINE
-2FA4;W;KANGXI RADICAL DISTINGUISH
-2FA5;W;KANGXI RADICAL VILLAGE
-2FA6;W;KANGXI RADICAL GOLD
-2FA7;W;KANGXI RADICAL LONG
-2FA8;W;KANGXI RADICAL GATE
-2FA9;W;KANGXI RADICAL MOUND
-2FAA;W;KANGXI RADICAL SLAVE
-2FAB;W;KANGXI RADICAL SHORT TAILED BIRD
-2FAC;W;KANGXI RADICAL RAIN
-2FAD;W;KANGXI RADICAL BLUE
-2FAE;W;KANGXI RADICAL WRONG
-2FAF;W;KANGXI RADICAL FACE
-2FB0;W;KANGXI RADICAL LEATHER
-2FB1;W;KANGXI RADICAL TANNED LEATHER
-2FB2;W;KANGXI RADICAL LEEK
-2FB3;W;KANGXI RADICAL SOUND
-2FB4;W;KANGXI RADICAL LEAF
-2FB5;W;KANGXI RADICAL WIND
-2FB6;W;KANGXI RADICAL FLY
-2FB7;W;KANGXI RADICAL EAT
-2FB8;W;KANGXI RADICAL HEAD
-2FB9;W;KANGXI RADICAL FRAGRANT
-2FBA;W;KANGXI RADICAL HORSE
-2FBB;W;KANGXI RADICAL BONE
-2FBC;W;KANGXI RADICAL TALL
-2FBD;W;KANGXI RADICAL HAIR
-2FBE;W;KANGXI RADICAL FIGHT
-2FBF;W;KANGXI RADICAL SACRIFICIAL WINE
-2FC0;W;KANGXI RADICAL CAULDRON
-2FC1;W;KANGXI RADICAL GHOST
-2FC2;W;KANGXI RADICAL FISH
-2FC3;W;KANGXI RADICAL BIRD
-2FC4;W;KANGXI RADICAL SALT
-2FC5;W;KANGXI RADICAL DEER
-2FC6;W;KANGXI RADICAL WHEAT
-2FC7;W;KANGXI RADICAL HEMP
-2FC8;W;KANGXI RADICAL YELLOW
-2FC9;W;KANGXI RADICAL MILLET
-2FCA;W;KANGXI RADICAL BLACK
-2FCB;W;KANGXI RADICAL EMBROIDERY
-2FCC;W;KANGXI RADICAL FROG
-2FCD;W;KANGXI RADICAL TRIPOD
-2FCE;W;KANGXI RADICAL DRUM
-2FCF;W;KANGXI RADICAL RAT
-2FD0;W;KANGXI RADICAL NOSE
-2FD1;W;KANGXI RADICAL EVEN
-2FD2;W;KANGXI RADICAL TOOTH
-2FD3;W;KANGXI RADICAL DRAGON
-2FD4;W;KANGXI RADICAL TURTLE
-2FD5;W;KANGXI RADICAL FLUTE
-2FF0;W;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
-2FF1;W;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
-2FF2;W;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
-2FF3;W;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
-2FF4;W;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
-2FF5;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
-2FF6;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
-2FF7;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
-2FF8;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
-2FF9;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
-2FFA;W;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
-2FFB;W;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-3000;W;IDEOGRAPHIC SPACE
-3001;W;IDEOGRAPHIC COMMA
-3002;W;IDEOGRAPHIC FULL STOP
-3003;W;DITTO MARK
-3004;W;JAPANESE INDUSTRIAL STANDARD SYMBOL
-3005;W;IDEOGRAPHIC ITERATION MARK
-3006;W;IDEOGRAPHIC CLOSING MARK
-3007;W;IDEOGRAPHIC NUMBER ZERO
-3008;W;LEFT ANGLE BRACKET
-3009;W;RIGHT ANGLE BRACKET
-300A;A;LEFT DOUBLE ANGLE BRACKET
-300B;A;RIGHT DOUBLE ANGLE BRACKET
-300C;W;LEFT CORNER BRACKET
-300D;W;RIGHT CORNER BRACKET
-300E;W;LEFT WHITE CORNER BRACKET
-300F;W;RIGHT WHITE CORNER BRACKET
-3010;W;LEFT BLACK LENTICULAR BRACKET
-3011;W;RIGHT BLACK LENTICULAR BRACKET
-3012;W;POSTAL MARK
-3013;W;GETA MARK
-3014;W;LEFT TORTOISE SHELL BRACKET
-3015;W;RIGHT TORTOISE SHELL BRACKET
-3016;W;LEFT WHITE LENTICULAR BRACKET
-3017;W;RIGHT WHITE LENTICULAR BRACKET
-3018;W;LEFT WHITE TORTOISE SHELL BRACKET
-3019;W;RIGHT WHITE TORTOISE SHELL BRACKET
-301A;A;LEFT WHITE SQUARE BRACKET
-301B;A;RIGHT WHITE SQUARE BRACKET
-301C;W;WAVE DASH
-301D;W;REVERSED DOUBLE PRIME QUOTATION MARK
-301E;W;DOUBLE PRIME QUOTATION MARK
-301F;W;LOW DOUBLE PRIME QUOTATION MARK
-3020;W;POSTAL MARK FACE
-3021;W;HANGZHOU NUMERAL ONE
-3022;W;HANGZHOU NUMERAL TWO
-3023;W;HANGZHOU NUMERAL THREE
-3024;W;HANGZHOU NUMERAL FOUR
-3025;W;HANGZHOU NUMERAL FIVE
-3026;W;HANGZHOU NUMERAL SIX
-3027;W;HANGZHOU NUMERAL SEVEN
-3028;W;HANGZHOU NUMERAL EIGHT
-3029;W;HANGZHOU NUMERAL NINE
-302A;W;IDEOGRAPHIC LEVEL TONE MARK
-302B;W;IDEOGRAPHIC RISING TONE MARK
-302C;W;IDEOGRAPHIC DEPARTING TONE MARK
-302D;W;IDEOGRAPHIC ENTERING TONE MARK
-302E;W;HANGUL SINGLE DOT TONE MARK
-302F;W;HANGUL DOUBLE DOT TONE MARK
-3030;W;WAVY DASH
-3031;W;VERTICAL KANA REPEAT MARK
-3032;W;VERTICAL KANA REPEAT WITH VOICED SOUND MARK
-3033;W;VERTICAL KANA REPEAT MARK UPPER HALF
-3034;W;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
-3035;W;VERTICAL KANA REPEAT MARK LOWER HALF
-3036;W;CIRCLED POSTAL MARK
-3037;W;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
-3038;W;HANGZHOU NUMERAL TEN
-3039;W;HANGZHOU NUMERAL TWENTY
-303A;W;HANGZHOU NUMERAL THIRTY
-303E;W;IDEOGRAPHIC VARIATION INDICATOR
-303F;N;IDEOGRAPHIC HALF FILL SPACE
-3041;W;HIRAGANA LETTER SMALL A
-3042;W;HIRAGANA LETTER A
-3043;W;HIRAGANA LETTER SMALL I
-3044;W;HIRAGANA LETTER I
-3045;W;HIRAGANA LETTER SMALL U
-3046;W;HIRAGANA LETTER U
-3047;W;HIRAGANA LETTER SMALL E
-3048;W;HIRAGANA LETTER E
-3049;W;HIRAGANA LETTER SMALL O
-304A;W;HIRAGANA LETTER O
-304B;W;HIRAGANA LETTER KA
-304C;W;HIRAGANA LETTER GA
-304D;W;HIRAGANA LETTER KI
-304E;W;HIRAGANA LETTER GI
-304F;W;HIRAGANA LETTER KU
-3050;W;HIRAGANA LETTER GU
-3051;W;HIRAGANA LETTER KE
-3052;W;HIRAGANA LETTER GE
-3053;W;HIRAGANA LETTER KO
-3054;W;HIRAGANA LETTER GO
-3055;W;HIRAGANA LETTER SA
-3056;W;HIRAGANA LETTER ZA
-3057;W;HIRAGANA LETTER SI
-3058;W;HIRAGANA LETTER ZI
-3059;W;HIRAGANA LETTER SU
-305A;W;HIRAGANA LETTER ZU
-305B;W;HIRAGANA LETTER SE
-305C;W;HIRAGANA LETTER ZE
-305D;W;HIRAGANA LETTER SO
-305E;W;HIRAGANA LETTER ZO
-305F;W;HIRAGANA LETTER TA
-3060;W;HIRAGANA LETTER DA
-3061;W;HIRAGANA LETTER TI
-3062;W;HIRAGANA LETTER DI
-3063;W;HIRAGANA LETTER SMALL TU
-3064;W;HIRAGANA LETTER TU
-3065;W;HIRAGANA LETTER DU
-3066;W;HIRAGANA LETTER TE
-3067;W;HIRAGANA LETTER DE
-3068;W;HIRAGANA LETTER TO
-3069;W;HIRAGANA LETTER DO
-306A;W;HIRAGANA LETTER NA
-306B;W;HIRAGANA LETTER NI
-306C;W;HIRAGANA LETTER NU
-306D;W;HIRAGANA LETTER NE
-306E;W;HIRAGANA LETTER NO
-306F;W;HIRAGANA LETTER HA
-3070;W;HIRAGANA LETTER BA
-3071;W;HIRAGANA LETTER PA
-3072;W;HIRAGANA LETTER HI
-3073;W;HIRAGANA LETTER BI
-3074;W;HIRAGANA LETTER PI
-3075;W;HIRAGANA LETTER HU
-3076;W;HIRAGANA LETTER BU
-3077;W;HIRAGANA LETTER PU
-3078;W;HIRAGANA LETTER HE
-3079;W;HIRAGANA LETTER BE
-307A;W;HIRAGANA LETTER PE
-307B;W;HIRAGANA LETTER HO
-307C;W;HIRAGANA LETTER BO
-307D;W;HIRAGANA LETTER PO
-307E;W;HIRAGANA LETTER MA
-307F;W;HIRAGANA LETTER MI
-3080;W;HIRAGANA LETTER MU
-3081;W;HIRAGANA LETTER ME
-3082;W;HIRAGANA LETTER MO
-3083;W;HIRAGANA LETTER SMALL YA
-3084;W;HIRAGANA LETTER YA
-3085;W;HIRAGANA LETTER SMALL YU
-3086;W;HIRAGANA LETTER YU
-3087;W;HIRAGANA LETTER SMALL YO
-3088;W;HIRAGANA LETTER YO
-3089;W;HIRAGANA LETTER RA
-308A;W;HIRAGANA LETTER RI
-308B;W;HIRAGANA LETTER RU
-308C;W;HIRAGANA LETTER RE
-308D;W;HIRAGANA LETTER RO
-308E;W;HIRAGANA LETTER SMALL WA
-308F;W;HIRAGANA LETTER WA
-3090;W;HIRAGANA LETTER WI
-3091;W;HIRAGANA LETTER WE
-3092;W;HIRAGANA LETTER WO
-3093;W;HIRAGANA LETTER N
-3094;W;HIRAGANA LETTER VU
-3099;W;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
-309A;W;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309B;W;KATAKANA-HIRAGANA VOICED SOUND MARK
-309C;W;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309D;W;HIRAGANA ITERATION MARK
-309E;W;HIRAGANA VOICED ITERATION MARK
-30A1;W;KATAKANA LETTER SMALL A
-30A2;W;KATAKANA LETTER A
-30A3;W;KATAKANA LETTER SMALL I
-30A4;W;KATAKANA LETTER I
-30A5;W;KATAKANA LETTER SMALL U
-30A6;W;KATAKANA LETTER U
-30A7;W;KATAKANA LETTER SMALL E
-30A8;W;KATAKANA LETTER E
-30A9;W;KATAKANA LETTER SMALL O
-30AA;W;KATAKANA LETTER O
-30AB;W;KATAKANA LETTER KA
-30AC;W;KATAKANA LETTER GA
-30AD;W;KATAKANA LETTER KI
-30AE;W;KATAKANA LETTER GI
-30AF;W;KATAKANA LETTER KU
-30B0;W;KATAKANA LETTER GU
-30B1;W;KATAKANA LETTER KE
-30B2;W;KATAKANA LETTER GE
-30B3;W;KATAKANA LETTER KO
-30B4;W;KATAKANA LETTER GO
-30B5;W;KATAKANA LETTER SA
-30B6;W;KATAKANA LETTER ZA
-30B7;W;KATAKANA LETTER SI
-30B8;W;KATAKANA LETTER ZI
-30B9;W;KATAKANA LETTER SU
-30BA;W;KATAKANA LETTER ZU
-30BB;W;KATAKANA LETTER SE
-30BC;W;KATAKANA LETTER ZE
-30BD;W;KATAKANA LETTER SO
-30BE;W;KATAKANA LETTER ZO
-30BF;W;KATAKANA LETTER TA
-30C0;W;KATAKANA LETTER DA
-30C1;W;KATAKANA LETTER TI
-30C2;W;KATAKANA LETTER DI
-30C3;W;KATAKANA LETTER SMALL TU
-30C4;W;KATAKANA LETTER TU
-30C5;W;KATAKANA LETTER DU
-30C6;W;KATAKANA LETTER TE
-30C7;W;KATAKANA LETTER DE
-30C8;W;KATAKANA LETTER TO
-30C9;W;KATAKANA LETTER DO
-30CA;W;KATAKANA LETTER NA
-30CB;W;KATAKANA LETTER NI
-30CC;W;KATAKANA LETTER NU
-30CD;W;KATAKANA LETTER NE
-30CE;W;KATAKANA LETTER NO
-30CF;W;KATAKANA LETTER HA
-30D0;W;KATAKANA LETTER BA
-30D1;W;KATAKANA LETTER PA
-30D2;W;KATAKANA LETTER HI
-30D3;W;KATAKANA LETTER BI
-30D4;W;KATAKANA LETTER PI
-30D5;W;KATAKANA LETTER HU
-30D6;W;KATAKANA LETTER BU
-30D7;W;KATAKANA LETTER PU
-30D8;W;KATAKANA LETTER HE
-30D9;W;KATAKANA LETTER BE
-30DA;W;KATAKANA LETTER PE
-30DB;W;KATAKANA LETTER HO
-30DC;W;KATAKANA LETTER BO
-30DD;W;KATAKANA LETTER PO
-30DE;W;KATAKANA LETTER MA
-30DF;W;KATAKANA LETTER MI
-30E0;W;KATAKANA LETTER MU
-30E1;W;KATAKANA LETTER ME
-30E2;W;KATAKANA LETTER MO
-30E3;W;KATAKANA LETTER SMALL YA
-30E4;W;KATAKANA LETTER YA
-30E5;W;KATAKANA LETTER SMALL YU
-30E6;W;KATAKANA LETTER YU
-30E7;W;KATAKANA LETTER SMALL YO
-30E8;W;KATAKANA LETTER YO
-30E9;W;KATAKANA LETTER RA
-30EA;W;KATAKANA LETTER RI
-30EB;W;KATAKANA LETTER RU
-30EC;W;KATAKANA LETTER RE
-30ED;W;KATAKANA LETTER RO
-30EE;W;KATAKANA LETTER SMALL WA
-30EF;W;KATAKANA LETTER WA
-30F0;W;KATAKANA LETTER WI
-30F1;W;KATAKANA LETTER WE
-30F2;W;KATAKANA LETTER WO
-30F3;W;KATAKANA LETTER N
-30F4;W;KATAKANA LETTER VU
-30F5;W;KATAKANA LETTER SMALL KA
-30F6;W;KATAKANA LETTER SMALL KE
-30F7;W;KATAKANA LETTER VA
-30F8;W;KATAKANA LETTER VI
-30F9;W;KATAKANA LETTER VE
-30FA;W;KATAKANA LETTER VO
-30FB;W;KATAKANA MIDDLE DOT
-30FC;W;KATAKANA-HIRAGANA PROLONGED SOUND MARK
-30FD;W;KATAKANA ITERATION MARK
-30FE;W;KATAKANA VOICED ITERATION MARK
-3105;W;BOPOMOFO LETTER B
-3106;W;BOPOMOFO LETTER P
-3107;W;BOPOMOFO LETTER M
-3108;W;BOPOMOFO LETTER F
-3109;W;BOPOMOFO LETTER D
-310A;W;BOPOMOFO LETTER T
-310B;W;BOPOMOFO LETTER N
-310C;W;BOPOMOFO LETTER L
-310D;W;BOPOMOFO LETTER G
-310E;W;BOPOMOFO LETTER K
-310F;W;BOPOMOFO LETTER H
-3110;W;BOPOMOFO LETTER J
-3111;W;BOPOMOFO LETTER Q
-3112;W;BOPOMOFO LETTER X
-3113;W;BOPOMOFO LETTER ZH
-3114;W;BOPOMOFO LETTER CH
-3115;W;BOPOMOFO LETTER SH
-3116;W;BOPOMOFO LETTER R
-3117;W;BOPOMOFO LETTER Z
-3118;W;BOPOMOFO LETTER C
-3119;W;BOPOMOFO LETTER S
-311A;W;BOPOMOFO LETTER A
-311B;W;BOPOMOFO LETTER O
-311C;W;BOPOMOFO LETTER E
-311D;W;BOPOMOFO LETTER EH
-311E;W;BOPOMOFO LETTER AI
-311F;W;BOPOMOFO LETTER EI
-3120;W;BOPOMOFO LETTER AU
-3121;W;BOPOMOFO LETTER OU
-3122;W;BOPOMOFO LETTER AN
-3123;W;BOPOMOFO LETTER EN
-3124;W;BOPOMOFO LETTER ANG
-3125;W;BOPOMOFO LETTER ENG
-3126;W;BOPOMOFO LETTER ER
-3127;W;BOPOMOFO LETTER I
-3128;W;BOPOMOFO LETTER U
-3129;W;BOPOMOFO LETTER IU
-312A;W;BOPOMOFO LETTER V
-312B;W;BOPOMOFO LETTER NG
-312C;W;BOPOMOFO LETTER GN
-3131;W;HANGUL LETTER KIYEOK
-3132;W;HANGUL LETTER SSANGKIYEOK
-3133;W;HANGUL LETTER KIYEOK-SIOS
-3134;W;HANGUL LETTER NIEUN
-3135;W;HANGUL LETTER NIEUN-CIEUC
-3136;W;HANGUL LETTER NIEUN-HIEUH
-3137;W;HANGUL LETTER TIKEUT
-3138;W;HANGUL LETTER SSANGTIKEUT
-3139;W;HANGUL LETTER RIEUL
-313A;W;HANGUL LETTER RIEUL-KIYEOK
-313B;W;HANGUL LETTER RIEUL-MIEUM
-313C;W;HANGUL LETTER RIEUL-PIEUP
-313D;W;HANGUL LETTER RIEUL-SIOS
-313E;W;HANGUL LETTER RIEUL-THIEUTH
-313F;W;HANGUL LETTER RIEUL-PHIEUPH
-3140;W;HANGUL LETTER RIEUL-HIEUH
-3141;W;HANGUL LETTER MIEUM
-3142;W;HANGUL LETTER PIEUP
-3143;W;HANGUL LETTER SSANGPIEUP
-3144;W;HANGUL LETTER PIEUP-SIOS
-3145;W;HANGUL LETTER SIOS
-3146;W;HANGUL LETTER SSANGSIOS
-3147;W;HANGUL LETTER IEUNG
-3148;W;HANGUL LETTER CIEUC
-3149;W;HANGUL LETTER SSANGCIEUC
-314A;W;HANGUL LETTER CHIEUCH
-314B;W;HANGUL LETTER KHIEUKH
-314C;W;HANGUL LETTER THIEUTH
-314D;W;HANGUL LETTER PHIEUPH
-314E;W;HANGUL LETTER HIEUH
-314F;W;HANGUL LETTER A
-3150;W;HANGUL LETTER AE
-3151;W;HANGUL LETTER YA
-3152;W;HANGUL LETTER YAE
-3153;W;HANGUL LETTER EO
-3154;W;HANGUL LETTER E
-3155;W;HANGUL LETTER YEO
-3156;W;HANGUL LETTER YE
-3157;W;HANGUL LETTER O
-3158;W;HANGUL LETTER WA
-3159;W;HANGUL LETTER WAE
-315A;W;HANGUL LETTER OE
-315B;W;HANGUL LETTER YO
-315C;W;HANGUL LETTER U
-315D;W;HANGUL LETTER WEO
-315E;W;HANGUL LETTER WE
-315F;W;HANGUL LETTER WI
-3160;W;HANGUL LETTER YU
-3161;W;HANGUL LETTER EU
-3162;W;HANGUL LETTER YI
-3163;W;HANGUL LETTER I
-3164;W;HANGUL FILLER
-3165;W;HANGUL LETTER SSANGNIEUN
-3166;W;HANGUL LETTER NIEUN-TIKEUT
-3167;W;HANGUL LETTER NIEUN-SIOS
-3168;W;HANGUL LETTER NIEUN-PANSIOS
-3169;W;HANGUL LETTER RIEUL-KIYEOK-SIOS
-316A;W;HANGUL LETTER RIEUL-TIKEUT
-316B;W;HANGUL LETTER RIEUL-PIEUP-SIOS
-316C;W;HANGUL LETTER RIEUL-PANSIOS
-316D;W;HANGUL LETTER RIEUL-YEORINHIEUH
-316E;W;HANGUL LETTER MIEUM-PIEUP
-316F;W;HANGUL LETTER MIEUM-SIOS
-3170;W;HANGUL LETTER MIEUM-PANSIOS
-3171;W;HANGUL LETTER KAPYEOUNMIEUM
-3172;W;HANGUL LETTER PIEUP-KIYEOK
-3173;W;HANGUL LETTER PIEUP-TIKEUT
-3174;W;HANGUL LETTER PIEUP-SIOS-KIYEOK
-3175;W;HANGUL LETTER PIEUP-SIOS-TIKEUT
-3176;W;HANGUL LETTER PIEUP-CIEUC
-3177;W;HANGUL LETTER PIEUP-THIEUTH
-3178;W;HANGUL LETTER KAPYEOUNPIEUP
-3179;W;HANGUL LETTER KAPYEOUNSSANGPIEUP
-317A;W;HANGUL LETTER SIOS-KIYEOK
-317B;W;HANGUL LETTER SIOS-NIEUN
-317C;W;HANGUL LETTER SIOS-TIKEUT
-317D;W;HANGUL LETTER SIOS-PIEUP
-317E;W;HANGUL LETTER SIOS-CIEUC
-317F;W;HANGUL LETTER PANSIOS
-3180;W;HANGUL LETTER SSANGIEUNG
-3181;W;HANGUL LETTER YESIEUNG
-3182;W;HANGUL LETTER YESIEUNG-SIOS
-3183;W;HANGUL LETTER YESIEUNG-PANSIOS
-3184;W;HANGUL LETTER KAPYEOUNPHIEUPH
-3185;W;HANGUL LETTER SSANGHIEUH
-3186;W;HANGUL LETTER YEORINHIEUH
-3187;W;HANGUL LETTER YO-YA
-3188;W;HANGUL LETTER YO-YAE
-3189;W;HANGUL LETTER YO-I
-318A;W;HANGUL LETTER YU-YEO
-318B;W;HANGUL LETTER YU-YE
-318C;W;HANGUL LETTER YU-I
-318D;W;HANGUL LETTER ARAEA
-318E;W;HANGUL LETTER ARAEAE
-3190;W;IDEOGRAPHIC ANNOTATION LINKING MARK
-3191;W;IDEOGRAPHIC ANNOTATION REVERSE MARK
-3192;W;IDEOGRAPHIC ANNOTATION ONE MARK
-3193;W;IDEOGRAPHIC ANNOTATION TWO MARK
-3194;W;IDEOGRAPHIC ANNOTATION THREE MARK
-3195;W;IDEOGRAPHIC ANNOTATION FOUR MARK
-3196;W;IDEOGRAPHIC ANNOTATION TOP MARK
-3197;W;IDEOGRAPHIC ANNOTATION MIDDLE MARK
-3198;W;IDEOGRAPHIC ANNOTATION BOTTOM MARK
-3199;W;IDEOGRAPHIC ANNOTATION FIRST MARK
-319A;W;IDEOGRAPHIC ANNOTATION SECOND MARK
-319B;W;IDEOGRAPHIC ANNOTATION THIRD MARK
-319C;W;IDEOGRAPHIC ANNOTATION FOURTH MARK
-319D;W;IDEOGRAPHIC ANNOTATION HEAVEN MARK
-319E;W;IDEOGRAPHIC ANNOTATION EARTH MARK
-319F;W;IDEOGRAPHIC ANNOTATION MAN MARK
-31A0;W;BOPOMOFO LETTER BU
-31A1;W;BOPOMOFO LETTER ZI
-31A2;W;BOPOMOFO LETTER JI
-31A3;W;BOPOMOFO LETTER GU
-31A4;W;BOPOMOFO LETTER EE
-31A5;W;BOPOMOFO LETTER ENN
-31A6;W;BOPOMOFO LETTER OO
-31A7;W;BOPOMOFO LETTER ONN
-31A8;W;BOPOMOFO LETTER IR
-31A9;W;BOPOMOFO LETTER ANN
-31AA;W;BOPOMOFO LETTER INN
-31AB;W;BOPOMOFO LETTER UNN
-31AC;W;BOPOMOFO LETTER IM
-31AD;W;BOPOMOFO LETTER NGG
-31AE;W;BOPOMOFO LETTER AINN
-31AF;W;BOPOMOFO LETTER AUNN
-31B0;W;BOPOMOFO LETTER AM
-31B1;W;BOPOMOFO LETTER OM
-31B2;W;BOPOMOFO LETTER ONG
-31B3;W;BOPOMOFO LETTER INNN
-31B4;W;BOPOMOFO FINAL LETTER P
-31B5;W;BOPOMOFO FINAL LETTER T
-31B6;W;BOPOMOFO FINAL LETTER K
-31B7;W;BOPOMOFO FINAL LETTER H
-3200;W;PARENTHESIZED HANGUL KIYEOK
-3201;W;PARENTHESIZED HANGUL NIEUN
-3202;W;PARENTHESIZED HANGUL TIKEUT
-3203;W;PARENTHESIZED HANGUL RIEUL
-3204;W;PARENTHESIZED HANGUL MIEUM
-3205;W;PARENTHESIZED HANGUL PIEUP
-3206;W;PARENTHESIZED HANGUL SIOS
-3207;W;PARENTHESIZED HANGUL IEUNG
-3208;W;PARENTHESIZED HANGUL CIEUC
-3209;W;PARENTHESIZED HANGUL CHIEUCH
-320A;W;PARENTHESIZED HANGUL KHIEUKH
-320B;W;PARENTHESIZED HANGUL THIEUTH
-320C;W;PARENTHESIZED HANGUL PHIEUPH
-320D;W;PARENTHESIZED HANGUL HIEUH
-320E;W;PARENTHESIZED HANGUL KIYEOK A
-320F;W;PARENTHESIZED HANGUL NIEUN A
-3210;W;PARENTHESIZED HANGUL TIKEUT A
-3211;W;PARENTHESIZED HANGUL RIEUL A
-3212;W;PARENTHESIZED HANGUL MIEUM A
-3213;W;PARENTHESIZED HANGUL PIEUP A
-3214;W;PARENTHESIZED HANGUL SIOS A
-3215;W;PARENTHESIZED HANGUL IEUNG A
-3216;W;PARENTHESIZED HANGUL CIEUC A
-3217;W;PARENTHESIZED HANGUL CHIEUCH A
-3218;W;PARENTHESIZED HANGUL KHIEUKH A
-3219;W;PARENTHESIZED HANGUL THIEUTH A
-321A;W;PARENTHESIZED HANGUL PHIEUPH A
-321B;W;PARENTHESIZED HANGUL HIEUH A
-321C;W;PARENTHESIZED HANGUL CIEUC U
-3220;W;PARENTHESIZED IDEOGRAPH ONE
-3221;W;PARENTHESIZED IDEOGRAPH TWO
-3222;W;PARENTHESIZED IDEOGRAPH THREE
-3223;W;PARENTHESIZED IDEOGRAPH FOUR
-3224;W;PARENTHESIZED IDEOGRAPH FIVE
-3225;W;PARENTHESIZED IDEOGRAPH SIX
-3226;W;PARENTHESIZED IDEOGRAPH SEVEN
-3227;W;PARENTHESIZED IDEOGRAPH EIGHT
-3228;W;PARENTHESIZED IDEOGRAPH NINE
-3229;W;PARENTHESIZED IDEOGRAPH TEN
-322A;W;PARENTHESIZED IDEOGRAPH MOON
-322B;W;PARENTHESIZED IDEOGRAPH FIRE
-322C;W;PARENTHESIZED IDEOGRAPH WATER
-322D;W;PARENTHESIZED IDEOGRAPH WOOD
-322E;W;PARENTHESIZED IDEOGRAPH METAL
-322F;W;PARENTHESIZED IDEOGRAPH EARTH
-3230;W;PARENTHESIZED IDEOGRAPH SUN
-3231;W;PARENTHESIZED IDEOGRAPH STOCK
-3232;W;PARENTHESIZED IDEOGRAPH HAVE
-3233;W;PARENTHESIZED IDEOGRAPH SOCIETY
-3234;W;PARENTHESIZED IDEOGRAPH NAME
-3235;W;PARENTHESIZED IDEOGRAPH SPECIAL
-3236;W;PARENTHESIZED IDEOGRAPH FINANCIAL
-3237;W;PARENTHESIZED IDEOGRAPH CONGRATULATION
-3238;W;PARENTHESIZED IDEOGRAPH LABOR
-3239;W;PARENTHESIZED IDEOGRAPH REPRESENT
-323A;W;PARENTHESIZED IDEOGRAPH CALL
-323B;W;PARENTHESIZED IDEOGRAPH STUDY
-323C;W;PARENTHESIZED IDEOGRAPH SUPERVISE
-323D;W;PARENTHESIZED IDEOGRAPH ENTERPRISE
-323E;W;PARENTHESIZED IDEOGRAPH RESOURCE
-323F;W;PARENTHESIZED IDEOGRAPH ALLIANCE
-3240;W;PARENTHESIZED IDEOGRAPH FESTIVAL
-3241;W;PARENTHESIZED IDEOGRAPH REST
-3242;W;PARENTHESIZED IDEOGRAPH SELF
-3243;W;PARENTHESIZED IDEOGRAPH REACH
-3260;W;CIRCLED HANGUL KIYEOK
-3261;W;CIRCLED HANGUL NIEUN
-3262;W;CIRCLED HANGUL TIKEUT
-3263;W;CIRCLED HANGUL RIEUL
-3264;W;CIRCLED HANGUL MIEUM
-3265;W;CIRCLED HANGUL PIEUP
-3266;W;CIRCLED HANGUL SIOS
-3267;W;CIRCLED HANGUL IEUNG
-3268;W;CIRCLED HANGUL CIEUC
-3269;W;CIRCLED HANGUL CHIEUCH
-326A;W;CIRCLED HANGUL KHIEUKH
-326B;W;CIRCLED HANGUL THIEUTH
-326C;W;CIRCLED HANGUL PHIEUPH
-326D;W;CIRCLED HANGUL HIEUH
-326E;W;CIRCLED HANGUL KIYEOK A
-326F;W;CIRCLED HANGUL NIEUN A
-3270;W;CIRCLED HANGUL TIKEUT A
-3271;W;CIRCLED HANGUL RIEUL A
-3272;W;CIRCLED HANGUL MIEUM A
-3273;W;CIRCLED HANGUL PIEUP A
-3274;W;CIRCLED HANGUL SIOS A
-3275;W;CIRCLED HANGUL IEUNG A
-3276;W;CIRCLED HANGUL CIEUC A
-3277;W;CIRCLED HANGUL CHIEUCH A
-3278;W;CIRCLED HANGUL KHIEUKH A
-3279;W;CIRCLED HANGUL THIEUTH A
-327A;W;CIRCLED HANGUL PHIEUPH A
-327B;W;CIRCLED HANGUL HIEUH A
-327F;W;KOREAN STANDARD SYMBOL
-3280;W;CIRCLED IDEOGRAPH ONE
-3281;W;CIRCLED IDEOGRAPH TWO
-3282;W;CIRCLED IDEOGRAPH THREE
-3283;W;CIRCLED IDEOGRAPH FOUR
-3284;W;CIRCLED IDEOGRAPH FIVE
-3285;W;CIRCLED IDEOGRAPH SIX
-3286;W;CIRCLED IDEOGRAPH SEVEN
-3287;W;CIRCLED IDEOGRAPH EIGHT
-3288;W;CIRCLED IDEOGRAPH NINE
-3289;W;CIRCLED IDEOGRAPH TEN
-328A;W;CIRCLED IDEOGRAPH MOON
-328B;W;CIRCLED IDEOGRAPH FIRE
-328C;W;CIRCLED IDEOGRAPH WATER
-328D;W;CIRCLED IDEOGRAPH WOOD
-328E;W;CIRCLED IDEOGRAPH METAL
-328F;W;CIRCLED IDEOGRAPH EARTH
-3290;W;CIRCLED IDEOGRAPH SUN
-3291;W;CIRCLED IDEOGRAPH STOCK
-3292;W;CIRCLED IDEOGRAPH HAVE
-3293;W;CIRCLED IDEOGRAPH SOCIETY
-3294;W;CIRCLED IDEOGRAPH NAME
-3295;W;CIRCLED IDEOGRAPH SPECIAL
-3296;W;CIRCLED IDEOGRAPH FINANCIAL
-3297;W;CIRCLED IDEOGRAPH CONGRATULATION
-3298;W;CIRCLED IDEOGRAPH LABOR
-3299;W;CIRCLED IDEOGRAPH SECRET
-329A;W;CIRCLED IDEOGRAPH MALE
-329B;W;CIRCLED IDEOGRAPH FEMALE
-329C;W;CIRCLED IDEOGRAPH SUITABLE
-329D;W;CIRCLED IDEOGRAPH EXCELLENT
-329E;W;CIRCLED IDEOGRAPH PRINT
-329F;W;CIRCLED IDEOGRAPH ATTENTION
-32A0;W;CIRCLED IDEOGRAPH ITEM
-32A1;W;CIRCLED IDEOGRAPH REST
-32A2;W;CIRCLED IDEOGRAPH COPY
-32A3;W;CIRCLED IDEOGRAPH CORRECT
-32A4;W;CIRCLED IDEOGRAPH HIGH
-32A5;W;CIRCLED IDEOGRAPH CENTRE
-32A6;W;CIRCLED IDEOGRAPH LOW
-32A7;W;CIRCLED IDEOGRAPH LEFT
-32A8;W;CIRCLED IDEOGRAPH RIGHT
-32A9;W;CIRCLED IDEOGRAPH MEDICINE
-32AA;W;CIRCLED IDEOGRAPH RELIGION
-32AB;W;CIRCLED IDEOGRAPH STUDY
-32AC;W;CIRCLED IDEOGRAPH SUPERVISE
-32AD;W;CIRCLED IDEOGRAPH ENTERPRISE
-32AE;W;CIRCLED IDEOGRAPH RESOURCE
-32AF;W;CIRCLED IDEOGRAPH ALLIANCE
-32B0;W;CIRCLED IDEOGRAPH NIGHT
-32C0;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
-32C1;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
-32C2;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
-32C3;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
-32C4;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
-32C5;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
-32C6;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
-32C7;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
-32C8;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
-32C9;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
-32CA;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
-32CB;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
-32D0;W;CIRCLED KATAKANA A
-32D1;W;CIRCLED KATAKANA I
-32D2;W;CIRCLED KATAKANA U
-32D3;W;CIRCLED KATAKANA E
-32D4;W;CIRCLED KATAKANA O
-32D5;W;CIRCLED KATAKANA KA
-32D6;W;CIRCLED KATAKANA KI
-32D7;W;CIRCLED KATAKANA KU
-32D8;W;CIRCLED KATAKANA KE
-32D9;W;CIRCLED KATAKANA KO
-32DA;W;CIRCLED KATAKANA SA
-32DB;W;CIRCLED KATAKANA SI
-32DC;W;CIRCLED KATAKANA SU
-32DD;W;CIRCLED KATAKANA SE
-32DE;W;CIRCLED KATAKANA SO
-32DF;W;CIRCLED KATAKANA TA
-32E0;W;CIRCLED KATAKANA TI
-32E1;W;CIRCLED KATAKANA TU
-32E2;W;CIRCLED KATAKANA TE
-32E3;W;CIRCLED KATAKANA TO
-32E4;W;CIRCLED KATAKANA NA
-32E5;W;CIRCLED KATAKANA NI
-32E6;W;CIRCLED KATAKANA NU
-32E7;W;CIRCLED KATAKANA NE
-32E8;W;CIRCLED KATAKANA NO
-32E9;W;CIRCLED KATAKANA HA
-32EA;W;CIRCLED KATAKANA HI
-32EB;W;CIRCLED KATAKANA HU
-32EC;W;CIRCLED KATAKANA HE
-32ED;W;CIRCLED KATAKANA HO
-32EE;W;CIRCLED KATAKANA MA
-32EF;W;CIRCLED KATAKANA MI
-32F0;W;CIRCLED KATAKANA MU
-32F1;W;CIRCLED KATAKANA ME
-32F2;W;CIRCLED KATAKANA MO
-32F3;W;CIRCLED KATAKANA YA
-32F4;W;CIRCLED KATAKANA YU
-32F5;W;CIRCLED KATAKANA YO
-32F6;W;CIRCLED KATAKANA RA
-32F7;W;CIRCLED KATAKANA RI
-32F8;W;CIRCLED KATAKANA RU
-32F9;W;CIRCLED KATAKANA RE
-32FA;W;CIRCLED KATAKANA RO
-32FB;W;CIRCLED KATAKANA WA
-32FC;W;CIRCLED KATAKANA WI
-32FD;W;CIRCLED KATAKANA WE
-32FE;W;CIRCLED KATAKANA WO
-3300;W;SQUARE APAATO
-3301;W;SQUARE ARUHUA
-3302;W;SQUARE ANPEA
-3303;W;SQUARE AARU
-3304;W;SQUARE ININGU
-3305;W;SQUARE INTI
-3306;W;SQUARE UON
-3307;W;SQUARE ESUKUUDO
-3308;W;SQUARE EEKAA
-3309;W;SQUARE ONSU
-330A;W;SQUARE OOMU
-330B;W;SQUARE KAIRI
-330C;W;SQUARE KARATTO
-330D;W;SQUARE KARORII
-330E;W;SQUARE GARON
-330F;W;SQUARE GANMA
-3310;W;SQUARE GIGA
-3311;W;SQUARE GINII
-3312;W;SQUARE KYURII
-3313;W;SQUARE GIRUDAA
-3314;W;SQUARE KIRO
-3315;W;SQUARE KIROGURAMU
-3316;W;SQUARE KIROMEETORU
-3317;W;SQUARE KIROWATTO
-3318;W;SQUARE GURAMU
-3319;W;SQUARE GURAMUTON
-331A;W;SQUARE KURUZEIRO
-331B;W;SQUARE KUROONE
-331C;W;SQUARE KEESU
-331D;W;SQUARE KORUNA
-331E;W;SQUARE KOOPO
-331F;W;SQUARE SAIKURU
-3320;W;SQUARE SANTIIMU
-3321;W;SQUARE SIRINGU
-3322;W;SQUARE SENTI
-3323;W;SQUARE SENTO
-3324;W;SQUARE DAASU
-3325;W;SQUARE DESI
-3326;W;SQUARE DORU
-3327;W;SQUARE TON
-3328;W;SQUARE NANO
-3329;W;SQUARE NOTTO
-332A;W;SQUARE HAITU
-332B;W;SQUARE PAASENTO
-332C;W;SQUARE PAATU
-332D;W;SQUARE BAARERU
-332E;W;SQUARE PIASUTORU
-332F;W;SQUARE PIKURU
-3330;W;SQUARE PIKO
-3331;W;SQUARE BIRU
-3332;W;SQUARE HUARADDO
-3333;W;SQUARE HUIITO
-3334;W;SQUARE BUSSYERU
-3335;W;SQUARE HURAN
-3336;W;SQUARE HEKUTAARU
-3337;W;SQUARE PESO
-3338;W;SQUARE PENIHI
-3339;W;SQUARE HERUTU
-333A;W;SQUARE PENSU
-333B;W;SQUARE PEEZI
-333C;W;SQUARE BEETA
-333D;W;SQUARE POINTO
-333E;W;SQUARE BORUTO
-333F;W;SQUARE HON
-3340;W;SQUARE PONDO
-3341;W;SQUARE HOORU
-3342;W;SQUARE HOON
-3343;W;SQUARE MAIKURO
-3344;W;SQUARE MAIRU
-3345;W;SQUARE MAHHA
-3346;W;SQUARE MARUKU
-3347;W;SQUARE MANSYON
-3348;W;SQUARE MIKURON
-3349;W;SQUARE MIRI
-334A;W;SQUARE MIRIBAARU
-334B;W;SQUARE MEGA
-334C;W;SQUARE MEGATON
-334D;W;SQUARE MEETORU
-334E;W;SQUARE YAADO
-334F;W;SQUARE YAARU
-3350;W;SQUARE YUAN
-3351;W;SQUARE RITTORU
-3352;W;SQUARE RIRA
-3353;W;SQUARE RUPII
-3354;W;SQUARE RUUBURU
-3355;W;SQUARE REMU
-3356;W;SQUARE RENTOGEN
-3357;W;SQUARE WATTO
-3358;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
-3359;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
-335A;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
-335B;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
-335C;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
-335D;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
-335E;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
-335F;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
-3360;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
-3361;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
-3362;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
-3363;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
-3364;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
-3365;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
-3366;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
-3367;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
-3368;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
-3369;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
-336A;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
-336B;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
-336C;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
-336D;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
-336E;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
-336F;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
-3370;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
-3371;W;SQUARE HPA
-3372;W;SQUARE DA
-3373;W;SQUARE AU
-3374;W;SQUARE BAR
-3375;W;SQUARE OV
-3376;W;SQUARE PC
-337B;W;SQUARE ERA NAME HEISEI
-337C;W;SQUARE ERA NAME SYOUWA
-337D;W;SQUARE ERA NAME TAISYOU
-337E;W;SQUARE ERA NAME MEIZI
-337F;W;SQUARE CORPORATION
-3380;W;SQUARE PA AMPS
-3381;W;SQUARE NA
-3382;W;SQUARE MU A
-3383;W;SQUARE MA
-3384;W;SQUARE KA
-3385;W;SQUARE KB
-3386;W;SQUARE MB
-3387;W;SQUARE GB
-3388;W;SQUARE CAL
-3389;W;SQUARE KCAL
-338A;W;SQUARE PF
-338B;W;SQUARE NF
-338C;W;SQUARE MU F
-338D;W;SQUARE MU G
-338E;W;SQUARE MG
-338F;W;SQUARE KG
-3390;W;SQUARE HZ
-3391;W;SQUARE KHZ
-3392;W;SQUARE MHZ
-3393;W;SQUARE GHZ
-3394;W;SQUARE THZ
-3395;W;SQUARE MU L
-3396;W;SQUARE ML
-3397;W;SQUARE DL
-3398;W;SQUARE KL
-3399;W;SQUARE FM
-339A;W;SQUARE NM
-339B;W;SQUARE MU M
-339C;W;SQUARE MM
-339D;W;SQUARE CM
-339E;W;SQUARE KM
-339F;W;SQUARE MM SQUARED
-33A0;W;SQUARE CM SQUARED
-33A1;W;SQUARE M SQUARED
-33A2;W;SQUARE KM SQUARED
-33A3;W;SQUARE MM CUBED
-33A4;W;SQUARE CM CUBED
-33A5;W;SQUARE M CUBED
-33A6;W;SQUARE KM CUBED
-33A7;W;SQUARE M OVER S
-33A8;W;SQUARE M OVER S SQUARED
-33A9;W;SQUARE PA
-33AA;W;SQUARE KPA
-33AB;W;SQUARE MPA
-33AC;W;SQUARE GPA
-33AD;W;SQUARE RAD
-33AE;W;SQUARE RAD OVER S
-33AF;W;SQUARE RAD OVER S SQUARED
-33B0;W;SQUARE PS
-33B1;W;SQUARE NS
-33B2;W;SQUARE MU S
-33B3;W;SQUARE MS
-33B4;W;SQUARE PV
-33B5;W;SQUARE NV
-33B6;W;SQUARE MU V
-33B7;W;SQUARE MV
-33B8;W;SQUARE KV
-33B9;W;SQUARE MV MEGA
-33BA;W;SQUARE PW
-33BB;W;SQUARE NW
-33BC;W;SQUARE MU W
-33BD;W;SQUARE MW
-33BE;W;SQUARE KW
-33BF;W;SQUARE MW MEGA
-33C0;W;SQUARE K OHM
-33C1;W;SQUARE M OHM
-33C2;W;SQUARE AM
-33C3;W;SQUARE BQ
-33C4;W;SQUARE CC
-33C5;W;SQUARE CD
-33C6;W;SQUARE C OVER KG
-33C7;W;SQUARE CO
-33C8;W;SQUARE DB
-33C9;W;SQUARE GY
-33CA;W;SQUARE HA
-33CB;W;SQUARE HP
-33CC;W;SQUARE IN
-33CD;W;SQUARE KK
-33CE;W;SQUARE KM CAPITAL
-33CF;W;SQUARE KT
-33D0;W;SQUARE LM
-33D1;W;SQUARE LN
-33D2;W;SQUARE LOG
-33D3;W;SQUARE LX
-33D4;W;SQUARE MB SMALL
-33D5;W;SQUARE MIL
-33D6;W;SQUARE MOL
-33D7;W;SQUARE PH
-33D8;W;SQUARE PM
-33D9;W;SQUARE PPM
-33DA;W;SQUARE PR
-33DB;W;SQUARE SR
-33DC;W;SQUARE SV
-33DD;W;SQUARE WB
-33E0;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
-33E1;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
-33E2;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
-33E3;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
-33E4;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
-33E5;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
-33E6;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
-33E7;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
-33E8;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
-33E9;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
-33EA;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
-33EB;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
-33EC;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
-33ED;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
-33EE;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
-33EF;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
-33F0;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
-33F1;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
-33F2;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
-33F3;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
-33F4;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
-33F5;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
-33F6;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
-33F7;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
-33F8;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
-33F9;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
-33FA;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
-33FB;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
-33FC;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
-33FD;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
-33FE;W;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
-3400;W;<CJK Ideograph Extension A, First>
-4DB5;W;<CJK Ideograph Extension A, Last>
-4E00;W;<CJK Ideograph, First>
-9FA5;W;<CJK Ideograph, Last>
-A000;W;YI SYLLABLE IT
-A001;W;YI SYLLABLE IX
-A002;W;YI SYLLABLE I
-A003;W;YI SYLLABLE IP
-A004;W;YI SYLLABLE IET
-A005;W;YI SYLLABLE IEX
-A006;W;YI SYLLABLE IE
-A007;W;YI SYLLABLE IEP
-A008;W;YI SYLLABLE AT
-A009;W;YI SYLLABLE AX
-A00A;W;YI SYLLABLE A
-A00B;W;YI SYLLABLE AP
-A00C;W;YI SYLLABLE UOX
-A00D;W;YI SYLLABLE UO
-A00E;W;YI SYLLABLE UOP
-A00F;W;YI SYLLABLE OT
-A010;W;YI SYLLABLE OX
-A011;W;YI SYLLABLE O
-A012;W;YI SYLLABLE OP
-A013;W;YI SYLLABLE EX
-A014;W;YI SYLLABLE E
-A015;W;YI SYLLABLE WU
-A016;W;YI SYLLABLE BIT
-A017;W;YI SYLLABLE BIX
-A018;W;YI SYLLABLE BI
-A019;W;YI SYLLABLE BIP
-A01A;W;YI SYLLABLE BIET
-A01B;W;YI SYLLABLE BIEX
-A01C;W;YI SYLLABLE BIE
-A01D;W;YI SYLLABLE BIEP
-A01E;W;YI SYLLABLE BAT
-A01F;W;YI SYLLABLE BAX
-A020;W;YI SYLLABLE BA
-A021;W;YI SYLLABLE BAP
-A022;W;YI SYLLABLE BUOX
-A023;W;YI SYLLABLE BUO
-A024;W;YI SYLLABLE BUOP
-A025;W;YI SYLLABLE BOT
-A026;W;YI SYLLABLE BOX
-A027;W;YI SYLLABLE BO
-A028;W;YI SYLLABLE BOP
-A029;W;YI SYLLABLE BEX
-A02A;W;YI SYLLABLE BE
-A02B;W;YI SYLLABLE BEP
-A02C;W;YI SYLLABLE BUT
-A02D;W;YI SYLLABLE BUX
-A02E;W;YI SYLLABLE BU
-A02F;W;YI SYLLABLE BUP
-A030;W;YI SYLLABLE BURX
-A031;W;YI SYLLABLE BUR
-A032;W;YI SYLLABLE BYT
-A033;W;YI SYLLABLE BYX
-A034;W;YI SYLLABLE BY
-A035;W;YI SYLLABLE BYP
-A036;W;YI SYLLABLE BYRX
-A037;W;YI SYLLABLE BYR
-A038;W;YI SYLLABLE PIT
-A039;W;YI SYLLABLE PIX
-A03A;W;YI SYLLABLE PI
-A03B;W;YI SYLLABLE PIP
-A03C;W;YI SYLLABLE PIEX
-A03D;W;YI SYLLABLE PIE
-A03E;W;YI SYLLABLE PIEP
-A03F;W;YI SYLLABLE PAT
-A040;W;YI SYLLABLE PAX
-A041;W;YI SYLLABLE PA
-A042;W;YI SYLLABLE PAP
-A043;W;YI SYLLABLE PUOX
-A044;W;YI SYLLABLE PUO
-A045;W;YI SYLLABLE PUOP
-A046;W;YI SYLLABLE POT
-A047;W;YI SYLLABLE POX
-A048;W;YI SYLLABLE PO
-A049;W;YI SYLLABLE POP
-A04A;W;YI SYLLABLE PUT
-A04B;W;YI SYLLABLE PUX
-A04C;W;YI SYLLABLE PU
-A04D;W;YI SYLLABLE PUP
-A04E;W;YI SYLLABLE PURX
-A04F;W;YI SYLLABLE PUR
-A050;W;YI SYLLABLE PYT
-A051;W;YI SYLLABLE PYX
-A052;W;YI SYLLABLE PY
-A053;W;YI SYLLABLE PYP
-A054;W;YI SYLLABLE PYRX
-A055;W;YI SYLLABLE PYR
-A056;W;YI SYLLABLE BBIT
-A057;W;YI SYLLABLE BBIX
-A058;W;YI SYLLABLE BBI
-A059;W;YI SYLLABLE BBIP
-A05A;W;YI SYLLABLE BBIET
-A05B;W;YI SYLLABLE BBIEX
-A05C;W;YI SYLLABLE BBIE
-A05D;W;YI SYLLABLE BBIEP
-A05E;W;YI SYLLABLE BBAT
-A05F;W;YI SYLLABLE BBAX
-A060;W;YI SYLLABLE BBA
-A061;W;YI SYLLABLE BBAP
-A062;W;YI SYLLABLE BBUOX
-A063;W;YI SYLLABLE BBUO
-A064;W;YI SYLLABLE BBUOP
-A065;W;YI SYLLABLE BBOT
-A066;W;YI SYLLABLE BBOX
-A067;W;YI SYLLABLE BBO
-A068;W;YI SYLLABLE BBOP
-A069;W;YI SYLLABLE BBEX
-A06A;W;YI SYLLABLE BBE
-A06B;W;YI SYLLABLE BBEP
-A06C;W;YI SYLLABLE BBUT
-A06D;W;YI SYLLABLE BBUX
-A06E;W;YI SYLLABLE BBU
-A06F;W;YI SYLLABLE BBUP
-A070;W;YI SYLLABLE BBURX
-A071;W;YI SYLLABLE BBUR
-A072;W;YI SYLLABLE BBYT
-A073;W;YI SYLLABLE BBYX
-A074;W;YI SYLLABLE BBY
-A075;W;YI SYLLABLE BBYP
-A076;W;YI SYLLABLE NBIT
-A077;W;YI SYLLABLE NBIX
-A078;W;YI SYLLABLE NBI
-A079;W;YI SYLLABLE NBIP
-A07A;W;YI SYLLABLE NBIEX
-A07B;W;YI SYLLABLE NBIE
-A07C;W;YI SYLLABLE NBIEP
-A07D;W;YI SYLLABLE NBAT
-A07E;W;YI SYLLABLE NBAX
-A07F;W;YI SYLLABLE NBA
-A080;W;YI SYLLABLE NBAP
-A081;W;YI SYLLABLE NBOT
-A082;W;YI SYLLABLE NBOX
-A083;W;YI SYLLABLE NBO
-A084;W;YI SYLLABLE NBOP
-A085;W;YI SYLLABLE NBUT
-A086;W;YI SYLLABLE NBUX
-A087;W;YI SYLLABLE NBU
-A088;W;YI SYLLABLE NBUP
-A089;W;YI SYLLABLE NBURX
-A08A;W;YI SYLLABLE NBUR
-A08B;W;YI SYLLABLE NBYT
-A08C;W;YI SYLLABLE NBYX
-A08D;W;YI SYLLABLE NBY
-A08E;W;YI SYLLABLE NBYP
-A08F;W;YI SYLLABLE NBYRX
-A090;W;YI SYLLABLE NBYR
-A091;W;YI SYLLABLE HMIT
-A092;W;YI SYLLABLE HMIX
-A093;W;YI SYLLABLE HMI
-A094;W;YI SYLLABLE HMIP
-A095;W;YI SYLLABLE HMIEX
-A096;W;YI SYLLABLE HMIE
-A097;W;YI SYLLABLE HMIEP
-A098;W;YI SYLLABLE HMAT
-A099;W;YI SYLLABLE HMAX
-A09A;W;YI SYLLABLE HMA
-A09B;W;YI SYLLABLE HMAP
-A09C;W;YI SYLLABLE HMUOX
-A09D;W;YI SYLLABLE HMUO
-A09E;W;YI SYLLABLE HMUOP
-A09F;W;YI SYLLABLE HMOT
-A0A0;W;YI SYLLABLE HMOX
-A0A1;W;YI SYLLABLE HMO
-A0A2;W;YI SYLLABLE HMOP
-A0A3;W;YI SYLLABLE HMUT
-A0A4;W;YI SYLLABLE HMUX
-A0A5;W;YI SYLLABLE HMU
-A0A6;W;YI SYLLABLE HMUP
-A0A7;W;YI SYLLABLE HMURX
-A0A8;W;YI SYLLABLE HMUR
-A0A9;W;YI SYLLABLE HMYX
-A0AA;W;YI SYLLABLE HMY
-A0AB;W;YI SYLLABLE HMYP
-A0AC;W;YI SYLLABLE HMYRX
-A0AD;W;YI SYLLABLE HMYR
-A0AE;W;YI SYLLABLE MIT
-A0AF;W;YI SYLLABLE MIX
-A0B0;W;YI SYLLABLE MI
-A0B1;W;YI SYLLABLE MIP
-A0B2;W;YI SYLLABLE MIEX
-A0B3;W;YI SYLLABLE MIE
-A0B4;W;YI SYLLABLE MIEP
-A0B5;W;YI SYLLABLE MAT
-A0B6;W;YI SYLLABLE MAX
-A0B7;W;YI SYLLABLE MA
-A0B8;W;YI SYLLABLE MAP
-A0B9;W;YI SYLLABLE MUOT
-A0BA;W;YI SYLLABLE MUOX
-A0BB;W;YI SYLLABLE MUO
-A0BC;W;YI SYLLABLE MUOP
-A0BD;W;YI SYLLABLE MOT
-A0BE;W;YI SYLLABLE MOX
-A0BF;W;YI SYLLABLE MO
-A0C0;W;YI SYLLABLE MOP
-A0C1;W;YI SYLLABLE MEX
-A0C2;W;YI SYLLABLE ME
-A0C3;W;YI SYLLABLE MUT
-A0C4;W;YI SYLLABLE MUX
-A0C5;W;YI SYLLABLE MU
-A0C6;W;YI SYLLABLE MUP
-A0C7;W;YI SYLLABLE MURX
-A0C8;W;YI SYLLABLE MUR
-A0C9;W;YI SYLLABLE MYT
-A0CA;W;YI SYLLABLE MYX
-A0CB;W;YI SYLLABLE MY
-A0CC;W;YI SYLLABLE MYP
-A0CD;W;YI SYLLABLE FIT
-A0CE;W;YI SYLLABLE FIX
-A0CF;W;YI SYLLABLE FI
-A0D0;W;YI SYLLABLE FIP
-A0D1;W;YI SYLLABLE FAT
-A0D2;W;YI SYLLABLE FAX
-A0D3;W;YI SYLLABLE FA
-A0D4;W;YI SYLLABLE FAP
-A0D5;W;YI SYLLABLE FOX
-A0D6;W;YI SYLLABLE FO
-A0D7;W;YI SYLLABLE FOP
-A0D8;W;YI SYLLABLE FUT
-A0D9;W;YI SYLLABLE FUX
-A0DA;W;YI SYLLABLE FU
-A0DB;W;YI SYLLABLE FUP
-A0DC;W;YI SYLLABLE FURX
-A0DD;W;YI SYLLABLE FUR
-A0DE;W;YI SYLLABLE FYT
-A0DF;W;YI SYLLABLE FYX
-A0E0;W;YI SYLLABLE FY
-A0E1;W;YI SYLLABLE FYP
-A0E2;W;YI SYLLABLE VIT
-A0E3;W;YI SYLLABLE VIX
-A0E4;W;YI SYLLABLE VI
-A0E5;W;YI SYLLABLE VIP
-A0E6;W;YI SYLLABLE VIET
-A0E7;W;YI SYLLABLE VIEX
-A0E8;W;YI SYLLABLE VIE
-A0E9;W;YI SYLLABLE VIEP
-A0EA;W;YI SYLLABLE VAT
-A0EB;W;YI SYLLABLE VAX
-A0EC;W;YI SYLLABLE VA
-A0ED;W;YI SYLLABLE VAP
-A0EE;W;YI SYLLABLE VOT
-A0EF;W;YI SYLLABLE VOX
-A0F0;W;YI SYLLABLE VO
-A0F1;W;YI SYLLABLE VOP
-A0F2;W;YI SYLLABLE VEX
-A0F3;W;YI SYLLABLE VEP
-A0F4;W;YI SYLLABLE VUT
-A0F5;W;YI SYLLABLE VUX
-A0F6;W;YI SYLLABLE VU
-A0F7;W;YI SYLLABLE VUP
-A0F8;W;YI SYLLABLE VURX
-A0F9;W;YI SYLLABLE VUR
-A0FA;W;YI SYLLABLE VYT
-A0FB;W;YI SYLLABLE VYX
-A0FC;W;YI SYLLABLE VY
-A0FD;W;YI SYLLABLE VYP
-A0FE;W;YI SYLLABLE VYRX
-A0FF;W;YI SYLLABLE VYR
-A100;W;YI SYLLABLE DIT
-A101;W;YI SYLLABLE DIX
-A102;W;YI SYLLABLE DI
-A103;W;YI SYLLABLE DIP
-A104;W;YI SYLLABLE DIEX
-A105;W;YI SYLLABLE DIE
-A106;W;YI SYLLABLE DIEP
-A107;W;YI SYLLABLE DAT
-A108;W;YI SYLLABLE DAX
-A109;W;YI SYLLABLE DA
-A10A;W;YI SYLLABLE DAP
-A10B;W;YI SYLLABLE DUOX
-A10C;W;YI SYLLABLE DUO
-A10D;W;YI SYLLABLE DOT
-A10E;W;YI SYLLABLE DOX
-A10F;W;YI SYLLABLE DO
-A110;W;YI SYLLABLE DOP
-A111;W;YI SYLLABLE DEX
-A112;W;YI SYLLABLE DE
-A113;W;YI SYLLABLE DEP
-A114;W;YI SYLLABLE DUT
-A115;W;YI SYLLABLE DUX
-A116;W;YI SYLLABLE DU
-A117;W;YI SYLLABLE DUP
-A118;W;YI SYLLABLE DURX
-A119;W;YI SYLLABLE DUR
-A11A;W;YI SYLLABLE TIT
-A11B;W;YI SYLLABLE TIX
-A11C;W;YI SYLLABLE TI
-A11D;W;YI SYLLABLE TIP
-A11E;W;YI SYLLABLE TIEX
-A11F;W;YI SYLLABLE TIE
-A120;W;YI SYLLABLE TIEP
-A121;W;YI SYLLABLE TAT
-A122;W;YI SYLLABLE TAX
-A123;W;YI SYLLABLE TA
-A124;W;YI SYLLABLE TAP
-A125;W;YI SYLLABLE TUOT
-A126;W;YI SYLLABLE TUOX
-A127;W;YI SYLLABLE TUO
-A128;W;YI SYLLABLE TUOP
-A129;W;YI SYLLABLE TOT
-A12A;W;YI SYLLABLE TOX
-A12B;W;YI SYLLABLE TO
-A12C;W;YI SYLLABLE TOP
-A12D;W;YI SYLLABLE TEX
-A12E;W;YI SYLLABLE TE
-A12F;W;YI SYLLABLE TEP
-A130;W;YI SYLLABLE TUT
-A131;W;YI SYLLABLE TUX
-A132;W;YI SYLLABLE TU
-A133;W;YI SYLLABLE TUP
-A134;W;YI SYLLABLE TURX
-A135;W;YI SYLLABLE TUR
-A136;W;YI SYLLABLE DDIT
-A137;W;YI SYLLABLE DDIX
-A138;W;YI SYLLABLE DDI
-A139;W;YI SYLLABLE DDIP
-A13A;W;YI SYLLABLE DDIEX
-A13B;W;YI SYLLABLE DDIE
-A13C;W;YI SYLLABLE DDIEP
-A13D;W;YI SYLLABLE DDAT
-A13E;W;YI SYLLABLE DDAX
-A13F;W;YI SYLLABLE DDA
-A140;W;YI SYLLABLE DDAP
-A141;W;YI SYLLABLE DDUOX
-A142;W;YI SYLLABLE DDUO
-A143;W;YI SYLLABLE DDUOP
-A144;W;YI SYLLABLE DDOT
-A145;W;YI SYLLABLE DDOX
-A146;W;YI SYLLABLE DDO
-A147;W;YI SYLLABLE DDOP
-A148;W;YI SYLLABLE DDEX
-A149;W;YI SYLLABLE DDE
-A14A;W;YI SYLLABLE DDEP
-A14B;W;YI SYLLABLE DDUT
-A14C;W;YI SYLLABLE DDUX
-A14D;W;YI SYLLABLE DDU
-A14E;W;YI SYLLABLE DDUP
-A14F;W;YI SYLLABLE DDURX
-A150;W;YI SYLLABLE DDUR
-A151;W;YI SYLLABLE NDIT
-A152;W;YI SYLLABLE NDIX
-A153;W;YI SYLLABLE NDI
-A154;W;YI SYLLABLE NDIP
-A155;W;YI SYLLABLE NDIEX
-A156;W;YI SYLLABLE NDIE
-A157;W;YI SYLLABLE NDAT
-A158;W;YI SYLLABLE NDAX
-A159;W;YI SYLLABLE NDA
-A15A;W;YI SYLLABLE NDAP
-A15B;W;YI SYLLABLE NDOT
-A15C;W;YI SYLLABLE NDOX
-A15D;W;YI SYLLABLE NDO
-A15E;W;YI SYLLABLE NDOP
-A15F;W;YI SYLLABLE NDEX
-A160;W;YI SYLLABLE NDE
-A161;W;YI SYLLABLE NDEP
-A162;W;YI SYLLABLE NDUT
-A163;W;YI SYLLABLE NDUX
-A164;W;YI SYLLABLE NDU
-A165;W;YI SYLLABLE NDUP
-A166;W;YI SYLLABLE NDURX
-A167;W;YI SYLLABLE NDUR
-A168;W;YI SYLLABLE HNIT
-A169;W;YI SYLLABLE HNIX
-A16A;W;YI SYLLABLE HNI
-A16B;W;YI SYLLABLE HNIP
-A16C;W;YI SYLLABLE HNIET
-A16D;W;YI SYLLABLE HNIEX
-A16E;W;YI SYLLABLE HNIE
-A16F;W;YI SYLLABLE HNIEP
-A170;W;YI SYLLABLE HNAT
-A171;W;YI SYLLABLE HNAX
-A172;W;YI SYLLABLE HNA
-A173;W;YI SYLLABLE HNAP
-A174;W;YI SYLLABLE HNUOX
-A175;W;YI SYLLABLE HNUO
-A176;W;YI SYLLABLE HNOT
-A177;W;YI SYLLABLE HNOX
-A178;W;YI SYLLABLE HNOP
-A179;W;YI SYLLABLE HNEX
-A17A;W;YI SYLLABLE HNE
-A17B;W;YI SYLLABLE HNEP
-A17C;W;YI SYLLABLE HNUT
-A17D;W;YI SYLLABLE NIT
-A17E;W;YI SYLLABLE NIX
-A17F;W;YI SYLLABLE NI
-A180;W;YI SYLLABLE NIP
-A181;W;YI SYLLABLE NIEX
-A182;W;YI SYLLABLE NIE
-A183;W;YI SYLLABLE NIEP
-A184;W;YI SYLLABLE NAX
-A185;W;YI SYLLABLE NA
-A186;W;YI SYLLABLE NAP
-A187;W;YI SYLLABLE NUOX
-A188;W;YI SYLLABLE NUO
-A189;W;YI SYLLABLE NUOP
-A18A;W;YI SYLLABLE NOT
-A18B;W;YI SYLLABLE NOX
-A18C;W;YI SYLLABLE NO
-A18D;W;YI SYLLABLE NOP
-A18E;W;YI SYLLABLE NEX
-A18F;W;YI SYLLABLE NE
-A190;W;YI SYLLABLE NEP
-A191;W;YI SYLLABLE NUT
-A192;W;YI SYLLABLE NUX
-A193;W;YI SYLLABLE NU
-A194;W;YI SYLLABLE NUP
-A195;W;YI SYLLABLE NURX
-A196;W;YI SYLLABLE NUR
-A197;W;YI SYLLABLE HLIT
-A198;W;YI SYLLABLE HLIX
-A199;W;YI SYLLABLE HLI
-A19A;W;YI SYLLABLE HLIP
-A19B;W;YI SYLLABLE HLIEX
-A19C;W;YI SYLLABLE HLIE
-A19D;W;YI SYLLABLE HLIEP
-A19E;W;YI SYLLABLE HLAT
-A19F;W;YI SYLLABLE HLAX
-A1A0;W;YI SYLLABLE HLA
-A1A1;W;YI SYLLABLE HLAP
-A1A2;W;YI SYLLABLE HLUOX
-A1A3;W;YI SYLLABLE HLUO
-A1A4;W;YI SYLLABLE HLUOP
-A1A5;W;YI SYLLABLE HLOX
-A1A6;W;YI SYLLABLE HLO
-A1A7;W;YI SYLLABLE HLOP
-A1A8;W;YI SYLLABLE HLEX
-A1A9;W;YI SYLLABLE HLE
-A1AA;W;YI SYLLABLE HLEP
-A1AB;W;YI SYLLABLE HLUT
-A1AC;W;YI SYLLABLE HLUX
-A1AD;W;YI SYLLABLE HLU
-A1AE;W;YI SYLLABLE HLUP
-A1AF;W;YI SYLLABLE HLURX
-A1B0;W;YI SYLLABLE HLUR
-A1B1;W;YI SYLLABLE HLYT
-A1B2;W;YI SYLLABLE HLYX
-A1B3;W;YI SYLLABLE HLY
-A1B4;W;YI SYLLABLE HLYP
-A1B5;W;YI SYLLABLE HLYRX
-A1B6;W;YI SYLLABLE HLYR
-A1B7;W;YI SYLLABLE LIT
-A1B8;W;YI SYLLABLE LIX
-A1B9;W;YI SYLLABLE LI
-A1BA;W;YI SYLLABLE LIP
-A1BB;W;YI SYLLABLE LIET
-A1BC;W;YI SYLLABLE LIEX
-A1BD;W;YI SYLLABLE LIE
-A1BE;W;YI SYLLABLE LIEP
-A1BF;W;YI SYLLABLE LAT
-A1C0;W;YI SYLLABLE LAX
-A1C1;W;YI SYLLABLE LA
-A1C2;W;YI SYLLABLE LAP
-A1C3;W;YI SYLLABLE LUOT
-A1C4;W;YI SYLLABLE LUOX
-A1C5;W;YI SYLLABLE LUO
-A1C6;W;YI SYLLABLE LUOP
-A1C7;W;YI SYLLABLE LOT
-A1C8;W;YI SYLLABLE LOX
-A1C9;W;YI SYLLABLE LO
-A1CA;W;YI SYLLABLE LOP
-A1CB;W;YI SYLLABLE LEX
-A1CC;W;YI SYLLABLE LE
-A1CD;W;YI SYLLABLE LEP
-A1CE;W;YI SYLLABLE LUT
-A1CF;W;YI SYLLABLE LUX
-A1D0;W;YI SYLLABLE LU
-A1D1;W;YI SYLLABLE LUP
-A1D2;W;YI SYLLABLE LURX
-A1D3;W;YI SYLLABLE LUR
-A1D4;W;YI SYLLABLE LYT
-A1D5;W;YI SYLLABLE LYX
-A1D6;W;YI SYLLABLE LY
-A1D7;W;YI SYLLABLE LYP
-A1D8;W;YI SYLLABLE LYRX
-A1D9;W;YI SYLLABLE LYR
-A1DA;W;YI SYLLABLE GIT
-A1DB;W;YI SYLLABLE GIX
-A1DC;W;YI SYLLABLE GI
-A1DD;W;YI SYLLABLE GIP
-A1DE;W;YI SYLLABLE GIET
-A1DF;W;YI SYLLABLE GIEX
-A1E0;W;YI SYLLABLE GIE
-A1E1;W;YI SYLLABLE GIEP
-A1E2;W;YI SYLLABLE GAT
-A1E3;W;YI SYLLABLE GAX
-A1E4;W;YI SYLLABLE GA
-A1E5;W;YI SYLLABLE GAP
-A1E6;W;YI SYLLABLE GUOT
-A1E7;W;YI SYLLABLE GUOX
-A1E8;W;YI SYLLABLE GUO
-A1E9;W;YI SYLLABLE GUOP
-A1EA;W;YI SYLLABLE GOT
-A1EB;W;YI SYLLABLE GOX
-A1EC;W;YI SYLLABLE GO
-A1ED;W;YI SYLLABLE GOP
-A1EE;W;YI SYLLABLE GET
-A1EF;W;YI SYLLABLE GEX
-A1F0;W;YI SYLLABLE GE
-A1F1;W;YI SYLLABLE GEP
-A1F2;W;YI SYLLABLE GUT
-A1F3;W;YI SYLLABLE GUX
-A1F4;W;YI SYLLABLE GU
-A1F5;W;YI SYLLABLE GUP
-A1F6;W;YI SYLLABLE GURX
-A1F7;W;YI SYLLABLE GUR
-A1F8;W;YI SYLLABLE KIT
-A1F9;W;YI SYLLABLE KIX
-A1FA;W;YI SYLLABLE KI
-A1FB;W;YI SYLLABLE KIP
-A1FC;W;YI SYLLABLE KIEX
-A1FD;W;YI SYLLABLE KIE
-A1FE;W;YI SYLLABLE KIEP
-A1FF;W;YI SYLLABLE KAT
-A200;W;YI SYLLABLE KAX
-A201;W;YI SYLLABLE KA
-A202;W;YI SYLLABLE KAP
-A203;W;YI SYLLABLE KUOX
-A204;W;YI SYLLABLE KUO
-A205;W;YI SYLLABLE KUOP
-A206;W;YI SYLLABLE KOT
-A207;W;YI SYLLABLE KOX
-A208;W;YI SYLLABLE KO
-A209;W;YI SYLLABLE KOP
-A20A;W;YI SYLLABLE KET
-A20B;W;YI SYLLABLE KEX
-A20C;W;YI SYLLABLE KE
-A20D;W;YI SYLLABLE KEP
-A20E;W;YI SYLLABLE KUT
-A20F;W;YI SYLLABLE KUX
-A210;W;YI SYLLABLE KU
-A211;W;YI SYLLABLE KUP
-A212;W;YI SYLLABLE KURX
-A213;W;YI SYLLABLE KUR
-A214;W;YI SYLLABLE GGIT
-A215;W;YI SYLLABLE GGIX
-A216;W;YI SYLLABLE GGI
-A217;W;YI SYLLABLE GGIEX
-A218;W;YI SYLLABLE GGIE
-A219;W;YI SYLLABLE GGIEP
-A21A;W;YI SYLLABLE GGAT
-A21B;W;YI SYLLABLE GGAX
-A21C;W;YI SYLLABLE GGA
-A21D;W;YI SYLLABLE GGAP
-A21E;W;YI SYLLABLE GGUOT
-A21F;W;YI SYLLABLE GGUOX
-A220;W;YI SYLLABLE GGUO
-A221;W;YI SYLLABLE GGUOP
-A222;W;YI SYLLABLE GGOT
-A223;W;YI SYLLABLE GGOX
-A224;W;YI SYLLABLE GGO
-A225;W;YI SYLLABLE GGOP
-A226;W;YI SYLLABLE GGET
-A227;W;YI SYLLABLE GGEX
-A228;W;YI SYLLABLE GGE
-A229;W;YI SYLLABLE GGEP
-A22A;W;YI SYLLABLE GGUT
-A22B;W;YI SYLLABLE GGUX
-A22C;W;YI SYLLABLE GGU
-A22D;W;YI SYLLABLE GGUP
-A22E;W;YI SYLLABLE GGURX
-A22F;W;YI SYLLABLE GGUR
-A230;W;YI SYLLABLE MGIEX
-A231;W;YI SYLLABLE MGIE
-A232;W;YI SYLLABLE MGAT
-A233;W;YI SYLLABLE MGAX
-A234;W;YI SYLLABLE MGA
-A235;W;YI SYLLABLE MGAP
-A236;W;YI SYLLABLE MGUOX
-A237;W;YI SYLLABLE MGUO
-A238;W;YI SYLLABLE MGUOP
-A239;W;YI SYLLABLE MGOT
-A23A;W;YI SYLLABLE MGOX
-A23B;W;YI SYLLABLE MGO
-A23C;W;YI SYLLABLE MGOP
-A23D;W;YI SYLLABLE MGEX
-A23E;W;YI SYLLABLE MGE
-A23F;W;YI SYLLABLE MGEP
-A240;W;YI SYLLABLE MGUT
-A241;W;YI SYLLABLE MGUX
-A242;W;YI SYLLABLE MGU
-A243;W;YI SYLLABLE MGUP
-A244;W;YI SYLLABLE MGURX
-A245;W;YI SYLLABLE MGUR
-A246;W;YI SYLLABLE HXIT
-A247;W;YI SYLLABLE HXIX
-A248;W;YI SYLLABLE HXI
-A249;W;YI SYLLABLE HXIP
-A24A;W;YI SYLLABLE HXIET
-A24B;W;YI SYLLABLE HXIEX
-A24C;W;YI SYLLABLE HXIE
-A24D;W;YI SYLLABLE HXIEP
-A24E;W;YI SYLLABLE HXAT
-A24F;W;YI SYLLABLE HXAX
-A250;W;YI SYLLABLE HXA
-A251;W;YI SYLLABLE HXAP
-A252;W;YI SYLLABLE HXUOT
-A253;W;YI SYLLABLE HXUOX
-A254;W;YI SYLLABLE HXUO
-A255;W;YI SYLLABLE HXUOP
-A256;W;YI SYLLABLE HXOT
-A257;W;YI SYLLABLE HXOX
-A258;W;YI SYLLABLE HXO
-A259;W;YI SYLLABLE HXOP
-A25A;W;YI SYLLABLE HXEX
-A25B;W;YI SYLLABLE HXE
-A25C;W;YI SYLLABLE HXEP
-A25D;W;YI SYLLABLE NGIEX
-A25E;W;YI SYLLABLE NGIE
-A25F;W;YI SYLLABLE NGIEP
-A260;W;YI SYLLABLE NGAT
-A261;W;YI SYLLABLE NGAX
-A262;W;YI SYLLABLE NGA
-A263;W;YI SYLLABLE NGAP
-A264;W;YI SYLLABLE NGUOT
-A265;W;YI SYLLABLE NGUOX
-A266;W;YI SYLLABLE NGUO
-A267;W;YI SYLLABLE NGOT
-A268;W;YI SYLLABLE NGOX
-A269;W;YI SYLLABLE NGO
-A26A;W;YI SYLLABLE NGOP
-A26B;W;YI SYLLABLE NGEX
-A26C;W;YI SYLLABLE NGE
-A26D;W;YI SYLLABLE NGEP
-A26E;W;YI SYLLABLE HIT
-A26F;W;YI SYLLABLE HIEX
-A270;W;YI SYLLABLE HIE
-A271;W;YI SYLLABLE HAT
-A272;W;YI SYLLABLE HAX
-A273;W;YI SYLLABLE HA
-A274;W;YI SYLLABLE HAP
-A275;W;YI SYLLABLE HUOT
-A276;W;YI SYLLABLE HUOX
-A277;W;YI SYLLABLE HUO
-A278;W;YI SYLLABLE HUOP
-A279;W;YI SYLLABLE HOT
-A27A;W;YI SYLLABLE HOX
-A27B;W;YI SYLLABLE HO
-A27C;W;YI SYLLABLE HOP
-A27D;W;YI SYLLABLE HEX
-A27E;W;YI SYLLABLE HE
-A27F;W;YI SYLLABLE HEP
-A280;W;YI SYLLABLE WAT
-A281;W;YI SYLLABLE WAX
-A282;W;YI SYLLABLE WA
-A283;W;YI SYLLABLE WAP
-A284;W;YI SYLLABLE WUOX
-A285;W;YI SYLLABLE WUO
-A286;W;YI SYLLABLE WUOP
-A287;W;YI SYLLABLE WOX
-A288;W;YI SYLLABLE WO
-A289;W;YI SYLLABLE WOP
-A28A;W;YI SYLLABLE WEX
-A28B;W;YI SYLLABLE WE
-A28C;W;YI SYLLABLE WEP
-A28D;W;YI SYLLABLE ZIT
-A28E;W;YI SYLLABLE ZIX
-A28F;W;YI SYLLABLE ZI
-A290;W;YI SYLLABLE ZIP
-A291;W;YI SYLLABLE ZIEX
-A292;W;YI SYLLABLE ZIE
-A293;W;YI SYLLABLE ZIEP
-A294;W;YI SYLLABLE ZAT
-A295;W;YI SYLLABLE ZAX
-A296;W;YI SYLLABLE ZA
-A297;W;YI SYLLABLE ZAP
-A298;W;YI SYLLABLE ZUOX
-A299;W;YI SYLLABLE ZUO
-A29A;W;YI SYLLABLE ZUOP
-A29B;W;YI SYLLABLE ZOT
-A29C;W;YI SYLLABLE ZOX
-A29D;W;YI SYLLABLE ZO
-A29E;W;YI SYLLABLE ZOP
-A29F;W;YI SYLLABLE ZEX
-A2A0;W;YI SYLLABLE ZE
-A2A1;W;YI SYLLABLE ZEP
-A2A2;W;YI SYLLABLE ZUT
-A2A3;W;YI SYLLABLE ZUX
-A2A4;W;YI SYLLABLE ZU
-A2A5;W;YI SYLLABLE ZUP
-A2A6;W;YI SYLLABLE ZURX
-A2A7;W;YI SYLLABLE ZUR
-A2A8;W;YI SYLLABLE ZYT
-A2A9;W;YI SYLLABLE ZYX
-A2AA;W;YI SYLLABLE ZY
-A2AB;W;YI SYLLABLE ZYP
-A2AC;W;YI SYLLABLE ZYRX
-A2AD;W;YI SYLLABLE ZYR
-A2AE;W;YI SYLLABLE CIT
-A2AF;W;YI SYLLABLE CIX
-A2B0;W;YI SYLLABLE CI
-A2B1;W;YI SYLLABLE CIP
-A2B2;W;YI SYLLABLE CIET
-A2B3;W;YI SYLLABLE CIEX
-A2B4;W;YI SYLLABLE CIE
-A2B5;W;YI SYLLABLE CIEP
-A2B6;W;YI SYLLABLE CAT
-A2B7;W;YI SYLLABLE CAX
-A2B8;W;YI SYLLABLE CA
-A2B9;W;YI SYLLABLE CAP
-A2BA;W;YI SYLLABLE CUOX
-A2BB;W;YI SYLLABLE CUO
-A2BC;W;YI SYLLABLE CUOP
-A2BD;W;YI SYLLABLE COT
-A2BE;W;YI SYLLABLE COX
-A2BF;W;YI SYLLABLE CO
-A2C0;W;YI SYLLABLE COP
-A2C1;W;YI SYLLABLE CEX
-A2C2;W;YI SYLLABLE CE
-A2C3;W;YI SYLLABLE CEP
-A2C4;W;YI SYLLABLE CUT
-A2C5;W;YI SYLLABLE CUX
-A2C6;W;YI SYLLABLE CU
-A2C7;W;YI SYLLABLE CUP
-A2C8;W;YI SYLLABLE CURX
-A2C9;W;YI SYLLABLE CUR
-A2CA;W;YI SYLLABLE CYT
-A2CB;W;YI SYLLABLE CYX
-A2CC;W;YI SYLLABLE CY
-A2CD;W;YI SYLLABLE CYP
-A2CE;W;YI SYLLABLE CYRX
-A2CF;W;YI SYLLABLE CYR
-A2D0;W;YI SYLLABLE ZZIT
-A2D1;W;YI SYLLABLE ZZIX
-A2D2;W;YI SYLLABLE ZZI
-A2D3;W;YI SYLLABLE ZZIP
-A2D4;W;YI SYLLABLE ZZIET
-A2D5;W;YI SYLLABLE ZZIEX
-A2D6;W;YI SYLLABLE ZZIE
-A2D7;W;YI SYLLABLE ZZIEP
-A2D8;W;YI SYLLABLE ZZAT
-A2D9;W;YI SYLLABLE ZZAX
-A2DA;W;YI SYLLABLE ZZA
-A2DB;W;YI SYLLABLE ZZAP
-A2DC;W;YI SYLLABLE ZZOX
-A2DD;W;YI SYLLABLE ZZO
-A2DE;W;YI SYLLABLE ZZOP
-A2DF;W;YI SYLLABLE ZZEX
-A2E0;W;YI SYLLABLE ZZE
-A2E1;W;YI SYLLABLE ZZEP
-A2E2;W;YI SYLLABLE ZZUX
-A2E3;W;YI SYLLABLE ZZU
-A2E4;W;YI SYLLABLE ZZUP
-A2E5;W;YI SYLLABLE ZZURX
-A2E6;W;YI SYLLABLE ZZUR
-A2E7;W;YI SYLLABLE ZZYT
-A2E8;W;YI SYLLABLE ZZYX
-A2E9;W;YI SYLLABLE ZZY
-A2EA;W;YI SYLLABLE ZZYP
-A2EB;W;YI SYLLABLE ZZYRX
-A2EC;W;YI SYLLABLE ZZYR
-A2ED;W;YI SYLLABLE NZIT
-A2EE;W;YI SYLLABLE NZIX
-A2EF;W;YI SYLLABLE NZI
-A2F0;W;YI SYLLABLE NZIP
-A2F1;W;YI SYLLABLE NZIEX
-A2F2;W;YI SYLLABLE NZIE
-A2F3;W;YI SYLLABLE NZIEP
-A2F4;W;YI SYLLABLE NZAT
-A2F5;W;YI SYLLABLE NZAX
-A2F6;W;YI SYLLABLE NZA
-A2F7;W;YI SYLLABLE NZAP
-A2F8;W;YI SYLLABLE NZUOX
-A2F9;W;YI SYLLABLE NZUO
-A2FA;W;YI SYLLABLE NZOX
-A2FB;W;YI SYLLABLE NZOP
-A2FC;W;YI SYLLABLE NZEX
-A2FD;W;YI SYLLABLE NZE
-A2FE;W;YI SYLLABLE NZUX
-A2FF;W;YI SYLLABLE NZU
-A300;W;YI SYLLABLE NZUP
-A301;W;YI SYLLABLE NZURX
-A302;W;YI SYLLABLE NZUR
-A303;W;YI SYLLABLE NZYT
-A304;W;YI SYLLABLE NZYX
-A305;W;YI SYLLABLE NZY
-A306;W;YI SYLLABLE NZYP
-A307;W;YI SYLLABLE NZYRX
-A308;W;YI SYLLABLE NZYR
-A309;W;YI SYLLABLE SIT
-A30A;W;YI SYLLABLE SIX
-A30B;W;YI SYLLABLE SI
-A30C;W;YI SYLLABLE SIP
-A30D;W;YI SYLLABLE SIEX
-A30E;W;YI SYLLABLE SIE
-A30F;W;YI SYLLABLE SIEP
-A310;W;YI SYLLABLE SAT
-A311;W;YI SYLLABLE SAX
-A312;W;YI SYLLABLE SA
-A313;W;YI SYLLABLE SAP
-A314;W;YI SYLLABLE SUOX
-A315;W;YI SYLLABLE SUO
-A316;W;YI SYLLABLE SUOP
-A317;W;YI SYLLABLE SOT
-A318;W;YI SYLLABLE SOX
-A319;W;YI SYLLABLE SO
-A31A;W;YI SYLLABLE SOP
-A31B;W;YI SYLLABLE SEX
-A31C;W;YI SYLLABLE SE
-A31D;W;YI SYLLABLE SEP
-A31E;W;YI SYLLABLE SUT
-A31F;W;YI SYLLABLE SUX
-A320;W;YI SYLLABLE SU
-A321;W;YI SYLLABLE SUP
-A322;W;YI SYLLABLE SURX
-A323;W;YI SYLLABLE SUR
-A324;W;YI SYLLABLE SYT
-A325;W;YI SYLLABLE SYX
-A326;W;YI SYLLABLE SY
-A327;W;YI SYLLABLE SYP
-A328;W;YI SYLLABLE SYRX
-A329;W;YI SYLLABLE SYR
-A32A;W;YI SYLLABLE SSIT
-A32B;W;YI SYLLABLE SSIX
-A32C;W;YI SYLLABLE SSI
-A32D;W;YI SYLLABLE SSIP
-A32E;W;YI SYLLABLE SSIEX
-A32F;W;YI SYLLABLE SSIE
-A330;W;YI SYLLABLE SSIEP
-A331;W;YI SYLLABLE SSAT
-A332;W;YI SYLLABLE SSAX
-A333;W;YI SYLLABLE SSA
-A334;W;YI SYLLABLE SSAP
-A335;W;YI SYLLABLE SSOT
-A336;W;YI SYLLABLE SSOX
-A337;W;YI SYLLABLE SSO
-A338;W;YI SYLLABLE SSOP
-A339;W;YI SYLLABLE SSEX
-A33A;W;YI SYLLABLE SSE
-A33B;W;YI SYLLABLE SSEP
-A33C;W;YI SYLLABLE SSUT
-A33D;W;YI SYLLABLE SSUX
-A33E;W;YI SYLLABLE SSU
-A33F;W;YI SYLLABLE SSUP
-A340;W;YI SYLLABLE SSYT
-A341;W;YI SYLLABLE SSYX
-A342;W;YI SYLLABLE SSY
-A343;W;YI SYLLABLE SSYP
-A344;W;YI SYLLABLE SSYRX
-A345;W;YI SYLLABLE SSYR
-A346;W;YI SYLLABLE ZHAT
-A347;W;YI SYLLABLE ZHAX
-A348;W;YI SYLLABLE ZHA
-A349;W;YI SYLLABLE ZHAP
-A34A;W;YI SYLLABLE ZHUOX
-A34B;W;YI SYLLABLE ZHUO
-A34C;W;YI SYLLABLE ZHUOP
-A34D;W;YI SYLLABLE ZHOT
-A34E;W;YI SYLLABLE ZHOX
-A34F;W;YI SYLLABLE ZHO
-A350;W;YI SYLLABLE ZHOP
-A351;W;YI SYLLABLE ZHET
-A352;W;YI SYLLABLE ZHEX
-A353;W;YI SYLLABLE ZHE
-A354;W;YI SYLLABLE ZHEP
-A355;W;YI SYLLABLE ZHUT
-A356;W;YI SYLLABLE ZHUX
-A357;W;YI SYLLABLE ZHU
-A358;W;YI SYLLABLE ZHUP
-A359;W;YI SYLLABLE ZHURX
-A35A;W;YI SYLLABLE ZHUR
-A35B;W;YI SYLLABLE ZHYT
-A35C;W;YI SYLLABLE ZHYX
-A35D;W;YI SYLLABLE ZHY
-A35E;W;YI SYLLABLE ZHYP
-A35F;W;YI SYLLABLE ZHYRX
-A360;W;YI SYLLABLE ZHYR
-A361;W;YI SYLLABLE CHAT
-A362;W;YI SYLLABLE CHAX
-A363;W;YI SYLLABLE CHA
-A364;W;YI SYLLABLE CHAP
-A365;W;YI SYLLABLE CHUOT
-A366;W;YI SYLLABLE CHUOX
-A367;W;YI SYLLABLE CHUO
-A368;W;YI SYLLABLE CHUOP
-A369;W;YI SYLLABLE CHOT
-A36A;W;YI SYLLABLE CHOX
-A36B;W;YI SYLLABLE CHO
-A36C;W;YI SYLLABLE CHOP
-A36D;W;YI SYLLABLE CHET
-A36E;W;YI SYLLABLE CHEX
-A36F;W;YI SYLLABLE CHE
-A370;W;YI SYLLABLE CHEP
-A371;W;YI SYLLABLE CHUX
-A372;W;YI SYLLABLE CHU
-A373;W;YI SYLLABLE CHUP
-A374;W;YI SYLLABLE CHURX
-A375;W;YI SYLLABLE CHUR
-A376;W;YI SYLLABLE CHYT
-A377;W;YI SYLLABLE CHYX
-A378;W;YI SYLLABLE CHY
-A379;W;YI SYLLABLE CHYP
-A37A;W;YI SYLLABLE CHYRX
-A37B;W;YI SYLLABLE CHYR
-A37C;W;YI SYLLABLE RRAX
-A37D;W;YI SYLLABLE RRA
-A37E;W;YI SYLLABLE RRUOX
-A37F;W;YI SYLLABLE RRUO
-A380;W;YI SYLLABLE RROT
-A381;W;YI SYLLABLE RROX
-A382;W;YI SYLLABLE RRO
-A383;W;YI SYLLABLE RROP
-A384;W;YI SYLLABLE RRET
-A385;W;YI SYLLABLE RREX
-A386;W;YI SYLLABLE RRE
-A387;W;YI SYLLABLE RREP
-A388;W;YI SYLLABLE RRUT
-A389;W;YI SYLLABLE RRUX
-A38A;W;YI SYLLABLE RRU
-A38B;W;YI SYLLABLE RRUP
-A38C;W;YI SYLLABLE RRURX
-A38D;W;YI SYLLABLE RRUR
-A38E;W;YI SYLLABLE RRYT
-A38F;W;YI SYLLABLE RRYX
-A390;W;YI SYLLABLE RRY
-A391;W;YI SYLLABLE RRYP
-A392;W;YI SYLLABLE RRYRX
-A393;W;YI SYLLABLE RRYR
-A394;W;YI SYLLABLE NRAT
-A395;W;YI SYLLABLE NRAX
-A396;W;YI SYLLABLE NRA
-A397;W;YI SYLLABLE NRAP
-A398;W;YI SYLLABLE NROX
-A399;W;YI SYLLABLE NRO
-A39A;W;YI SYLLABLE NROP
-A39B;W;YI SYLLABLE NRET
-A39C;W;YI SYLLABLE NREX
-A39D;W;YI SYLLABLE NRE
-A39E;W;YI SYLLABLE NREP
-A39F;W;YI SYLLABLE NRUT
-A3A0;W;YI SYLLABLE NRUX
-A3A1;W;YI SYLLABLE NRU
-A3A2;W;YI SYLLABLE NRUP
-A3A3;W;YI SYLLABLE NRURX
-A3A4;W;YI SYLLABLE NRUR
-A3A5;W;YI SYLLABLE NRYT
-A3A6;W;YI SYLLABLE NRYX
-A3A7;W;YI SYLLABLE NRY
-A3A8;W;YI SYLLABLE NRYP
-A3A9;W;YI SYLLABLE NRYRX
-A3AA;W;YI SYLLABLE NRYR
-A3AB;W;YI SYLLABLE SHAT
-A3AC;W;YI SYLLABLE SHAX
-A3AD;W;YI SYLLABLE SHA
-A3AE;W;YI SYLLABLE SHAP
-A3AF;W;YI SYLLABLE SHUOX
-A3B0;W;YI SYLLABLE SHUO
-A3B1;W;YI SYLLABLE SHUOP
-A3B2;W;YI SYLLABLE SHOT
-A3B3;W;YI SYLLABLE SHOX
-A3B4;W;YI SYLLABLE SHO
-A3B5;W;YI SYLLABLE SHOP
-A3B6;W;YI SYLLABLE SHET
-A3B7;W;YI SYLLABLE SHEX
-A3B8;W;YI SYLLABLE SHE
-A3B9;W;YI SYLLABLE SHEP
-A3BA;W;YI SYLLABLE SHUT
-A3BB;W;YI SYLLABLE SHUX
-A3BC;W;YI SYLLABLE SHU
-A3BD;W;YI SYLLABLE SHUP
-A3BE;W;YI SYLLABLE SHURX
-A3BF;W;YI SYLLABLE SHUR
-A3C0;W;YI SYLLABLE SHYT
-A3C1;W;YI SYLLABLE SHYX
-A3C2;W;YI SYLLABLE SHY
-A3C3;W;YI SYLLABLE SHYP
-A3C4;W;YI SYLLABLE SHYRX
-A3C5;W;YI SYLLABLE SHYR
-A3C6;W;YI SYLLABLE RAT
-A3C7;W;YI SYLLABLE RAX
-A3C8;W;YI SYLLABLE RA
-A3C9;W;YI SYLLABLE RAP
-A3CA;W;YI SYLLABLE RUOX
-A3CB;W;YI SYLLABLE RUO
-A3CC;W;YI SYLLABLE RUOP
-A3CD;W;YI SYLLABLE ROT
-A3CE;W;YI SYLLABLE ROX
-A3CF;W;YI SYLLABLE RO
-A3D0;W;YI SYLLABLE ROP
-A3D1;W;YI SYLLABLE REX
-A3D2;W;YI SYLLABLE RE
-A3D3;W;YI SYLLABLE REP
-A3D4;W;YI SYLLABLE RUT
-A3D5;W;YI SYLLABLE RUX
-A3D6;W;YI SYLLABLE RU
-A3D7;W;YI SYLLABLE RUP
-A3D8;W;YI SYLLABLE RURX
-A3D9;W;YI SYLLABLE RUR
-A3DA;W;YI SYLLABLE RYT
-A3DB;W;YI SYLLABLE RYX
-A3DC;W;YI SYLLABLE RY
-A3DD;W;YI SYLLABLE RYP
-A3DE;W;YI SYLLABLE RYRX
-A3DF;W;YI SYLLABLE RYR
-A3E0;W;YI SYLLABLE JIT
-A3E1;W;YI SYLLABLE JIX
-A3E2;W;YI SYLLABLE JI
-A3E3;W;YI SYLLABLE JIP
-A3E4;W;YI SYLLABLE JIET
-A3E5;W;YI SYLLABLE JIEX
-A3E6;W;YI SYLLABLE JIE
-A3E7;W;YI SYLLABLE JIEP
-A3E8;W;YI SYLLABLE JUOT
-A3E9;W;YI SYLLABLE JUOX
-A3EA;W;YI SYLLABLE JUO
-A3EB;W;YI SYLLABLE JUOP
-A3EC;W;YI SYLLABLE JOT
-A3ED;W;YI SYLLABLE JOX
-A3EE;W;YI SYLLABLE JO
-A3EF;W;YI SYLLABLE JOP
-A3F0;W;YI SYLLABLE JUT
-A3F1;W;YI SYLLABLE JUX
-A3F2;W;YI SYLLABLE JU
-A3F3;W;YI SYLLABLE JUP
-A3F4;W;YI SYLLABLE JURX
-A3F5;W;YI SYLLABLE JUR
-A3F6;W;YI SYLLABLE JYT
-A3F7;W;YI SYLLABLE JYX
-A3F8;W;YI SYLLABLE JY
-A3F9;W;YI SYLLABLE JYP
-A3FA;W;YI SYLLABLE JYRX
-A3FB;W;YI SYLLABLE JYR
-A3FC;W;YI SYLLABLE QIT
-A3FD;W;YI SYLLABLE QIX
-A3FE;W;YI SYLLABLE QI
-A3FF;W;YI SYLLABLE QIP
-A400;W;YI SYLLABLE QIET
-A401;W;YI SYLLABLE QIEX
-A402;W;YI SYLLABLE QIE
-A403;W;YI SYLLABLE QIEP
-A404;W;YI SYLLABLE QUOT
-A405;W;YI SYLLABLE QUOX
-A406;W;YI SYLLABLE QUO
-A407;W;YI SYLLABLE QUOP
-A408;W;YI SYLLABLE QOT
-A409;W;YI SYLLABLE QOX
-A40A;W;YI SYLLABLE QO
-A40B;W;YI SYLLABLE QOP
-A40C;W;YI SYLLABLE QUT
-A40D;W;YI SYLLABLE QUX
-A40E;W;YI SYLLABLE QU
-A40F;W;YI SYLLABLE QUP
-A410;W;YI SYLLABLE QURX
-A411;W;YI SYLLABLE QUR
-A412;W;YI SYLLABLE QYT
-A413;W;YI SYLLABLE QYX
-A414;W;YI SYLLABLE QY
-A415;W;YI SYLLABLE QYP
-A416;W;YI SYLLABLE QYRX
-A417;W;YI SYLLABLE QYR
-A418;W;YI SYLLABLE JJIT
-A419;W;YI SYLLABLE JJIX
-A41A;W;YI SYLLABLE JJI
-A41B;W;YI SYLLABLE JJIP
-A41C;W;YI SYLLABLE JJIET
-A41D;W;YI SYLLABLE JJIEX
-A41E;W;YI SYLLABLE JJIE
-A41F;W;YI SYLLABLE JJIEP
-A420;W;YI SYLLABLE JJUOX
-A421;W;YI SYLLABLE JJUO
-A422;W;YI SYLLABLE JJUOP
-A423;W;YI SYLLABLE JJOT
-A424;W;YI SYLLABLE JJOX
-A425;W;YI SYLLABLE JJO
-A426;W;YI SYLLABLE JJOP
-A427;W;YI SYLLABLE JJUT
-A428;W;YI SYLLABLE JJUX
-A429;W;YI SYLLABLE JJU
-A42A;W;YI SYLLABLE JJUP
-A42B;W;YI SYLLABLE JJURX
-A42C;W;YI SYLLABLE JJUR
-A42D;W;YI SYLLABLE JJYT
-A42E;W;YI SYLLABLE JJYX
-A42F;W;YI SYLLABLE JJY
-A430;W;YI SYLLABLE JJYP
-A431;W;YI SYLLABLE NJIT
-A432;W;YI SYLLABLE NJIX
-A433;W;YI SYLLABLE NJI
-A434;W;YI SYLLABLE NJIP
-A435;W;YI SYLLABLE NJIET
-A436;W;YI SYLLABLE NJIEX
-A437;W;YI SYLLABLE NJIE
-A438;W;YI SYLLABLE NJIEP
-A439;W;YI SYLLABLE NJUOX
-A43A;W;YI SYLLABLE NJUO
-A43B;W;YI SYLLABLE NJOT
-A43C;W;YI SYLLABLE NJOX
-A43D;W;YI SYLLABLE NJO
-A43E;W;YI SYLLABLE NJOP
-A43F;W;YI SYLLABLE NJUX
-A440;W;YI SYLLABLE NJU
-A441;W;YI SYLLABLE NJUP
-A442;W;YI SYLLABLE NJURX
-A443;W;YI SYLLABLE NJUR
-A444;W;YI SYLLABLE NJYT
-A445;W;YI SYLLABLE NJYX
-A446;W;YI SYLLABLE NJY
-A447;W;YI SYLLABLE NJYP
-A448;W;YI SYLLABLE NJYRX
-A449;W;YI SYLLABLE NJYR
-A44A;W;YI SYLLABLE NYIT
-A44B;W;YI SYLLABLE NYIX
-A44C;W;YI SYLLABLE NYI
-A44D;W;YI SYLLABLE NYIP
-A44E;W;YI SYLLABLE NYIET
-A44F;W;YI SYLLABLE NYIEX
-A450;W;YI SYLLABLE NYIE
-A451;W;YI SYLLABLE NYIEP
-A452;W;YI SYLLABLE NYUOX
-A453;W;YI SYLLABLE NYUO
-A454;W;YI SYLLABLE NYUOP
-A455;W;YI SYLLABLE NYOT
-A456;W;YI SYLLABLE NYOX
-A457;W;YI SYLLABLE NYO
-A458;W;YI SYLLABLE NYOP
-A459;W;YI SYLLABLE NYUT
-A45A;W;YI SYLLABLE NYUX
-A45B;W;YI SYLLABLE NYU
-A45C;W;YI SYLLABLE NYUP
-A45D;W;YI SYLLABLE XIT
-A45E;W;YI SYLLABLE XIX
-A45F;W;YI SYLLABLE XI
-A460;W;YI SYLLABLE XIP
-A461;W;YI SYLLABLE XIET
-A462;W;YI SYLLABLE XIEX
-A463;W;YI SYLLABLE XIE
-A464;W;YI SYLLABLE XIEP
-A465;W;YI SYLLABLE XUOX
-A466;W;YI SYLLABLE XUO
-A467;W;YI SYLLABLE XOT
-A468;W;YI SYLLABLE XOX
-A469;W;YI SYLLABLE XO
-A46A;W;YI SYLLABLE XOP
-A46B;W;YI SYLLABLE XYT
-A46C;W;YI SYLLABLE XYX
-A46D;W;YI SYLLABLE XY
-A46E;W;YI SYLLABLE XYP
-A46F;W;YI SYLLABLE XYRX
-A470;W;YI SYLLABLE XYR
-A471;W;YI SYLLABLE YIT
-A472;W;YI SYLLABLE YIX
-A473;W;YI SYLLABLE YI
-A474;W;YI SYLLABLE YIP
-A475;W;YI SYLLABLE YIET
-A476;W;YI SYLLABLE YIEX
-A477;W;YI SYLLABLE YIE
-A478;W;YI SYLLABLE YIEP
-A479;W;YI SYLLABLE YUOT
-A47A;W;YI SYLLABLE YUOX
-A47B;W;YI SYLLABLE YUO
-A47C;W;YI SYLLABLE YUOP
-A47D;W;YI SYLLABLE YOT
-A47E;W;YI SYLLABLE YOX
-A47F;W;YI SYLLABLE YO
-A480;W;YI SYLLABLE YOP
-A481;W;YI SYLLABLE YUT
-A482;W;YI SYLLABLE YUX
-A483;W;YI SYLLABLE YU
-A484;W;YI SYLLABLE YUP
-A485;W;YI SYLLABLE YURX
-A486;W;YI SYLLABLE YUR
-A487;W;YI SYLLABLE YYT
-A488;W;YI SYLLABLE YYX
-A489;W;YI SYLLABLE YY
-A48A;W;YI SYLLABLE YYP
-A48B;W;YI SYLLABLE YYRX
-A48C;W;YI SYLLABLE YYR
-A490;W;YI RADICAL QOT
-A491;W;YI RADICAL LI
-A492;W;YI RADICAL KIT
-A493;W;YI RADICAL NYIP
-A494;W;YI RADICAL CYP
-A495;W;YI RADICAL SSI
-A496;W;YI RADICAL GGOP
-A497;W;YI RADICAL GEP
-A498;W;YI RADICAL MI
-A499;W;YI RADICAL HXIT
-A49A;W;YI RADICAL LYR
-A49B;W;YI RADICAL BBUT
-A49C;W;YI RADICAL MOP
-A49D;W;YI RADICAL YO
-A49E;W;YI RADICAL PUT
-A49F;W;YI RADICAL HXUO
-A4A0;W;YI RADICAL TAT
-A4A1;W;YI RADICAL GA
-A4A4;W;YI RADICAL DDUR
-A4A5;W;YI RADICAL BUR
-A4A6;W;YI RADICAL GGUO
-A4A7;W;YI RADICAL NYOP
-A4A8;W;YI RADICAL TU
-A4A9;W;YI RADICAL OP
-A4AA;W;YI RADICAL JJUT
-A4AB;W;YI RADICAL ZOT
-A4AC;W;YI RADICAL PYT
-A4AD;W;YI RADICAL HMO
-A4AE;W;YI RADICAL YIT
-A4AF;W;YI RADICAL VUR
-A4B0;W;YI RADICAL SHY
-A4B1;W;YI RADICAL VEP
-A4B2;W;YI RADICAL ZA
-A4B3;W;YI RADICAL JO
-A4B5;W;YI RADICAL JJY
-A4B6;W;YI RADICAL GOT
-A4B7;W;YI RADICAL JJIE
-A4B8;W;YI RADICAL WO
-A4B9;W;YI RADICAL DU
-A4BA;W;YI RADICAL SHUR
-A4BB;W;YI RADICAL LIE
-A4BC;W;YI RADICAL CY
-A4BD;W;YI RADICAL CUOP
-A4BE;W;YI RADICAL CIP
-A4BF;W;YI RADICAL HXOP
-A4C0;W;YI RADICAL SHAT
-A4C2;W;YI RADICAL SHOP
-A4C3;W;YI RADICAL CHE
-A4C4;W;YI RADICAL ZZIET
-A4C6;W;YI RADICAL KE
-AC00;W;<Hangul Syllable, First>
-D7A3;W;<Hangul Syllable, Last>
-D800;N;<Non Private Use High Surrogate, First>
-DB7F;N;<Non Private Use High Surrogate, Last>
-DB80;N;<Private Use High Surrogate, First>
-DBFF;N;<Private Use High Surrogate, Last>
-DC00;N;<Low Surrogate, First>
-DFFF;N;<Low Surrogate, Last>
-E000;A;<Private Use, First>
-F8FF;A;<Private Use, Last>
-F900;W;CJK COMPATIBILITY IDEOGRAPH-F900
-F901;W;CJK COMPATIBILITY IDEOGRAPH-F901
-F902;W;CJK COMPATIBILITY IDEOGRAPH-F902
-F903;W;CJK COMPATIBILITY IDEOGRAPH-F903
-F904;W;CJK COMPATIBILITY IDEOGRAPH-F904
-F905;W;CJK COMPATIBILITY IDEOGRAPH-F905
-F906;W;CJK COMPATIBILITY IDEOGRAPH-F906
-F907;W;CJK COMPATIBILITY IDEOGRAPH-F907
-F908;W;CJK COMPATIBILITY IDEOGRAPH-F908
-F909;W;CJK COMPATIBILITY IDEOGRAPH-F909
-F90A;W;CJK COMPATIBILITY IDEOGRAPH-F90A
-F90B;W;CJK COMPATIBILITY IDEOGRAPH-F90B
-F90C;W;CJK COMPATIBILITY IDEOGRAPH-F90C
-F90D;W;CJK COMPATIBILITY IDEOGRAPH-F90D
-F90E;W;CJK COMPATIBILITY IDEOGRAPH-F90E
-F90F;W;CJK COMPATIBILITY IDEOGRAPH-F90F
-F910;W;CJK COMPATIBILITY IDEOGRAPH-F910
-F911;W;CJK COMPATIBILITY IDEOGRAPH-F911
-F912;W;CJK COMPATIBILITY IDEOGRAPH-F912
-F913;W;CJK COMPATIBILITY IDEOGRAPH-F913
-F914;W;CJK COMPATIBILITY IDEOGRAPH-F914
-F915;W;CJK COMPATIBILITY IDEOGRAPH-F915
-F916;W;CJK COMPATIBILITY IDEOGRAPH-F916
-F917;W;CJK COMPATIBILITY IDEOGRAPH-F917
-F918;W;CJK COMPATIBILITY IDEOGRAPH-F918
-F919;W;CJK COMPATIBILITY IDEOGRAPH-F919
-F91A;W;CJK COMPATIBILITY IDEOGRAPH-F91A
-F91B;W;CJK COMPATIBILITY IDEOGRAPH-F91B
-F91C;W;CJK COMPATIBILITY IDEOGRAPH-F91C
-F91D;W;CJK COMPATIBILITY IDEOGRAPH-F91D
-F91E;W;CJK COMPATIBILITY IDEOGRAPH-F91E
-F91F;W;CJK COMPATIBILITY IDEOGRAPH-F91F
-F920;W;CJK COMPATIBILITY IDEOGRAPH-F920
-F921;W;CJK COMPATIBILITY IDEOGRAPH-F921
-F922;W;CJK COMPATIBILITY IDEOGRAPH-F922
-F923;W;CJK COMPATIBILITY IDEOGRAPH-F923
-F924;W;CJK COMPATIBILITY IDEOGRAPH-F924
-F925;W;CJK COMPATIBILITY IDEOGRAPH-F925
-F926;W;CJK COMPATIBILITY IDEOGRAPH-F926
-F927;W;CJK COMPATIBILITY IDEOGRAPH-F927
-F928;W;CJK COMPATIBILITY IDEOGRAPH-F928
-F929;W;CJK COMPATIBILITY IDEOGRAPH-F929
-F92A;W;CJK COMPATIBILITY IDEOGRAPH-F92A
-F92B;W;CJK COMPATIBILITY IDEOGRAPH-F92B
-F92C;W;CJK COMPATIBILITY IDEOGRAPH-F92C
-F92D;W;CJK COMPATIBILITY IDEOGRAPH-F92D
-F92E;W;CJK COMPATIBILITY IDEOGRAPH-F92E
-F92F;W;CJK COMPATIBILITY IDEOGRAPH-F92F
-F930;W;CJK COMPATIBILITY IDEOGRAPH-F930
-F931;W;CJK COMPATIBILITY IDEOGRAPH-F931
-F932;W;CJK COMPATIBILITY IDEOGRAPH-F932
-F933;W;CJK COMPATIBILITY IDEOGRAPH-F933
-F934;W;CJK COMPATIBILITY IDEOGRAPH-F934
-F935;W;CJK COMPATIBILITY IDEOGRAPH-F935
-F936;W;CJK COMPATIBILITY IDEOGRAPH-F936
-F937;W;CJK COMPATIBILITY IDEOGRAPH-F937
-F938;W;CJK COMPATIBILITY IDEOGRAPH-F938
-F939;W;CJK COMPATIBILITY IDEOGRAPH-F939
-F93A;W;CJK COMPATIBILITY IDEOGRAPH-F93A
-F93B;W;CJK COMPATIBILITY IDEOGRAPH-F93B
-F93C;W;CJK COMPATIBILITY IDEOGRAPH-F93C
-F93D;W;CJK COMPATIBILITY IDEOGRAPH-F93D
-F93E;W;CJK COMPATIBILITY IDEOGRAPH-F93E
-F93F;W;CJK COMPATIBILITY IDEOGRAPH-F93F
-F940;W;CJK COMPATIBILITY IDEOGRAPH-F940
-F941;W;CJK COMPATIBILITY IDEOGRAPH-F941
-F942;W;CJK COMPATIBILITY IDEOGRAPH-F942
-F943;W;CJK COMPATIBILITY IDEOGRAPH-F943
-F944;W;CJK COMPATIBILITY IDEOGRAPH-F944
-F945;W;CJK COMPATIBILITY IDEOGRAPH-F945
-F946;W;CJK COMPATIBILITY IDEOGRAPH-F946
-F947;W;CJK COMPATIBILITY IDEOGRAPH-F947
-F948;W;CJK COMPATIBILITY IDEOGRAPH-F948
-F949;W;CJK COMPATIBILITY IDEOGRAPH-F949
-F94A;W;CJK COMPATIBILITY IDEOGRAPH-F94A
-F94B;W;CJK COMPATIBILITY IDEOGRAPH-F94B
-F94C;W;CJK COMPATIBILITY IDEOGRAPH-F94C
-F94D;W;CJK COMPATIBILITY IDEOGRAPH-F94D
-F94E;W;CJK COMPATIBILITY IDEOGRAPH-F94E
-F94F;W;CJK COMPATIBILITY IDEOGRAPH-F94F
-F950;W;CJK COMPATIBILITY IDEOGRAPH-F950
-F951;W;CJK COMPATIBILITY IDEOGRAPH-F951
-F952;W;CJK COMPATIBILITY IDEOGRAPH-F952
-F953;W;CJK COMPATIBILITY IDEOGRAPH-F953
-F954;W;CJK COMPATIBILITY IDEOGRAPH-F954
-F955;W;CJK COMPATIBILITY IDEOGRAPH-F955
-F956;W;CJK COMPATIBILITY IDEOGRAPH-F956
-F957;W;CJK COMPATIBILITY IDEOGRAPH-F957
-F958;W;CJK COMPATIBILITY IDEOGRAPH-F958
-F959;W;CJK COMPATIBILITY IDEOGRAPH-F959
-F95A;W;CJK COMPATIBILITY IDEOGRAPH-F95A
-F95B;W;CJK COMPATIBILITY IDEOGRAPH-F95B
-F95C;W;CJK COMPATIBILITY IDEOGRAPH-F95C
-F95D;W;CJK COMPATIBILITY IDEOGRAPH-F95D
-F95E;W;CJK COMPATIBILITY IDEOGRAPH-F95E
-F95F;W;CJK COMPATIBILITY IDEOGRAPH-F95F
-F960;W;CJK COMPATIBILITY IDEOGRAPH-F960
-F961;W;CJK COMPATIBILITY IDEOGRAPH-F961
-F962;W;CJK COMPATIBILITY IDEOGRAPH-F962
-F963;W;CJK COMPATIBILITY IDEOGRAPH-F963
-F964;W;CJK COMPATIBILITY IDEOGRAPH-F964
-F965;W;CJK COMPATIBILITY IDEOGRAPH-F965
-F966;W;CJK COMPATIBILITY IDEOGRAPH-F966
-F967;W;CJK COMPATIBILITY IDEOGRAPH-F967
-F968;W;CJK COMPATIBILITY IDEOGRAPH-F968
-F969;W;CJK COMPATIBILITY IDEOGRAPH-F969
-F96A;W;CJK COMPATIBILITY IDEOGRAPH-F96A
-F96B;W;CJK COMPATIBILITY IDEOGRAPH-F96B
-F96C;W;CJK COMPATIBILITY IDEOGRAPH-F96C
-F96D;W;CJK COMPATIBILITY IDEOGRAPH-F96D
-F96E;W;CJK COMPATIBILITY IDEOGRAPH-F96E
-F96F;W;CJK COMPATIBILITY IDEOGRAPH-F96F
-F970;W;CJK COMPATIBILITY IDEOGRAPH-F970
-F971;W;CJK COMPATIBILITY IDEOGRAPH-F971
-F972;W;CJK COMPATIBILITY IDEOGRAPH-F972
-F973;W;CJK COMPATIBILITY IDEOGRAPH-F973
-F974;W;CJK COMPATIBILITY IDEOGRAPH-F974
-F975;W;CJK COMPATIBILITY IDEOGRAPH-F975
-F976;W;CJK COMPATIBILITY IDEOGRAPH-F976
-F977;W;CJK COMPATIBILITY IDEOGRAPH-F977
-F978;W;CJK COMPATIBILITY IDEOGRAPH-F978
-F979;W;CJK COMPATIBILITY IDEOGRAPH-F979
-F97A;W;CJK COMPATIBILITY IDEOGRAPH-F97A
-F97B;W;CJK COMPATIBILITY IDEOGRAPH-F97B
-F97C;W;CJK COMPATIBILITY IDEOGRAPH-F97C
-F97D;W;CJK COMPATIBILITY IDEOGRAPH-F97D
-F97E;W;CJK COMPATIBILITY IDEOGRAPH-F97E
-F97F;W;CJK COMPATIBILITY IDEOGRAPH-F97F
-F980;W;CJK COMPATIBILITY IDEOGRAPH-F980
-F981;W;CJK COMPATIBILITY IDEOGRAPH-F981
-F982;W;CJK COMPATIBILITY IDEOGRAPH-F982
-F983;W;CJK COMPATIBILITY IDEOGRAPH-F983
-F984;W;CJK COMPATIBILITY IDEOGRAPH-F984
-F985;W;CJK COMPATIBILITY IDEOGRAPH-F985
-F986;W;CJK COMPATIBILITY IDEOGRAPH-F986
-F987;W;CJK COMPATIBILITY IDEOGRAPH-F987
-F988;W;CJK COMPATIBILITY IDEOGRAPH-F988
-F989;W;CJK COMPATIBILITY IDEOGRAPH-F989
-F98A;W;CJK COMPATIBILITY IDEOGRAPH-F98A
-F98B;W;CJK COMPATIBILITY IDEOGRAPH-F98B
-F98C;W;CJK COMPATIBILITY IDEOGRAPH-F98C
-F98D;W;CJK COMPATIBILITY IDEOGRAPH-F98D
-F98E;W;CJK COMPATIBILITY IDEOGRAPH-F98E
-F98F;W;CJK COMPATIBILITY IDEOGRAPH-F98F
-F990;W;CJK COMPATIBILITY IDEOGRAPH-F990
-F991;W;CJK COMPATIBILITY IDEOGRAPH-F991
-F992;W;CJK COMPATIBILITY IDEOGRAPH-F992
-F993;W;CJK COMPATIBILITY IDEOGRAPH-F993
-F994;W;CJK COMPATIBILITY IDEOGRAPH-F994
-F995;W;CJK COMPATIBILITY IDEOGRAPH-F995
-F996;W;CJK COMPATIBILITY IDEOGRAPH-F996
-F997;W;CJK COMPATIBILITY IDEOGRAPH-F997
-F998;W;CJK COMPATIBILITY IDEOGRAPH-F998
-F999;W;CJK COMPATIBILITY IDEOGRAPH-F999
-F99A;W;CJK COMPATIBILITY IDEOGRAPH-F99A
-F99B;W;CJK COMPATIBILITY IDEOGRAPH-F99B
-F99C;W;CJK COMPATIBILITY IDEOGRAPH-F99C
-F99D;W;CJK COMPATIBILITY IDEOGRAPH-F99D
-F99E;W;CJK COMPATIBILITY IDEOGRAPH-F99E
-F99F;W;CJK COMPATIBILITY IDEOGRAPH-F99F
-F9A0;W;CJK COMPATIBILITY IDEOGRAPH-F9A0
-F9A1;W;CJK COMPATIBILITY IDEOGRAPH-F9A1
-F9A2;W;CJK COMPATIBILITY IDEOGRAPH-F9A2
-F9A3;W;CJK COMPATIBILITY IDEOGRAPH-F9A3
-F9A4;W;CJK COMPATIBILITY IDEOGRAPH-F9A4
-F9A5;W;CJK COMPATIBILITY IDEOGRAPH-F9A5
-F9A6;W;CJK COMPATIBILITY IDEOGRAPH-F9A6
-F9A7;W;CJK COMPATIBILITY IDEOGRAPH-F9A7
-F9A8;W;CJK COMPATIBILITY IDEOGRAPH-F9A8
-F9A9;W;CJK COMPATIBILITY IDEOGRAPH-F9A9
-F9AA;W;CJK COMPATIBILITY IDEOGRAPH-F9AA
-F9AB;W;CJK COMPATIBILITY IDEOGRAPH-F9AB
-F9AC;W;CJK COMPATIBILITY IDEOGRAPH-F9AC
-F9AD;W;CJK COMPATIBILITY IDEOGRAPH-F9AD
-F9AE;W;CJK COMPATIBILITY IDEOGRAPH-F9AE
-F9AF;W;CJK COMPATIBILITY IDEOGRAPH-F9AF
-F9B0;W;CJK COMPATIBILITY IDEOGRAPH-F9B0
-F9B1;W;CJK COMPATIBILITY IDEOGRAPH-F9B1
-F9B2;W;CJK COMPATIBILITY IDEOGRAPH-F9B2
-F9B3;W;CJK COMPATIBILITY IDEOGRAPH-F9B3
-F9B4;W;CJK COMPATIBILITY IDEOGRAPH-F9B4
-F9B5;W;CJK COMPATIBILITY IDEOGRAPH-F9B5
-F9B6;W;CJK COMPATIBILITY IDEOGRAPH-F9B6
-F9B7;W;CJK COMPATIBILITY IDEOGRAPH-F9B7
-F9B8;W;CJK COMPATIBILITY IDEOGRAPH-F9B8
-F9B9;W;CJK COMPATIBILITY IDEOGRAPH-F9B9
-F9BA;W;CJK COMPATIBILITY IDEOGRAPH-F9BA
-F9BB;W;CJK COMPATIBILITY IDEOGRAPH-F9BB
-F9BC;W;CJK COMPATIBILITY IDEOGRAPH-F9BC
-F9BD;W;CJK COMPATIBILITY IDEOGRAPH-F9BD
-F9BE;W;CJK COMPATIBILITY IDEOGRAPH-F9BE
-F9BF;W;CJK COMPATIBILITY IDEOGRAPH-F9BF
-F9C0;W;CJK COMPATIBILITY IDEOGRAPH-F9C0
-F9C1;W;CJK COMPATIBILITY IDEOGRAPH-F9C1
-F9C2;W;CJK COMPATIBILITY IDEOGRAPH-F9C2
-F9C3;W;CJK COMPATIBILITY IDEOGRAPH-F9C3
-F9C4;W;CJK COMPATIBILITY IDEOGRAPH-F9C4
-F9C5;W;CJK COMPATIBILITY IDEOGRAPH-F9C5
-F9C6;W;CJK COMPATIBILITY IDEOGRAPH-F9C6
-F9C7;W;CJK COMPATIBILITY IDEOGRAPH-F9C7
-F9C8;W;CJK COMPATIBILITY IDEOGRAPH-F9C8
-F9C9;W;CJK COMPATIBILITY IDEOGRAPH-F9C9
-F9CA;W;CJK COMPATIBILITY IDEOGRAPH-F9CA
-F9CB;W;CJK COMPATIBILITY IDEOGRAPH-F9CB
-F9CC;W;CJK COMPATIBILITY IDEOGRAPH-F9CC
-F9CD;W;CJK COMPATIBILITY IDEOGRAPH-F9CD
-F9CE;W;CJK COMPATIBILITY IDEOGRAPH-F9CE
-F9CF;W;CJK COMPATIBILITY IDEOGRAPH-F9CF
-F9D0;W;CJK COMPATIBILITY IDEOGRAPH-F9D0
-F9D1;W;CJK COMPATIBILITY IDEOGRAPH-F9D1
-F9D2;W;CJK COMPATIBILITY IDEOGRAPH-F9D2
-F9D3;W;CJK COMPATIBILITY IDEOGRAPH-F9D3
-F9D4;W;CJK COMPATIBILITY IDEOGRAPH-F9D4
-F9D5;W;CJK COMPATIBILITY IDEOGRAPH-F9D5
-F9D6;W;CJK COMPATIBILITY IDEOGRAPH-F9D6
-F9D7;W;CJK COMPATIBILITY IDEOGRAPH-F9D7
-F9D8;W;CJK COMPATIBILITY IDEOGRAPH-F9D8
-F9D9;W;CJK COMPATIBILITY IDEOGRAPH-F9D9
-F9DA;W;CJK COMPATIBILITY IDEOGRAPH-F9DA
-F9DB;W;CJK COMPATIBILITY IDEOGRAPH-F9DB
-F9DC;W;CJK COMPATIBILITY IDEOGRAPH-F9DC
-F9DD;W;CJK COMPATIBILITY IDEOGRAPH-F9DD
-F9DE;W;CJK COMPATIBILITY IDEOGRAPH-F9DE
-F9DF;W;CJK COMPATIBILITY IDEOGRAPH-F9DF
-F9E0;W;CJK COMPATIBILITY IDEOGRAPH-F9E0
-F9E1;W;CJK COMPATIBILITY IDEOGRAPH-F9E1
-F9E2;W;CJK COMPATIBILITY IDEOGRAPH-F9E2
-F9E3;W;CJK COMPATIBILITY IDEOGRAPH-F9E3
-F9E4;W;CJK COMPATIBILITY IDEOGRAPH-F9E4
-F9E5;W;CJK COMPATIBILITY IDEOGRAPH-F9E5
-F9E6;W;CJK COMPATIBILITY IDEOGRAPH-F9E6
-F9E7;W;CJK COMPATIBILITY IDEOGRAPH-F9E7
-F9E8;W;CJK COMPATIBILITY IDEOGRAPH-F9E8
-F9E9;W;CJK COMPATIBILITY IDEOGRAPH-F9E9
-F9EA;W;CJK COMPATIBILITY IDEOGRAPH-F9EA
-F9EB;W;CJK COMPATIBILITY IDEOGRAPH-F9EB
-F9EC;W;CJK COMPATIBILITY IDEOGRAPH-F9EC
-F9ED;W;CJK COMPATIBILITY IDEOGRAPH-F9ED
-F9EE;W;CJK COMPATIBILITY IDEOGRAPH-F9EE
-F9EF;W;CJK COMPATIBILITY IDEOGRAPH-F9EF
-F9F0;W;CJK COMPATIBILITY IDEOGRAPH-F9F0
-F9F1;W;CJK COMPATIBILITY IDEOGRAPH-F9F1
-F9F2;W;CJK COMPATIBILITY IDEOGRAPH-F9F2
-F9F3;W;CJK COMPATIBILITY IDEOGRAPH-F9F3
-F9F4;W;CJK COMPATIBILITY IDEOGRAPH-F9F4
-F9F5;W;CJK COMPATIBILITY IDEOGRAPH-F9F5
-F9F6;W;CJK COMPATIBILITY IDEOGRAPH-F9F6
-F9F7;W;CJK COMPATIBILITY IDEOGRAPH-F9F7
-F9F8;W;CJK COMPATIBILITY IDEOGRAPH-F9F8
-F9F9;W;CJK COMPATIBILITY IDEOGRAPH-F9F9
-F9FA;W;CJK COMPATIBILITY IDEOGRAPH-F9FA
-F9FB;W;CJK COMPATIBILITY IDEOGRAPH-F9FB
-F9FC;W;CJK COMPATIBILITY IDEOGRAPH-F9FC
-F9FD;W;CJK COMPATIBILITY IDEOGRAPH-F9FD
-F9FE;W;CJK COMPATIBILITY IDEOGRAPH-F9FE
-F9FF;W;CJK COMPATIBILITY IDEOGRAPH-F9FF
-FA00;W;CJK COMPATIBILITY IDEOGRAPH-FA00
-FA01;W;CJK COMPATIBILITY IDEOGRAPH-FA01
-FA02;W;CJK COMPATIBILITY IDEOGRAPH-FA02
-FA03;W;CJK COMPATIBILITY IDEOGRAPH-FA03
-FA04;W;CJK COMPATIBILITY IDEOGRAPH-FA04
-FA05;W;CJK COMPATIBILITY IDEOGRAPH-FA05
-FA06;W;CJK COMPATIBILITY IDEOGRAPH-FA06
-FA07;W;CJK COMPATIBILITY IDEOGRAPH-FA07
-FA08;W;CJK COMPATIBILITY IDEOGRAPH-FA08
-FA09;W;CJK COMPATIBILITY IDEOGRAPH-FA09
-FA0A;W;CJK COMPATIBILITY IDEOGRAPH-FA0A
-FA0B;W;CJK COMPATIBILITY IDEOGRAPH-FA0B
-FA0C;W;CJK COMPATIBILITY IDEOGRAPH-FA0C
-FA0D;W;CJK COMPATIBILITY IDEOGRAPH-FA0D
-FA0E;W;CJK COMPATIBILITY IDEOGRAPH-FA0E
-FA0F;W;CJK COMPATIBILITY IDEOGRAPH-FA0F
-FA10;W;CJK COMPATIBILITY IDEOGRAPH-FA10
-FA11;W;CJK COMPATIBILITY IDEOGRAPH-FA11
-FA12;W;CJK COMPATIBILITY IDEOGRAPH-FA12
-FA13;W;CJK COMPATIBILITY IDEOGRAPH-FA13
-FA14;W;CJK COMPATIBILITY IDEOGRAPH-FA14
-FA15;W;CJK COMPATIBILITY IDEOGRAPH-FA15
-FA16;W;CJK COMPATIBILITY IDEOGRAPH-FA16
-FA17;W;CJK COMPATIBILITY IDEOGRAPH-FA17
-FA18;W;CJK COMPATIBILITY IDEOGRAPH-FA18
-FA19;W;CJK COMPATIBILITY IDEOGRAPH-FA19
-FA1A;W;CJK COMPATIBILITY IDEOGRAPH-FA1A
-FA1B;W;CJK COMPATIBILITY IDEOGRAPH-FA1B
-FA1C;W;CJK COMPATIBILITY IDEOGRAPH-FA1C
-FA1D;W;CJK COMPATIBILITY IDEOGRAPH-FA1D
-FA1E;W;CJK COMPATIBILITY IDEOGRAPH-FA1E
-FA1F;W;CJK COMPATIBILITY IDEOGRAPH-FA1F
-FA20;W;CJK COMPATIBILITY IDEOGRAPH-FA20
-FA21;W;CJK COMPATIBILITY IDEOGRAPH-FA21
-FA22;W;CJK COMPATIBILITY IDEOGRAPH-FA22
-FA23;W;CJK COMPATIBILITY IDEOGRAPH-FA23
-FA24;W;CJK COMPATIBILITY IDEOGRAPH-FA24
-FA25;W;CJK COMPATIBILITY IDEOGRAPH-FA25
-FA26;W;CJK COMPATIBILITY IDEOGRAPH-FA26
-FA27;W;CJK COMPATIBILITY IDEOGRAPH-FA27
-FA28;W;CJK COMPATIBILITY IDEOGRAPH-FA28
-FA29;W;CJK COMPATIBILITY IDEOGRAPH-FA29
-FA2A;W;CJK COMPATIBILITY IDEOGRAPH-FA2A
-FA2B;W;CJK COMPATIBILITY IDEOGRAPH-FA2B
-FA2C;W;CJK COMPATIBILITY IDEOGRAPH-FA2C
-FA2D;W;CJK COMPATIBILITY IDEOGRAPH-FA2D
-FB00;N;LATIN SMALL LIGATURE FF
-FB01;N;LATIN SMALL LIGATURE FI
-FB02;N;LATIN SMALL LIGATURE FL
-FB03;N;LATIN SMALL LIGATURE FFI
-FB04;N;LATIN SMALL LIGATURE FFL
-FB05;N;LATIN SMALL LIGATURE LONG S T
-FB06;N;LATIN SMALL LIGATURE ST
-FB13;N;ARMENIAN SMALL LIGATURE MEN NOW
-FB14;N;ARMENIAN SMALL LIGATURE MEN ECH
-FB15;N;ARMENIAN SMALL LIGATURE MEN INI
-FB16;N;ARMENIAN SMALL LIGATURE VEW NOW
-FB17;N;ARMENIAN SMALL LIGATURE MEN XEH
-FB1D;N;HEBREW LETTER YOD WITH HIRIQ
-FB1E;N;HEBREW POINT JUDEO-SPANISH VARIKA
-FB1F;N;HEBREW LIGATURE YIDDISH YOD YOD PATAH
-FB20;N;HEBREW LETTER ALTERNATIVE AYIN
-FB21;N;HEBREW LETTER WIDE ALEF
-FB22;N;HEBREW LETTER WIDE DALET
-FB23;N;HEBREW LETTER WIDE HE
-FB24;N;HEBREW LETTER WIDE KAF
-FB25;N;HEBREW LETTER WIDE LAMED
-FB26;N;HEBREW LETTER WIDE FINAL MEM
-FB27;N;HEBREW LETTER WIDE RESH
-FB28;N;HEBREW LETTER WIDE TAV
-FB29;N;HEBREW LETTER ALTERNATIVE PLUS SIGN
-FB2A;N;HEBREW LETTER SHIN WITH SHIN DOT
-FB2B;N;HEBREW LETTER SHIN WITH SIN DOT
-FB2C;N;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
-FB2D;N;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
-FB2E;N;HEBREW LETTER ALEF WITH PATAH
-FB2F;N;HEBREW LETTER ALEF WITH QAMATS
-FB30;N;HEBREW LETTER ALEF WITH MAPIQ
-FB31;N;HEBREW LETTER BET WITH DAGESH
-FB32;N;HEBREW LETTER GIMEL WITH DAGESH
-FB33;N;HEBREW LETTER DALET WITH DAGESH
-FB34;N;HEBREW LETTER HE WITH MAPIQ
-FB35;N;HEBREW LETTER VAV WITH DAGESH
-FB36;N;HEBREW LETTER ZAYIN WITH DAGESH
-FB38;N;HEBREW LETTER TET WITH DAGESH
-FB39;N;HEBREW LETTER YOD WITH DAGESH
-FB3A;N;HEBREW LETTER FINAL KAF WITH DAGESH
-FB3B;N;HEBREW LETTER KAF WITH DAGESH
-FB3C;N;HEBREW LETTER LAMED WITH DAGESH
-FB3E;N;HEBREW LETTER MEM WITH DAGESH
-FB40;N;HEBREW LETTER NUN WITH DAGESH
-FB41;N;HEBREW LETTER SAMEKH WITH DAGESH
-FB43;N;HEBREW LETTER FINAL PE WITH DAGESH
-FB44;N;HEBREW LETTER PE WITH DAGESH
-FB46;N;HEBREW LETTER TSADI WITH DAGESH
-FB47;N;HEBREW LETTER QOF WITH DAGESH
-FB48;N;HEBREW LETTER RESH WITH DAGESH
-FB49;N;HEBREW LETTER SHIN WITH DAGESH
-FB4A;N;HEBREW LETTER TAV WITH DAGESH
-FB4B;N;HEBREW LETTER VAV WITH HOLAM
-FB4C;N;HEBREW LETTER BET WITH RAFE
-FB4D;N;HEBREW LETTER KAF WITH RAFE
-FB4E;N;HEBREW LETTER PE WITH RAFE
-FB4F;N;HEBREW LIGATURE ALEF LAMED
-FB50;N;ARABIC LETTER ALEF WASLA ISOLATED FORM
-FB51;N;ARABIC LETTER ALEF WASLA FINAL FORM
-FB52;N;ARABIC LETTER BEEH ISOLATED FORM
-FB53;N;ARABIC LETTER BEEH FINAL FORM
-FB54;N;ARABIC LETTER BEEH INITIAL FORM
-FB55;N;ARABIC LETTER BEEH MEDIAL FORM
-FB56;N;ARABIC LETTER PEH ISOLATED FORM
-FB57;N;ARABIC LETTER PEH FINAL FORM
-FB58;N;ARABIC LETTER PEH INITIAL FORM
-FB59;N;ARABIC LETTER PEH MEDIAL FORM
-FB5A;N;ARABIC LETTER BEHEH ISOLATED FORM
-FB5B;N;ARABIC LETTER BEHEH FINAL FORM
-FB5C;N;ARABIC LETTER BEHEH INITIAL FORM
-FB5D;N;ARABIC LETTER BEHEH MEDIAL FORM
-FB5E;N;ARABIC LETTER TTEHEH ISOLATED FORM
-FB5F;N;ARABIC LETTER TTEHEH FINAL FORM
-FB60;N;ARABIC LETTER TTEHEH INITIAL FORM
-FB61;N;ARABIC LETTER TTEHEH MEDIAL FORM
-FB62;N;ARABIC LETTER TEHEH ISOLATED FORM
-FB63;N;ARABIC LETTER TEHEH FINAL FORM
-FB64;N;ARABIC LETTER TEHEH INITIAL FORM
-FB65;N;ARABIC LETTER TEHEH MEDIAL FORM
-FB66;N;ARABIC LETTER TTEH ISOLATED FORM
-FB67;N;ARABIC LETTER TTEH FINAL FORM
-FB68;N;ARABIC LETTER TTEH INITIAL FORM
-FB69;N;ARABIC LETTER TTEH MEDIAL FORM
-FB6A;N;ARABIC LETTER VEH ISOLATED FORM
-FB6B;N;ARABIC LETTER VEH FINAL FORM
-FB6C;N;ARABIC LETTER VEH INITIAL FORM
-FB6D;N;ARABIC LETTER VEH MEDIAL FORM
-FB6E;N;ARABIC LETTER PEHEH ISOLATED FORM
-FB6F;N;ARABIC LETTER PEHEH FINAL FORM
-FB70;N;ARABIC LETTER PEHEH INITIAL FORM
-FB71;N;ARABIC LETTER PEHEH MEDIAL FORM
-FB72;N;ARABIC LETTER DYEH ISOLATED FORM
-FB73;N;ARABIC LETTER DYEH FINAL FORM
-FB74;N;ARABIC LETTER DYEH INITIAL FORM
-FB75;N;ARABIC LETTER DYEH MEDIAL FORM
-FB76;N;ARABIC LETTER NYEH ISOLATED FORM
-FB77;N;ARABIC LETTER NYEH FINAL FORM
-FB78;N;ARABIC LETTER NYEH INITIAL FORM
-FB79;N;ARABIC LETTER NYEH MEDIAL FORM
-FB7A;N;ARABIC LETTER TCHEH ISOLATED FORM
-FB7B;N;ARABIC LETTER TCHEH FINAL FORM
-FB7C;N;ARABIC LETTER TCHEH INITIAL FORM
-FB7D;N;ARABIC LETTER TCHEH MEDIAL FORM
-FB7E;N;ARABIC LETTER TCHEHEH ISOLATED FORM
-FB7F;N;ARABIC LETTER TCHEHEH FINAL FORM
-FB80;N;ARABIC LETTER TCHEHEH INITIAL FORM
-FB81;N;ARABIC LETTER TCHEHEH MEDIAL FORM
-FB82;N;ARABIC LETTER DDAHAL ISOLATED FORM
-FB83;N;ARABIC LETTER DDAHAL FINAL FORM
-FB84;N;ARABIC LETTER DAHAL ISOLATED FORM
-FB85;N;ARABIC LETTER DAHAL FINAL FORM
-FB86;N;ARABIC LETTER DUL ISOLATED FORM
-FB87;N;ARABIC LETTER DUL FINAL FORM
-FB88;N;ARABIC LETTER DDAL ISOLATED FORM
-FB89;N;ARABIC LETTER DDAL FINAL FORM
-FB8A;N;ARABIC LETTER JEH ISOLATED FORM
-FB8B;N;ARABIC LETTER JEH FINAL FORM
-FB8C;N;ARABIC LETTER RREH ISOLATED FORM
-FB8D;N;ARABIC LETTER RREH FINAL FORM
-FB8E;N;ARABIC LETTER KEHEH ISOLATED FORM
-FB8F;N;ARABIC LETTER KEHEH FINAL FORM
-FB90;N;ARABIC LETTER KEHEH INITIAL FORM
-FB91;N;ARABIC LETTER KEHEH MEDIAL FORM
-FB92;N;ARABIC LETTER GAF ISOLATED FORM
-FB93;N;ARABIC LETTER GAF FINAL FORM
-FB94;N;ARABIC LETTER GAF INITIAL FORM
-FB95;N;ARABIC LETTER GAF MEDIAL FORM
-FB96;N;ARABIC LETTER GUEH ISOLATED FORM
-FB97;N;ARABIC LETTER GUEH FINAL FORM
-FB98;N;ARABIC LETTER GUEH INITIAL FORM
-FB99;N;ARABIC LETTER GUEH MEDIAL FORM
-FB9A;N;ARABIC LETTER NGOEH ISOLATED FORM
-FB9B;N;ARABIC LETTER NGOEH FINAL FORM
-FB9C;N;ARABIC LETTER NGOEH INITIAL FORM
-FB9D;N;ARABIC LETTER NGOEH MEDIAL FORM
-FB9E;N;ARABIC LETTER NOON GHUNNA ISOLATED FORM
-FB9F;N;ARABIC LETTER NOON GHUNNA FINAL FORM
-FBA0;N;ARABIC LETTER RNOON ISOLATED FORM
-FBA1;N;ARABIC LETTER RNOON FINAL FORM
-FBA2;N;ARABIC LETTER RNOON INITIAL FORM
-FBA3;N;ARABIC LETTER RNOON MEDIAL FORM
-FBA4;N;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
-FBA5;N;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
-FBA6;N;ARABIC LETTER HEH GOAL ISOLATED FORM
-FBA7;N;ARABIC LETTER HEH GOAL FINAL FORM
-FBA8;N;ARABIC LETTER HEH GOAL INITIAL FORM
-FBA9;N;ARABIC LETTER HEH GOAL MEDIAL FORM
-FBAA;N;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
-FBAB;N;ARABIC LETTER HEH DOACHASHMEE FINAL FORM
-FBAC;N;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
-FBAD;N;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
-FBAE;N;ARABIC LETTER YEH BARREE ISOLATED FORM
-FBAF;N;ARABIC LETTER YEH BARREE FINAL FORM
-FBB0;N;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
-FBB1;N;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
-FBD3;N;ARABIC LETTER NG ISOLATED FORM
-FBD4;N;ARABIC LETTER NG FINAL FORM
-FBD5;N;ARABIC LETTER NG INITIAL FORM
-FBD6;N;ARABIC LETTER NG MEDIAL FORM
-FBD7;N;ARABIC LETTER U ISOLATED FORM
-FBD8;N;ARABIC LETTER U FINAL FORM
-FBD9;N;ARABIC LETTER OE ISOLATED FORM
-FBDA;N;ARABIC LETTER OE FINAL FORM
-FBDB;N;ARABIC LETTER YU ISOLATED FORM
-FBDC;N;ARABIC LETTER YU FINAL FORM
-FBDD;N;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
-FBDE;N;ARABIC LETTER VE ISOLATED FORM
-FBDF;N;ARABIC LETTER VE FINAL FORM
-FBE0;N;ARABIC LETTER KIRGHIZ OE ISOLATED FORM
-FBE1;N;ARABIC LETTER KIRGHIZ OE FINAL FORM
-FBE2;N;ARABIC LETTER KIRGHIZ YU ISOLATED FORM
-FBE3;N;ARABIC LETTER KIRGHIZ YU FINAL FORM
-FBE4;N;ARABIC LETTER E ISOLATED FORM
-FBE5;N;ARABIC LETTER E FINAL FORM
-FBE6;N;ARABIC LETTER E INITIAL FORM
-FBE7;N;ARABIC LETTER E MEDIAL FORM
-FBE8;N;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
-FBE9;N;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
-FBEA;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
-FBEB;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
-FBEC;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
-FBED;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
-FBEE;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
-FBEF;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
-FBF0;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
-FBF1;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
-FBF2;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
-FBF3;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
-FBF4;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
-FBF5;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
-FBF6;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
-FBF7;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
-FBF8;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
-FBF9;N;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-FBFA;N;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-FBFB;N;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
-FBFC;N;ARABIC LETTER FARSI YEH ISOLATED FORM
-FBFD;N;ARABIC LETTER FARSI YEH FINAL FORM
-FBFE;N;ARABIC LETTER FARSI YEH INITIAL FORM
-FBFF;N;ARABIC LETTER FARSI YEH MEDIAL FORM
-FC00;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
-FC01;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
-FC02;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
-FC03;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-FC04;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
-FC05;N;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
-FC06;N;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
-FC07;N;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
-FC08;N;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
-FC09;N;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
-FC0A;N;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
-FC0B;N;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
-FC0C;N;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
-FC0D;N;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
-FC0E;N;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
-FC0F;N;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
-FC10;N;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
-FC11;N;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
-FC12;N;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
-FC13;N;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
-FC14;N;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
-FC15;N;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
-FC16;N;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
-FC17;N;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
-FC18;N;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
-FC19;N;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
-FC1A;N;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
-FC1B;N;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
-FC1C;N;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
-FC1D;N;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
-FC1E;N;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
-FC1F;N;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
-FC20;N;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
-FC21;N;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
-FC22;N;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
-FC23;N;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
-FC24;N;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
-FC25;N;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
-FC26;N;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
-FC27;N;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
-FC28;N;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
-FC29;N;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
-FC2A;N;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
-FC2B;N;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
-FC2C;N;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
-FC2D;N;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
-FC2E;N;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
-FC2F;N;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
-FC30;N;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
-FC31;N;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
-FC32;N;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
-FC33;N;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
-FC34;N;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
-FC35;N;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
-FC36;N;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
-FC37;N;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
-FC38;N;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
-FC39;N;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
-FC3A;N;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
-FC3B;N;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
-FC3C;N;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
-FC3D;N;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
-FC3E;N;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
-FC3F;N;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
-FC40;N;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
-FC41;N;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
-FC42;N;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
-FC43;N;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
-FC44;N;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
-FC45;N;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
-FC46;N;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
-FC47;N;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
-FC48;N;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
-FC49;N;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
-FC4A;N;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
-FC4B;N;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
-FC4C;N;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
-FC4D;N;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
-FC4E;N;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
-FC4F;N;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
-FC50;N;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
-FC51;N;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
-FC52;N;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
-FC53;N;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
-FC54;N;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
-FC55;N;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
-FC56;N;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
-FC57;N;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
-FC58;N;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
-FC59;N;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
-FC5A;N;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
-FC5B;N;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5C;N;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5D;N;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5E;N;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
-FC5F;N;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
-FC60;N;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
-FC61;N;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
-FC62;N;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
-FC63;N;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC64;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
-FC65;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
-FC66;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
-FC67;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
-FC68;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-FC69;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
-FC6A;N;ARABIC LIGATURE BEH WITH REH FINAL FORM
-FC6B;N;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
-FC6C;N;ARABIC LIGATURE BEH WITH MEEM FINAL FORM
-FC6D;N;ARABIC LIGATURE BEH WITH NOON FINAL FORM
-FC6E;N;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
-FC6F;N;ARABIC LIGATURE BEH WITH YEH FINAL FORM
-FC70;N;ARABIC LIGATURE TEH WITH REH FINAL FORM
-FC71;N;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
-FC72;N;ARABIC LIGATURE TEH WITH MEEM FINAL FORM
-FC73;N;ARABIC LIGATURE TEH WITH NOON FINAL FORM
-FC74;N;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
-FC75;N;ARABIC LIGATURE TEH WITH YEH FINAL FORM
-FC76;N;ARABIC LIGATURE THEH WITH REH FINAL FORM
-FC77;N;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
-FC78;N;ARABIC LIGATURE THEH WITH MEEM FINAL FORM
-FC79;N;ARABIC LIGATURE THEH WITH NOON FINAL FORM
-FC7A;N;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
-FC7B;N;ARABIC LIGATURE THEH WITH YEH FINAL FORM
-FC7C;N;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
-FC7D;N;ARABIC LIGATURE FEH WITH YEH FINAL FORM
-FC7E;N;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
-FC7F;N;ARABIC LIGATURE QAF WITH YEH FINAL FORM
-FC80;N;ARABIC LIGATURE KAF WITH ALEF FINAL FORM
-FC81;N;ARABIC LIGATURE KAF WITH LAM FINAL FORM
-FC82;N;ARABIC LIGATURE KAF WITH MEEM FINAL FORM
-FC83;N;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
-FC84;N;ARABIC LIGATURE KAF WITH YEH FINAL FORM
-FC85;N;ARABIC LIGATURE LAM WITH MEEM FINAL FORM
-FC86;N;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
-FC87;N;ARABIC LIGATURE LAM WITH YEH FINAL FORM
-FC88;N;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
-FC89;N;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
-FC8A;N;ARABIC LIGATURE NOON WITH REH FINAL FORM
-FC8B;N;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
-FC8C;N;ARABIC LIGATURE NOON WITH MEEM FINAL FORM
-FC8D;N;ARABIC LIGATURE NOON WITH NOON FINAL FORM
-FC8E;N;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
-FC8F;N;ARABIC LIGATURE NOON WITH YEH FINAL FORM
-FC90;N;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
-FC91;N;ARABIC LIGATURE YEH WITH REH FINAL FORM
-FC92;N;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
-FC93;N;ARABIC LIGATURE YEH WITH MEEM FINAL FORM
-FC94;N;ARABIC LIGATURE YEH WITH NOON FINAL FORM
-FC95;N;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
-FC96;N;ARABIC LIGATURE YEH WITH YEH FINAL FORM
-FC97;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
-FC98;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
-FC99;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
-FC9A;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
-FC9B;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
-FC9C;N;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
-FC9D;N;ARABIC LIGATURE BEH WITH HAH INITIAL FORM
-FC9E;N;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
-FC9F;N;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
-FCA0;N;ARABIC LIGATURE BEH WITH HEH INITIAL FORM
-FCA1;N;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
-FCA2;N;ARABIC LIGATURE TEH WITH HAH INITIAL FORM
-FCA3;N;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
-FCA4;N;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
-FCA5;N;ARABIC LIGATURE TEH WITH HEH INITIAL FORM
-FCA6;N;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
-FCA7;N;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
-FCA8;N;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
-FCA9;N;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
-FCAA;N;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
-FCAB;N;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
-FCAC;N;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
-FCAD;N;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
-FCAE;N;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
-FCAF;N;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
-FCB0;N;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
-FCB1;N;ARABIC LIGATURE SAD WITH HAH INITIAL FORM
-FCB2;N;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
-FCB3;N;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
-FCB4;N;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
-FCB5;N;ARABIC LIGATURE DAD WITH HAH INITIAL FORM
-FCB6;N;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
-FCB7;N;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
-FCB8;N;ARABIC LIGATURE TAH WITH HAH INITIAL FORM
-FCB9;N;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
-FCBA;N;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
-FCBB;N;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
-FCBC;N;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
-FCBD;N;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
-FCBE;N;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
-FCBF;N;ARABIC LIGATURE FEH WITH HAH INITIAL FORM
-FCC0;N;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
-FCC1;N;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
-FCC2;N;ARABIC LIGATURE QAF WITH HAH INITIAL FORM
-FCC3;N;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
-FCC4;N;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
-FCC5;N;ARABIC LIGATURE KAF WITH HAH INITIAL FORM
-FCC6;N;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
-FCC7;N;ARABIC LIGATURE KAF WITH LAM INITIAL FORM
-FCC8;N;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
-FCC9;N;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
-FCCA;N;ARABIC LIGATURE LAM WITH HAH INITIAL FORM
-FCCB;N;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
-FCCC;N;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
-FCCD;N;ARABIC LIGATURE LAM WITH HEH INITIAL FORM
-FCCE;N;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
-FCCF;N;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
-FCD0;N;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
-FCD1;N;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
-FCD2;N;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
-FCD3;N;ARABIC LIGATURE NOON WITH HAH INITIAL FORM
-FCD4;N;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
-FCD5;N;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
-FCD6;N;ARABIC LIGATURE NOON WITH HEH INITIAL FORM
-FCD7;N;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
-FCD8;N;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
-FCD9;N;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
-FCDA;N;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
-FCDB;N;ARABIC LIGATURE YEH WITH HAH INITIAL FORM
-FCDC;N;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
-FCDD;N;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
-FCDE;N;ARABIC LIGATURE YEH WITH HEH INITIAL FORM
-FCDF;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
-FCE0;N;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
-FCE1;N;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
-FCE2;N;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
-FCE3;N;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
-FCE4;N;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
-FCE5;N;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
-FCE6;N;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
-FCE7;N;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
-FCE8;N;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
-FCE9;N;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
-FCEA;N;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
-FCEB;N;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
-FCEC;N;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
-FCED;N;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
-FCEE;N;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
-FCEF;N;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
-FCF0;N;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
-FCF1;N;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
-FCF2;N;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
-FCF3;N;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
-FCF4;N;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
-FCF5;N;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
-FCF6;N;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
-FCF7;N;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
-FCF8;N;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
-FCF9;N;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
-FCFA;N;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
-FCFB;N;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
-FCFC;N;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
-FCFD;N;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
-FCFE;N;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
-FCFF;N;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
-FD00;N;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
-FD01;N;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
-FD02;N;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
-FD03;N;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
-FD04;N;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
-FD05;N;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
-FD06;N;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
-FD07;N;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
-FD08;N;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
-FD09;N;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
-FD0A;N;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
-FD0B;N;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
-FD0C;N;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
-FD0D;N;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
-FD0E;N;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
-FD0F;N;ARABIC LIGATURE SAD WITH REH ISOLATED FORM
-FD10;N;ARABIC LIGATURE DAD WITH REH ISOLATED FORM
-FD11;N;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
-FD12;N;ARABIC LIGATURE TAH WITH YEH FINAL FORM
-FD13;N;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
-FD14;N;ARABIC LIGATURE AIN WITH YEH FINAL FORM
-FD15;N;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
-FD16;N;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
-FD17;N;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
-FD18;N;ARABIC LIGATURE SEEN WITH YEH FINAL FORM
-FD19;N;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
-FD1A;N;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
-FD1B;N;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
-FD1C;N;ARABIC LIGATURE HAH WITH YEH FINAL FORM
-FD1D;N;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
-FD1E;N;ARABIC LIGATURE JEEM WITH YEH FINAL FORM
-FD1F;N;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
-FD20;N;ARABIC LIGATURE KHAH WITH YEH FINAL FORM
-FD21;N;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
-FD22;N;ARABIC LIGATURE SAD WITH YEH FINAL FORM
-FD23;N;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
-FD24;N;ARABIC LIGATURE DAD WITH YEH FINAL FORM
-FD25;N;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
-FD26;N;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
-FD27;N;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
-FD28;N;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
-FD29;N;ARABIC LIGATURE SHEEN WITH REH FINAL FORM
-FD2A;N;ARABIC LIGATURE SEEN WITH REH FINAL FORM
-FD2B;N;ARABIC LIGATURE SAD WITH REH FINAL FORM
-FD2C;N;ARABIC LIGATURE DAD WITH REH FINAL FORM
-FD2D;N;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
-FD2E;N;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
-FD2F;N;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
-FD30;N;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
-FD31;N;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
-FD32;N;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
-FD33;N;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
-FD34;N;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
-FD35;N;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
-FD36;N;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
-FD37;N;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
-FD38;N;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
-FD39;N;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
-FD3A;N;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
-FD3B;N;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
-FD3C;N;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
-FD3D;N;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
-FD3E;N;ORNATE LEFT PARENTHESIS
-FD3F;N;ORNATE RIGHT PARENTHESIS
-FD50;N;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
-FD51;N;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
-FD52;N;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
-FD53;N;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
-FD54;N;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
-FD55;N;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
-FD56;N;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
-FD57;N;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
-FD58;N;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
-FD59;N;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
-FD5A;N;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
-FD5B;N;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD5C;N;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
-FD5D;N;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
-FD5E;N;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FD5F;N;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
-FD60;N;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
-FD61;N;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
-FD62;N;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
-FD63;N;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
-FD64;N;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
-FD65;N;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
-FD66;N;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
-FD67;N;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
-FD68;N;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
-FD69;N;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
-FD6A;N;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
-FD6B;N;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
-FD6C;N;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
-FD6D;N;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
-FD6E;N;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD6F;N;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
-FD70;N;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
-FD71;N;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
-FD72;N;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
-FD73;N;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
-FD74;N;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
-FD75;N;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
-FD76;N;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
-FD77;N;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
-FD78;N;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD79;N;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
-FD7A;N;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
-FD7B;N;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD7C;N;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
-FD7D;N;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
-FD7E;N;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
-FD7F;N;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
-FD80;N;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
-FD81;N;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
-FD82;N;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD83;N;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
-FD84;N;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
-FD85;N;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
-FD86;N;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
-FD87;N;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
-FD88;N;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
-FD89;N;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
-FD8A;N;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
-FD8B;N;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
-FD8C;N;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
-FD8D;N;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
-FD8E;N;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
-FD8F;N;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
-FD92;N;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
-FD93;N;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
-FD94;N;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
-FD95;N;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
-FD96;N;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD97;N;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
-FD98;N;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
-FD99;N;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FD9A;N;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
-FD9B;N;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD9C;N;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
-FD9D;N;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
-FD9E;N;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
-FD9F;N;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
-FDA0;N;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FDA1;N;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
-FDA2;N;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
-FDA3;N;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
-FDA4;N;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDA5;N;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
-FDA6;N;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
-FDA7;N;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDA8;N;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
-FDA9;N;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
-FDAA;N;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
-FDAB;N;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
-FDAC;N;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
-FDAD;N;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
-FDAE;N;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
-FDAF;N;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
-FDB0;N;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
-FDB1;N;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
-FDB2;N;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
-FDB3;N;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
-FDB4;N;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
-FDB5;N;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
-FDB6;N;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
-FDB7;N;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
-FDB8;N;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
-FDB9;N;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
-FDBA;N;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
-FDBB;N;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
-FDBC;N;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
-FDBD;N;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
-FDBE;N;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
-FDBF;N;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
-FDC0;N;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
-FDC1;N;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
-FDC2;N;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
-FDC3;N;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
-FDC4;N;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
-FDC5;N;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
-FDC6;N;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
-FDC7;N;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
-FDF0;N;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
-FDF1;N;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
-FDF2;N;ARABIC LIGATURE ALLAH ISOLATED FORM
-FDF3;N;ARABIC LIGATURE AKBAR ISOLATED FORM
-FDF4;N;ARABIC LIGATURE MOHAMMAD ISOLATED FORM
-FDF5;N;ARABIC LIGATURE SALAM ISOLATED FORM
-FDF6;N;ARABIC LIGATURE RASOUL ISOLATED FORM
-FDF7;N;ARABIC LIGATURE ALAYHE ISOLATED FORM
-FDF8;N;ARABIC LIGATURE WASALLAM ISOLATED FORM
-FDF9;N;ARABIC LIGATURE SALLA ISOLATED FORM
-FDFA;N;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
-FDFB;N;ARABIC LIGATURE JALLAJALALOUHOU
-FE20;N;COMBINING LIGATURE LEFT HALF
-FE21;N;COMBINING LIGATURE RIGHT HALF
-FE22;N;COMBINING DOUBLE TILDE LEFT HALF
-FE23;N;COMBINING DOUBLE TILDE RIGHT HALF
-FE30;W;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
-FE31;W;PRESENTATION FORM FOR VERTICAL EM DASH
-FE32;W;PRESENTATION FORM FOR VERTICAL EN DASH
-FE33;W;PRESENTATION FORM FOR VERTICAL LOW LINE
-FE34;W;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
-FE35;W;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
-FE36;W;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
-FE37;W;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
-FE38;W;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
-FE39;W;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
-FE3A;W;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
-FE3B;W;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
-FE3C;W;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
-FE3D;W;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
-FE3E;W;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
-FE3F;W;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
-FE40;W;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
-FE41;W;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
-FE42;W;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
-FE43;W;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
-FE44;W;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
-FE49;W;DASHED OVERLINE
-FE4A;W;CENTRELINE OVERLINE
-FE4B;W;WAVY OVERLINE
-FE4C;W;DOUBLE WAVY OVERLINE
-FE4D;W;DASHED LOW LINE
-FE4E;W;CENTRELINE LOW LINE
-FE4F;W;WAVY LOW LINE
-FE50;W;SMALL COMMA
-FE51;W;SMALL IDEOGRAPHIC COMMA
-FE52;W;SMALL FULL STOP
-FE54;W;SMALL SEMICOLON
-FE55;W;SMALL COLON
-FE56;W;SMALL QUESTION MARK
-FE57;W;SMALL EXCLAMATION MARK
-FE58;W;SMALL EM DASH
-FE59;W;SMALL LEFT PARENTHESIS
-FE5A;W;SMALL RIGHT PARENTHESIS
-FE5B;W;SMALL LEFT CURLY BRACKET
-FE5C;W;SMALL RIGHT CURLY BRACKET
-FE5D;W;SMALL LEFT TORTOISE SHELL BRACKET
-FE5E;W;SMALL RIGHT TORTOISE SHELL BRACKET
-FE5F;W;SMALL NUMBER SIGN
-FE60;W;SMALL AMPERSAND
-FE61;W;SMALL ASTERISK
-FE62;W;SMALL PLUS SIGN
-FE63;W;SMALL HYPHEN-MINUS
-FE64;W;SMALL LESS-THAN SIGN
-FE65;W;SMALL GREATER-THAN SIGN
-FE66;W;SMALL EQUALS SIGN
-FE68;W;SMALL REVERSE SOLIDUS
-FE69;W;SMALL DOLLAR SIGN
-FE6A;W;SMALL PERCENT SIGN
-FE6B;W;SMALL COMMERCIAL AT
-FE70;N;ARABIC FATHATAN ISOLATED FORM
-FE71;N;ARABIC TATWEEL WITH FATHATAN ABOVE
-FE72;N;ARABIC DAMMATAN ISOLATED FORM
-FE74;N;ARABIC KASRATAN ISOLATED FORM
-FE76;N;ARABIC FATHA ISOLATED FORM
-FE77;N;ARABIC FATHA MEDIAL FORM
-FE78;N;ARABIC DAMMA ISOLATED FORM
-FE79;N;ARABIC DAMMA MEDIAL FORM
-FE7A;N;ARABIC KASRA ISOLATED FORM
-FE7B;N;ARABIC KASRA MEDIAL FORM
-FE7C;N;ARABIC SHADDA ISOLATED FORM
-FE7D;N;ARABIC SHADDA MEDIAL FORM
-FE7E;N;ARABIC SUKUN ISOLATED FORM
-FE7F;N;ARABIC SUKUN MEDIAL FORM
-FE80;N;ARABIC LETTER HAMZA ISOLATED FORM
-FE81;N;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-FE82;N;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-FE83;N;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-FE84;N;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-FE85;N;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-FE86;N;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
-FE87;N;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
-FE88;N;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
-FE89;N;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
-FE8A;N;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
-FE8B;N;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-FE8C;N;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
-FE8D;N;ARABIC LETTER ALEF ISOLATED FORM
-FE8E;N;ARABIC LETTER ALEF FINAL FORM
-FE8F;N;ARABIC LETTER BEH ISOLATED FORM
-FE90;N;ARABIC LETTER BEH FINAL FORM
-FE91;N;ARABIC LETTER BEH INITIAL FORM
-FE92;N;ARABIC LETTER BEH MEDIAL FORM
-FE93;N;ARABIC LETTER TEH MARBUTA ISOLATED FORM
-FE94;N;ARABIC LETTER TEH MARBUTA FINAL FORM
-FE95;N;ARABIC LETTER TEH ISOLATED FORM
-FE96;N;ARABIC LETTER TEH FINAL FORM
-FE97;N;ARABIC LETTER TEH INITIAL FORM
-FE98;N;ARABIC LETTER TEH MEDIAL FORM
-FE99;N;ARABIC LETTER THEH ISOLATED FORM
-FE9A;N;ARABIC LETTER THEH FINAL FORM
-FE9B;N;ARABIC LETTER THEH INITIAL FORM
-FE9C;N;ARABIC LETTER THEH MEDIAL FORM
-FE9D;N;ARABIC LETTER JEEM ISOLATED FORM
-FE9E;N;ARABIC LETTER JEEM FINAL FORM
-FE9F;N;ARABIC LETTER JEEM INITIAL FORM
-FEA0;N;ARABIC LETTER JEEM MEDIAL FORM
-FEA1;N;ARABIC LETTER HAH ISOLATED FORM
-FEA2;N;ARABIC LETTER HAH FINAL FORM
-FEA3;N;ARABIC LETTER HAH INITIAL FORM
-FEA4;N;ARABIC LETTER HAH MEDIAL FORM
-FEA5;N;ARABIC LETTER KHAH ISOLATED FORM
-FEA6;N;ARABIC LETTER KHAH FINAL FORM
-FEA7;N;ARABIC LETTER KHAH INITIAL FORM
-FEA8;N;ARABIC LETTER KHAH MEDIAL FORM
-FEA9;N;ARABIC LETTER DAL ISOLATED FORM
-FEAA;N;ARABIC LETTER DAL FINAL FORM
-FEAB;N;ARABIC LETTER THAL ISOLATED FORM
-FEAC;N;ARABIC LETTER THAL FINAL FORM
-FEAD;N;ARABIC LETTER REH ISOLATED FORM
-FEAE;N;ARABIC LETTER REH FINAL FORM
-FEAF;N;ARABIC LETTER ZAIN ISOLATED FORM
-FEB0;N;ARABIC LETTER ZAIN FINAL FORM
-FEB1;N;ARABIC LETTER SEEN ISOLATED FORM
-FEB2;N;ARABIC LETTER SEEN FINAL FORM
-FEB3;N;ARABIC LETTER SEEN INITIAL FORM
-FEB4;N;ARABIC LETTER SEEN MEDIAL FORM
-FEB5;N;ARABIC LETTER SHEEN ISOLATED FORM
-FEB6;N;ARABIC LETTER SHEEN FINAL FORM
-FEB7;N;ARABIC LETTER SHEEN INITIAL FORM
-FEB8;N;ARABIC LETTER SHEEN MEDIAL FORM
-FEB9;N;ARABIC LETTER SAD ISOLATED FORM
-FEBA;N;ARABIC LETTER SAD FINAL FORM
-FEBB;N;ARABIC LETTER SAD INITIAL FORM
-FEBC;N;ARABIC LETTER SAD MEDIAL FORM
-FEBD;N;ARABIC LETTER DAD ISOLATED FORM
-FEBE;N;ARABIC LETTER DAD FINAL FORM
-FEBF;N;ARABIC LETTER DAD INITIAL FORM
-FEC0;N;ARABIC LETTER DAD MEDIAL FORM
-FEC1;N;ARABIC LETTER TAH ISOLATED FORM
-FEC2;N;ARABIC LETTER TAH FINAL FORM
-FEC3;N;ARABIC LETTER TAH INITIAL FORM
-FEC4;N;ARABIC LETTER TAH MEDIAL FORM
-FEC5;N;ARABIC LETTER ZAH ISOLATED FORM
-FEC6;N;ARABIC LETTER ZAH FINAL FORM
-FEC7;N;ARABIC LETTER ZAH INITIAL FORM
-FEC8;N;ARABIC LETTER ZAH MEDIAL FORM
-FEC9;N;ARABIC LETTER AIN ISOLATED FORM
-FECA;N;ARABIC LETTER AIN FINAL FORM
-FECB;N;ARABIC LETTER AIN INITIAL FORM
-FECC;N;ARABIC LETTER AIN MEDIAL FORM
-FECD;N;ARABIC LETTER GHAIN ISOLATED FORM
-FECE;N;ARABIC LETTER GHAIN FINAL FORM
-FECF;N;ARABIC LETTER GHAIN INITIAL FORM
-FED0;N;ARABIC LETTER GHAIN MEDIAL FORM
-FED1;N;ARABIC LETTER FEH ISOLATED FORM
-FED2;N;ARABIC LETTER FEH FINAL FORM
-FED3;N;ARABIC LETTER FEH INITIAL FORM
-FED4;N;ARABIC LETTER FEH MEDIAL FORM
-FED5;N;ARABIC LETTER QAF ISOLATED FORM
-FED6;N;ARABIC LETTER QAF FINAL FORM
-FED7;N;ARABIC LETTER QAF INITIAL FORM
-FED8;N;ARABIC LETTER QAF MEDIAL FORM
-FED9;N;ARABIC LETTER KAF ISOLATED FORM
-FEDA;N;ARABIC LETTER KAF FINAL FORM
-FEDB;N;ARABIC LETTER KAF INITIAL FORM
-FEDC;N;ARABIC LETTER KAF MEDIAL FORM
-FEDD;N;ARABIC LETTER LAM ISOLATED FORM
-FEDE;N;ARABIC LETTER LAM FINAL FORM
-FEDF;N;ARABIC LETTER LAM INITIAL FORM
-FEE0;N;ARABIC LETTER LAM MEDIAL FORM
-FEE1;N;ARABIC LETTER MEEM ISOLATED FORM
-FEE2;N;ARABIC LETTER MEEM FINAL FORM
-FEE3;N;ARABIC LETTER MEEM INITIAL FORM
-FEE4;N;ARABIC LETTER MEEM MEDIAL FORM
-FEE5;N;ARABIC LETTER NOON ISOLATED FORM
-FEE6;N;ARABIC LETTER NOON FINAL FORM
-FEE7;N;ARABIC LETTER NOON INITIAL FORM
-FEE8;N;ARABIC LETTER NOON MEDIAL FORM
-FEE9;N;ARABIC LETTER HEH ISOLATED FORM
-FEEA;N;ARABIC LETTER HEH FINAL FORM
-FEEB;N;ARABIC LETTER HEH INITIAL FORM
-FEEC;N;ARABIC LETTER HEH MEDIAL FORM
-FEED;N;ARABIC LETTER WAW ISOLATED FORM
-FEEE;N;ARABIC LETTER WAW FINAL FORM
-FEEF;N;ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-FEF0;N;ARABIC LETTER ALEF MAKSURA FINAL FORM
-FEF1;N;ARABIC LETTER YEH ISOLATED FORM
-FEF2;N;ARABIC LETTER YEH FINAL FORM
-FEF3;N;ARABIC LETTER YEH INITIAL FORM
-FEF4;N;ARABIC LETTER YEH MEDIAL FORM
-FEF5;N;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-FEF6;N;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-FEF7;N;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-FEF8;N;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-FEF9;N;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
-FEFA;N;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
-FEFB;N;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-FEFC;N;ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-FEFF;N;ZERO WIDTH NO-BREAK SPACE
-FF01;F;FULLWIDTH EXCLAMATION MARK
-FF02;F;FULLWIDTH QUOTATION MARK
-FF03;F;FULLWIDTH NUMBER SIGN
-FF04;F;FULLWIDTH DOLLAR SIGN
-FF05;F;FULLWIDTH PERCENT SIGN
-FF06;F;FULLWIDTH AMPERSAND
-FF07;F;FULLWIDTH APOSTROPHE
-FF08;F;FULLWIDTH LEFT PARENTHESIS
-FF09;F;FULLWIDTH RIGHT PARENTHESIS
-FF0A;F;FULLWIDTH ASTERISK
-FF0B;F;FULLWIDTH PLUS SIGN
-FF0C;F;FULLWIDTH COMMA
-FF0D;F;FULLWIDTH HYPHEN-MINUS
-FF0E;F;FULLWIDTH FULL STOP
-FF0F;F;FULLWIDTH SOLIDUS
-FF10;F;FULLWIDTH DIGIT ZERO
-FF11;F;FULLWIDTH DIGIT ONE
-FF12;F;FULLWIDTH DIGIT TWO
-FF13;F;FULLWIDTH DIGIT THREE
-FF14;F;FULLWIDTH DIGIT FOUR
-FF15;F;FULLWIDTH DIGIT FIVE
-FF16;F;FULLWIDTH DIGIT SIX
-FF17;F;FULLWIDTH DIGIT SEVEN
-FF18;F;FULLWIDTH DIGIT EIGHT
-FF19;F;FULLWIDTH DIGIT NINE
-FF1A;F;FULLWIDTH COLON
-FF1B;F;FULLWIDTH SEMICOLON
-FF1C;F;FULLWIDTH LESS-THAN SIGN
-FF1D;F;FULLWIDTH EQUALS SIGN
-FF1E;F;FULLWIDTH GREATER-THAN SIGN
-FF1F;F;FULLWIDTH QUESTION MARK
-FF20;F;FULLWIDTH COMMERCIAL AT
-FF21;F;FULLWIDTH LATIN CAPITAL LETTER A
-FF22;F;FULLWIDTH LATIN CAPITAL LETTER B
-FF23;F;FULLWIDTH LATIN CAPITAL LETTER C
-FF24;F;FULLWIDTH LATIN CAPITAL LETTER D
-FF25;F;FULLWIDTH LATIN CAPITAL LETTER E
-FF26;F;FULLWIDTH LATIN CAPITAL LETTER F
-FF27;F;FULLWIDTH LATIN CAPITAL LETTER G
-FF28;F;FULLWIDTH LATIN CAPITAL LETTER H
-FF29;F;FULLWIDTH LATIN CAPITAL LETTER I
-FF2A;F;FULLWIDTH LATIN CAPITAL LETTER J
-FF2B;F;FULLWIDTH LATIN CAPITAL LETTER K
-FF2C;F;FULLWIDTH LATIN CAPITAL LETTER L
-FF2D;F;FULLWIDTH LATIN CAPITAL LETTER M
-FF2E;F;FULLWIDTH LATIN CAPITAL LETTER N
-FF2F;F;FULLWIDTH LATIN CAPITAL LETTER O
-FF30;F;FULLWIDTH LATIN CAPITAL LETTER P
-FF31;F;FULLWIDTH LATIN CAPITAL LETTER Q
-FF32;F;FULLWIDTH LATIN CAPITAL LETTER R
-FF33;F;FULLWIDTH LATIN CAPITAL LETTER S
-FF34;F;FULLWIDTH LATIN CAPITAL LETTER T
-FF35;F;FULLWIDTH LATIN CAPITAL LETTER U
-FF36;F;FULLWIDTH LATIN CAPITAL LETTER V
-FF37;F;FULLWIDTH LATIN CAPITAL LETTER W
-FF38;F;FULLWIDTH LATIN CAPITAL LETTER X
-FF39;F;FULLWIDTH LATIN CAPITAL LETTER Y
-FF3A;F;FULLWIDTH LATIN CAPITAL LETTER Z
-FF3B;F;FULLWIDTH LEFT SQUARE BRACKET
-FF3C;F;FULLWIDTH REVERSE SOLIDUS
-FF3D;F;FULLWIDTH RIGHT SQUARE BRACKET
-FF3E;F;FULLWIDTH CIRCUMFLEX ACCENT
-FF3F;F;FULLWIDTH LOW LINE
-FF40;F;FULLWIDTH GRAVE ACCENT
-FF41;F;FULLWIDTH LATIN SMALL LETTER A
-FF42;F;FULLWIDTH LATIN SMALL LETTER B
-FF43;F;FULLWIDTH LATIN SMALL LETTER C
-FF44;F;FULLWIDTH LATIN SMALL LETTER D
-FF45;F;FULLWIDTH LATIN SMALL LETTER E
-FF46;F;FULLWIDTH LATIN SMALL LETTER F
-FF47;F;FULLWIDTH LATIN SMALL LETTER G
-FF48;F;FULLWIDTH LATIN SMALL LETTER H
-FF49;F;FULLWIDTH LATIN SMALL LETTER I
-FF4A;F;FULLWIDTH LATIN SMALL LETTER J
-FF4B;F;FULLWIDTH LATIN SMALL LETTER K
-FF4C;F;FULLWIDTH LATIN SMALL LETTER L
-FF4D;F;FULLWIDTH LATIN SMALL LETTER M
-FF4E;F;FULLWIDTH LATIN SMALL LETTER N
-FF4F;F;FULLWIDTH LATIN SMALL LETTER O
-FF50;F;FULLWIDTH LATIN SMALL LETTER P
-FF51;F;FULLWIDTH LATIN SMALL LETTER Q
-FF52;F;FULLWIDTH LATIN SMALL LETTER R
-FF53;F;FULLWIDTH LATIN SMALL LETTER S
-FF54;F;FULLWIDTH LATIN SMALL LETTER T
-FF55;F;FULLWIDTH LATIN SMALL LETTER U
-FF56;F;FULLWIDTH LATIN SMALL LETTER V
-FF57;F;FULLWIDTH LATIN SMALL LETTER W
-FF58;F;FULLWIDTH LATIN SMALL LETTER X
-FF59;F;FULLWIDTH LATIN SMALL LETTER Y
-FF5A;F;FULLWIDTH LATIN SMALL LETTER Z
-FF5B;F;FULLWIDTH LEFT CURLY BRACKET
-FF5C;F;FULLWIDTH VERTICAL LINE
-FF5D;F;FULLWIDTH RIGHT CURLY BRACKET
-FF5E;F;FULLWIDTH TILDE
-FF61;H;HALFWIDTH IDEOGRAPHIC FULL STOP
-FF62;H;HALFWIDTH LEFT CORNER BRACKET
-FF63;H;HALFWIDTH RIGHT CORNER BRACKET
-FF64;H;HALFWIDTH IDEOGRAPHIC COMMA
-FF65;H;HALFWIDTH KATAKANA MIDDLE DOT
-FF66;H;HALFWIDTH KATAKANA LETTER WO
-FF67;H;HALFWIDTH KATAKANA LETTER SMALL A
-FF68;H;HALFWIDTH KATAKANA LETTER SMALL I
-FF69;H;HALFWIDTH KATAKANA LETTER SMALL U
-FF6A;H;HALFWIDTH KATAKANA LETTER SMALL E
-FF6B;H;HALFWIDTH KATAKANA LETTER SMALL O
-FF6C;H;HALFWIDTH KATAKANA LETTER SMALL YA
-FF6D;H;HALFWIDTH KATAKANA LETTER SMALL YU
-FF6E;H;HALFWIDTH KATAKANA LETTER SMALL YO
-FF6F;H;HALFWIDTH KATAKANA LETTER SMALL TU
-FF70;H;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF71;H;HALFWIDTH KATAKANA LETTER A
-FF72;H;HALFWIDTH KATAKANA LETTER I
-FF73;H;HALFWIDTH KATAKANA LETTER U
-FF74;H;HALFWIDTH KATAKANA LETTER E
-FF75;H;HALFWIDTH KATAKANA LETTER O
-FF76;H;HALFWIDTH KATAKANA LETTER KA
-FF77;H;HALFWIDTH KATAKANA LETTER KI
-FF78;H;HALFWIDTH KATAKANA LETTER KU
-FF79;H;HALFWIDTH KATAKANA LETTER KE
-FF7A;H;HALFWIDTH KATAKANA LETTER KO
-FF7B;H;HALFWIDTH KATAKANA LETTER SA
-FF7C;H;HALFWIDTH KATAKANA LETTER SI
-FF7D;H;HALFWIDTH KATAKANA LETTER SU
-FF7E;H;HALFWIDTH KATAKANA LETTER SE
-FF7F;H;HALFWIDTH KATAKANA LETTER SO
-FF80;H;HALFWIDTH KATAKANA LETTER TA
-FF81;H;HALFWIDTH KATAKANA LETTER TI
-FF82;H;HALFWIDTH KATAKANA LETTER TU
-FF83;H;HALFWIDTH KATAKANA LETTER TE
-FF84;H;HALFWIDTH KATAKANA LETTER TO
-FF85;H;HALFWIDTH KATAKANA LETTER NA
-FF86;H;HALFWIDTH KATAKANA LETTER NI
-FF87;H;HALFWIDTH KATAKANA LETTER NU
-FF88;H;HALFWIDTH KATAKANA LETTER NE
-FF89;H;HALFWIDTH KATAKANA LETTER NO
-FF8A;H;HALFWIDTH KATAKANA LETTER HA
-FF8B;H;HALFWIDTH KATAKANA LETTER HI
-FF8C;H;HALFWIDTH KATAKANA LETTER HU
-FF8D;H;HALFWIDTH KATAKANA LETTER HE
-FF8E;H;HALFWIDTH KATAKANA LETTER HO
-FF8F;H;HALFWIDTH KATAKANA LETTER MA
-FF90;H;HALFWIDTH KATAKANA LETTER MI
-FF91;H;HALFWIDTH KATAKANA LETTER MU
-FF92;H;HALFWIDTH KATAKANA LETTER ME
-FF93;H;HALFWIDTH KATAKANA LETTER MO
-FF94;H;HALFWIDTH KATAKANA LETTER YA
-FF95;H;HALFWIDTH KATAKANA LETTER YU
-FF96;H;HALFWIDTH KATAKANA LETTER YO
-FF97;H;HALFWIDTH KATAKANA LETTER RA
-FF98;H;HALFWIDTH KATAKANA LETTER RI
-FF99;H;HALFWIDTH KATAKANA LETTER RU
-FF9A;H;HALFWIDTH KATAKANA LETTER RE
-FF9B;H;HALFWIDTH KATAKANA LETTER RO
-FF9C;H;HALFWIDTH KATAKANA LETTER WA
-FF9D;H;HALFWIDTH KATAKANA LETTER N
-FF9E;H;HALFWIDTH KATAKANA VOICED SOUND MARK
-FF9F;H;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-FFA0;H;HALFWIDTH HANGUL FILLER
-FFA1;H;HALFWIDTH HANGUL LETTER KIYEOK
-FFA2;H;HALFWIDTH HANGUL LETTER SSANGKIYEOK
-FFA3;H;HALFWIDTH HANGUL LETTER KIYEOK-SIOS
-FFA4;H;HALFWIDTH HANGUL LETTER NIEUN
-FFA5;H;HALFWIDTH HANGUL LETTER NIEUN-CIEUC
-FFA6;H;HALFWIDTH HANGUL LETTER NIEUN-HIEUH
-FFA7;H;HALFWIDTH HANGUL LETTER TIKEUT
-FFA8;H;HALFWIDTH HANGUL LETTER SSANGTIKEUT
-FFA9;H;HALFWIDTH HANGUL LETTER RIEUL
-FFAA;H;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
-FFAB;H;HALFWIDTH HANGUL LETTER RIEUL-MIEUM
-FFAC;H;HALFWIDTH HANGUL LETTER RIEUL-PIEUP
-FFAD;H;HALFWIDTH HANGUL LETTER RIEUL-SIOS
-FFAE;H;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
-FFAF;H;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
-FFB0;H;HALFWIDTH HANGUL LETTER RIEUL-HIEUH
-FFB1;H;HALFWIDTH HANGUL LETTER MIEUM
-FFB2;H;HALFWIDTH HANGUL LETTER PIEUP
-FFB3;H;HALFWIDTH HANGUL LETTER SSANGPIEUP
-FFB4;H;HALFWIDTH HANGUL LETTER PIEUP-SIOS
-FFB5;H;HALFWIDTH HANGUL LETTER SIOS
-FFB6;H;HALFWIDTH HANGUL LETTER SSANGSIOS
-FFB7;H;HALFWIDTH HANGUL LETTER IEUNG
-FFB8;H;HALFWIDTH HANGUL LETTER CIEUC
-FFB9;H;HALFWIDTH HANGUL LETTER SSANGCIEUC
-FFBA;H;HALFWIDTH HANGUL LETTER CHIEUCH
-FFBB;H;HALFWIDTH HANGUL LETTER KHIEUKH
-FFBC;H;HALFWIDTH HANGUL LETTER THIEUTH
-FFBD;H;HALFWIDTH HANGUL LETTER PHIEUPH
-FFBE;H;HALFWIDTH HANGUL LETTER HIEUH
-FFC2;H;HALFWIDTH HANGUL LETTER A
-FFC3;H;HALFWIDTH HANGUL LETTER AE
-FFC4;H;HALFWIDTH HANGUL LETTER YA
-FFC5;H;HALFWIDTH HANGUL LETTER YAE
-FFC6;H;HALFWIDTH HANGUL LETTER EO
-FFC7;H;HALFWIDTH HANGUL LETTER E
-FFCA;H;HALFWIDTH HANGUL LETTER YEO
-FFCB;H;HALFWIDTH HANGUL LETTER YE
-FFCC;H;HALFWIDTH HANGUL LETTER O
-FFCD;H;HALFWIDTH HANGUL LETTER WA
-FFCE;H;HALFWIDTH HANGUL LETTER WAE
-FFCF;H;HALFWIDTH HANGUL LETTER OE
-FFD2;H;HALFWIDTH HANGUL LETTER YO
-FFD3;H;HALFWIDTH HANGUL LETTER U
-FFD4;H;HALFWIDTH HANGUL LETTER WEO
-FFD5;H;HALFWIDTH HANGUL LETTER WE
-FFD6;H;HALFWIDTH HANGUL LETTER WI
-FFD7;H;HALFWIDTH HANGUL LETTER YU
-FFDA;H;HALFWIDTH HANGUL LETTER EU
-FFDB;H;HALFWIDTH HANGUL LETTER YI
-FFDC;H;HALFWIDTH HANGUL LETTER I
-FFE0;F;FULLWIDTH CENT SIGN
-FFE1;F;FULLWIDTH POUND SIGN
-FFE2;F;FULLWIDTH NOT SIGN
-FFE3;F;FULLWIDTH MACRON
-FFE4;F;FULLWIDTH BROKEN BAR
-FFE5;F;FULLWIDTH YEN SIGN
-FFE6;F;FULLWIDTH WON SIGN
-FFE8;H;HALFWIDTH FORMS LIGHT VERTICAL
-FFE9;H;HALFWIDTH LEFTWARDS ARROW
-FFEA;H;HALFWIDTH UPWARDS ARROW
-FFEB;H;HALFWIDTH RIGHTWARDS ARROW
-FFEC;H;HALFWIDTH DOWNWARDS ARROW
-FFED;H;HALFWIDTH BLACK SQUARE
-FFEE;H;HALFWIDTH WHITE CIRCLE
-FFF9;N;INTERLINEAR ANNOTATION ANCHOR
-FFFA;N;INTERLINEAR ANNOTATION SEPARATOR
-FFFB;N;INTERLINEAR ANNOTATION TERMINATOR
-FFFC;N;OBJECT REPLACEMENT CHARACTER
-FFFD;A;REPLACEMENT CHARACTER
diff --git a/contrib/perl5/lib/unicode/In/AlphabeticPresentationForms.pl b/contrib/perl5/lib/unicode/In/AlphabeticPresentationForms.pl
deleted file mode 100644
index a85b9ca..0000000
--- a/contrib/perl5/lib/unicode/In/AlphabeticPresentationForms.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-FB00 FB4F
-END
diff --git a/contrib/perl5/lib/unicode/In/Arabic.pl b/contrib/perl5/lib/unicode/In/Arabic.pl
deleted file mode 100644
index 5fbbbfa..0000000
--- a/contrib/perl5/lib/unicode/In/Arabic.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0600 06FF
-END
diff --git a/contrib/perl5/lib/unicode/In/ArabicPresentationForms-A.pl b/contrib/perl5/lib/unicode/In/ArabicPresentationForms-A.pl
deleted file mode 100644
index 62521bb..0000000
--- a/contrib/perl5/lib/unicode/In/ArabicPresentationForms-A.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-FB50 FDFF
-END
diff --git a/contrib/perl5/lib/unicode/In/ArabicPresentationForms-B.pl b/contrib/perl5/lib/unicode/In/ArabicPresentationForms-B.pl
deleted file mode 100644
index 6b2d447..0000000
--- a/contrib/perl5/lib/unicode/In/ArabicPresentationForms-B.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-FE70 FEFE
-END
diff --git a/contrib/perl5/lib/unicode/In/Armenian.pl b/contrib/perl5/lib/unicode/In/Armenian.pl
deleted file mode 100644
index d4736a7..0000000
--- a/contrib/perl5/lib/unicode/In/Armenian.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0530 058F
-END
diff --git a/contrib/perl5/lib/unicode/In/Arrows.pl b/contrib/perl5/lib/unicode/In/Arrows.pl
deleted file mode 100644
index a7ef468..0000000
--- a/contrib/perl5/lib/unicode/In/Arrows.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2190 21FF
-END
diff --git a/contrib/perl5/lib/unicode/In/BasicLatin.pl b/contrib/perl5/lib/unicode/In/BasicLatin.pl
deleted file mode 100644
index 36d6456..0000000
--- a/contrib/perl5/lib/unicode/In/BasicLatin.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 007F
-END
diff --git a/contrib/perl5/lib/unicode/In/Bengali.pl b/contrib/perl5/lib/unicode/In/Bengali.pl
deleted file mode 100644
index 07dc6ac..0000000
--- a/contrib/perl5/lib/unicode/In/Bengali.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0980 09FF
-END
diff --git a/contrib/perl5/lib/unicode/In/BlockElements.pl b/contrib/perl5/lib/unicode/In/BlockElements.pl
deleted file mode 100644
index 495629b..0000000
--- a/contrib/perl5/lib/unicode/In/BlockElements.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2580 259F
-END
diff --git a/contrib/perl5/lib/unicode/In/Bopomofo.pl b/contrib/perl5/lib/unicode/In/Bopomofo.pl
deleted file mode 100644
index 3dbf73a..0000000
--- a/contrib/perl5/lib/unicode/In/Bopomofo.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3100 312F
-END
diff --git a/contrib/perl5/lib/unicode/In/BopomofoExtended.pl b/contrib/perl5/lib/unicode/In/BopomofoExtended.pl
deleted file mode 100644
index f2ca6de..0000000
--- a/contrib/perl5/lib/unicode/In/BopomofoExtended.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-31A0 31BF
-END
diff --git a/contrib/perl5/lib/unicode/In/BoxDrawing.pl b/contrib/perl5/lib/unicode/In/BoxDrawing.pl
deleted file mode 100644
index a3cd897..0000000
--- a/contrib/perl5/lib/unicode/In/BoxDrawing.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2500 257F
-END
diff --git a/contrib/perl5/lib/unicode/In/BraillePatterns.pl b/contrib/perl5/lib/unicode/In/BraillePatterns.pl
deleted file mode 100644
index 58afc05..0000000
--- a/contrib/perl5/lib/unicode/In/BraillePatterns.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2800 28FF
-END
diff --git a/contrib/perl5/lib/unicode/In/CJKCompatibility.pl b/contrib/perl5/lib/unicode/In/CJKCompatibility.pl
deleted file mode 100644
index 793520f..0000000
--- a/contrib/perl5/lib/unicode/In/CJKCompatibility.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3300 33FF
-END
diff --git a/contrib/perl5/lib/unicode/In/CJKCompatibilityForms.pl b/contrib/perl5/lib/unicode/In/CJKCompatibilityForms.pl
deleted file mode 100644
index a9ba270..0000000
--- a/contrib/perl5/lib/unicode/In/CJKCompatibilityForms.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-FE30 FE4F
-END
diff --git a/contrib/perl5/lib/unicode/In/CJKCompatibilityIdeographs.pl b/contrib/perl5/lib/unicode/In/CJKCompatibilityIdeographs.pl
deleted file mode 100644
index d841bc5..0000000
--- a/contrib/perl5/lib/unicode/In/CJKCompatibilityIdeographs.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-F900 FAFF
-END
diff --git a/contrib/perl5/lib/unicode/In/CJKRadicalsSupplement.pl b/contrib/perl5/lib/unicode/In/CJKRadicalsSupplement.pl
deleted file mode 100644
index 2d13707..0000000
--- a/contrib/perl5/lib/unicode/In/CJKRadicalsSupplement.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2E80 2EFF
-END
diff --git a/contrib/perl5/lib/unicode/In/CJKSymbolsandPunctuation.pl b/contrib/perl5/lib/unicode/In/CJKSymbolsandPunctuation.pl
deleted file mode 100644
index ca525ae..0000000
--- a/contrib/perl5/lib/unicode/In/CJKSymbolsandPunctuation.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3000 303F
-END
diff --git a/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographs.pl b/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographs.pl
deleted file mode 100644
index 729f4c6..0000000
--- a/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographs.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-4E00 9FFF
-END
diff --git a/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl b/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl
deleted file mode 100644
index e92f091..0000000
--- a/contrib/perl5/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3400 4DB5
-END
diff --git a/contrib/perl5/lib/unicode/In/Cherokee.pl b/contrib/perl5/lib/unicode/In/Cherokee.pl
deleted file mode 100644
index 1e9ad74..0000000
--- a/contrib/perl5/lib/unicode/In/Cherokee.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-13A0 13FF
-END
diff --git a/contrib/perl5/lib/unicode/In/CombiningDiacriticalMarks.pl b/contrib/perl5/lib/unicode/In/CombiningDiacriticalMarks.pl
deleted file mode 100644
index d3a45d4..0000000
--- a/contrib/perl5/lib/unicode/In/CombiningDiacriticalMarks.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0300 036F
-END
diff --git a/contrib/perl5/lib/unicode/In/CombiningHalfMarks.pl b/contrib/perl5/lib/unicode/In/CombiningHalfMarks.pl
deleted file mode 100644
index 4f0a573..0000000
--- a/contrib/perl5/lib/unicode/In/CombiningHalfMarks.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-FE20 FE2F
-END
diff --git a/contrib/perl5/lib/unicode/In/CombiningMarksforSymbols.pl b/contrib/perl5/lib/unicode/In/CombiningMarksforSymbols.pl
deleted file mode 100644
index 9dde706..0000000
--- a/contrib/perl5/lib/unicode/In/CombiningMarksforSymbols.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-20D0 20FF
-END
diff --git a/contrib/perl5/lib/unicode/In/ControlPictures.pl b/contrib/perl5/lib/unicode/In/ControlPictures.pl
deleted file mode 100644
index 78113e8..0000000
--- a/contrib/perl5/lib/unicode/In/ControlPictures.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2400 243F
-END
diff --git a/contrib/perl5/lib/unicode/In/CurrencySymbols.pl b/contrib/perl5/lib/unicode/In/CurrencySymbols.pl
deleted file mode 100644
index 8cbc160..0000000
--- a/contrib/perl5/lib/unicode/In/CurrencySymbols.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-20A0 20CF
-END
diff --git a/contrib/perl5/lib/unicode/In/Cyrillic.pl b/contrib/perl5/lib/unicode/In/Cyrillic.pl
deleted file mode 100644
index f057731..0000000
--- a/contrib/perl5/lib/unicode/In/Cyrillic.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0400 04FF
-END
diff --git a/contrib/perl5/lib/unicode/In/Devanagari.pl b/contrib/perl5/lib/unicode/In/Devanagari.pl
deleted file mode 100644
index c99eff1..0000000
--- a/contrib/perl5/lib/unicode/In/Devanagari.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0900 097F
-END
diff --git a/contrib/perl5/lib/unicode/In/Dingbats.pl b/contrib/perl5/lib/unicode/In/Dingbats.pl
deleted file mode 100644
index 1bbb102..0000000
--- a/contrib/perl5/lib/unicode/In/Dingbats.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2700 27BF
-END
diff --git a/contrib/perl5/lib/unicode/In/EnclosedAlphanumerics.pl b/contrib/perl5/lib/unicode/In/EnclosedAlphanumerics.pl
deleted file mode 100644
index 46b4cf5..0000000
--- a/contrib/perl5/lib/unicode/In/EnclosedAlphanumerics.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2460 24FF
-END
diff --git a/contrib/perl5/lib/unicode/In/EnclosedCJKLettersandMonths.pl b/contrib/perl5/lib/unicode/In/EnclosedCJKLettersandMonths.pl
deleted file mode 100644
index da5a7a1..0000000
--- a/contrib/perl5/lib/unicode/In/EnclosedCJKLettersandMonths.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3200 32FF
-END
diff --git a/contrib/perl5/lib/unicode/In/Ethiopic.pl b/contrib/perl5/lib/unicode/In/Ethiopic.pl
deleted file mode 100644
index 5b472c4..0000000
--- a/contrib/perl5/lib/unicode/In/Ethiopic.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1200 137F
-END
diff --git a/contrib/perl5/lib/unicode/In/GeneralPunctuation.pl b/contrib/perl5/lib/unicode/In/GeneralPunctuation.pl
deleted file mode 100644
index aa82c30..0000000
--- a/contrib/perl5/lib/unicode/In/GeneralPunctuation.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2000 206F
-END
diff --git a/contrib/perl5/lib/unicode/In/GeometricShapes.pl b/contrib/perl5/lib/unicode/In/GeometricShapes.pl
deleted file mode 100644
index 6cf8ea7..0000000
--- a/contrib/perl5/lib/unicode/In/GeometricShapes.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-25A0 25FF
-END
diff --git a/contrib/perl5/lib/unicode/In/Georgian.pl b/contrib/perl5/lib/unicode/In/Georgian.pl
deleted file mode 100644
index 493f570..0000000
--- a/contrib/perl5/lib/unicode/In/Georgian.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-10A0 10FF
-END
diff --git a/contrib/perl5/lib/unicode/In/Greek.pl b/contrib/perl5/lib/unicode/In/Greek.pl
deleted file mode 100644
index ac4bbee..0000000
--- a/contrib/perl5/lib/unicode/In/Greek.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0370 03FF
-END
diff --git a/contrib/perl5/lib/unicode/In/GreekExtended.pl b/contrib/perl5/lib/unicode/In/GreekExtended.pl
deleted file mode 100644
index acd43be..0000000
--- a/contrib/perl5/lib/unicode/In/GreekExtended.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1F00 1FFF
-END
diff --git a/contrib/perl5/lib/unicode/In/Gujarati.pl b/contrib/perl5/lib/unicode/In/Gujarati.pl
deleted file mode 100644
index 0e3c8e9..0000000
--- a/contrib/perl5/lib/unicode/In/Gujarati.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0A80 0AFF
-END
diff --git a/contrib/perl5/lib/unicode/In/Gurmukhi.pl b/contrib/perl5/lib/unicode/In/Gurmukhi.pl
deleted file mode 100644
index 32ff239..0000000
--- a/contrib/perl5/lib/unicode/In/Gurmukhi.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0A00 0A7F
-END
diff --git a/contrib/perl5/lib/unicode/In/HalfwidthandFullwidthForms.pl b/contrib/perl5/lib/unicode/In/HalfwidthandFullwidthForms.pl
deleted file mode 100644
index fd3ba32..0000000
--- a/contrib/perl5/lib/unicode/In/HalfwidthandFullwidthForms.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-FF00 FFEF
-END
diff --git a/contrib/perl5/lib/unicode/In/HangulCompatibilityJamo.pl b/contrib/perl5/lib/unicode/In/HangulCompatibilityJamo.pl
deleted file mode 100644
index 744e572..0000000
--- a/contrib/perl5/lib/unicode/In/HangulCompatibilityJamo.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3130 318F
-END
diff --git a/contrib/perl5/lib/unicode/In/HangulJamo.pl b/contrib/perl5/lib/unicode/In/HangulJamo.pl
deleted file mode 100644
index a1d1c67..0000000
--- a/contrib/perl5/lib/unicode/In/HangulJamo.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1100 11FF
-END
diff --git a/contrib/perl5/lib/unicode/In/HangulSyllables.pl b/contrib/perl5/lib/unicode/In/HangulSyllables.pl
deleted file mode 100644
index 80cd4a4..0000000
--- a/contrib/perl5/lib/unicode/In/HangulSyllables.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-AC00 D7A3
-END
diff --git a/contrib/perl5/lib/unicode/In/Hebrew.pl b/contrib/perl5/lib/unicode/In/Hebrew.pl
deleted file mode 100644
index 2e29a28..0000000
--- a/contrib/perl5/lib/unicode/In/Hebrew.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0590 05FF
-END
diff --git a/contrib/perl5/lib/unicode/In/HighPrivateUseSurrogates.pl b/contrib/perl5/lib/unicode/In/HighPrivateUseSurrogates.pl
deleted file mode 100644
index 0e1320d..0000000
--- a/contrib/perl5/lib/unicode/In/HighPrivateUseSurrogates.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-DB80 DBFF
-END
diff --git a/contrib/perl5/lib/unicode/In/HighSurrogates.pl b/contrib/perl5/lib/unicode/In/HighSurrogates.pl
deleted file mode 100644
index 6acc6c4..0000000
--- a/contrib/perl5/lib/unicode/In/HighSurrogates.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-D800 DB7F
-END
diff --git a/contrib/perl5/lib/unicode/In/Hiragana.pl b/contrib/perl5/lib/unicode/In/Hiragana.pl
deleted file mode 100644
index 5905fe9..0000000
--- a/contrib/perl5/lib/unicode/In/Hiragana.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3040 309F
-END
diff --git a/contrib/perl5/lib/unicode/In/IPAExtensions.pl b/contrib/perl5/lib/unicode/In/IPAExtensions.pl
deleted file mode 100644
index 5365373..0000000
--- a/contrib/perl5/lib/unicode/In/IPAExtensions.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0250 02AF
-END
diff --git a/contrib/perl5/lib/unicode/In/IdeographicDescriptionCharacters.pl b/contrib/perl5/lib/unicode/In/IdeographicDescriptionCharacters.pl
deleted file mode 100644
index dafb5b4..0000000
--- a/contrib/perl5/lib/unicode/In/IdeographicDescriptionCharacters.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2FF0 2FFF
-END
diff --git a/contrib/perl5/lib/unicode/In/Kanbun.pl b/contrib/perl5/lib/unicode/In/Kanbun.pl
deleted file mode 100644
index 9ad03a6..0000000
--- a/contrib/perl5/lib/unicode/In/Kanbun.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3190 319F
-END
diff --git a/contrib/perl5/lib/unicode/In/KangxiRadicals.pl b/contrib/perl5/lib/unicode/In/KangxiRadicals.pl
deleted file mode 100644
index 165398c..0000000
--- a/contrib/perl5/lib/unicode/In/KangxiRadicals.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2F00 2FDF
-END
diff --git a/contrib/perl5/lib/unicode/In/Kannada.pl b/contrib/perl5/lib/unicode/In/Kannada.pl
deleted file mode 100644
index a679445..0000000
--- a/contrib/perl5/lib/unicode/In/Kannada.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0C80 0CFF
-END
diff --git a/contrib/perl5/lib/unicode/In/Katakana.pl b/contrib/perl5/lib/unicode/In/Katakana.pl
deleted file mode 100644
index 2976d25..0000000
--- a/contrib/perl5/lib/unicode/In/Katakana.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-30A0 30FF
-END
diff --git a/contrib/perl5/lib/unicode/In/Khmer.pl b/contrib/perl5/lib/unicode/In/Khmer.pl
deleted file mode 100644
index 6a85224..0000000
--- a/contrib/perl5/lib/unicode/In/Khmer.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1780 17FF
-END
diff --git a/contrib/perl5/lib/unicode/In/Lao.pl b/contrib/perl5/lib/unicode/In/Lao.pl
deleted file mode 100644
index fdddd86..0000000
--- a/contrib/perl5/lib/unicode/In/Lao.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0E80 0EFF
-END
diff --git a/contrib/perl5/lib/unicode/In/Latin-1Supplement.pl b/contrib/perl5/lib/unicode/In/Latin-1Supplement.pl
deleted file mode 100644
index 6a901fb..0000000
--- a/contrib/perl5/lib/unicode/In/Latin-1Supplement.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0080 00FF
-END
diff --git a/contrib/perl5/lib/unicode/In/LatinExtended-A.pl b/contrib/perl5/lib/unicode/In/LatinExtended-A.pl
deleted file mode 100644
index a042350..0000000
--- a/contrib/perl5/lib/unicode/In/LatinExtended-A.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0100 017F
-END
diff --git a/contrib/perl5/lib/unicode/In/LatinExtended-B.pl b/contrib/perl5/lib/unicode/In/LatinExtended-B.pl
deleted file mode 100644
index b7106c6..0000000
--- a/contrib/perl5/lib/unicode/In/LatinExtended-B.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0180 024F
-END
diff --git a/contrib/perl5/lib/unicode/In/LatinExtendedAdditional.pl b/contrib/perl5/lib/unicode/In/LatinExtendedAdditional.pl
deleted file mode 100644
index e17cc3d..0000000
--- a/contrib/perl5/lib/unicode/In/LatinExtendedAdditional.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1E00 1EFF
-END
diff --git a/contrib/perl5/lib/unicode/In/LetterlikeSymbols.pl b/contrib/perl5/lib/unicode/In/LetterlikeSymbols.pl
deleted file mode 100644
index c2249a7..0000000
--- a/contrib/perl5/lib/unicode/In/LetterlikeSymbols.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2100 214F
-END
diff --git a/contrib/perl5/lib/unicode/In/LowSurrogates.pl b/contrib/perl5/lib/unicode/In/LowSurrogates.pl
deleted file mode 100644
index 025bd13..0000000
--- a/contrib/perl5/lib/unicode/In/LowSurrogates.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-DC00 DFFF
-END
diff --git a/contrib/perl5/lib/unicode/In/Malayalam.pl b/contrib/perl5/lib/unicode/In/Malayalam.pl
deleted file mode 100644
index 5a01d40..0000000
--- a/contrib/perl5/lib/unicode/In/Malayalam.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0D00 0D7F
-END
diff --git a/contrib/perl5/lib/unicode/In/MathematicalOperators.pl b/contrib/perl5/lib/unicode/In/MathematicalOperators.pl
deleted file mode 100644
index 8b45e18..0000000
--- a/contrib/perl5/lib/unicode/In/MathematicalOperators.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2200 22FF
-END
diff --git a/contrib/perl5/lib/unicode/In/MiscellaneousSymbols.pl b/contrib/perl5/lib/unicode/In/MiscellaneousSymbols.pl
deleted file mode 100644
index cc5b02f..0000000
--- a/contrib/perl5/lib/unicode/In/MiscellaneousSymbols.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2600 26FF
-END
diff --git a/contrib/perl5/lib/unicode/In/MiscellaneousTechnical.pl b/contrib/perl5/lib/unicode/In/MiscellaneousTechnical.pl
deleted file mode 100644
index a1058a0..0000000
--- a/contrib/perl5/lib/unicode/In/MiscellaneousTechnical.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2300 23FF
-END
diff --git a/contrib/perl5/lib/unicode/In/Mongolian.pl b/contrib/perl5/lib/unicode/In/Mongolian.pl
deleted file mode 100644
index 98a4914..0000000
--- a/contrib/perl5/lib/unicode/In/Mongolian.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1800 18AF
-END
diff --git a/contrib/perl5/lib/unicode/In/Myanmar.pl b/contrib/perl5/lib/unicode/In/Myanmar.pl
deleted file mode 100644
index 3aa2f41..0000000
--- a/contrib/perl5/lib/unicode/In/Myanmar.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1000 109F
-END
diff --git a/contrib/perl5/lib/unicode/In/NumberForms.pl b/contrib/perl5/lib/unicode/In/NumberForms.pl
deleted file mode 100644
index 2a606a6..0000000
--- a/contrib/perl5/lib/unicode/In/NumberForms.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2150 218F
-END
diff --git a/contrib/perl5/lib/unicode/In/Ogham.pl b/contrib/perl5/lib/unicode/In/Ogham.pl
deleted file mode 100644
index de320a9..0000000
--- a/contrib/perl5/lib/unicode/In/Ogham.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1680 169F
-END
diff --git a/contrib/perl5/lib/unicode/In/OpticalCharacterRecognition.pl b/contrib/perl5/lib/unicode/In/OpticalCharacterRecognition.pl
deleted file mode 100644
index 7f0aff8..0000000
--- a/contrib/perl5/lib/unicode/In/OpticalCharacterRecognition.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2440 245F
-END
diff --git a/contrib/perl5/lib/unicode/In/Oriya.pl b/contrib/perl5/lib/unicode/In/Oriya.pl
deleted file mode 100644
index 771a245..0000000
--- a/contrib/perl5/lib/unicode/In/Oriya.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0B00 0B7F
-END
diff --git a/contrib/perl5/lib/unicode/In/PrivateUse.pl b/contrib/perl5/lib/unicode/In/PrivateUse.pl
deleted file mode 100644
index 0b0c004..0000000
--- a/contrib/perl5/lib/unicode/In/PrivateUse.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-E000 F8FF
-END
diff --git a/contrib/perl5/lib/unicode/In/Runic.pl b/contrib/perl5/lib/unicode/In/Runic.pl
deleted file mode 100644
index 52ca7aa..0000000
--- a/contrib/perl5/lib/unicode/In/Runic.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-16A0 16FF
-END
diff --git a/contrib/perl5/lib/unicode/In/Sinhala.pl b/contrib/perl5/lib/unicode/In/Sinhala.pl
deleted file mode 100644
index 5a892fd..0000000
--- a/contrib/perl5/lib/unicode/In/Sinhala.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0D80 0DFF
-END
diff --git a/contrib/perl5/lib/unicode/In/SmallFormVariants.pl b/contrib/perl5/lib/unicode/In/SmallFormVariants.pl
deleted file mode 100644
index 148e6e8..0000000
--- a/contrib/perl5/lib/unicode/In/SmallFormVariants.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-FE50 FE6F
-END
diff --git a/contrib/perl5/lib/unicode/In/SpacingModifierLetters.pl b/contrib/perl5/lib/unicode/In/SpacingModifierLetters.pl
deleted file mode 100644
index 0e31fea..0000000
--- a/contrib/perl5/lib/unicode/In/SpacingModifierLetters.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-02B0 02FF
-END
diff --git a/contrib/perl5/lib/unicode/In/Specials.pl b/contrib/perl5/lib/unicode/In/Specials.pl
deleted file mode 100644
index 03f69a3..0000000
--- a/contrib/perl5/lib/unicode/In/Specials.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-FFF0 FFFD
-END
diff --git a/contrib/perl5/lib/unicode/In/SuperscriptsandSubscripts.pl b/contrib/perl5/lib/unicode/In/SuperscriptsandSubscripts.pl
deleted file mode 100644
index b0f90cd..0000000
--- a/contrib/perl5/lib/unicode/In/SuperscriptsandSubscripts.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2070 209F
-END
diff --git a/contrib/perl5/lib/unicode/In/Syriac.pl b/contrib/perl5/lib/unicode/In/Syriac.pl
deleted file mode 100644
index f85f1a9..0000000
--- a/contrib/perl5/lib/unicode/In/Syriac.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0700 074F
-END
diff --git a/contrib/perl5/lib/unicode/In/Tamil.pl b/contrib/perl5/lib/unicode/In/Tamil.pl
deleted file mode 100644
index 71fa923..0000000
--- a/contrib/perl5/lib/unicode/In/Tamil.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0B80 0BFF
-END
diff --git a/contrib/perl5/lib/unicode/In/Telugu.pl b/contrib/perl5/lib/unicode/In/Telugu.pl
deleted file mode 100644
index ff09b1e..0000000
--- a/contrib/perl5/lib/unicode/In/Telugu.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0C00 0C7F
-END
diff --git a/contrib/perl5/lib/unicode/In/Thaana.pl b/contrib/perl5/lib/unicode/In/Thaana.pl
deleted file mode 100644
index f88768c..0000000
--- a/contrib/perl5/lib/unicode/In/Thaana.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0780 07BF
-END
diff --git a/contrib/perl5/lib/unicode/In/Thai.pl b/contrib/perl5/lib/unicode/In/Thai.pl
deleted file mode 100644
index e77c0c5..0000000
--- a/contrib/perl5/lib/unicode/In/Thai.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0E00 0E7F
-END
diff --git a/contrib/perl5/lib/unicode/In/Tibetan.pl b/contrib/perl5/lib/unicode/In/Tibetan.pl
deleted file mode 100644
index 35436b3..0000000
--- a/contrib/perl5/lib/unicode/In/Tibetan.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0F00 0FFF
-END
diff --git a/contrib/perl5/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl b/contrib/perl5/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl
deleted file mode 100644
index 83c6a78..0000000
--- a/contrib/perl5/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1400 167F
-END
diff --git a/contrib/perl5/lib/unicode/In/YiRadicals.pl b/contrib/perl5/lib/unicode/In/YiRadicals.pl
deleted file mode 100644
index 7350871..0000000
--- a/contrib/perl5/lib/unicode/In/YiRadicals.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-A490 A4CF
-END
diff --git a/contrib/perl5/lib/unicode/In/YiSyllables.pl b/contrib/perl5/lib/unicode/In/YiSyllables.pl
deleted file mode 100644
index baa038e..0000000
--- a/contrib/perl5/lib/unicode/In/YiSyllables.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-A000 A48F
-END
diff --git a/contrib/perl5/lib/unicode/Index.txt b/contrib/perl5/lib/unicode/Index.txt
deleted file mode 100644
index 1ebeea6..0000000
--- a/contrib/perl5/lib/unicode/Index.txt
+++ /dev/null
@@ -1,3055 +0,0 @@
-8859-1 (Latin-1), Based on ISO 00A0
-8859-2, -3, -4, -9 (European Latin), Based on ISO 0100
-8859-5 (Cyrillic), Based on ISO 0400
-8859-6 (Arabic), Based on ISO 0600
-8859-7 (Greek), Based on ISO 0370
-8859-8 (Hebrew), Based on ISO 05D0
-a, latin small letter script 0251
-A, LATIN SMALL LETTER TURNED 0250
-ABBREVIATION MARK, ARMENIAN 055F
-ABBREVIATION SIGN, DEVANAGARI 0970
-Abbreviations, Squared Latin 3371
-Aboriginal Syllabics, Unified Canadian 1400
-ABOVE RIGHT, COMBINING COMMA 0315
-above, cedilla 0312
-ABOVE, COMBINING ALMOST EQUAL TO 034C
-ABOVE, COMBINING BRIDGE 0346
-ABOVE, COMBINING CLOCKWISE ARROW 20D5
-ABOVE, COMBINING COMMA 0313
-ABOVE, COMBINING DOT 0307
-ABOVE, COMBINING DOUBLE VERTICAL LINE 030E
-ABOVE, COMBINING FOUR DOTS 20DC
-ABOVE, COMBINING HOMOTHETIC 034B
-ABOVE, COMBINING HOOK 0309
-ABOVE, COMBINING LEFT ANGLE 031A
-ABOVE, COMBINING LEFT ARROW 20D6
-ABOVE, COMBINING LEFT HARPOON 20D0
-ABOVE, COMBINING LEFT RIGHT ARROW 20E1
-ABOVE, COMBINING NOT TILDE 034A
-ABOVE, COMBINING REVERSED COMMA 0314
-ABOVE, COMBINING RING 030A
-ABOVE, COMBINING THREE DOTS 20DB
-ABOVE, COMBINING TURNED COMMA 0312
-ABOVE, COMBINING VERTICAL LINE 030D
-ABOVE, COMBINING X 033D
-ABOVE, DOT 02D9
-above, double dot 0308
-ABOVE, RING 02DA
-above, vee 030C
-ACCENT BELOW, COMBINING ACUTE 0317
-ACCENT BELOW, COMBINING CIRCUMFLEX 032D
-ACCENT BELOW, COMBINING GRAVE 0316
-ACCENT, ACUTE 00B4
-ACCENT, CIRCUMFLEX 005E
-ACCENT, COMBINING ACUTE 0301
-ACCENT, COMBINING CIRCUMFLEX 0302
-ACCENT, COMBINING DOUBLE ACUTE 030B
-ACCENT, COMBINING DOUBLE GRAVE 030F
-ACCENT, COMBINING GRAVE 0300
-ACCENT, DOUBLE ACUTE 02DD
-ACCENT, GRAVE 0060
-ACCENT, MODIFIER LETTER ACUTE 02CA
-ACCENT, MODIFIER LETTER CIRCUMFLEX 02C6
-ACCENT, MODIFIER LETTER CROSS 02DF
-ACCENT, MODIFIER LETTER GRAVE 02CB
-ACCENT, MODIFIER LETTER LOW ACUTE 02CF
-ACCENT, MODIFIER LETTER LOW GRAVE 02CE
-accent, swedish grave 02DF
-ACCOUNT OF 2100
-acknowledge 0006
-acknowledge, graphic for negative 237B
-acknowledge, negative 0015
-ACKNOWLEDGE, SYMBOL FOR 2406
-ACKNOWLEDGE, SYMBOL FOR NEGATIVE 2415
-ACTIVATE ARABIC FORM SHAPING 206D
-ACTIVATE SYMMETRIC SWAPPING 206B
-ACUTE ACCENT 00B4
-ACUTE ACCENT BELOW, COMBINING 0317
-ACUTE ACCENT, COMBINING 0301
-ACUTE ACCENT, COMBINING DOUBLE 030B
-ACUTE ACCENT, DEVANAGARI 0954
-ACUTE ACCENT, DOUBLE 02DD
-ACUTE ACCENT, MODIFIER LETTER 02CA
-ACUTE ACCENT, MODIFIER LETTER LOW 02CF
-ACUTE TONE MARK, COMBINING 0341
-acute, spacing 00B4
-ADDRESSED TO THE SUBJECT 2101
-AE, LATIN SMALL LETTER 00E6
-AIRPLANE 2708
-aldus leaf 2766
-ALEF SYMBOL 2135
-ALL AROUND-PROFILE 232E
-ALL EQUAL TO 224C
-ALL, FOR 2200
-ALMOST EQUAL TO 2248
-ALMOST EQUAL TO ABOVE, COMBINING 034C
-ALPHA, LATIN SMALL LETTER 0251
-ALPHA, LATIN SMALL LETTER TURNED 0252
-Alphabetic Presentation Forms FB00
-Alphanumerics, Enclosed 2460
-alternating current 223F
-ALTERNATIVE KEY SYMBOL 2387
-ALVEOLAR CLICK, LATIN LETTER 01C2
-AMPERSAND 0026
-AND, CURLY LOGICAL 22CF
-AND, LOGICAL 2227
-AND, N-ARY LOGICAL 22C0
-ANGLE 2220
-ANGLE ABOVE, COMBINING LEFT 031A
-angle arc 2222
-ANGLE BELOW, COMBINING LEFT 0349
-ANGLE BRACKET, LEFT 3008
-ANGLE BRACKET, LEFT DOUBLE 300A
-ANGLE BRACKET, LEFT-POINTING 2329
-ANGLE BRACKET, RIGHT-POINTING 232A
-ANGLE QUOTATION MARK, LEFT-POINTING DOUBLE 00AB
-ANGLE QUOTATION MARK, RIGHT-POINTING DOUBLE 00BB
-ANGLE QUOTATION MARK, SINGLE LEFT-POINTING 2039
-ANGLE QUOTATION MARK, SINGLE RIGHT-POINTING 203A
-ANGLE WITH ARC, RIGHT 22BE
-ANGLE, MEASURED 2221
-ANGLE, RIGHT 221F
-ANGLE, SPHERICAL 2222
-angled dash 00AC
-ANGSTROM SIGN 212B
-ANKH 2625
-Annotation Signs, Koranic 06D6
-Annotation, Interlinear FFF9
-Annotation, Kanbun Ideographic 3190
-APL 2336
-APL Functional Symbols 2336
-apl jot 2218
-apl overbar 00AF
-apl quote 0022
-apl stile 2223
-apl tilde 223C
-apl upstile 2308
-APOSTROPHE 0027
-apostrophe 02BC
-apostrophe 2019
-APOSTROPHE, ARMENIAN 055A
-APOSTROPHE, MODIFIER LETTER 02BC
-APOSTROPHE, MODIFIER LETTER DOUBLE 02EE
-apostrophe-quote 0027
-application program command 009F
-APPROACHES THE LIMIT 2250
-APPROXIMATELY EQUAL TO 2245
-approximately equal to 2257
-AQUARIUS 2652
-Arabic 0600
-ARABIC COMMA 060C
-ARABIC DECIMAL SEPARATOR 066B
-ARABIC FIVE POINTED STAR 066D
-ARABIC FORM SHAPING, ACTIVATE 206D
-ARABIC FORM SHAPING, INHIBIT 206C
-ARABIC FULL STOP 06D4
-Arabic Letters 0627
-ARABIC PERCENT SIGN 066A
-Arabic Points 064B
-Arabic Presentation Forms-A FB50
-Arabic Presentation Forms-B FE70
-ARABIC QUESTION MARK 061F
-ARABIC SEMICOLON 061B
-ARABIC THOUSANDS SEPARATOR 066C
-Arabic, Extended 0671
-Arabic-Indic Digits 0660
-Arabic-Indic Digits for Persian and Urdu, Eastern 06F0
-ARC 2312
-arc, angle 2222
-ARC, RIGHT ANGLE WITH 22BE
-ARCH BELOW, COMBINING INVERTED DOUBLE 032B
-Arcs 25DC
-area, end of guarded 0097
-area, end of selected 0087
-area, start of guarded 0096
-area, start of selected 0086
-ARIES 2648
-Armenian 0530
-ARMENIAN ABBREVIATION MARK 055F
-ARMENIAN APOSTROPHE 055A
-Armenian Capital Letters 0531
-ARMENIAN COMMA 055D
-ARMENIAN EMPHASIS MARK 055B
-ARMENIAN EXCLAMATION MARK 055C
-ARMENIAN FULL STOP 0589
-ARMENIAN HYPHEN 058A
-Armenian Ligatures FB13
-ARMENIAN QUESTION MARK 055E
-Armenian Small Letters 0561
-ARROW ABOVE, COMBINING CLOCKWISE 20D5
-ARROW ABOVE, COMBINING LEFT 20D6
-ARROW ABOVE, COMBINING LEFT RIGHT 20E1
-ARROW BELOW, COMBINING DOUBLE RIGHTWARDS 0362
-ARROW BELOW, COMBINING LEFT RIGHT 034D
-ARROW BELOW, COMBINING UPWARDS 034E
-Arrow Dingbats 2794
-ARROW, ELECTRIC 2301
-ARROWHEAD, UP 2303
-Arrowheads, Modifier Letter 02C2
-Arrows 2190
-ASCENDING NODE 260A
-ASCII 0020
-ASCII C0 Control Codes 0000
-ASCII Digits 0030
-ASCII Variants, Fullwidth FF01
-ash 00E6
-ASSERTION 22A6
-ASTERISK 002A
-Asterisk Dingbats 2722
-ASTERISK OPERATOR 2217
-ASTERISK OPERATOR, CIRCLED 229B
-Asterisks and Snowflakes, Stars, 2721
-ASTERISM 2042
-Astrological Symbols 263D
-asymptotic to 2248
-ASYMPTOTICALLY EQUAL TO 2243
-AT, COMMERCIAL 0040
-B, LATIN LETTER SMALL CAPITAL 0299
-B, SCRIPT CAPITAL 212C
-baby gamma, latin small letter 0264
-backslash 005C
-BACKSLASH, COMBINING ENCLOSING CIRCLE 20E0
-backspace 0008
-BACKSPACE, SYMBOL FOR 2408
-backward difference 2207
-BAHT, THAI CURRENCY SYMBOL 0E3F
-BALLOT BOX 2610
-BALLOT BOX WITH CHECK 2611
-BALLOT BOX WITH X 2612
-BALLOT X 2717
-BALLOT X, HEAVY 2718
-bang 0021
-Bar Dingbats, Vertical 2758
-bar, broken vertical 00A6
-BAR, HORIZONTAL 2015
-bar, vertical 007C
-barred o, latin capital letter 019F
-BARRED O, LATIN SMALL LETTER 0275
-Basic Latin, C0 Controls and 0000
-Basic Russian Alphabet 0410
-BEAMED EIGHTH NOTES 266B
-BEAMED SIXTEENTH NOTES 266C
-BECAUSE 2235
-beginning of line 2310
-bell 0007
-BELL SYMBOL 237E
-BELL, SYMBOL FOR 2407
-BELOW, COMBINING ACUTE ACCENT 0317
-BELOW, COMBINING BREVE 032E
-BELOW, COMBINING BRIDGE 032A
-BELOW, COMBINING CARON 032C
-BELOW, COMBINING CIRCUMFLEX ACCENT 032D
-BELOW, COMBINING COMMA 0326
-BELOW, COMBINING DIAERESIS 0324
-BELOW, COMBINING DOT 0323
-BELOW, COMBINING DOUBLE RIGHTWARDS ARROW 0362
-BELOW, COMBINING DOUBLE VERTICAL LINE 0348
-BELOW, COMBINING EQUALS SIGN 0347
-BELOW, COMBINING GRAVE ACCENT 0316
-BELOW, COMBINING INVERTED BREVE 032F
-BELOW, COMBINING INVERTED BRIDGE 033A
-BELOW, COMBINING INVERTED DOUBLE ARCH 032B
-BELOW, COMBINING LEFT ANGLE 0349
-BELOW, COMBINING LEFT HALF RING 031C
-BELOW, COMBINING LEFT RIGHT ARROW 034D
-BELOW, COMBINING LEFT TACK 0318
-BELOW, COMBINING MACRON 0331
-BELOW, COMBINING MINUS SIGN 0320
-BELOW, COMBINING PALATALIZED HOOK 0321
-BELOW, COMBINING PLUS SIGN 031F
-BELOW, COMBINING RETROFLEX HOOK 0322
-BELOW, COMBINING RIGHT HALF RING 0339
-BELOW, COMBINING RING 0325
-BELOW, COMBINING SEAGULL 033C
-BELOW, COMBINING SQUARE 033B
-BELOW, COMBINING TILDE 0330
-BELOW, COMBINING UP TACK 031D
-BELOW, COMBINING UPWARDS ARROW 034E
-BELOW, COMBINING VERTICAL LINE 0329
-below, greek non-spacing iota 0345
-Bengali 0980
-Bengali Currency Signs 09F2
-Bengali Digits 09E6
-Bengali Letters 0985
-BENGALI RUPEE MARK 09F2
-BENGALI RUPEE SIGN 09F3
-BENZENE RING 232C
-bernoulli function 212C
-BET SYMBOL 2136
-Betty BOOP
-BETWEEN 226C
-BIDENTAL PERCUSSIVE, LATIN LETTER 02AD
-Bidirectional Formatting Controls 202A
-Big 5, Duplicates from FA0C
-BILABIAL CLICK, LATIN LETTER 0298
-BILABIAL PERCUSSIVE, LATIN LETTER 02AC
-BIOHAZARD SIGN 2623
-BLACK LEFT POINTING INDEX 261A
-BLACK LEFTWARDS BULLET 204C
-BLACK LENTICULAR BRACKET, LEFT 3010
-BLACK NIB 2712
-BLACK PARALLELOGRAM 25B0
-BLACK SCISSORS 2702
-black small circle 2022
-BLACK SMILING FACE 263B
-BLACK STAR 2605
-BLACK SUN WITH RAYS 2600
-BLACK TELEPHONE 260E
-BLACK-LETTER CAPITAL C 212D
-BLACK-LETTER CAPITAL H 210C
-BLACK-LETTER CAPITAL I 2111
-BLACK-LETTER CAPITAL R 211C
-BLACK-LETTER CAPITAL Z 2128
-BLANK SYMBOL 2422
-Block Elements 2580
-block, end of transmission 0017
-BLOCK, SYMBOL FOR END OF TRANSMISSION 2417
-bom FEFF
-Bopomofo Extended for Minnan and Hakka, Chinese 31A0
-Bopomofo, Chinese 3100
-BOWTIE 22C8
-Box Drawing 2500
-BOX WITH CHECK, BALLOT 2611
-BOX WITH X, BALLOT 2612
-BOX, BALLOT 2610
-BOX, OPEN 2423
-BOX, SHOULDERED OPEN 237D
-BOX, X IN A RECTANGLE 2327
-bra 2329
-brace, closing 007D
-brace, opening 007B
-BRACKET WITH QUILL, LEFT SQUARE 2045
-bracket, closing curly 007D
-bracket, closing square 005D
-BRACKET, LEFT ANGLE 3008
-BRACKET, LEFT BLACK LENTICULAR 3010
-BRACKET, LEFT CORNER 300C
-BRACKET, LEFT CURLY 007B
-BRACKET, LEFT DOUBLE ANGLE 300A
-BRACKET, LEFT SQUARE 005B
-BRACKET, LEFT TORTOISE SHELL 3014
-BRACKET, LEFT WHITE CORNER 300E
-BRACKET, LEFT WHITE LENTICULAR 3016
-BRACKET, LEFT WHITE SQUARE 301A
-BRACKET, LEFT WHITE TORTOISE SHELL 3018
-BRACKET, LEFT-POINTING ANGLE 2329
-bracket, opening curly 007B
-bracket, opening square 005B
-BRACKET, RIGHT CURLY 007D
-BRACKET, RIGHT SQUARE 005D
-Braille Patterns 2800
-brazilian currency 20A2
-break here, no 0083
-break permitted here 0082
-breathing, rough 0314
-breathing, smooth 0313
-BREVE 02D8
-BREVE BELOW, COMBINING 032E
-BREVE BELOW, COMBINING INVERTED 032F
-BREVE, COMBINING 0306
-BREVE, COMBINING DOUBLE INVERTED 0361
-BREVE, COMBINING INVERTED 0311
-BRIDGE ABOVE, COMBINING 0346
-BRIDGE BELOW, COMBINING 032A
-BRIDGE BELOW, COMBINING INVERTED 033A
-broken vertical bar 00A6
-BULLET 2022
-BULLET OPERATOR 2219
-BULLET, BLACK LEFTWARDS 204C
-BULLET, HYPHEN 2043
-BULLET, REVERSED ROTATED FLORAL HEART 2619
-bullet, tainome (japanese, a kind of) 25C9
-BULLET, TRIANGULAR 2023
-BULLET, WHITE 25E6
-BULLSEYE 25CE
-bullseye, latin letter 0298
-by definition, equal to 225C
-BY DEFINITION, EQUAL TO 225D
-BY, MEASURED 225E
-byte order mark FEFF
-C, BLACK-LETTER CAPITAL 212D
-C, DOUBLE-STRUCK CAPITAL 2102
-C, LATIN LETTER STRETCHED 0297
-C0 Controls and Basic Latin 0000
-C1 Controls and Latin-1 Supplement 0080
-CADA UNA 2106
-CADUCEUS 2624
-Canadian Aboriginal Syllabics, Unified 1400
-cancel 0018
-cancel character 0094
-CANCEL, SYMBOL FOR 2418
-CANCER 264B
-CANDRABINDU, COMBINING 0310
-Cantillation Marks, Hebrew 0591
-cap 2229
-CAP, SQUARE 2293
-Capital Letters, Armenian 0531
-Capital Letters, Cyrillic 0401
-Capital Letters, Georgian 10A0
-Capital Letters, Greek 0391
-Capital Letters, Latin 0041
-CAPRICORN 2651
-caps lock 21EA
-caps lock 21EC
-Card Suits, Playing 2660
-cardinal (countable), first transfinite 2135
-cardinal (functions of a real variable), third transfinite 2137
-cardinal (the continuum), second transfinite 2136
-CARE OF 2105
-caret 028C
-CARET 2038
-CARET INSERTION POINT 2041
-CARON 02C7
-CARON BELOW, COMBINING 032C
-CARON, COMBINING 030C
-carriage return 000D
-carriage return 21B5
-CARRIAGE RETURN, SYMBOL FOR 240D
-CAUTION SIGN 2621
-CEDILLA 00B8
-cedilla above 0312
-CEDILLA, COMBINING 0327
-cedilla, spacing 00B8
-CEILING, LEFT 2308
-CELSIUS, DEGREE 2103
-CENT SIGN 00A2
-centigrade, degrees 2103
-CENTRE LINE SYMBOL 2104
-CENTRED LEFT HALF RING, MODIFIER LETTER 02D3
-CENTRELINE LOW LINE FE4E
-CENTRELINE OVERLINE FE4A
-character introducer, single 009A
-character tabulation set 0088
-character tabulation with justification 0089
-CHARACTER TIE 2040
-Chart Components, Form and 2500
-CHECK MARK 2713
-CHECK MARK, HEAVY 2714
-CHECK MARK, NOT 237B
-CHECK, BALLOT BOX WITH 2611
-Cherokee 13A0
-Chess Pieces 2654
-chevrons 00AB
-CHI RHO 2627
-Chinese Bopomofo 3100
-Chinese Bopomofo Extended for Minnan and Hakka 31A0
-CIRCLE BACKSLASH, COMBINING ENCLOSING 20E0
-CIRCLE, BLACK 25CF
-circle, black small 2022
-CIRCLE, COMBINING ENCLOSING 20DD
-circle, jis composition 20DD
-CIRCLE, LARGE 25EF
-CIRCLED ASTERISK OPERATOR 229B
-CIRCLED DASH 229D
-CIRCLED DIGIT ZERO 24EA
-Circled Digits, Dingbat 2776
-CIRCLED DIVISION SLASH 2298
-CIRCLED DOT OPERATOR 2299
-CIRCLED EQUALS 229C
-Circled Ideographs 3280
-Circled Inverse Numbers 2776
-Circled Japanese Katakana 32D0
-Circled Korean Hangul Elements 3260
-Circled Korean Hangul Syllables 326E
-Circled Latin Letters 24B6
-CIRCLED MINUS 2296
-Circled Numbers 2460
-CIRCLED PLUS 2295
-CIRCLED POSTAL MARK 3036
-CIRCLED RING OPERATOR 229A
-CIRCLED TIMES 2297
-Circles 25CB
-CIRCUMFLEX ACCENT 005E
-CIRCUMFLEX ACCENT BELOW, COMBINING 032D
-CIRCUMFLEX ACCENT, COMBINING 0302
-CIRCUMFLEX ACCENT, MODIFIER LETTER 02C6
-circumflex, spacing 005E
-CJK Compatibility 3300
-CJK Compatibility Forms FE30
-CJK Compatibility Ideographs F900
-CJK Compatibility Ideographs, IBM FA0E
-CJK Ideographs Area 3400
-CJK Letters and Ideographs, Enclosed 3200
-CJK Phonetics and Symbols Area 2E00
-CJK Radicals Supplement 2E80
-CJK Symbols and Punctuation 3000
-CJK Unified Ideographs 4E00
-CJK Unified Ideographs Extension A 3400
-clear key 2327
-CLEAR SCREEN SYMBOL 239A
-clear weather 2600
-CLICK, LATIN LETTER ALVEOLAR 01C2
-CLICK, LATIN LETTER BILABIAL 0298
-CLICK, LATIN LETTER DENTAL 01C0
-CLICK, LATIN LETTER LATERAL 01C1
-CLICK, LATIN LETTER RETROFLEX 01C3
-CLOCKWISE ARROW ABOVE, COMBINING 20D5
-CLOCKWISE CONTOUR INTEGRAL 2232
-CLOCKWISE INTEGRAL 2231
-CLOCKWISE RING OVERLAY, COMBINING 20D9
-clone 2104
-Clones of Diacritics, Spacing 02D8
-closed epsilon, latin small letter 029A
-CLOSED OMEGA, LATIN SMALL LETTER 0277
-CLOSED OPEN E, LATIN SMALL LETTER 029A
-closed reversed epsilon, latin small letter 025E
-CLOSED REVERSED OPEN E, LATIN SMALL LETTER 025E
-closing brace 007D
-closing curly bracket 007D
-CLOSING MARK, IDEOGRAPHIC 3006
-closing parenthesis 0029
-closing square bracket 005D
-CLOUD 2601
-cloudy weather 2601
-COLON 003A
-COLON EQUALS 2254
-COLON SIGN 20A1
-COLON, ETHIOPIC 1365
-COLON, MODIFIER LETTER HALF TRIANGULAR 02D1
-COLON, MODIFIER LETTER TRIANGULAR 02D0
-COLON, MONGOLIAN 1804
-COMBINING ACUTE ACCENT 0301
-COMBINING ACUTE ACCENT BELOW 0317
-COMBINING ACUTE TONE MARK 0341
-COMBINING ALMOST EQUAL TO ABOVE 034C
-Combining Alphabet, Korean Hangul Jamo 1100
-COMBINING BREVE 0306
-COMBINING BREVE BELOW 032E
-COMBINING BRIDGE ABOVE 0346
-COMBINING BRIDGE BELOW 032A
-COMBINING CANDRABINDU 0310
-COMBINING CARON 030C
-COMBINING CARON BELOW 032C
-COMBINING CEDILLA 0327
-Combining Characters, Cyrillic 0483
-COMBINING CIRCUMFLEX ACCENT 0302
-COMBINING CIRCUMFLEX ACCENT BELOW 032D
-COMBINING CLOCKWISE ARROW ABOVE 20D5
-COMBINING CLOCKWISE RING OVERLAY 20D9
-COMBINING COMMA ABOVE 0313
-COMBINING COMMA ABOVE RIGHT 0315
-COMBINING COMMA BELOW 0326
-Combining Diacritical Marks 0300
-Combining Diacritical Marks for Symbols 20D0
-COMBINING DIAERESIS 0308
-COMBINING DIAERESIS BELOW 0324
-COMBINING DOT ABOVE 0307
-COMBINING DOT BELOW 0323
-COMBINING DOUBLE ACUTE ACCENT 030B
-COMBINING DOUBLE GRAVE ACCENT 030F
-COMBINING DOUBLE INVERTED BREVE 0361
-COMBINING DOUBLE LOW LINE 0333
-COMBINING DOUBLE OVERLINE 033F
-COMBINING DOUBLE RIGHTWARDS ARROW BELOW 0362
-COMBINING DOUBLE TILDE 0360
-COMBINING DOUBLE TILDE LEFT HALF FE22
-COMBINING DOUBLE VERTICAL LINE ABOVE 030E
-COMBINING DOUBLE VERTICAL LINE BELOW 0348
-COMBINING DOWN TACK BELOW 031E
-COMBINING ENCLOSING CIRCLE 20DD
-COMBINING ENCLOSING CIRCLE BACKSLASH 20E0
-COMBINING ENCLOSING DIAMOND 20DF
-COMBINING ENCLOSING KEYCAP 20E3
-COMBINING ENCLOSING SCREEN 20E2
-COMBINING ENCLOSING SQUARE 20DE
-COMBINING EQUALS SIGN BELOW 0347
-COMBINING FOUR DOTS ABOVE 20DC
-COMBINING GRAVE ACCENT 0300
-COMBINING GRAVE ACCENT BELOW 0316
-COMBINING GRAVE TONE MARK 0340
-COMBINING GREEK DIALYTIKA TONOS 0344
-COMBINING GREEK KORONIS 0343
-COMBINING GREEK PERISPOMENI 0342
-COMBINING GREEK YPOGEGRAMMENI 0345
-combining hacek 030C
-Combining Half Marks FE20
-COMBINING HOMOTHETIC ABOVE 034B
-COMBINING HOOK ABOVE 0309
-COMBINING HORN 031B
-COMBINING INVERTED BREVE 0311
-COMBINING INVERTED BREVE BELOW 032F
-COMBINING INVERTED BRIDGE BELOW 033A
-COMBINING INVERTED DOUBLE ARCH BELOW 032B
-COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK 3099
-COMBINING LEFT ANGLE ABOVE 031A
-COMBINING LEFT ANGLE BELOW 0349
-COMBINING LEFT ARROW ABOVE 20D6
-COMBINING LEFT HALF RING BELOW 031C
-COMBINING LEFT HARPOON ABOVE 20D0
-COMBINING LEFT RIGHT ARROW ABOVE 20E1
-COMBINING LEFT RIGHT ARROW BELOW 034D
-COMBINING LEFT TACK BELOW 0318
-COMBINING LIGATURE LEFT HALF FE20
-COMBINING LONG SOLIDUS OVERLAY 0338
-COMBINING LONG STROKE OVERLAY 0336
-COMBINING LONG VERTICAL LINE OVERLAY 20D2
-COMBINING LOW LINE 0332
-COMBINING MACRON 0304
-COMBINING MACRON BELOW 0331
-COMBINING MINUS SIGN BELOW 0320
-COMBINING NOT TILDE ABOVE 034A
-COMBINING OGONEK 0328
-COMBINING OVERLINE 0305
-COMBINING PALATALIZED HOOK BELOW 0321
-COMBINING PLUS SIGN BELOW 031F
-COMBINING RETROFLEX HOOK BELOW 0322
-COMBINING REVERSED COMMA ABOVE 0314
-COMBINING RIGHT HALF RING BELOW 0339
-COMBINING RING ABOVE 030A
-COMBINING RING BELOW 0325
-COMBINING RING OVERLAY 20D8
-COMBINING SEAGULL BELOW 033C
-COMBINING SHORT SOLIDUS OVERLAY 0337
-COMBINING SHORT STROKE OVERLAY 0335
-COMBINING SHORT VERTICAL LINE OVERLAY 20D3
-COMBINING SQUARE BELOW 033B
-COMBINING THREE DOTS ABOVE 20DB
-COMBINING TILDE 0303
-COMBINING TILDE BELOW 0330
-COMBINING TILDE OVERLAY 0334
-COMBINING TURNED COMMA ABOVE 0312
-COMBINING UP TACK BELOW 031D
-COMBINING UPWARDS ARROW BELOW 034E
-COMBINING VERTICAL LINE ABOVE 030D
-COMBINING VERTICAL LINE BELOW 0329
-COMBINING VERTICAL TILDE 033E
-COMBINING X ABOVE 033D
-COMET 2604
-COMMA 002C
-COMMA ABOVE RIGHT, COMBINING 0315
-COMMA ABOVE, COMBINING 0313
-COMMA ABOVE, COMBINING REVERSED 0314
-COMMA ABOVE, COMBINING TURNED 0312
-COMMA BELOW, COMBINING 0326
-comma quotation mark, double 201D
-comma quotation mark, double reversed 201F
-comma quotation mark, double turned 201C
-comma quotation mark, low double 201E
-comma quotation mark, low single 201A
-comma quotation mark, single 2019
-comma quotation mark, single reversed 201B
-comma quotation mark, single turned 2018
-COMMA, ARABIC 060C
-COMMA, ARMENIAN 055D
-COMMA, ETHIOPIC 1363
-comma, georgian 00B7
-COMMA, IDEOGRAPHIC 3001
-COMMA, MODIFIER LETTER REVERSED 02BD
-COMMA, MODIFIER LETTER TURNED 02BB
-COMMA, MONGOLIAN 1802
-command key 2318
-command, application program 009F
-command, operating system 009D
-COMMERCIAL AT 0040
-compass 263C
-Compatibility and Specials Area F900
-Compatibility Forms, CJK FE30
-Compatibility Ideographs, CJK F900
-Compatibility Ideographs, IBM CJK FA0E
-Compatibility Jamo, Korean Hangul 3130
-Compatibility, CJK 3300
-COMPLEMENT 2201
-complex numbers, the set of 2102
-Components, Form and Chart 2500
-composite function 2218
-composition circle, jis 20DD
-COMPOSITION SYMBOL 2384
-conductance 2127
-CONICAL TAPER 2332
-CONJUGATE MATRIX, HERMITIAN 22B9
-conjunction 2227
-CONJUNCTION 260C
-CONTAINS AS MEMBER 220B
-CONTAINS AS MEMBER, SMALL 220D
-CONTAINS AS NORMAL SUBGROUP 22B3
-CONTINUOUS UNDERLINE SYMBOL 2381
-continuum, second transfinite cardinal 2136
-CONTOUR INTEGRAL 222E
-CONTOUR INTEGRAL, CLOCKWISE 2232
-Control Code Graphics 25F0
-Control Codes, ASCII C0 0000
-Control Codes, C1 0080
-Control Codes, Graphic Pictures for 2400
-Control Codes, Graphics for 237B
-control sequence introducer 009B
-control string, device 0090
-control, graphic for 2388
-Control, Syriac Format 070F
-Controls and Basic Latin, C0 0000
-Controls and Latin-1 Supplement, C1 0080
-Controls, Bidirectional Formatting 202A
-Controls, Mongolian Format 180B
-COPRODUCT, N-ARY 2210
-Coptic, Greek and 0370
-Coptic-unique Letters 03E2
-COPYRIGHT SIGN 00A9
-COPYRIGHT, SOUND RECORDING 2117
-CORNER BRACKET, LEFT 300C
-CORNER BRACKET, LEFT WHITE 300E
-CORNER, TOP LEFT 231C
-CORPORATION, SQUARE 337F
-CORRESPONDS TO 2258
-corresponds to 2259
-costa rican currency 20A1
-countable, first transfinite cardinal 2135
-COUNTERBORE 2334
-COUNTERSINK 2335
-cr 000D
-CRESCENT, STAR AND 262A
-Croatian Digraphs Matching Serbian Cyrillic Letters 01C4
-Croatian, Additions for Slovenian and 0200
-CROP, TOP LEFT 230F
-CROSS ACCENT, MODIFIER LETTER 02DF
-Cross Dingbats 2719
-CROSS OF JERUSALEM 2629
-CROSS OF LORRAINE 2628
-cross ratio 211E
-CROSS, EAST SYRIAC 2671
-CROSS, LATIN 271D
-cross, long 2020
-CROSS, MALTESE 2720
-CROSS, ORTHODOX 2626
-cross, st. andrew's 2613
-CROSS, WEST SYRIAC 2670
-CROSSBONES, SKULL AND 2620
-crosshatch 0023
-CRUZEIRO SIGN 20A2
-CUBE ROOT 221B
-cubed 00B3
-cup 222A
-CUP, SQUARE 2294
-curly bracket, closing 007D
-CURLY BRACKET, LEFT 007B
-curly bracket, opening 007B
-CURLY BRACKET, RIGHT 007D
-CURLY LOGICAL AND 22CF
-CURLY LOGICAL OR 22CE
-CURRENCY SIGN 00A4
-Currency Signs, Bengali 09F2
-CURRENCY SYMBOL BAHT, THAI 0E3F
-currency symbol, florin 0192
-Currency Symbols 20A0
-currency, brazilian 20A2
-currency, costa rican 20A1
-currency, el salvadorian 20A1
-currency, euro european 20AC
-currency, french 20A3
-currency, greek 20AF
-currency, hebrew 20AA
-currency, indian 20A8
-currency, israeli 20AA
-currency, italian 20A4
-currency, korean 20A9
-currency, laotian 20AD
-currency, mongolian 20AE
-currency, nigerian 20A6
-currency, spanish 20A7
-currency, turkish 20A4
-currency, vietnamese 20AB
-CURRENT SYMBOL FORM TWO, DIRECT 2393
-current, alternating 223F
-cycle 223C
-CYLINDRICITY 232D
-Cyrillic 0400
-Cyrillic Capital Letters 0401
-Cyrillic Combining Characters 0483
-Cyrillic Extensions 0450
-Cyrillic Historic Letters 0460
-Cyrillic Small Letters 0430
-Cyrillic, Extended 048C
-d retroflex hook, latin small letter 0256
-D WITH TAIL, LATIN SMALL LETTER 0256
-D, LATIN CAPITAL LETTER AFRICAN 0189
-DAGGER 2020
-DAGGER, DOUBLE 2021
-DALET SYMBOL 2138
-DANDA, DEVANAGARI 0964
-DANDA, DEVANAGARI DOUBLE 0965
-dash, angled 00AC
-DASH, CIRCLED 229D
-DASH, EM 2014
-DASH, EN 2013
-DASH, FIGURE 2012
-dash, long 2015
-dash, quotation 2015
-dash, swung 007E
-DASH, WAVE 301C
-DASH, WAVY 3030
-DASHED LOW LINE FE4D
-DASHED OVERLINE FE49
-Dashes 2010
-dasia 0314
-data link escape 0010
-DATA LINK ESCAPE, SYMBOL FOR 2410
-DAVID, STAR OF 2721
-Days, Telegraph Symbols for 33E0
-decimal point 002E
-decimal separator 002C
-DECIMAL SEPARATOR KEY SYMBOL 2396
-DECIMAL SEPARATOR, ARABIC 066B
-definition, equal to by 225C
-DEFINITION, EQUAL TO BY 225D
-DEGREE CELSIUS 2103
-DEGREE FAHRENHEIT 2109
-DEGREE SIGN 00B0
-degrees centigrade 2103
-degrees kelvin 212A
-del 2207
-delete 007F
-DELETE FORM TWO, SYMBOL FOR 2425
-delete to the left key 232B
-delete to the right key 2326
-DELETE, SYMBOL FOR 2421
-delete, undoable 2425
-DELTA EQUAL TO 225C
-DELTA, LATIN SMALL LETTER TURNED 018D
-DENTAL CLICK, LATIN LETTER 01C0
-depth symbol 21A7
-derivative 0307
-derivative, double 0308
-derivative, fourth 20DC
-derivative, third 20DB
-DESCENDING NODE 260B
-Description Characters, Ideographic 2FF0
-Devanagari 0900
-DEVANAGARI DANDA 0964
-Devanagari Digits 0966
-DEVANAGARI DOUBLE DANDA 0965
-Devanagari Letters 0905
-DEVANAGARI OM 0950
-device control four 0014
-DEVICE CONTROL FOUR, SYMBOL FOR 2414
-device control one 0011
-DEVICE CONTROL ONE, SYMBOL FOR 2411
-device control string 0090
-device control three 0013
-DEVICE CONTROL THREE, SYMBOL FOR 2413
-device control two 0012
-DEVICE CONTROL TWO, SYMBOL FOR 2412
-DHARMA, WHEEL OF 2638
-Diacritic-vowel Combinations, Pinyin 01CD
-Diacritical Marks for Symbols, Combining 20D0
-Diacritical Marks, Combining 0300
-Diacritics for Greek 0342
-Diacritics for IPA 0346
-Diacritics, Double 0360
-Diacritics, Enclosing 20DD
-Diacritics, Overstruck 0334
-Diacritics, Spacing Clones of 02D8
-DIAERESIS 00A8
-DIAERESIS BELOW, COMBINING 0324
-DIAERESIS, COMBINING 0308
-diaeresis, spacing 00A8
-DIAGONAL ELLIPSIS, UP RIGHT 22F0
-dialytika 0308
-DIALYTIKA TONOS, COMBINING GREEK 0344
-DIAMETER SIGN 2300
-diameter symbol 2205
-DIAMOND OPERATOR 22C4
-DIAMOND, COMBINING ENCLOSING 20DF
-Diamonds 25C6
-diesis 2021
-difference between 223C
-DIFFERENCE BETWEEN 224F
-difference, backward 2207
-difference, forward 2206
-difference, symmetric 2238
-difference, symmetric 2296
-DIFFERENTIAL, PARTIAL 2202
-DIGIT SHAPES, NATIONAL 206E
-DIGIT SHAPES, NOMINAL 206F
-Digits for Persian and Urdu, Eastern Arabic-Indic 06F0
-Digits, Arabic-Indic 0660
-Digits, ASCII 0030
-Digits, Bengali 09E6
-Digits, Devanagari 0966
-Digits, Dingbat Circled 2776
-Digits, Ethiopic 1369
-Digits, Gujarati 0AE6
-Digits, Gurmukhi 0A66
-Digits, Kannada 0CE6
-Digits, Khmer 17E0
-Digits, Lao 0ED0
-Digits, Malayalam 0D66
-Digits, Mongolian 1810
-Digits, Myanmar 1040
-Digits, Oriya 0B66
-Digits, Subscript 2080
-Digits, Superscript 2070
-Digits, Tamil 0BE7
-Digits, Telugu 0C66
-Digits, Thai 0E50
-Digits, Tibetan 0F20
-Digraphs Matching Serbian Cyrillic Letters, Croatian 01C4
-Digraphs, Phonetic 02A3
-Digraphs, Yiddish 05F0
-DIMENSION ORIGIN 2331
-Dingbat Circled Digits 2776
-Dingbats 2700
-Dingbats Series 100, ITC Zapf 2700
-Dingbats, Arrow 2794
-Dingbats, Asterisk 2722
-Dingbats, Cross 2719
-Dingbats, Drop-Shadowed 274D
-Dingbats, Hazard 2620
-Dingbats, Heart 2763
-Dingbats, Miscellaneous 2600
-Dingbats, Music 2669
-Dingbats, Pencil 270E
-Dingbats, Pointing Index Finger 261A
-Dingbats, Quotation Mark 275B
-Dingbats, Scissors 2701
-Dingbats, Snowflake 2744
-Dingbats, Star 2726
-Dingbats, Vertical Bar 2758
-Dingbats, Warning 2620
-Dingbats, Weather 2600
-Dingbats, Zapf 2700
-DIRECT CURRENT SYMBOL FORM TWO 2393
-direct product 2299
-direct sum 2295
-Directional Formatting Controls 202A
-DIRECTIONAL FORMATTING, POP 202C
-DISCONTINUOUS UNDERLINE SYMBOL 2382
-discretionary hyphen 00AD
-disjunction 2228
-DITTO MARK 3003
-DIVIDES 2223
-DIVISION SIGN 00F7
-DIVISION SLASH 2215
-DIVISION SLASH, CIRCLED 2298
-DIVISION TIMES 22C7
-does not yield 22A3
-DOLLAR SIGN 0024
-DONG SIGN 20AB
-dot 002E
-DOT ABOVE 02D9
-DOT ABOVE, COMBINING 0307
-dot above, double 0308
-DOT ABOVE, LATIN CAPITAL LETTER I WITH 0130
-DOT BELOW, COMBINING 0323
-DOT MINUS 2238
-DOT OPERATOR 22C5
-DOT OPERATOR, CIRCLED 2299
-DOT OPERATOR, SQUARED 22A1
-DOT PLUS 2214
-dot, greek middle 00B7
-DOT, KATAKANA MIDDLE 30FB
-DOT, MIDDLE 00B7
-DOTLESS I, LATIN SMALL LETTER 0131
-DOTS ABOVE, COMBINING FOUR 20DC
-DOTS ABOVE, COMBINING THREE 20DB
-DOUBLE ACUTE ACCENT 02DD
-DOUBLE ACUTE ACCENT, COMBINING 030B
-DOUBLE ANGLE BRACKET, LEFT 300A
-DOUBLE ANGLE QUOTATION MARK, LEFT-POINTING 00AB
-DOUBLE ANGLE QUOTATION MARK, RIGHT-POINTING 00BB
-DOUBLE APOSTROPHE, MODIFIER LETTER 02EE
-DOUBLE ARCH BELOW, COMBINING INVERTED 032B
-double bar, latin letter pipe 01C2
-double comma quotation mark 201D
-double comma quotation mark, low 201E
-DOUBLE DAGGER 2021
-DOUBLE DANDA, DEVANAGARI 0965
-double derivative 0308
-Double Diacritics 0360
-double dot above 0308
-DOUBLE EXCLAMATION MARK 203C
-DOUBLE GRAVE ACCENT, COMBINING 030F
-DOUBLE HIGH-REVERSED-9 QUOTATION MARK 201F
-DOUBLE INTEGRAL 222C
-DOUBLE INTERSECTION 22D2
-DOUBLE INVERTED BREVE, COMBINING 0361
-DOUBLE LOW LINE 2017
-DOUBLE LOW LINE, COMBINING 0333
-DOUBLE LOW-9 QUOTATION MARK 201E
-double obelisk 2021
-DOUBLE OVERLINE, COMBINING 033F
-double pipe 01C1
-DOUBLE PRIME 2033
-DOUBLE PRIME QUOTATION MARK 301E
-DOUBLE PRIME QUOTATION MARK, LOW 301F
-DOUBLE PRIME QUOTATION MARK, REVERSED 301D
-DOUBLE PRIME, MODIFIER LETTER 02BA
-DOUBLE PRIME, REVERSED 2036
-DOUBLE QUOTATION MARK, LEFT 201C
-DOUBLE QUOTATION MARK, RIGHT 201D
-double reversed comma quotation mark 201F
-DOUBLE RIGHTWARDS ARROW BELOW, COMBINING 0362
-DOUBLE SUBSET 22D0
-DOUBLE SUPERSET 22D1
-DOUBLE TILDE LEFT HALF, COMBINING FE22
-DOUBLE TILDE, COMBINING 0360
-double turned comma quotation mark 201C
-double underline 0333
-double underscore 0333
-double underscore, spacing 2017
-DOUBLE UNION 22D3
-DOUBLE VERTICAL LINE 2016
-DOUBLE VERTICAL LINE ABOVE, COMBINING 030E
-DOUBLE VERTICAL LINE BELOW, COMBINING 0348
-DOUBLE WAVY OVERLINE FE4C
-double-barred pipe 01C2
-DOUBLE-STRUCK CAPITAL C 2102
-DOUBLE-STRUCK CAPITAL H 210D
-DOUBLE-STRUCK CAPITAL N 2115
-DOUBLE-STRUCK CAPITAL P 2119
-DOUBLE-STRUCK CAPITAL Q 211A
-DOUBLE-STRUCK CAPITAL R 211D
-DOUBLE-STRUCK CAPITAL Z 2124
-DOWN TACK 22A4
-DOWN TACK BELOW, COMBINING 031E
-down, page 21DF
-DRACHMA SIGN 20AF
-dram 0292
-drop 264F
-Duplicates from Big 5 FA0C
-E, LATIN CAPITAL LETTER OPEN 0190
-E, LATIN CAPITAL LETTER REVERSED 018E
-e, latin capital letter turned 018E
-E, LATIN SMALL LETTER CLOSED OPEN 029A
-E, LATIN SMALL LETTER CLOSED REVERSED OPEN 025E
-E, LATIN SMALL LETTER OPEN 025B
-E, LATIN SMALL LETTER REVERSED 0258
-E, LATIN SMALL LETTER REVERSED OPEN 025C
-E, LATIN SMALL LETTER TURNED 01DD
-E, SCRIPT CAPITAL 2130
-E, SCRIPT SMALL 212F
-EARTH 2641
-Eastern Arabic-Indic Digits for Persian and Urdu 06F0
-ecu 20A0
-EIGHTH NOTE 266A
-EIGHTH NOTES, BEAMED 266B
-Eighths, Fractions 215B
-EK ONKAR, GURMUKHI 0A74
-el salvadorian currency 20A1
-ELECTRIC ARROW 2301
-electro-magnetic force, emf 2130
-electrolysis 21AF
-Electrotechnical Symbols from IR 181 238D
-ELEMENT OF 2208
-ELEMENT OF, NOT AN 2209
-ELEMENT OF, SMALL 220A
-element, unique 2129
-ELLIPSIS, HORIZONTAL 2026
-ELLIPSIS, MIDLINE HORIZONTAL 22EF
-ELLIPSIS, UP RIGHT DIAGONAL 22F0
-ELLIPSIS, VERTICAL 22EE
-elliptic function, weierstrass 2118
-EM DASH 2014
-EM QUAD 2001
-EM SPACE 2003
-EMBEDDING, LEFT-TO-RIGHT 202A
-EMBEDDING, RIGHT-TO-LEFT 202B
-emf 2130
-EMPHASIS MARK, ARMENIAN 055B
-EMPHASIS SYMBOL 2383
-EMPTY SET 2205
-EN DASH 2013
-EN QUAD 2000
-EN SPACE 2002
-Enclosed Alphanumerics 2460
-Enclosed CJK Letters and Ideographs 3200
-ENCLOSING CIRCLE BACKSLASH, COMBINING 20E0
-ENCLOSING CIRCLE, COMBINING 20DD
-Enclosing Diacritics 20DD
-ENCLOSING DIAMOND, COMBINING 20DF
-ENCLOSING KEYCAP, COMBINING 20E3
-ENCLOSING SCREEN, COMBINING 20E2
-ENCLOSING SQUARE, COMBINING 20DE
-end 21F2
-end of guarded area 0097
-end of medium 0019
-end of medium, graphic for 237F
-END OF MEDIUM, SYMBOL FOR 2419
-END OF PROOF 220E
-end of selected area 0087
-end of text 0003
-END OF TEXT, SYMBOL FOR 2403
-end of transmission 0004
-end of transmission block 0017
-END OF TRANSMISSION BLOCK, SYMBOL FOR 2417
-end of transmission, graphic for 2301
-END OF TRANSMISSION, SYMBOL FOR 2404
-ENG, LATIN SMALL LETTER 014B
-enotikon, greek 203F
-enquiry 0005
-ENQUIRY, SYMBOL FOR 2405
-enter key 2324
-ENTER SYMBOL 2386
-ENVELOPE 2709
-epsilon, latin capital letter 0190
-epsilon, latin small letter 025B
-epsilon, latin small letter closed 029A
-epsilon, latin small letter closed reversed 025E
-epsilon, reversed straight 220D
-epsilon, straight 220A
-EQUAL TO ABOVE, COMBINING ALMOST 034C
-equal to by definition 225C
-EQUAL TO BY DEFINITION 225D
-EQUAL TO, ALL 224C
-EQUAL TO, ALMOST 2248
-EQUAL TO, APPROXIMATELY 2245
-equal to, approximately 2257
-EQUAL TO, ASYMPTOTICALLY 2243
-EQUAL TO, DELTA 225C
-EQUAL TO, GEOMETRICALLY 2251
-EQUAL TO, GREATER-THAN OR 2265
-EQUAL TO, LESS-THAN OR 2264
-EQUAL TO, NOT 2260
-EQUAL TO, QUESTIONED 225F
-EQUAL TO, RING 2257
-EQUAL TO, RING IN 2256
-EQUALS COLON 2255
-EQUALS SIGN 003D
-EQUALS SIGN BELOW, COMBINING 0347
-EQUALS SIGN, SUBSCRIPT 208C
-EQUALS SIGN, SUPERSCRIPT 207C
-EQUALS, CIRCLED 229C
-EQUALS, REVERSED TILDE 22CD
-EQUALS, STAR 225B
-equiangular 225C
-EQUIANGULAR TO 225A
-EQUIVALENT TO 224D
-EQUIVALENT TO, GEOMETRICALLY 224E
-EQUIVALENT TO, STRICTLY 2263
-Era Names, Japanese 337B
-ERASE TO THE LEFT 232B
-ERASE TO THE RIGHT 2326
-error 212F
-escape 001B
-escape, data link 0010
-ESCAPE, SYMBOL FOR 241B
-ESCAPE, SYMBOL FOR DATA LINK 2410
-escudo 0024
-ESH LOOP, LATIN LETTER REVERSED 01AA
-ESH, LATIN CAPITAL LETTER 01A9
-ESH, LATIN SMALL LETTER 0283
-ESH, LATIN SMALL LETTER SQUAT REVERSED 0285
-ESTIMATED SYMBOL 212E
-ESTIMATES 2259
-eszett 00DF
-ET, TIRONIAN SIGN 204A
-ETH, LATIN SMALL LETTER 00F0
-ethel 0153
-Ethiopic 1200
-ETHIOPIC COLON 1365
-ETHIOPIC COMMA 1363
-Ethiopic Digits 1369
-ETHIOPIC FULL STOP 1362
-ETHIOPIC QUESTION MARK 1367
-ETHIOPIC SEMICOLON 1364
-ETHIOPIC WORDSPACE 1361
-EULER CONSTANT 2107
-EURO SIGN 20AC
-European Latin 0100
-european paragraph sign 00A7
-european section sign 00B6
-EXCESS 2239
-EXCLAMATION MARK 0021
-EXCLAMATION MARK ORNAMENT, HEAVY 2762
-EXCLAMATION MARK, ARMENIAN 055C
-EXCLAMATION MARK, DOUBLE 203C
-EXCLAMATION MARK, INVERTED 00A1
-exclamation mark, latin letter 01C3
-EXCLAMATION MARK, QUESTION 2048
-EXCLAMATION QUESTION MARK 2049
-EXISTS, THERE 2203
-Extended Additional, Latin 1E00
-Extended Arabic 0671
-Extended Cyrillic 048C
-Extended for Minnan and Hakka, Chinese Bopomofo 31A0
-Extended Greek 1F00
-Extended-A, Latin 0100
-Extended-B, Latin 0180
-Extension A, CJK Unified Ideographs 3400
-Extensions for Sanskrit and Tibetan, Mongolian 1880
-Extensions for Vietnamese, Latin 1EA0
-Extensions, Cyrillic 0450
-Extensions, IPA 0250
-EZH REVERSED, LATIN SMALL LETTER 01B9
-EZH, LATIN CAPITAL LETTER 01B7
-EZH, LATIN SMALL LETTER 0292
-F WITH HOOK, LATIN SMALL LETTER 0192
-F, SCRIPT CAPITAL 2131
-F, TURNED CAPITAL 2132
-FACE, BLACK SMILING 263B
-FACE, POSTAL MARK 3020
-FACE, WHITE FROWNING 2639
-FACE, WHITE SMILING 263A
-factorial 0021
-FAHRENHEIT, DEGREE 2109
-feet 2032
-FEMALE SIGN 2640
-FEMININE ORDINAL INDICATOR 00AA
-Fifths, Fractions 2155
-FIGURE DASH 2012
-FIGURE SPACE 2007
-file separator 001C
-FILE SEPARATOR, SYMBOL FOR 241C
-Finger Dingbats, Pointing Index 261A
-FIRST QUARTER MOON 263D
-first transfinite cardinal (countable) 2135
-FISHEYE 25C9
-fist 261E
-FIVE POINTED STAR, ARABIC 066D
-FIVE, LATIN SMALL LETTER TONE 01BD
-FLAT SIGN, MUSIC 266D
-FLOOR, LEFT 230A
-FLORAL HEART BULLET, REVERSED ROTATED 2619
-florin currency symbol 0192
-folder 0192
-FOR ALL 2200
-FORCES 22A9
-Form and Chart Components 2500
-form feed 000C
-form feed 21A1
-FORM FEED, SYMBOL FOR 240C
-Format Control, Syriac 070F
-Format Controls, Mongolian 180B
-Formatting Characters 200C
-Formatting Characters 2028
-Formatting Controls, Bidirectional 202A
-FORMATTING, POP DIRECTIONAL 202C
-forward difference 2206
-FOUR DOTS ABOVE, COMBINING 20DC
-FOUR-PER-EM SPACE 2005
-fourier transform 2131
-fourth derivative 20DC
-FOURTH ROOT 221C
-fourth transfinite cardinal 2138
-Fourths, Fractions 00BC
-FRACTION NUMERATOR ONE 215F
-FRACTION ONE HALF, VULGAR 00BD
-FRACTION ONE QUARTER, VULGAR 00BC
-FRACTION SLASH 2044
-FRACTION THREE QUARTERS, VULGAR 00BE
-Fractions 2153
-FRANC SIGN, FRENCH 20A3
-FRICATIVE, LATIN LETTER PHARYNGEAL VOICED 0295
-FROWN 2322
-FROWNING FACE, WHITE 2639
-FULL BLOCK 2588
-FULL STOP 002E
-FULL STOP, ARABIC 06D4
-FULL STOP, ARMENIAN 0589
-FULL STOP, ETHIOPIC 1362
-full stop, georgian 0589
-FULL STOP, IDEOGRAPHIC 3002
-FULL STOP, MONGOLIAN 1803
-Fullwidth ASCII Variants FF01
-Fullwidth Forms, Halfwidth and FF00
-Fullwidth Symbol Variants FFE0
-function symbol 0192
-function, gamma 0393
-G, LATIN LETTER SMALL CAPITAL 0262
-G, LATIN SMALL LETTER SCRIPT 0261
-G, SCRIPT SMALL 210A
-gamma function 0393
-GAMMA, LATIN CAPITAL LETTER 0194
-GAMMA, LATIN SMALL LETTER 0263
-gamma, latin small letter baby 0264
-GAMMA, MODIFIER LETTER SMALL 02E0
-GB 2312 (Chinese), Based on 3100
-GEMINI 264A
-General Punctuation 2000
-General Scripts Area 0000
-GEOMETRIC PROPORTION 223A
-Geometric Shapes 25A0
-GEOMETRICALLY EQUAL TO 2251
-GEOMETRICALLY EQUIVALENT TO 224E
-Georgian 10A0
-Georgian Capital Letters 10A0
-georgian comma 00B7
-georgian full stop 0589
-GEORGIAN PARAGRAPH SEPARATOR 10FB
-Georgian Small Letters 10D0
-german mark 2133
-GETA MARK 3013
-GIMEL SYMBOL 2137
-glottal stop 02BC
-GLOTTAL STOP, LATIN LETTER 0294
-GLOTTAL STOP, LATIN LETTER INVERTED 0296
-glottal stop, latin letter reversed 0295
-GLOTTAL STOP, MODIFIER LETTER 02C0
-GLOTTAL STOP, MODIFIER LETTER REVERSED 02C1
-GLOTTAL STOP, MODIFIER LETTER SMALL REVERSED 02E4
-Golden Number Runes 16EE
-Graphic Pictures for Control Codes 2400
-Graphics for Control Codes 237B
-Graphics, Control Code 25F0
-GRAVE ACCENT 0060
-GRAVE ACCENT BELOW, COMBINING 0316
-GRAVE ACCENT, COMBINING 0300
-GRAVE ACCENT, COMBINING DOUBLE 030F
-GRAVE ACCENT, DEVANAGARI 0953
-GRAVE ACCENT, MODIFIER LETTER 02CB
-GRAVE ACCENT, MODIFIER LETTER LOW 02CE
-grave accent, swedish 02DF
-GRAVE TONE MARK, COMBINING 0340
-grave, spacing 0060
-GREATER-THAN OR EQUAL TO 2265
-GREATER-THAN SIGN 003E
-GREATER-THAN, MUCH 226B
-GREATER-THAN, VERY MUCH 22D9
-Greek and Coptic 0370
-Greek Capital Letters 0391
-greek currency 20AF
-GREEK DIALYTIKA TONOS, COMBINING 0344
-greek enotikon 203F
-GREEK KORONIS, COMBINING 0343
-greek middle dot 00B7
-greek non-spacing iota below 0345
-GREEK PERISPOMENI, COMBINING 0342
-GREEK QUESTION MARK 037E
-GREEK SMALL LETTER IOTA, TURNED 2129
-Greek Small Letters 03B1
-Greek Symbols 03D0
-GREEK YPOGEGRAMMENI, COMBINING 0345
-Greek, Diacritics for 0342
-Greek, Extended 1F00
-group lock 21F0
-group separator 001D
-GROUP SEPARATOR, SYMBOL FOR 241D
-guarded area, end of 0097
-guarded area, start of 0096
-guillemet, left pointing 00AB
-guillemet, left pointing single 2039
-guillemet, right pointing 00BB
-guillemet, right pointing single 203A
-Gujarati 0A80
-Gujarati Digits 0AE6
-Gujarati Letters 0A85
-Gurmukhi 0A00
-Gurmukhi Digits 0A66
-Gurmukhi Letters 0A05
-H, BLACK-LETTER CAPITAL 210C
-H, DOUBLE-STRUCK CAPITAL 210D
-H, LATIN LETTER SMALL CAPITAL 029C
-H, LATIN SMALL LETTER TURNED 0265
-H, MODIFIER LETTER SMALL 02B0
-H, SCRIPT CAPITAL 210B
-hacek, combining 030C
-hacek, modifier letter 02C7
-HAIR SPACE 200A
-Hakka, Chinese Bopomofo Extended for Minnan and 31A0
-halant, bengali 09CD
-halant, devanagari 094D
-HALF FILL SPACE, IDEOGRAPHIC 303F
-HALF INTEGRAL, TOP 2320
-Half Marks, Combining FE20
-HALF RING BELOW, COMBINING LEFT 031C
-HALF RING BELOW, COMBINING RIGHT 0339
-HALF RING, MODIFIER LETTER CENTRED LEFT 02D3
-HALF RING, MODIFIER LETTER LEFT 02BF
-HALF TRIANGULAR COLON, MODIFIER LETTER 02D1
-HALF, COMBINING DOUBLE TILDE LEFT FE22
-HALF, COMBINING LIGATURE LEFT FE20
-HALF, VULGAR FRACTION ONE 00BD
-Halfwidth and Fullwidth Forms FF00
-Halfwidth Japanese Katakana Variants FF61
-Halfwidth Korean Hangul Variants FFA0
-hamiltonian function 210B
-HAMMER AND SICKLE 262D
-Han Ideographs 4E00
-Hand Symbols, Pointing 261A
-HAND, VICTORY 270C
-HAND, WRITING 270D
-HANGUL CHOSEONG FILLER 115F
-Hangul Compatibility Jamo, Korean 3130
-Hangul Elements, Circled Korean 3260
-Hangul Elements, Parenthesized Korean 3200
-HANGUL FILLER 3164
-Hangul Jamo Combining Alphabet, Korean 1100
-HANGUL JUNGSEONG FILLER 1160
-Hangul Syllables Area, Korean AC00
-Hangul Syllables, Circled Korean 326E
-Hangul Syllables, Parenthesized Korean 320E
-Hangul Variants, Halfwidth Korean FFA0
-Hangul, Based on KS C 5601 (Korean) 3130
-Hangzhou-style Numerals 3021
-HARPOON ABOVE, COMBINING LEFT 20D0
-hash 0023
-hat 0302
-hat 2229
-have a nice day! 263A
-Hazard Dingbats 2620
-heading, start of 0001
-HEADING, SYMBOL FOR START OF 2401
-Heart Ornaments 2763
-HEAVY BALLOT X 2718
-HEAVY CHECK MARK 2714
-HEAVY MULTIPLICATION X 2716
-Hebrew 0590
-Hebrew Cantillation Marks 0591
-hebrew currency 20AA
-Hebrew Letters 05D0
-Hebrew Points 05B0
-Hebrew Presentation Forms FB1D
-HELM SYMBOL 2388
-HERMITIAN CONJUGATE MATRIX 22B9
-High Surrogates D800
-HIGH-REVERSED-9 QUOTATION MARK, DOUBLE 201F
-HIGH-REVERSED-9 QUOTATION MARK, SINGLE 201B
-higher rank than 227B
-hilbert space 210C
-HIRAGANA ITERATION MARK 309D
-Hiragana, Based on JIS X 0208 (Japanese) 3040
-histogram marker 25AE
-Historic Letters, Cyrillic 0460
-home 21B8
-home 21F1
-HOMOTHETIC 223B
-HOMOTHETIC ABOVE, COMBINING 034B
-HOOK ABOVE, COMBINING 0309
-HOOK BELOW, COMBINING PALATALIZED 0321
-HOOK BELOW, COMBINING RETROFLEX 0322
-HOOK, MODIFIER LETTER RHOTIC 02DE
-hook, nasal 0328
-HORIZONTAL BAR 2015
-HORIZONTAL ELLIPSIS 2026
-HORIZONTAL ELLIPSIS, MIDLINE 22EF
-horizontal tabulation 0009
-HORIZONTAL TABULATION, SYMBOL FOR 2409
-HORN, COMBINING 031B
-HORN, LATIN SMALL LETTER RAMS 0264
-HOT SPRINGS 2668
-HOURGLASS 231B
-Hours, Telegraph Symbols for 3358
-HOUSE 2302
-HV, LATIN SMALL LETTER 0195
-HWAIR, LATIN CAPITAL LETTER 01F6
-HYPHEN 2010
-HYPHEN BULLET 2043
-hyphen or minus sign 002D
-HYPHEN, ARMENIAN 058A
-hyphen, discretionary 00AD
-HYPHEN, NON-BREAKING 2011
-HYPHEN, SOFT 00AD
-HYPHEN-MINUS 002D
-HYPHENATION POINT 2027
-hyphus 002D
-HYSTERESIS SYMBOL 238E
-I WITH DOT ABOVE, LATIN CAPITAL LETTER 0130
-I, BLACK-LETTER CAPITAL 2111
-I, LATIN LETTER SMALL CAPITAL 026A
-I, LATIN SMALL LETTER DOTLESS 0131
-I, SCRIPT CAPITAL 2110
-IBM CJK Compatibility Ideographs FA0E
-IDENTICAL TO 2261
-Ideographic Annotation, Japanese Kanbun 3190
-IDEOGRAPHIC CLOSING MARK 3006
-IDEOGRAPHIC COMMA 3001
-Ideographic Description Characters 2FF0
-IDEOGRAPHIC FULL STOP 3002
-IDEOGRAPHIC HALF FILL SPACE 303F
-IDEOGRAPHIC ITERATION MARK 3005
-IDEOGRAPHIC NUMBER ZERO 3007
-IDEOGRAPHIC SPACE 3000
-Ideographic Tone Marks 302A
-Ideographs Area, CJK 3400
-Ideographs Extension A, CJK Unified 3400
-Ideographs, Circled 3280
-Ideographs, CJK Compatibility F900
-Ideographs, CJK Unified 4E00
-Ideographs, Enclosed CJK Letters and 3200
-Ideographs, Han 4E00
-Ideographs, IBM CJK Compatibility FA0E
-Ideographs, Parenthesized 3220
-IDLE, SYMBOL FOR SYNCHRONOUS 2416
-idle, synchronous 0016
-IJ, LATIN SMALL LIGATURE 0133
-IMAGE OF 22B7
-IMAGE OF, SQUARE 228F
-imaginary part 2111
-implies 22A2
-inches 2033
-included in set 2282
-includes in set 2283
-incorporated, japanese 337F
-INCREMENT 2206
-index 0084
-Index Finger Dingbats, Pointing 261A
-indian currency 20A8
-inferior order to, of 2134
-INFINITY 221E
-INFORMATION SOURCE 2139
-INHIBIT ARABIC FORM SHAPING 206C
-INHIBIT SYMMETRIC SWAPPING 206A
-INSERTION POINT, CARET 2041
-INSERTION SYMBOL 2380
-integers, the set of 2124
-INTEGRAL 222B
-INTEGRAL, CLOCKWISE 2231
-INTEGRAL, CLOCKWISE CONTOUR 2232
-INTEGRAL, CONTOUR 222E
-INTEGRAL, DOUBLE 222C
-integral, riemann 211B
-INTEGRAL, SURFACE 222F
-INTEGRAL, TOP HALF 2320
-INTEGRAL, TRIPLE 222D
-INTEGRAL, VOLUME 2230
-INTERCALATE 22BA
-Interlinear Annotation FFF9
-International Phonetic Alphabet 0250
-INTERROBANG 203D
-INTERSECTION 2229
-INTERSECTION, DOUBLE 22D2
-INTERSECTION, N-ARY 22C2
-intersection, proper 22D4
-introducer, control sequence 009B
-introducer, single character 009A
-Inverse Numbers, Circled 2776
-INVERTED BREVE BELOW, COMBINING 032F
-INVERTED BREVE, COMBINING 0311
-INVERTED BREVE, COMBINING DOUBLE 0361
-INVERTED BRIDGE BELOW, COMBINING 033A
-INVERTED DOUBLE ARCH BELOW, COMBINING 032B
-INVERTED EXCLAMATION MARK 00A1
-INVERTED GLOTTAL STOP, LATIN LETTER 0296
-INVERTED LAZY S 223E
-INVERTED OHM SIGN 2127
-INVERTED QUESTION MARK 00BF
-INVERTED R, LATIN LETTER SMALL CAPITAL 0281
-INVERTED R, MODIFIER LETTER SMALL CAPITAL 02B6
-iota below, greek non-spacing 0345
-IOTA, LATIN CAPITAL LETTER 0196
-IOTA, LATIN SMALL LETTER 0269
-IOTA, TURNED GREEK SMALL LETTER 2129
-IPA Extensions 0250
-IPA, Diacritics for 0346
-IR 181, Electrotechnical Symbols from 238D
-iran, symbol of 262B
-irish punt 00A3
-ISCII 1988 (Devanagari), Based on 0901
-ISO 8859-1 (Latin-1), Based on 00A0
-ISO 8859-2, -3, -4, -9 (European Latin), Based on 0100
-ISO 8859-5 (Cyrillic), Based on 0400
-ISO 8859-6 (Arabic), Based on 0600
-ISO 8859-7 (Greek), Based on 0370
-ISO 8859-8 (Hebrew), Based on 05D0
-ISO 9995-7, Keyboard Symbols from 2380
-ISO 9995-7, Keyboard Symbols from 2396
-israeli currency 20AA
-italian currency 20A4
-ITC Zapf Dingbats Series 100 2700
-ITERATION MARK, HIRAGANA 309D
-ITERATION MARK, IDEOGRAPHIC 3005
-ITERATION MARK, KATAKANA 30FD
-ivy leaf 2767
-J, MODIFIER LETTER SMALL 02B2
-jack 2749
-Jamo Combining Alphabet, Korean Hangul 1100
-Jamo, Korean Hangul Compatibility 3130
-Japanese Era Names 337B
-Japanese Hiragana 3040
-japanese incorporated 337F
-JAPANESE INDUSTRIAL STANDARD SYMBOL 3004
-Japanese Kanbun (Ideographic Annotation) 3190
-Japanese Katakana 30A0
-Japanese Katakana Variants, Halfwidth FF61
-Japanese Katakana Words, Squared 3300
-Japanese Katakana, Circled 32D0
-japanese kome 203B
-JERUSALEM, CROSS OF 2629
-jis composition circle 20DD
-JIS X 0208, Based on 3040
-JOINER, ZERO WIDTH 200D
-jot, apl 2218
-JUPITER 2643
-justification, character tabulation with 0089
-K, LATIN SMALL LETTER TURNED 029E
-kabusiki-gaisya 337F
-Kana Repeat Marks 3031
-Kanbun (Ideographic Annotation), Japanese 3190
-Kangxi Radicals 2F00
-Kannada 0C80
-Kannada Digits 0CE6
-Kannada Letters 0C85
-KATAKANA ITERATION MARK 30FD
-KATAKANA MIDDLE DOT 30FB
-Katakana Variants, Halfwidth Japanese FF61
-Katakana Words, Squared Japanese 3300
-Katakana, Circled Japanese 32D0
-Katakana, Japanese 30A0
-KATAKANA-HIRAGANA PROLONGED SOUND MARK 30FC
-KATAKANA-HIRAGANA VOICED SOUND MARK 309B
-KATAKANA-HIRAGANA VOICED SOUND MARK, COMBINING 3099
-KELVIN SIGN 212A
-ket 232A
-KEY SYMBOL, ALTERNATIVE 2387
-KEY SYMBOL, DECIMAL SEPARATOR 2396
-key, clear 2327
-key, command 2318
-key, delete to the left 232B
-key, delete to the right 2326
-key, enter 2324
-KEY, OPTION 2325
-KEYBOARD 2328
-Keyboard Symbols from ISO 9995-7 2380
-Keyboard Symbols from ISO 9995-7 2396
-KEYCAP, COMBINING ENCLOSING 20E3
-Khmer 1780
-Khmer Digits 17E0
-KIP SIGN 20AD
-kome, japanese 203B
-Koranic Annotation Signs 06D6
-korean currency 20A9
-Korean Hangul Compatibility Jamo 3130
-Korean Hangul Elements, Circled 3260
-Korean Hangul Elements, Parenthesized 3200
-Korean Hangul Jamo Combining Alphabet 1100
-Korean Hangul Syllables Area AC00
-Korean Hangul Syllables, Circled 326E
-Korean Hangul Syllables, Parenthesized 320E
-Korean Hangul Variants, Halfwidth FFA0
-KOREAN STANDARD SYMBOL 327F
-KORONIS, COMBINING GREEK 0343
-KRA, LATIN SMALL LETTER 0138
-KS C 5601 (Korean Hangul), Based on 3130
-L B BAR SYMBOL 2114
-L WITH MIDDLE DOT, LATIN SMALL LETTER 0140
-L WITH MIDDLE TILDE, LATIN SMALL LETTER 026B
-L, LATIN LETTER SMALL CAPITAL 029F
-L, MODIFIER LETTER SMALL 02E1
-L, SCRIPT CAPITAL 2112
-L, SCRIPT SMALL 2113
-lambda bar, latin letter 019B
-Lao 0E80
-Lao Digits 0ED0
-Lao Letters 0E81
-laotian currency 20AD
-laplace operator 2206
-laplace operator 2207
-laplace symbol 2112
-LAST QUARTER MOON 263E
-LATERAL CLICK, LATIN LETTER 01C1
-Latin Abbreviations, Squared 3371
-Latin Capital Letters 0041
-LATIN CROSS 271D
-Latin Extended Additional 1E00
-Latin Extended-A 0100
-Latin Extended-B 0180
-Latin Extensions for Vietnamese 1EA0
-Latin Letters, Circled 24B6
-Latin Letters, Parenthesized 249C
-Latin Letters, Phonetic Modifiers Derived from 02B0
-Latin Ligatures FB00
-Latin Small Letters 0061
-Latin, Based on ISO 8859-2, -3, -4, -9 (European) 0100
-Latin, C0 Controls and Basic 0000
-Latin, European 0100
-Latin-1 Supplement, C1 Controls and 0080
-Latin-1, ISO 8859-1 aka 00A0
-lazy s 223D
-LAZY S, INVERTED 223E
-LEADER, ONE DOT 2024
-leader, three dot 2026
-LEADER, TWO DOT 2025
-leaf, aldus 2766
-leaf, ivy 2767
-LEFT ANGLE ABOVE, COMBINING 031A
-LEFT ANGLE BELOW, COMBINING 0349
-LEFT ANGLE BRACKET 3008
-LEFT ARROW ABOVE, COMBINING 20D6
-LEFT BLACK LENTICULAR BRACKET 3010
-LEFT CEILING 2308
-LEFT CORNER BRACKET 300C
-LEFT CORNER, TOP 231C
-LEFT CROP, TOP 230F
-LEFT CURLY BRACKET 007B
-LEFT DOUBLE ANGLE BRACKET 300A
-LEFT DOUBLE QUOTATION MARK 201C
-LEFT FLOOR 230A
-LEFT HALF RING BELOW, COMBINING 031C
-LEFT HALF RING, MODIFIER LETTER 02BF
-LEFT HALF RING, MODIFIER LETTER CENTRED 02D3
-LEFT HALF, COMBINING DOUBLE TILDE FE22
-LEFT HALF, COMBINING LIGATURE FE20
-LEFT HARPOON ABOVE, COMBINING 20D0
-left key, delete to the 232B
-LEFT PARENTHESIS 0028
-LEFT PARENTHESIS, ORNATE FD3E
-LEFT PARENTHESIS, SUBSCRIPT 208D
-LEFT PARENTHESIS, SUPERSCRIPT 207D
-left pointing guillemet 00AB
-LEFT POINTING INDEX, BLACK 261A
-left pointing single guillemet 2039
-LEFT RIGHT ARROW ABOVE, COMBINING 20E1
-LEFT RIGHT ARROW BELOW, COMBINING 034D
-LEFT SEMIDIRECT PRODUCT 22CB
-LEFT SINGLE QUOTATION MARK 2018
-LEFT SQUARE BRACKET 005B
-LEFT SQUARE BRACKET WITH QUILL 2045
-LEFT TACK 22A3
-LEFT TACK BELOW, COMBINING 0318
-LEFT TORTOISE SHELL BRACKET 3014
-LEFT WHITE CORNER BRACKET 300E
-LEFT WHITE LENTICULAR BRACKET 3016
-LEFT WHITE SQUARE BRACKET 301A
-LEFT WHITE TORTOISE SHELL BRACKET 3018
-LEFT-POINTING ANGLE BRACKET 2329
-LEFT-POINTING ANGLE QUOTATION MARK, SINGLE 2039
-LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 00AB
-LEFT-TO-RIGHT EMBEDDING 202A
-LEFT-TO-RIGHT MARK 200E
-LEFT-TO-RIGHT OVERRIDE 202D
-leftward tab 21E4
-LEFTWARDS BULLET, BLACK 204C
-LENTICULAR BRACKET, LEFT BLACK 3010
-LENTICULAR BRACKET, LEFT WHITE 3016
-LEO 264C
-LESS-THAN OR EQUAL TO 2264
-LESS-THAN SIGN 003C
-LESS-THAN, MUCH 226A
-LESS-THAN, VERY MUCH 22D8
-Letterlike Symbols 2100
-level 2 lock 21EB
-level 3 lock 21EF
-level 3 select 21EE
-LEZH, LATIN SMALL LETTER 026E
-lf 000A
-LIBRA 264E
-ligature ae, latin small 00E6
-LIGATURE IJ, LATIN SMALL 0133
-LIGATURE LEFT HALF, COMBINING FE20
-LIGATURE OE, LATIN SMALL 0153
-Ligatures, Armenian FB13
-Ligatures, Latin FB00
-LIGHTNING 2607
-LIMIT, APPROACHES THE 2250
-LINE ABOVE, COMBINING DOUBLE VERTICAL 030E
-LINE ABOVE, COMBINING VERTICAL 030D
-LINE BELOW, COMBINING DOUBLE VERTICAL 0348
-LINE BELOW, COMBINING VERTICAL 0329
-line down, partial 008B
-line feed 000A
-line feed 21B4
-line feed, reverse 008D
-LINE FEED, SYMBOL FOR 240A
-line marker 2319
-LINE OVERLAY, COMBINING LONG VERTICAL 20D2
-LINE OVERLAY, COMBINING SHORT VERTICAL 20D3
-LINE SEPARATOR 2028
-LINE SYMBOL, CENTRE 2104
-line tabulation set 008A
-line up, partial 008C
-LINE WITH MIDDLE DOT, VERTICAL 237F
-line, beginning of 2310
-LINE, CENTRELINE LOW FE4E
-LINE, COMBINING DOUBLE LOW 0333
-LINE, COMBINING LOW 0332
-LINE, DASHED LOW FE4D
-LINE, DOUBLE LOW 2017
-LINE, DOUBLE VERTICAL 2016
-LINE, LOW 005F
-LINE, MODIFIER LETTER LOW VERTICAL 02CC
-LINE, MODIFIER LETTER VERTICAL 02C8
-line, new 21B5
-line, next 0085
-LINE, VERTICAL 007C
-LINE, WAVY 2307
-LINE, WAVY LOW FE4F
-LIRA SIGN 20A4
-liter 2113
-Livonian, Additions for 022A
-LOCATION SIGN, TELEPHONE 2706
-lock, caps 21EA
-lock, caps 21EC
-lock, group 21F0
-lock, level 2 21EB
-lock, level 3 21EF
-lock, numerics 21ED
-LOGICAL AND 2227
-LOGICAL AND, CURLY 22CF
-LOGICAL AND, N-ARY 22C0
-LOGICAL OR 2228
-LOGICAL OR, CURLY 22CE
-LOGICAL OR, N-ARY 22C1
-long 0304
-long cross 2020
-long dash 2015
-LONG S, LATIN SMALL LETTER 017F
-long slash overlay 0338
-LONG SOLIDUS OVERLAY, COMBINING 0338
-LONG STROKE OVERLAY, COMBINING 0336
-LONG VERTICAL LINE OVERLAY, COMBINING 20D2
-LORRAINE, CROSS OF 2628
-LOW ACUTE ACCENT, MODIFIER LETTER 02CF
-low double comma quotation mark 201E
-LOW DOUBLE PRIME QUOTATION MARK 301F
-LOW GRAVE ACCENT, MODIFIER LETTER 02CE
-LOW LINE 005F
-LOW LINE, CENTRELINE FE4E
-LOW LINE, COMBINING 0332
-LOW LINE, COMBINING DOUBLE 0333
-LOW LINE, DASHED FE4D
-LOW LINE, DOUBLE 2017
-LOW LINE, WAVY FE4F
-LOW MACRON, MODIFIER LETTER 02CD
-low single comma quotation mark 201A
-Low Surrogates DC00
-LOW VERTICAL LINE, MODIFIER LETTER 02CC
-LOW-9 QUOTATION MARK, DOUBLE 201E
-LOW-9 QUOTATION MARK, SINGLE 201A
-lower rank than 227A
-LOZENGE 25CA
-LOZENGE, SQUARE 2311
-lre 202A
-lrm 200E
-lro 202D
-M, LATIN CAPITAL LETTER TURNED 019C
-M, LATIN SMALL LETTER TURNED 026F
-M, SCRIPT CAPITAL 2133
-m-matrix 2133
-MACRON 00AF
-MACRON BELOW, COMBINING 0331
-MACRON, COMBINING 0304
-MACRON, MODIFIER LETTER 02C9
-MACRON, MODIFIER LETTER LOW 02CD
-macron, spacing 00AF
-Malayalam 0D00
-Malayalam Digits 0D66
-Malayalam Letters 0D05
-MALE SIGN 2642
-MALTESE CROSS 2720
-Manchu Letters, Mongolian 1873
-mark, german 2133
-marker, histogram 25AE
-mars 2642
-MASCULINE ORDINAL INDICATOR 00BA
-Mathematical Operators 2200
-MATRIX, HERMITIAN CONJUGATE 22B9
-MEASURED ANGLE 2221
-MEASURED BY 225E
-medium, end of 0019
-MEDIUM, SYMBOL FOR END OF 2419
-MEMBER, CONTAINS AS 220B
-MEMBER, SMALL CONTAINS AS 220D
-MERCURY 263F
-message waiting 0095
-message, privacy 009E
-mho 2127
-MICRO SIGN 00B5
-mid space 2005
-MIDDLE DOT 00B7
-middle dot, greek 00B7
-MIDDLE DOT, KATAKANA 30FB
-MIDDLE DOT, LATIN SMALL LETTER L WITH 0140
-MIDDLE DOT, VERTICAL LINE WITH 237F
-MIDDLE TILDE, LATIN CAPITAL LETTER O WITH 019F
-MIDDLE TILDE, LATIN SMALL LETTER L WITH 026B
-MIDLINE HORIZONTAL ELLIPSIS 22EF
-midpoint 00B7
-MILL SIGN 20A5
-MILLE SIGN, PER 2030
-milreis 0024
-minim 264F
-minim (alternate glyph) 264D
-Minnan and Hakka, Chinese Bopomofo Extended for 31A0
-MINUS SIGN 2212
-MINUS SIGN BELOW, COMBINING 0320
-minus sign, hyphen or 002D
-MINUS SIGN, MODIFIER LETTER 02D7
-MINUS TILDE 2242
-MINUS, CIRCLED 2296
-MINUS, DOT 2238
-MINUS, SET 2216
-MINUS, SQUARED 229F
-MINUS, SUBSCRIPT 208B
-MINUS, SUPERSCRIPT 207B
-MINUS-OR-PLUS SIGN 2213
-minutes 2032
-Miscellaneous Symbols 2600
-Miscellaneous Technical 2300
-MODELS 22A7
-Modifier Letters, Spacing 02B0
-Mongolian 1800
-MONGOLIAN COLON 1804
-MONGOLIAN COMMA 1802
-mongolian currency 20AE
-Mongolian Digits 1810
-Mongolian Extensions for Sanskrit and Tibetan 1880
-Mongolian Format Controls 180B
-MONGOLIAN FULL STOP 1803
-Mongolian Manchu Letters 1873
-Mongolian Sibe Letters 185D
-Mongolian Todo Letters 1843
-MONOSTABLE SYMBOL 238D
-Months, Enclosed CJK Letters and 3200
-Months, Telegraph Symbols for 32C0
-MOON, FIRST QUARTER 263D
-MOON, LAST QUARTER 263E
-most positive 223E
-MUCH GREATER-THAN 226B
-MUCH GREATER-THAN, VERY 22D9
-MUCH LESS-THAN 226A
-MUCH LESS-THAN, VERY 22D8
-MULTIMAP 22B8
-MULTIPLICATION SIGN 00D7
-MULTIPLICATION X 2715
-MULTIPLICATION X, HEAVY 2716
-MULTIPLICATION, MULTISET 228D
-MULTISET 228C
-MULTISET MULTIPLICATION 228D
-MULTISET UNION 228E
-MUSIC FLAT SIGN 266D
-MUSIC NATURAL SIGN 266E
-MUSIC SHARP SIGN 266F
-Musical Symbols 2669
-mutton 2003
-mutton quad 2001
-Myanmar 1000
-Myanmar Digits 1040
-N, DOUBLE-STRUCK CAPITAL 2115
-N, LATIN LETTER SMALL CAPITAL 0274
-N-ARY COPRODUCT 2210
-N-ARY INTERSECTION 22C2
-N-ARY LOGICAL AND 22C0
-N-ARY LOGICAL OR 22C1
-N-ARY PRODUCT 220F
-N-ARY SUMMATION 2211
-N-ARY UNION 22C3
-NABLA 2207
-NAIRA SIGN 20A6
-NAND 22BC
-nang 0323
-NARROW NO-BREAK SPACE 202F
-nasal hook 0328
-NATIONAL DIGIT SHAPES 206E
-natural number 2115
-NATURAL SIGN, MUSIC 266E
-negation 20D3
-negative acknowledge 0015
-negative acknowledge, graphic for 237B
-NEGATIVE ACKNOWLEDGE, SYMBOL FOR 2415
-NEPTUNE 2646
-new line 21B5
-NEW SHEQEL SIGN 20AA
-NEWLINE, SYMBOL FOR 2424
-next line 0085
-NEXT PAGE 2398
-NIB, BLACK 2712
-nigerian currency 20A6
-no break here 0083
-no break space, graphic for 237D
-NO-BREAK SPACE 00A0
-NO-BREAK SPACE, NARROW 202F
-NO-BREAK SPACE, ZERO WIDTH FEFF
-NODE, ASCENDING 260A
-NODE, DESCENDING 260B
-NOMINAL DIGIT SHAPES 206F
-NON-BREAKING HYPHEN 2011
-non-breaking space 00A0
-NON-JOINER, ZERO WIDTH 200C
-non-theorem 22A3
-NOR 22BD
-NORMAL SUBGROUP OF 22B2
-NORMAL SUBGROUP, CONTAINS AS 22B3
-not 223C
-Not a Character FFFE
-Not a Character FFFF
-NOT AN ELEMENT OF 2209
-NOT CHECK MARK 237B
-NOT EQUAL TO 2260
-NOT SIGN 00AC
-NOT SIGN, REVERSED 2310
-NOT SIGN, TURNED 2319
-NOT TILDE ABOVE, COMBINING 034A
-not yield, does 22A3
-NOTE, EIGHTH 266A
-NOTE, QUARTER 2669
-NOTES, BEAMED EIGHTH 266B
-NOTES, BEAMED SIXTEENTH 266C
-null 0000
-null set 2205
-NULL, SYMBOL FOR 2400
-Number Forms 2150
-Number Runes, Golden 16EE
-NUMBER SIGN 0023
-number symbol, real 210A
-NUMBER ZERO, IDEOGRAPHIC 3007
-number, natural 2115
-Numbers Period 2488
-Numbers, Circled 2460
-Numbers, Circled Inverse 2776
-Numbers, Parenthesized 2474
-numbers, the set of complex 2102
-numbers, the set of rational 211A
-numbers, the set of real 211D
-Numerals, Hangzhou-style 3021
-Numerals, Roman 2160
-NUMERATOR ONE, FRACTION 215F
-numerics lock 21ED
-NUMERO SIGN 2116
-nut 2002
-o bar 019F
-o bar 0275
-o e, latin small letter 0153
-O WITH MIDDLE TILDE, LATIN CAPITAL LETTER 019F
-o, latin capital letter barred 019F
-O, LATIN CAPITAL LETTER OPEN 0186
-O, LATIN SMALL LETTER BARRED 0275
-O, LATIN SMALL LETTER OPEN 0254
-O, SCRIPT SMALL 2134
-obelisk 2020
-obelisk, double 2021
-OBJECT REPLACEMENT CHARACTER FFFC
-OCR, Optical Character Recognition 2440
-octothorpe 0023
-OE, LATIN LETTER SMALL CAPITAL 0276
-OE, LATIN SMALL LIGATURE 0153
-Ogham 1680
-OGHAM SPACE MARK 1680
-OGONEK 02DB
-OGONEK, COMBINING 0328
-OHM SIGN 2126
-OHM SIGN, INVERTED 2127
-OI, LATIN SMALL LETTER 01A3
-OM, DEVANAGARI 0950
-OMEGA, LATIN SMALL LETTER CLOSED 0277
-ONE DOT LEADER 2024
-ONE HALF, VULGAR FRACTION 00BD
-ONE QUARTER, VULGAR FRACTION 00BC
-ONE, FRACTION NUMERATOR 215F
-ONE, SUPERSCRIPT 00B9
-OPEN BOX 2423
-OPEN BOX, SHOULDERED 237D
-OPEN E, LATIN CAPITAL LETTER 0190
-OPEN E, LATIN SMALL LETTER 025B
-OPEN E, LATIN SMALL LETTER CLOSED 029A
-OPEN E, LATIN SMALL LETTER CLOSED REVERSED 025E
-OPEN E, LATIN SMALL LETTER REVERSED 025C
-OPEN O, LATIN CAPITAL LETTER 0186
-OPEN O, LATIN SMALL LETTER 0254
-opening brace 007B
-opening curly bracket 007B
-opening parenthesis 0028
-opening square bracket 005B
-operating system command 009D
-OPERATOR, ASTERISK 2217
-OPERATOR, BULLET 2219
-OPERATOR, CIRCLED ASTERISK 229B
-OPERATOR, CIRCLED DOT 2299
-OPERATOR, CIRCLED RING 229A
-OPERATOR, DIAMOND 22C4
-OPERATOR, DOT 22C5
-OPERATOR, RING 2218
-OPERATOR, SQUARED DOT 22A1
-OPERATOR, STAR 22C6
-OPERATOR, TILDE 223C
-Operators, Mathematical 2200
-OPPOSITION 260D
-Optical Character Recognition (OCR) 2440
-OPTION KEY 2325
-OR, CURLY LOGICAL 22CE
-OR, LOGICAL 2228
-OR, N-ARY LOGICAL 22C1
-order 2134
-ORDINAL INDICATOR, FEMININE 00AA
-ORDINAL INDICATOR, MASCULINE 00BA
-ORIGIN, DIMENSION 2331
-ORIGINAL OF 22B6
-ORIGINAL OF, SQUARE 2290
-Oriya 0B00
-Oriya Digits 0B66
-Oriya Letters 0B05
-Ornaments, Heart 2763
-Ornaments, Punctuation 275B
-ORNATE LEFT PARENTHESIS FD3E
-ORTHODOX CROSS 2626
-orthogonal to 22A5
-OU, LATIN SMALL LETTER 0223
-OUNCE SIGN 2125
-overbar, apl 00AF
-OVERLAY, COMBINING CLOCKWISE RING 20D9
-OVERLAY, COMBINING LONG SOLIDUS 0338
-OVERLAY, COMBINING LONG STROKE 0336
-OVERLAY, COMBINING LONG VERTICAL LINE 20D2
-OVERLAY, COMBINING RING 20D8
-OVERLAY, COMBINING SHORT SOLIDUS 0337
-OVERLAY, COMBINING SHORT STROKE 0335
-OVERLAY, COMBINING SHORT VERTICAL LINE 20D3
-OVERLAY, COMBINING TILDE 0334
-overlay, long slash 0338
-overlay, short slash 0337
-overline 00AF
-OVERLINE 203E
-OVERLINE, CENTRELINE FE4A
-OVERLINE, COMBINING 0305
-OVERLINE, COMBINING DOUBLE 033F
-OVERLINE, DASHED FE49
-OVERLINE, DOUBLE WAVY FE4C
-OVERLINE, WAVY FE4B
-OVERRIDE, LEFT-TO-RIGHT 202D
-OVERRIDE, RIGHT-TO-LEFT 202E
-overscore 0305
-overscore, spacing 203E
-Overscores and Underscores FE49
-Overstruck Diacritics 0334
-oxia 0301
-P, DOUBLE-STRUCK CAPITAL 2119
-P, SCRIPT CAPITAL 2118
-page down 21DF
-page up 21DE
-PAGE, NEXT 2398
-PAGE, PREVIOUS 2397
-PALATALIZED HOOK BELOW, COMBINING 0321
-PARAGRAPH SEPARATOR 2029
-PARAGRAPH SEPARATOR, GEORGIAN 10FB
-paragraph separator, urdu 203B
-paragraph sign 00B6
-PARAGRAPH SIGN ORNAMENT, CURVED STEM 2761
-paragraph sign, european 00A7
-PARALLEL TO 2225
-PARALLELOGRAM, BLACK 25B0
-parenthesis, closing 0029
-PARENTHESIS, LEFT 0028
-parenthesis, opening 0028
-PARENTHESIS, ORNATE LEFT FD3E
-PARENTHESIS, RIGHT 0029
-PARENTHESIS, SUBSCRIPT LEFT 208D
-PARENTHESIS, SUPERSCRIPT LEFT 207D
-Parenthesized Ideographs 3220
-Parenthesized Korean Hangul Elements 3200
-Parenthesized Korean Hangul Syllables 320E
-Parenthesized Latin Letters 249C
-Parenthesized Numbers 2474
-parted rule 00A6
-PARTIAL DIFFERENTIAL 2202
-partial line down 008B
-partial line up 008C
-pdf 202C
-PEACE SYMBOL 262E
-Pencil Dingbats 270E
-PENCIL, UPPER RIGHT 2710
-per 2118
-PER MILLE SIGN 2030
-PER TEN THOUSAND SIGN 2031
-PERCENT SIGN 0025
-PERCENT SIGN, ARABIC 066A
-PERCUSSIVE, LATIN LETTER BIDENTAL 02AD
-PERCUSSIVE, LATIN LETTER BILABIAL 02AC
-period 002E
-PERISPOMENI, COMBINING GREEK 0342
-perpendicular 22A5
-Persian and Urdu, Eastern Arabic-Indic Digits for 06F0
-PERSPECTIVE 2306
-PESETA SIGN 20A7
-PHARYNGEAL VOICED FRICATIVE, LATIN LETTER 0295
-PHI, LATIN SMALL LETTER 0278
-Phonetic Alphabet, International 0250
-Phonetic Modifiers Derived from Latin Letters 02B0
-Phonetics and Symbols Area, CJK 2E00
-phonorecord sign 2117
-pi, mathematical constant 03C0
-Pictures for Control Codes, Graphic 2400
-PILCROW SIGN 00B6
-PILCROW SIGN, REVERSED 204B
-Pinyin Diacritic-vowel Combinations 01CD
-pipe 01C0
-pipe, double 01C1
-pipe, double-barred 01C2
-PISCES 2653
-PITCHFORK 22D4
-PLACE OF INTEREST SIGN 2318
-plaintiff 226C
-PLANCK CONSTANT 210E
-PLANCK CONSTANT OVER TWO PI 210F
-Planet Symbols 263F
-Playing Card Suits 2660
-PLUS SIGN 002B
-PLUS SIGN BELOW, COMBINING 031F
-PLUS SIGN, MODIFIER LETTER 02D6
-PLUS SIGN, SUBSCRIPT 208A
-PLUS SIGN, SUPERSCRIPT 207A
-PLUS, CIRCLED 2295
-PLUS, DOT 2214
-PLUS, SQUARED 229E
-PLUS-MINUS SIGN 00B1
-PLUTO 2647
-Pointers 25BA
-Points, Arabic 064B
-Points, Hebrew 05B0
-poison 2620
-Political Symbols, Religious and 2626
-POP DIRECTIONAL FORMATTING 202C
-POSITION INDICATOR 2316
-positive, most 223E
-POSTAL MARK 3012
-POSTAL MARK FACE 3020
-POSTAL MARK, CIRCLED 3036
-pound sign 0023
-POUND SIGN 00A3
-pound sterling 00A3
-pounds 2114
-power set 2118
-PRECEDES 227A
-PRECEDES UNDER RELATION 22B0
-PRESCRIPTION TAKE 211E
-Presentation Forms, Alphabetic FB00
-Presentation Forms, Hebrew FB1D
-Presentation Forms-A, Arabic FB50
-Presentation Forms-B, Arabic FE70
-PREVIOUS PAGE 2397
-PRIME 2032
-PRIME QUOTATION MARK, DOUBLE 301E
-PRIME QUOTATION MARK, LOW DOUBLE 301F
-PRIME QUOTATION MARK, REVERSED DOUBLE 301D
-PRIME, DOUBLE 2033
-PRIME, MODIFIER LETTER 02B9
-PRIME, MODIFIER LETTER DOUBLE 02BA
-PRIME, REVERSED 2035
-PRIME, REVERSED DOUBLE 2036
-PRIME, REVERSED TRIPLE 2037
-PRIME, TRIPLE 2034
-PRINT SCREEN SYMBOL 2399
-privacy message 009E
-Private Use Area E000
-private use one 0091
-private use two 0092
-product, direct 2299
-PRODUCT, LEFT SEMIDIRECT 22CB
-PRODUCT, N-ARY 220F
-product, tensor 2297
-PRODUCT, WREATH 2240
-PROFILE, ALL AROUND- 232E
-prohibition 20E0
-PROJECTIVE 2305
-PROOF, END OF 220E
-PROPORTION 2237
-PROPORTION, GEOMETRIC 223A
-PROPORTIONAL TO 221D
-proportional to, varies with 223C
-proves 22A2
-psili 0313
-published 2117
-Punctuation Ornaments 275B
-PUNCTUATION SPACE 2008
-Punctuation, CJK Symbols and 3000
-Punctuation, General 2000
-punt, irish 00A3
-Q, DOUBLE-STRUCK CAPITAL 211A
-Q, ROTATED CAPITAL 213A
-qed 220E
-QUAD, EM 2001
-QUAD, EN 2000
-quad, mutton 2001
-quadrature 25A1
-quantic 226C
-QUARTER MOON, FIRST 263D
-QUARTER MOON, LAST 263E
-QUARTER NOTE 2669
-Quarters, Fractions 00BC
-QUESTION EXCLAMATION MARK 2048
-QUESTION MARK 003F
-QUESTION MARK, ARABIC 061F
-QUESTION MARK, ARMENIAN 055E
-QUESTION MARK, ETHIOPIC 1367
-QUESTION MARK, EXCLAMATION 2049
-QUESTION MARK, GREEK 037E
-QUESTION MARK, INVERTED 00BF
-QUESTIONED EQUAL TO 225F
-QUILL, LEFT SQUARE BRACKET WITH 2045
-quotation dash 2015
-QUOTATION MARK 0022
-Quotation Mark Ornaments 275B
-quotation mark, double comma 201D
-QUOTATION MARK, DOUBLE HIGH-REVERSED-9 201F
-QUOTATION MARK, DOUBLE LOW-9 201E
-QUOTATION MARK, DOUBLE PRIME 301E
-quotation mark, double reversed comma 201F
-quotation mark, double turned comma 201C
-QUOTATION MARK, LEFT DOUBLE 201C
-QUOTATION MARK, LEFT SINGLE 2018
-QUOTATION MARK, LEFT-POINTING DOUBLE ANGLE 00AB
-quotation mark, low double comma 201E
-QUOTATION MARK, LOW DOUBLE PRIME 301F
-quotation mark, low single comma 201A
-QUOTATION MARK, REVERSED DOUBLE PRIME 301D
-QUOTATION MARK, RIGHT DOUBLE 201D
-QUOTATION MARK, RIGHT SINGLE 2019
-QUOTATION MARK, RIGHT-POINTING DOUBLE ANGLE 00BB
-quotation mark, single comma 2019
-QUOTATION MARK, SINGLE HIGH-REVERSED-9 201B
-QUOTATION MARK, SINGLE LEFT-POINTING ANGLE 2039
-QUOTATION MARK, SINGLE LOW-9 201A
-quotation mark, single reversed comma 201B
-QUOTATION MARK, SINGLE RIGHT-POINTING ANGLE 203A
-quotation mark, single turned comma 2018
-quote, apl 0022
-R, BLACK-LETTER CAPITAL 211C
-R, DOUBLE-STRUCK CAPITAL 211D
-R, LATIN LETTER SMALL CAPITAL 0280
-R, LATIN LETTER SMALL CAPITAL INVERTED 0281
-R, LATIN SMALL LETTER TURNED 0279
-R, MODIFIER LETTER SMALL 02B3
-R, MODIFIER LETTER SMALL CAPITAL INVERTED 02B6
-R, MODIFIER LETTER SMALL TURNED 02B4
-R, SCRIPT CAPITAL 211B
-radical sign 221A
-Radicals Supplement, CJK 2E80
-Radicals, Kangxi 2F00
-Radicals, Yi A490
-RADIOACTIVE SIGN 2622
-rainy weather 2602
-RAMS HORN, LATIN SMALL LETTER 0264
-RATIO 2236
-ratio, cross 211E
-rational numbers, the set of 211A
-real number symbol 210A
-real numbers, the set of 211D
-real part 211C
-recipe 211E
-record separator 001E
-RECORD SEPARATOR, SYMBOL FOR 241E
-RECORDER, TELEPHONE 2315
-RECORDING COPYRIGHT, SOUND 2117
-Rectangles 25AC
-reduces to 22A6
-reducible 22A2
-REFERENCE MARK 203B
-registered trade mark sign 00AE
-Religious and Political Symbols 2626
-Repeat Marks, Kana 3031
-REPLACEMENT CHARACTER FFFD
-REPLACEMENT CHARACTER, OBJECT FFFC
-resistance 2126
-RESPONSE 211F
-results in 22A8
-RETROFLEX CLICK, LATIN LETTER 01C3
-RETROFLEX HOOK BELOW, COMBINING 0322
-retroflex hook, latin small letter d 0256
-return, carriage 000D
-return, carriage 21B5
-RETURN, SYMBOL FOR CARRIAGE 240D
-reverse line feed 008D
-REVERSE SOLIDUS 005C
-reverse turnstile 22A3
-REVERSED COMMA ABOVE, COMBINING 0314
-reversed comma quotation mark, double 201F
-reversed comma quotation mark, single 201B
-REVERSED COMMA, MODIFIER LETTER 02BD
-REVERSED DOUBLE PRIME 2036
-REVERSED DOUBLE PRIME QUOTATION MARK 301D
-REVERSED E, LATIN CAPITAL LETTER 018E
-REVERSED E, LATIN SMALL LETTER 0258
-reversed epsilon, latin small letter closed 025E
-REVERSED ESH LOOP, LATIN LETTER 01AA
-REVERSED ESH, LATIN SMALL LETTER SQUAT 0285
-reversed glottal stop, latin letter 0295
-REVERSED GLOTTAL STOP, MODIFIER LETTER 02C1
-REVERSED GLOTTAL STOP, MODIFIER LETTER SMALL 02E4
-REVERSED NOT SIGN 2310
-REVERSED OPEN E, LATIN SMALL LETTER 025C
-REVERSED OPEN E, LATIN SMALL LETTER CLOSED 025E
-REVERSED PILCROW SIGN 204B
-REVERSED PRIME 2035
-reversed straight epsilon 220D
-REVERSED TILDE 223D
-REVERSED TILDE EQUALS 22CD
-REVERSED TRIPLE PRIME 2037
-REVERSED, LATIN SMALL LETTER EZH 01B9
-RHOTIC HOOK, MODIFIER LETTER 02DE
-riemann integral 211B
-RIGHT ANGLE 221F
-RIGHT ANGLE WITH ARC 22BE
-RIGHT CURLY BRACKET 007D
-RIGHT PARENTHESIS 0029
-right pointing guillemet 00BB
-right pointing single guillemet 203A
-RIGHT SQUARE BRACKET 005D
-RIGHT TRIANGLE 22BF
-RIGHT-POINTING ANGLE QUOTATION MARK, SINGLE 203A
-RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 00BB
-RIGHT-TO-LEFT EMBEDDING 202B
-RIGHT-TO-LEFT MARK 200F
-RIGHT-TO-LEFT OVERRIDE 202E
-RING ABOVE 02DA
-RING ABOVE, COMBINING 030A
-RING BELOW, COMBINING 0325
-RING BELOW, COMBINING LEFT HALF 031C
-RING BELOW, COMBINING RIGHT HALF 0339
-RING EQUAL TO 2257
-RING IN EQUAL TO 2256
-RING OPERATOR 2218
-RING OPERATOR, CIRCLED 229A
-RING OVERLAY, COMBINING 20D8
-RING OVERLAY, COMBINING CLOCKWISE 20D9
-RING, BENZENE 232C
-RING, MODIFIER LETTER CENTRED LEFT HALF 02D3
-RING, MODIFIER LETTER LEFT HALF 02BF
-rle 202B
-rlm 200F
-rlo 202E
-Roman Numerals 2160
-Romanian, Additions for 0218
-ROOT, CUBE 221B
-ROOT, FOURTH 221C
-ROOT, SQUARE 221A
-ROTATED CAPITAL Q 213A
-rotation 20D5
-rough breathing 0314
-rule, parted 00A6
-Runes, Golden Number 16EE
-Runic 16A0
-RUNOUT, TOTAL 2330
-RUPEE MARK, BENGALI 09F2
-RUPEE SIGN 20A8
-RUPEE SIGN, BENGALI 09F3
-Russian Alphabet, Basic 0410
-S, INVERTED LAZY 223E
-S, LATIN SMALL LETTER LONG 017F
-S, LATIN SMALL LETTER SHARP 00DF
-s, lazy 223D
-S, MODIFIER LETTER SMALL 02E2
-SAGITTARIUS 2650
-SALTIRE 2613
-Sanskrit and Tibetan, Mongolian Extensions for 1880
-satisfies 22A8
-SATURN 2644
-SCHWA, LATIN CAPITAL LETTER 018F
-SCHWA, LATIN SMALL LETTER 0259
-Scissors Dingbats 2701
-SCORPIUS 264F
-SCREEN, COMBINING ENCLOSING 20E2
-script a, latin small letter 0251
-SCRIPT CAPITAL B 212C
-SCRIPT CAPITAL E 2130
-SCRIPT CAPITAL F 2131
-SCRIPT CAPITAL H 210B
-SCRIPT CAPITAL I 2110
-SCRIPT CAPITAL L 2112
-SCRIPT CAPITAL M 2133
-SCRIPT CAPITAL P 2118
-SCRIPT CAPITAL R 211B
-script f, latin small letter 0192
-SCRIPT G, LATIN SMALL LETTER 0261
-SCRIPT SMALL E 212F
-SCRIPT SMALL G 210A
-SCRIPT SMALL L 2113
-SCRIPT SMALL O 2134
-script v, latin capital letter 01B2
-script v, latin small letter 028B
-Scripts Area, General 0000
-scrolling 21F3
-SCRUPLE 2108
-SEAGULL BELOW, COMBINING 033C
-second transfinite cardinal (the continuum) 2136
-seconds 2033
-SECTION SIGN 00A7
-section sign, european 00B6
-SECTOR 2314
-SEGMENT 2313
-selected area, end of 0087
-selected area, start of 0086
-SEMICOLON 003B
-SEMICOLON, ARABIC 061B
-SEMICOLON, ETHIOPIC 1364
-SEMIDIRECT PRODUCT, LEFT 22CB
-SEPARATOR KEY SYMBOL, DECIMAL 2396
-SEPARATOR, ARABIC DECIMAL 066B
-SEPARATOR, ARABIC THOUSANDS 066C
-separator, decimal 002C
-separator, devanagari phrase 0964
-separator, file 001C
-SEPARATOR, GEORGIAN PARAGRAPH 10FB
-separator, group 001D
-SEPARATOR, LINE 2028
-SEPARATOR, PARAGRAPH 2029
-separator, record 001E
-SEPARATOR, SYMBOL FOR FILE 241C
-SEPARATOR, SYMBOL FOR GROUP 241D
-SEPARATOR, SYMBOL FOR RECORD 241E
-SEPARATOR, SYMBOL FOR UNIT 241F
-separator, unit 001F
-separator, urdu paragraph 203B
-sequence introducer, control 009B
-Serbian Cyrillic Letters, Croatian Digraphs Matching 01C4
-SERVICE MARK 2120
-SET MINUS 2216
-set of complex numbers, the 2102
-set of integers, the 2124
-set of rational numbers, the 211A
-set of real numbers, the 211D
-set transmit state 0093
-SET, EMPTY 2205
-set, included in 2282
-set, includes in 2283
-set, null 2205
-set, power 2118
-sextile 2736
-Shade Characters 2591
-shamrock 2663
-Shapes, Geometric 25A0
-SHARP S, LATIN SMALL LETTER 00DF
-SHARP SIGN, MUSIC 266F
-SHEQEL SIGN, NEW 20AA
-shift 21E7
-shift in 000F
-SHIFT IN, SYMBOL FOR 240F
-shift out 000E
-SHIFT OUT, SYMBOL FOR 240E
-shilling 002F
-short 0306
-short slash overlay 0337
-SHORT SOLIDUS OVERLAY, COMBINING 0337
-SHORT STROKE OVERLAY, COMBINING 0335
-SHORT VERTICAL LINE OVERLAY, COMBINING 20D3
-SHOULDERED OPEN BOX 237D
-Sibe Letters, Mongolian 185D
-similar to 223C
-SINE WAVE 223F
-single character introducer 009A
-single comma quotation mark 2019
-single comma quotation mark, low 201A
-single guillemet, left pointing 2039
-single guillemet, right pointing 203A
-SINGLE HIGH-REVERSED-9 QUOTATION MARK 201B
-SINGLE LEFT-POINTING ANGLE QUOTATION MARK 2039
-SINGLE LOW-9 QUOTATION MARK 201A
-SINGLE QUOTATION MARK, LEFT 2018
-SINGLE QUOTATION MARK, RIGHT 2019
-single reversed comma quotation mark 201B
-SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 203A
-single shift three 008F
-single shift two 008E
-single turned comma quotation mark 2018
-Sinhala 0D80
-SIX-PER-EM SPACE 2006
-SIXTEENTH NOTES, BEAMED 266C
-Sixths, Fractions 2159
-SKULL AND CROSSBONES 2620
-slash 002F
-slash overlay, long 0338
-slash overlay, short 0337
-SLASH, CIRCLED DIVISION 2298
-SLASH, DIVISION 2215
-SLASH, FRACTION 2044
-SLOPE 2333
-Slovenian and Croatian, Additions for 0200
-SMALL CAPITAL B, LATIN LETTER 0299
-SMALL CAPITAL G, LATIN LETTER 0262
-SMALL CAPITAL H, LATIN LETTER 029C
-SMALL CAPITAL I, LATIN LETTER 026A
-SMALL CAPITAL INVERTED R, LATIN LETTER 0281
-SMALL CAPITAL INVERTED R, MODIFIER LETTER 02B6
-SMALL CAPITAL L, LATIN LETTER 029F
-SMALL CAPITAL N, LATIN LETTER 0274
-SMALL CAPITAL OE, LATIN LETTER 0276
-SMALL CAPITAL R, LATIN LETTER 0280
-SMALL CAPITAL Y, LATIN LETTER 028F
-small circle, black 2022
-SMALL CONTAINS AS MEMBER 220D
-SMALL ELEMENT OF 220A
-Small Form Variants FE50
-Small Letters, Armenian 0561
-Small Letters, Cyrillic 0430
-Small Letters, Georgian 10D0
-Small Letters, Greek 03B1
-Small Letters, Latin 0061
-SMILE 2323
-SMILING FACE, BLACK 263B
-SMILING FACE, WHITE 263A
-smooth breathing 0313
-Snowflake Dingbats 2744
-Snowflakes, Stars, Asterisks and 2721
-SNOWMAN 2603
-snowy weather 2603
-SOFT HYPHEN 00AD
-SOFTWARE-FUNCTION SYMBOL 2394
-solid 2588
-SOLIDUS 002F
-solidus 2044
-SOLIDUS OVERLAY, COMBINING LONG 0338
-SOLIDUS OVERLAY, COMBINING SHORT 0337
-SOLIDUS, REVERSE 005C
-SOUND RECORDING COPYRIGHT 2117
-SOURCE, INFORMATION 2139
-SPACE 0020
-SPACE MARK, OGHAM 1680
-SPACE, EM 2003
-SPACE, EN 2002
-SPACE, FIGURE 2007
-SPACE, FOUR-PER-EM 2005
-space, graphic for 2422
-space, graphic for 2423
-space, graphic for no break 237D
-SPACE, HAIR 200A
-SPACE, IDEOGRAPHIC 3000
-space, mid 2005
-SPACE, NARROW NO-BREAK 202F
-SPACE, NO-BREAK 00A0
-SPACE, PUNCTUATION 2008
-SPACE, SIX-PER-EM 2006
-SPACE, SYMBOL FOR 2420
-space, thick 2004
-SPACE, THIN 2009
-SPACE, THREE-PER-EM 2004
-SPACE, ZERO WIDTH 200B
-SPACE, ZERO WIDTH NO-BREAK FEFF
-Spaces 2000
-spacing acute 00B4
-spacing cedilla 00B8
-spacing circumflex 005E
-Spacing Clones of Diacritics 02D8
-spacing diaeresis 00A8
-spacing double underscore 2017
-spacing grave 0060
-spacing macron 00AF
-Spacing Modifier Letters 02B0
-spacing overscore 203E
-spacing underscore 005F
-spanish currency 20A7
-Specials FFF0
-Specials Area, Compatibility and F900
-SPHERICAL ANGLE 2222
-SQUARE BELOW, COMBINING 033B
-SQUARE BRACKET WITH QUILL, LEFT 2045
-square bracket, closing 005D
-SQUARE BRACKET, LEFT 005B
-SQUARE BRACKET, LEFT WHITE 301A
-square bracket, opening 005B
-SQUARE BRACKET, RIGHT 005D
-SQUARE CAP 2293
-SQUARE CORPORATION 337F
-SQUARE CUP 2294
-SQUARE IMAGE OF 228F
-SQUARE LOZENGE 2311
-SQUARE ORIGINAL OF 2290
-SQUARE ROOT 221A
-SQUARE, COMBINING ENCLOSING 20DE
-SQUARE, VIEWDATA 2317
-squared 00B2
-SQUARED DOT OPERATOR 22A1
-Squared Japanese Katakana Words 3300
-Squared Latin Abbreviations 3371
-SQUARED MINUS 229F
-SQUARED PLUS 229E
-SQUARED TIMES 22A0
-Squares 25A0
-SQUAT REVERSED ESH, LATIN SMALL LETTER 0285
-st. andrew's cross 2613
-star 002A
-STAR AND CRESCENT 262A
-Star Dingbats 2726
-STAR EQUALS 225B
-STAR OF DAVID 2721
-STAR OPERATOR 22C6
-STAR, ARABIC FIVE POINTED 066D
-STAR, BLACK 2605
-starburst 273A
-Stars, Asterisks and Snowflakes 2721
-start of guarded area 0096
-start of heading 0001
-START OF HEADING, SYMBOL FOR 2401
-start of selected area 0086
-start of string 0098
-start of text 0002
-START OF TEXT, SYMBOL FOR 2402
-statement is true 22A8
-sterling, pound 00A3
-stile, apl 2223
-straight epsilon 220A
-straight epsilon, reversed 220D
-stress mark 0301
-STRETCHED C, LATIN LETTER 0297
-STRICTLY EQUIVALENT TO 2263
-string terminator 009C
-string, device control 0090
-string, start of 0098
-STROKE OVERLAY, COMBINING LONG 0336
-STROKE OVERLAY, COMBINING SHORT 0335
-SUBGROUP OF, NORMAL 22B2
-SUBGROUP, CONTAINS AS NORMAL 22B3
-Subscript Digits 2080
-SUBSCRIPT EQUALS SIGN 208C
-SUBSCRIPT LEFT PARENTHESIS 208D
-SUBSCRIPT MINUS 208B
-SUBSCRIPT PLUS SIGN 208A
-subscript, iota 0345
-Subscripts 2080
-SUBSET OF 2282
-SUBSET, DOUBLE 22D0
-substitute 001A
-SUBSTITUTE FORM TWO, SYMBOL FOR 2426
-SUBSTITUTE, SYMBOL FOR 241A
-SUCCEEDS 227B
-SUCCEEDS UNDER RELATION 22B1
-such that 220B
-such that 2223
-Suits, Playing Card 2660
-sum, direct 2295
-SUMMATION, N-ARY 2211
-SUN 2609
-SUN WITH RAYS, BLACK 2600
-SUPERSCRIPT ALEF, ARABIC LETTER 0670
-Superscript Digits 2070
-SUPERSCRIPT EQUALS SIGN 207C
-SUPERSCRIPT LEFT PARENTHESIS 207D
-SUPERSCRIPT MINUS 207B
-SUPERSCRIPT ONE 00B9
-SUPERSCRIPT PLUS SIGN 207A
-SUPERSCRIPT THREE 00B3
-SUPERSCRIPT TWO 00B2
-SUPERSCRIPT ZERO 2070
-Superscripts 2070
-Superscripts and Subscripts 2070
-SUPERSET OF 2283
-SUPERSET, DOUBLE 22D1
-SURFACE INTEGRAL 222F
-Surrogates Area D800
-Surrogates, High D800
-Surrogates, Low DC00
-swedish grave accent 02DF
-swung dash 007E
-Syllabics, Unified Canadian Aboriginal 1400
-Syllables Area, Korean Hangul AC00
-Syllables, Yi A000
-Symbol Variants, Fullwidth FFE0
-Symbols and Punctuation, CJK 3000
-Symbols Area 2000
-Symbols Area, CJK Phonetics and 2E00
-Symbols for Control Codes, Graphic 2400
-Symbols, Combining Diacritical Marks for 20D0
-Symbols, Greek 03D0
-Symbols, Letterlike 2100
-Symbols, Miscellaneous 2600
-symmetric difference 2238
-symmetric difference 2296
-SYMMETRIC SWAPPING, ACTIVATE 206B
-SYMMETRIC SWAPPING, INHIBIT 206A
-SYMMETRY 232F
-synchronous idle 0016
-SYNCHRONOUS IDLE, SYMBOL FOR 2416
-Syriac 0700
-SYRIAC CROSS, EAST 2671
-SYRIAC CROSS, WEST 2670
-Syriac Format Control 070F
-T, LATIN SMALL LETTER TURNED 0287
-tab 0009
-tab with shift tab 21B9
-tab, leftward 21E4
-tab, rightward 21E5
-tab, symbol for 2409
-tabulation set, character 0088
-tabulation set, line 008A
-tabulation with justification, character 0089
-tabulation, horizontal 0009
-TABULATION, SYMBOL FOR HORIZONTAL 2409
-TABULATION, SYMBOL FOR VERTICAL 240B
-tabulation, vertical 000B
-TACK BELOW, COMBINING LEFT 0318
-TACK BELOW, COMBINING UP 031D
-TACK, LEFT 22A3
-TACK, MODIFIER LETTER UP 02D4
-TACK, RIGHT 22A2
-TACK, UP 22A5
-tainome (japanese, a kind of bullet) 25C9
-TAKE, PRESCRIPTION 211E
-Tamil 0B80
-Tamil Digits 0BE7
-Tamil Letters 0B85
-TAPE DRIVE 2707
-TAPER, CONICAL 2332
-TAURUS 2649
-tautology 22A8
-Technical, Miscellaneous 2300
-Telegraph Symbols for Days 33E0
-Telegraph Symbols for Hours 3358
-Telegraph Symbols for Months 32C0
-TELEPHONE LOCATION SIGN 2706
-TELEPHONE RECORDER 2315
-TELEPHONE SIGN 2121
-TELEPHONE, BLACK 260E
-Telugu 0C00
-Telugu Digits 0C66
-Telugu Letters 0C05
-TEN THOUSAND SIGN, PER 2031
-tensor 20E1
-tensor product 2297
-terminator, string 009C
-text, end of 0003
-text, start of 0002
-TEXT, SYMBOL FOR END OF 2403
-TEXT, SYMBOL FOR START OF 2402
-Thaana 0780
-Thai 0E00
-THAI CURRENCY SYMBOL BAHT 0E3F
-Thai Digits 0E50
-Thai Letters 0E01
-THERE EXISTS 2203
-THEREFORE 2234
-thick space 2004
-THIN SPACE 2009
-third derivative 20DB
-third transfinite cardinal (functions of a real variable) 2137
-Thirds, Fractions 2153
-THORN, LATIN CAPITAL LETTER 00DE
-THORN, LATIN SMALL LETTER 00FE
-THOUSANDS SEPARATOR, ARABIC 066C
-THOUSANDS SIGN, CYRILLIC 0482
-three dot leader 2026
-THREE DOTS ABOVE, COMBINING 20DB
-THREE QUARTERS, VULGAR FRACTION 00BE
-THREE, SUPERSCRIPT 00B3
-THREE-PER-EM SPACE 2004
-THUNDERSTORM 2608
-Tibetan 0F00
-Tibetan Digits 0F20
-Tibetan Letters 0F40
-Tibetan, Mongolian Extensions for Sanskrit and 1880
-TIE, CHARACTER 2040
-TILDE 007E
-TILDE ABOVE, COMBINING NOT 034A
-TILDE BELOW, COMBINING 0330
-TILDE EQUALS, REVERSED 22CD
-TILDE LEFT HALF, COMBINING DOUBLE FE22
-TILDE OPERATOR 223C
-TILDE OVERLAY, COMBINING 0334
-tilde, apl 223C
-TILDE, COMBINING 0303
-TILDE, COMBINING DOUBLE 0360
-TILDE, COMBINING VERTICAL 033E
-TILDE, MINUS 2242
-TILDE, REVERSED 223D
-TILDE, SMALL 02DC
-TILDE, TRIPLE 224B
-TIMES, CIRCLED 2297
-TIMES, DIVISION 22C7
-TIMES, SQUARED 22A0
-TIRONIAN SIGN ET 204A
-TIS 620-2529 (Thai), Based on 0E01
-Todo Letters, Mongolian 1843
-Tone Bar Letters 02E5
-TONE FIVE, LATIN SMALL LETTER 01BD
-TONE MARK, COMBINING ACUTE 0341
-TONE MARK, COMBINING GRAVE 0340
-Tone Marks, Ideographic 302A
-Tone Marks, Vietnamese 0340
-TONE SIX, LATIN SMALL LETTER 0185
-TONE TWO, LATIN SMALL LETTER 01A8
-tonos 0301
-TONOS, COMBINING GREEK DIALYTIKA 0344
-TOP HALF INTEGRAL 2320
-TOP LEFT CORNER 231C
-TOP LEFT CROP 230F
-TORTOISE SHELL BRACKET, LEFT 3014
-TORTOISE SHELL BRACKET, LEFT WHITE 3018
-TOTAL RUNOUT 2330
-TRADE MARK SIGN 2122
-trade mark sign, registered 00AE
-transfinite cardinal (countable), first 2135
-transfinite cardinal (functions of a real variable), third 2137
-transfinite cardinal (the continuum), second 2136
-transfinite cardinal, fourth 2138
-transmission block, end of 0017
-TRANSMISSION BLOCK, SYMBOL FOR END OF 2417
-transmission, end of 0004
-transmission, graphic for end of 2301
-TRANSMISSION, SYMBOL FOR END OF 2404
-transmit state, set 0093
-TRIANGLE, RIGHT 22BF
-Triangles 25B2
-TRIANGULAR BULLET 2023
-TRIANGULAR COLON, MODIFIER LETTER 02D0
-TRIANGULAR COLON, MODIFIER LETTER HALF 02D1
-Trigram Symbols, Yijing 2630
-trine 25B3
-TRIPLE INTEGRAL 222D
-TRIPLE PRIME 2034
-TRIPLE PRIME, REVERSED 2037
-TRIPLE TILDE 224B
-TRUE 22A8
-TUGRIK SIGN 20AE
-turbofan 274B
-turkish currency 20A4
-TURNED A, LATIN SMALL LETTER 0250
-TURNED ALPHA, LATIN SMALL LETTER 0252
-TURNED CAPITAL F 2132
-TURNED COMMA ABOVE, COMBINING 0312
-turned comma quotation mark, double 201C
-turned comma quotation mark, single 2018
-TURNED COMMA, MODIFIER LETTER 02BB
-TURNED DELTA, LATIN SMALL LETTER 018D
-turned e, latin capital letter 018E
-TURNED E, LATIN SMALL LETTER 01DD
-TURNED GREEK SMALL LETTER IOTA 2129
-TURNED H, LATIN SMALL LETTER 0265
-TURNED K, LATIN SMALL LETTER 029E
-TURNED M, LATIN CAPITAL LETTER 019C
-TURNED M, LATIN SMALL LETTER 026F
-TURNED NOT SIGN 2319
-turned question mark 00BF
-TURNED R, LATIN SMALL LETTER 0279
-TURNED R, MODIFIER LETTER SMALL 02B4
-TURNED T, LATIN SMALL LETTER 0287
-TURNED V, LATIN SMALL LETTER 028C
-TURNED W, LATIN SMALL LETTER 028D
-TURNED Y, LATIN SMALL LETTER 028E
-turnstile 22A2
-turnstile, reverse 22A3
-TWO DOT LEADER 2025
-TWO, SUPERSCRIPT 00B2
-UMBRELLA 2602
-umlaut 0308
-UNASPIRATED, MODIFIER LETTER 02ED
-underline 0332
-UNDERLINE SYMBOL, CONTINUOUS 2381
-UNDERLINE SYMBOL, DISCONTINUOUS 2382
-underline, double 0333
-underscore 0332
-underscore, double 0333
-underscore, spacing 005F
-underscore, spacing double 2017
-Underscores, Overscores and FE49
-UNDERTIE 203F
-UNDO SYMBOL 238C
-undoable delete 2425
-UNION 222A
-UNION, DOUBLE 22D3
-UNION, MULTISET 228E
-UNION, N-ARY 22C3
-unique element 2129
-unit separator 001F
-UNIT SEPARATOR, SYMBOL FOR 241F
-UP ARROWHEAD 2303
-UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS 2324
-UP RIGHT DIAGONAL ELLIPSIS 22F0
-UP TACK 22A5
-UP TACK BELOW, COMBINING 031D
-UP TACK, MODIFIER LETTER 02D4
-up, page 21DE
-UPPER BLADE SCISSORS 2701
-UPPER RIGHT PENCIL 2710
-UPSILON, LATIN CAPITAL LETTER 01B1
-UPSILON, LATIN SMALL LETTER 028A
-upstile, apl 2308
-UPWARDS ARROW BELOW, COMBINING 034E
-URANUS 2645
-urdu paragraph separator 203B
-Urdu, Eastern Arabic-Indic Digits for Persian and 06F0
-V WITH HOOK, LATIN CAPITAL LETTER 01B2
-v, latin capital letter script 01B2
-v, latin small letter script 028B
-V, LATIN SMALL LETTER TURNED 028C
-valentine 2665
-valid 22A8
-varia 0300
-varies with (proportional to) 223C
-vector 20D0
-vector 20D6
-vector pointing into page 2295
-vector pointing into page 2297
-vector pointing out of page 2299
-vee 2228
-vee above 030C
-venus 2640
-VERSICLE 2123
-vertical bar 007C
-Vertical Bar Dingbats 2758
-vertical bar, broken 00A6
-VERTICAL ELLIPSIS 22EE
-VERTICAL KANA REPEAT MARK 3031
-VERTICAL LINE 007C
-VERTICAL LINE ABOVE, COMBINING 030D
-VERTICAL LINE ABOVE, COMBINING DOUBLE 030E
-VERTICAL LINE BELOW, COMBINING 0329
-VERTICAL LINE BELOW, COMBINING DOUBLE 0348
-VERTICAL LINE OVERLAY, COMBINING LONG 20D2
-VERTICAL LINE OVERLAY, COMBINING SHORT 20D3
-VERTICAL LINE WITH MIDDLE DOT 237F
-VERTICAL LINE, DOUBLE 2016
-VERTICAL LINE, MODIFIER LETTER 02C8
-VERTICAL LINE, MODIFIER LETTER LOW 02CC
-vertical tabulation 000B
-VERTICAL TABULATION, SYMBOL FOR 240B
-VERTICAL TILDE, COMBINING 033E
-Vertical Variants, Glyphs for FE30
-VERY MUCH GREATER-THAN 22D9
-VERY MUCH LESS-THAN 22D8
-VICTORY HAND 270C
-vietnamese currency 20AB
-Vietnamese Tone Marks 0340
-Vietnamese, Latin Extensions for 1EA0
-VIEWDATA SQUARE 2317
-vinculum 0305
-VIRAMA, BENGALI SIGN 09CD
-VIRAMA, DEVANAGARI SIGN 094D
-VIRAMA, GUJARATI SIGN 0ACD
-VIRAMA, GURMUKHI SIGN 0A4D
-VIRAMA, KANNADA SIGN 0CCD
-VIRAMA, MALAYALAM SIGN 0D4D
-VIRAMA, ORIYA SIGN 0B4D
-VIRAMA, TAMIL SIGN 0BCD
-VIRAMA, TELUGU SIGN 0C4D
-VIRGO 264D
-virgule 002F
-VOICED FRICATIVE, LATIN LETTER PHARYNGEAL 0295
-VOICED SOUND MARK, COMBINING KATAKANA-HIRAGANA 3099
-VOICED SOUND MARK, KATAKANA-HIRAGANA 309B
-VOICING, MODIFIER LETTER 02EC
-VOLUME INTEGRAL 2230
-vrachy 0306
-W, LATIN SMALL LETTER TURNED 028D
-W, MODIFIER LETTER SMALL 02B7
-Warning Signs 2620
-WATCH 231A
-WAVE DASH 301C
-WAVE, SINE 223F
-WAVY DASH 3030
-WAVY LINE 2307
-WAVY LOW LINE FE4F
-WAVY OVERLINE FE4B
-WAVY OVERLINE, DOUBLE FE4C
-Weather and Astrological Symbols 2600
-wedge 028C
-wedge 2227
-weierstrass elliptic function 2118
-WHEEL OF DHARMA 2638
-WON SIGN 20A9
-Words, Squared Japanese Katakana 3300
-WORDSPACE, ETHIOPIC 1361
-WREATH PRODUCT 2240
-WRITING HAND 270D
-WYNN, LATIN CAPITAL LETTER 01F7
-WYNN, LATIN LETTER 01BF
-X ABOVE, COMBINING 033D
-X IN A RECTANGLE BOX 2327
-X, BALLOT 2717
-X, BALLOT BOX WITH 2612
-X, HEAVY BALLOT 2718
-X, HEAVY MULTIPLICATION 2716
-X, MODIFIER LETTER SMALL 02E3
-X, MULTIPLICATION 2715
-XOR 22BB
-Y, LATIN LETTER SMALL CAPITAL 028F
-Y, LATIN SMALL LETTER TURNED 028E
-Y, MODIFIER LETTER SMALL 02B8
-YANG, YIN 262F
-YEN SIGN 00A5
-Yi Radicals A490
-Yi Syllables A000
-Yiddish Digraphs 05F0
-yields 22A2
-Yijing Trigram Symbols 2630
-YIN YANG 262F
-yogh, latin capital letter 01B7
-YOGH, LATIN SMALL LETTER 021D
-yogh, latin small letter 0292
-YPOGEGRAMMENI, COMBINING GREEK 0345
-YR, LATIN LETTER 01A6
-yuan sign 00A5
-Z, BLACK-LETTER CAPITAL 2128
-Z, DOUBLE-STRUCK CAPITAL 2124
-Zapf Dingbats Series 100, ITC 2700
-ZERO WIDTH JOINER 200D
-ZERO WIDTH NO-BREAK SPACE FEFF
-ZERO WIDTH NON-JOINER 200C
-ZERO WIDTH SPACE 200B
-ZERO, CIRCLED DIGIT 24EA
-ZERO, IDEOGRAPHIC NUMBER 3007
-ZERO, SUPERSCRIPT 2070
-Zodiacal Symbols 2648
-zwj 200D
-zwnj 200C
diff --git a/contrib/perl5/lib/unicode/Is/ASCII.pl b/contrib/perl5/lib/unicode/Is/ASCII.pl
deleted file mode 100644
index 1434a55..0000000
--- a/contrib/perl5/lib/unicode/Is/ASCII.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 007f
-END
diff --git a/contrib/perl5/lib/unicode/Is/Alnum.pl b/contrib/perl5/lib/unicode/Is/Alnum.pl
deleted file mode 100644
index a0aac62..0000000
--- a/contrib/perl5/lib/unicode/Is/Alnum.pl
+++ /dev/null
@@ -1,358 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0030 0039
-0041 005a
-0061 007a
-00aa
-00b2 00b3
-00b5
-00b9 00ba
-00bc 00be
-00c0 00d6
-00d8 00f6
-00f8 021f
-0222 0233
-0250 02ad
-02b0 02b8
-02bb 02c1
-02d0 02d1
-02e0 02e4
-02ee
-0300 034e
-0360 0362
-037a
-0386
-0388 038a
-038c
-038e 03a1
-03a3 03ce
-03d0 03d7
-03da 03f3
-0400 0481
-0483 0486
-0488 0489
-048c 04c4
-04c7 04c8
-04cb 04cc
-04d0 04f5
-04f8 04f9
-0531 0556
-0559
-0561 0587
-0591 05a1
-05a3 05b9
-05bb 05bd
-05bf
-05c1 05c2
-05c4
-05d0 05ea
-05f0 05f2
-0621 063a
-0640 0655
-0660 0669
-0670 06d3
-06d5 06e8
-06ea 06ed
-06f0 06fc
-0710 072c
-0730 074a
-0780 07b0
-0901 0903
-0905 0939
-093c 094d
-0950 0954
-0958 0963
-0966 096f
-0981 0983
-0985 098c
-098f 0990
-0993 09a8
-09aa 09b0
-09b2
-09b6 09b9
-09bc
-09be 09c4
-09c7 09c8
-09cb 09cd
-09d7
-09dc 09dd
-09df 09e3
-09e6 09f1
-09f4 09f9
-0a02
-0a05 0a0a
-0a0f 0a10
-0a13 0a28
-0a2a 0a30
-0a32 0a33
-0a35 0a36
-0a38 0a39
-0a3c
-0a3e 0a42
-0a47 0a48
-0a4b 0a4d
-0a59 0a5c
-0a5e
-0a66 0a74
-0a81 0a83
-0a85 0a8b
-0a8d
-0a8f 0a91
-0a93 0aa8
-0aaa 0ab0
-0ab2 0ab3
-0ab5 0ab9
-0abc 0ac5
-0ac7 0ac9
-0acb 0acd
-0ad0
-0ae0
-0ae6 0aef
-0b01 0b03
-0b05 0b0c
-0b0f 0b10
-0b13 0b28
-0b2a 0b30
-0b32 0b33
-0b36 0b39
-0b3c 0b43
-0b47 0b48
-0b4b 0b4d
-0b56 0b57
-0b5c 0b5d
-0b5f 0b61
-0b66 0b6f
-0b82 0b83
-0b85 0b8a
-0b8e 0b90
-0b92 0b95
-0b99 0b9a
-0b9c
-0b9e 0b9f
-0ba3 0ba4
-0ba8 0baa
-0bae 0bb5
-0bb7 0bb9
-0bbe 0bc2
-0bc6 0bc8
-0bca 0bcd
-0bd7
-0be7 0bf2
-0c01 0c03
-0c05 0c0c
-0c0e 0c10
-0c12 0c28
-0c2a 0c33
-0c35 0c39
-0c3e 0c44
-0c46 0c48
-0c4a 0c4d
-0c55 0c56
-0c60 0c61
-0c66 0c6f
-0c82 0c83
-0c85 0c8c
-0c8e 0c90
-0c92 0ca8
-0caa 0cb3
-0cb5 0cb9
-0cbe 0cc4
-0cc6 0cc8
-0cca 0ccd
-0cd5 0cd6
-0cde
-0ce0 0ce1
-0ce6 0cef
-0d02 0d03
-0d05 0d0c
-0d0e 0d10
-0d12 0d28
-0d2a 0d39
-0d3e 0d43
-0d46 0d48
-0d4a 0d4d
-0d57
-0d60 0d61
-0d66 0d6f
-0d82 0d83
-0d85 0d96
-0d9a 0db1
-0db3 0dbb
-0dbd
-0dc0 0dc6
-0dca
-0dcf 0dd4
-0dd6
-0dd8 0ddf
-0df2 0df3
-0e01 0e3a
-0e40 0e4e
-0e50 0e59
-0e81 0e82
-0e84
-0e87 0e88
-0e8a
-0e8d
-0e94 0e97
-0e99 0e9f
-0ea1 0ea3
-0ea5
-0ea7
-0eaa 0eab
-0ead 0eb9
-0ebb 0ebd
-0ec0 0ec4
-0ec6
-0ec8 0ecd
-0ed0 0ed9
-0edc 0edd
-0f00
-0f18 0f19
-0f20 0f33
-0f35
-0f37
-0f39
-0f3e 0f47
-0f49 0f6a
-0f71 0f84
-0f86 0f8b
-0f90 0f97
-0f99 0fbc
-0fc6
-1000 1021
-1023 1027
-1029 102a
-102c 1032
-1036 1039
-1040 1049
-1050 1059
-10a0 10c5
-10d0 10f6
-1100 1159
-115f 11a2
-11a8 11f9
-1200 1206
-1208 1246
-1248
-124a 124d
-1250 1256
-1258
-125a 125d
-1260 1286
-1288
-128a 128d
-1290 12ae
-12b0
-12b2 12b5
-12b8 12be
-12c0
-12c2 12c5
-12c8 12ce
-12d0 12d6
-12d8 12ee
-12f0 130e
-1310
-1312 1315
-1318 131e
-1320 1346
-1348 135a
-1369 137c
-13a0 13f4
-1401 166c
-166f 1676
-1681 169a
-16a0 16ea
-16ee 16f0
-1780 17d3
-17e0 17e9
-1810 1819
-1820 1877
-1880 18a9
-1e00 1e9b
-1ea0 1ef9
-1f00 1f15
-1f18 1f1d
-1f20 1f45
-1f48 1f4d
-1f50 1f57
-1f59
-1f5b
-1f5d
-1f5f 1f7d
-1f80 1fb4
-1fb6 1fbc
-1fbe
-1fc2 1fc4
-1fc6 1fcc
-1fd0 1fd3
-1fd6 1fdb
-1fe0 1fec
-1ff2 1ff4
-1ff6 1ffc
-2070
-2074 2079
-207f 2089
-20d0 20e3
-2102
-2107
-210a 2113
-2115
-2119 211d
-2124
-2126
-2128
-212a 212d
-212f 2131
-2133 2139
-2153 2183
-2460 249b
-24ea
-2776 2793
-3005 3007
-3021 302f
-3031 3035
-3038 303a
-3041 3094
-3099 309a
-309d 309e
-30a1 30fa
-30fc 30fe
-3105 312c
-3131 318e
-3192 3195
-31a0 31b7
-3220 3229
-3280 3289
-3400 4db5
-4e00 9fa5
-a000 a48c
-ac00 d7a3
-f900 fa2d
-fb00 fb06
-fb13 fb17
-fb1d fb28
-fb2a fb36
-fb38 fb3c
-fb3e
-fb40 fb41
-fb43 fb44
-fb46 fbb1
-fbd3 fd3d
-fd50 fd8f
-fd92 fdc7
-fdf0 fdfb
-fe20 fe23
-fe70 fe72
-fe74
-fe76 fefc
-ff10 ff19
-ff21 ff3a
-ff41 ff5a
-ff66 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-END
diff --git a/contrib/perl5/lib/unicode/Is/Alpha.pl b/contrib/perl5/lib/unicode/Is/Alpha.pl
deleted file mode 100644
index 13dc003..0000000
--- a/contrib/perl5/lib/unicode/Is/Alpha.pl
+++ /dev/null
@@ -1,327 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0041 005a
-0061 007a
-00aa
-00b5
-00ba
-00c0 00d6
-00d8 00f6
-00f8 021f
-0222 0233
-0250 02ad
-02b0 02b8
-02bb 02c1
-02d0 02d1
-02e0 02e4
-02ee
-0300 034e
-0360 0362
-037a
-0386
-0388 038a
-038c
-038e 03a1
-03a3 03ce
-03d0 03d7
-03da 03f3
-0400 0481
-0483 0486
-0488 0489
-048c 04c4
-04c7 04c8
-04cb 04cc
-04d0 04f5
-04f8 04f9
-0531 0556
-0559
-0561 0587
-0591 05a1
-05a3 05b9
-05bb 05bd
-05bf
-05c1 05c2
-05c4
-05d0 05ea
-05f0 05f2
-0621 063a
-0640 0655
-0670 06d3
-06d5 06e8
-06ea 06ed
-06fa 06fc
-0710 072c
-0730 074a
-0780 07b0
-0901 0903
-0905 0939
-093c 094d
-0950 0954
-0958 0963
-0981 0983
-0985 098c
-098f 0990
-0993 09a8
-09aa 09b0
-09b2
-09b6 09b9
-09bc
-09be 09c4
-09c7 09c8
-09cb 09cd
-09d7
-09dc 09dd
-09df 09e3
-09f0 09f1
-0a02
-0a05 0a0a
-0a0f 0a10
-0a13 0a28
-0a2a 0a30
-0a32 0a33
-0a35 0a36
-0a38 0a39
-0a3c
-0a3e 0a42
-0a47 0a48
-0a4b 0a4d
-0a59 0a5c
-0a5e
-0a70 0a74
-0a81 0a83
-0a85 0a8b
-0a8d
-0a8f 0a91
-0a93 0aa8
-0aaa 0ab0
-0ab2 0ab3
-0ab5 0ab9
-0abc 0ac5
-0ac7 0ac9
-0acb 0acd
-0ad0
-0ae0
-0b01 0b03
-0b05 0b0c
-0b0f 0b10
-0b13 0b28
-0b2a 0b30
-0b32 0b33
-0b36 0b39
-0b3c 0b43
-0b47 0b48
-0b4b 0b4d
-0b56 0b57
-0b5c 0b5d
-0b5f 0b61
-0b82 0b83
-0b85 0b8a
-0b8e 0b90
-0b92 0b95
-0b99 0b9a
-0b9c
-0b9e 0b9f
-0ba3 0ba4
-0ba8 0baa
-0bae 0bb5
-0bb7 0bb9
-0bbe 0bc2
-0bc6 0bc8
-0bca 0bcd
-0bd7
-0c01 0c03
-0c05 0c0c
-0c0e 0c10
-0c12 0c28
-0c2a 0c33
-0c35 0c39
-0c3e 0c44
-0c46 0c48
-0c4a 0c4d
-0c55 0c56
-0c60 0c61
-0c82 0c83
-0c85 0c8c
-0c8e 0c90
-0c92 0ca8
-0caa 0cb3
-0cb5 0cb9
-0cbe 0cc4
-0cc6 0cc8
-0cca 0ccd
-0cd5 0cd6
-0cde
-0ce0 0ce1
-0d02 0d03
-0d05 0d0c
-0d0e 0d10
-0d12 0d28
-0d2a 0d39
-0d3e 0d43
-0d46 0d48
-0d4a 0d4d
-0d57
-0d60 0d61
-0d82 0d83
-0d85 0d96
-0d9a 0db1
-0db3 0dbb
-0dbd
-0dc0 0dc6
-0dca
-0dcf 0dd4
-0dd6
-0dd8 0ddf
-0df2 0df3
-0e01 0e3a
-0e40 0e4e
-0e81 0e82
-0e84
-0e87 0e88
-0e8a
-0e8d
-0e94 0e97
-0e99 0e9f
-0ea1 0ea3
-0ea5
-0ea7
-0eaa 0eab
-0ead 0eb9
-0ebb 0ebd
-0ec0 0ec4
-0ec6
-0ec8 0ecd
-0edc 0edd
-0f00
-0f18 0f19
-0f35
-0f37
-0f39
-0f3e 0f47
-0f49 0f6a
-0f71 0f84
-0f86 0f8b
-0f90 0f97
-0f99 0fbc
-0fc6
-1000 1021
-1023 1027
-1029 102a
-102c 1032
-1036 1039
-1050 1059
-10a0 10c5
-10d0 10f6
-1100 1159
-115f 11a2
-11a8 11f9
-1200 1206
-1208 1246
-1248
-124a 124d
-1250 1256
-1258
-125a 125d
-1260 1286
-1288
-128a 128d
-1290 12ae
-12b0
-12b2 12b5
-12b8 12be
-12c0
-12c2 12c5
-12c8 12ce
-12d0 12d6
-12d8 12ee
-12f0 130e
-1310
-1312 1315
-1318 131e
-1320 1346
-1348 135a
-13a0 13f4
-1401 166c
-166f 1676
-1681 169a
-16a0 16ea
-1780 17d3
-1820 1877
-1880 18a9
-1e00 1e9b
-1ea0 1ef9
-1f00 1f15
-1f18 1f1d
-1f20 1f45
-1f48 1f4d
-1f50 1f57
-1f59
-1f5b
-1f5d
-1f5f 1f7d
-1f80 1fb4
-1fb6 1fbc
-1fbe
-1fc2 1fc4
-1fc6 1fcc
-1fd0 1fd3
-1fd6 1fdb
-1fe0 1fec
-1ff2 1ff4
-1ff6 1ffc
-207f
-20d0 20e3
-2102
-2107
-210a 2113
-2115
-2119 211d
-2124
-2126
-2128
-212a 212d
-212f 2131
-2133 2139
-3005 3006
-302a 302f
-3031 3035
-3041 3094
-3099 309a
-309d 309e
-30a1 30fa
-30fc 30fe
-3105 312c
-3131 318e
-31a0 31b7
-3400 4db5
-4e00 9fa5
-a000 a48c
-ac00 d7a3
-f900 fa2d
-fb00 fb06
-fb13 fb17
-fb1d fb28
-fb2a fb36
-fb38 fb3c
-fb3e
-fb40 fb41
-fb43 fb44
-fb46 fbb1
-fbd3 fd3d
-fd50 fd8f
-fd92 fdc7
-fdf0 fdfb
-fe20 fe23
-fe70 fe72
-fe74
-fe76 fefc
-ff21 ff3a
-ff41 ff5a
-ff66 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiAL.pl b/contrib/perl5/lib/unicode/Is/BidiAL.pl
deleted file mode 100644
index a8d43b8..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiAL.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-061b
-061f
-0621 063a
-0640 064a
-066d
-0671 06d5
-06e5 06e6
-06fa 06fe
-0700 070d
-0710
-0712 072c
-0780 07a5
-fb50 fbb1
-fbd3 fd3d
-fd50 fd8f
-fd92 fdc7
-fdf0 fdfb
-fe70 fe72
-fe74
-fe76 fefc
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiAN.pl b/contrib/perl5/lib/unicode/Is/BidiAN.pl
deleted file mode 100644
index 4519c6d..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiAN.pl
+++ /dev/null
@@ -1,7 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0660 0669
-066b 066c
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiB.pl b/contrib/perl5/lib/unicode/Is/BidiB.pl
deleted file mode 100644
index 33bdb45..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiB.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-000a
-000d
-001c 001e
-0085
-2029
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiBN.pl b/contrib/perl5/lib/unicode/Is/BidiBN.pl
deleted file mode 100644
index 75b8871..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiBN.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 0008
-000e 001b
-007f 0084
-0086 009f
-070f
-180b 180e
-200b 200d
-206a 206f
-feff
-fff9 fffb
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiCS.pl b/contrib/perl5/lib/unicode/Is/BidiCS.pl
deleted file mode 100644
index e217653..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiCS.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-002c
-002e
-003a
-00a0
-060c
-fe50
-fe52
-fe55
-ff0c
-ff0e
-ff1a
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiEN.pl b/contrib/perl5/lib/unicode/Is/BidiEN.pl
deleted file mode 100644
index 113de87..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiEN.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0030 0039
-00b2 00b3
-00b9
-06f0 06f9
-2070
-2074 2079
-2080 2089
-2460 249b
-24ea
-ff10 ff19
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiES.pl b/contrib/perl5/lib/unicode/Is/BidiES.pl
deleted file mode 100644
index d1cd305..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiES.pl
+++ /dev/null
@@ -1,7 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-002f
-ff0f
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiET.pl b/contrib/perl5/lib/unicode/Is/BidiET.pl
deleted file mode 100644
index 0a66fa8..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiET.pl
+++ /dev/null
@@ -1,29 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0023 0025
-002b
-002d
-00a2 00a5
-00b0 00b1
-066a
-09f2 09f3
-0e3f
-17db
-2030 2034
-207a 207b
-208a 208b
-20a0 20af
-212e
-2212 2213
-fb29
-fe5f
-fe62 fe63
-fe69 fe6a
-ff03 ff05
-ff0b
-ff0d
-ffe0 ffe1
-ffe5 ffe6
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiL.pl b/contrib/perl5/lib/unicode/Is/BidiL.pl
deleted file mode 100644
index a08d8b8..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiL.pl
+++ /dev/null
@@ -1,325 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0041 005a
-0061 007a
-00aa
-00b5
-00ba
-00c0 00d6
-00d8 00f6
-00f8 021f
-0222 0233
-0250 02ad
-02b0 02b8
-02bb 02c1
-02d0 02d1
-02e0 02e4
-02ee
-037a
-0386
-0388 038a
-038c
-038e 03a1
-03a3 03ce
-03d0 03d7
-03da 03f3
-0400 0482
-048c 04c4
-04c7 04c8
-04cb 04cc
-04d0 04f5
-04f8 04f9
-0531 0556
-0559 055f
-0561 0587
-0589
-0903
-0905 0939
-093d 0940
-0949 094c
-0950
-0958 0961
-0964 0970
-0982 0983
-0985 098c
-098f 0990
-0993 09a8
-09aa 09b0
-09b2
-09b6 09b9
-09be 09c0
-09c7 09c8
-09cb 09cc
-09d7
-09dc 09dd
-09df 09e1
-09e6 09f1
-09f4 09fa
-0a05 0a0a
-0a0f 0a10
-0a13 0a28
-0a2a 0a30
-0a32 0a33
-0a35 0a36
-0a38 0a39
-0a3e 0a40
-0a59 0a5c
-0a5e
-0a66 0a6f
-0a72 0a74
-0a83
-0a85 0a8b
-0a8d
-0a8f 0a91
-0a93 0aa8
-0aaa 0ab0
-0ab2 0ab3
-0ab5 0ab9
-0abd 0ac0
-0ac9
-0acb 0acc
-0ad0
-0ae0
-0ae6 0aef
-0b02 0b03
-0b05 0b0c
-0b0f 0b10
-0b13 0b28
-0b2a 0b30
-0b32 0b33
-0b36 0b39
-0b3d 0b3e
-0b40
-0b47 0b48
-0b4b 0b4c
-0b57
-0b5c 0b5d
-0b5f 0b61
-0b66 0b70
-0b83
-0b85 0b8a
-0b8e 0b90
-0b92 0b95
-0b99 0b9a
-0b9c
-0b9e 0b9f
-0ba3 0ba4
-0ba8 0baa
-0bae 0bb5
-0bb7 0bb9
-0bbe 0bbf
-0bc1 0bc2
-0bc6 0bc8
-0bca 0bcc
-0bd7
-0be7 0bf2
-0c01 0c03
-0c05 0c0c
-0c0e 0c10
-0c12 0c28
-0c2a 0c33
-0c35 0c39
-0c41 0c44
-0c60 0c61
-0c66 0c6f
-0c82 0c83
-0c85 0c8c
-0c8e 0c90
-0c92 0ca8
-0caa 0cb3
-0cb5 0cb9
-0cbe
-0cc0 0cc4
-0cc7 0cc8
-0cca 0ccb
-0cd5 0cd6
-0cde
-0ce0 0ce1
-0ce6 0cef
-0d02 0d03
-0d05 0d0c
-0d0e 0d10
-0d12 0d28
-0d2a 0d39
-0d3e 0d40
-0d46 0d48
-0d4a 0d4c
-0d57
-0d60 0d61
-0d66 0d6f
-0d82 0d83
-0d85 0d96
-0d9a 0db1
-0db3 0dbb
-0dbd
-0dc0 0dc6
-0dcf 0dd1
-0dd8 0ddf
-0df2 0df4
-0e01 0e30
-0e32 0e33
-0e40 0e46
-0e4f 0e5b
-0e81 0e82
-0e84
-0e87 0e88
-0e8a
-0e8d
-0e94 0e97
-0e99 0e9f
-0ea1 0ea3
-0ea5
-0ea7
-0eaa 0eab
-0ead 0eb0
-0eb2 0eb3
-0ebd
-0ec0 0ec4
-0ec6
-0ed0 0ed9
-0edc 0edd
-0f00 0f17
-0f1a 0f34
-0f36
-0f38
-0f3e 0f47
-0f49 0f6a
-0f7f
-0f85
-0f88 0f8b
-0fbe 0fc5
-0fc7 0fcc
-0fcf
-1000 1021
-1023 1027
-1029 102a
-102c
-1031
-1038
-1040 1057
-10a0 10c5
-10d0 10f6
-10fb
-1100 1159
-115f 11a2
-11a8 11f9
-1200 1206
-1208 1246
-1248
-124a 124d
-1250 1256
-1258
-125a 125d
-1260 1286
-1288
-128a 128d
-1290 12ae
-12b0
-12b2 12b5
-12b8 12be
-12c0
-12c2 12c5
-12c8 12ce
-12d0 12d6
-12d8 12ee
-12f0 130e
-1310
-1312 1315
-1318 131e
-1320 1346
-1348 135a
-1361 137c
-13a0 13f4
-1401 1676
-1681 169a
-16a0 16f0
-1780 17b6
-17be 17c5
-17c7 17c8
-17d4 17da
-17dc
-17e0 17e9
-1810 1819
-1820 1877
-1880 18a8
-1e00 1e9b
-1ea0 1ef9
-1f00 1f15
-1f18 1f1d
-1f20 1f45
-1f48 1f4d
-1f50 1f57
-1f59
-1f5b
-1f5d
-1f5f 1f7d
-1f80 1fb4
-1fb6 1fbc
-1fbe
-1fc2 1fc4
-1fc6 1fcc
-1fd0 1fd3
-1fd6 1fdb
-1fe0 1fec
-1ff2 1ff4
-1ff6 1ffc
-200e
-207f
-2102
-2107
-210a 2113
-2115
-2119 211d
-2124
-2126
-2128
-212a 212d
-212f 2131
-2133 2139
-2160 2183
-2336 237a
-2395
-249c 24e9
-3005 3007
-3021 3029
-3031 3035
-3038 303a
-3041 3094
-309d 309e
-30a1 30fa
-30fc 30fe
-3105 312c
-3131 318e
-3190 31b7
-3200 321c
-3220 3243
-3260 327b
-327f 32b0
-32c0 32cb
-32d0 32fe
-3300 3376
-337b 33dd
-33e0 33fe
-3400 4db5
-4e00 9fa5
-a000 a48c
-ac00 d7a3
-d800 db7f
-db80 dbff
-dc00 dfff
-e000 f8ff
-f900 fa2d
-fb00 fb06
-fb13 fb17
-ff21 ff3a
-ff41 ff5a
-ff66 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-f0000 ffffd
-100000 10fffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiLRE.pl b/contrib/perl5/lib/unicode/Is/BidiLRE.pl
deleted file mode 100644
index 2570421..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiLRE.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-202a
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiLRO.pl b/contrib/perl5/lib/unicode/Is/BidiLRO.pl
deleted file mode 100644
index 721a223..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiLRO.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-202d
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiNSM.pl b/contrib/perl5/lib/unicode/Is/BidiNSM.pl
deleted file mode 100644
index a5c3af4..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiNSM.pl
+++ /dev/null
@@ -1,97 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0300 034e
-0360 0362
-0483 0486
-0488 0489
-0591 05a1
-05a3 05b9
-05bb 05bd
-05bf
-05c1 05c2
-05c4
-064b 0655
-0670
-06d6 06e4
-06e7 06e8
-06ea 06ed
-0711
-0730 074a
-07a6 07b0
-0901 0902
-093c
-0941 0948
-094d
-0951 0954
-0962 0963
-0981
-09bc
-09c1 09c4
-09cd
-09e2 09e3
-0a02
-0a3c
-0a41 0a42
-0a47 0a48
-0a4b 0a4d
-0a70 0a71
-0a81 0a82
-0abc
-0ac1 0ac5
-0ac7 0ac8
-0acd
-0b01
-0b3c
-0b3f
-0b41 0b43
-0b4d
-0b56
-0b82
-0bc0
-0bcd
-0c3e 0c40
-0c46 0c48
-0c4a 0c4d
-0c55 0c56
-0cbf
-0cc6
-0ccc 0ccd
-0d41 0d43
-0d4d
-0dca
-0dd2 0dd4
-0dd6
-0e31
-0e34 0e3a
-0e47 0e4e
-0eb1
-0eb4 0eb9
-0ebb 0ebc
-0ec8 0ecd
-0f18 0f19
-0f35
-0f37
-0f39
-0f71 0f7e
-0f80 0f84
-0f86 0f87
-0f90 0f97
-0f99 0fbc
-0fc6
-102d 1030
-1032
-1036 1037
-1039
-1058 1059
-17b7 17bd
-17c6
-17c9 17d3
-18a9
-20d0 20e3
-302a 302f
-3099 309a
-fb1e
-fe20 fe23
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiON.pl b/contrib/perl5/lib/unicode/Is/BidiON.pl
deleted file mode 100644
index ec0f18f..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiON.pl
+++ /dev/null
@@ -1,115 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0021 0022
-0026 002a
-003b 0040
-005b 0060
-007b 007e
-00a1
-00a6 00a9
-00ab 00af
-00b4
-00b6 00b8
-00bb 00bf
-00d7
-00f7
-02b9 02ba
-02c2 02cf
-02d2 02df
-02e5 02ed
-0374 0375
-037e
-0384 0385
-0387
-058a
-06e9
-0f3a 0f3d
-169b 169c
-1800 180a
-1fbd
-1fbf 1fc1
-1fcd 1fcf
-1fdd 1fdf
-1fed 1fef
-1ffd 1ffe
-2010 2027
-2035 2046
-2048 204d
-207c 207e
-208c 208e
-2100 2101
-2103 2106
-2108 2109
-2114
-2116 2118
-211e 2123
-2125
-2127
-2129
-2132
-213a
-2153 215f
-2190 21f3
-2200 2211
-2214 22f1
-2300 2335
-237b
-237d 2394
-2396 239a
-2400 2426
-2440 244a
-2500 2595
-25a0 25f7
-2600 2613
-2619 2671
-2701 2704
-2706 2709
-270c 2727
-2729 274b
-274d
-274f 2752
-2756
-2758 275e
-2761 2767
-2776 2794
-2798 27af
-27b1 27be
-2800 28ff
-2e80 2e99
-2e9b 2ef3
-2f00 2fd5
-2ff0 2ffb
-3001 3004
-3008 3020
-3030
-3036 3037
-303e 303f
-309b 309c
-30fb
-a490 a4a1
-a4a4 a4b3
-a4b5 a4c0
-a4c2 a4c4
-a4c6
-fd3e fd3f
-fe30 fe44
-fe49 fe4f
-fe51
-fe54
-fe56 fe5e
-fe60 fe61
-fe64 fe66
-fe68
-fe6b
-ff01 ff02
-ff06 ff0a
-ff1b ff20
-ff3b ff40
-ff5b ff5e
-ff61 ff65
-ffe2 ffe4
-ffe8 ffee
-fffc fffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiPDF.pl b/contrib/perl5/lib/unicode/Is/BidiPDF.pl
deleted file mode 100644
index 20e3d9d..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiPDF.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-202c
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiR.pl b/contrib/perl5/lib/unicode/Is/BidiR.pl
deleted file mode 100644
index 9f776ae..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiR.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-05be
-05c0
-05c3
-05d0 05ea
-05f0 05f4
-200f
-fb1d
-fb1f fb28
-fb2a fb36
-fb38 fb3c
-fb3e
-fb40 fb41
-fb43 fb44
-fb46 fb4f
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiRLE.pl b/contrib/perl5/lib/unicode/Is/BidiRLE.pl
deleted file mode 100644
index eaf7ab7..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiRLE.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-202b
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiRLO.pl b/contrib/perl5/lib/unicode/Is/BidiRLO.pl
deleted file mode 100644
index 8974dd9..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiRLO.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-202e
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiS.pl b/contrib/perl5/lib/unicode/Is/BidiS.pl
deleted file mode 100644
index ac2655d..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiS.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0009
-000b
-001f
-END
diff --git a/contrib/perl5/lib/unicode/Is/BidiWS.pl b/contrib/perl5/lib/unicode/Is/BidiWS.pl
deleted file mode 100644
index ebd24e5..0000000
--- a/contrib/perl5/lib/unicode/Is/BidiWS.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-000c
-0020
-1680
-2000 200a
-2028
-202f
-3000
-END
diff --git a/contrib/perl5/lib/unicode/Is/Blank.pl b/contrib/perl5/lib/unicode/Is/Blank.pl
deleted file mode 100644
index 8642921..0000000
--- a/contrib/perl5/lib/unicode/Is/Blank.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0009
-0020
-00a0
-1680
-2000 200b
-202f
-3000
-END
diff --git a/contrib/perl5/lib/unicode/Is/C.pl b/contrib/perl5/lib/unicode/Is/C.pl
deleted file mode 100644
index 51e4ede..0000000
--- a/contrib/perl5/lib/unicode/Is/C.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 001f
-007f 009f
-070f
-180b 180e
-200c 200f
-202a 202e
-206a 206f
-d800 db7f
-db80 dbff
-dc00 dfff
-e000 f8ff
-feff
-fff9 fffb
-f0000 ffffd
-100000 10fffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/Cc.pl b/contrib/perl5/lib/unicode/Is/Cc.pl
deleted file mode 100644
index 6b97adc..0000000
--- a/contrib/perl5/lib/unicode/Is/Cc.pl
+++ /dev/null
@@ -1,7 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 001f
-007f 009f
-END
diff --git a/contrib/perl5/lib/unicode/Is/Cf.pl b/contrib/perl5/lib/unicode/Is/Cf.pl
deleted file mode 100644
index cef5ac4..0000000
--- a/contrib/perl5/lib/unicode/Is/Cf.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-070f
-180b 180e
-200c 200f
-202a 202e
-206a 206f
-feff
-fff9 fffb
-END
diff --git a/contrib/perl5/lib/unicode/Is/Cn.pl b/contrib/perl5/lib/unicode/Is/Cn.pl
deleted file mode 100644
index fb75e87..0000000
--- a/contrib/perl5/lib/unicode/Is/Cn.pl
+++ /dev/null
@@ -1,373 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0220 0221
-0234 024f
-02ae 02af
-02ef 02ff
-034f 035f
-0363 0373
-0376 0379
-037b 037d
-037f 0383
-038b
-038d
-03a2
-03cf
-03d8 03d9
-03f4 03ff
-0487
-048a 048b
-04c5 04c6
-04c9 04ca
-04cd 04cf
-04f6 04f7
-04fa 0530
-0557 0558
-0560
-0588
-058b 0590
-05a2
-05ba
-05c5 05cf
-05eb 05ef
-05f5 060b
-060d 061a
-061c 061e
-0620
-063b 063f
-0656 065f
-066e 066f
-06ee 06ef
-06ff
-070e
-072d 072f
-074b 077f
-07b1 0900
-0904
-093a 093b
-094e 094f
-0955 0957
-0971 0980
-0984
-098d 098e
-0991 0992
-09a9
-09b1
-09b3 09b5
-09ba 09bb
-09bd
-09c5 09c6
-09c9 09ca
-09ce 09d6
-09d8 09db
-09de
-09e4 09e5
-09fb 0a01
-0a03 0a04
-0a0b 0a0e
-0a11 0a12
-0a29
-0a31
-0a34
-0a37
-0a3a 0a3b
-0a3d
-0a43 0a46
-0a49 0a4a
-0a4e 0a58
-0a5d
-0a5f 0a65
-0a75 0a80
-0a84
-0a8c
-0a8e
-0a92
-0aa9
-0ab1
-0ab4
-0aba 0abb
-0ac6
-0aca
-0ace 0acf
-0ad1 0adf
-0ae1 0ae5
-0af0 0b00
-0b04
-0b0d 0b0e
-0b11 0b12
-0b29
-0b31
-0b34 0b35
-0b3a 0b3b
-0b44 0b46
-0b49 0b4a
-0b4e 0b55
-0b58 0b5b
-0b5e
-0b62 0b65
-0b71 0b81
-0b84
-0b8b 0b8d
-0b91
-0b96 0b98
-0b9b
-0b9d
-0ba0 0ba2
-0ba5 0ba7
-0bab 0bad
-0bb6
-0bba 0bbd
-0bc3 0bc5
-0bc9
-0bce 0bd6
-0bd8 0be6
-0bf3 0c00
-0c04
-0c0d
-0c11
-0c29
-0c34
-0c3a 0c3d
-0c45
-0c49
-0c4e 0c54
-0c57 0c5f
-0c62 0c65
-0c70 0c81
-0c84
-0c8d
-0c91
-0ca9
-0cb4
-0cba 0cbd
-0cc5
-0cc9
-0cce 0cd4
-0cd7 0cdd
-0cdf
-0ce2 0ce5
-0cf0 0d01
-0d04
-0d0d
-0d11
-0d29
-0d3a 0d3d
-0d44 0d45
-0d49
-0d4e 0d56
-0d58 0d5f
-0d62 0d65
-0d70 0d81
-0d84
-0d97 0d99
-0db2
-0dbc
-0dbe 0dbf
-0dc7 0dc9
-0dcb 0dce
-0dd5
-0dd7
-0de0 0df1
-0df5 0e00
-0e3b 0e3e
-0e5c 0e80
-0e83
-0e85 0e86
-0e89
-0e8b 0e8c
-0e8e 0e93
-0e98
-0ea0
-0ea4
-0ea6
-0ea8 0ea9
-0eac
-0eba
-0ebe 0ebf
-0ec5
-0ec7
-0ece 0ecf
-0eda 0edb
-0ede 0eff
-0f48
-0f6b 0f70
-0f8c 0f8f
-0f98
-0fbd
-0fcd 0fce
-0fd0 0fff
-1022
-1028
-102b
-1033 1035
-103a 103f
-105a 109f
-10c6 10cf
-10f7 10fa
-10fc 10ff
-115a 115e
-11a3 11a7
-11fa 11ff
-1207
-1247
-1249
-124e 124f
-1257
-1259
-125e 125f
-1287
-1289
-128e 128f
-12af
-12b1
-12b6 12b7
-12bf
-12c1
-12c6 12c7
-12cf
-12d7
-12ef
-130f
-1311
-1316 1317
-131f
-1347
-135b 1360
-137d 139f
-13f5 1400
-1677 167f
-169d 169f
-16f1 177f
-17dd 17df
-17ea 17ff
-180f
-181a 181f
-1878 187f
-18aa 1dff
-1e9c 1e9f
-1efa 1eff
-1f16 1f17
-1f1e 1f1f
-1f46 1f47
-1f4e 1f4f
-1f58
-1f5a
-1f5c
-1f5e
-1f7e 1f7f
-1fb5
-1fc5
-1fd4 1fd5
-1fdc
-1ff0 1ff1
-1ff5
-1fff
-2047
-204e 2069
-2071 2073
-208f 209f
-20b0 20cf
-20e4 20ff
-213b 2152
-2184 218f
-21f4 21ff
-22f2 22ff
-237c
-239b 23ff
-2427 243f
-244b 245f
-24eb 24ff
-2596 259f
-25f8 25ff
-2614 2618
-2672 2700
-2705
-270a 270b
-2728
-274c
-274e
-2753 2755
-2757
-275f 2760
-2768 2775
-2795 2797
-27b0
-27bf 27ff
-2900 2e7f
-2e9a
-2ef4 2eff
-2fd6 2fef
-2ffc 2fff
-303b 303d
-3040
-3095 3098
-309f 30a0
-30ff 3104
-312d 3130
-318f
-31b8 31ff
-321d 321f
-3244 325f
-327c 327e
-32b1 32bf
-32cc 32cf
-32ff
-3377 337a
-33de 33df
-33ff
-4db6 4dff
-9fa6 9fff
-a48d a48f
-a4a2 a4a3
-a4b4
-a4c1
-a4c5
-a4c7 abff
-d7a4 d7ff
-fa2e faff
-fb07 fb12
-fb18 fb1c
-fb37
-fb3d
-fb3f
-fb42
-fb45
-fbb2 fbd2
-fd40 fd4f
-fd90 fd91
-fdc8 fdef
-fdfc fe1f
-fe24 fe2f
-fe45 fe48
-fe53
-fe67
-fe6c fe6f
-fe73
-fe75
-fefd fefe
-ff00
-ff5f ff60
-ffbf ffc1
-ffc8 ffc9
-ffd0 ffd1
-ffd8 ffd9
-ffdd ffdf
-ffe7
-ffef fff8
-10000 1fffd
-20000 2fffd
-30000 3fffd
-40000 4fffd
-50000 5fffd
-60000 6fffd
-70000 7fffd
-80000 8fffd
-90000 9fffd
-a0000 afffd
-b0000 bfffd
-c0000 cfffd
-d0000 dfffd
-e0000 efffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/Cntrl.pl b/contrib/perl5/lib/unicode/Is/Cntrl.pl
deleted file mode 100644
index 51e4ede..0000000
--- a/contrib/perl5/lib/unicode/Is/Cntrl.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 001f
-007f 009f
-070f
-180b 180e
-200c 200f
-202a 202e
-206a 206f
-d800 db7f
-db80 dbff
-dc00 dfff
-e000 f8ff
-feff
-fff9 fffb
-f0000 ffffd
-100000 10fffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/Co.pl b/contrib/perl5/lib/unicode/Is/Co.pl
deleted file mode 100644
index d077fd2..0000000
--- a/contrib/perl5/lib/unicode/Is/Co.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-e000 f8ff
-f0000 ffffd
-100000 10fffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/Cs.pl b/contrib/perl5/lib/unicode/Is/Cs.pl
deleted file mode 100644
index 33e1dac..0000000
--- a/contrib/perl5/lib/unicode/Is/Cs.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-d800 db7f
-db80 dbff
-dc00 dfff
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCcircle.pl b/contrib/perl5/lib/unicode/Is/DCcircle.pl
deleted file mode 100644
index 82c9edc..0000000
--- a/contrib/perl5/lib/unicode/Is/DCcircle.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2460 2473
-24b6 24ea
-3260 327b
-3280 32b0
-32d0 32fe
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCcompat.pl b/contrib/perl5/lib/unicode/Is/DCcompat.pl
deleted file mode 100644
index 5ae2b6a..0000000
--- a/contrib/perl5/lib/unicode/Is/DCcompat.pl
+++ /dev/null
@@ -1,69 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00a8
-00af
-00b4 00b5
-00b8
-0132 0133
-013f 0140
-0149
-017f
-01c4 01cc
-01f1 01f3
-02d8 02dd
-037a
-0384
-03d0 03d2
-03d5 03d6
-03f0 03f2
-0587
-0675 0678
-0e33
-0eb3
-0edc 0edd
-0f77
-0f79
-1e9a
-1fbd
-1fbf 1fc0
-1ffe
-2002 2006
-2008 200a
-2017
-2024 2026
-2033 2034
-2036 2037
-203c
-203e
-2048 2049
-20a8
-2100 2101
-2103
-2105 2107
-2109
-2116
-2121
-2135 2138
-2160 217f
-222c 222d
-222f 2230
-2474 24b5
-2e9f
-2ef3
-2f00 2fd5
-3036
-3038 303a
-309b 309c
-3131 318e
-3200 321c
-3220 3243
-32c0 32cb
-3358 3370
-33e0 33fe
-fb00 fb06
-fb13 fb17
-fb4f
-fe49 fe4f
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCfinal.pl b/contrib/perl5/lib/unicode/Is/DCfinal.pl
deleted file mode 100644
index 3c81bcc..0000000
--- a/contrib/perl5/lib/unicode/Is/DCfinal.pl
+++ /dev/null
@@ -1,118 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-fb51
-fb53
-fb57
-fb5b
-fb5f
-fb63
-fb67
-fb6b
-fb6f
-fb73
-fb77
-fb7b
-fb7f
-fb83
-fb85
-fb87
-fb89
-fb8b
-fb8d
-fb8f
-fb93
-fb97
-fb9b
-fb9f
-fba1
-fba5
-fba7
-fbab
-fbaf
-fbb1
-fbd4
-fbd8
-fbda
-fbdc
-fbdf
-fbe1
-fbe3
-fbe5
-fbeb
-fbed
-fbef
-fbf1
-fbf3
-fbf5
-fbf7
-fbfa
-fbfd
-fc64 fc96
-fd11 fd2c
-fd3c
-fd51
-fd58
-fd5a fd5b
-fd5e fd5f
-fd62
-fd64
-fd66 fd67
-fd69 fd6a
-fd6c
-fd6e fd6f
-fd71
-fd74 fd76
-fd78 fd7c
-fd7e fd82
-fd84 fd85
-fd87
-fd8b
-fd96 fd97
-fd99 fd9c
-fd9e fdb3
-fdb6 fdb7
-fdb9
-fdbb fdc2
-fdc6 fdc7
-fe82
-fe84
-fe86
-fe88
-fe8a
-fe8e
-fe90
-fe94
-fe96
-fe9a
-fe9e
-fea2
-fea6
-feaa
-feac
-feae
-feb0
-feb2
-feb6
-feba
-febe
-fec2
-fec6
-feca
-fece
-fed2
-fed6
-feda
-fede
-fee2
-fee6
-feea
-feee
-fef0
-fef2
-fef6
-fef8
-fefa
-fefc
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCfont.pl b/contrib/perl5/lib/unicode/Is/DCfont.pl
deleted file mode 100644
index 7feff18..0000000
--- a/contrib/perl5/lib/unicode/Is/DCfont.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2102
-210a 2113
-2115
-2119 211d
-2124
-2128
-212c 212d
-212f 2131
-2133 2134
-2139
-fb20 fb29
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCfraction.pl b/contrib/perl5/lib/unicode/Is/DCfraction.pl
deleted file mode 100644
index abac9d9..0000000
--- a/contrib/perl5/lib/unicode/Is/DCfraction.pl
+++ /dev/null
@@ -1,7 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00bc 00be
-2153 215f
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCinitial.pl b/contrib/perl5/lib/unicode/Is/DCinitial.pl
deleted file mode 100644
index c6d7802..0000000
--- a/contrib/perl5/lib/unicode/Is/DCinitial.pl
+++ /dev/null
@@ -1,80 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-fb54
-fb58
-fb5c
-fb60
-fb64
-fb68
-fb6c
-fb70
-fb74
-fb78
-fb7c
-fb80
-fb90
-fb94
-fb98
-fb9c
-fba2
-fba8
-fbac
-fbd5
-fbe6
-fbe8
-fbf8
-fbfb
-fbfe
-fc97 fcde
-fd2d fd33
-fd50
-fd52 fd57
-fd59
-fd5c fd5d
-fd60 fd61
-fd63
-fd65
-fd68
-fd6b
-fd6d
-fd70
-fd72 fd73
-fd77
-fd7d
-fd83
-fd86
-fd88 fd8a
-fd8c fd8f
-fd92 fd95
-fd98
-fd9d
-fdb4 fdb5
-fdb8
-fdba
-fdc3 fdc5
-fe8b
-fe91
-fe97
-fe9b
-fe9f
-fea3
-fea7
-feb3
-feb7
-febb
-febf
-fec3
-fec7
-fecb
-fecf
-fed3
-fed7
-fedb
-fedf
-fee3
-fee7
-feeb
-fef3
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCisolated.pl b/contrib/perl5/lib/unicode/Is/DCisolated.pl
deleted file mode 100644
index e4e24f7..0000000
--- a/contrib/perl5/lib/unicode/Is/DCisolated.pl
+++ /dev/null
@@ -1,103 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-fb50
-fb52
-fb56
-fb5a
-fb5e
-fb62
-fb66
-fb6a
-fb6e
-fb72
-fb76
-fb7a
-fb7e
-fb82
-fb84
-fb86
-fb88
-fb8a
-fb8c
-fb8e
-fb92
-fb96
-fb9a
-fb9e
-fba0
-fba4
-fba6
-fbaa
-fbae
-fbb0
-fbd3
-fbd7
-fbd9
-fbdb
-fbdd fbde
-fbe0
-fbe2
-fbe4
-fbea
-fbec
-fbee
-fbf0
-fbf2
-fbf4
-fbf6
-fbf9
-fbfc
-fc00 fc63
-fcf5 fd10
-fd3d
-fdf0 fdfb
-fe70
-fe72
-fe74
-fe76
-fe78
-fe7a
-fe7c
-fe7e
-fe80 fe81
-fe83
-fe85
-fe87
-fe89
-fe8d
-fe8f
-fe93
-fe95
-fe99
-fe9d
-fea1
-fea5
-fea9
-feab
-fead
-feaf
-feb1
-feb5
-feb9
-febd
-fec1
-fec5
-fec9
-fecd
-fed1
-fed5
-fed9
-fedd
-fee1
-fee5
-fee9
-feed
-feef
-fef1
-fef5
-fef7
-fef9
-fefb
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCmedial.pl b/contrib/perl5/lib/unicode/Is/DCmedial.pl
deleted file mode 100644
index 8778a75..0000000
--- a/contrib/perl5/lib/unicode/Is/DCmedial.pl
+++ /dev/null
@@ -1,59 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-fb55
-fb59
-fb5d
-fb61
-fb65
-fb69
-fb6d
-fb71
-fb75
-fb79
-fb7d
-fb81
-fb91
-fb95
-fb99
-fb9d
-fba3
-fba9
-fbad
-fbd6
-fbe7
-fbe9
-fbff
-fcdf fcf4
-fd34 fd3b
-fe71
-fe77
-fe79
-fe7b
-fe7d
-fe7f
-fe8c
-fe92
-fe98
-fe9c
-fea0
-fea4
-fea8
-feb4
-feb8
-febc
-fec0
-fec4
-fec8
-fecc
-fed0
-fed4
-fed8
-fedc
-fee0
-fee4
-fee8
-feec
-fef4
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCnarrow.pl b/contrib/perl5/lib/unicode/Is/DCnarrow.pl
deleted file mode 100644
index 78874521..0000000
--- a/contrib/perl5/lib/unicode/Is/DCnarrow.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-ff61 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-ffe8 ffee
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCnoBreak.pl b/contrib/perl5/lib/unicode/Is/DCnoBreak.pl
deleted file mode 100644
index 18c0105..0000000
--- a/contrib/perl5/lib/unicode/Is/DCnoBreak.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00a0
-0f0c
-2007
-2011
-202f
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCsmall.pl b/contrib/perl5/lib/unicode/Is/DCsmall.pl
deleted file mode 100644
index 3a37931..0000000
--- a/contrib/perl5/lib/unicode/Is/DCsmall.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-fe50 fe52
-fe54 fe66
-fe68 fe6b
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCsquare.pl b/contrib/perl5/lib/unicode/Is/DCsquare.pl
deleted file mode 100644
index f27993d..0000000
--- a/contrib/perl5/lib/unicode/Is/DCsquare.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3300 3357
-3371 3376
-337b 33dd
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCsub.pl b/contrib/perl5/lib/unicode/Is/DCsub.pl
deleted file mode 100644
index f709a22..0000000
--- a/contrib/perl5/lib/unicode/Is/DCsub.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2080 208e
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCsuper.pl b/contrib/perl5/lib/unicode/Is/DCsuper.pl
deleted file mode 100644
index 1e6a0c5..0000000
--- a/contrib/perl5/lib/unicode/Is/DCsuper.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00aa
-00b2 00b3
-00b9 00ba
-02b0 02b8
-02e0 02e4
-2070
-2074 207f
-2120
-2122
-3192 319f
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCvertical.pl b/contrib/perl5/lib/unicode/Is/DCvertical.pl
deleted file mode 100644
index 33b9feb..0000000
--- a/contrib/perl5/lib/unicode/Is/DCvertical.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-fe30 fe44
-END
diff --git a/contrib/perl5/lib/unicode/Is/DCwide.pl b/contrib/perl5/lib/unicode/Is/DCwide.pl
deleted file mode 100644
index afe1e06b..0000000
--- a/contrib/perl5/lib/unicode/Is/DCwide.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3000
-ff01 ff5e
-ffe0 ffe6
-END
diff --git a/contrib/perl5/lib/unicode/Is/DecoCanon.pl b/contrib/perl5/lib/unicode/Is/DecoCanon.pl
deleted file mode 100644
index 57c167b..0000000
--- a/contrib/perl5/lib/unicode/Is/DecoCanon.pl
+++ /dev/null
@@ -1,212 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00c0 00c5
-00c7 00cf
-00d1 00d6
-00d9 00dd
-00e0 00e5
-00e7 00ef
-00f1 00f6
-00f9 00fd
-00ff 010f
-0112 0125
-0128 0130
-0134 0137
-0139 013e
-0143 0148
-014c 0151
-0154 0165
-0168 017e
-01a0 01a1
-01af 01b0
-01cd 01dc
-01de 01e3
-01e6 01f0
-01f4 01f5
-01f8 021b
-021e 021f
-0226 0233
-0340 0341
-0343 0344
-0374
-037e
-0385 038a
-038c
-038e 0390
-03aa 03b0
-03ca 03ce
-03d3 03d4
-0400 0401
-0403
-0407
-040c 040e
-0419
-0439
-0450 0451
-0453
-0457
-045c 045e
-0476 0477
-04c1 04c2
-04d0 04d3
-04d6 04d7
-04da 04df
-04e2 04e7
-04ea 04f5
-04f8 04f9
-0622 0626
-06c0
-06c2
-06d3
-0929
-0931
-0934
-0958 095f
-09cb 09cc
-09dc 09dd
-09df
-0a33
-0a36
-0a59 0a5b
-0a5e
-0b48
-0b4b 0b4c
-0b5c 0b5d
-0b94
-0bca 0bcc
-0c48
-0cc0
-0cc7 0cc8
-0cca 0ccb
-0d4a 0d4c
-0dda
-0ddc 0dde
-0f43
-0f4d
-0f52
-0f57
-0f5c
-0f69
-0f73
-0f75 0f76
-0f78
-0f81
-0f93
-0f9d
-0fa2
-0fa7
-0fac
-0fb9
-1026
-1e00 1e99
-1e9b
-1ea0 1ef9
-1f00 1f15
-1f18 1f1d
-1f20 1f45
-1f48 1f4d
-1f50 1f57
-1f59
-1f5b
-1f5d
-1f5f 1f7d
-1f80 1fb4
-1fb6 1fbc
-1fbe
-1fc1 1fc4
-1fc6 1fd3
-1fd6 1fdb
-1fdd 1fef
-1ff2 1ff4
-1ff6 1ffd
-2000 2001
-2126
-212a 212b
-219a 219b
-21ae
-21cd 21cf
-2204
-2209
-220c
-2224
-2226
-2241
-2244
-2247
-2249
-2260
-2262
-226d 2271
-2274 2275
-2278 2279
-2280 2281
-2284 2285
-2288 2289
-22ac 22af
-22e0 22e3
-22ea 22ed
-2329 232a
-304c
-304e
-3050
-3052
-3054
-3056
-3058
-305a
-305c
-305e
-3060
-3062
-3065
-3067
-3069
-3070 3071
-3073 3074
-3076 3077
-3079 307a
-307c 307d
-3094
-309e
-30ac
-30ae
-30b0
-30b2
-30b4
-30b6
-30b8
-30ba
-30bc
-30be
-30c0
-30c2
-30c5
-30c7
-30c9
-30d0 30d1
-30d3 30d4
-30d6 30d7
-30d9 30da
-30dc 30dd
-30f4
-30f7 30fa
-30fe
-f900 fa0d
-fa10
-fa12
-fa15 fa1e
-fa20
-fa22
-fa25 fa26
-fa2a fa2d
-fb1d
-fb1f
-fb2a fb36
-fb38 fb3c
-fb3e
-fb40 fb41
-fb43 fb44
-fb46 fb4e
-END
diff --git a/contrib/perl5/lib/unicode/Is/DecoCompat.pl b/contrib/perl5/lib/unicode/Is/DecoCompat.pl
deleted file mode 100644
index 940d956..0000000
--- a/contrib/perl5/lib/unicode/Is/DecoCompat.pl
+++ /dev/null
@@ -1,107 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00a0
-00a8
-00aa
-00af
-00b2 00b5
-00b8 00ba
-00bc 00be
-0132 0133
-013f 0140
-0149
-017f
-01c4 01cc
-01f1 01f3
-02b0 02b8
-02d8 02dd
-02e0 02e4
-037a
-0384
-03d0 03d2
-03d5 03d6
-03f0 03f2
-0587
-0675 0678
-0e33
-0eb3
-0edc 0edd
-0f0c
-0f77
-0f79
-1e9a
-1fbd
-1fbf 1fc0
-1ffe
-2002 200a
-2011
-2017
-2024 2026
-202f
-2033 2034
-2036 2037
-203c
-203e
-2048 2049
-2070
-2074 208e
-20a8
-2100 2103
-2105 2107
-2109 2113
-2115 2116
-2119 211d
-2120 2122
-2124
-2128
-212c 212d
-212f 2131
-2133 2139
-2153 217f
-222c 222d
-222f 2230
-2460 24ea
-2e9f
-2ef3
-2f00 2fd5
-3000
-3036
-3038 303a
-309b 309c
-3131 318e
-3192 319f
-3200 321c
-3220 3243
-3260 327b
-3280 32b0
-32c0 32cb
-32d0 32fe
-3300 3376
-337b 33dd
-33e0 33fe
-fb00 fb06
-fb13 fb17
-fb20 fb29
-fb4f fbb1
-fbd3 fd3d
-fd50 fd8f
-fd92 fdc7
-fdf0 fdfb
-fe30 fe44
-fe49 fe52
-fe54 fe66
-fe68 fe6b
-fe70 fe72
-fe74
-fe76 fefc
-ff01 ff5e
-ff61 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-ffe0 ffe6
-ffe8 ffee
-END
diff --git a/contrib/perl5/lib/unicode/Is/Digit.pl b/contrib/perl5/lib/unicode/Is/Digit.pl
deleted file mode 100644
index 259bb89..0000000
--- a/contrib/perl5/lib/unicode/Is/Digit.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0030 0039
-0660 0669
-06f0 06f9
-0966 096f
-09e6 09ef
-0a66 0a6f
-0ae6 0aef
-0b66 0b6f
-0be7 0bef
-0c66 0c6f
-0ce6 0cef
-0d66 0d6f
-0e50 0e59
-0ed0 0ed9
-0f20 0f29
-1040 1049
-1369 1371
-17e0 17e9
-1810 1819
-ff10 ff19
-END
diff --git a/contrib/perl5/lib/unicode/Is/Graph.pl b/contrib/perl5/lib/unicode/Is/Graph.pl
deleted file mode 100644
index 238cc56..0000000
--- a/contrib/perl5/lib/unicode/Is/Graph.pl
+++ /dev/null
@@ -1,364 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0021 007e
-00a1 021f
-0222 0233
-0250 02ad
-02b0 02ee
-0300 034e
-0360 0362
-0374 0375
-037a
-037e
-0384 038a
-038c
-038e 03a1
-03a3 03ce
-03d0 03d7
-03da 03f3
-0400 0486
-0488 0489
-048c 04c4
-04c7 04c8
-04cb 04cc
-04d0 04f5
-04f8 04f9
-0531 0556
-0559 055f
-0561 0587
-0589 058a
-0591 05a1
-05a3 05b9
-05bb 05c4
-05d0 05ea
-05f0 05f4
-060c
-061b
-061f
-0621 063a
-0640 0655
-0660 066d
-0670 06ed
-06f0 06fe
-0700 070d
-0710 072c
-0730 074a
-0780 07b0
-0901 0903
-0905 0939
-093c 094d
-0950 0954
-0958 0970
-0981 0983
-0985 098c
-098f 0990
-0993 09a8
-09aa 09b0
-09b2
-09b6 09b9
-09bc
-09be 09c4
-09c7 09c8
-09cb 09cd
-09d7
-09dc 09dd
-09df 09e3
-09e6 09fa
-0a02
-0a05 0a0a
-0a0f 0a10
-0a13 0a28
-0a2a 0a30
-0a32 0a33
-0a35 0a36
-0a38 0a39
-0a3c
-0a3e 0a42
-0a47 0a48
-0a4b 0a4d
-0a59 0a5c
-0a5e
-0a66 0a74
-0a81 0a83
-0a85 0a8b
-0a8d
-0a8f 0a91
-0a93 0aa8
-0aaa 0ab0
-0ab2 0ab3
-0ab5 0ab9
-0abc 0ac5
-0ac7 0ac9
-0acb 0acd
-0ad0
-0ae0
-0ae6 0aef
-0b01 0b03
-0b05 0b0c
-0b0f 0b10
-0b13 0b28
-0b2a 0b30
-0b32 0b33
-0b36 0b39
-0b3c 0b43
-0b47 0b48
-0b4b 0b4d
-0b56 0b57
-0b5c 0b5d
-0b5f 0b61
-0b66 0b70
-0b82 0b83
-0b85 0b8a
-0b8e 0b90
-0b92 0b95
-0b99 0b9a
-0b9c
-0b9e 0b9f
-0ba3 0ba4
-0ba8 0baa
-0bae 0bb5
-0bb7 0bb9
-0bbe 0bc2
-0bc6 0bc8
-0bca 0bcd
-0bd7
-0be7 0bf2
-0c01 0c03
-0c05 0c0c
-0c0e 0c10
-0c12 0c28
-0c2a 0c33
-0c35 0c39
-0c3e 0c44
-0c46 0c48
-0c4a 0c4d
-0c55 0c56
-0c60 0c61
-0c66 0c6f
-0c82 0c83
-0c85 0c8c
-0c8e 0c90
-0c92 0ca8
-0caa 0cb3
-0cb5 0cb9
-0cbe 0cc4
-0cc6 0cc8
-0cca 0ccd
-0cd5 0cd6
-0cde
-0ce0 0ce1
-0ce6 0cef
-0d02 0d03
-0d05 0d0c
-0d0e 0d10
-0d12 0d28
-0d2a 0d39
-0d3e 0d43
-0d46 0d48
-0d4a 0d4d
-0d57
-0d60 0d61
-0d66 0d6f
-0d82 0d83
-0d85 0d96
-0d9a 0db1
-0db3 0dbb
-0dbd
-0dc0 0dc6
-0dca
-0dcf 0dd4
-0dd6
-0dd8 0ddf
-0df2 0df4
-0e01 0e3a
-0e3f 0e5b
-0e81 0e82
-0e84
-0e87 0e88
-0e8a
-0e8d
-0e94 0e97
-0e99 0e9f
-0ea1 0ea3
-0ea5
-0ea7
-0eaa 0eab
-0ead 0eb9
-0ebb 0ebd
-0ec0 0ec4
-0ec6
-0ec8 0ecd
-0ed0 0ed9
-0edc 0edd
-0f00 0f47
-0f49 0f6a
-0f71 0f8b
-0f90 0f97
-0f99 0fbc
-0fbe 0fcc
-0fcf
-1000 1021
-1023 1027
-1029 102a
-102c 1032
-1036 1039
-1040 1059
-10a0 10c5
-10d0 10f6
-10fb
-1100 1159
-115f 11a2
-11a8 11f9
-1200 1206
-1208 1246
-1248
-124a 124d
-1250 1256
-1258
-125a 125d
-1260 1286
-1288
-128a 128d
-1290 12ae
-12b0
-12b2 12b5
-12b8 12be
-12c0
-12c2 12c5
-12c8 12ce
-12d0 12d6
-12d8 12ee
-12f0 130e
-1310
-1312 1315
-1318 131e
-1320 1346
-1348 135a
-1361 137c
-13a0 13f4
-1401 1676
-1681 169c
-16a0 16f0
-1780 17dc
-17e0 17e9
-1800 180a
-1810 1819
-1820 1877
-1880 18a9
-1e00 1e9b
-1ea0 1ef9
-1f00 1f15
-1f18 1f1d
-1f20 1f45
-1f48 1f4d
-1f50 1f57
-1f59
-1f5b
-1f5d
-1f5f 1f7d
-1f80 1fb4
-1fb6 1fc4
-1fc6 1fd3
-1fd6 1fdb
-1fdd 1fef
-1ff2 1ff4
-1ff6 1ffe
-2010 2027
-2030 2046
-2048 204d
-2070
-2074 208e
-20a0 20af
-20d0 20e3
-2100 213a
-2153 2183
-2190 21f3
-2200 22f1
-2300 237b
-237d 239a
-2400 2426
-2440 244a
-2460 24ea
-2500 2595
-25a0 25f7
-2600 2613
-2619 2671
-2701 2704
-2706 2709
-270c 2727
-2729 274b
-274d
-274f 2752
-2756
-2758 275e
-2761 2767
-2776 2794
-2798 27af
-27b1 27be
-2800 28ff
-2e80 2e99
-2e9b 2ef3
-2f00 2fd5
-2ff0 2ffb
-3001 303a
-303e 303f
-3041 3094
-3099 309e
-30a1 30fe
-3105 312c
-3131 318e
-3190 31b7
-3200 321c
-3220 3243
-3260 327b
-327f 32b0
-32c0 32cb
-32d0 32fe
-3300 3376
-337b 33dd
-33e0 33fe
-3400 4db5
-4e00 9fa5
-a000 a48c
-a490 a4a1
-a4a4 a4b3
-a4b5 a4c0
-a4c2 a4c4
-a4c6
-ac00 d7a3
-e000 f8ff
-f900 fa2d
-fb00 fb06
-fb13 fb17
-fb1d fb36
-fb38 fb3c
-fb3e
-fb40 fb41
-fb43 fb44
-fb46 fbb1
-fbd3 fd3f
-fd50 fd8f
-fd92 fdc7
-fdf0 fdfb
-fe20 fe23
-fe30 fe44
-fe49 fe52
-fe54 fe66
-fe68 fe6b
-fe70 fe72
-fe74
-fe76 fefc
-ff01 ff5e
-ff61 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-ffe0 ffe6
-ffe8 ffee
-fffc fffd
-f0000 ffffd
-100000 10fffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/L.pl b/contrib/perl5/lib/unicode/Is/L.pl
deleted file mode 100644
index bfe2c27..0000000
--- a/contrib/perl5/lib/unicode/Is/L.pl
+++ /dev/null
@@ -1,260 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0041 005a
-0061 007a
-00aa
-00b5
-00ba
-00c0 00d6
-00d8 00f6
-00f8 021f
-0222 0233
-0250 02ad
-02b0 02b8
-02bb 02c1
-02d0 02d1
-02e0 02e4
-02ee
-037a
-0386
-0388 038a
-038c
-038e 03a1
-03a3 03ce
-03d0 03d7
-03da 03f3
-0400 0481
-048c 04c4
-04c7 04c8
-04cb 04cc
-04d0 04f5
-04f8 04f9
-0531 0556
-0559
-0561 0587
-05d0 05ea
-05f0 05f2
-0621 063a
-0640 064a
-0671 06d3
-06d5
-06e5 06e6
-06fa 06fc
-0710
-0712 072c
-0780 07a5
-0905 0939
-093d
-0950
-0958 0961
-0985 098c
-098f 0990
-0993 09a8
-09aa 09b0
-09b2
-09b6 09b9
-09dc 09dd
-09df 09e1
-09f0 09f1
-0a05 0a0a
-0a0f 0a10
-0a13 0a28
-0a2a 0a30
-0a32 0a33
-0a35 0a36
-0a38 0a39
-0a59 0a5c
-0a5e
-0a72 0a74
-0a85 0a8b
-0a8d
-0a8f 0a91
-0a93 0aa8
-0aaa 0ab0
-0ab2 0ab3
-0ab5 0ab9
-0abd
-0ad0
-0ae0
-0b05 0b0c
-0b0f 0b10
-0b13 0b28
-0b2a 0b30
-0b32 0b33
-0b36 0b39
-0b3d
-0b5c 0b5d
-0b5f 0b61
-0b85 0b8a
-0b8e 0b90
-0b92 0b95
-0b99 0b9a
-0b9c
-0b9e 0b9f
-0ba3 0ba4
-0ba8 0baa
-0bae 0bb5
-0bb7 0bb9
-0c05 0c0c
-0c0e 0c10
-0c12 0c28
-0c2a 0c33
-0c35 0c39
-0c60 0c61
-0c85 0c8c
-0c8e 0c90
-0c92 0ca8
-0caa 0cb3
-0cb5 0cb9
-0cde
-0ce0 0ce1
-0d05 0d0c
-0d0e 0d10
-0d12 0d28
-0d2a 0d39
-0d60 0d61
-0d85 0d96
-0d9a 0db1
-0db3 0dbb
-0dbd
-0dc0 0dc6
-0e01 0e30
-0e32 0e33
-0e40 0e46
-0e81 0e82
-0e84
-0e87 0e88
-0e8a
-0e8d
-0e94 0e97
-0e99 0e9f
-0ea1 0ea3
-0ea5
-0ea7
-0eaa 0eab
-0ead 0eb0
-0eb2 0eb3
-0ebd
-0ec0 0ec4
-0ec6
-0edc 0edd
-0f00
-0f40 0f47
-0f49 0f6a
-0f88 0f8b
-1000 1021
-1023 1027
-1029 102a
-1050 1055
-10a0 10c5
-10d0 10f6
-1100 1159
-115f 11a2
-11a8 11f9
-1200 1206
-1208 1246
-1248
-124a 124d
-1250 1256
-1258
-125a 125d
-1260 1286
-1288
-128a 128d
-1290 12ae
-12b0
-12b2 12b5
-12b8 12be
-12c0
-12c2 12c5
-12c8 12ce
-12d0 12d6
-12d8 12ee
-12f0 130e
-1310
-1312 1315
-1318 131e
-1320 1346
-1348 135a
-13a0 13f4
-1401 166c
-166f 1676
-1681 169a
-16a0 16ea
-1780 17b3
-1820 1877
-1880 18a8
-1e00 1e9b
-1ea0 1ef9
-1f00 1f15
-1f18 1f1d
-1f20 1f45
-1f48 1f4d
-1f50 1f57
-1f59
-1f5b
-1f5d
-1f5f 1f7d
-1f80 1fb4
-1fb6 1fbc
-1fbe
-1fc2 1fc4
-1fc6 1fcc
-1fd0 1fd3
-1fd6 1fdb
-1fe0 1fec
-1ff2 1ff4
-1ff6 1ffc
-207f
-2102
-2107
-210a 2113
-2115
-2119 211d
-2124
-2126
-2128
-212a 212d
-212f 2131
-2133 2139
-3005 3006
-3031 3035
-3041 3094
-309d 309e
-30a1 30fa
-30fc 30fe
-3105 312c
-3131 318e
-31a0 31b7
-3400 4db5
-4e00 9fa5
-a000 a48c
-ac00 d7a3
-f900 fa2d
-fb00 fb06
-fb13 fb17
-fb1d
-fb1f fb28
-fb2a fb36
-fb38 fb3c
-fb3e
-fb40 fb41
-fb43 fb44
-fb46 fbb1
-fbd3 fd3d
-fd50 fd8f
-fd92 fdc7
-fdf0 fdfb
-fe70 fe72
-fe74
-fe76 fefc
-ff21 ff3a
-ff41 ff5a
-ff66 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkAI.pl b/contrib/perl5/lib/unicode/Is/LbrkAI.pl
deleted file mode 100644
index 297f5cf..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkAI.pl
+++ /dev/null
@@ -1,139 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00a1
-00a7 00a8
-00aa
-00b2 00b3
-00b6 00ba
-00bc 00bf
-00c6
-00d0
-00d7 00d8
-00de 00e1
-00e6
-00e8 00ea
-00ec 00ed
-00f0
-00f2 00f3
-00f7 00fa
-00fc
-00fe
-0101
-0111
-0113
-011b
-0126 0127
-012b
-0131 0133
-0138
-013f 0142
-0144
-0148 014a
-014d
-0152 0153
-0166 0167
-016b
-01ce
-01d0
-01d2
-01d4
-01d6
-01d8
-01da
-01dc
-0251
-0261
-02c7
-02c9 02cb
-02cd
-02d0
-02d8 02db
-02dd
-0391 03a1
-03a3 03a9
-03b1 03c1
-03c3 03c9
-0401
-0410 044f
-0451
-2016
-2020 2021
-203b
-2074
-207f
-2081 2084
-2105
-2113
-2121 2122
-212b
-2154 2155
-215b
-215e
-2160 216b
-2170 2179
-2190 2199
-21d2
-21d4
-2200
-2202 2203
-2207 2208
-220b
-220f
-2211
-2215
-221a
-221d 2220
-2223
-2225
-2227 222c
-222e
-2234 2237
-223c 223d
-2248
-224c
-2252
-2260 2261
-2264 2267
-226a 226b
-226e 226f
-2282 2283
-2286 2287
-2295
-2299
-22a5
-22bf
-2312
-2460 24bf
-24d0 24e9
-2500 254b
-2550 2574
-2580 258f
-2592 2595
-25a0 25a1
-25a3 25a9
-25b2 25b3
-25b6 25b7
-25bc 25bd
-25c0 25c1
-25c6 25c7
-25cb
-25ce 25d1
-25e2 25e5
-25ef
-2605 2606
-2609
-260e 260f
-261c
-261e
-2640
-2642
-2660 2661
-2663 2665
-2667 266a
-266c 266d
-266f
-e000 f8ff
-fffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkAL.pl b/contrib/perl5/lib/unicode/Is/LbrkAL.pl
deleted file mode 100644
index c1fc416..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkAL.pl
+++ /dev/null
@@ -1,387 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0023
-0026
-002a
-003c 003e
-0040 005a
-005e 007a
-007e
-00a6
-00a9
-00ac
-00ae 00af
-00b5
-00c0 00c5
-00c7 00cf
-00d1 00d6
-00d9 00dd
-00e2 00e5
-00e7
-00eb
-00ee 00ef
-00f1
-00f4 00f6
-00fb
-00fd
-00ff 0100
-0102 0110
-0112
-0114 011a
-011c 0125
-0128 012a
-012c 0130
-0134 0137
-0139 013e
-0143
-0145 0147
-014b 014c
-014e 0151
-0154 0165
-0168 016a
-016c 01cd
-01cf
-01d1
-01d3
-01d5
-01d7
-01d9
-01db
-01dd 021f
-0222 0233
-0250
-0252 0260
-0262 02ad
-02b0 02c6
-02ce 02cf
-02d1 02d7
-02dc
-02de 02ee
-0374 0375
-037a
-037e
-0384 038a
-038c
-038e 0390
-03aa 03b0
-03c2
-03ca 03ce
-03d0 03d7
-03da 03f3
-0400
-0402 040f
-0450
-0452 0482
-048c 04c4
-04c7 04c8
-04cb 04cc
-04d0 04f5
-04f8 04f9
-0531 0556
-0559 055f
-0561 0587
-05be
-05c0
-05c3
-05d0 05ea
-05f0 05f4
-060c
-061b
-061f
-0621 063a
-0640 064a
-066a 066d
-0671 06d5
-06e5 06e6
-06e9
-06fa 06fe
-0700 070d
-0710
-0712 072c
-0780 07a5
-0905 0939
-093d
-0950
-0958 0961
-0964 0965
-0970
-0985 098c
-098f 0990
-0993 09a8
-09aa 09b0
-09b2
-09b6 09b9
-09dc 09dd
-09df 09e1
-09f0 09f1
-09f4 09fa
-0a05 0a0a
-0a0f 0a10
-0a13 0a28
-0a2a 0a30
-0a32 0a33
-0a35 0a36
-0a38 0a39
-0a59 0a5c
-0a5e
-0a72 0a74
-0a85 0a8b
-0a8d
-0a8f 0a91
-0a93 0aa8
-0aaa 0ab0
-0ab2 0ab3
-0ab5 0ab9
-0abd
-0ad0
-0ae0
-0b05 0b0c
-0b0f 0b10
-0b13 0b28
-0b2a 0b30
-0b32 0b33
-0b36 0b39
-0b3d
-0b5c 0b5d
-0b5f 0b61
-0b70
-0b85 0b8a
-0b8e 0b90
-0b92 0b95
-0b99 0b9a
-0b9c
-0b9e 0b9f
-0ba3 0ba4
-0ba8 0baa
-0bae 0bb5
-0bb7 0bb9
-0bf0 0bf2
-0c05 0c0c
-0c0e 0c10
-0c12 0c28
-0c2a 0c33
-0c35 0c39
-0c60 0c61
-0c85 0c8c
-0c8e 0c90
-0c92 0ca8
-0caa 0cb3
-0cb5 0cb9
-0cde
-0ce0 0ce1
-0d05 0d0c
-0d0e 0d10
-0d12 0d28
-0d2a 0d39
-0d60 0d61
-0d85 0d96
-0d9a 0db1
-0db3 0dbb
-0dbd
-0dc0 0dc6
-0df4
-0e4f
-0f00 0f0a
-0f0d 0f17
-0f1a 0f1f
-0f2a 0f34
-0f36
-0f38
-0f40 0f47
-0f49 0f6a
-0f85
-0f88 0f8b
-0fbe 0fc5
-0fc7 0fcc
-0fcf
-104a 104f
-10a0 10c5
-10d0 10f6
-10fb
-1200 1206
-1208 1246
-1248
-124a 124d
-1250 1256
-1258
-125a 125d
-1260 1286
-1288
-128a 128d
-1290 12ae
-12b0
-12b2 12b5
-12b8 12be
-12c0
-12c2 12c5
-12c8 12ce
-12d0 12d6
-12d8 12ee
-12f0 130e
-1310
-1312 1315
-1318 131e
-1320 1346
-1348 135a
-1362 1368
-1372 137c
-13a0 13f4
-1401 1676
-1681 169a
-16a0 16f0
-17dc
-1800 1805
-1807 180a
-1820 1877
-1880 18a8
-1e00 1e9b
-1ea0 1ef9
-1f00 1f15
-1f18 1f1d
-1f20 1f45
-1f48 1f4d
-1f50 1f57
-1f59
-1f5b
-1f5d
-1f5f 1f7d
-1f80 1fb4
-1fb6 1fc4
-1fc6 1fd3
-1fd6 1fdb
-1fdd 1fef
-1ff2 1ff4
-1ff6 1ffe
-2015
-2017
-2022 2023
-2038
-203d 2043
-2048 204d
-2070
-2075 207c
-2080
-2085 208c
-2100 2102
-2104
-2106 2108
-210a 2112
-2114 2115
-2117 2120
-2123 2125
-2127 212a
-212c 213a
-2153
-2156 215a
-215c 215d
-215f
-216c 216f
-217a 2183
-219a 21d1
-21d3
-21d5 21f3
-2201
-2204 2206
-2209 220a
-220c 220e
-2210
-2214
-2216 2219
-221b 221c
-2221 2222
-2224
-2226
-222d
-222f 2233
-2238 223b
-223e 2247
-2249 224b
-224d 2251
-2253 225f
-2262 2263
-2268 2269
-226c 226d
-2270 2281
-2284 2285
-2288 2294
-2296 2298
-229a 22a4
-22a6 22be
-22c0 22f1
-2300 2311
-2313 2328
-232b 237b
-237d 239a
-2400 2426
-2440 244a
-24c0 24cf
-24ea
-254c 254f
-2575 257f
-2590 2591
-25a2
-25aa 25b1
-25b4 25b5
-25b8 25bb
-25be 25bf
-25c2 25c5
-25c8 25ca
-25cc 25cd
-25d2 25e1
-25e6 25ee
-25f0 25f7
-2600 2604
-2607 2608
-260a 260d
-2610 2613
-2619 261b
-261d
-261f 263f
-2641
-2643 265f
-2662
-2666
-266b
-266e
-2670 2671
-2701 2704
-2706 2709
-270c 2727
-2729 274b
-274d
-274f 2752
-2756
-2758 275e
-2761 2767
-2776 2794
-2798 27af
-27b1 27be
-2800 28ff
-fb00 fb06
-fb13 fb17
-fb1d
-fb1f fb36
-fb38 fb3c
-fb3e
-fb40 fb41
-fb43 fb44
-fb46 fbb1
-fbd3 fd3d
-fd50 fd8f
-fd92 fdc7
-fdf0 fdfb
-fe6b
-fe70 fe72
-fe74
-fe76 fefc
-ff66
-ff71 ff9d
-ffa0 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-ffe8 ffee
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkB2.pl b/contrib/perl5/lib/unicode/Is/LbrkB2.pl
deleted file mode 100644
index a1410da..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkB2.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2014
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkBA.pl b/contrib/perl5/lib/unicode/Is/LbrkBA.pl
deleted file mode 100644
index 93ec04e..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkBA.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0009
-007c
-00ad
-00b4
-058a
-0f0b
-1361
-1680
-17d5
-2000 2006
-2008 200a
-2010
-2012 2013
-2027
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkBB.pl b/contrib/perl5/lib/unicode/Is/LbrkBB.pl
deleted file mode 100644
index b9bc7e8..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkBB.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-02c8
-02cc
-1806
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkBK.pl b/contrib/perl5/lib/unicode/Is/LbrkBK.pl
deleted file mode 100644
index 17bb551..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkBK.pl
+++ /dev/null
@@ -1,7 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-000c
-2028 2029
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkCB.pl b/contrib/perl5/lib/unicode/Is/LbrkCB.pl
deleted file mode 100644
index 8da9eba..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkCB.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-fffc
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkCL.pl b/contrib/perl5/lib/unicode/Is/LbrkCL.pl
deleted file mode 100644
index 353c594..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkCL.pl
+++ /dev/null
@@ -1,47 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0029
-005d
-007d
-0f3b
-0f3d
-169c
-2046
-207e
-208e
-232a
-3001 3002
-3009
-300b
-300d
-300f
-3011
-3015
-3017
-3019
-301b
-301e 301f
-fd3f
-fe36
-fe38
-fe3a
-fe3c
-fe3e
-fe40
-fe42
-fe44
-fe50
-fe52
-fe5a
-fe5c
-fe5e
-ff09
-ff0c
-ff0e
-ff3d
-ff5d
-ff61
-ff63 ff64
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkCM.pl b/contrib/perl5/lib/unicode/Is/LbrkCM.pl
deleted file mode 100644
index 87c7833..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkCM.pl
+++ /dev/null
@@ -1,117 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 0008
-000b
-000e 001f
-007f 009f
-0300 034e
-0360 0362
-0483 0486
-0488 0489
-0591 05a1
-05a3 05b9
-05bb 05bd
-05bf
-05c1 05c2
-05c4
-064b 0655
-0670
-06d6 06e4
-06e7 06e8
-06ea 06ed
-070f
-0711
-0730 074a
-07a6 07b0
-0901 0903
-093c
-093e 094d
-0951 0954
-0962 0963
-0981 0983
-09bc
-09be 09c4
-09c7 09c8
-09cb 09cd
-09d7
-09e2 09e3
-0a02
-0a3c
-0a3e 0a42
-0a47 0a48
-0a4b 0a4d
-0a70 0a71
-0a81 0a83
-0abc
-0abe 0ac5
-0ac7 0ac9
-0acb 0acd
-0b01 0b03
-0b3c
-0b3e 0b43
-0b47 0b48
-0b4b 0b4d
-0b56 0b57
-0b82 0b83
-0bbe 0bc2
-0bc6 0bc8
-0bca 0bcd
-0bd7
-0c01 0c03
-0c3e 0c44
-0c46 0c48
-0c4a 0c4d
-0c55 0c56
-0c82 0c83
-0cbe 0cc4
-0cc6 0cc8
-0cca 0ccd
-0cd5 0cd6
-0d02 0d03
-0d3e 0d43
-0d46 0d48
-0d4a 0d4d
-0d57
-0d82 0d83
-0dca
-0dcf 0dd4
-0dd6
-0dd8 0ddf
-0df2 0df3
-0e31
-0e34 0e3a
-0e47 0e4e
-0eb1
-0eb4 0eb9
-0ebb 0ebc
-0ec8 0ecd
-0f18 0f19
-0f35
-0f37
-0f39
-0f3e 0f3f
-0f71 0f84
-0f86 0f87
-0f90 0f97
-0f99 0fbc
-0fc6
-102c 1032
-1036 1039
-1056 1059
-1160 11a2
-11a8 11f9
-17b4 17d3
-180b 180e
-18a9
-200c 200f
-202a 202e
-206a 206f
-20d0 20e3
-302a 302f
-3099 309a
-fb1e
-fe20 fe23
-fff9 fffb
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkCR.pl b/contrib/perl5/lib/unicode/Is/LbrkCR.pl
deleted file mode 100644
index 2548269..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkCR.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-000d
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkEX.pl b/contrib/perl5/lib/unicode/Is/LbrkEX.pl
deleted file mode 100644
index 173bf58..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkEX.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0021
-003f
-fe56 fe57
-ff01
-ff1f
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkGL.pl b/contrib/perl5/lib/unicode/Is/LbrkGL.pl
deleted file mode 100644
index 49bb985..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkGL.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00a0
-0f0c
-2007
-2011
-202f
-feff
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkHY.pl b/contrib/perl5/lib/unicode/Is/LbrkHY.pl
deleted file mode 100644
index 71e5886..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkHY.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-002d
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkID.pl b/contrib/perl5/lib/unicode/Is/LbrkID.pl
deleted file mode 100644
index 6e6100c..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkID.pl
+++ /dev/null
@@ -1,81 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1100 1159
-115f
-2e80 2e99
-2e9b 2ef3
-2f00 2fd5
-2ff0 2ffb
-3000
-3003 3004
-3006 3007
-3012 3013
-3020 3029
-3030 303a
-303e 303f
-3042
-3044
-3046
-3048
-304a 3062
-3064 3082
-3084
-3086
-3088 308d
-308f 3094
-30a2
-30a4
-30a6
-30a8
-30aa 30c2
-30c4 30e2
-30e4
-30e6
-30e8 30ed
-30ef 30f4
-30f7 30fa
-30fc
-30fe
-3105 312c
-3131 318e
-3190 31b7
-3200 321c
-3220 3243
-3260 327b
-327f 32b0
-32c0 32cb
-32d0 32fe
-3300 3376
-337b 33dd
-33e0 33fe
-3400 4db5
-4e00 9fa5
-a000 a48c
-a490 a4a1
-a4a4 a4b3
-a4b5 a4c0
-a4c2 a4c4
-a4c6
-ac00 d7a3
-f900 fa2d
-fe30 fe34
-fe49 fe4f
-fe51
-fe58
-fe5f fe66
-fe68
-ff02 ff03
-ff06 ff07
-ff0a ff0b
-ff0d
-ff0f ff19
-ff1c ff1e
-ff20 ff3a
-ff3c
-ff3e ff5a
-ff5c
-ff5e
-ffe2 ffe4
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkIN.pl b/contrib/perl5/lib/unicode/Is/LbrkIN.pl
deleted file mode 100644
index 1758673..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkIN.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2024 2026
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkIS.pl b/contrib/perl5/lib/unicode/Is/LbrkIS.pl
deleted file mode 100644
index 32dcfb0..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkIS.pl
+++ /dev/null
@@ -1,9 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-002c
-002e
-003a 003b
-0589
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkLF.pl b/contrib/perl5/lib/unicode/Is/LbrkLF.pl
deleted file mode 100644
index 9b845ae..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkLF.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-000a
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkNS.pl b/contrib/perl5/lib/unicode/Is/LbrkNS.pl
deleted file mode 100644
index b7ff279..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkNS.pl
+++ /dev/null
@@ -1,41 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0e5a 0e5b
-17d4
-17d6 17da
-203c
-2044
-3005
-301c
-3041
-3043
-3045
-3047
-3049
-3063
-3083
-3085
-3087
-308e
-309b 309e
-30a1
-30a3
-30a5
-30a7
-30a9
-30c3
-30e3
-30e5
-30e7
-30ee
-30f5 30f6
-30fb
-30fd
-fe54 fe55
-ff1a ff1b
-ff65
-ff67 ff70
-ff9e ff9f
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkNU.pl b/contrib/perl5/lib/unicode/Is/LbrkNU.pl
deleted file mode 100644
index eb51418..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkNU.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0030 0039
-0660 0669
-06f0 06f9
-0966 096f
-09e6 09ef
-0a66 0a6f
-0ae6 0aef
-0b66 0b6f
-0be7 0bef
-0c66 0c6f
-0ce6 0cef
-0d66 0d6f
-0e50 0e59
-0ed0 0ed9
-0f20 0f29
-1040 1049
-1369 1371
-17e0 17e9
-1810 1819
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkOP.pl b/contrib/perl5/lib/unicode/Is/LbrkOP.pl
deleted file mode 100644
index 90f1809..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkOP.pl
+++ /dev/null
@@ -1,43 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0028
-005b
-007b
-0f3a
-0f3c
-169b
-201a
-201e
-2045
-207d
-208d
-2329
-3008
-300a
-300c
-300e
-3010
-3014
-3016
-3018
-301a
-301d
-fd3e
-fe35
-fe37
-fe39
-fe3b
-fe3d
-fe3f
-fe41
-fe43
-fe59
-fe5b
-fe5d
-ff08
-ff3b
-ff5b
-ff62
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkPO.pl b/contrib/perl5/lib/unicode/Is/LbrkPO.pl
deleted file mode 100644
index 07f7bf7..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkPO.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0025
-00a2
-00b0
-2030 2037
-20a7
-2103
-2109
-2126
-fe6a
-ff05
-ffe0
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkPR.pl b/contrib/perl5/lib/unicode/Is/LbrkPR.pl
deleted file mode 100644
index 03466c9..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkPR.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0024
-002b
-005c
-00a3 00a5
-00b1
-09f2 09f3
-0e3f
-17db
-20a0 20a6
-20a8 20af
-2116
-2212 2213
-fe69
-ff04
-ffe1
-ffe5 ffe6
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkQU.pl b/contrib/perl5/lib/unicode/Is/LbrkQU.pl
deleted file mode 100644
index 35dac98..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkQU.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0022
-0027
-00ab
-00bb
-2018 2019
-201b 201d
-201f
-2039 203a
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkSA.pl b/contrib/perl5/lib/unicode/Is/LbrkSA.pl
deleted file mode 100644
index 4539e09..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkSA.pl
+++ /dev/null
@@ -1,30 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0e01 0e30
-0e32 0e33
-0e40 0e46
-0e81 0e82
-0e84
-0e87 0e88
-0e8a
-0e8d
-0e94 0e97
-0e99 0e9f
-0ea1 0ea3
-0ea5
-0ea7
-0eaa 0eab
-0ead 0eb0
-0eb2 0eb3
-0ebd
-0ec0 0ec4
-0ec6
-0edc 0edd
-1000 1021
-1023 1027
-1029 102a
-1050 1055
-1780 17b3
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkSG.pl b/contrib/perl5/lib/unicode/Is/LbrkSG.pl
deleted file mode 100644
index 33e1dac..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkSG.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-d800 db7f
-db80 dbff
-dc00 dfff
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkSP.pl b/contrib/perl5/lib/unicode/Is/LbrkSP.pl
deleted file mode 100644
index 2153e12..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkSP.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0020
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkSY.pl b/contrib/perl5/lib/unicode/Is/LbrkSY.pl
deleted file mode 100644
index ce65fe1..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkSY.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-002f
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkXX.pl b/contrib/perl5/lib/unicode/Is/LbrkXX.pl
deleted file mode 100644
index c3b32ac..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkXX.pl
+++ /dev/null
@@ -1,5 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-END
diff --git a/contrib/perl5/lib/unicode/Is/LbrkZW.pl b/contrib/perl5/lib/unicode/Is/LbrkZW.pl
deleted file mode 100644
index 63c9dcf..0000000
--- a/contrib/perl5/lib/unicode/Is/LbrkZW.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-200b
-END
diff --git a/contrib/perl5/lib/unicode/Is/Ll.pl b/contrib/perl5/lib/unicode/Is/Ll.pl
deleted file mode 100644
index 03dafcc..0000000
--- a/contrib/perl5/lib/unicode/Is/Ll.pl
+++ /dev/null
@@ -1,379 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0061 007a
-00aa
-00b5
-00ba
-00df 00f6
-00f8 00ff
-0101
-0103
-0105
-0107
-0109
-010b
-010d
-010f
-0111
-0113
-0115
-0117
-0119
-011b
-011d
-011f
-0121
-0123
-0125
-0127
-0129
-012b
-012d
-012f
-0131
-0133
-0135
-0137 0138
-013a
-013c
-013e
-0140
-0142
-0144
-0146
-0148 0149
-014b
-014d
-014f
-0151
-0153
-0155
-0157
-0159
-015b
-015d
-015f
-0161
-0163
-0165
-0167
-0169
-016b
-016d
-016f
-0171
-0173
-0175
-0177
-017a
-017c
-017e 0180
-0183
-0185
-0188
-018c 018d
-0192
-0195
-0199 019b
-019e
-01a1
-01a3
-01a5
-01a8
-01aa 01ab
-01ad
-01b0
-01b4
-01b6
-01b9 01ba
-01bd 01bf
-01c6
-01c9
-01cc
-01ce
-01d0
-01d2
-01d4
-01d6
-01d8
-01da
-01dc 01dd
-01df
-01e1
-01e3
-01e5
-01e7
-01e9
-01eb
-01ed
-01ef 01f0
-01f3
-01f5
-01f9
-01fb
-01fd
-01ff
-0201
-0203
-0205
-0207
-0209
-020b
-020d
-020f
-0211
-0213
-0215
-0217
-0219
-021b
-021d
-021f
-0223
-0225
-0227
-0229
-022b
-022d
-022f
-0231
-0233
-0250 02ad
-0390
-03ac 03ce
-03d0 03d1
-03d5 03d7
-03db
-03dd
-03df
-03e1
-03e3
-03e5
-03e7
-03e9
-03eb
-03ed
-03ef 03f3
-0430 045f
-0461
-0463
-0465
-0467
-0469
-046b
-046d
-046f
-0471
-0473
-0475
-0477
-0479
-047b
-047d
-047f
-0481
-048d
-048f
-0491
-0493
-0495
-0497
-0499
-049b
-049d
-049f
-04a1
-04a3
-04a5
-04a7
-04a9
-04ab
-04ad
-04af
-04b1
-04b3
-04b5
-04b7
-04b9
-04bb
-04bd
-04bf
-04c2
-04c4
-04c8
-04cc
-04d1
-04d3
-04d5
-04d7
-04d9
-04db
-04dd
-04df
-04e1
-04e3
-04e5
-04e7
-04e9
-04eb
-04ed
-04ef
-04f1
-04f3
-04f5
-04f9
-0561 0587
-1e01
-1e03
-1e05
-1e07
-1e09
-1e0b
-1e0d
-1e0f
-1e11
-1e13
-1e15
-1e17
-1e19
-1e1b
-1e1d
-1e1f
-1e21
-1e23
-1e25
-1e27
-1e29
-1e2b
-1e2d
-1e2f
-1e31
-1e33
-1e35
-1e37
-1e39
-1e3b
-1e3d
-1e3f
-1e41
-1e43
-1e45
-1e47
-1e49
-1e4b
-1e4d
-1e4f
-1e51
-1e53
-1e55
-1e57
-1e59
-1e5b
-1e5d
-1e5f
-1e61
-1e63
-1e65
-1e67
-1e69
-1e6b
-1e6d
-1e6f
-1e71
-1e73
-1e75
-1e77
-1e79
-1e7b
-1e7d
-1e7f
-1e81
-1e83
-1e85
-1e87
-1e89
-1e8b
-1e8d
-1e8f
-1e91
-1e93
-1e95 1e9b
-1ea1
-1ea3
-1ea5
-1ea7
-1ea9
-1eab
-1ead
-1eaf
-1eb1
-1eb3
-1eb5
-1eb7
-1eb9
-1ebb
-1ebd
-1ebf
-1ec1
-1ec3
-1ec5
-1ec7
-1ec9
-1ecb
-1ecd
-1ecf
-1ed1
-1ed3
-1ed5
-1ed7
-1ed9
-1edb
-1edd
-1edf
-1ee1
-1ee3
-1ee5
-1ee7
-1ee9
-1eeb
-1eed
-1eef
-1ef1
-1ef3
-1ef5
-1ef7
-1ef9
-1f00 1f07
-1f10 1f15
-1f20 1f27
-1f30 1f37
-1f40 1f45
-1f50 1f57
-1f60 1f67
-1f70 1f7d
-1f80 1f87
-1f90 1f97
-1fa0 1fa7
-1fb0 1fb4
-1fb6 1fb7
-1fbe
-1fc2 1fc4
-1fc6 1fc7
-1fd0 1fd3
-1fd6 1fd7
-1fe0 1fe7
-1ff2 1ff4
-1ff6 1ff7
-207f
-210a
-210e 210f
-2113
-212f
-2134
-2139
-fb00 fb06
-fb13 fb17
-ff41 ff5a
-END
diff --git a/contrib/perl5/lib/unicode/Is/Lm.pl b/contrib/perl5/lib/unicode/Is/Lm.pl
deleted file mode 100644
index 23a3c55..0000000
--- a/contrib/perl5/lib/unicode/Is/Lm.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-02b0 02b8
-02bb 02c1
-02d0 02d1
-02e0 02e4
-02ee
-037a
-0559
-0640
-06e5 06e6
-0e46
-0ec6
-1843
-3005
-3031 3035
-309d 309e
-30fc 30fe
-ff70
-ff9e ff9f
-END
diff --git a/contrib/perl5/lib/unicode/Is/Lo.pl b/contrib/perl5/lib/unicode/Is/Lo.pl
deleted file mode 100644
index d82c6bb..0000000
--- a/contrib/perl5/lib/unicode/Is/Lo.pl
+++ /dev/null
@@ -1,191 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-01bb
-01c0 01c3
-05d0 05ea
-05f0 05f2
-0621 063a
-0641 064a
-0671 06d3
-06d5
-06fa 06fc
-0710
-0712 072c
-0780 07a5
-0905 0939
-093d
-0950
-0958 0961
-0985 098c
-098f 0990
-0993 09a8
-09aa 09b0
-09b2
-09b6 09b9
-09dc 09dd
-09df 09e1
-09f0 09f1
-0a05 0a0a
-0a0f 0a10
-0a13 0a28
-0a2a 0a30
-0a32 0a33
-0a35 0a36
-0a38 0a39
-0a59 0a5c
-0a5e
-0a72 0a74
-0a85 0a8b
-0a8d
-0a8f 0a91
-0a93 0aa8
-0aaa 0ab0
-0ab2 0ab3
-0ab5 0ab9
-0abd
-0ad0
-0ae0
-0b05 0b0c
-0b0f 0b10
-0b13 0b28
-0b2a 0b30
-0b32 0b33
-0b36 0b39
-0b3d
-0b5c 0b5d
-0b5f 0b61
-0b85 0b8a
-0b8e 0b90
-0b92 0b95
-0b99 0b9a
-0b9c
-0b9e 0b9f
-0ba3 0ba4
-0ba8 0baa
-0bae 0bb5
-0bb7 0bb9
-0c05 0c0c
-0c0e 0c10
-0c12 0c28
-0c2a 0c33
-0c35 0c39
-0c60 0c61
-0c85 0c8c
-0c8e 0c90
-0c92 0ca8
-0caa 0cb3
-0cb5 0cb9
-0cde
-0ce0 0ce1
-0d05 0d0c
-0d0e 0d10
-0d12 0d28
-0d2a 0d39
-0d60 0d61
-0d85 0d96
-0d9a 0db1
-0db3 0dbb
-0dbd
-0dc0 0dc6
-0e01 0e30
-0e32 0e33
-0e40 0e45
-0e81 0e82
-0e84
-0e87 0e88
-0e8a
-0e8d
-0e94 0e97
-0e99 0e9f
-0ea1 0ea3
-0ea5
-0ea7
-0eaa 0eab
-0ead 0eb0
-0eb2 0eb3
-0ebd
-0ec0 0ec4
-0edc 0edd
-0f00
-0f40 0f47
-0f49 0f6a
-0f88 0f8b
-1000 1021
-1023 1027
-1029 102a
-1050 1055
-10d0 10f6
-1100 1159
-115f 11a2
-11a8 11f9
-1200 1206
-1208 1246
-1248
-124a 124d
-1250 1256
-1258
-125a 125d
-1260 1286
-1288
-128a 128d
-1290 12ae
-12b0
-12b2 12b5
-12b8 12be
-12c0
-12c2 12c5
-12c8 12ce
-12d0 12d6
-12d8 12ee
-12f0 130e
-1310
-1312 1315
-1318 131e
-1320 1346
-1348 135a
-13a0 13f4
-1401 166c
-166f 1676
-1681 169a
-16a0 16ea
-1780 17b3
-1820 1842
-1844 1877
-1880 18a8
-2135 2138
-3006
-3041 3094
-30a1 30fa
-3105 312c
-3131 318e
-31a0 31b7
-3400 4db5
-4e00 9fa5
-a000 a48c
-ac00 d7a3
-f900 fa2d
-fb1d
-fb1f fb28
-fb2a fb36
-fb38 fb3c
-fb3e
-fb40 fb41
-fb43 fb44
-fb46 fbb1
-fbd3 fd3d
-fd50 fd8f
-fd92 fdc7
-fdf0 fdfb
-fe70 fe72
-fe74
-fe76 fefc
-ff66 ff6f
-ff71 ff9d
-ffa0 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-END
diff --git a/contrib/perl5/lib/unicode/Is/Lower.pl b/contrib/perl5/lib/unicode/Is/Lower.pl
deleted file mode 100644
index 03dafcc..0000000
--- a/contrib/perl5/lib/unicode/Is/Lower.pl
+++ /dev/null
@@ -1,379 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0061 007a
-00aa
-00b5
-00ba
-00df 00f6
-00f8 00ff
-0101
-0103
-0105
-0107
-0109
-010b
-010d
-010f
-0111
-0113
-0115
-0117
-0119
-011b
-011d
-011f
-0121
-0123
-0125
-0127
-0129
-012b
-012d
-012f
-0131
-0133
-0135
-0137 0138
-013a
-013c
-013e
-0140
-0142
-0144
-0146
-0148 0149
-014b
-014d
-014f
-0151
-0153
-0155
-0157
-0159
-015b
-015d
-015f
-0161
-0163
-0165
-0167
-0169
-016b
-016d
-016f
-0171
-0173
-0175
-0177
-017a
-017c
-017e 0180
-0183
-0185
-0188
-018c 018d
-0192
-0195
-0199 019b
-019e
-01a1
-01a3
-01a5
-01a8
-01aa 01ab
-01ad
-01b0
-01b4
-01b6
-01b9 01ba
-01bd 01bf
-01c6
-01c9
-01cc
-01ce
-01d0
-01d2
-01d4
-01d6
-01d8
-01da
-01dc 01dd
-01df
-01e1
-01e3
-01e5
-01e7
-01e9
-01eb
-01ed
-01ef 01f0
-01f3
-01f5
-01f9
-01fb
-01fd
-01ff
-0201
-0203
-0205
-0207
-0209
-020b
-020d
-020f
-0211
-0213
-0215
-0217
-0219
-021b
-021d
-021f
-0223
-0225
-0227
-0229
-022b
-022d
-022f
-0231
-0233
-0250 02ad
-0390
-03ac 03ce
-03d0 03d1
-03d5 03d7
-03db
-03dd
-03df
-03e1
-03e3
-03e5
-03e7
-03e9
-03eb
-03ed
-03ef 03f3
-0430 045f
-0461
-0463
-0465
-0467
-0469
-046b
-046d
-046f
-0471
-0473
-0475
-0477
-0479
-047b
-047d
-047f
-0481
-048d
-048f
-0491
-0493
-0495
-0497
-0499
-049b
-049d
-049f
-04a1
-04a3
-04a5
-04a7
-04a9
-04ab
-04ad
-04af
-04b1
-04b3
-04b5
-04b7
-04b9
-04bb
-04bd
-04bf
-04c2
-04c4
-04c8
-04cc
-04d1
-04d3
-04d5
-04d7
-04d9
-04db
-04dd
-04df
-04e1
-04e3
-04e5
-04e7
-04e9
-04eb
-04ed
-04ef
-04f1
-04f3
-04f5
-04f9
-0561 0587
-1e01
-1e03
-1e05
-1e07
-1e09
-1e0b
-1e0d
-1e0f
-1e11
-1e13
-1e15
-1e17
-1e19
-1e1b
-1e1d
-1e1f
-1e21
-1e23
-1e25
-1e27
-1e29
-1e2b
-1e2d
-1e2f
-1e31
-1e33
-1e35
-1e37
-1e39
-1e3b
-1e3d
-1e3f
-1e41
-1e43
-1e45
-1e47
-1e49
-1e4b
-1e4d
-1e4f
-1e51
-1e53
-1e55
-1e57
-1e59
-1e5b
-1e5d
-1e5f
-1e61
-1e63
-1e65
-1e67
-1e69
-1e6b
-1e6d
-1e6f
-1e71
-1e73
-1e75
-1e77
-1e79
-1e7b
-1e7d
-1e7f
-1e81
-1e83
-1e85
-1e87
-1e89
-1e8b
-1e8d
-1e8f
-1e91
-1e93
-1e95 1e9b
-1ea1
-1ea3
-1ea5
-1ea7
-1ea9
-1eab
-1ead
-1eaf
-1eb1
-1eb3
-1eb5
-1eb7
-1eb9
-1ebb
-1ebd
-1ebf
-1ec1
-1ec3
-1ec5
-1ec7
-1ec9
-1ecb
-1ecd
-1ecf
-1ed1
-1ed3
-1ed5
-1ed7
-1ed9
-1edb
-1edd
-1edf
-1ee1
-1ee3
-1ee5
-1ee7
-1ee9
-1eeb
-1eed
-1eef
-1ef1
-1ef3
-1ef5
-1ef7
-1ef9
-1f00 1f07
-1f10 1f15
-1f20 1f27
-1f30 1f37
-1f40 1f45
-1f50 1f57
-1f60 1f67
-1f70 1f7d
-1f80 1f87
-1f90 1f97
-1fa0 1fa7
-1fb0 1fb4
-1fb6 1fb7
-1fbe
-1fc2 1fc4
-1fc6 1fc7
-1fd0 1fd3
-1fd6 1fd7
-1fe0 1fe7
-1ff2 1ff4
-1ff6 1ff7
-207f
-210a
-210e 210f
-2113
-212f
-2134
-2139
-fb00 fb06
-fb13 fb17
-ff41 ff5a
-END
diff --git a/contrib/perl5/lib/unicode/Is/Lt.pl b/contrib/perl5/lib/unicode/Is/Lt.pl
deleted file mode 100644
index b19755c..0000000
--- a/contrib/perl5/lib/unicode/Is/Lt.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-01c5
-01c8
-01cb
-01f2
-1f88 1f8f
-1f98 1f9f
-1fa8 1faf
-1fbc
-1fcc
-1ffc
-END
diff --git a/contrib/perl5/lib/unicode/Is/Lu.pl b/contrib/perl5/lib/unicode/Is/Lu.pl
deleted file mode 100644
index 07dee48..0000000
--- a/contrib/perl5/lib/unicode/Is/Lu.pl
+++ /dev/null
@@ -1,376 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0041 005a
-00c0 00d6
-00d8 00de
-0100
-0102
-0104
-0106
-0108
-010a
-010c
-010e
-0110
-0112
-0114
-0116
-0118
-011a
-011c
-011e
-0120
-0122
-0124
-0126
-0128
-012a
-012c
-012e
-0130
-0132
-0134
-0136
-0139
-013b
-013d
-013f
-0141
-0143
-0145
-0147
-014a
-014c
-014e
-0150
-0152
-0154
-0156
-0158
-015a
-015c
-015e
-0160
-0162
-0164
-0166
-0168
-016a
-016c
-016e
-0170
-0172
-0174
-0176
-0178 0179
-017b
-017d
-0181 0182
-0184
-0186 0187
-0189 018b
-018e 0191
-0193 0194
-0196 0198
-019c 019d
-019f 01a0
-01a2
-01a4
-01a6 01a7
-01a9
-01ac
-01ae 01af
-01b1 01b3
-01b5
-01b7 01b8
-01bc
-01c4
-01c7
-01ca
-01cd
-01cf
-01d1
-01d3
-01d5
-01d7
-01d9
-01db
-01de
-01e0
-01e2
-01e4
-01e6
-01e8
-01ea
-01ec
-01ee
-01f1
-01f4
-01f6 01f8
-01fa
-01fc
-01fe
-0200
-0202
-0204
-0206
-0208
-020a
-020c
-020e
-0210
-0212
-0214
-0216
-0218
-021a
-021c
-021e
-0222
-0224
-0226
-0228
-022a
-022c
-022e
-0230
-0232
-0386
-0388 038a
-038c
-038e 038f
-0391 03a1
-03a3 03ab
-03d2 03d4
-03da
-03dc
-03de
-03e0
-03e2
-03e4
-03e6
-03e8
-03ea
-03ec
-03ee
-0400 042f
-0460
-0462
-0464
-0466
-0468
-046a
-046c
-046e
-0470
-0472
-0474
-0476
-0478
-047a
-047c
-047e
-0480
-048c
-048e
-0490
-0492
-0494
-0496
-0498
-049a
-049c
-049e
-04a0
-04a2
-04a4
-04a6
-04a8
-04aa
-04ac
-04ae
-04b0
-04b2
-04b4
-04b6
-04b8
-04ba
-04bc
-04be
-04c0 04c1
-04c3
-04c7
-04cb
-04d0
-04d2
-04d4
-04d6
-04d8
-04da
-04dc
-04de
-04e0
-04e2
-04e4
-04e6
-04e8
-04ea
-04ec
-04ee
-04f0
-04f2
-04f4
-04f8
-0531 0556
-10a0 10c5
-1e00
-1e02
-1e04
-1e06
-1e08
-1e0a
-1e0c
-1e0e
-1e10
-1e12
-1e14
-1e16
-1e18
-1e1a
-1e1c
-1e1e
-1e20
-1e22
-1e24
-1e26
-1e28
-1e2a
-1e2c
-1e2e
-1e30
-1e32
-1e34
-1e36
-1e38
-1e3a
-1e3c
-1e3e
-1e40
-1e42
-1e44
-1e46
-1e48
-1e4a
-1e4c
-1e4e
-1e50
-1e52
-1e54
-1e56
-1e58
-1e5a
-1e5c
-1e5e
-1e60
-1e62
-1e64
-1e66
-1e68
-1e6a
-1e6c
-1e6e
-1e70
-1e72
-1e74
-1e76
-1e78
-1e7a
-1e7c
-1e7e
-1e80
-1e82
-1e84
-1e86
-1e88
-1e8a
-1e8c
-1e8e
-1e90
-1e92
-1e94
-1ea0
-1ea2
-1ea4
-1ea6
-1ea8
-1eaa
-1eac
-1eae
-1eb0
-1eb2
-1eb4
-1eb6
-1eb8
-1eba
-1ebc
-1ebe
-1ec0
-1ec2
-1ec4
-1ec6
-1ec8
-1eca
-1ecc
-1ece
-1ed0
-1ed2
-1ed4
-1ed6
-1ed8
-1eda
-1edc
-1ede
-1ee0
-1ee2
-1ee4
-1ee6
-1ee8
-1eea
-1eec
-1eee
-1ef0
-1ef2
-1ef4
-1ef6
-1ef8
-1f08 1f0f
-1f18 1f1d
-1f28 1f2f
-1f38 1f3f
-1f48 1f4d
-1f59
-1f5b
-1f5d
-1f5f
-1f68 1f6f
-1fb8 1fbb
-1fc8 1fcb
-1fd8 1fdb
-1fe8 1fec
-1ff8 1ffb
-2102
-2107
-210b 210d
-2110 2112
-2115
-2119 211d
-2124
-2126
-2128
-212a 212d
-2130 2131
-2133
-ff21 ff3a
-END
diff --git a/contrib/perl5/lib/unicode/Is/M.pl b/contrib/perl5/lib/unicode/Is/M.pl
deleted file mode 100644
index e3ef7f3..0000000
--- a/contrib/perl5/lib/unicode/Is/M.pl
+++ /dev/null
@@ -1,105 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0300 034e
-0360 0362
-0483 0486
-0488 0489
-0591 05a1
-05a3 05b9
-05bb 05bd
-05bf
-05c1 05c2
-05c4
-064b 0655
-0670
-06d6 06e4
-06e7 06e8
-06ea 06ed
-0711
-0730 074a
-07a6 07b0
-0901 0903
-093c
-093e 094d
-0951 0954
-0962 0963
-0981 0983
-09bc
-09be 09c4
-09c7 09c8
-09cb 09cd
-09d7
-09e2 09e3
-0a02
-0a3c
-0a3e 0a42
-0a47 0a48
-0a4b 0a4d
-0a70 0a71
-0a81 0a83
-0abc
-0abe 0ac5
-0ac7 0ac9
-0acb 0acd
-0b01 0b03
-0b3c
-0b3e 0b43
-0b47 0b48
-0b4b 0b4d
-0b56 0b57
-0b82 0b83
-0bbe 0bc2
-0bc6 0bc8
-0bca 0bcd
-0bd7
-0c01 0c03
-0c3e 0c44
-0c46 0c48
-0c4a 0c4d
-0c55 0c56
-0c82 0c83
-0cbe 0cc4
-0cc6 0cc8
-0cca 0ccd
-0cd5 0cd6
-0d02 0d03
-0d3e 0d43
-0d46 0d48
-0d4a 0d4d
-0d57
-0d82 0d83
-0dca
-0dcf 0dd4
-0dd6
-0dd8 0ddf
-0df2 0df3
-0e31
-0e34 0e3a
-0e47 0e4e
-0eb1
-0eb4 0eb9
-0ebb 0ebc
-0ec8 0ecd
-0f18 0f19
-0f35
-0f37
-0f39
-0f3e 0f3f
-0f71 0f84
-0f86 0f87
-0f90 0f97
-0f99 0fbc
-0fc6
-102c 1032
-1036 1039
-1056 1059
-17b4 17d3
-18a9
-20d0 20e3
-302a 302f
-3099 309a
-fb1e
-fe20 fe23
-END
diff --git a/contrib/perl5/lib/unicode/Is/Mc.pl b/contrib/perl5/lib/unicode/Is/Mc.pl
deleted file mode 100644
index a76d66c..0000000
--- a/contrib/perl5/lib/unicode/Is/Mc.pl
+++ /dev/null
@@ -1,56 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0903
-093e 0940
-0949 094c
-0982 0983
-09be 09c0
-09c7 09c8
-09cb 09cc
-09d7
-0a3e 0a40
-0a83
-0abe 0ac0
-0ac9
-0acb 0acc
-0b02 0b03
-0b3e
-0b40
-0b47 0b48
-0b4b 0b4c
-0b57
-0b83
-0bbe 0bbf
-0bc1 0bc2
-0bc6 0bc8
-0bca 0bcc
-0bd7
-0c01 0c03
-0c41 0c44
-0c82 0c83
-0cbe
-0cc0 0cc4
-0cc7 0cc8
-0cca 0ccb
-0cd5 0cd6
-0d02 0d03
-0d3e 0d40
-0d46 0d48
-0d4a 0d4c
-0d57
-0d82 0d83
-0dcf 0dd1
-0dd8 0ddf
-0df2 0df3
-0f3e 0f3f
-0f7f
-102c
-1031
-1038
-1056 1057
-17b4 17b6
-17be 17c5
-17c7 17c8
-END
diff --git a/contrib/perl5/lib/unicode/Is/Me.pl b/contrib/perl5/lib/unicode/Is/Me.pl
deleted file mode 100644
index 23ef860..0000000
--- a/contrib/perl5/lib/unicode/Is/Me.pl
+++ /dev/null
@@ -1,9 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0488 0489
-06dd 06de
-20dd 20e0
-20e2 20e3
-END
diff --git a/contrib/perl5/lib/unicode/Is/Mirrored.pl b/contrib/perl5/lib/unicode/Is/Mirrored.pl
deleted file mode 100644
index d324f50..0000000
--- a/contrib/perl5/lib/unicode/Is/Mirrored.pl
+++ /dev/null
@@ -1,48 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0028 0029
-003c
-003e
-005b
-005d
-007b
-007d
-00ab
-00bb
-2039 203a
-2045 2046
-207d 207e
-208d 208e
-2201 2204
-2208 220d
-2211
-2215 2216
-221a 221d
-221f 2222
-2224
-2226
-222b 2233
-2239
-223b 224c
-2252 2255
-225f 2260
-2262
-2264 226b
-226e 228c
-228f 2292
-2298
-22a2 22a3
-22a6 22b8
-22be 22bf
-22c9 22cd
-22d0 22d1
-22d6 22ed
-22f0 22f1
-2308 230b
-2320 2321
-2329 232a
-3008 3011
-3014 301b
-END
diff --git a/contrib/perl5/lib/unicode/Is/Mn.pl b/contrib/perl5/lib/unicode/Is/Mn.pl
deleted file mode 100644
index 803e038..0000000
--- a/contrib/perl5/lib/unicode/Is/Mn.pl
+++ /dev/null
@@ -1,98 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0300 034e
-0360 0362
-0483 0486
-0591 05a1
-05a3 05b9
-05bb 05bd
-05bf
-05c1 05c2
-05c4
-064b 0655
-0670
-06d6 06dc
-06df 06e4
-06e7 06e8
-06ea 06ed
-0711
-0730 074a
-07a6 07b0
-0901 0902
-093c
-0941 0948
-094d
-0951 0954
-0962 0963
-0981
-09bc
-09c1 09c4
-09cd
-09e2 09e3
-0a02
-0a3c
-0a41 0a42
-0a47 0a48
-0a4b 0a4d
-0a70 0a71
-0a81 0a82
-0abc
-0ac1 0ac5
-0ac7 0ac8
-0acd
-0b01
-0b3c
-0b3f
-0b41 0b43
-0b4d
-0b56
-0b82
-0bc0
-0bcd
-0c3e 0c40
-0c46 0c48
-0c4a 0c4d
-0c55 0c56
-0cbf
-0cc6
-0ccc 0ccd
-0d41 0d43
-0d4d
-0dca
-0dd2 0dd4
-0dd6
-0e31
-0e34 0e3a
-0e47 0e4e
-0eb1
-0eb4 0eb9
-0ebb 0ebc
-0ec8 0ecd
-0f18 0f19
-0f35
-0f37
-0f39
-0f71 0f7e
-0f80 0f84
-0f86 0f87
-0f90 0f97
-0f99 0fbc
-0fc6
-102d 1030
-1032
-1036 1037
-1039
-1058 1059
-17b7 17bd
-17c6
-17c9 17d3
-18a9
-20d0 20dc
-20e1
-302a 302f
-3099 309a
-fb1e
-fe20 fe23
-END
diff --git a/contrib/perl5/lib/unicode/Is/N.pl b/contrib/perl5/lib/unicode/Is/N.pl
deleted file mode 100644
index 8667e77..0000000
--- a/contrib/perl5/lib/unicode/Is/N.pl
+++ /dev/null
@@ -1,43 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0030 0039
-00b2 00b3
-00b9
-00bc 00be
-0660 0669
-06f0 06f9
-0966 096f
-09e6 09ef
-09f4 09f9
-0a66 0a6f
-0ae6 0aef
-0b66 0b6f
-0be7 0bf2
-0c66 0c6f
-0ce6 0cef
-0d66 0d6f
-0e50 0e59
-0ed0 0ed9
-0f20 0f33
-1040 1049
-1369 137c
-16ee 16f0
-17e0 17e9
-1810 1819
-2070
-2074 2079
-2080 2089
-2153 2183
-2460 249b
-24ea
-2776 2793
-3007
-3021 3029
-3038 303a
-3192 3195
-3220 3229
-3280 3289
-ff10 ff19
-END
diff --git a/contrib/perl5/lib/unicode/Is/Nd.pl b/contrib/perl5/lib/unicode/Is/Nd.pl
deleted file mode 100644
index 259bb89..0000000
--- a/contrib/perl5/lib/unicode/Is/Nd.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0030 0039
-0660 0669
-06f0 06f9
-0966 096f
-09e6 09ef
-0a66 0a6f
-0ae6 0aef
-0b66 0b6f
-0be7 0bef
-0c66 0c6f
-0ce6 0cef
-0d66 0d6f
-0e50 0e59
-0ed0 0ed9
-0f20 0f29
-1040 1049
-1369 1371
-17e0 17e9
-1810 1819
-ff10 ff19
-END
diff --git a/contrib/perl5/lib/unicode/Is/Nl.pl b/contrib/perl5/lib/unicode/Is/Nl.pl
deleted file mode 100644
index bdeefd5..0000000
--- a/contrib/perl5/lib/unicode/Is/Nl.pl
+++ /dev/null
@@ -1,9 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2160 2183
-3007
-3021 3029
-3038 303a
-END
diff --git a/contrib/perl5/lib/unicode/Is/No.pl b/contrib/perl5/lib/unicode/Is/No.pl
deleted file mode 100644
index 13cac3b..0000000
--- a/contrib/perl5/lib/unicode/Is/No.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00b2 00b3
-00b9
-00bc 00be
-09f4 09f9
-0bf0 0bf2
-0f2a 0f33
-1372 137c
-16ee 16f0
-2070
-2074 2079
-2080 2089
-2153 215f
-2460 249b
-24ea
-2776 2793
-3192 3195
-3220 3229
-3280 3289
-END
diff --git a/contrib/perl5/lib/unicode/Is/P.pl b/contrib/perl5/lib/unicode/Is/P.pl
deleted file mode 100644
index 97330ec..0000000
--- a/contrib/perl5/lib/unicode/Is/P.pl
+++ /dev/null
@@ -1,80 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0021 0023
-0025 002a
-002c 002f
-003a 003b
-003f 0040
-005b 005d
-005f
-007b
-007d
-00a1
-00ab
-00ad
-00b7
-00bb
-00bf
-037e
-0387
-055a 055f
-0589 058a
-05be
-05c0
-05c3
-05f3 05f4
-060c
-061b
-061f
-066a 066d
-06d4
-0700 070d
-0964 0965
-0970
-0df4
-0e4f
-0e5a 0e5b
-0f04 0f12
-0f3a 0f3d
-0f85
-104a 104f
-10fb
-1361 1368
-166d 166e
-169b 169c
-16eb 16ed
-17d4 17da
-17dc
-1800 180a
-2010 2027
-2030 2043
-2045 2046
-2048 204d
-207d 207e
-208d 208e
-2329 232a
-3001 3003
-3008 3011
-3014 301f
-3030
-30fb
-fd3e fd3f
-fe30 fe44
-fe49 fe52
-fe54 fe61
-fe63
-fe68
-fe6a fe6b
-ff01 ff03
-ff05 ff0a
-ff0c ff0f
-ff1a ff1b
-ff1f ff20
-ff3b ff3d
-ff3f
-ff5b
-ff5d
-ff61 ff65
-END
diff --git a/contrib/perl5/lib/unicode/Is/Pc.pl b/contrib/perl5/lib/unicode/Is/Pc.pl
deleted file mode 100644
index e14874d..0000000
--- a/contrib/perl5/lib/unicode/Is/Pc.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-005f
-203f 2040
-30fb
-fe33 fe34
-fe4d fe4f
-ff3f
-ff65
-END
diff --git a/contrib/perl5/lib/unicode/Is/Pd.pl b/contrib/perl5/lib/unicode/Is/Pd.pl
deleted file mode 100644
index b4a2ffb..0000000
--- a/contrib/perl5/lib/unicode/Is/Pd.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-002d
-00ad
-058a
-1806
-2010 2015
-301c
-3030
-fe31 fe32
-fe58
-fe63
-ff0d
-END
diff --git a/contrib/perl5/lib/unicode/Is/Pe.pl b/contrib/perl5/lib/unicode/Is/Pe.pl
deleted file mode 100644
index 2b5bd3e..0000000
--- a/contrib/perl5/lib/unicode/Is/Pe.pl
+++ /dev/null
@@ -1,41 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0029
-005d
-007d
-0f3b
-0f3d
-169c
-2046
-207e
-208e
-232a
-3009
-300b
-300d
-300f
-3011
-3015
-3017
-3019
-301b
-301e 301f
-fd3f
-fe36
-fe38
-fe3a
-fe3c
-fe3e
-fe40
-fe42
-fe44
-fe5a
-fe5c
-fe5e
-ff09
-ff3d
-ff5d
-ff63
-END
diff --git a/contrib/perl5/lib/unicode/Is/Pf.pl b/contrib/perl5/lib/unicode/Is/Pf.pl
deleted file mode 100644
index b27a4f6..0000000
--- a/contrib/perl5/lib/unicode/Is/Pf.pl
+++ /dev/null
@@ -1,9 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00bb
-2019
-201d
-203a
-END
diff --git a/contrib/perl5/lib/unicode/Is/Pi.pl b/contrib/perl5/lib/unicode/Is/Pi.pl
deleted file mode 100644
index dbbae44..0000000
--- a/contrib/perl5/lib/unicode/Is/Pi.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00ab
-2018
-201b 201c
-201f
-2039
-END
diff --git a/contrib/perl5/lib/unicode/Is/Po.pl b/contrib/perl5/lib/unicode/Is/Po.pl
deleted file mode 100644
index 849ee17..0000000
--- a/contrib/perl5/lib/unicode/Is/Po.pl
+++ /dev/null
@@ -1,70 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0021 0023
-0025 0027
-002a
-002c
-002e 002f
-003a 003b
-003f 0040
-005c
-00a1
-00b7
-00bf
-037e
-0387
-055a 055f
-0589
-05be
-05c0
-05c3
-05f3 05f4
-060c
-061b
-061f
-066a 066d
-06d4
-0700 070d
-0964 0965
-0970
-0df4
-0e4f
-0e5a 0e5b
-0f04 0f12
-0f85
-104a 104f
-10fb
-1361 1368
-166d 166e
-16eb 16ed
-17d4 17da
-17dc
-1800 1805
-1807 180a
-2016 2017
-2020 2027
-2030 2038
-203b 203e
-2041 2043
-2048 204d
-3001 3003
-fe30
-fe49 fe4c
-fe50 fe52
-fe54 fe57
-fe5f fe61
-fe68
-fe6a fe6b
-ff01 ff03
-ff05 ff07
-ff0a
-ff0c
-ff0e ff0f
-ff1a ff1b
-ff1f ff20
-ff3c
-ff61
-ff64
-END
diff --git a/contrib/perl5/lib/unicode/Is/Print.pl b/contrib/perl5/lib/unicode/Is/Print.pl
deleted file mode 100644
index 1229a28..0000000
--- a/contrib/perl5/lib/unicode/Is/Print.pl
+++ /dev/null
@@ -1,365 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0020 007e
-00a0 021f
-0222 0233
-0250 02ad
-02b0 02ee
-0300 034e
-0360 0362
-0374 0375
-037a
-037e
-0384 038a
-038c
-038e 03a1
-03a3 03ce
-03d0 03d7
-03da 03f3
-0400 0486
-0488 0489
-048c 04c4
-04c7 04c8
-04cb 04cc
-04d0 04f5
-04f8 04f9
-0531 0556
-0559 055f
-0561 0587
-0589 058a
-0591 05a1
-05a3 05b9
-05bb 05c4
-05d0 05ea
-05f0 05f4
-060c
-061b
-061f
-0621 063a
-0640 0655
-0660 066d
-0670 06ed
-06f0 06fe
-0700 070d
-0710 072c
-0730 074a
-0780 07b0
-0901 0903
-0905 0939
-093c 094d
-0950 0954
-0958 0970
-0981 0983
-0985 098c
-098f 0990
-0993 09a8
-09aa 09b0
-09b2
-09b6 09b9
-09bc
-09be 09c4
-09c7 09c8
-09cb 09cd
-09d7
-09dc 09dd
-09df 09e3
-09e6 09fa
-0a02
-0a05 0a0a
-0a0f 0a10
-0a13 0a28
-0a2a 0a30
-0a32 0a33
-0a35 0a36
-0a38 0a39
-0a3c
-0a3e 0a42
-0a47 0a48
-0a4b 0a4d
-0a59 0a5c
-0a5e
-0a66 0a74
-0a81 0a83
-0a85 0a8b
-0a8d
-0a8f 0a91
-0a93 0aa8
-0aaa 0ab0
-0ab2 0ab3
-0ab5 0ab9
-0abc 0ac5
-0ac7 0ac9
-0acb 0acd
-0ad0
-0ae0
-0ae6 0aef
-0b01 0b03
-0b05 0b0c
-0b0f 0b10
-0b13 0b28
-0b2a 0b30
-0b32 0b33
-0b36 0b39
-0b3c 0b43
-0b47 0b48
-0b4b 0b4d
-0b56 0b57
-0b5c 0b5d
-0b5f 0b61
-0b66 0b70
-0b82 0b83
-0b85 0b8a
-0b8e 0b90
-0b92 0b95
-0b99 0b9a
-0b9c
-0b9e 0b9f
-0ba3 0ba4
-0ba8 0baa
-0bae 0bb5
-0bb7 0bb9
-0bbe 0bc2
-0bc6 0bc8
-0bca 0bcd
-0bd7
-0be7 0bf2
-0c01 0c03
-0c05 0c0c
-0c0e 0c10
-0c12 0c28
-0c2a 0c33
-0c35 0c39
-0c3e 0c44
-0c46 0c48
-0c4a 0c4d
-0c55 0c56
-0c60 0c61
-0c66 0c6f
-0c82 0c83
-0c85 0c8c
-0c8e 0c90
-0c92 0ca8
-0caa 0cb3
-0cb5 0cb9
-0cbe 0cc4
-0cc6 0cc8
-0cca 0ccd
-0cd5 0cd6
-0cde
-0ce0 0ce1
-0ce6 0cef
-0d02 0d03
-0d05 0d0c
-0d0e 0d10
-0d12 0d28
-0d2a 0d39
-0d3e 0d43
-0d46 0d48
-0d4a 0d4d
-0d57
-0d60 0d61
-0d66 0d6f
-0d82 0d83
-0d85 0d96
-0d9a 0db1
-0db3 0dbb
-0dbd
-0dc0 0dc6
-0dca
-0dcf 0dd4
-0dd6
-0dd8 0ddf
-0df2 0df4
-0e01 0e3a
-0e3f 0e5b
-0e81 0e82
-0e84
-0e87 0e88
-0e8a
-0e8d
-0e94 0e97
-0e99 0e9f
-0ea1 0ea3
-0ea5
-0ea7
-0eaa 0eab
-0ead 0eb9
-0ebb 0ebd
-0ec0 0ec4
-0ec6
-0ec8 0ecd
-0ed0 0ed9
-0edc 0edd
-0f00 0f47
-0f49 0f6a
-0f71 0f8b
-0f90 0f97
-0f99 0fbc
-0fbe 0fcc
-0fcf
-1000 1021
-1023 1027
-1029 102a
-102c 1032
-1036 1039
-1040 1059
-10a0 10c5
-10d0 10f6
-10fb
-1100 1159
-115f 11a2
-11a8 11f9
-1200 1206
-1208 1246
-1248
-124a 124d
-1250 1256
-1258
-125a 125d
-1260 1286
-1288
-128a 128d
-1290 12ae
-12b0
-12b2 12b5
-12b8 12be
-12c0
-12c2 12c5
-12c8 12ce
-12d0 12d6
-12d8 12ee
-12f0 130e
-1310
-1312 1315
-1318 131e
-1320 1346
-1348 135a
-1361 137c
-13a0 13f4
-1401 1676
-1680 169c
-16a0 16f0
-1780 17dc
-17e0 17e9
-1800 180a
-1810 1819
-1820 1877
-1880 18a9
-1e00 1e9b
-1ea0 1ef9
-1f00 1f15
-1f18 1f1d
-1f20 1f45
-1f48 1f4d
-1f50 1f57
-1f59
-1f5b
-1f5d
-1f5f 1f7d
-1f80 1fb4
-1fb6 1fc4
-1fc6 1fd3
-1fd6 1fdb
-1fdd 1fef
-1ff2 1ff4
-1ff6 1ffe
-2000 200b
-2010 2027
-202f 2046
-2048 204d
-2070
-2074 208e
-20a0 20af
-20d0 20e3
-2100 213a
-2153 2183
-2190 21f3
-2200 22f1
-2300 237b
-237d 239a
-2400 2426
-2440 244a
-2460 24ea
-2500 2595
-25a0 25f7
-2600 2613
-2619 2671
-2701 2704
-2706 2709
-270c 2727
-2729 274b
-274d
-274f 2752
-2756
-2758 275e
-2761 2767
-2776 2794
-2798 27af
-27b1 27be
-2800 28ff
-2e80 2e99
-2e9b 2ef3
-2f00 2fd5
-2ff0 2ffb
-3000 303a
-303e 303f
-3041 3094
-3099 309e
-30a1 30fe
-3105 312c
-3131 318e
-3190 31b7
-3200 321c
-3220 3243
-3260 327b
-327f 32b0
-32c0 32cb
-32d0 32fe
-3300 3376
-337b 33dd
-33e0 33fe
-3400 4db5
-4e00 9fa5
-a000 a48c
-a490 a4a1
-a4a4 a4b3
-a4b5 a4c0
-a4c2 a4c4
-a4c6
-ac00 d7a3
-e000 f8ff
-f900 fa2d
-fb00 fb06
-fb13 fb17
-fb1d fb36
-fb38 fb3c
-fb3e
-fb40 fb41
-fb43 fb44
-fb46 fbb1
-fbd3 fd3f
-fd50 fd8f
-fd92 fdc7
-fdf0 fdfb
-fe20 fe23
-fe30 fe44
-fe49 fe52
-fe54 fe66
-fe68 fe6b
-fe70 fe72
-fe74
-fe76 fefc
-ff01 ff5e
-ff61 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-ffe0 ffe6
-ffe8 ffee
-fffc fffd
-f0000 ffffd
-100000 10fffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/Ps.pl b/contrib/perl5/lib/unicode/Is/Ps.pl
deleted file mode 100644
index 90f1809..0000000
--- a/contrib/perl5/lib/unicode/Is/Ps.pl
+++ /dev/null
@@ -1,43 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0028
-005b
-007b
-0f3a
-0f3c
-169b
-201a
-201e
-2045
-207d
-208d
-2329
-3008
-300a
-300c
-300e
-3010
-3014
-3016
-3018
-301a
-301d
-fd3e
-fe35
-fe37
-fe39
-fe3b
-fe3d
-fe3f
-fe41
-fe43
-fe59
-fe5b
-fe5d
-ff08
-ff3b
-ff5b
-ff62
-END
diff --git a/contrib/perl5/lib/unicode/Is/Punct.pl b/contrib/perl5/lib/unicode/Is/Punct.pl
deleted file mode 100644
index 97330ec..0000000
--- a/contrib/perl5/lib/unicode/Is/Punct.pl
+++ /dev/null
@@ -1,80 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0021 0023
-0025 002a
-002c 002f
-003a 003b
-003f 0040
-005b 005d
-005f
-007b
-007d
-00a1
-00ab
-00ad
-00b7
-00bb
-00bf
-037e
-0387
-055a 055f
-0589 058a
-05be
-05c0
-05c3
-05f3 05f4
-060c
-061b
-061f
-066a 066d
-06d4
-0700 070d
-0964 0965
-0970
-0df4
-0e4f
-0e5a 0e5b
-0f04 0f12
-0f3a 0f3d
-0f85
-104a 104f
-10fb
-1361 1368
-166d 166e
-169b 169c
-16eb 16ed
-17d4 17da
-17dc
-1800 180a
-2010 2027
-2030 2043
-2045 2046
-2048 204d
-207d 207e
-208d 208e
-2329 232a
-3001 3003
-3008 3011
-3014 301f
-3030
-30fb
-fd3e fd3f
-fe30 fe44
-fe49 fe52
-fe54 fe61
-fe63
-fe68
-fe6a fe6b
-ff01 ff03
-ff05 ff0a
-ff0c ff0f
-ff1a ff1b
-ff1f ff20
-ff3b ff3d
-ff3f
-ff5b
-ff5d
-ff61 ff65
-END
diff --git a/contrib/perl5/lib/unicode/Is/S.pl b/contrib/perl5/lib/unicode/Is/S.pl
deleted file mode 100644
index a304e17..0000000
--- a/contrib/perl5/lib/unicode/Is/S.pl
+++ /dev/null
@@ -1,131 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0024
-002b
-003c 003e
-005e
-0060
-007c
-007e
-00a2 00a9
-00ac
-00ae 00b1
-00b4
-00b6
-00b8
-00d7
-00f7
-02b9 02ba
-02c2 02cf
-02d2 02df
-02e5 02ed
-0374 0375
-0384 0385
-0482
-06e9
-06fd 06fe
-09f2 09f3
-09fa
-0b70
-0e3f
-0f01 0f03
-0f13 0f17
-0f1a 0f1f
-0f34
-0f36
-0f38
-0fbe 0fc5
-0fc7 0fcc
-0fcf
-17db
-1fbd
-1fbf 1fc1
-1fcd 1fcf
-1fdd 1fdf
-1fed 1fef
-1ffd 1ffe
-2044
-207a 207c
-208a 208c
-20a0 20af
-2100 2101
-2103 2106
-2108 2109
-2114
-2116 2118
-211e 2123
-2125
-2127
-2129
-212e
-2132
-213a
-2190 21f3
-2200 22f1
-2300 2328
-232b 237b
-237d 239a
-2400 2426
-2440 244a
-249c 24e9
-2500 2595
-25a0 25f7
-2600 2613
-2619 2671
-2701 2704
-2706 2709
-270c 2727
-2729 274b
-274d
-274f 2752
-2756
-2758 275e
-2761 2767
-2794
-2798 27af
-27b1 27be
-2800 28ff
-2e80 2e99
-2e9b 2ef3
-2f00 2fd5
-2ff0 2ffb
-3004
-3012 3013
-3020
-3036 3037
-303e 303f
-309b 309c
-3190 3191
-3196 319f
-3200 321c
-322a 3243
-3260 327b
-327f
-328a 32b0
-32c0 32cb
-32d0 32fe
-3300 3376
-337b 33dd
-33e0 33fe
-a490 a4a1
-a4a4 a4b3
-a4b5 a4c0
-a4c2 a4c4
-a4c6
-fb29
-fe62
-fe64 fe66
-fe69
-ff04
-ff0b
-ff1c ff1e
-ff3e
-ff40
-ff5c
-ff5e
-ffe0 ffe6
-ffe8 ffee
-fffc fffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/Sc.pl b/contrib/perl5/lib/unicode/Is/Sc.pl
deleted file mode 100644
index adeb3e4..0000000
--- a/contrib/perl5/lib/unicode/Is/Sc.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0024
-00a2 00a5
-09f2 09f3
-0e3f
-17db
-20a0 20af
-fe69
-ff04
-ffe0 ffe1
-ffe5 ffe6
-END
diff --git a/contrib/perl5/lib/unicode/Is/Sk.pl b/contrib/perl5/lib/unicode/Is/Sk.pl
deleted file mode 100644
index 52f88ae..0000000
--- a/contrib/perl5/lib/unicode/Is/Sk.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-005e
-0060
-00a8
-00af
-00b4
-00b8
-02b9 02ba
-02c2 02cf
-02d2 02df
-02e5 02ed
-0374 0375
-0384 0385
-1fbd
-1fbf 1fc1
-1fcd 1fcf
-1fdd 1fdf
-1fed 1fef
-1ffd 1ffe
-309b 309c
-ff3e
-ff40
-ffe3
-END
diff --git a/contrib/perl5/lib/unicode/Is/Sm.pl b/contrib/perl5/lib/unicode/Is/Sm.pl
deleted file mode 100644
index 540da63..0000000
--- a/contrib/perl5/lib/unicode/Is/Sm.pl
+++ /dev/null
@@ -1,40 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-002b
-003c 003e
-007c
-007e
-00ac
-00b1
-00d7
-00f7
-2044
-207a 207c
-208a 208c
-2190 2194
-219a 219b
-21a0
-21a3
-21a6
-21ae
-21ce 21cf
-21d2
-21d4
-2200 22f1
-2308 230b
-2320 2321
-25b7
-25c1
-266f
-fb29
-fe62
-fe64 fe66
-ff0b
-ff1c ff1e
-ff5c
-ff5e
-ffe2
-ffe9 ffec
-END
diff --git a/contrib/perl5/lib/unicode/Is/So.pl b/contrib/perl5/lib/unicode/Is/So.pl
deleted file mode 100644
index 3caf617..0000000
--- a/contrib/perl5/lib/unicode/Is/So.pl
+++ /dev/null
@@ -1,103 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-00a6 00a7
-00a9
-00ae
-00b0
-00b6
-0482
-06e9
-06fd 06fe
-09fa
-0b70
-0f01 0f03
-0f13 0f17
-0f1a 0f1f
-0f34
-0f36
-0f38
-0fbe 0fc5
-0fc7 0fcc
-0fcf
-2100 2101
-2103 2106
-2108 2109
-2114
-2116 2118
-211e 2123
-2125
-2127
-2129
-212e
-2132
-213a
-2195 2199
-219c 219f
-21a1 21a2
-21a4 21a5
-21a7 21ad
-21af 21cd
-21d0 21d1
-21d3
-21d5 21f3
-2300 2307
-230c 231f
-2322 2328
-232b 237b
-237d 239a
-2400 2426
-2440 244a
-249c 24e9
-2500 2595
-25a0 25b6
-25b8 25c0
-25c2 25f7
-2600 2613
-2619 266e
-2670 2671
-2701 2704
-2706 2709
-270c 2727
-2729 274b
-274d
-274f 2752
-2756
-2758 275e
-2761 2767
-2794
-2798 27af
-27b1 27be
-2800 28ff
-2e80 2e99
-2e9b 2ef3
-2f00 2fd5
-2ff0 2ffb
-3004
-3012 3013
-3020
-3036 3037
-303e 303f
-3190 3191
-3196 319f
-3200 321c
-322a 3243
-3260 327b
-327f
-328a 32b0
-32c0 32cb
-32d0 32fe
-3300 3376
-337b 33dd
-33e0 33fe
-a490 a4a1
-a4a4 a4b3
-a4b5 a4c0
-a4c2 a4c4
-a4c6
-ffe4
-ffe8
-ffed ffee
-fffc fffd
-END
diff --git a/contrib/perl5/lib/unicode/Is/Space.pl b/contrib/perl5/lib/unicode/Is/Space.pl
deleted file mode 100644
index 9971082..0000000
--- a/contrib/perl5/lib/unicode/Is/Space.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0009 000d
-0020
-00a0
-1680
-2000 200b
-2028 2029
-202f
-3000
-END
diff --git a/contrib/perl5/lib/unicode/Is/SpacePerl.pl b/contrib/perl5/lib/unicode/Is/SpacePerl.pl
deleted file mode 100644
index 2bb74de..0000000
--- a/contrib/perl5/lib/unicode/Is/SpacePerl.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0009 000a
-000c 000d
-0020
-00a0
-1680
-2000 200b
-2028 2029
-202f
-3000
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylA.pl b/contrib/perl5/lib/unicode/Is/SylA.pl
deleted file mode 100644
index 6a3fc47..0000000
--- a/contrib/perl5/lib/unicode/Is/SylA.pl
+++ /dev/null
@@ -1,158 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1203
-120b
-1213
-121b
-1223
-122b
-1233
-123b
-1243
-1253
-1263
-126b
-1273
-127b
-1283
-1293
-129b
-12a3
-12ab
-12bb
-12cb
-12d3
-12db
-12e3
-12eb
-12f3
-12fb
-1303
-130b
-131b
-1323
-132b
-1333
-133b
-1343
-134b
-1353
-13a0
-13a6 13a7
-13ad
-13b3
-13b9
-13be 13bf
-13c6
-13cc
-13d3 13d4
-13dc 13dd
-13e3
-13e9
-13ef
-140a
-1438
-1455
-146a
-1472
-1490
-14aa
-14c7
-14da
-14f4
-1515
-152d
-154b
-154d
-1559
-1566
-156e
-1573
-1579
-1583
-1589
-158d
-1593
-159a
-159e
-15a4
-15ac
-15b3
-15b7
-15bb
-15bf
-15c3
-15c9
-15cf
-15d5
-15e1
-15e7
-15ed
-15f4
-15fa
-1600
-1607
-160d
-1613
-161b
-1621
-1627
-162d
-1633
-1639
-163f
-1645
-164d
-1653
-1659
-1660
-1666
-166c
-1675
-30a1 30a2
-30ab 30ac
-30b5 30b6
-30bf 30c0
-30ca
-30cf 30d1
-30de
-30e3 30e4
-30e9
-30ee 30ef
-30f5
-30f7
-32d0
-32d5
-32da
-32df
-32e4
-32e9
-32ee
-32f3
-32f6
-32fb
-ff67
-ff6c
-ff71
-ff76
-ff7b
-ff80
-ff85
-ff8a
-ff8f
-ff94
-ff97
-ff9c
-3041 3042
-304b 304c
-3055 3056
-305f 3060
-306a
-306f 3071
-307e
-3083 3084
-3089
-308e 308f
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylAA.pl b/contrib/perl5/lib/unicode/Is/SylAA.pl
deleted file mode 100644
index 6d1bd6d..0000000
--- a/contrib/perl5/lib/unicode/Is/SylAA.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-140b
-1439
-1456
-1473
-1491
-14ab
-14c8
-14db
-14f5
-1516
-152e
-154c
-155a
-1567
-157a
-1584
-1594
-15a5
-15ad
-1676
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylAAI.pl b/contrib/perl5/lib/unicode/Is/SylAAI.pl
deleted file mode 100644
index 83134b6..0000000
--- a/contrib/perl5/lib/unicode/Is/SylAAI.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1402
-1430
-144d
-146c
-148a
-14a4
-14c1
-14d4
-14ee
-1527
-1545
-1554
-157e
-158e
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylAI.pl b/contrib/perl5/lib/unicode/Is/SylAI.pl
deleted file mode 100644
index e639bd0..0000000
--- a/contrib/perl5/lib/unicode/Is/SylAI.pl
+++ /dev/null
@@ -1,7 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-141c
-166f 1670
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylC.pl b/contrib/perl5/lib/unicode/Is/SylC.pl
deleted file mode 100644
index fb8b08e..0000000
--- a/contrib/perl5/lib/unicode/Is/SylC.pl
+++ /dev/null
@@ -1,70 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1205
-120d
-1215
-121d
-1225
-122d
-1235
-123d
-1245
-1255
-1265
-126d
-1275
-127d
-1285
-1295
-129d
-12a5
-12ad
-12bd
-12cd
-12d5
-12dd
-12e5
-12ed
-12f5
-12fd
-1305
-130d
-131d
-1325
-132d
-1335
-133d
-1345
-134d
-1355
-13c0
-13cd
-141d
-142b 142e
-1449 144b
-1466
-1483
-1485 1488
-14a1
-14bb 14bf
-14d0 14d2
-14ea 14ec
-1505 1506
-1508 150b
-1525
-153e 1540
-1550 1552
-155d
-156a
-156f
-157b 157d
-1585
-1595 1596
-159f
-15a6
-15ae 15af
-30f3
-ff9d
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylE.pl b/contrib/perl5/lib/unicode/Is/SylE.pl
deleted file mode 100644
index d762748..0000000
--- a/contrib/perl5/lib/unicode/Is/SylE.pl
+++ /dev/null
@@ -1,147 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1204
-120c
-1214
-121c
-1224
-122c
-1234
-123c
-1244
-1254
-1264
-126c
-1274
-127c
-1284
-1294
-129c
-12a4
-12ac
-12bc
-12cc
-12d4
-12dc
-12e4
-12ec
-12f4
-12fc
-1304
-130c
-131c
-1324
-132c
-1334
-133c
-1344
-134c
-1354
-13a1
-13a8
-13ae
-13b4
-13ba
-13c1
-13c7
-13ce
-13d5 13d6
-13de
-13e4
-13ea
-13f0
-1401
-142f
-144c
-1467
-146b
-1489
-14a3
-14c0
-14d3
-14ed
-1510
-1526
-1542 1544
-1553
-155e 155f
-156b
-1570
-1574
-1586
-158a
-1597
-159b
-15a7
-15b0
-15b4
-15b8
-15bc
-15c0
-15c6
-15cc
-15d2
-15de
-15e4
-15ea
-15f1
-15f7
-15fd
-1604
-160a
-1610
-1617
-161e
-1624
-162a
-1630
-1636
-163c
-1642
-164a
-1650
-1656
-165d
-1663
-1669
-30a7 30a8
-30b1 30b2
-30bb 30bc
-30c6 30c7
-30cd
-30d8 30da
-30e1
-30ec
-30f1
-30f6
-30f9
-32d3
-32d8
-32dd
-32e2
-32e7
-32ec
-32f1
-32f9
-32fd
-ff6a
-ff74
-ff79
-ff7e
-ff83
-ff88
-ff8d
-ff92
-ff9a
-3047 3048
-3051 3052
-305b 305c
-3066 3067
-306d
-3078 307a
-3081
-308c
-3091
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylEE.pl b/contrib/perl5/lib/unicode/Is/SylEE.pl
deleted file mode 100644
index 9f8ff07..0000000
--- a/contrib/perl5/lib/unicode/Is/SylEE.pl
+++ /dev/null
@@ -1,34 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1408
-1436
-1453
-15c7
-15cd
-15d3
-15df
-15e5
-15eb
-15f2
-15f8
-15fe
-1605
-160b
-1611
-1618
-161f
-1625
-162b
-1631
-1637
-163d
-1643
-164b
-1651
-1657
-165e
-1664
-166a
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylI.pl b/contrib/perl5/lib/unicode/Is/SylI.pl
deleted file mode 100644
index 29bc70f..0000000
--- a/contrib/perl5/lib/unicode/Is/SylI.pl
+++ /dev/null
@@ -1,154 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1202
-120a
-1212
-121a
-1222
-122a
-1232
-123a
-1242
-1252
-1262
-126a
-1272
-127a
-1282
-1292
-129a
-12a2
-12aa
-12ba
-12ca
-12d2
-12da
-12e2
-12ea
-12f2
-12fa
-1302
-130a
-131a
-1322
-132a
-1332
-133a
-1342
-134a
-1352
-13a2
-13a9
-13af
-13b5
-13bb
-13c2
-13c8
-13cf
-13d7 13d8
-13df
-13e5
-13eb
-13f1
-1403
-1409
-1431
-1437
-144e
-1454
-1468
-146d
-148b
-14a5
-14c2
-14d5
-14ef
-1511
-1528
-1541
-1546
-1555
-1560 1561
-156c
-1571
-1575
-157f
-1587
-158b
-158f
-1598
-159c
-15a0
-15a8
-15b1
-15b5
-15b9
-15bd
-15c1
-15c8
-15ce
-15d4
-15e0
-15e6
-15ec
-15f3
-15f9
-15ff
-1606
-160c
-1612
-1619 161a
-1620
-1626
-162c
-1632
-1638
-163e
-1644
-164c
-1652
-1658
-165f
-1665
-166b
-1671
-30a3 30a4
-30ad 30ae
-30b7 30b8
-30c1 30c2
-30cb
-30d2 30d4
-30df
-30ea
-30f0
-30f8
-32d1
-32d6
-32db
-32e0
-32e5
-32ea
-32ef
-32f7
-32fc
-ff68
-ff72
-ff77
-ff7c
-ff81
-ff86
-ff8b
-ff90
-ff98
-3043 3044
-304d 304e
-3057 3058
-3061 3062
-306b
-3072 3074
-307f
-308a
-3090
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylII.pl b/contrib/perl5/lib/unicode/Is/SylII.pl
deleted file mode 100644
index 2dcd49f..0000000
--- a/contrib/perl5/lib/unicode/Is/SylII.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1404
-1432
-144f
-146e
-148c
-14a6
-14c3
-14d6
-14f0
-1512
-1529
-1547
-1556
-1562 1563
-1576
-1580
-1590
-15a1
-15a9
-1672
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylN.pl b/contrib/perl5/lib/unicode/Is/SylN.pl
deleted file mode 100644
index d7d90c7..0000000
--- a/contrib/perl5/lib/unicode/Is/SylN.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-3093
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylO.pl b/contrib/perl5/lib/unicode/Is/SylO.pl
deleted file mode 100644
index 2c795f0..0000000
--- a/contrib/perl5/lib/unicode/Is/SylO.pl
+++ /dev/null
@@ -1,157 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1206
-120e
-1216
-121e
-1226
-122e
-1236
-123e
-1246
-1256
-1266
-126e
-1276
-127e
-1286
-1296
-129e
-12a6
-12ae
-12be
-12ce
-12d6
-12de
-12e6
-12ee
-12f6
-12fe
-1306
-130e
-131e
-1326
-132e
-1336
-133e
-1346
-134e
-1356
-13a3
-13aa
-13b0
-13b6
-13bc
-13c3
-13c9
-13d0
-13d9
-13e0
-13e6
-13ec
-13f2
-1405
-1433
-1450
-1469
-146f
-148d
-14a7
-14c4
-14d7
-14f1
-1513
-152a
-1548
-154a
-1557
-1564
-156d
-1572
-1577
-1581
-1588
-158c
-1591
-1599
-159d
-15a2
-15aa
-15b2
-15b6
-15ba
-15be
-15c2
-15c5
-15cb
-15d1
-15dd
-15e3
-15e9
-15f0
-15f6
-15fc
-1603
-1609
-160f
-1616
-161d
-1623
-1629
-162f
-1635
-163b
-1641
-1649
-164f
-1655
-165c
-1662
-1668
-1673
-30a9 30aa
-30b3 30b4
-30bd 30be
-30c8 30c9
-30ce
-30db 30dd
-30e2
-30e7 30e8
-30ed
-30f2
-30fa
-32d4
-32d9
-32de
-32e3
-32e8
-32ed
-32f2
-32f5
-32fa
-32fe
-ff66
-ff6b
-ff6e
-ff75
-ff7a
-ff7f
-ff84
-ff89
-ff8e
-ff93
-ff96
-ff9b
-3049 304a
-3053 3054
-305d 305e
-3068 3069
-306e
-307b 307d
-3082
-3087 3088
-308d
-3092
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylOO.pl b/contrib/perl5/lib/unicode/Is/SylOO.pl
deleted file mode 100644
index 27c8032..0000000
--- a/contrib/perl5/lib/unicode/Is/SylOO.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1406 1407
-1434 1435
-1451 1452
-1470 1471
-148e 148f
-14a8 14a9
-14c5 14c6
-14d8 14d9
-14f2 14f3
-1514
-152b 152c
-1549
-1558
-1565
-1578
-1582
-1592
-15a3
-15ab
-1674
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylU.pl b/contrib/perl5/lib/unicode/Is/SylU.pl
deleted file mode 100644
index 117d981..0000000
--- a/contrib/perl5/lib/unicode/Is/SylU.pl
+++ /dev/null
@@ -1,122 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1201
-1209
-1211
-1219
-1221
-1229
-1231
-1239
-1241
-1251
-1261
-1269
-1271
-1279
-1281
-1291
-1299
-12a1
-12a9
-12b9
-12c9
-12d1
-12d9
-12e1
-12e9
-12f1
-12f9
-1301
-1309
-1319
-1321
-1329
-1331
-1339
-1341
-1349
-1351
-13a4
-13ab
-13b1
-13b7
-13bd
-13c4
-13ca
-13d1
-13da
-13e1
-13e7
-13ed
-13f3
-15c4
-15ca
-15d0
-15dc
-15e2
-15e8
-15ef
-15f5
-15fb
-1602
-1608
-160e
-1614 1615
-161c
-1622
-1628
-162e
-1634
-163a
-1640
-1648
-164e
-1654
-165b
-1661
-1667
-30a5 30a6
-30af 30b0
-30b9 30ba
-30c3 30c5
-30cc
-30d5 30d7
-30e0
-30e5 30e6
-30eb
-30f4
-32d2
-32d7
-32dc
-32e1
-32e6
-32eb
-32f0
-32f4
-32f8
-ff69
-ff6d
-ff6f
-ff73
-ff78
-ff7d
-ff82
-ff87
-ff8c
-ff91
-ff95
-ff99
-3045 3046
-304f 3050
-3059 305a
-3063 3065
-306c
-3075 3077
-3080
-3085 3086
-308b
-3094
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylV.pl b/contrib/perl5/lib/unicode/Is/SylV.pl
deleted file mode 100644
index e5a39ed..0000000
--- a/contrib/perl5/lib/unicode/Is/SylV.pl
+++ /dev/null
@@ -1,54 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1200
-1208
-1210
-1218
-1220
-1228
-1230
-1238
-1240
-1250
-1260
-1268
-1270
-1278
-1280
-1290
-1298
-12a0
-12a8
-12b8
-12c8
-12d0
-12d8
-12e0
-12e8
-12f0
-12f8
-1300
-1308
-1318
-1320
-1328
-1330
-1338
-1340
-1348
-1350
-13a5
-13ac
-13b2
-13b8
-13c5
-13cb
-13d2
-13db
-13e2
-13e8
-13ee
-13f4
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWA.pl b/contrib/perl5/lib/unicode/Is/SylWA.pl
deleted file mode 100644
index 39e94ca..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWA.pl
+++ /dev/null
@@ -1,49 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-120f
-1217
-121f
-1227
-122f
-1237
-123f
-124b
-125b
-1267
-126f
-1277
-127f
-128b
-1297
-129f
-12a7
-12b3
-12c3
-12df
-12e7
-12f7
-12ff
-1307
-1313
-1327
-132f
-1337
-133f
-134f
-1357
-1417 1418
-1444 1445
-1461 1462
-147e 147f
-149c 149d
-14b6 14b7
-14cb 14cc
-14e6 14e7
-1500 1501
-150c 150f
-1521 1522
-1539 153a
-15db
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWAA.pl b/contrib/perl5/lib/unicode/Is/SylWAA.pl
deleted file mode 100644
index cd560eb..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWAA.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1419 141b
-1446 1448
-1463 1465
-1480 1482
-149e 14a0
-14b8 14ba
-14cd 14cf
-14e8 14e9
-1502 1504
-1523 1524
-153b 153d
-154e 154f
-155b 155c
-1568 1569
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWC.pl b/contrib/perl5/lib/unicode/Is/SylWC.pl
deleted file mode 100644
index 4272b89..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWC.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-124d
-125d
-128d
-12b5
-12c5
-1315
-1484
-1507
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWE.pl b/contrib/perl5/lib/unicode/Is/SylWE.pl
deleted file mode 100644
index c4c5ba9..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWE.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-124c
-125c
-128c
-12b4
-12c4
-1314
-140c 140d
-143a 143b
-1457 1458
-1474 1475
-1492 1493
-14ac 14ad
-14c9 14ca
-14dc 14dd
-14f6 14f7
-1517 1518
-152f 1530
-15d8
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWEE.pl b/contrib/perl5/lib/unicode/Is/SylWEE.pl
deleted file mode 100644
index d316029..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWEE.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-15d9
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWI.pl b/contrib/perl5/lib/unicode/Is/SylWI.pl
deleted file mode 100644
index c914b07..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWI.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-124a
-125a
-128a
-12b2
-12c2
-1312
-140e 140f
-143c 143d
-1459 145a
-1476 1477
-1494 1495
-14ae 14af
-14de 14df
-14f8 14f9
-1519 151a
-1531 1532
-15da
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWII.pl b/contrib/perl5/lib/unicode/Is/SylWII.pl
deleted file mode 100644
index c990e43..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWII.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1410 1411
-143e 143f
-145b 145c
-1478 1479
-1496 1497
-14b0 14b1
-14e0 14e1
-14fa 14fb
-151b 151c
-1533 1534
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWO.pl b/contrib/perl5/lib/unicode/Is/SylWO.pl
deleted file mode 100644
index a73cbdd..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWO.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1412 1413
-1440 1441
-145d 145e
-147a 147b
-1498 1499
-14b2 14b3
-14e2 14e3
-14fc 14fd
-151d 151e
-1535 1536
-15d7
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWOO.pl b/contrib/perl5/lib/unicode/Is/SylWOO.pl
deleted file mode 100644
index 6e92f85..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWOO.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1414 1416
-1442 1443
-145f 1460
-147c 147d
-149a 149b
-14b4 14b5
-14e4 14e5
-14fe 14ff
-151f 1520
-1537 1538
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWU.pl b/contrib/perl5/lib/unicode/Is/SylWU.pl
deleted file mode 100644
index d165f41..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWU.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-15d6
-END
diff --git a/contrib/perl5/lib/unicode/Is/SylWV.pl b/contrib/perl5/lib/unicode/Is/SylWV.pl
deleted file mode 100644
index 6a06ae9..0000000
--- a/contrib/perl5/lib/unicode/Is/SylWV.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1248
-1258
-1288
-12b0
-12c0
-1310
-END
diff --git a/contrib/perl5/lib/unicode/Is/Syllable.pl b/contrib/perl5/lib/unicode/Is/Syllable.pl
deleted file mode 100644
index 707ad94..0000000
--- a/contrib/perl5/lib/unicode/Is/Syllable.pl
+++ /dev/null
@@ -1,4 +0,0 @@
-return <<'END';
-0d00 0d7f
-1200 135a
-END
diff --git a/contrib/perl5/lib/unicode/Is/Upper.pl b/contrib/perl5/lib/unicode/Is/Upper.pl
deleted file mode 100644
index 16f8752..0000000
--- a/contrib/perl5/lib/unicode/Is/Upper.pl
+++ /dev/null
@@ -1,379 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0041 005a
-00c0 00d6
-00d8 00de
-0100
-0102
-0104
-0106
-0108
-010a
-010c
-010e
-0110
-0112
-0114
-0116
-0118
-011a
-011c
-011e
-0120
-0122
-0124
-0126
-0128
-012a
-012c
-012e
-0130
-0132
-0134
-0136
-0139
-013b
-013d
-013f
-0141
-0143
-0145
-0147
-014a
-014c
-014e
-0150
-0152
-0154
-0156
-0158
-015a
-015c
-015e
-0160
-0162
-0164
-0166
-0168
-016a
-016c
-016e
-0170
-0172
-0174
-0176
-0178 0179
-017b
-017d
-0181 0182
-0184
-0186 0187
-0189 018b
-018e 0191
-0193 0194
-0196 0198
-019c 019d
-019f 01a0
-01a2
-01a4
-01a6 01a7
-01a9
-01ac
-01ae 01af
-01b1 01b3
-01b5
-01b7 01b8
-01bc
-01c4 01c5
-01c7 01c8
-01ca 01cb
-01cd
-01cf
-01d1
-01d3
-01d5
-01d7
-01d9
-01db
-01de
-01e0
-01e2
-01e4
-01e6
-01e8
-01ea
-01ec
-01ee
-01f1 01f2
-01f4
-01f6 01f8
-01fa
-01fc
-01fe
-0200
-0202
-0204
-0206
-0208
-020a
-020c
-020e
-0210
-0212
-0214
-0216
-0218
-021a
-021c
-021e
-0222
-0224
-0226
-0228
-022a
-022c
-022e
-0230
-0232
-0386
-0388 038a
-038c
-038e 038f
-0391 03a1
-03a3 03ab
-03d2 03d4
-03da
-03dc
-03de
-03e0
-03e2
-03e4
-03e6
-03e8
-03ea
-03ec
-03ee
-0400 042f
-0460
-0462
-0464
-0466
-0468
-046a
-046c
-046e
-0470
-0472
-0474
-0476
-0478
-047a
-047c
-047e
-0480
-048c
-048e
-0490
-0492
-0494
-0496
-0498
-049a
-049c
-049e
-04a0
-04a2
-04a4
-04a6
-04a8
-04aa
-04ac
-04ae
-04b0
-04b2
-04b4
-04b6
-04b8
-04ba
-04bc
-04be
-04c0 04c1
-04c3
-04c7
-04cb
-04d0
-04d2
-04d4
-04d6
-04d8
-04da
-04dc
-04de
-04e0
-04e2
-04e4
-04e6
-04e8
-04ea
-04ec
-04ee
-04f0
-04f2
-04f4
-04f8
-0531 0556
-10a0 10c5
-1e00
-1e02
-1e04
-1e06
-1e08
-1e0a
-1e0c
-1e0e
-1e10
-1e12
-1e14
-1e16
-1e18
-1e1a
-1e1c
-1e1e
-1e20
-1e22
-1e24
-1e26
-1e28
-1e2a
-1e2c
-1e2e
-1e30
-1e32
-1e34
-1e36
-1e38
-1e3a
-1e3c
-1e3e
-1e40
-1e42
-1e44
-1e46
-1e48
-1e4a
-1e4c
-1e4e
-1e50
-1e52
-1e54
-1e56
-1e58
-1e5a
-1e5c
-1e5e
-1e60
-1e62
-1e64
-1e66
-1e68
-1e6a
-1e6c
-1e6e
-1e70
-1e72
-1e74
-1e76
-1e78
-1e7a
-1e7c
-1e7e
-1e80
-1e82
-1e84
-1e86
-1e88
-1e8a
-1e8c
-1e8e
-1e90
-1e92
-1e94
-1ea0
-1ea2
-1ea4
-1ea6
-1ea8
-1eaa
-1eac
-1eae
-1eb0
-1eb2
-1eb4
-1eb6
-1eb8
-1eba
-1ebc
-1ebe
-1ec0
-1ec2
-1ec4
-1ec6
-1ec8
-1eca
-1ecc
-1ece
-1ed0
-1ed2
-1ed4
-1ed6
-1ed8
-1eda
-1edc
-1ede
-1ee0
-1ee2
-1ee4
-1ee6
-1ee8
-1eea
-1eec
-1eee
-1ef0
-1ef2
-1ef4
-1ef6
-1ef8
-1f08 1f0f
-1f18 1f1d
-1f28 1f2f
-1f38 1f3f
-1f48 1f4d
-1f59
-1f5b
-1f5d
-1f5f
-1f68 1f6f
-1f88 1f8f
-1f98 1f9f
-1fa8 1faf
-1fb8 1fbc
-1fc8 1fcc
-1fd8 1fdb
-1fe8 1fec
-1ff8 1ffc
-2102
-2107
-210b 210d
-2110 2112
-2115
-2119 211d
-2124
-2126
-2128
-212a 212d
-2130 2131
-2133
-ff21 ff3a
-END
diff --git a/contrib/perl5/lib/unicode/Is/Word.pl b/contrib/perl5/lib/unicode/Is/Word.pl
deleted file mode 100644
index 6ea32e6..0000000
--- a/contrib/perl5/lib/unicode/Is/Word.pl
+++ /dev/null
@@ -1,359 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0030 0039
-0041 005a
-005f
-0061 007a
-00aa
-00b2 00b3
-00b5
-00b9 00ba
-00bc 00be
-00c0 00d6
-00d8 00f6
-00f8 021f
-0222 0233
-0250 02ad
-02b0 02b8
-02bb 02c1
-02d0 02d1
-02e0 02e4
-02ee
-0300 034e
-0360 0362
-037a
-0386
-0388 038a
-038c
-038e 03a1
-03a3 03ce
-03d0 03d7
-03da 03f3
-0400 0481
-0483 0486
-0488 0489
-048c 04c4
-04c7 04c8
-04cb 04cc
-04d0 04f5
-04f8 04f9
-0531 0556
-0559
-0561 0587
-0591 05a1
-05a3 05b9
-05bb 05bd
-05bf
-05c1 05c2
-05c4
-05d0 05ea
-05f0 05f2
-0621 063a
-0640 0655
-0660 0669
-0670 06d3
-06d5 06e8
-06ea 06ed
-06f0 06fc
-0710 072c
-0730 074a
-0780 07b0
-0901 0903
-0905 0939
-093c 094d
-0950 0954
-0958 0963
-0966 096f
-0981 0983
-0985 098c
-098f 0990
-0993 09a8
-09aa 09b0
-09b2
-09b6 09b9
-09bc
-09be 09c4
-09c7 09c8
-09cb 09cd
-09d7
-09dc 09dd
-09df 09e3
-09e6 09f1
-09f4 09f9
-0a02
-0a05 0a0a
-0a0f 0a10
-0a13 0a28
-0a2a 0a30
-0a32 0a33
-0a35 0a36
-0a38 0a39
-0a3c
-0a3e 0a42
-0a47 0a48
-0a4b 0a4d
-0a59 0a5c
-0a5e
-0a66 0a74
-0a81 0a83
-0a85 0a8b
-0a8d
-0a8f 0a91
-0a93 0aa8
-0aaa 0ab0
-0ab2 0ab3
-0ab5 0ab9
-0abc 0ac5
-0ac7 0ac9
-0acb 0acd
-0ad0
-0ae0
-0ae6 0aef
-0b01 0b03
-0b05 0b0c
-0b0f 0b10
-0b13 0b28
-0b2a 0b30
-0b32 0b33
-0b36 0b39
-0b3c 0b43
-0b47 0b48
-0b4b 0b4d
-0b56 0b57
-0b5c 0b5d
-0b5f 0b61
-0b66 0b6f
-0b82 0b83
-0b85 0b8a
-0b8e 0b90
-0b92 0b95
-0b99 0b9a
-0b9c
-0b9e 0b9f
-0ba3 0ba4
-0ba8 0baa
-0bae 0bb5
-0bb7 0bb9
-0bbe 0bc2
-0bc6 0bc8
-0bca 0bcd
-0bd7
-0be7 0bf2
-0c01 0c03
-0c05 0c0c
-0c0e 0c10
-0c12 0c28
-0c2a 0c33
-0c35 0c39
-0c3e 0c44
-0c46 0c48
-0c4a 0c4d
-0c55 0c56
-0c60 0c61
-0c66 0c6f
-0c82 0c83
-0c85 0c8c
-0c8e 0c90
-0c92 0ca8
-0caa 0cb3
-0cb5 0cb9
-0cbe 0cc4
-0cc6 0cc8
-0cca 0ccd
-0cd5 0cd6
-0cde
-0ce0 0ce1
-0ce6 0cef
-0d02 0d03
-0d05 0d0c
-0d0e 0d10
-0d12 0d28
-0d2a 0d39
-0d3e 0d43
-0d46 0d48
-0d4a 0d4d
-0d57
-0d60 0d61
-0d66 0d6f
-0d82 0d83
-0d85 0d96
-0d9a 0db1
-0db3 0dbb
-0dbd
-0dc0 0dc6
-0dca
-0dcf 0dd4
-0dd6
-0dd8 0ddf
-0df2 0df3
-0e01 0e3a
-0e40 0e4e
-0e50 0e59
-0e81 0e82
-0e84
-0e87 0e88
-0e8a
-0e8d
-0e94 0e97
-0e99 0e9f
-0ea1 0ea3
-0ea5
-0ea7
-0eaa 0eab
-0ead 0eb9
-0ebb 0ebd
-0ec0 0ec4
-0ec6
-0ec8 0ecd
-0ed0 0ed9
-0edc 0edd
-0f00
-0f18 0f19
-0f20 0f33
-0f35
-0f37
-0f39
-0f3e 0f47
-0f49 0f6a
-0f71 0f84
-0f86 0f8b
-0f90 0f97
-0f99 0fbc
-0fc6
-1000 1021
-1023 1027
-1029 102a
-102c 1032
-1036 1039
-1040 1049
-1050 1059
-10a0 10c5
-10d0 10f6
-1100 1159
-115f 11a2
-11a8 11f9
-1200 1206
-1208 1246
-1248
-124a 124d
-1250 1256
-1258
-125a 125d
-1260 1286
-1288
-128a 128d
-1290 12ae
-12b0
-12b2 12b5
-12b8 12be
-12c0
-12c2 12c5
-12c8 12ce
-12d0 12d6
-12d8 12ee
-12f0 130e
-1310
-1312 1315
-1318 131e
-1320 1346
-1348 135a
-1369 137c
-13a0 13f4
-1401 166c
-166f 1676
-1681 169a
-16a0 16ea
-16ee 16f0
-1780 17d3
-17e0 17e9
-1810 1819
-1820 1877
-1880 18a9
-1e00 1e9b
-1ea0 1ef9
-1f00 1f15
-1f18 1f1d
-1f20 1f45
-1f48 1f4d
-1f50 1f57
-1f59
-1f5b
-1f5d
-1f5f 1f7d
-1f80 1fb4
-1fb6 1fbc
-1fbe
-1fc2 1fc4
-1fc6 1fcc
-1fd0 1fd3
-1fd6 1fdb
-1fe0 1fec
-1ff2 1ff4
-1ff6 1ffc
-2070
-2074 2079
-207f 2089
-20d0 20e3
-2102
-2107
-210a 2113
-2115
-2119 211d
-2124
-2126
-2128
-212a 212d
-212f 2131
-2133 2139
-2153 2183
-2460 249b
-24ea
-2776 2793
-3005 3007
-3021 302f
-3031 3035
-3038 303a
-3041 3094
-3099 309a
-309d 309e
-30a1 30fa
-30fc 30fe
-3105 312c
-3131 318e
-3192 3195
-31a0 31b7
-3220 3229
-3280 3289
-3400 4db5
-4e00 9fa5
-a000 a48c
-ac00 d7a3
-f900 fa2d
-fb00 fb06
-fb13 fb17
-fb1d fb28
-fb2a fb36
-fb38 fb3c
-fb3e
-fb40 fb41
-fb43 fb44
-fb46 fbb1
-fbd3 fd3d
-fd50 fd8f
-fd92 fdc7
-fdf0 fdfb
-fe20 fe23
-fe70 fe72
-fe74
-fe76 fefc
-ff10 ff19
-ff21 ff3a
-ff41 ff5a
-ff66 ffbe
-ffc2 ffc7
-ffca ffcf
-ffd2 ffd7
-ffda ffdc
-END
diff --git a/contrib/perl5/lib/unicode/Is/XDigit.pl b/contrib/perl5/lib/unicode/Is/XDigit.pl
deleted file mode 100644
index b26a3b4..0000000
--- a/contrib/perl5/lib/unicode/Is/XDigit.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0030 0039
-0041 0046
-0061 0066
-END
diff --git a/contrib/perl5/lib/unicode/Is/Z.pl b/contrib/perl5/lib/unicode/Is/Z.pl
deleted file mode 100644
index 03416c0..0000000
--- a/contrib/perl5/lib/unicode/Is/Z.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0020
-00a0
-1680
-2000 200b
-2028 2029
-202f
-3000
-END
diff --git a/contrib/perl5/lib/unicode/Is/Zl.pl b/contrib/perl5/lib/unicode/Is/Zl.pl
deleted file mode 100644
index 5f127ce..0000000
--- a/contrib/perl5/lib/unicode/Is/Zl.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2028
-END
diff --git a/contrib/perl5/lib/unicode/Is/Zp.pl b/contrib/perl5/lib/unicode/Is/Zp.pl
deleted file mode 100644
index 4e38303..0000000
--- a/contrib/perl5/lib/unicode/Is/Zp.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-2029
-END
diff --git a/contrib/perl5/lib/unicode/Is/Zs.pl b/contrib/perl5/lib/unicode/Is/Zs.pl
deleted file mode 100644
index 56cf9e4..0000000
--- a/contrib/perl5/lib/unicode/Is/Zs.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0020
-00a0
-1680
-2000 200b
-202f
-3000
-END
diff --git a/contrib/perl5/lib/unicode/Jamo.txt b/contrib/perl5/lib/unicode/Jamo.txt
deleted file mode 100644
index ea288f03..0000000
--- a/contrib/perl5/lib/unicode/Jamo.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-# Jamo-3.txt
-#
-# This file is a normative contributory data file in the
-# Unicode Character Database.
-#
-# This file defines the Jamo Short Name property, repeating
-# in machine readable form the information printed in Table 4-4
-# of The Unicode Standard, Version 3.0.
-#
-# See sections 3.11 and 4.4 of The Unicode Standard, Version 3.0
-# for more information.
-#
-# Each line contains two fields, separated by a semicolon.
-#
-# The first field gives the code point, in 4-digit hexadecimal
-# form, of a combining jamo character that participates in
-# the algorithmic determination Hangul syllable character names.
-# The second field gives the Jamo Short Name as a one-, two-,
-# or three-character ASCII string (or in one case, for U+110B,
-# the null string).
-#
-# #############################################################
-
-1100; G # HANGUL CHOSEONG KIYEOK
-1101; GG # HANGUL CHOSEONG SSANGKIYEOK
-1102; N # HANGUL CHOSEONG NIEUN
-1103; D # HANGUL CHOSEONG TIKEUT
-1104; DD # HANGUL CHOSEONG SSANGTIKEUT
-1105; R # HANGUL CHOSEONG RIEUL
-1106; M # HANGUL CHOSEONG MIEUM
-1107; B # HANGUL CHOSEONG PIEUP
-1108; BB # HANGUL CHOSEONG SSANGPIEUP
-1109; S # HANGUL CHOSEONG SIOS
-110A; SS # HANGUL CHOSEONG SSANGSIOS
-110B; # HANGUL CHOSEONG IEUNG
-110C; J # HANGUL CHOSEONG CIEUC
-110D; JJ # HANGUL CHOSEONG SSANGCIEUC
-110E; C # HANGUL CHOSEONG CHIEUCH
-110F; K # HANGUL CHOSEONG KHIEUKH
-1110; T # HANGUL CHOSEONG THIEUTH
-1111; P # HANGUL CHOSEONG PHIEUPH
-1112; H # HANGUL CHOSEONG HIEUH
-1161; A # HANGUL JUNGSEONG A
-1162; AE # HANGUL JUNGSEONG AE
-1163; YA # HANGUL JUNGSEONG YA
-1164; YAE # HANGUL JUNGSEONG YAE
-1165; EO # HANGUL JUNGSEONG EO
-1166; E # HANGUL JUNGSEONG E
-1167; YEO # HANGUL JUNGSEONG YEO
-1168; YE # HANGUL JUNGSEONG YE
-1169; O # HANGUL JUNGSEONG O
-116A; WA # HANGUL JUNGSEONG WA
-116B; WAE # HANGUL JUNGSEONG WAE
-116C; OE # HANGUL JUNGSEONG OE
-116D; YO # HANGUL JUNGSEONG YO
-116E; U # HANGUL JUNGSEONG U
-116F; WEO # HANGUL JUNGSEONG WEO
-1170; WE # HANGUL JUNGSEONG WE
-1171; WI # HANGUL JUNGSEONG WI
-1172; YU # HANGUL JUNGSEONG YU
-1173; EU # HANGUL JUNGSEONG EU
-1174; YI # HANGUL JUNGSEONG YI
-1175; I # HANGUL JUNGSEONG I
-11A8; G # HANGUL JONGSEONG KIYEOK
-11A9; GG # HANGUL JONGSEONG SSANGKIYEOK
-11AA; GS # HANGUL JONGSEONG KIYEOK-SIOS
-11AB; N # HANGUL JONGSEONG NIEUN
-11AC; NJ # HANGUL JONGSEONG NIEUN-CIEUC
-11AD; NH # HANGUL JONGSEONG NIEUN-HIEUH
-11AE; D # HANGUL JONGSEONG TIKEUT
-11AF; L # HANGUL JONGSEONG RIEUL
-11B0; LG # HANGUL JONGSEONG RIEUL-KIYEOK
-11B1; LM # HANGUL JONGSEONG RIEUL-MIEUM
-11B2; LB # HANGUL JONGSEONG RIEUL-PIEUP
-11B3; LS # HANGUL JONGSEONG RIEUL-SIOS
-11B4; LT # HANGUL JONGSEONG RIEUL-THIEUTH
-11B5; LP # HANGUL JONGSEONG RIEUL-PHIEUPH
-11B6; LH # HANGUL JONGSEONG RIEUL-HIEUH
-11B7; M # HANGUL JONGSEONG MIEUM
-11B8; B # HANGUL JONGSEONG PIEUP
-11B9; BS # HANGUL JONGSEONG PIEUP-SIOS
-11BA; S # HANGUL JONGSEONG SIOS
-11BB; SS # HANGUL JONGSEONG SSANGSIOS
-11BC; NG # HANGUL JONGSEONG IEUNG
-11BD; J # HANGUL JONGSEONG CIEUC
-11BE; C # HANGUL JONGSEONG CHIEUCH
-11BF; K # HANGUL JONGSEONG KHIEUKH
-11C0; T # HANGUL JONGSEONG THIEUTH
-11C1; P # HANGUL JONGSEONG PHIEUPH
-11C2; H # HANGUL JONGSEONG HIEUH
-
diff --git a/contrib/perl5/lib/unicode/JamoShort.pl b/contrib/perl5/lib/unicode/JamoShort.pl
deleted file mode 100644
index 19cd429..0000000
--- a/contrib/perl5/lib/unicode/JamoShort.pl
+++ /dev/null
@@ -1,72 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-1100 G # HANGUL CHOSEONG KIYEOK
-1101 GG # HANGUL CHOSEONG SSANGKIYEOK
-1102 N # HANGUL CHOSEONG NIEUN
-1103 D # HANGUL CHOSEONG TIKEUT
-1104 DD # HANGUL CHOSEONG SSANGTIKEUT
-1105 R # HANGUL CHOSEONG RIEUL
-1106 M # HANGUL CHOSEONG MIEUM
-1107 B # HANGUL CHOSEONG PIEUP
-1108 BB # HANGUL CHOSEONG SSANGPIEUP
-1109 S # HANGUL CHOSEONG SIOS
-110a SS # HANGUL CHOSEONG SSANGSIOS
-110b # HANGUL CHOSEONG IEUNG
-110c J # HANGUL CHOSEONG CIEUC
-110d JJ # HANGUL CHOSEONG SSANGCIEUC
-110e C # HANGUL CHOSEONG CHIEUCH
-110f K # HANGUL CHOSEONG KHIEUKH
-1110 T # HANGUL CHOSEONG THIEUTH
-1111 P # HANGUL CHOSEONG PHIEUPH
-1112 H # HANGUL CHOSEONG HIEUH
-1161 A # HANGUL JUNGSEONG A
-1162 AE # HANGUL JUNGSEONG AE
-1163 YA # HANGUL JUNGSEONG YA
-1164 YAE # HANGUL JUNGSEONG YAE
-1165 EO # HANGUL JUNGSEONG EO
-1166 E # HANGUL JUNGSEONG E
-1167 YEO # HANGUL JUNGSEONG YEO
-1168 YE # HANGUL JUNGSEONG YE
-1169 O # HANGUL JUNGSEONG O
-116a WA # HANGUL JUNGSEONG WA
-116b WAE # HANGUL JUNGSEONG WAE
-116c OE # HANGUL JUNGSEONG OE
-116d YO # HANGUL JUNGSEONG YO
-116e U # HANGUL JUNGSEONG U
-116f WEO # HANGUL JUNGSEONG WEO
-1170 WE # HANGUL JUNGSEONG WE
-1171 WI # HANGUL JUNGSEONG WI
-1172 YU # HANGUL JUNGSEONG YU
-1173 EU # HANGUL JUNGSEONG EU
-1174 YI # HANGUL JUNGSEONG YI
-1175 I # HANGUL JUNGSEONG I
-11a8 G # HANGUL JONGSEONG KIYEOK
-11a9 GG # HANGUL JONGSEONG SSANGKIYEOK
-11aa GS # HANGUL JONGSEONG KIYEOK-SIOS
-11ab N # HANGUL JONGSEONG NIEUN
-11ac NJ # HANGUL JONGSEONG NIEUN-CIEUC
-11ad NH # HANGUL JONGSEONG NIEUN-HIEUH
-11ae D # HANGUL JONGSEONG TIKEUT
-11af L # HANGUL JONGSEONG RIEUL
-11b0 LG # HANGUL JONGSEONG RIEUL-KIYEOK
-11b1 LM # HANGUL JONGSEONG RIEUL-MIEUM
-11b2 LB # HANGUL JONGSEONG RIEUL-PIEUP
-11b3 LS # HANGUL JONGSEONG RIEUL-SIOS
-11b4 LT # HANGUL JONGSEONG RIEUL-THIEUTH
-11b5 LP # HANGUL JONGSEONG RIEUL-PHIEUPH
-11b6 LH # HANGUL JONGSEONG RIEUL-HIEUH
-11b7 M # HANGUL JONGSEONG MIEUM
-11b8 B # HANGUL JONGSEONG PIEUP
-11b9 BS # HANGUL JONGSEONG PIEUP-SIOS
-11ba S # HANGUL JONGSEONG SIOS
-11bb SS # HANGUL JONGSEONG SSANGSIOS
-11bc NG # HANGUL JONGSEONG IEUNG
-11bd J # HANGUL JONGSEONG CIEUC
-11be C # HANGUL JONGSEONG CHIEUCH
-11bf K # HANGUL JONGSEONG KHIEUKH
-11c0 T # HANGUL JONGSEONG THIEUTH
-11c1 P # HANGUL JONGSEONG PHIEUPH
-11c2 H # HANGUL JONGSEONG HIEUH
-END
diff --git a/contrib/perl5/lib/unicode/LineBrk.txt b/contrib/perl5/lib/unicode/LineBrk.txt
deleted file mode 100644
index 48f6c50..0000000
--- a/contrib/perl5/lib/unicode/LineBrk.txt
+++ /dev/null
@@ -1,10643 +0,0 @@
-# LineBreak-5.txt
-#
-# Line Break Properties
-#
-# This file is a supplement to the UnicodeData file.
-# It contains both normative and informative data.
-# The format is three fields separated by semicolons.
-# Field 1: Unicode value
-# Field 2: LineBreak property, consisting of one of the following values:
-# Normative:
-# "BK", "CR", "LF", "CM", "SG", "GL", "CB", "SP", "ZW"
-# Informative:
-# "XX", "OP", "CL", "QU", "NS", "EX", "SY",
-# "IS", "PR", "PO", "NU", "AL", "ID", "IN", "HY",
-# "BB", "BA", "SA", "AI", "B2"
-# - Assigned characters that are not listed explicitly are given the value
-# "AL".
-# - Unassigned characters are given the value "XX".
-# - Characters within ranges marked by "First>" and "Last>" are omitted,
-# as in UnicodeData.txt. For example, the following means that
-# all characters between 3400 and 4DB5 have the value "ID"
-# 3400;ID;<CJK Ideograph Extension A, First>
-# 4DB5;ID;<CJK Ideograph Extension A, Last>
-# Field 3: Unicode name (this is purely informative)
-#
-# See UTR #14: Line Breaking Properties for more information
-0000;CM;<control>
-0001;CM;<control>
-0002;CM;<control>
-0003;CM;<control>
-0004;CM;<control>
-0005;CM;<control>
-0006;CM;<control>
-0007;CM;<control>
-0008;CM;<control>
-0009;BA;<control>
-000A;LF;<control>
-000B;CM;<control>
-000C;BK;<control>
-000D;CR;<control>
-000E;CM;<control>
-000F;CM;<control>
-0010;CM;<control>
-0011;CM;<control>
-0012;CM;<control>
-0013;CM;<control>
-0014;CM;<control>
-0015;CM;<control>
-0016;CM;<control>
-0017;CM;<control>
-0018;CM;<control>
-0019;CM;<control>
-001A;CM;<control>
-001B;CM;<control>
-001C;CM;<control>
-001D;CM;<control>
-001E;CM;<control>
-001F;CM;<control>
-0020;SP;SPACE
-0021;EX;EXCLAMATION MARK
-0022;QU;QUOTATION MARK
-0023;AL;NUMBER SIGN
-0024;PR;DOLLAR SIGN
-0025;PO;PERCENT SIGN
-0026;AL;AMPERSAND
-0027;QU;APOSTROPHE
-0028;OP;LEFT PARENTHESIS
-0029;CL;RIGHT PARENTHESIS
-002A;AL;ASTERISK
-002B;PR;PLUS SIGN
-002C;IS;COMMA
-002D;HY;HYPHEN-MINUS
-002E;IS;FULL STOP
-002F;SY;SOLIDUS
-0030;NU;DIGIT ZERO
-0031;NU;DIGIT ONE
-0032;NU;DIGIT TWO
-0033;NU;DIGIT THREE
-0034;NU;DIGIT FOUR
-0035;NU;DIGIT FIVE
-0036;NU;DIGIT SIX
-0037;NU;DIGIT SEVEN
-0038;NU;DIGIT EIGHT
-0039;NU;DIGIT NINE
-003A;IS;COLON
-003B;IS;SEMICOLON
-003C;AL;LESS-THAN SIGN
-003D;AL;EQUALS SIGN
-003E;AL;GREATER-THAN SIGN
-003F;EX;QUESTION MARK
-0040;AL;COMMERCIAL AT
-0041;AL;LATIN CAPITAL LETTER A
-0042;AL;LATIN CAPITAL LETTER B
-0043;AL;LATIN CAPITAL LETTER C
-0044;AL;LATIN CAPITAL LETTER D
-0045;AL;LATIN CAPITAL LETTER E
-0046;AL;LATIN CAPITAL LETTER F
-0047;AL;LATIN CAPITAL LETTER G
-0048;AL;LATIN CAPITAL LETTER H
-0049;AL;LATIN CAPITAL LETTER I
-004A;AL;LATIN CAPITAL LETTER J
-004B;AL;LATIN CAPITAL LETTER K
-004C;AL;LATIN CAPITAL LETTER L
-004D;AL;LATIN CAPITAL LETTER M
-004E;AL;LATIN CAPITAL LETTER N
-004F;AL;LATIN CAPITAL LETTER O
-0050;AL;LATIN CAPITAL LETTER P
-0051;AL;LATIN CAPITAL LETTER Q
-0052;AL;LATIN CAPITAL LETTER R
-0053;AL;LATIN CAPITAL LETTER S
-0054;AL;LATIN CAPITAL LETTER T
-0055;AL;LATIN CAPITAL LETTER U
-0056;AL;LATIN CAPITAL LETTER V
-0057;AL;LATIN CAPITAL LETTER W
-0058;AL;LATIN CAPITAL LETTER X
-0059;AL;LATIN CAPITAL LETTER Y
-005A;AL;LATIN CAPITAL LETTER Z
-005B;OP;LEFT SQUARE BRACKET
-005C;PR;REVERSE SOLIDUS
-005D;CL;RIGHT SQUARE BRACKET
-005E;AL;CIRCUMFLEX ACCENT
-005F;AL;LOW LINE
-0060;AL;GRAVE ACCENT
-0061;AL;LATIN SMALL LETTER A
-0062;AL;LATIN SMALL LETTER B
-0063;AL;LATIN SMALL LETTER C
-0064;AL;LATIN SMALL LETTER D
-0065;AL;LATIN SMALL LETTER E
-0066;AL;LATIN SMALL LETTER F
-0067;AL;LATIN SMALL LETTER G
-0068;AL;LATIN SMALL LETTER H
-0069;AL;LATIN SMALL LETTER I
-006A;AL;LATIN SMALL LETTER J
-006B;AL;LATIN SMALL LETTER K
-006C;AL;LATIN SMALL LETTER L
-006D;AL;LATIN SMALL LETTER M
-006E;AL;LATIN SMALL LETTER N
-006F;AL;LATIN SMALL LETTER O
-0070;AL;LATIN SMALL LETTER P
-0071;AL;LATIN SMALL LETTER Q
-0072;AL;LATIN SMALL LETTER R
-0073;AL;LATIN SMALL LETTER S
-0074;AL;LATIN SMALL LETTER T
-0075;AL;LATIN SMALL LETTER U
-0076;AL;LATIN SMALL LETTER V
-0077;AL;LATIN SMALL LETTER W
-0078;AL;LATIN SMALL LETTER X
-0079;AL;LATIN SMALL LETTER Y
-007A;AL;LATIN SMALL LETTER Z
-007B;OP;LEFT CURLY BRACKET
-007C;BA;VERTICAL LINE
-007D;CL;RIGHT CURLY BRACKET
-007E;AL;TILDE
-007F;CM;<control>
-0080;CM;<control>
-0081;CM;<control>
-0082;CM;<control>
-0083;CM;<control>
-0084;CM;<control>
-0085;CM;<control>
-0086;CM;<control>
-0087;CM;<control>
-0088;CM;<control>
-0089;CM;<control>
-008A;CM;<control>
-008B;CM;<control>
-008C;CM;<control>
-008D;CM;<control>
-008E;CM;<control>
-008F;CM;<control>
-0090;CM;<control>
-0091;CM;<control>
-0092;CM;<control>
-0093;CM;<control>
-0094;CM;<control>
-0095;CM;<control>
-0096;CM;<control>
-0097;CM;<control>
-0098;CM;<control>
-0099;CM;<control>
-009A;CM;<control>
-009B;CM;<control>
-009C;CM;<control>
-009D;CM;<control>
-009E;CM;<control>
-009F;CM;<control>
-00A0;GL;NO-BREAK SPACE
-00A1;AI;INVERTED EXCLAMATION MARK
-00A2;PO;CENT SIGN
-00A3;PR;POUND SIGN
-00A4;PR;CURRENCY SIGN
-00A5;PR;YEN SIGN
-00A6;AL;BROKEN BAR
-00A7;AI;SECTION SIGN
-00A8;AI;DIAERESIS
-00A9;AL;COPYRIGHT SIGN
-00AA;AI;FEMININE ORDINAL INDICATOR
-00AB;QU;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-00AC;AL;NOT SIGN
-00AD;BA;SOFT HYPHEN
-00AE;AL;REGISTERED SIGN
-00AF;AL;MACRON
-00B0;PO;DEGREE SIGN
-00B1;PR;PLUS-MINUS SIGN
-00B2;AI;SUPERSCRIPT TWO
-00B3;AI;SUPERSCRIPT THREE
-00B4;BA;ACUTE ACCENT
-00B5;AL;MICRO SIGN
-00B6;AI;PILCROW SIGN
-00B7;AI;MIDDLE DOT
-00B8;AI;CEDILLA
-00B9;AI;SUPERSCRIPT ONE
-00BA;AI;MASCULINE ORDINAL INDICATOR
-00BB;QU;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BC;AI;VULGAR FRACTION ONE QUARTER
-00BD;AI;VULGAR FRACTION ONE HALF
-00BE;AI;VULGAR FRACTION THREE QUARTERS
-00BF;AI;INVERTED QUESTION MARK
-00C0;AL;LATIN CAPITAL LETTER A WITH GRAVE
-00C1;AL;LATIN CAPITAL LETTER A WITH ACUTE
-00C2;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-00C3;AL;LATIN CAPITAL LETTER A WITH TILDE
-00C4;AL;LATIN CAPITAL LETTER A WITH DIAERESIS
-00C5;AL;LATIN CAPITAL LETTER A WITH RING ABOVE
-00C6;AI;LATIN CAPITAL LETTER AE
-00C7;AL;LATIN CAPITAL LETTER C WITH CEDILLA
-00C8;AL;LATIN CAPITAL LETTER E WITH GRAVE
-00C9;AL;LATIN CAPITAL LETTER E WITH ACUTE
-00CA;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-00CB;AL;LATIN CAPITAL LETTER E WITH DIAERESIS
-00CC;AL;LATIN CAPITAL LETTER I WITH GRAVE
-00CD;AL;LATIN CAPITAL LETTER I WITH ACUTE
-00CE;AL;LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-00CF;AL;LATIN CAPITAL LETTER I WITH DIAERESIS
-00D0;AI;LATIN CAPITAL LETTER ETH
-00D1;AL;LATIN CAPITAL LETTER N WITH TILDE
-00D2;AL;LATIN CAPITAL LETTER O WITH GRAVE
-00D3;AL;LATIN CAPITAL LETTER O WITH ACUTE
-00D4;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-00D5;AL;LATIN CAPITAL LETTER O WITH TILDE
-00D6;AL;LATIN CAPITAL LETTER O WITH DIAERESIS
-00D7;AI;MULTIPLICATION SIGN
-00D8;AI;LATIN CAPITAL LETTER O WITH STROKE
-00D9;AL;LATIN CAPITAL LETTER U WITH GRAVE
-00DA;AL;LATIN CAPITAL LETTER U WITH ACUTE
-00DB;AL;LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-00DC;AL;LATIN CAPITAL LETTER U WITH DIAERESIS
-00DD;AL;LATIN CAPITAL LETTER Y WITH ACUTE
-00DE;AI;LATIN CAPITAL LETTER THORN
-00DF;AI;LATIN SMALL LETTER SHARP S
-00E0;AI;LATIN SMALL LETTER A WITH GRAVE
-00E1;AI;LATIN SMALL LETTER A WITH ACUTE
-00E2;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX
-00E3;AL;LATIN SMALL LETTER A WITH TILDE
-00E4;AL;LATIN SMALL LETTER A WITH DIAERESIS
-00E5;AL;LATIN SMALL LETTER A WITH RING ABOVE
-00E6;AI;LATIN SMALL LETTER AE
-00E7;AL;LATIN SMALL LETTER C WITH CEDILLA
-00E8;AI;LATIN SMALL LETTER E WITH GRAVE
-00E9;AI;LATIN SMALL LETTER E WITH ACUTE
-00EA;AI;LATIN SMALL LETTER E WITH CIRCUMFLEX
-00EB;AL;LATIN SMALL LETTER E WITH DIAERESIS
-00EC;AI;LATIN SMALL LETTER I WITH GRAVE
-00ED;AI;LATIN SMALL LETTER I WITH ACUTE
-00EE;AL;LATIN SMALL LETTER I WITH CIRCUMFLEX
-00EF;AL;LATIN SMALL LETTER I WITH DIAERESIS
-00F0;AI;LATIN SMALL LETTER ETH
-00F1;AL;LATIN SMALL LETTER N WITH TILDE
-00F2;AI;LATIN SMALL LETTER O WITH GRAVE
-00F3;AI;LATIN SMALL LETTER O WITH ACUTE
-00F4;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX
-00F5;AL;LATIN SMALL LETTER O WITH TILDE
-00F6;AL;LATIN SMALL LETTER O WITH DIAERESIS
-00F7;AI;DIVISION SIGN
-00F8;AI;LATIN SMALL LETTER O WITH STROKE
-00F9;AI;LATIN SMALL LETTER U WITH GRAVE
-00FA;AI;LATIN SMALL LETTER U WITH ACUTE
-00FB;AL;LATIN SMALL LETTER U WITH CIRCUMFLEX
-00FC;AI;LATIN SMALL LETTER U WITH DIAERESIS
-00FD;AL;LATIN SMALL LETTER Y WITH ACUTE
-00FE;AI;LATIN SMALL LETTER THORN
-00FF;AL;LATIN SMALL LETTER Y WITH DIAERESIS
-0100;AL;LATIN CAPITAL LETTER A WITH MACRON
-0101;AI;LATIN SMALL LETTER A WITH MACRON
-0102;AL;LATIN CAPITAL LETTER A WITH BREVE
-0103;AL;LATIN SMALL LETTER A WITH BREVE
-0104;AL;LATIN CAPITAL LETTER A WITH OGONEK
-0105;AL;LATIN SMALL LETTER A WITH OGONEK
-0106;AL;LATIN CAPITAL LETTER C WITH ACUTE
-0107;AL;LATIN SMALL LETTER C WITH ACUTE
-0108;AL;LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-0109;AL;LATIN SMALL LETTER C WITH CIRCUMFLEX
-010A;AL;LATIN CAPITAL LETTER C WITH DOT ABOVE
-010B;AL;LATIN SMALL LETTER C WITH DOT ABOVE
-010C;AL;LATIN CAPITAL LETTER C WITH CARON
-010D;AL;LATIN SMALL LETTER C WITH CARON
-010E;AL;LATIN CAPITAL LETTER D WITH CARON
-010F;AL;LATIN SMALL LETTER D WITH CARON
-0110;AL;LATIN CAPITAL LETTER D WITH STROKE
-0111;AI;LATIN SMALL LETTER D WITH STROKE
-0112;AL;LATIN CAPITAL LETTER E WITH MACRON
-0113;AI;LATIN SMALL LETTER E WITH MACRON
-0114;AL;LATIN CAPITAL LETTER E WITH BREVE
-0115;AL;LATIN SMALL LETTER E WITH BREVE
-0116;AL;LATIN CAPITAL LETTER E WITH DOT ABOVE
-0117;AL;LATIN SMALL LETTER E WITH DOT ABOVE
-0118;AL;LATIN CAPITAL LETTER E WITH OGONEK
-0119;AL;LATIN SMALL LETTER E WITH OGONEK
-011A;AL;LATIN CAPITAL LETTER E WITH CARON
-011B;AI;LATIN SMALL LETTER E WITH CARON
-011C;AL;LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-011D;AL;LATIN SMALL LETTER G WITH CIRCUMFLEX
-011E;AL;LATIN CAPITAL LETTER G WITH BREVE
-011F;AL;LATIN SMALL LETTER G WITH BREVE
-0120;AL;LATIN CAPITAL LETTER G WITH DOT ABOVE
-0121;AL;LATIN SMALL LETTER G WITH DOT ABOVE
-0122;AL;LATIN CAPITAL LETTER G WITH CEDILLA
-0123;AL;LATIN SMALL LETTER G WITH CEDILLA
-0124;AL;LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0125;AL;LATIN SMALL LETTER H WITH CIRCUMFLEX
-0126;AI;LATIN CAPITAL LETTER H WITH STROKE
-0127;AI;LATIN SMALL LETTER H WITH STROKE
-0128;AL;LATIN CAPITAL LETTER I WITH TILDE
-0129;AL;LATIN SMALL LETTER I WITH TILDE
-012A;AL;LATIN CAPITAL LETTER I WITH MACRON
-012B;AI;LATIN SMALL LETTER I WITH MACRON
-012C;AL;LATIN CAPITAL LETTER I WITH BREVE
-012D;AL;LATIN SMALL LETTER I WITH BREVE
-012E;AL;LATIN CAPITAL LETTER I WITH OGONEK
-012F;AL;LATIN SMALL LETTER I WITH OGONEK
-0130;AL;LATIN CAPITAL LETTER I WITH DOT ABOVE
-0131;AI;LATIN SMALL LETTER DOTLESS I
-0132;AI;LATIN CAPITAL LIGATURE IJ
-0133;AI;LATIN SMALL LIGATURE IJ
-0134;AL;LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-0135;AL;LATIN SMALL LETTER J WITH CIRCUMFLEX
-0136;AL;LATIN CAPITAL LETTER K WITH CEDILLA
-0137;AL;LATIN SMALL LETTER K WITH CEDILLA
-0138;AI;LATIN SMALL LETTER KRA
-0139;AL;LATIN CAPITAL LETTER L WITH ACUTE
-013A;AL;LATIN SMALL LETTER L WITH ACUTE
-013B;AL;LATIN CAPITAL LETTER L WITH CEDILLA
-013C;AL;LATIN SMALL LETTER L WITH CEDILLA
-013D;AL;LATIN CAPITAL LETTER L WITH CARON
-013E;AL;LATIN SMALL LETTER L WITH CARON
-013F;AI;LATIN CAPITAL LETTER L WITH MIDDLE DOT
-0140;AI;LATIN SMALL LETTER L WITH MIDDLE DOT
-0141;AI;LATIN CAPITAL LETTER L WITH STROKE
-0142;AI;LATIN SMALL LETTER L WITH STROKE
-0143;AL;LATIN CAPITAL LETTER N WITH ACUTE
-0144;AI;LATIN SMALL LETTER N WITH ACUTE
-0145;AL;LATIN CAPITAL LETTER N WITH CEDILLA
-0146;AL;LATIN SMALL LETTER N WITH CEDILLA
-0147;AL;LATIN CAPITAL LETTER N WITH CARON
-0148;AI;LATIN SMALL LETTER N WITH CARON
-0149;AI;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-014A;AI;LATIN CAPITAL LETTER ENG
-014B;AL;LATIN SMALL LETTER ENG
-014C;AL;LATIN CAPITAL LETTER O WITH MACRON
-014D;AI;LATIN SMALL LETTER O WITH MACRON
-014E;AL;LATIN CAPITAL LETTER O WITH BREVE
-014F;AL;LATIN SMALL LETTER O WITH BREVE
-0150;AL;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0151;AL;LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0152;AI;LATIN CAPITAL LIGATURE OE
-0153;AI;LATIN SMALL LIGATURE OE
-0154;AL;LATIN CAPITAL LETTER R WITH ACUTE
-0155;AL;LATIN SMALL LETTER R WITH ACUTE
-0156;AL;LATIN CAPITAL LETTER R WITH CEDILLA
-0157;AL;LATIN SMALL LETTER R WITH CEDILLA
-0158;AL;LATIN CAPITAL LETTER R WITH CARON
-0159;AL;LATIN SMALL LETTER R WITH CARON
-015A;AL;LATIN CAPITAL LETTER S WITH ACUTE
-015B;AL;LATIN SMALL LETTER S WITH ACUTE
-015C;AL;LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-015D;AL;LATIN SMALL LETTER S WITH CIRCUMFLEX
-015E;AL;LATIN CAPITAL LETTER S WITH CEDILLA
-015F;AL;LATIN SMALL LETTER S WITH CEDILLA
-0160;AL;LATIN CAPITAL LETTER S WITH CARON
-0161;AL;LATIN SMALL LETTER S WITH CARON
-0162;AL;LATIN CAPITAL LETTER T WITH CEDILLA
-0163;AL;LATIN SMALL LETTER T WITH CEDILLA
-0164;AL;LATIN CAPITAL LETTER T WITH CARON
-0165;AL;LATIN SMALL LETTER T WITH CARON
-0166;AI;LATIN CAPITAL LETTER T WITH STROKE
-0167;AI;LATIN SMALL LETTER T WITH STROKE
-0168;AL;LATIN CAPITAL LETTER U WITH TILDE
-0169;AL;LATIN SMALL LETTER U WITH TILDE
-016A;AL;LATIN CAPITAL LETTER U WITH MACRON
-016B;AI;LATIN SMALL LETTER U WITH MACRON
-016C;AL;LATIN CAPITAL LETTER U WITH BREVE
-016D;AL;LATIN SMALL LETTER U WITH BREVE
-016E;AL;LATIN CAPITAL LETTER U WITH RING ABOVE
-016F;AL;LATIN SMALL LETTER U WITH RING ABOVE
-0170;AL;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0171;AL;LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0172;AL;LATIN CAPITAL LETTER U WITH OGONEK
-0173;AL;LATIN SMALL LETTER U WITH OGONEK
-0174;AL;LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-0175;AL;LATIN SMALL LETTER W WITH CIRCUMFLEX
-0176;AL;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-0177;AL;LATIN SMALL LETTER Y WITH CIRCUMFLEX
-0178;AL;LATIN CAPITAL LETTER Y WITH DIAERESIS
-0179;AL;LATIN CAPITAL LETTER Z WITH ACUTE
-017A;AL;LATIN SMALL LETTER Z WITH ACUTE
-017B;AL;LATIN CAPITAL LETTER Z WITH DOT ABOVE
-017C;AL;LATIN SMALL LETTER Z WITH DOT ABOVE
-017D;AL;LATIN CAPITAL LETTER Z WITH CARON
-017E;AL;LATIN SMALL LETTER Z WITH CARON
-017F;AL;LATIN SMALL LETTER LONG S
-0180;AL;LATIN SMALL LETTER B WITH STROKE
-0181;AL;LATIN CAPITAL LETTER B WITH HOOK
-0182;AL;LATIN CAPITAL LETTER B WITH TOPBAR
-0183;AL;LATIN SMALL LETTER B WITH TOPBAR
-0184;AL;LATIN CAPITAL LETTER TONE SIX
-0185;AL;LATIN SMALL LETTER TONE SIX
-0186;AL;LATIN CAPITAL LETTER OPEN O
-0187;AL;LATIN CAPITAL LETTER C WITH HOOK
-0188;AL;LATIN SMALL LETTER C WITH HOOK
-0189;AL;LATIN CAPITAL LETTER AFRICAN D
-018A;AL;LATIN CAPITAL LETTER D WITH HOOK
-018B;AL;LATIN CAPITAL LETTER D WITH TOPBAR
-018C;AL;LATIN SMALL LETTER D WITH TOPBAR
-018D;AL;LATIN SMALL LETTER TURNED DELTA
-018E;AL;LATIN CAPITAL LETTER REVERSED E
-018F;AL;LATIN CAPITAL LETTER SCHWA
-0190;AL;LATIN CAPITAL LETTER OPEN E
-0191;AL;LATIN CAPITAL LETTER F WITH HOOK
-0192;AL;LATIN SMALL LETTER F WITH HOOK
-0193;AL;LATIN CAPITAL LETTER G WITH HOOK
-0194;AL;LATIN CAPITAL LETTER GAMMA
-0195;AL;LATIN SMALL LETTER HV
-0196;AL;LATIN CAPITAL LETTER IOTA
-0197;AL;LATIN CAPITAL LETTER I WITH STROKE
-0198;AL;LATIN CAPITAL LETTER K WITH HOOK
-0199;AL;LATIN SMALL LETTER K WITH HOOK
-019A;AL;LATIN SMALL LETTER L WITH BAR
-019B;AL;LATIN SMALL LETTER LAMBDA WITH STROKE
-019C;AL;LATIN CAPITAL LETTER TURNED M
-019D;AL;LATIN CAPITAL LETTER N WITH LEFT HOOK
-019E;AL;LATIN SMALL LETTER N WITH LONG RIGHT LEG
-019F;AL;LATIN CAPITAL LETTER O WITH MIDDLE TILDE
-01A0;AL;LATIN CAPITAL LETTER O WITH HORN
-01A1;AL;LATIN SMALL LETTER O WITH HORN
-01A2;AL;LATIN CAPITAL LETTER OI
-01A3;AL;LATIN SMALL LETTER OI
-01A4;AL;LATIN CAPITAL LETTER P WITH HOOK
-01A5;AL;LATIN SMALL LETTER P WITH HOOK
-01A6;AL;LATIN LETTER YR
-01A7;AL;LATIN CAPITAL LETTER TONE TWO
-01A8;AL;LATIN SMALL LETTER TONE TWO
-01A9;AL;LATIN CAPITAL LETTER ESH
-01AA;AL;LATIN LETTER REVERSED ESH LOOP
-01AB;AL;LATIN SMALL LETTER T WITH PALATAL HOOK
-01AC;AL;LATIN CAPITAL LETTER T WITH HOOK
-01AD;AL;LATIN SMALL LETTER T WITH HOOK
-01AE;AL;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
-01AF;AL;LATIN CAPITAL LETTER U WITH HORN
-01B0;AL;LATIN SMALL LETTER U WITH HORN
-01B1;AL;LATIN CAPITAL LETTER UPSILON
-01B2;AL;LATIN CAPITAL LETTER V WITH HOOK
-01B3;AL;LATIN CAPITAL LETTER Y WITH HOOK
-01B4;AL;LATIN SMALL LETTER Y WITH HOOK
-01B5;AL;LATIN CAPITAL LETTER Z WITH STROKE
-01B6;AL;LATIN SMALL LETTER Z WITH STROKE
-01B7;AL;LATIN CAPITAL LETTER EZH
-01B8;AL;LATIN CAPITAL LETTER EZH REVERSED
-01B9;AL;LATIN SMALL LETTER EZH REVERSED
-01BA;AL;LATIN SMALL LETTER EZH WITH TAIL
-01BB;AL;LATIN LETTER TWO WITH STROKE
-01BC;AL;LATIN CAPITAL LETTER TONE FIVE
-01BD;AL;LATIN SMALL LETTER TONE FIVE
-01BE;AL;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
-01BF;AL;LATIN LETTER WYNN
-01C0;AL;LATIN LETTER DENTAL CLICK
-01C1;AL;LATIN LETTER LATERAL CLICK
-01C2;AL;LATIN LETTER ALVEOLAR CLICK
-01C3;AL;LATIN LETTER RETROFLEX CLICK
-01C4;AL;LATIN CAPITAL LETTER DZ WITH CARON
-01C5;AL;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
-01C6;AL;LATIN SMALL LETTER DZ WITH CARON
-01C7;AL;LATIN CAPITAL LETTER LJ
-01C8;AL;LATIN CAPITAL LETTER L WITH SMALL LETTER J
-01C9;AL;LATIN SMALL LETTER LJ
-01CA;AL;LATIN CAPITAL LETTER NJ
-01CB;AL;LATIN CAPITAL LETTER N WITH SMALL LETTER J
-01CC;AL;LATIN SMALL LETTER NJ
-01CD;AL;LATIN CAPITAL LETTER A WITH CARON
-01CE;AI;LATIN SMALL LETTER A WITH CARON
-01CF;AL;LATIN CAPITAL LETTER I WITH CARON
-01D0;AI;LATIN SMALL LETTER I WITH CARON
-01D1;AL;LATIN CAPITAL LETTER O WITH CARON
-01D2;AI;LATIN SMALL LETTER O WITH CARON
-01D3;AL;LATIN CAPITAL LETTER U WITH CARON
-01D4;AI;LATIN SMALL LETTER U WITH CARON
-01D5;AL;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01D6;AI;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D7;AL;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D8;AI;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D9;AL;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-01DA;AI;LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01DB;AL;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01DC;AI;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DD;AL;LATIN SMALL LETTER TURNED E
-01DE;AL;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-01DF;AL;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01E0;AL;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
-01E1;AL;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
-01E2;AL;LATIN CAPITAL LETTER AE WITH MACRON
-01E3;AL;LATIN SMALL LETTER AE WITH MACRON
-01E4;AL;LATIN CAPITAL LETTER G WITH STROKE
-01E5;AL;LATIN SMALL LETTER G WITH STROKE
-01E6;AL;LATIN CAPITAL LETTER G WITH CARON
-01E7;AL;LATIN SMALL LETTER G WITH CARON
-01E8;AL;LATIN CAPITAL LETTER K WITH CARON
-01E9;AL;LATIN SMALL LETTER K WITH CARON
-01EA;AL;LATIN CAPITAL LETTER O WITH OGONEK
-01EB;AL;LATIN SMALL LETTER O WITH OGONEK
-01EC;AL;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
-01ED;AL;LATIN SMALL LETTER O WITH OGONEK AND MACRON
-01EE;AL;LATIN CAPITAL LETTER EZH WITH CARON
-01EF;AL;LATIN SMALL LETTER EZH WITH CARON
-01F0;AL;LATIN SMALL LETTER J WITH CARON
-01F1;AL;LATIN CAPITAL LETTER DZ
-01F2;AL;LATIN CAPITAL LETTER D WITH SMALL LETTER Z
-01F3;AL;LATIN SMALL LETTER DZ
-01F4;AL;LATIN CAPITAL LETTER G WITH ACUTE
-01F5;AL;LATIN SMALL LETTER G WITH ACUTE
-01F6;AL;LATIN CAPITAL LETTER HWAIR
-01F7;AL;LATIN CAPITAL LETTER WYNN
-01F8;AL;LATIN CAPITAL LETTER N WITH GRAVE
-01F9;AL;LATIN SMALL LETTER N WITH GRAVE
-01FA;AL;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-01FB;AL;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FC;AL;LATIN CAPITAL LETTER AE WITH ACUTE
-01FD;AL;LATIN SMALL LETTER AE WITH ACUTE
-01FE;AL;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-01FF;AL;LATIN SMALL LETTER O WITH STROKE AND ACUTE
-0200;AL;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
-0201;AL;LATIN SMALL LETTER A WITH DOUBLE GRAVE
-0202;AL;LATIN CAPITAL LETTER A WITH INVERTED BREVE
-0203;AL;LATIN SMALL LETTER A WITH INVERTED BREVE
-0204;AL;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
-0205;AL;LATIN SMALL LETTER E WITH DOUBLE GRAVE
-0206;AL;LATIN CAPITAL LETTER E WITH INVERTED BREVE
-0207;AL;LATIN SMALL LETTER E WITH INVERTED BREVE
-0208;AL;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
-0209;AL;LATIN SMALL LETTER I WITH DOUBLE GRAVE
-020A;AL;LATIN CAPITAL LETTER I WITH INVERTED BREVE
-020B;AL;LATIN SMALL LETTER I WITH INVERTED BREVE
-020C;AL;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
-020D;AL;LATIN SMALL LETTER O WITH DOUBLE GRAVE
-020E;AL;LATIN CAPITAL LETTER O WITH INVERTED BREVE
-020F;AL;LATIN SMALL LETTER O WITH INVERTED BREVE
-0210;AL;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
-0211;AL;LATIN SMALL LETTER R WITH DOUBLE GRAVE
-0212;AL;LATIN CAPITAL LETTER R WITH INVERTED BREVE
-0213;AL;LATIN SMALL LETTER R WITH INVERTED BREVE
-0214;AL;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
-0215;AL;LATIN SMALL LETTER U WITH DOUBLE GRAVE
-0216;AL;LATIN CAPITAL LETTER U WITH INVERTED BREVE
-0217;AL;LATIN SMALL LETTER U WITH INVERTED BREVE
-0218;AL;LATIN CAPITAL LETTER S WITH COMMA BELOW
-0219;AL;LATIN SMALL LETTER S WITH COMMA BELOW
-021A;AL;LATIN CAPITAL LETTER T WITH COMMA BELOW
-021B;AL;LATIN SMALL LETTER T WITH COMMA BELOW
-021C;AL;LATIN CAPITAL LETTER YOGH
-021D;AL;LATIN SMALL LETTER YOGH
-021E;AL;LATIN CAPITAL LETTER H WITH CARON
-021F;AL;LATIN SMALL LETTER H WITH CARON
-0222;AL;LATIN CAPITAL LETTER OU
-0223;AL;LATIN SMALL LETTER OU
-0224;AL;LATIN CAPITAL LETTER Z WITH HOOK
-0225;AL;LATIN SMALL LETTER Z WITH HOOK
-0226;AL;LATIN CAPITAL LETTER A WITH DOT ABOVE
-0227;AL;LATIN SMALL LETTER A WITH DOT ABOVE
-0228;AL;LATIN CAPITAL LETTER E WITH CEDILLA
-0229;AL;LATIN SMALL LETTER E WITH CEDILLA
-022A;AL;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-022B;AL;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022C;AL;LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-022D;AL;LATIN SMALL LETTER O WITH TILDE AND MACRON
-022E;AL;LATIN CAPITAL LETTER O WITH DOT ABOVE
-022F;AL;LATIN SMALL LETTER O WITH DOT ABOVE
-0230;AL;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
-0231;AL;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
-0232;AL;LATIN CAPITAL LETTER Y WITH MACRON
-0233;AL;LATIN SMALL LETTER Y WITH MACRON
-0250;AL;LATIN SMALL LETTER TURNED A
-0251;AI;LATIN SMALL LETTER ALPHA
-0252;AL;LATIN SMALL LETTER TURNED ALPHA
-0253;AL;LATIN SMALL LETTER B WITH HOOK
-0254;AL;LATIN SMALL LETTER OPEN O
-0255;AL;LATIN SMALL LETTER C WITH CURL
-0256;AL;LATIN SMALL LETTER D WITH TAIL
-0257;AL;LATIN SMALL LETTER D WITH HOOK
-0258;AL;LATIN SMALL LETTER REVERSED E
-0259;AL;LATIN SMALL LETTER SCHWA
-025A;AL;LATIN SMALL LETTER SCHWA WITH HOOK
-025B;AL;LATIN SMALL LETTER OPEN E
-025C;AL;LATIN SMALL LETTER REVERSED OPEN E
-025D;AL;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
-025E;AL;LATIN SMALL LETTER CLOSED REVERSED OPEN E
-025F;AL;LATIN SMALL LETTER DOTLESS J WITH STROKE
-0260;AL;LATIN SMALL LETTER G WITH HOOK
-0261;AI;LATIN SMALL LETTER SCRIPT G
-0262;AL;LATIN LETTER SMALL CAPITAL G
-0263;AL;LATIN SMALL LETTER GAMMA
-0264;AL;LATIN SMALL LETTER RAMS HORN
-0265;AL;LATIN SMALL LETTER TURNED H
-0266;AL;LATIN SMALL LETTER H WITH HOOK
-0267;AL;LATIN SMALL LETTER HENG WITH HOOK
-0268;AL;LATIN SMALL LETTER I WITH STROKE
-0269;AL;LATIN SMALL LETTER IOTA
-026A;AL;LATIN LETTER SMALL CAPITAL I
-026B;AL;LATIN SMALL LETTER L WITH MIDDLE TILDE
-026C;AL;LATIN SMALL LETTER L WITH BELT
-026D;AL;LATIN SMALL LETTER L WITH RETROFLEX HOOK
-026E;AL;LATIN SMALL LETTER LEZH
-026F;AL;LATIN SMALL LETTER TURNED M
-0270;AL;LATIN SMALL LETTER TURNED M WITH LONG LEG
-0271;AL;LATIN SMALL LETTER M WITH HOOK
-0272;AL;LATIN SMALL LETTER N WITH LEFT HOOK
-0273;AL;LATIN SMALL LETTER N WITH RETROFLEX HOOK
-0274;AL;LATIN LETTER SMALL CAPITAL N
-0275;AL;LATIN SMALL LETTER BARRED O
-0276;AL;LATIN LETTER SMALL CAPITAL OE
-0277;AL;LATIN SMALL LETTER CLOSED OMEGA
-0278;AL;LATIN SMALL LETTER PHI
-0279;AL;LATIN SMALL LETTER TURNED R
-027A;AL;LATIN SMALL LETTER TURNED R WITH LONG LEG
-027B;AL;LATIN SMALL LETTER TURNED R WITH HOOK
-027C;AL;LATIN SMALL LETTER R WITH LONG LEG
-027D;AL;LATIN SMALL LETTER R WITH TAIL
-027E;AL;LATIN SMALL LETTER R WITH FISHHOOK
-027F;AL;LATIN SMALL LETTER REVERSED R WITH FISHHOOK
-0280;AL;LATIN LETTER SMALL CAPITAL R
-0281;AL;LATIN LETTER SMALL CAPITAL INVERTED R
-0282;AL;LATIN SMALL LETTER S WITH HOOK
-0283;AL;LATIN SMALL LETTER ESH
-0284;AL;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
-0285;AL;LATIN SMALL LETTER SQUAT REVERSED ESH
-0286;AL;LATIN SMALL LETTER ESH WITH CURL
-0287;AL;LATIN SMALL LETTER TURNED T
-0288;AL;LATIN SMALL LETTER T WITH RETROFLEX HOOK
-0289;AL;LATIN SMALL LETTER U BAR
-028A;AL;LATIN SMALL LETTER UPSILON
-028B;AL;LATIN SMALL LETTER V WITH HOOK
-028C;AL;LATIN SMALL LETTER TURNED V
-028D;AL;LATIN SMALL LETTER TURNED W
-028E;AL;LATIN SMALL LETTER TURNED Y
-028F;AL;LATIN LETTER SMALL CAPITAL Y
-0290;AL;LATIN SMALL LETTER Z WITH RETROFLEX HOOK
-0291;AL;LATIN SMALL LETTER Z WITH CURL
-0292;AL;LATIN SMALL LETTER EZH
-0293;AL;LATIN SMALL LETTER EZH WITH CURL
-0294;AL;LATIN LETTER GLOTTAL STOP
-0295;AL;LATIN LETTER PHARYNGEAL VOICED FRICATIVE
-0296;AL;LATIN LETTER INVERTED GLOTTAL STOP
-0297;AL;LATIN LETTER STRETCHED C
-0298;AL;LATIN LETTER BILABIAL CLICK
-0299;AL;LATIN LETTER SMALL CAPITAL B
-029A;AL;LATIN SMALL LETTER CLOSED OPEN E
-029B;AL;LATIN LETTER SMALL CAPITAL G WITH HOOK
-029C;AL;LATIN LETTER SMALL CAPITAL H
-029D;AL;LATIN SMALL LETTER J WITH CROSSED-TAIL
-029E;AL;LATIN SMALL LETTER TURNED K
-029F;AL;LATIN LETTER SMALL CAPITAL L
-02A0;AL;LATIN SMALL LETTER Q WITH HOOK
-02A1;AL;LATIN LETTER GLOTTAL STOP WITH STROKE
-02A2;AL;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
-02A3;AL;LATIN SMALL LETTER DZ DIGRAPH
-02A4;AL;LATIN SMALL LETTER DEZH DIGRAPH
-02A5;AL;LATIN SMALL LETTER DZ DIGRAPH WITH CURL
-02A6;AL;LATIN SMALL LETTER TS DIGRAPH
-02A7;AL;LATIN SMALL LETTER TESH DIGRAPH
-02A8;AL;LATIN SMALL LETTER TC DIGRAPH WITH CURL
-02A9;AL;LATIN SMALL LETTER FENG DIGRAPH
-02AA;AL;LATIN SMALL LETTER LS DIGRAPH
-02AB;AL;LATIN SMALL LETTER LZ DIGRAPH
-02AC;AL;LATIN LETTER BILABIAL PERCUSSIVE
-02AD;AL;LATIN LETTER BIDENTAL PERCUSSIVE
-02B0;AL;MODIFIER LETTER SMALL H
-02B1;AL;MODIFIER LETTER SMALL H WITH HOOK
-02B2;AL;MODIFIER LETTER SMALL J
-02B3;AL;MODIFIER LETTER SMALL R
-02B4;AL;MODIFIER LETTER SMALL TURNED R
-02B5;AL;MODIFIER LETTER SMALL TURNED R WITH HOOK
-02B6;AL;MODIFIER LETTER SMALL CAPITAL INVERTED R
-02B7;AL;MODIFIER LETTER SMALL W
-02B8;AL;MODIFIER LETTER SMALL Y
-02B9;AL;MODIFIER LETTER PRIME
-02BA;AL;MODIFIER LETTER DOUBLE PRIME
-02BB;AL;MODIFIER LETTER TURNED COMMA
-02BC;AL;MODIFIER LETTER APOSTROPHE
-02BD;AL;MODIFIER LETTER REVERSED COMMA
-02BE;AL;MODIFIER LETTER RIGHT HALF RING
-02BF;AL;MODIFIER LETTER LEFT HALF RING
-02C0;AL;MODIFIER LETTER GLOTTAL STOP
-02C1;AL;MODIFIER LETTER REVERSED GLOTTAL STOP
-02C2;AL;MODIFIER LETTER LEFT ARROWHEAD
-02C3;AL;MODIFIER LETTER RIGHT ARROWHEAD
-02C4;AL;MODIFIER LETTER UP ARROWHEAD
-02C5;AL;MODIFIER LETTER DOWN ARROWHEAD
-02C6;AL;MODIFIER LETTER CIRCUMFLEX ACCENT
-02C7;AI;CARON
-02C8;BB;MODIFIER LETTER VERTICAL LINE
-02C9;AI;MODIFIER LETTER MACRON
-02CA;AI;MODIFIER LETTER ACUTE ACCENT
-02CB;AI;MODIFIER LETTER GRAVE ACCENT
-02CC;BB;MODIFIER LETTER LOW VERTICAL LINE
-02CD;AI;MODIFIER LETTER LOW MACRON
-02CE;AL;MODIFIER LETTER LOW GRAVE ACCENT
-02CF;AL;MODIFIER LETTER LOW ACUTE ACCENT
-02D0;AI;MODIFIER LETTER TRIANGULAR COLON
-02D1;AL;MODIFIER LETTER HALF TRIANGULAR COLON
-02D2;AL;MODIFIER LETTER CENTRED RIGHT HALF RING
-02D3;AL;MODIFIER LETTER CENTRED LEFT HALF RING
-02D4;AL;MODIFIER LETTER UP TACK
-02D5;AL;MODIFIER LETTER DOWN TACK
-02D6;AL;MODIFIER LETTER PLUS SIGN
-02D7;AL;MODIFIER LETTER MINUS SIGN
-02D8;AI;BREVE
-02D9;AI;DOT ABOVE
-02DA;AI;RING ABOVE
-02DB;AI;OGONEK
-02DC;AL;SMALL TILDE
-02DD;AI;DOUBLE ACUTE ACCENT
-02DE;AL;MODIFIER LETTER RHOTIC HOOK
-02DF;AL;MODIFIER LETTER CROSS ACCENT
-02E0;AL;MODIFIER LETTER SMALL GAMMA
-02E1;AL;MODIFIER LETTER SMALL L
-02E2;AL;MODIFIER LETTER SMALL S
-02E3;AL;MODIFIER LETTER SMALL X
-02E4;AL;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-02E5;AL;MODIFIER LETTER EXTRA-HIGH TONE BAR
-02E6;AL;MODIFIER LETTER HIGH TONE BAR
-02E7;AL;MODIFIER LETTER MID TONE BAR
-02E8;AL;MODIFIER LETTER LOW TONE BAR
-02E9;AL;MODIFIER LETTER EXTRA-LOW TONE BAR
-02EA;AL;MODIFIER LETTER YIN DEPARTING TONE MARK
-02EB;AL;MODIFIER LETTER YANG DEPARTING TONE MARK
-02EC;AL;MODIFIER LETTER VOICING
-02ED;AL;MODIFIER LETTER UNASPIRATED
-02EE;AL;MODIFIER LETTER DOUBLE APOSTROPHE
-0300;CM;COMBINING GRAVE ACCENT
-0301;CM;COMBINING ACUTE ACCENT
-0302;CM;COMBINING CIRCUMFLEX ACCENT
-0303;CM;COMBINING TILDE
-0304;CM;COMBINING MACRON
-0305;CM;COMBINING OVERLINE
-0306;CM;COMBINING BREVE
-0307;CM;COMBINING DOT ABOVE
-0308;CM;COMBINING DIAERESIS
-0309;CM;COMBINING HOOK ABOVE
-030A;CM;COMBINING RING ABOVE
-030B;CM;COMBINING DOUBLE ACUTE ACCENT
-030C;CM;COMBINING CARON
-030D;CM;COMBINING VERTICAL LINE ABOVE
-030E;CM;COMBINING DOUBLE VERTICAL LINE ABOVE
-030F;CM;COMBINING DOUBLE GRAVE ACCENT
-0310;CM;COMBINING CANDRABINDU
-0311;CM;COMBINING INVERTED BREVE
-0312;CM;COMBINING TURNED COMMA ABOVE
-0313;CM;COMBINING COMMA ABOVE
-0314;CM;COMBINING REVERSED COMMA ABOVE
-0315;CM;COMBINING COMMA ABOVE RIGHT
-0316;CM;COMBINING GRAVE ACCENT BELOW
-0317;CM;COMBINING ACUTE ACCENT BELOW
-0318;CM;COMBINING LEFT TACK BELOW
-0319;CM;COMBINING RIGHT TACK BELOW
-031A;CM;COMBINING LEFT ANGLE ABOVE
-031B;CM;COMBINING HORN
-031C;CM;COMBINING LEFT HALF RING BELOW
-031D;CM;COMBINING UP TACK BELOW
-031E;CM;COMBINING DOWN TACK BELOW
-031F;CM;COMBINING PLUS SIGN BELOW
-0320;CM;COMBINING MINUS SIGN BELOW
-0321;CM;COMBINING PALATALIZED HOOK BELOW
-0322;CM;COMBINING RETROFLEX HOOK BELOW
-0323;CM;COMBINING DOT BELOW
-0324;CM;COMBINING DIAERESIS BELOW
-0325;CM;COMBINING RING BELOW
-0326;CM;COMBINING COMMA BELOW
-0327;CM;COMBINING CEDILLA
-0328;CM;COMBINING OGONEK
-0329;CM;COMBINING VERTICAL LINE BELOW
-032A;CM;COMBINING BRIDGE BELOW
-032B;CM;COMBINING INVERTED DOUBLE ARCH BELOW
-032C;CM;COMBINING CARON BELOW
-032D;CM;COMBINING CIRCUMFLEX ACCENT BELOW
-032E;CM;COMBINING BREVE BELOW
-032F;CM;COMBINING INVERTED BREVE BELOW
-0330;CM;COMBINING TILDE BELOW
-0331;CM;COMBINING MACRON BELOW
-0332;CM;COMBINING LOW LINE
-0333;CM;COMBINING DOUBLE LOW LINE
-0334;CM;COMBINING TILDE OVERLAY
-0335;CM;COMBINING SHORT STROKE OVERLAY
-0336;CM;COMBINING LONG STROKE OVERLAY
-0337;CM;COMBINING SHORT SOLIDUS OVERLAY
-0338;CM;COMBINING LONG SOLIDUS OVERLAY
-0339;CM;COMBINING RIGHT HALF RING BELOW
-033A;CM;COMBINING INVERTED BRIDGE BELOW
-033B;CM;COMBINING SQUARE BELOW
-033C;CM;COMBINING SEAGULL BELOW
-033D;CM;COMBINING X ABOVE
-033E;CM;COMBINING VERTICAL TILDE
-033F;CM;COMBINING DOUBLE OVERLINE
-0340;CM;COMBINING GRAVE TONE MARK
-0341;CM;COMBINING ACUTE TONE MARK
-0342;CM;COMBINING GREEK PERISPOMENI
-0343;CM;COMBINING GREEK KORONIS
-0344;CM;COMBINING GREEK DIALYTIKA TONOS
-0345;CM;COMBINING GREEK YPOGEGRAMMENI
-0346;CM;COMBINING BRIDGE ABOVE
-0347;CM;COMBINING EQUALS SIGN BELOW
-0348;CM;COMBINING DOUBLE VERTICAL LINE BELOW
-0349;CM;COMBINING LEFT ANGLE BELOW
-034A;CM;COMBINING NOT TILDE ABOVE
-034B;CM;COMBINING HOMOTHETIC ABOVE
-034C;CM;COMBINING ALMOST EQUAL TO ABOVE
-034D;CM;COMBINING LEFT RIGHT ARROW BELOW
-034E;CM;COMBINING UPWARDS ARROW BELOW
-0360;CM;COMBINING DOUBLE TILDE
-0361;CM;COMBINING DOUBLE INVERTED BREVE
-0362;CM;COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-0374;AL;GREEK NUMERAL SIGN
-0375;AL;GREEK LOWER NUMERAL SIGN
-037A;AL;GREEK YPOGEGRAMMENI
-037E;AL;GREEK QUESTION MARK
-0384;AL;GREEK TONOS
-0385;AL;GREEK DIALYTIKA TONOS
-0386;AL;GREEK CAPITAL LETTER ALPHA WITH TONOS
-0387;AL;GREEK ANO TELEIA
-0388;AL;GREEK CAPITAL LETTER EPSILON WITH TONOS
-0389;AL;GREEK CAPITAL LETTER ETA WITH TONOS
-038A;AL;GREEK CAPITAL LETTER IOTA WITH TONOS
-038C;AL;GREEK CAPITAL LETTER OMICRON WITH TONOS
-038E;AL;GREEK CAPITAL LETTER UPSILON WITH TONOS
-038F;AL;GREEK CAPITAL LETTER OMEGA WITH TONOS
-0390;AL;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0391;AI;GREEK CAPITAL LETTER ALPHA
-0392;AI;GREEK CAPITAL LETTER BETA
-0393;AI;GREEK CAPITAL LETTER GAMMA
-0394;AI;GREEK CAPITAL LETTER DELTA
-0395;AI;GREEK CAPITAL LETTER EPSILON
-0396;AI;GREEK CAPITAL LETTER ZETA
-0397;AI;GREEK CAPITAL LETTER ETA
-0398;AI;GREEK CAPITAL LETTER THETA
-0399;AI;GREEK CAPITAL LETTER IOTA
-039A;AI;GREEK CAPITAL LETTER KAPPA
-039B;AI;GREEK CAPITAL LETTER LAMDA
-039C;AI;GREEK CAPITAL LETTER MU
-039D;AI;GREEK CAPITAL LETTER NU
-039E;AI;GREEK CAPITAL LETTER XI
-039F;AI;GREEK CAPITAL LETTER OMICRON
-03A0;AI;GREEK CAPITAL LETTER PI
-03A1;AI;GREEK CAPITAL LETTER RHO
-03A3;AI;GREEK CAPITAL LETTER SIGMA
-03A4;AI;GREEK CAPITAL LETTER TAU
-03A5;AI;GREEK CAPITAL LETTER UPSILON
-03A6;AI;GREEK CAPITAL LETTER PHI
-03A7;AI;GREEK CAPITAL LETTER CHI
-03A8;AI;GREEK CAPITAL LETTER PSI
-03A9;AI;GREEK CAPITAL LETTER OMEGA
-03AA;AL;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-03AB;AL;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-03AC;AL;GREEK SMALL LETTER ALPHA WITH TONOS
-03AD;AL;GREEK SMALL LETTER EPSILON WITH TONOS
-03AE;AL;GREEK SMALL LETTER ETA WITH TONOS
-03AF;AL;GREEK SMALL LETTER IOTA WITH TONOS
-03B0;AL;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-03B1;AI;GREEK SMALL LETTER ALPHA
-03B2;AI;GREEK SMALL LETTER BETA
-03B3;AI;GREEK SMALL LETTER GAMMA
-03B4;AI;GREEK SMALL LETTER DELTA
-03B5;AI;GREEK SMALL LETTER EPSILON
-03B6;AI;GREEK SMALL LETTER ZETA
-03B7;AI;GREEK SMALL LETTER ETA
-03B8;AI;GREEK SMALL LETTER THETA
-03B9;AI;GREEK SMALL LETTER IOTA
-03BA;AI;GREEK SMALL LETTER KAPPA
-03BB;AI;GREEK SMALL LETTER LAMDA
-03BC;AI;GREEK SMALL LETTER MU
-03BD;AI;GREEK SMALL LETTER NU
-03BE;AI;GREEK SMALL LETTER XI
-03BF;AI;GREEK SMALL LETTER OMICRON
-03C0;AI;GREEK SMALL LETTER PI
-03C1;AI;GREEK SMALL LETTER RHO
-03C2;AL;GREEK SMALL LETTER FINAL SIGMA
-03C3;AI;GREEK SMALL LETTER SIGMA
-03C4;AI;GREEK SMALL LETTER TAU
-03C5;AI;GREEK SMALL LETTER UPSILON
-03C6;AI;GREEK SMALL LETTER PHI
-03C7;AI;GREEK SMALL LETTER CHI
-03C8;AI;GREEK SMALL LETTER PSI
-03C9;AI;GREEK SMALL LETTER OMEGA
-03CA;AL;GREEK SMALL LETTER IOTA WITH DIALYTIKA
-03CB;AL;GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-03CC;AL;GREEK SMALL LETTER OMICRON WITH TONOS
-03CD;AL;GREEK SMALL LETTER UPSILON WITH TONOS
-03CE;AL;GREEK SMALL LETTER OMEGA WITH TONOS
-03D0;AL;GREEK BETA SYMBOL
-03D1;AL;GREEK THETA SYMBOL
-03D2;AL;GREEK UPSILON WITH HOOK SYMBOL
-03D3;AL;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
-03D4;AL;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
-03D5;AL;GREEK PHI SYMBOL
-03D6;AL;GREEK PI SYMBOL
-03D7;AL;GREEK KAI SYMBOL
-03DA;AL;GREEK LETTER STIGMA
-03DB;AL;GREEK SMALL LETTER STIGMA
-03DC;AL;GREEK LETTER DIGAMMA
-03DD;AL;GREEK SMALL LETTER DIGAMMA
-03DE;AL;GREEK LETTER KOPPA
-03DF;AL;GREEK SMALL LETTER KOPPA
-03E0;AL;GREEK LETTER SAMPI
-03E1;AL;GREEK SMALL LETTER SAMPI
-03E2;AL;COPTIC CAPITAL LETTER SHEI
-03E3;AL;COPTIC SMALL LETTER SHEI
-03E4;AL;COPTIC CAPITAL LETTER FEI
-03E5;AL;COPTIC SMALL LETTER FEI
-03E6;AL;COPTIC CAPITAL LETTER KHEI
-03E7;AL;COPTIC SMALL LETTER KHEI
-03E8;AL;COPTIC CAPITAL LETTER HORI
-03E9;AL;COPTIC SMALL LETTER HORI
-03EA;AL;COPTIC CAPITAL LETTER GANGIA
-03EB;AL;COPTIC SMALL LETTER GANGIA
-03EC;AL;COPTIC CAPITAL LETTER SHIMA
-03ED;AL;COPTIC SMALL LETTER SHIMA
-03EE;AL;COPTIC CAPITAL LETTER DEI
-03EF;AL;COPTIC SMALL LETTER DEI
-03F0;AL;GREEK KAPPA SYMBOL
-03F1;AL;GREEK RHO SYMBOL
-03F2;AL;GREEK LUNATE SIGMA SYMBOL
-03F3;AL;GREEK LETTER YOT
-0400;AL;CYRILLIC CAPITAL LETTER IE WITH GRAVE
-0401;AI;CYRILLIC CAPITAL LETTER IO
-0402;AL;CYRILLIC CAPITAL LETTER DJE
-0403;AL;CYRILLIC CAPITAL LETTER GJE
-0404;AL;CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0405;AL;CYRILLIC CAPITAL LETTER DZE
-0406;AL;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0407;AL;CYRILLIC CAPITAL LETTER YI
-0408;AL;CYRILLIC CAPITAL LETTER JE
-0409;AL;CYRILLIC CAPITAL LETTER LJE
-040A;AL;CYRILLIC CAPITAL LETTER NJE
-040B;AL;CYRILLIC CAPITAL LETTER TSHE
-040C;AL;CYRILLIC CAPITAL LETTER KJE
-040D;AL;CYRILLIC CAPITAL LETTER I WITH GRAVE
-040E;AL;CYRILLIC CAPITAL LETTER SHORT U
-040F;AL;CYRILLIC CAPITAL LETTER DZHE
-0410;AI;CYRILLIC CAPITAL LETTER A
-0411;AI;CYRILLIC CAPITAL LETTER BE
-0412;AI;CYRILLIC CAPITAL LETTER VE
-0413;AI;CYRILLIC CAPITAL LETTER GHE
-0414;AI;CYRILLIC CAPITAL LETTER DE
-0415;AI;CYRILLIC CAPITAL LETTER IE
-0416;AI;CYRILLIC CAPITAL LETTER ZHE
-0417;AI;CYRILLIC CAPITAL LETTER ZE
-0418;AI;CYRILLIC CAPITAL LETTER I
-0419;AI;CYRILLIC CAPITAL LETTER SHORT I
-041A;AI;CYRILLIC CAPITAL LETTER KA
-041B;AI;CYRILLIC CAPITAL LETTER EL
-041C;AI;CYRILLIC CAPITAL LETTER EM
-041D;AI;CYRILLIC CAPITAL LETTER EN
-041E;AI;CYRILLIC CAPITAL LETTER O
-041F;AI;CYRILLIC CAPITAL LETTER PE
-0420;AI;CYRILLIC CAPITAL LETTER ER
-0421;AI;CYRILLIC CAPITAL LETTER ES
-0422;AI;CYRILLIC CAPITAL LETTER TE
-0423;AI;CYRILLIC CAPITAL LETTER U
-0424;AI;CYRILLIC CAPITAL LETTER EF
-0425;AI;CYRILLIC CAPITAL LETTER HA
-0426;AI;CYRILLIC CAPITAL LETTER TSE
-0427;AI;CYRILLIC CAPITAL LETTER CHE
-0428;AI;CYRILLIC CAPITAL LETTER SHA
-0429;AI;CYRILLIC CAPITAL LETTER SHCHA
-042A;AI;CYRILLIC CAPITAL LETTER HARD SIGN
-042B;AI;CYRILLIC CAPITAL LETTER YERU
-042C;AI;CYRILLIC CAPITAL LETTER SOFT SIGN
-042D;AI;CYRILLIC CAPITAL LETTER E
-042E;AI;CYRILLIC CAPITAL LETTER YU
-042F;AI;CYRILLIC CAPITAL LETTER YA
-0430;AI;CYRILLIC SMALL LETTER A
-0431;AI;CYRILLIC SMALL LETTER BE
-0432;AI;CYRILLIC SMALL LETTER VE
-0433;AI;CYRILLIC SMALL LETTER GHE
-0434;AI;CYRILLIC SMALL LETTER DE
-0435;AI;CYRILLIC SMALL LETTER IE
-0436;AI;CYRILLIC SMALL LETTER ZHE
-0437;AI;CYRILLIC SMALL LETTER ZE
-0438;AI;CYRILLIC SMALL LETTER I
-0439;AI;CYRILLIC SMALL LETTER SHORT I
-043A;AI;CYRILLIC SMALL LETTER KA
-043B;AI;CYRILLIC SMALL LETTER EL
-043C;AI;CYRILLIC SMALL LETTER EM
-043D;AI;CYRILLIC SMALL LETTER EN
-043E;AI;CYRILLIC SMALL LETTER O
-043F;AI;CYRILLIC SMALL LETTER PE
-0440;AI;CYRILLIC SMALL LETTER ER
-0441;AI;CYRILLIC SMALL LETTER ES
-0442;AI;CYRILLIC SMALL LETTER TE
-0443;AI;CYRILLIC SMALL LETTER U
-0444;AI;CYRILLIC SMALL LETTER EF
-0445;AI;CYRILLIC SMALL LETTER HA
-0446;AI;CYRILLIC SMALL LETTER TSE
-0447;AI;CYRILLIC SMALL LETTER CHE
-0448;AI;CYRILLIC SMALL LETTER SHA
-0449;AI;CYRILLIC SMALL LETTER SHCHA
-044A;AI;CYRILLIC SMALL LETTER HARD SIGN
-044B;AI;CYRILLIC SMALL LETTER YERU
-044C;AI;CYRILLIC SMALL LETTER SOFT SIGN
-044D;AI;CYRILLIC SMALL LETTER E
-044E;AI;CYRILLIC SMALL LETTER YU
-044F;AI;CYRILLIC SMALL LETTER YA
-0450;AL;CYRILLIC SMALL LETTER IE WITH GRAVE
-0451;AI;CYRILLIC SMALL LETTER IO
-0452;AL;CYRILLIC SMALL LETTER DJE
-0453;AL;CYRILLIC SMALL LETTER GJE
-0454;AL;CYRILLIC SMALL LETTER UKRAINIAN IE
-0455;AL;CYRILLIC SMALL LETTER DZE
-0456;AL;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0457;AL;CYRILLIC SMALL LETTER YI
-0458;AL;CYRILLIC SMALL LETTER JE
-0459;AL;CYRILLIC SMALL LETTER LJE
-045A;AL;CYRILLIC SMALL LETTER NJE
-045B;AL;CYRILLIC SMALL LETTER TSHE
-045C;AL;CYRILLIC SMALL LETTER KJE
-045D;AL;CYRILLIC SMALL LETTER I WITH GRAVE
-045E;AL;CYRILLIC SMALL LETTER SHORT U
-045F;AL;CYRILLIC SMALL LETTER DZHE
-0460;AL;CYRILLIC CAPITAL LETTER OMEGA
-0461;AL;CYRILLIC SMALL LETTER OMEGA
-0462;AL;CYRILLIC CAPITAL LETTER YAT
-0463;AL;CYRILLIC SMALL LETTER YAT
-0464;AL;CYRILLIC CAPITAL LETTER IOTIFIED E
-0465;AL;CYRILLIC SMALL LETTER IOTIFIED E
-0466;AL;CYRILLIC CAPITAL LETTER LITTLE YUS
-0467;AL;CYRILLIC SMALL LETTER LITTLE YUS
-0468;AL;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-0469;AL;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
-046A;AL;CYRILLIC CAPITAL LETTER BIG YUS
-046B;AL;CYRILLIC SMALL LETTER BIG YUS
-046C;AL;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-046D;AL;CYRILLIC SMALL LETTER IOTIFIED BIG YUS
-046E;AL;CYRILLIC CAPITAL LETTER KSI
-046F;AL;CYRILLIC SMALL LETTER KSI
-0470;AL;CYRILLIC CAPITAL LETTER PSI
-0471;AL;CYRILLIC SMALL LETTER PSI
-0472;AL;CYRILLIC CAPITAL LETTER FITA
-0473;AL;CYRILLIC SMALL LETTER FITA
-0474;AL;CYRILLIC CAPITAL LETTER IZHITSA
-0475;AL;CYRILLIC SMALL LETTER IZHITSA
-0476;AL;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0477;AL;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0478;AL;CYRILLIC CAPITAL LETTER UK
-0479;AL;CYRILLIC SMALL LETTER UK
-047A;AL;CYRILLIC CAPITAL LETTER ROUND OMEGA
-047B;AL;CYRILLIC SMALL LETTER ROUND OMEGA
-047C;AL;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
-047D;AL;CYRILLIC SMALL LETTER OMEGA WITH TITLO
-047E;AL;CYRILLIC CAPITAL LETTER OT
-047F;AL;CYRILLIC SMALL LETTER OT
-0480;AL;CYRILLIC CAPITAL LETTER KOPPA
-0481;AL;CYRILLIC SMALL LETTER KOPPA
-0482;AL;CYRILLIC THOUSANDS SIGN
-0483;CM;COMBINING CYRILLIC TITLO
-0484;CM;COMBINING CYRILLIC PALATALIZATION
-0485;CM;COMBINING CYRILLIC DASIA PNEUMATA
-0486;CM;COMBINING CYRILLIC PSILI PNEUMATA
-0488;CM;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
-0489;CM;COMBINING CYRILLIC MILLIONS SIGN
-048C;AL;CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-048D;AL;CYRILLIC SMALL LETTER SEMISOFT SIGN
-048E;AL;CYRILLIC CAPITAL LETTER ER WITH TICK
-048F;AL;CYRILLIC SMALL LETTER ER WITH TICK
-0490;AL;CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0491;AL;CYRILLIC SMALL LETTER GHE WITH UPTURN
-0492;AL;CYRILLIC CAPITAL LETTER GHE WITH STROKE
-0493;AL;CYRILLIC SMALL LETTER GHE WITH STROKE
-0494;AL;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
-0495;AL;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
-0496;AL;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-0497;AL;CYRILLIC SMALL LETTER ZHE WITH DESCENDER
-0498;AL;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-0499;AL;CYRILLIC SMALL LETTER ZE WITH DESCENDER
-049A;AL;CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-049B;AL;CYRILLIC SMALL LETTER KA WITH DESCENDER
-049C;AL;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-049D;AL;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
-049E;AL;CYRILLIC CAPITAL LETTER KA WITH STROKE
-049F;AL;CYRILLIC SMALL LETTER KA WITH STROKE
-04A0;AL;CYRILLIC CAPITAL LETTER BASHKIR KA
-04A1;AL;CYRILLIC SMALL LETTER BASHKIR KA
-04A2;AL;CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-04A3;AL;CYRILLIC SMALL LETTER EN WITH DESCENDER
-04A4;AL;CYRILLIC CAPITAL LIGATURE EN GHE
-04A5;AL;CYRILLIC SMALL LIGATURE EN GHE
-04A6;AL;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
-04A7;AL;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
-04A8;AL;CYRILLIC CAPITAL LETTER ABKHASIAN HA
-04A9;AL;CYRILLIC SMALL LETTER ABKHASIAN HA
-04AA;AL;CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-04AB;AL;CYRILLIC SMALL LETTER ES WITH DESCENDER
-04AC;AL;CYRILLIC CAPITAL LETTER TE WITH DESCENDER
-04AD;AL;CYRILLIC SMALL LETTER TE WITH DESCENDER
-04AE;AL;CYRILLIC CAPITAL LETTER STRAIGHT U
-04AF;AL;CYRILLIC SMALL LETTER STRAIGHT U
-04B0;AL;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-04B1;AL;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
-04B2;AL;CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-04B3;AL;CYRILLIC SMALL LETTER HA WITH DESCENDER
-04B4;AL;CYRILLIC CAPITAL LIGATURE TE TSE
-04B5;AL;CYRILLIC SMALL LIGATURE TE TSE
-04B6;AL;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-04B7;AL;CYRILLIC SMALL LETTER CHE WITH DESCENDER
-04B8;AL;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-04B9;AL;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
-04BA;AL;CYRILLIC CAPITAL LETTER SHHA
-04BB;AL;CYRILLIC SMALL LETTER SHHA
-04BC;AL;CYRILLIC CAPITAL LETTER ABKHASIAN CHE
-04BD;AL;CYRILLIC SMALL LETTER ABKHASIAN CHE
-04BE;AL;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
-04BF;AL;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
-04C0;AL;CYRILLIC LETTER PALOCHKA
-04C1;AL;CYRILLIC CAPITAL LETTER ZHE WITH BREVE
-04C2;AL;CYRILLIC SMALL LETTER ZHE WITH BREVE
-04C3;AL;CYRILLIC CAPITAL LETTER KA WITH HOOK
-04C4;AL;CYRILLIC SMALL LETTER KA WITH HOOK
-04C7;AL;CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C8;AL;CYRILLIC SMALL LETTER EN WITH HOOK
-04CB;AL;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CC;AL;CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04D0;AL;CYRILLIC CAPITAL LETTER A WITH BREVE
-04D1;AL;CYRILLIC SMALL LETTER A WITH BREVE
-04D2;AL;CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04D3;AL;CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D4;AL;CYRILLIC CAPITAL LIGATURE A IE
-04D5;AL;CYRILLIC SMALL LIGATURE A IE
-04D6;AL;CYRILLIC CAPITAL LETTER IE WITH BREVE
-04D7;AL;CYRILLIC SMALL LETTER IE WITH BREVE
-04D8;AL;CYRILLIC CAPITAL LETTER SCHWA
-04D9;AL;CYRILLIC SMALL LETTER SCHWA
-04DA;AL;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04DB;AL;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DC;AL;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DD;AL;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DE;AL;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04DF;AL;CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04E0;AL;CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-04E1;AL;CYRILLIC SMALL LETTER ABKHASIAN DZE
-04E2;AL;CYRILLIC CAPITAL LETTER I WITH MACRON
-04E3;AL;CYRILLIC SMALL LETTER I WITH MACRON
-04E4;AL;CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-04E5;AL;CYRILLIC SMALL LETTER I WITH DIAERESIS
-04E6;AL;CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04E7;AL;CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E8;AL;CYRILLIC CAPITAL LETTER BARRED O
-04E9;AL;CYRILLIC SMALL LETTER BARRED O
-04EA;AL;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-04EB;AL;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EC;AL;CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-04ED;AL;CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EE;AL;CYRILLIC CAPITAL LETTER U WITH MACRON
-04EF;AL;CYRILLIC SMALL LETTER U WITH MACRON
-04F0;AL;CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F1;AL;CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F2;AL;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F3;AL;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F4;AL;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F5;AL;CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F8;AL;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04F9;AL;CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-0531;AL;ARMENIAN CAPITAL LETTER AYB
-0532;AL;ARMENIAN CAPITAL LETTER BEN
-0533;AL;ARMENIAN CAPITAL LETTER GIM
-0534;AL;ARMENIAN CAPITAL LETTER DA
-0535;AL;ARMENIAN CAPITAL LETTER ECH
-0536;AL;ARMENIAN CAPITAL LETTER ZA
-0537;AL;ARMENIAN CAPITAL LETTER EH
-0538;AL;ARMENIAN CAPITAL LETTER ET
-0539;AL;ARMENIAN CAPITAL LETTER TO
-053A;AL;ARMENIAN CAPITAL LETTER ZHE
-053B;AL;ARMENIAN CAPITAL LETTER INI
-053C;AL;ARMENIAN CAPITAL LETTER LIWN
-053D;AL;ARMENIAN CAPITAL LETTER XEH
-053E;AL;ARMENIAN CAPITAL LETTER CA
-053F;AL;ARMENIAN CAPITAL LETTER KEN
-0540;AL;ARMENIAN CAPITAL LETTER HO
-0541;AL;ARMENIAN CAPITAL LETTER JA
-0542;AL;ARMENIAN CAPITAL LETTER GHAD
-0543;AL;ARMENIAN CAPITAL LETTER CHEH
-0544;AL;ARMENIAN CAPITAL LETTER MEN
-0545;AL;ARMENIAN CAPITAL LETTER YI
-0546;AL;ARMENIAN CAPITAL LETTER NOW
-0547;AL;ARMENIAN CAPITAL LETTER SHA
-0548;AL;ARMENIAN CAPITAL LETTER VO
-0549;AL;ARMENIAN CAPITAL LETTER CHA
-054A;AL;ARMENIAN CAPITAL LETTER PEH
-054B;AL;ARMENIAN CAPITAL LETTER JHEH
-054C;AL;ARMENIAN CAPITAL LETTER RA
-054D;AL;ARMENIAN CAPITAL LETTER SEH
-054E;AL;ARMENIAN CAPITAL LETTER VEW
-054F;AL;ARMENIAN CAPITAL LETTER TIWN
-0550;AL;ARMENIAN CAPITAL LETTER REH
-0551;AL;ARMENIAN CAPITAL LETTER CO
-0552;AL;ARMENIAN CAPITAL LETTER YIWN
-0553;AL;ARMENIAN CAPITAL LETTER PIWR
-0554;AL;ARMENIAN CAPITAL LETTER KEH
-0555;AL;ARMENIAN CAPITAL LETTER OH
-0556;AL;ARMENIAN CAPITAL LETTER FEH
-0559;AL;ARMENIAN MODIFIER LETTER LEFT HALF RING
-055A;AL;ARMENIAN APOSTROPHE
-055B;AL;ARMENIAN EMPHASIS MARK
-055C;AL;ARMENIAN EXCLAMATION MARK
-055D;AL;ARMENIAN COMMA
-055E;AL;ARMENIAN QUESTION MARK
-055F;AL;ARMENIAN ABBREVIATION MARK
-0561;AL;ARMENIAN SMALL LETTER AYB
-0562;AL;ARMENIAN SMALL LETTER BEN
-0563;AL;ARMENIAN SMALL LETTER GIM
-0564;AL;ARMENIAN SMALL LETTER DA
-0565;AL;ARMENIAN SMALL LETTER ECH
-0566;AL;ARMENIAN SMALL LETTER ZA
-0567;AL;ARMENIAN SMALL LETTER EH
-0568;AL;ARMENIAN SMALL LETTER ET
-0569;AL;ARMENIAN SMALL LETTER TO
-056A;AL;ARMENIAN SMALL LETTER ZHE
-056B;AL;ARMENIAN SMALL LETTER INI
-056C;AL;ARMENIAN SMALL LETTER LIWN
-056D;AL;ARMENIAN SMALL LETTER XEH
-056E;AL;ARMENIAN SMALL LETTER CA
-056F;AL;ARMENIAN SMALL LETTER KEN
-0570;AL;ARMENIAN SMALL LETTER HO
-0571;AL;ARMENIAN SMALL LETTER JA
-0572;AL;ARMENIAN SMALL LETTER GHAD
-0573;AL;ARMENIAN SMALL LETTER CHEH
-0574;AL;ARMENIAN SMALL LETTER MEN
-0575;AL;ARMENIAN SMALL LETTER YI
-0576;AL;ARMENIAN SMALL LETTER NOW
-0577;AL;ARMENIAN SMALL LETTER SHA
-0578;AL;ARMENIAN SMALL LETTER VO
-0579;AL;ARMENIAN SMALL LETTER CHA
-057A;AL;ARMENIAN SMALL LETTER PEH
-057B;AL;ARMENIAN SMALL LETTER JHEH
-057C;AL;ARMENIAN SMALL LETTER RA
-057D;AL;ARMENIAN SMALL LETTER SEH
-057E;AL;ARMENIAN SMALL LETTER VEW
-057F;AL;ARMENIAN SMALL LETTER TIWN
-0580;AL;ARMENIAN SMALL LETTER REH
-0581;AL;ARMENIAN SMALL LETTER CO
-0582;AL;ARMENIAN SMALL LETTER YIWN
-0583;AL;ARMENIAN SMALL LETTER PIWR
-0584;AL;ARMENIAN SMALL LETTER KEH
-0585;AL;ARMENIAN SMALL LETTER OH
-0586;AL;ARMENIAN SMALL LETTER FEH
-0587;AL;ARMENIAN SMALL LIGATURE ECH YIWN
-0589;IS;ARMENIAN FULL STOP
-058A;BA;ARMENIAN HYPHEN
-0591;CM;HEBREW ACCENT ETNAHTA
-0592;CM;HEBREW ACCENT SEGOL
-0593;CM;HEBREW ACCENT SHALSHELET
-0594;CM;HEBREW ACCENT ZAQEF QATAN
-0595;CM;HEBREW ACCENT ZAQEF GADOL
-0596;CM;HEBREW ACCENT TIPEHA
-0597;CM;HEBREW ACCENT REVIA
-0598;CM;HEBREW ACCENT ZARQA
-0599;CM;HEBREW ACCENT PASHTA
-059A;CM;HEBREW ACCENT YETIV
-059B;CM;HEBREW ACCENT TEVIR
-059C;CM;HEBREW ACCENT GERESH
-059D;CM;HEBREW ACCENT GERESH MUQDAM
-059E;CM;HEBREW ACCENT GERSHAYIM
-059F;CM;HEBREW ACCENT QARNEY PARA
-05A0;CM;HEBREW ACCENT TELISHA GEDOLA
-05A1;CM;HEBREW ACCENT PAZER
-05A3;CM;HEBREW ACCENT MUNAH
-05A4;CM;HEBREW ACCENT MAHAPAKH
-05A5;CM;HEBREW ACCENT MERKHA
-05A6;CM;HEBREW ACCENT MERKHA KEFULA
-05A7;CM;HEBREW ACCENT DARGA
-05A8;CM;HEBREW ACCENT QADMA
-05A9;CM;HEBREW ACCENT TELISHA QETANA
-05AA;CM;HEBREW ACCENT YERAH BEN YOMO
-05AB;CM;HEBREW ACCENT OLE
-05AC;CM;HEBREW ACCENT ILUY
-05AD;CM;HEBREW ACCENT DEHI
-05AE;CM;HEBREW ACCENT ZINOR
-05AF;CM;HEBREW MARK MASORA CIRCLE
-05B0;CM;HEBREW POINT SHEVA
-05B1;CM;HEBREW POINT HATAF SEGOL
-05B2;CM;HEBREW POINT HATAF PATAH
-05B3;CM;HEBREW POINT HATAF QAMATS
-05B4;CM;HEBREW POINT HIRIQ
-05B5;CM;HEBREW POINT TSERE
-05B6;CM;HEBREW POINT SEGOL
-05B7;CM;HEBREW POINT PATAH
-05B8;CM;HEBREW POINT QAMATS
-05B9;CM;HEBREW POINT HOLAM
-05BB;CM;HEBREW POINT QUBUTS
-05BC;CM;HEBREW POINT DAGESH OR MAPIQ
-05BD;CM;HEBREW POINT METEG
-05BE;AL;HEBREW PUNCTUATION MAQAF
-05BF;CM;HEBREW POINT RAFE
-05C0;AL;HEBREW PUNCTUATION PASEQ
-05C1;CM;HEBREW POINT SHIN DOT
-05C2;CM;HEBREW POINT SIN DOT
-05C3;AL;HEBREW PUNCTUATION SOF PASUQ
-05C4;CM;HEBREW MARK UPPER DOT
-05D0;AL;HEBREW LETTER ALEF
-05D1;AL;HEBREW LETTER BET
-05D2;AL;HEBREW LETTER GIMEL
-05D3;AL;HEBREW LETTER DALET
-05D4;AL;HEBREW LETTER HE
-05D5;AL;HEBREW LETTER VAV
-05D6;AL;HEBREW LETTER ZAYIN
-05D7;AL;HEBREW LETTER HET
-05D8;AL;HEBREW LETTER TET
-05D9;AL;HEBREW LETTER YOD
-05DA;AL;HEBREW LETTER FINAL KAF
-05DB;AL;HEBREW LETTER KAF
-05DC;AL;HEBREW LETTER LAMED
-05DD;AL;HEBREW LETTER FINAL MEM
-05DE;AL;HEBREW LETTER MEM
-05DF;AL;HEBREW LETTER FINAL NUN
-05E0;AL;HEBREW LETTER NUN
-05E1;AL;HEBREW LETTER SAMEKH
-05E2;AL;HEBREW LETTER AYIN
-05E3;AL;HEBREW LETTER FINAL PE
-05E4;AL;HEBREW LETTER PE
-05E5;AL;HEBREW LETTER FINAL TSADI
-05E6;AL;HEBREW LETTER TSADI
-05E7;AL;HEBREW LETTER QOF
-05E8;AL;HEBREW LETTER RESH
-05E9;AL;HEBREW LETTER SHIN
-05EA;AL;HEBREW LETTER TAV
-05F0;AL;HEBREW LIGATURE YIDDISH DOUBLE VAV
-05F1;AL;HEBREW LIGATURE YIDDISH VAV YOD
-05F2;AL;HEBREW LIGATURE YIDDISH DOUBLE YOD
-05F3;AL;HEBREW PUNCTUATION GERESH
-05F4;AL;HEBREW PUNCTUATION GERSHAYIM
-060C;AL;ARABIC COMMA
-061B;AL;ARABIC SEMICOLON
-061F;AL;ARABIC QUESTION MARK
-0621;AL;ARABIC LETTER HAMZA
-0622;AL;ARABIC LETTER ALEF WITH MADDA ABOVE
-0623;AL;ARABIC LETTER ALEF WITH HAMZA ABOVE
-0624;AL;ARABIC LETTER WAW WITH HAMZA ABOVE
-0625;AL;ARABIC LETTER ALEF WITH HAMZA BELOW
-0626;AL;ARABIC LETTER YEH WITH HAMZA ABOVE
-0627;AL;ARABIC LETTER ALEF
-0628;AL;ARABIC LETTER BEH
-0629;AL;ARABIC LETTER TEH MARBUTA
-062A;AL;ARABIC LETTER TEH
-062B;AL;ARABIC LETTER THEH
-062C;AL;ARABIC LETTER JEEM
-062D;AL;ARABIC LETTER HAH
-062E;AL;ARABIC LETTER KHAH
-062F;AL;ARABIC LETTER DAL
-0630;AL;ARABIC LETTER THAL
-0631;AL;ARABIC LETTER REH
-0632;AL;ARABIC LETTER ZAIN
-0633;AL;ARABIC LETTER SEEN
-0634;AL;ARABIC LETTER SHEEN
-0635;AL;ARABIC LETTER SAD
-0636;AL;ARABIC LETTER DAD
-0637;AL;ARABIC LETTER TAH
-0638;AL;ARABIC LETTER ZAH
-0639;AL;ARABIC LETTER AIN
-063A;AL;ARABIC LETTER GHAIN
-0640;AL;ARABIC TATWEEL
-0641;AL;ARABIC LETTER FEH
-0642;AL;ARABIC LETTER QAF
-0643;AL;ARABIC LETTER KAF
-0644;AL;ARABIC LETTER LAM
-0645;AL;ARABIC LETTER MEEM
-0646;AL;ARABIC LETTER NOON
-0647;AL;ARABIC LETTER HEH
-0648;AL;ARABIC LETTER WAW
-0649;AL;ARABIC LETTER ALEF MAKSURA
-064A;AL;ARABIC LETTER YEH
-064B;CM;ARABIC FATHATAN
-064C;CM;ARABIC DAMMATAN
-064D;CM;ARABIC KASRATAN
-064E;CM;ARABIC FATHA
-064F;CM;ARABIC DAMMA
-0650;CM;ARABIC KASRA
-0651;CM;ARABIC SHADDA
-0652;CM;ARABIC SUKUN
-0653;CM;ARABIC MADDAH ABOVE
-0654;CM;ARABIC HAMZA ABOVE
-0655;CM;ARABIC HAMZA BELOW
-0660;NU;ARABIC-INDIC DIGIT ZERO
-0661;NU;ARABIC-INDIC DIGIT ONE
-0662;NU;ARABIC-INDIC DIGIT TWO
-0663;NU;ARABIC-INDIC DIGIT THREE
-0664;NU;ARABIC-INDIC DIGIT FOUR
-0665;NU;ARABIC-INDIC DIGIT FIVE
-0666;NU;ARABIC-INDIC DIGIT SIX
-0667;NU;ARABIC-INDIC DIGIT SEVEN
-0668;NU;ARABIC-INDIC DIGIT EIGHT
-0669;NU;ARABIC-INDIC DIGIT NINE
-066A;AL;ARABIC PERCENT SIGN
-066B;AL;ARABIC DECIMAL SEPARATOR
-066C;AL;ARABIC THOUSANDS SEPARATOR
-066D;AL;ARABIC FIVE POINTED STAR
-0670;CM;ARABIC LETTER SUPERSCRIPT ALEF
-0671;AL;ARABIC LETTER ALEF WASLA
-0672;AL;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
-0673;AL;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
-0674;AL;ARABIC LETTER HIGH HAMZA
-0675;AL;ARABIC LETTER HIGH HAMZA ALEF
-0676;AL;ARABIC LETTER HIGH HAMZA WAW
-0677;AL;ARABIC LETTER U WITH HAMZA ABOVE
-0678;AL;ARABIC LETTER HIGH HAMZA YEH
-0679;AL;ARABIC LETTER TTEH
-067A;AL;ARABIC LETTER TTEHEH
-067B;AL;ARABIC LETTER BEEH
-067C;AL;ARABIC LETTER TEH WITH RING
-067D;AL;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
-067E;AL;ARABIC LETTER PEH
-067F;AL;ARABIC LETTER TEHEH
-0680;AL;ARABIC LETTER BEHEH
-0681;AL;ARABIC LETTER HAH WITH HAMZA ABOVE
-0682;AL;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
-0683;AL;ARABIC LETTER NYEH
-0684;AL;ARABIC LETTER DYEH
-0685;AL;ARABIC LETTER HAH WITH THREE DOTS ABOVE
-0686;AL;ARABIC LETTER TCHEH
-0687;AL;ARABIC LETTER TCHEHEH
-0688;AL;ARABIC LETTER DDAL
-0689;AL;ARABIC LETTER DAL WITH RING
-068A;AL;ARABIC LETTER DAL WITH DOT BELOW
-068B;AL;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
-068C;AL;ARABIC LETTER DAHAL
-068D;AL;ARABIC LETTER DDAHAL
-068E;AL;ARABIC LETTER DUL
-068F;AL;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
-0690;AL;ARABIC LETTER DAL WITH FOUR DOTS ABOVE
-0691;AL;ARABIC LETTER RREH
-0692;AL;ARABIC LETTER REH WITH SMALL V
-0693;AL;ARABIC LETTER REH WITH RING
-0694;AL;ARABIC LETTER REH WITH DOT BELOW
-0695;AL;ARABIC LETTER REH WITH SMALL V BELOW
-0696;AL;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
-0697;AL;ARABIC LETTER REH WITH TWO DOTS ABOVE
-0698;AL;ARABIC LETTER JEH
-0699;AL;ARABIC LETTER REH WITH FOUR DOTS ABOVE
-069A;AL;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
-069B;AL;ARABIC LETTER SEEN WITH THREE DOTS BELOW
-069C;AL;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
-069D;AL;ARABIC LETTER SAD WITH TWO DOTS BELOW
-069E;AL;ARABIC LETTER SAD WITH THREE DOTS ABOVE
-069F;AL;ARABIC LETTER TAH WITH THREE DOTS ABOVE
-06A0;AL;ARABIC LETTER AIN WITH THREE DOTS ABOVE
-06A1;AL;ARABIC LETTER DOTLESS FEH
-06A2;AL;ARABIC LETTER FEH WITH DOT MOVED BELOW
-06A3;AL;ARABIC LETTER FEH WITH DOT BELOW
-06A4;AL;ARABIC LETTER VEH
-06A5;AL;ARABIC LETTER FEH WITH THREE DOTS BELOW
-06A6;AL;ARABIC LETTER PEHEH
-06A7;AL;ARABIC LETTER QAF WITH DOT ABOVE
-06A8;AL;ARABIC LETTER QAF WITH THREE DOTS ABOVE
-06A9;AL;ARABIC LETTER KEHEH
-06AA;AL;ARABIC LETTER SWASH KAF
-06AB;AL;ARABIC LETTER KAF WITH RING
-06AC;AL;ARABIC LETTER KAF WITH DOT ABOVE
-06AD;AL;ARABIC LETTER NG
-06AE;AL;ARABIC LETTER KAF WITH THREE DOTS BELOW
-06AF;AL;ARABIC LETTER GAF
-06B0;AL;ARABIC LETTER GAF WITH RING
-06B1;AL;ARABIC LETTER NGOEH
-06B2;AL;ARABIC LETTER GAF WITH TWO DOTS BELOW
-06B3;AL;ARABIC LETTER GUEH
-06B4;AL;ARABIC LETTER GAF WITH THREE DOTS ABOVE
-06B5;AL;ARABIC LETTER LAM WITH SMALL V
-06B6;AL;ARABIC LETTER LAM WITH DOT ABOVE
-06B7;AL;ARABIC LETTER LAM WITH THREE DOTS ABOVE
-06B8;AL;ARABIC LETTER LAM WITH THREE DOTS BELOW
-06B9;AL;ARABIC LETTER NOON WITH DOT BELOW
-06BA;AL;ARABIC LETTER NOON GHUNNA
-06BB;AL;ARABIC LETTER RNOON
-06BC;AL;ARABIC LETTER NOON WITH RING
-06BD;AL;ARABIC LETTER NOON WITH THREE DOTS ABOVE
-06BE;AL;ARABIC LETTER HEH DOACHASHMEE
-06BF;AL;ARABIC LETTER TCHEH WITH DOT ABOVE
-06C0;AL;ARABIC LETTER HEH WITH YEH ABOVE
-06C1;AL;ARABIC LETTER HEH GOAL
-06C2;AL;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
-06C3;AL;ARABIC LETTER TEH MARBUTA GOAL
-06C4;AL;ARABIC LETTER WAW WITH RING
-06C5;AL;ARABIC LETTER KIRGHIZ OE
-06C6;AL;ARABIC LETTER OE
-06C7;AL;ARABIC LETTER U
-06C8;AL;ARABIC LETTER YU
-06C9;AL;ARABIC LETTER KIRGHIZ YU
-06CA;AL;ARABIC LETTER WAW WITH TWO DOTS ABOVE
-06CB;AL;ARABIC LETTER VE
-06CC;AL;ARABIC LETTER FARSI YEH
-06CD;AL;ARABIC LETTER YEH WITH TAIL
-06CE;AL;ARABIC LETTER YEH WITH SMALL V
-06CF;AL;ARABIC LETTER WAW WITH DOT ABOVE
-06D0;AL;ARABIC LETTER E
-06D1;AL;ARABIC LETTER YEH WITH THREE DOTS BELOW
-06D2;AL;ARABIC LETTER YEH BARREE
-06D3;AL;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
-06D4;AL;ARABIC FULL STOP
-06D5;AL;ARABIC LETTER AE
-06D6;CM;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
-06D7;CM;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
-06D8;CM;ARABIC SMALL HIGH MEEM INITIAL FORM
-06D9;CM;ARABIC SMALL HIGH LAM ALEF
-06DA;CM;ARABIC SMALL HIGH JEEM
-06DB;CM;ARABIC SMALL HIGH THREE DOTS
-06DC;CM;ARABIC SMALL HIGH SEEN
-06DD;CM;ARABIC END OF AYAH
-06DE;CM;ARABIC START OF RUB EL HIZB
-06DF;CM;ARABIC SMALL HIGH ROUNDED ZERO
-06E0;CM;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
-06E1;CM;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
-06E2;CM;ARABIC SMALL HIGH MEEM ISOLATED FORM
-06E3;CM;ARABIC SMALL LOW SEEN
-06E4;CM;ARABIC SMALL HIGH MADDA
-06E5;AL;ARABIC SMALL WAW
-06E6;AL;ARABIC SMALL YEH
-06E7;CM;ARABIC SMALL HIGH YEH
-06E8;CM;ARABIC SMALL HIGH NOON
-06E9;AL;ARABIC PLACE OF SAJDAH
-06EA;CM;ARABIC EMPTY CENTRE LOW STOP
-06EB;CM;ARABIC EMPTY CENTRE HIGH STOP
-06EC;CM;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
-06ED;CM;ARABIC SMALL LOW MEEM
-06F0;NU;EXTENDED ARABIC-INDIC DIGIT ZERO
-06F1;NU;EXTENDED ARABIC-INDIC DIGIT ONE
-06F2;NU;EXTENDED ARABIC-INDIC DIGIT TWO
-06F3;NU;EXTENDED ARABIC-INDIC DIGIT THREE
-06F4;NU;EXTENDED ARABIC-INDIC DIGIT FOUR
-06F5;NU;EXTENDED ARABIC-INDIC DIGIT FIVE
-06F6;NU;EXTENDED ARABIC-INDIC DIGIT SIX
-06F7;NU;EXTENDED ARABIC-INDIC DIGIT SEVEN
-06F8;NU;EXTENDED ARABIC-INDIC DIGIT EIGHT
-06F9;NU;EXTENDED ARABIC-INDIC DIGIT NINE
-06FA;AL;ARABIC LETTER SHEEN WITH DOT BELOW
-06FB;AL;ARABIC LETTER DAD WITH DOT BELOW
-06FC;AL;ARABIC LETTER GHAIN WITH DOT BELOW
-06FD;AL;ARABIC SIGN SINDHI AMPERSAND
-06FE;AL;ARABIC SIGN SINDHI POSTPOSITION MEN
-0700;AL;SYRIAC END OF PARAGRAPH
-0701;AL;SYRIAC SUPRALINEAR FULL STOP
-0702;AL;SYRIAC SUBLINEAR FULL STOP
-0703;AL;SYRIAC SUPRALINEAR COLON
-0704;AL;SYRIAC SUBLINEAR COLON
-0705;AL;SYRIAC HORIZONTAL COLON
-0706;AL;SYRIAC COLON SKEWED LEFT
-0707;AL;SYRIAC COLON SKEWED RIGHT
-0708;AL;SYRIAC SUPRALINEAR COLON SKEWED LEFT
-0709;AL;SYRIAC SUBLINEAR COLON SKEWED RIGHT
-070A;AL;SYRIAC CONTRACTION
-070B;AL;SYRIAC HARKLEAN OBELUS
-070C;AL;SYRIAC HARKLEAN METOBELUS
-070D;AL;SYRIAC HARKLEAN ASTERISCUS
-070F;CM;SYRIAC ABBREVIATION MARK
-0710;AL;SYRIAC LETTER ALAPH
-0711;CM;SYRIAC LETTER SUPERSCRIPT ALAPH
-0712;AL;SYRIAC LETTER BETH
-0713;AL;SYRIAC LETTER GAMAL
-0714;AL;SYRIAC LETTER GAMAL GARSHUNI
-0715;AL;SYRIAC LETTER DALATH
-0716;AL;SYRIAC LETTER DOTLESS DALATH RISH
-0717;AL;SYRIAC LETTER HE
-0718;AL;SYRIAC LETTER WAW
-0719;AL;SYRIAC LETTER ZAIN
-071A;AL;SYRIAC LETTER HETH
-071B;AL;SYRIAC LETTER TETH
-071C;AL;SYRIAC LETTER TETH GARSHUNI
-071D;AL;SYRIAC LETTER YUDH
-071E;AL;SYRIAC LETTER YUDH HE
-071F;AL;SYRIAC LETTER KAPH
-0720;AL;SYRIAC LETTER LAMADH
-0721;AL;SYRIAC LETTER MIM
-0722;AL;SYRIAC LETTER NUN
-0723;AL;SYRIAC LETTER SEMKATH
-0724;AL;SYRIAC LETTER FINAL SEMKATH
-0725;AL;SYRIAC LETTER E
-0726;AL;SYRIAC LETTER PE
-0727;AL;SYRIAC LETTER REVERSED PE
-0728;AL;SYRIAC LETTER SADHE
-0729;AL;SYRIAC LETTER QAPH
-072A;AL;SYRIAC LETTER RISH
-072B;AL;SYRIAC LETTER SHIN
-072C;AL;SYRIAC LETTER TAW
-0730;CM;SYRIAC PTHAHA ABOVE
-0731;CM;SYRIAC PTHAHA BELOW
-0732;CM;SYRIAC PTHAHA DOTTED
-0733;CM;SYRIAC ZQAPHA ABOVE
-0734;CM;SYRIAC ZQAPHA BELOW
-0735;CM;SYRIAC ZQAPHA DOTTED
-0736;CM;SYRIAC RBASA ABOVE
-0737;CM;SYRIAC RBASA BELOW
-0738;CM;SYRIAC DOTTED ZLAMA HORIZONTAL
-0739;CM;SYRIAC DOTTED ZLAMA ANGULAR
-073A;CM;SYRIAC HBASA ABOVE
-073B;CM;SYRIAC HBASA BELOW
-073C;CM;SYRIAC HBASA-ESASA DOTTED
-073D;CM;SYRIAC ESASA ABOVE
-073E;CM;SYRIAC ESASA BELOW
-073F;CM;SYRIAC RWAHA
-0740;CM;SYRIAC FEMININE DOT
-0741;CM;SYRIAC QUSHSHAYA
-0742;CM;SYRIAC RUKKAKHA
-0743;CM;SYRIAC TWO VERTICAL DOTS ABOVE
-0744;CM;SYRIAC TWO VERTICAL DOTS BELOW
-0745;CM;SYRIAC THREE DOTS ABOVE
-0746;CM;SYRIAC THREE DOTS BELOW
-0747;CM;SYRIAC OBLIQUE LINE ABOVE
-0748;CM;SYRIAC OBLIQUE LINE BELOW
-0749;CM;SYRIAC MUSIC
-074A;CM;SYRIAC BARREKH
-0780;AL;THAANA LETTER HAA
-0781;AL;THAANA LETTER SHAVIYANI
-0782;AL;THAANA LETTER NOONU
-0783;AL;THAANA LETTER RAA
-0784;AL;THAANA LETTER BAA
-0785;AL;THAANA LETTER LHAVIYANI
-0786;AL;THAANA LETTER KAAFU
-0787;AL;THAANA LETTER ALIFU
-0788;AL;THAANA LETTER VAAVU
-0789;AL;THAANA LETTER MEEMU
-078A;AL;THAANA LETTER FAAFU
-078B;AL;THAANA LETTER DHAALU
-078C;AL;THAANA LETTER THAA
-078D;AL;THAANA LETTER LAAMU
-078E;AL;THAANA LETTER GAAFU
-078F;AL;THAANA LETTER GNAVIYANI
-0790;AL;THAANA LETTER SEENU
-0791;AL;THAANA LETTER DAVIYANI
-0792;AL;THAANA LETTER ZAVIYANI
-0793;AL;THAANA LETTER TAVIYANI
-0794;AL;THAANA LETTER YAA
-0795;AL;THAANA LETTER PAVIYANI
-0796;AL;THAANA LETTER JAVIYANI
-0797;AL;THAANA LETTER CHAVIYANI
-0798;AL;THAANA LETTER TTAA
-0799;AL;THAANA LETTER HHAA
-079A;AL;THAANA LETTER KHAA
-079B;AL;THAANA LETTER THAALU
-079C;AL;THAANA LETTER ZAA
-079D;AL;THAANA LETTER SHEENU
-079E;AL;THAANA LETTER SAADHU
-079F;AL;THAANA LETTER DAADHU
-07A0;AL;THAANA LETTER TO
-07A1;AL;THAANA LETTER ZO
-07A2;AL;THAANA LETTER AINU
-07A3;AL;THAANA LETTER GHAINU
-07A4;AL;THAANA LETTER QAAFU
-07A5;AL;THAANA LETTER WAAVU
-07A6;CM;THAANA ABAFILI
-07A7;CM;THAANA AABAAFILI
-07A8;CM;THAANA IBIFILI
-07A9;CM;THAANA EEBEEFILI
-07AA;CM;THAANA UBUFILI
-07AB;CM;THAANA OOBOOFILI
-07AC;CM;THAANA EBEFILI
-07AD;CM;THAANA EYBEYFILI
-07AE;CM;THAANA OBOFILI
-07AF;CM;THAANA OABOAFILI
-07B0;CM;THAANA SUKUN
-0901;CM;DEVANAGARI SIGN CANDRABINDU
-0902;CM;DEVANAGARI SIGN ANUSVARA
-0903;CM;DEVANAGARI SIGN VISARGA
-0905;AL;DEVANAGARI LETTER A
-0906;AL;DEVANAGARI LETTER AA
-0907;AL;DEVANAGARI LETTER I
-0908;AL;DEVANAGARI LETTER II
-0909;AL;DEVANAGARI LETTER U
-090A;AL;DEVANAGARI LETTER UU
-090B;AL;DEVANAGARI LETTER VOCALIC R
-090C;AL;DEVANAGARI LETTER VOCALIC L
-090D;AL;DEVANAGARI LETTER CANDRA E
-090E;AL;DEVANAGARI LETTER SHORT E
-090F;AL;DEVANAGARI LETTER E
-0910;AL;DEVANAGARI LETTER AI
-0911;AL;DEVANAGARI LETTER CANDRA O
-0912;AL;DEVANAGARI LETTER SHORT O
-0913;AL;DEVANAGARI LETTER O
-0914;AL;DEVANAGARI LETTER AU
-0915;AL;DEVANAGARI LETTER KA
-0916;AL;DEVANAGARI LETTER KHA
-0917;AL;DEVANAGARI LETTER GA
-0918;AL;DEVANAGARI LETTER GHA
-0919;AL;DEVANAGARI LETTER NGA
-091A;AL;DEVANAGARI LETTER CA
-091B;AL;DEVANAGARI LETTER CHA
-091C;AL;DEVANAGARI LETTER JA
-091D;AL;DEVANAGARI LETTER JHA
-091E;AL;DEVANAGARI LETTER NYA
-091F;AL;DEVANAGARI LETTER TTA
-0920;AL;DEVANAGARI LETTER TTHA
-0921;AL;DEVANAGARI LETTER DDA
-0922;AL;DEVANAGARI LETTER DDHA
-0923;AL;DEVANAGARI LETTER NNA
-0924;AL;DEVANAGARI LETTER TA
-0925;AL;DEVANAGARI LETTER THA
-0926;AL;DEVANAGARI LETTER DA
-0927;AL;DEVANAGARI LETTER DHA
-0928;AL;DEVANAGARI LETTER NA
-0929;AL;DEVANAGARI LETTER NNNA
-092A;AL;DEVANAGARI LETTER PA
-092B;AL;DEVANAGARI LETTER PHA
-092C;AL;DEVANAGARI LETTER BA
-092D;AL;DEVANAGARI LETTER BHA
-092E;AL;DEVANAGARI LETTER MA
-092F;AL;DEVANAGARI LETTER YA
-0930;AL;DEVANAGARI LETTER RA
-0931;AL;DEVANAGARI LETTER RRA
-0932;AL;DEVANAGARI LETTER LA
-0933;AL;DEVANAGARI LETTER LLA
-0934;AL;DEVANAGARI LETTER LLLA
-0935;AL;DEVANAGARI LETTER VA
-0936;AL;DEVANAGARI LETTER SHA
-0937;AL;DEVANAGARI LETTER SSA
-0938;AL;DEVANAGARI LETTER SA
-0939;AL;DEVANAGARI LETTER HA
-093C;CM;DEVANAGARI SIGN NUKTA
-093D;AL;DEVANAGARI SIGN AVAGRAHA
-093E;CM;DEVANAGARI VOWEL SIGN AA
-093F;CM;DEVANAGARI VOWEL SIGN I
-0940;CM;DEVANAGARI VOWEL SIGN II
-0941;CM;DEVANAGARI VOWEL SIGN U
-0942;CM;DEVANAGARI VOWEL SIGN UU
-0943;CM;DEVANAGARI VOWEL SIGN VOCALIC R
-0944;CM;DEVANAGARI VOWEL SIGN VOCALIC RR
-0945;CM;DEVANAGARI VOWEL SIGN CANDRA E
-0946;CM;DEVANAGARI VOWEL SIGN SHORT E
-0947;CM;DEVANAGARI VOWEL SIGN E
-0948;CM;DEVANAGARI VOWEL SIGN AI
-0949;CM;DEVANAGARI VOWEL SIGN CANDRA O
-094A;CM;DEVANAGARI VOWEL SIGN SHORT O
-094B;CM;DEVANAGARI VOWEL SIGN O
-094C;CM;DEVANAGARI VOWEL SIGN AU
-094D;CM;DEVANAGARI SIGN VIRAMA
-0950;AL;DEVANAGARI OM
-0951;CM;DEVANAGARI STRESS SIGN UDATTA
-0952;CM;DEVANAGARI STRESS SIGN ANUDATTA
-0953;CM;DEVANAGARI GRAVE ACCENT
-0954;CM;DEVANAGARI ACUTE ACCENT
-0958;AL;DEVANAGARI LETTER QA
-0959;AL;DEVANAGARI LETTER KHHA
-095A;AL;DEVANAGARI LETTER GHHA
-095B;AL;DEVANAGARI LETTER ZA
-095C;AL;DEVANAGARI LETTER DDDHA
-095D;AL;DEVANAGARI LETTER RHA
-095E;AL;DEVANAGARI LETTER FA
-095F;AL;DEVANAGARI LETTER YYA
-0960;AL;DEVANAGARI LETTER VOCALIC RR
-0961;AL;DEVANAGARI LETTER VOCALIC LL
-0962;CM;DEVANAGARI VOWEL SIGN VOCALIC L
-0963;CM;DEVANAGARI VOWEL SIGN VOCALIC LL
-0964;AL;DEVANAGARI DANDA
-0965;AL;DEVANAGARI DOUBLE DANDA
-0966;NU;DEVANAGARI DIGIT ZERO
-0967;NU;DEVANAGARI DIGIT ONE
-0968;NU;DEVANAGARI DIGIT TWO
-0969;NU;DEVANAGARI DIGIT THREE
-096A;NU;DEVANAGARI DIGIT FOUR
-096B;NU;DEVANAGARI DIGIT FIVE
-096C;NU;DEVANAGARI DIGIT SIX
-096D;NU;DEVANAGARI DIGIT SEVEN
-096E;NU;DEVANAGARI DIGIT EIGHT
-096F;NU;DEVANAGARI DIGIT NINE
-0970;AL;DEVANAGARI ABBREVIATION SIGN
-0981;CM;BENGALI SIGN CANDRABINDU
-0982;CM;BENGALI SIGN ANUSVARA
-0983;CM;BENGALI SIGN VISARGA
-0985;AL;BENGALI LETTER A
-0986;AL;BENGALI LETTER AA
-0987;AL;BENGALI LETTER I
-0988;AL;BENGALI LETTER II
-0989;AL;BENGALI LETTER U
-098A;AL;BENGALI LETTER UU
-098B;AL;BENGALI LETTER VOCALIC R
-098C;AL;BENGALI LETTER VOCALIC L
-098F;AL;BENGALI LETTER E
-0990;AL;BENGALI LETTER AI
-0993;AL;BENGALI LETTER O
-0994;AL;BENGALI LETTER AU
-0995;AL;BENGALI LETTER KA
-0996;AL;BENGALI LETTER KHA
-0997;AL;BENGALI LETTER GA
-0998;AL;BENGALI LETTER GHA
-0999;AL;BENGALI LETTER NGA
-099A;AL;BENGALI LETTER CA
-099B;AL;BENGALI LETTER CHA
-099C;AL;BENGALI LETTER JA
-099D;AL;BENGALI LETTER JHA
-099E;AL;BENGALI LETTER NYA
-099F;AL;BENGALI LETTER TTA
-09A0;AL;BENGALI LETTER TTHA
-09A1;AL;BENGALI LETTER DDA
-09A2;AL;BENGALI LETTER DDHA
-09A3;AL;BENGALI LETTER NNA
-09A4;AL;BENGALI LETTER TA
-09A5;AL;BENGALI LETTER THA
-09A6;AL;BENGALI LETTER DA
-09A7;AL;BENGALI LETTER DHA
-09A8;AL;BENGALI LETTER NA
-09AA;AL;BENGALI LETTER PA
-09AB;AL;BENGALI LETTER PHA
-09AC;AL;BENGALI LETTER BA
-09AD;AL;BENGALI LETTER BHA
-09AE;AL;BENGALI LETTER MA
-09AF;AL;BENGALI LETTER YA
-09B0;AL;BENGALI LETTER RA
-09B2;AL;BENGALI LETTER LA
-09B6;AL;BENGALI LETTER SHA
-09B7;AL;BENGALI LETTER SSA
-09B8;AL;BENGALI LETTER SA
-09B9;AL;BENGALI LETTER HA
-09BC;CM;BENGALI SIGN NUKTA
-09BE;CM;BENGALI VOWEL SIGN AA
-09BF;CM;BENGALI VOWEL SIGN I
-09C0;CM;BENGALI VOWEL SIGN II
-09C1;CM;BENGALI VOWEL SIGN U
-09C2;CM;BENGALI VOWEL SIGN UU
-09C3;CM;BENGALI VOWEL SIGN VOCALIC R
-09C4;CM;BENGALI VOWEL SIGN VOCALIC RR
-09C7;CM;BENGALI VOWEL SIGN E
-09C8;CM;BENGALI VOWEL SIGN AI
-09CB;CM;BENGALI VOWEL SIGN O
-09CC;CM;BENGALI VOWEL SIGN AU
-09CD;CM;BENGALI SIGN VIRAMA
-09D7;CM;BENGALI AU LENGTH MARK
-09DC;AL;BENGALI LETTER RRA
-09DD;AL;BENGALI LETTER RHA
-09DF;AL;BENGALI LETTER YYA
-09E0;AL;BENGALI LETTER VOCALIC RR
-09E1;AL;BENGALI LETTER VOCALIC LL
-09E2;CM;BENGALI VOWEL SIGN VOCALIC L
-09E3;CM;BENGALI VOWEL SIGN VOCALIC LL
-09E6;NU;BENGALI DIGIT ZERO
-09E7;NU;BENGALI DIGIT ONE
-09E8;NU;BENGALI DIGIT TWO
-09E9;NU;BENGALI DIGIT THREE
-09EA;NU;BENGALI DIGIT FOUR
-09EB;NU;BENGALI DIGIT FIVE
-09EC;NU;BENGALI DIGIT SIX
-09ED;NU;BENGALI DIGIT SEVEN
-09EE;NU;BENGALI DIGIT EIGHT
-09EF;NU;BENGALI DIGIT NINE
-09F0;AL;BENGALI LETTER RA WITH MIDDLE DIAGONAL
-09F1;AL;BENGALI LETTER RA WITH LOWER DIAGONAL
-09F2;PR;BENGALI RUPEE MARK
-09F3;PR;BENGALI RUPEE SIGN
-09F4;AL;BENGALI CURRENCY NUMERATOR ONE
-09F5;AL;BENGALI CURRENCY NUMERATOR TWO
-09F6;AL;BENGALI CURRENCY NUMERATOR THREE
-09F7;AL;BENGALI CURRENCY NUMERATOR FOUR
-09F8;AL;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
-09F9;AL;BENGALI CURRENCY DENOMINATOR SIXTEEN
-09FA;AL;BENGALI ISSHAR
-0A02;CM;GURMUKHI SIGN BINDI
-0A05;AL;GURMUKHI LETTER A
-0A06;AL;GURMUKHI LETTER AA
-0A07;AL;GURMUKHI LETTER I
-0A08;AL;GURMUKHI LETTER II
-0A09;AL;GURMUKHI LETTER U
-0A0A;AL;GURMUKHI LETTER UU
-0A0F;AL;GURMUKHI LETTER EE
-0A10;AL;GURMUKHI LETTER AI
-0A13;AL;GURMUKHI LETTER OO
-0A14;AL;GURMUKHI LETTER AU
-0A15;AL;GURMUKHI LETTER KA
-0A16;AL;GURMUKHI LETTER KHA
-0A17;AL;GURMUKHI LETTER GA
-0A18;AL;GURMUKHI LETTER GHA
-0A19;AL;GURMUKHI LETTER NGA
-0A1A;AL;GURMUKHI LETTER CA
-0A1B;AL;GURMUKHI LETTER CHA
-0A1C;AL;GURMUKHI LETTER JA
-0A1D;AL;GURMUKHI LETTER JHA
-0A1E;AL;GURMUKHI LETTER NYA
-0A1F;AL;GURMUKHI LETTER TTA
-0A20;AL;GURMUKHI LETTER TTHA
-0A21;AL;GURMUKHI LETTER DDA
-0A22;AL;GURMUKHI LETTER DDHA
-0A23;AL;GURMUKHI LETTER NNA
-0A24;AL;GURMUKHI LETTER TA
-0A25;AL;GURMUKHI LETTER THA
-0A26;AL;GURMUKHI LETTER DA
-0A27;AL;GURMUKHI LETTER DHA
-0A28;AL;GURMUKHI LETTER NA
-0A2A;AL;GURMUKHI LETTER PA
-0A2B;AL;GURMUKHI LETTER PHA
-0A2C;AL;GURMUKHI LETTER BA
-0A2D;AL;GURMUKHI LETTER BHA
-0A2E;AL;GURMUKHI LETTER MA
-0A2F;AL;GURMUKHI LETTER YA
-0A30;AL;GURMUKHI LETTER RA
-0A32;AL;GURMUKHI LETTER LA
-0A33;AL;GURMUKHI LETTER LLA
-0A35;AL;GURMUKHI LETTER VA
-0A36;AL;GURMUKHI LETTER SHA
-0A38;AL;GURMUKHI LETTER SA
-0A39;AL;GURMUKHI LETTER HA
-0A3C;CM;GURMUKHI SIGN NUKTA
-0A3E;CM;GURMUKHI VOWEL SIGN AA
-0A3F;CM;GURMUKHI VOWEL SIGN I
-0A40;CM;GURMUKHI VOWEL SIGN II
-0A41;CM;GURMUKHI VOWEL SIGN U
-0A42;CM;GURMUKHI VOWEL SIGN UU
-0A47;CM;GURMUKHI VOWEL SIGN EE
-0A48;CM;GURMUKHI VOWEL SIGN AI
-0A4B;CM;GURMUKHI VOWEL SIGN OO
-0A4C;CM;GURMUKHI VOWEL SIGN AU
-0A4D;CM;GURMUKHI SIGN VIRAMA
-0A59;AL;GURMUKHI LETTER KHHA
-0A5A;AL;GURMUKHI LETTER GHHA
-0A5B;AL;GURMUKHI LETTER ZA
-0A5C;AL;GURMUKHI LETTER RRA
-0A5E;AL;GURMUKHI LETTER FA
-0A66;NU;GURMUKHI DIGIT ZERO
-0A67;NU;GURMUKHI DIGIT ONE
-0A68;NU;GURMUKHI DIGIT TWO
-0A69;NU;GURMUKHI DIGIT THREE
-0A6A;NU;GURMUKHI DIGIT FOUR
-0A6B;NU;GURMUKHI DIGIT FIVE
-0A6C;NU;GURMUKHI DIGIT SIX
-0A6D;NU;GURMUKHI DIGIT SEVEN
-0A6E;NU;GURMUKHI DIGIT EIGHT
-0A6F;NU;GURMUKHI DIGIT NINE
-0A70;CM;GURMUKHI TIPPI
-0A71;CM;GURMUKHI ADDAK
-0A72;AL;GURMUKHI IRI
-0A73;AL;GURMUKHI URA
-0A74;AL;GURMUKHI EK ONKAR
-0A81;CM;GUJARATI SIGN CANDRABINDU
-0A82;CM;GUJARATI SIGN ANUSVARA
-0A83;CM;GUJARATI SIGN VISARGA
-0A85;AL;GUJARATI LETTER A
-0A86;AL;GUJARATI LETTER AA
-0A87;AL;GUJARATI LETTER I
-0A88;AL;GUJARATI LETTER II
-0A89;AL;GUJARATI LETTER U
-0A8A;AL;GUJARATI LETTER UU
-0A8B;AL;GUJARATI LETTER VOCALIC R
-0A8D;AL;GUJARATI VOWEL CANDRA E
-0A8F;AL;GUJARATI LETTER E
-0A90;AL;GUJARATI LETTER AI
-0A91;AL;GUJARATI VOWEL CANDRA O
-0A93;AL;GUJARATI LETTER O
-0A94;AL;GUJARATI LETTER AU
-0A95;AL;GUJARATI LETTER KA
-0A96;AL;GUJARATI LETTER KHA
-0A97;AL;GUJARATI LETTER GA
-0A98;AL;GUJARATI LETTER GHA
-0A99;AL;GUJARATI LETTER NGA
-0A9A;AL;GUJARATI LETTER CA
-0A9B;AL;GUJARATI LETTER CHA
-0A9C;AL;GUJARATI LETTER JA
-0A9D;AL;GUJARATI LETTER JHA
-0A9E;AL;GUJARATI LETTER NYA
-0A9F;AL;GUJARATI LETTER TTA
-0AA0;AL;GUJARATI LETTER TTHA
-0AA1;AL;GUJARATI LETTER DDA
-0AA2;AL;GUJARATI LETTER DDHA
-0AA3;AL;GUJARATI LETTER NNA
-0AA4;AL;GUJARATI LETTER TA
-0AA5;AL;GUJARATI LETTER THA
-0AA6;AL;GUJARATI LETTER DA
-0AA7;AL;GUJARATI LETTER DHA
-0AA8;AL;GUJARATI LETTER NA
-0AAA;AL;GUJARATI LETTER PA
-0AAB;AL;GUJARATI LETTER PHA
-0AAC;AL;GUJARATI LETTER BA
-0AAD;AL;GUJARATI LETTER BHA
-0AAE;AL;GUJARATI LETTER MA
-0AAF;AL;GUJARATI LETTER YA
-0AB0;AL;GUJARATI LETTER RA
-0AB2;AL;GUJARATI LETTER LA
-0AB3;AL;GUJARATI LETTER LLA
-0AB5;AL;GUJARATI LETTER VA
-0AB6;AL;GUJARATI LETTER SHA
-0AB7;AL;GUJARATI LETTER SSA
-0AB8;AL;GUJARATI LETTER SA
-0AB9;AL;GUJARATI LETTER HA
-0ABC;CM;GUJARATI SIGN NUKTA
-0ABD;AL;GUJARATI SIGN AVAGRAHA
-0ABE;CM;GUJARATI VOWEL SIGN AA
-0ABF;CM;GUJARATI VOWEL SIGN I
-0AC0;CM;GUJARATI VOWEL SIGN II
-0AC1;CM;GUJARATI VOWEL SIGN U
-0AC2;CM;GUJARATI VOWEL SIGN UU
-0AC3;CM;GUJARATI VOWEL SIGN VOCALIC R
-0AC4;CM;GUJARATI VOWEL SIGN VOCALIC RR
-0AC5;CM;GUJARATI VOWEL SIGN CANDRA E
-0AC7;CM;GUJARATI VOWEL SIGN E
-0AC8;CM;GUJARATI VOWEL SIGN AI
-0AC9;CM;GUJARATI VOWEL SIGN CANDRA O
-0ACB;CM;GUJARATI VOWEL SIGN O
-0ACC;CM;GUJARATI VOWEL SIGN AU
-0ACD;CM;GUJARATI SIGN VIRAMA
-0AD0;AL;GUJARATI OM
-0AE0;AL;GUJARATI LETTER VOCALIC RR
-0AE6;NU;GUJARATI DIGIT ZERO
-0AE7;NU;GUJARATI DIGIT ONE
-0AE8;NU;GUJARATI DIGIT TWO
-0AE9;NU;GUJARATI DIGIT THREE
-0AEA;NU;GUJARATI DIGIT FOUR
-0AEB;NU;GUJARATI DIGIT FIVE
-0AEC;NU;GUJARATI DIGIT SIX
-0AED;NU;GUJARATI DIGIT SEVEN
-0AEE;NU;GUJARATI DIGIT EIGHT
-0AEF;NU;GUJARATI DIGIT NINE
-0B01;CM;ORIYA SIGN CANDRABINDU
-0B02;CM;ORIYA SIGN ANUSVARA
-0B03;CM;ORIYA SIGN VISARGA
-0B05;AL;ORIYA LETTER A
-0B06;AL;ORIYA LETTER AA
-0B07;AL;ORIYA LETTER I
-0B08;AL;ORIYA LETTER II
-0B09;AL;ORIYA LETTER U
-0B0A;AL;ORIYA LETTER UU
-0B0B;AL;ORIYA LETTER VOCALIC R
-0B0C;AL;ORIYA LETTER VOCALIC L
-0B0F;AL;ORIYA LETTER E
-0B10;AL;ORIYA LETTER AI
-0B13;AL;ORIYA LETTER O
-0B14;AL;ORIYA LETTER AU
-0B15;AL;ORIYA LETTER KA
-0B16;AL;ORIYA LETTER KHA
-0B17;AL;ORIYA LETTER GA
-0B18;AL;ORIYA LETTER GHA
-0B19;AL;ORIYA LETTER NGA
-0B1A;AL;ORIYA LETTER CA
-0B1B;AL;ORIYA LETTER CHA
-0B1C;AL;ORIYA LETTER JA
-0B1D;AL;ORIYA LETTER JHA
-0B1E;AL;ORIYA LETTER NYA
-0B1F;AL;ORIYA LETTER TTA
-0B20;AL;ORIYA LETTER TTHA
-0B21;AL;ORIYA LETTER DDA
-0B22;AL;ORIYA LETTER DDHA
-0B23;AL;ORIYA LETTER NNA
-0B24;AL;ORIYA LETTER TA
-0B25;AL;ORIYA LETTER THA
-0B26;AL;ORIYA LETTER DA
-0B27;AL;ORIYA LETTER DHA
-0B28;AL;ORIYA LETTER NA
-0B2A;AL;ORIYA LETTER PA
-0B2B;AL;ORIYA LETTER PHA
-0B2C;AL;ORIYA LETTER BA
-0B2D;AL;ORIYA LETTER BHA
-0B2E;AL;ORIYA LETTER MA
-0B2F;AL;ORIYA LETTER YA
-0B30;AL;ORIYA LETTER RA
-0B32;AL;ORIYA LETTER LA
-0B33;AL;ORIYA LETTER LLA
-0B36;AL;ORIYA LETTER SHA
-0B37;AL;ORIYA LETTER SSA
-0B38;AL;ORIYA LETTER SA
-0B39;AL;ORIYA LETTER HA
-0B3C;CM;ORIYA SIGN NUKTA
-0B3D;AL;ORIYA SIGN AVAGRAHA
-0B3E;CM;ORIYA VOWEL SIGN AA
-0B3F;CM;ORIYA VOWEL SIGN I
-0B40;CM;ORIYA VOWEL SIGN II
-0B41;CM;ORIYA VOWEL SIGN U
-0B42;CM;ORIYA VOWEL SIGN UU
-0B43;CM;ORIYA VOWEL SIGN VOCALIC R
-0B47;CM;ORIYA VOWEL SIGN E
-0B48;CM;ORIYA VOWEL SIGN AI
-0B4B;CM;ORIYA VOWEL SIGN O
-0B4C;CM;ORIYA VOWEL SIGN AU
-0B4D;CM;ORIYA SIGN VIRAMA
-0B56;CM;ORIYA AI LENGTH MARK
-0B57;CM;ORIYA AU LENGTH MARK
-0B5C;AL;ORIYA LETTER RRA
-0B5D;AL;ORIYA LETTER RHA
-0B5F;AL;ORIYA LETTER YYA
-0B60;AL;ORIYA LETTER VOCALIC RR
-0B61;AL;ORIYA LETTER VOCALIC LL
-0B66;NU;ORIYA DIGIT ZERO
-0B67;NU;ORIYA DIGIT ONE
-0B68;NU;ORIYA DIGIT TWO
-0B69;NU;ORIYA DIGIT THREE
-0B6A;NU;ORIYA DIGIT FOUR
-0B6B;NU;ORIYA DIGIT FIVE
-0B6C;NU;ORIYA DIGIT SIX
-0B6D;NU;ORIYA DIGIT SEVEN
-0B6E;NU;ORIYA DIGIT EIGHT
-0B6F;NU;ORIYA DIGIT NINE
-0B70;AL;ORIYA ISSHAR
-0B82;CM;TAMIL SIGN ANUSVARA
-0B83;CM;TAMIL SIGN VISARGA
-0B85;AL;TAMIL LETTER A
-0B86;AL;TAMIL LETTER AA
-0B87;AL;TAMIL LETTER I
-0B88;AL;TAMIL LETTER II
-0B89;AL;TAMIL LETTER U
-0B8A;AL;TAMIL LETTER UU
-0B8E;AL;TAMIL LETTER E
-0B8F;AL;TAMIL LETTER EE
-0B90;AL;TAMIL LETTER AI
-0B92;AL;TAMIL LETTER O
-0B93;AL;TAMIL LETTER OO
-0B94;AL;TAMIL LETTER AU
-0B95;AL;TAMIL LETTER KA
-0B99;AL;TAMIL LETTER NGA
-0B9A;AL;TAMIL LETTER CA
-0B9C;AL;TAMIL LETTER JA
-0B9E;AL;TAMIL LETTER NYA
-0B9F;AL;TAMIL LETTER TTA
-0BA3;AL;TAMIL LETTER NNA
-0BA4;AL;TAMIL LETTER TA
-0BA8;AL;TAMIL LETTER NA
-0BA9;AL;TAMIL LETTER NNNA
-0BAA;AL;TAMIL LETTER PA
-0BAE;AL;TAMIL LETTER MA
-0BAF;AL;TAMIL LETTER YA
-0BB0;AL;TAMIL LETTER RA
-0BB1;AL;TAMIL LETTER RRA
-0BB2;AL;TAMIL LETTER LA
-0BB3;AL;TAMIL LETTER LLA
-0BB4;AL;TAMIL LETTER LLLA
-0BB5;AL;TAMIL LETTER VA
-0BB7;AL;TAMIL LETTER SSA
-0BB8;AL;TAMIL LETTER SA
-0BB9;AL;TAMIL LETTER HA
-0BBE;CM;TAMIL VOWEL SIGN AA
-0BBF;CM;TAMIL VOWEL SIGN I
-0BC0;CM;TAMIL VOWEL SIGN II
-0BC1;CM;TAMIL VOWEL SIGN U
-0BC2;CM;TAMIL VOWEL SIGN UU
-0BC6;CM;TAMIL VOWEL SIGN E
-0BC7;CM;TAMIL VOWEL SIGN EE
-0BC8;CM;TAMIL VOWEL SIGN AI
-0BCA;CM;TAMIL VOWEL SIGN O
-0BCB;CM;TAMIL VOWEL SIGN OO
-0BCC;CM;TAMIL VOWEL SIGN AU
-0BCD;CM;TAMIL SIGN VIRAMA
-0BD7;CM;TAMIL AU LENGTH MARK
-0BE7;NU;TAMIL DIGIT ONE
-0BE8;NU;TAMIL DIGIT TWO
-0BE9;NU;TAMIL DIGIT THREE
-0BEA;NU;TAMIL DIGIT FOUR
-0BEB;NU;TAMIL DIGIT FIVE
-0BEC;NU;TAMIL DIGIT SIX
-0BED;NU;TAMIL DIGIT SEVEN
-0BEE;NU;TAMIL DIGIT EIGHT
-0BEF;NU;TAMIL DIGIT NINE
-0BF0;AL;TAMIL NUMBER TEN
-0BF1;AL;TAMIL NUMBER ONE HUNDRED
-0BF2;AL;TAMIL NUMBER ONE THOUSAND
-0C01;CM;TELUGU SIGN CANDRABINDU
-0C02;CM;TELUGU SIGN ANUSVARA
-0C03;CM;TELUGU SIGN VISARGA
-0C05;AL;TELUGU LETTER A
-0C06;AL;TELUGU LETTER AA
-0C07;AL;TELUGU LETTER I
-0C08;AL;TELUGU LETTER II
-0C09;AL;TELUGU LETTER U
-0C0A;AL;TELUGU LETTER UU
-0C0B;AL;TELUGU LETTER VOCALIC R
-0C0C;AL;TELUGU LETTER VOCALIC L
-0C0E;AL;TELUGU LETTER E
-0C0F;AL;TELUGU LETTER EE
-0C10;AL;TELUGU LETTER AI
-0C12;AL;TELUGU LETTER O
-0C13;AL;TELUGU LETTER OO
-0C14;AL;TELUGU LETTER AU
-0C15;AL;TELUGU LETTER KA
-0C16;AL;TELUGU LETTER KHA
-0C17;AL;TELUGU LETTER GA
-0C18;AL;TELUGU LETTER GHA
-0C19;AL;TELUGU LETTER NGA
-0C1A;AL;TELUGU LETTER CA
-0C1B;AL;TELUGU LETTER CHA
-0C1C;AL;TELUGU LETTER JA
-0C1D;AL;TELUGU LETTER JHA
-0C1E;AL;TELUGU LETTER NYA
-0C1F;AL;TELUGU LETTER TTA
-0C20;AL;TELUGU LETTER TTHA
-0C21;AL;TELUGU LETTER DDA
-0C22;AL;TELUGU LETTER DDHA
-0C23;AL;TELUGU LETTER NNA
-0C24;AL;TELUGU LETTER TA
-0C25;AL;TELUGU LETTER THA
-0C26;AL;TELUGU LETTER DA
-0C27;AL;TELUGU LETTER DHA
-0C28;AL;TELUGU LETTER NA
-0C2A;AL;TELUGU LETTER PA
-0C2B;AL;TELUGU LETTER PHA
-0C2C;AL;TELUGU LETTER BA
-0C2D;AL;TELUGU LETTER BHA
-0C2E;AL;TELUGU LETTER MA
-0C2F;AL;TELUGU LETTER YA
-0C30;AL;TELUGU LETTER RA
-0C31;AL;TELUGU LETTER RRA
-0C32;AL;TELUGU LETTER LA
-0C33;AL;TELUGU LETTER LLA
-0C35;AL;TELUGU LETTER VA
-0C36;AL;TELUGU LETTER SHA
-0C37;AL;TELUGU LETTER SSA
-0C38;AL;TELUGU LETTER SA
-0C39;AL;TELUGU LETTER HA
-0C3E;CM;TELUGU VOWEL SIGN AA
-0C3F;CM;TELUGU VOWEL SIGN I
-0C40;CM;TELUGU VOWEL SIGN II
-0C41;CM;TELUGU VOWEL SIGN U
-0C42;CM;TELUGU VOWEL SIGN UU
-0C43;CM;TELUGU VOWEL SIGN VOCALIC R
-0C44;CM;TELUGU VOWEL SIGN VOCALIC RR
-0C46;CM;TELUGU VOWEL SIGN E
-0C47;CM;TELUGU VOWEL SIGN EE
-0C48;CM;TELUGU VOWEL SIGN AI
-0C4A;CM;TELUGU VOWEL SIGN O
-0C4B;CM;TELUGU VOWEL SIGN OO
-0C4C;CM;TELUGU VOWEL SIGN AU
-0C4D;CM;TELUGU SIGN VIRAMA
-0C55;CM;TELUGU LENGTH MARK
-0C56;CM;TELUGU AI LENGTH MARK
-0C60;AL;TELUGU LETTER VOCALIC RR
-0C61;AL;TELUGU LETTER VOCALIC LL
-0C66;NU;TELUGU DIGIT ZERO
-0C67;NU;TELUGU DIGIT ONE
-0C68;NU;TELUGU DIGIT TWO
-0C69;NU;TELUGU DIGIT THREE
-0C6A;NU;TELUGU DIGIT FOUR
-0C6B;NU;TELUGU DIGIT FIVE
-0C6C;NU;TELUGU DIGIT SIX
-0C6D;NU;TELUGU DIGIT SEVEN
-0C6E;NU;TELUGU DIGIT EIGHT
-0C6F;NU;TELUGU DIGIT NINE
-0C82;CM;KANNADA SIGN ANUSVARA
-0C83;CM;KANNADA SIGN VISARGA
-0C85;AL;KANNADA LETTER A
-0C86;AL;KANNADA LETTER AA
-0C87;AL;KANNADA LETTER I
-0C88;AL;KANNADA LETTER II
-0C89;AL;KANNADA LETTER U
-0C8A;AL;KANNADA LETTER UU
-0C8B;AL;KANNADA LETTER VOCALIC R
-0C8C;AL;KANNADA LETTER VOCALIC L
-0C8E;AL;KANNADA LETTER E
-0C8F;AL;KANNADA LETTER EE
-0C90;AL;KANNADA LETTER AI
-0C92;AL;KANNADA LETTER O
-0C93;AL;KANNADA LETTER OO
-0C94;AL;KANNADA LETTER AU
-0C95;AL;KANNADA LETTER KA
-0C96;AL;KANNADA LETTER KHA
-0C97;AL;KANNADA LETTER GA
-0C98;AL;KANNADA LETTER GHA
-0C99;AL;KANNADA LETTER NGA
-0C9A;AL;KANNADA LETTER CA
-0C9B;AL;KANNADA LETTER CHA
-0C9C;AL;KANNADA LETTER JA
-0C9D;AL;KANNADA LETTER JHA
-0C9E;AL;KANNADA LETTER NYA
-0C9F;AL;KANNADA LETTER TTA
-0CA0;AL;KANNADA LETTER TTHA
-0CA1;AL;KANNADA LETTER DDA
-0CA2;AL;KANNADA LETTER DDHA
-0CA3;AL;KANNADA LETTER NNA
-0CA4;AL;KANNADA LETTER TA
-0CA5;AL;KANNADA LETTER THA
-0CA6;AL;KANNADA LETTER DA
-0CA7;AL;KANNADA LETTER DHA
-0CA8;AL;KANNADA LETTER NA
-0CAA;AL;KANNADA LETTER PA
-0CAB;AL;KANNADA LETTER PHA
-0CAC;AL;KANNADA LETTER BA
-0CAD;AL;KANNADA LETTER BHA
-0CAE;AL;KANNADA LETTER MA
-0CAF;AL;KANNADA LETTER YA
-0CB0;AL;KANNADA LETTER RA
-0CB1;AL;KANNADA LETTER RRA
-0CB2;AL;KANNADA LETTER LA
-0CB3;AL;KANNADA LETTER LLA
-0CB5;AL;KANNADA LETTER VA
-0CB6;AL;KANNADA LETTER SHA
-0CB7;AL;KANNADA LETTER SSA
-0CB8;AL;KANNADA LETTER SA
-0CB9;AL;KANNADA LETTER HA
-0CBE;CM;KANNADA VOWEL SIGN AA
-0CBF;CM;KANNADA VOWEL SIGN I
-0CC0;CM;KANNADA VOWEL SIGN II
-0CC1;CM;KANNADA VOWEL SIGN U
-0CC2;CM;KANNADA VOWEL SIGN UU
-0CC3;CM;KANNADA VOWEL SIGN VOCALIC R
-0CC4;CM;KANNADA VOWEL SIGN VOCALIC RR
-0CC6;CM;KANNADA VOWEL SIGN E
-0CC7;CM;KANNADA VOWEL SIGN EE
-0CC8;CM;KANNADA VOWEL SIGN AI
-0CCA;CM;KANNADA VOWEL SIGN O
-0CCB;CM;KANNADA VOWEL SIGN OO
-0CCC;CM;KANNADA VOWEL SIGN AU
-0CCD;CM;KANNADA SIGN VIRAMA
-0CD5;CM;KANNADA LENGTH MARK
-0CD6;CM;KANNADA AI LENGTH MARK
-0CDE;AL;KANNADA LETTER FA
-0CE0;AL;KANNADA LETTER VOCALIC RR
-0CE1;AL;KANNADA LETTER VOCALIC LL
-0CE6;NU;KANNADA DIGIT ZERO
-0CE7;NU;KANNADA DIGIT ONE
-0CE8;NU;KANNADA DIGIT TWO
-0CE9;NU;KANNADA DIGIT THREE
-0CEA;NU;KANNADA DIGIT FOUR
-0CEB;NU;KANNADA DIGIT FIVE
-0CEC;NU;KANNADA DIGIT SIX
-0CED;NU;KANNADA DIGIT SEVEN
-0CEE;NU;KANNADA DIGIT EIGHT
-0CEF;NU;KANNADA DIGIT NINE
-0D02;CM;MALAYALAM SIGN ANUSVARA
-0D03;CM;MALAYALAM SIGN VISARGA
-0D05;AL;MALAYALAM LETTER A
-0D06;AL;MALAYALAM LETTER AA
-0D07;AL;MALAYALAM LETTER I
-0D08;AL;MALAYALAM LETTER II
-0D09;AL;MALAYALAM LETTER U
-0D0A;AL;MALAYALAM LETTER UU
-0D0B;AL;MALAYALAM LETTER VOCALIC R
-0D0C;AL;MALAYALAM LETTER VOCALIC L
-0D0E;AL;MALAYALAM LETTER E
-0D0F;AL;MALAYALAM LETTER EE
-0D10;AL;MALAYALAM LETTER AI
-0D12;AL;MALAYALAM LETTER O
-0D13;AL;MALAYALAM LETTER OO
-0D14;AL;MALAYALAM LETTER AU
-0D15;AL;MALAYALAM LETTER KA
-0D16;AL;MALAYALAM LETTER KHA
-0D17;AL;MALAYALAM LETTER GA
-0D18;AL;MALAYALAM LETTER GHA
-0D19;AL;MALAYALAM LETTER NGA
-0D1A;AL;MALAYALAM LETTER CA
-0D1B;AL;MALAYALAM LETTER CHA
-0D1C;AL;MALAYALAM LETTER JA
-0D1D;AL;MALAYALAM LETTER JHA
-0D1E;AL;MALAYALAM LETTER NYA
-0D1F;AL;MALAYALAM LETTER TTA
-0D20;AL;MALAYALAM LETTER TTHA
-0D21;AL;MALAYALAM LETTER DDA
-0D22;AL;MALAYALAM LETTER DDHA
-0D23;AL;MALAYALAM LETTER NNA
-0D24;AL;MALAYALAM LETTER TA
-0D25;AL;MALAYALAM LETTER THA
-0D26;AL;MALAYALAM LETTER DA
-0D27;AL;MALAYALAM LETTER DHA
-0D28;AL;MALAYALAM LETTER NA
-0D2A;AL;MALAYALAM LETTER PA
-0D2B;AL;MALAYALAM LETTER PHA
-0D2C;AL;MALAYALAM LETTER BA
-0D2D;AL;MALAYALAM LETTER BHA
-0D2E;AL;MALAYALAM LETTER MA
-0D2F;AL;MALAYALAM LETTER YA
-0D30;AL;MALAYALAM LETTER RA
-0D31;AL;MALAYALAM LETTER RRA
-0D32;AL;MALAYALAM LETTER LA
-0D33;AL;MALAYALAM LETTER LLA
-0D34;AL;MALAYALAM LETTER LLLA
-0D35;AL;MALAYALAM LETTER VA
-0D36;AL;MALAYALAM LETTER SHA
-0D37;AL;MALAYALAM LETTER SSA
-0D38;AL;MALAYALAM LETTER SA
-0D39;AL;MALAYALAM LETTER HA
-0D3E;CM;MALAYALAM VOWEL SIGN AA
-0D3F;CM;MALAYALAM VOWEL SIGN I
-0D40;CM;MALAYALAM VOWEL SIGN II
-0D41;CM;MALAYALAM VOWEL SIGN U
-0D42;CM;MALAYALAM VOWEL SIGN UU
-0D43;CM;MALAYALAM VOWEL SIGN VOCALIC R
-0D46;CM;MALAYALAM VOWEL SIGN E
-0D47;CM;MALAYALAM VOWEL SIGN EE
-0D48;CM;MALAYALAM VOWEL SIGN AI
-0D4A;CM;MALAYALAM VOWEL SIGN O
-0D4B;CM;MALAYALAM VOWEL SIGN OO
-0D4C;CM;MALAYALAM VOWEL SIGN AU
-0D4D;CM;MALAYALAM SIGN VIRAMA
-0D57;CM;MALAYALAM AU LENGTH MARK
-0D60;AL;MALAYALAM LETTER VOCALIC RR
-0D61;AL;MALAYALAM LETTER VOCALIC LL
-0D66;NU;MALAYALAM DIGIT ZERO
-0D67;NU;MALAYALAM DIGIT ONE
-0D68;NU;MALAYALAM DIGIT TWO
-0D69;NU;MALAYALAM DIGIT THREE
-0D6A;NU;MALAYALAM DIGIT FOUR
-0D6B;NU;MALAYALAM DIGIT FIVE
-0D6C;NU;MALAYALAM DIGIT SIX
-0D6D;NU;MALAYALAM DIGIT SEVEN
-0D6E;NU;MALAYALAM DIGIT EIGHT
-0D6F;NU;MALAYALAM DIGIT NINE
-0D82;CM;SINHALA SIGN ANUSVARAYA
-0D83;CM;SINHALA SIGN VISARGAYA
-0D85;AL;SINHALA LETTER AYANNA
-0D86;AL;SINHALA LETTER AAYANNA
-0D87;AL;SINHALA LETTER AEYANNA
-0D88;AL;SINHALA LETTER AEEYANNA
-0D89;AL;SINHALA LETTER IYANNA
-0D8A;AL;SINHALA LETTER IIYANNA
-0D8B;AL;SINHALA LETTER UYANNA
-0D8C;AL;SINHALA LETTER UUYANNA
-0D8D;AL;SINHALA LETTER IRUYANNA
-0D8E;AL;SINHALA LETTER IRUUYANNA
-0D8F;AL;SINHALA LETTER ILUYANNA
-0D90;AL;SINHALA LETTER ILUUYANNA
-0D91;AL;SINHALA LETTER EYANNA
-0D92;AL;SINHALA LETTER EEYANNA
-0D93;AL;SINHALA LETTER AIYANNA
-0D94;AL;SINHALA LETTER OYANNA
-0D95;AL;SINHALA LETTER OOYANNA
-0D96;AL;SINHALA LETTER AUYANNA
-0D9A;AL;SINHALA LETTER ALPAPRAANA KAYANNA
-0D9B;AL;SINHALA LETTER MAHAAPRAANA KAYANNA
-0D9C;AL;SINHALA LETTER ALPAPRAANA GAYANNA
-0D9D;AL;SINHALA LETTER MAHAAPRAANA GAYANNA
-0D9E;AL;SINHALA LETTER KANTAJA NAASIKYAYA
-0D9F;AL;SINHALA LETTER SANYAKA GAYANNA
-0DA0;AL;SINHALA LETTER ALPAPRAANA CAYANNA
-0DA1;AL;SINHALA LETTER MAHAAPRAANA CAYANNA
-0DA2;AL;SINHALA LETTER ALPAPRAANA JAYANNA
-0DA3;AL;SINHALA LETTER MAHAAPRAANA JAYANNA
-0DA4;AL;SINHALA LETTER TAALUJA NAASIKYAYA
-0DA5;AL;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
-0DA6;AL;SINHALA LETTER SANYAKA JAYANNA
-0DA7;AL;SINHALA LETTER ALPAPRAANA TTAYANNA
-0DA8;AL;SINHALA LETTER MAHAAPRAANA TTAYANNA
-0DA9;AL;SINHALA LETTER ALPAPRAANA DDAYANNA
-0DAA;AL;SINHALA LETTER MAHAAPRAANA DDAYANNA
-0DAB;AL;SINHALA LETTER MUURDHAJA NAYANNA
-0DAC;AL;SINHALA LETTER SANYAKA DDAYANNA
-0DAD;AL;SINHALA LETTER ALPAPRAANA TAYANNA
-0DAE;AL;SINHALA LETTER MAHAAPRAANA TAYANNA
-0DAF;AL;SINHALA LETTER ALPAPRAANA DAYANNA
-0DB0;AL;SINHALA LETTER MAHAAPRAANA DAYANNA
-0DB1;AL;SINHALA LETTER DANTAJA NAYANNA
-0DB3;AL;SINHALA LETTER SANYAKA DAYANNA
-0DB4;AL;SINHALA LETTER ALPAPRAANA PAYANNA
-0DB5;AL;SINHALA LETTER MAHAAPRAANA PAYANNA
-0DB6;AL;SINHALA LETTER ALPAPRAANA BAYANNA
-0DB7;AL;SINHALA LETTER MAHAAPRAANA BAYANNA
-0DB8;AL;SINHALA LETTER MAYANNA
-0DB9;AL;SINHALA LETTER AMBA BAYANNA
-0DBA;AL;SINHALA LETTER YAYANNA
-0DBB;AL;SINHALA LETTER RAYANNA
-0DBD;AL;SINHALA LETTER DANTAJA LAYANNA
-0DC0;AL;SINHALA LETTER VAYANNA
-0DC1;AL;SINHALA LETTER TAALUJA SAYANNA
-0DC2;AL;SINHALA LETTER MUURDHAJA SAYANNA
-0DC3;AL;SINHALA LETTER DANTAJA SAYANNA
-0DC4;AL;SINHALA LETTER HAYANNA
-0DC5;AL;SINHALA LETTER MUURDHAJA LAYANNA
-0DC6;AL;SINHALA LETTER FAYANNA
-0DCA;CM;SINHALA SIGN AL-LAKUNA
-0DCF;CM;SINHALA VOWEL SIGN AELA-PILLA
-0DD0;CM;SINHALA VOWEL SIGN KETTI AEDA-PILLA
-0DD1;CM;SINHALA VOWEL SIGN DIGA AEDA-PILLA
-0DD2;CM;SINHALA VOWEL SIGN KETTI IS-PILLA
-0DD3;CM;SINHALA VOWEL SIGN DIGA IS-PILLA
-0DD4;CM;SINHALA VOWEL SIGN KETTI PAA-PILLA
-0DD6;CM;SINHALA VOWEL SIGN DIGA PAA-PILLA
-0DD8;CM;SINHALA VOWEL SIGN GAETTA-PILLA
-0DD9;CM;SINHALA VOWEL SIGN KOMBUVA
-0DDA;CM;SINHALA VOWEL SIGN DIGA KOMBUVA
-0DDB;CM;SINHALA VOWEL SIGN KOMBU DEKA
-0DDC;CM;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
-0DDD;CM;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
-0DDE;CM;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
-0DDF;CM;SINHALA VOWEL SIGN GAYANUKITTA
-0DF2;CM;SINHALA VOWEL SIGN DIGA GAETTA-PILLA
-0DF3;CM;SINHALA VOWEL SIGN DIGA GAYANUKITTA
-0DF4;AL;SINHALA PUNCTUATION KUNDDALIYA
-0E01;SA;THAI CHARACTER KO KAI
-0E02;SA;THAI CHARACTER KHO KHAI
-0E03;SA;THAI CHARACTER KHO KHUAT
-0E04;SA;THAI CHARACTER KHO KHWAI
-0E05;SA;THAI CHARACTER KHO KHON
-0E06;SA;THAI CHARACTER KHO RAKHANG
-0E07;SA;THAI CHARACTER NGO NGU
-0E08;SA;THAI CHARACTER CHO CHAN
-0E09;SA;THAI CHARACTER CHO CHING
-0E0A;SA;THAI CHARACTER CHO CHANG
-0E0B;SA;THAI CHARACTER SO SO
-0E0C;SA;THAI CHARACTER CHO CHOE
-0E0D;SA;THAI CHARACTER YO YING
-0E0E;SA;THAI CHARACTER DO CHADA
-0E0F;SA;THAI CHARACTER TO PATAK
-0E10;SA;THAI CHARACTER THO THAN
-0E11;SA;THAI CHARACTER THO NANGMONTHO
-0E12;SA;THAI CHARACTER THO PHUTHAO
-0E13;SA;THAI CHARACTER NO NEN
-0E14;SA;THAI CHARACTER DO DEK
-0E15;SA;THAI CHARACTER TO TAO
-0E16;SA;THAI CHARACTER THO THUNG
-0E17;SA;THAI CHARACTER THO THAHAN
-0E18;SA;THAI CHARACTER THO THONG
-0E19;SA;THAI CHARACTER NO NU
-0E1A;SA;THAI CHARACTER BO BAIMAI
-0E1B;SA;THAI CHARACTER PO PLA
-0E1C;SA;THAI CHARACTER PHO PHUNG
-0E1D;SA;THAI CHARACTER FO FA
-0E1E;SA;THAI CHARACTER PHO PHAN
-0E1F;SA;THAI CHARACTER FO FAN
-0E20;SA;THAI CHARACTER PHO SAMPHAO
-0E21;SA;THAI CHARACTER MO MA
-0E22;SA;THAI CHARACTER YO YAK
-0E23;SA;THAI CHARACTER RO RUA
-0E24;SA;THAI CHARACTER RU
-0E25;SA;THAI CHARACTER LO LING
-0E26;SA;THAI CHARACTER LU
-0E27;SA;THAI CHARACTER WO WAEN
-0E28;SA;THAI CHARACTER SO SALA
-0E29;SA;THAI CHARACTER SO RUSI
-0E2A;SA;THAI CHARACTER SO SUA
-0E2B;SA;THAI CHARACTER HO HIP
-0E2C;SA;THAI CHARACTER LO CHULA
-0E2D;SA;THAI CHARACTER O ANG
-0E2E;SA;THAI CHARACTER HO NOKHUK
-0E2F;SA;THAI CHARACTER PAIYANNOI
-0E30;SA;THAI CHARACTER SARA A
-0E31;CM;THAI CHARACTER MAI HAN-AKAT
-0E32;SA;THAI CHARACTER SARA AA
-0E33;SA;THAI CHARACTER SARA AM
-0E34;CM;THAI CHARACTER SARA I
-0E35;CM;THAI CHARACTER SARA II
-0E36;CM;THAI CHARACTER SARA UE
-0E37;CM;THAI CHARACTER SARA UEE
-0E38;CM;THAI CHARACTER SARA U
-0E39;CM;THAI CHARACTER SARA UU
-0E3A;CM;THAI CHARACTER PHINTHU
-0E3F;PR;THAI CURRENCY SYMBOL BAHT
-0E40;SA;THAI CHARACTER SARA E
-0E41;SA;THAI CHARACTER SARA AE
-0E42;SA;THAI CHARACTER SARA O
-0E43;SA;THAI CHARACTER SARA AI MAIMUAN
-0E44;SA;THAI CHARACTER SARA AI MAIMALAI
-0E45;SA;THAI CHARACTER LAKKHANGYAO
-0E46;SA;THAI CHARACTER MAIYAMOK
-0E47;CM;THAI CHARACTER MAITAIKHU
-0E48;CM;THAI CHARACTER MAI EK
-0E49;CM;THAI CHARACTER MAI THO
-0E4A;CM;THAI CHARACTER MAI TRI
-0E4B;CM;THAI CHARACTER MAI CHATTAWA
-0E4C;CM;THAI CHARACTER THANTHAKHAT
-0E4D;CM;THAI CHARACTER NIKHAHIT
-0E4E;CM;THAI CHARACTER YAMAKKAN
-0E4F;AL;THAI CHARACTER FONGMAN
-0E50;NU;THAI DIGIT ZERO
-0E51;NU;THAI DIGIT ONE
-0E52;NU;THAI DIGIT TWO
-0E53;NU;THAI DIGIT THREE
-0E54;NU;THAI DIGIT FOUR
-0E55;NU;THAI DIGIT FIVE
-0E56;NU;THAI DIGIT SIX
-0E57;NU;THAI DIGIT SEVEN
-0E58;NU;THAI DIGIT EIGHT
-0E59;NU;THAI DIGIT NINE
-0E5A;NS;THAI CHARACTER ANGKHANKHU
-0E5B;NS;THAI CHARACTER KHOMUT
-0E81;SA;LAO LETTER KO
-0E82;SA;LAO LETTER KHO SUNG
-0E84;SA;LAO LETTER KHO TAM
-0E87;SA;LAO LETTER NGO
-0E88;SA;LAO LETTER CO
-0E8A;SA;LAO LETTER SO TAM
-0E8D;SA;LAO LETTER NYO
-0E94;SA;LAO LETTER DO
-0E95;SA;LAO LETTER TO
-0E96;SA;LAO LETTER THO SUNG
-0E97;SA;LAO LETTER THO TAM
-0E99;SA;LAO LETTER NO
-0E9A;SA;LAO LETTER BO
-0E9B;SA;LAO LETTER PO
-0E9C;SA;LAO LETTER PHO SUNG
-0E9D;SA;LAO LETTER FO TAM
-0E9E;SA;LAO LETTER PHO TAM
-0E9F;SA;LAO LETTER FO SUNG
-0EA1;SA;LAO LETTER MO
-0EA2;SA;LAO LETTER YO
-0EA3;SA;LAO LETTER LO LING
-0EA5;SA;LAO LETTER LO LOOT
-0EA7;SA;LAO LETTER WO
-0EAA;SA;LAO LETTER SO SUNG
-0EAB;SA;LAO LETTER HO SUNG
-0EAD;SA;LAO LETTER O
-0EAE;SA;LAO LETTER HO TAM
-0EAF;SA;LAO ELLIPSIS
-0EB0;SA;LAO VOWEL SIGN A
-0EB1;CM;LAO VOWEL SIGN MAI KAN
-0EB2;SA;LAO VOWEL SIGN AA
-0EB3;SA;LAO VOWEL SIGN AM
-0EB4;CM;LAO VOWEL SIGN I
-0EB5;CM;LAO VOWEL SIGN II
-0EB6;CM;LAO VOWEL SIGN Y
-0EB7;CM;LAO VOWEL SIGN YY
-0EB8;CM;LAO VOWEL SIGN U
-0EB9;CM;LAO VOWEL SIGN UU
-0EBB;CM;LAO VOWEL SIGN MAI KON
-0EBC;CM;LAO SEMIVOWEL SIGN LO
-0EBD;SA;LAO SEMIVOWEL SIGN NYO
-0EC0;SA;LAO VOWEL SIGN E
-0EC1;SA;LAO VOWEL SIGN EI
-0EC2;SA;LAO VOWEL SIGN O
-0EC3;SA;LAO VOWEL SIGN AY
-0EC4;SA;LAO VOWEL SIGN AI
-0EC6;SA;LAO KO LA
-0EC8;CM;LAO TONE MAI EK
-0EC9;CM;LAO TONE MAI THO
-0ECA;CM;LAO TONE MAI TI
-0ECB;CM;LAO TONE MAI CATAWA
-0ECC;CM;LAO CANCELLATION MARK
-0ECD;CM;LAO NIGGAHITA
-0ED0;NU;LAO DIGIT ZERO
-0ED1;NU;LAO DIGIT ONE
-0ED2;NU;LAO DIGIT TWO
-0ED3;NU;LAO DIGIT THREE
-0ED4;NU;LAO DIGIT FOUR
-0ED5;NU;LAO DIGIT FIVE
-0ED6;NU;LAO DIGIT SIX
-0ED7;NU;LAO DIGIT SEVEN
-0ED8;NU;LAO DIGIT EIGHT
-0ED9;NU;LAO DIGIT NINE
-0EDC;SA;LAO HO NO
-0EDD;SA;LAO HO MO
-0F00;AL;TIBETAN SYLLABLE OM
-0F01;AL;TIBETAN MARK GTER YIG MGO TRUNCATED A
-0F02;AL;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA
-0F03;AL;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
-0F04;AL;TIBETAN MARK INITIAL YIG MGO MDUN MA
-0F05;AL;TIBETAN MARK CLOSING YIG MGO SGAB MA
-0F06;AL;TIBETAN MARK CARET YIG MGO PHUR SHAD MA
-0F07;AL;TIBETAN MARK YIG MGO TSHEG SHAD MA
-0F08;AL;TIBETAN MARK SBRUL SHAD
-0F09;AL;TIBETAN MARK BSKUR YIG MGO
-0F0A;AL;TIBETAN MARK BKA- SHOG YIG MGO
-0F0B;BA;TIBETAN MARK INTERSYLLABIC TSHEG
-0F0C;GL;TIBETAN MARK DELIMITER TSHEG BSTAR
-0F0D;AL;TIBETAN MARK SHAD
-0F0E;AL;TIBETAN MARK NYIS SHAD
-0F0F;AL;TIBETAN MARK TSHEG SHAD
-0F10;AL;TIBETAN MARK NYIS TSHEG SHAD
-0F11;AL;TIBETAN MARK RIN CHEN SPUNGS SHAD
-0F12;AL;TIBETAN MARK RGYA GRAM SHAD
-0F13;AL;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
-0F14;AL;TIBETAN MARK GTER TSHEG
-0F15;AL;TIBETAN LOGOTYPE SIGN CHAD RTAGS
-0F16;AL;TIBETAN LOGOTYPE SIGN LHAG RTAGS
-0F17;AL;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
-0F18;CM;TIBETAN ASTROLOGICAL SIGN -KHYUD PA
-0F19;CM;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
-0F1A;AL;TIBETAN SIGN RDEL DKAR GCIG
-0F1B;AL;TIBETAN SIGN RDEL DKAR GNYIS
-0F1C;AL;TIBETAN SIGN RDEL DKAR GSUM
-0F1D;AL;TIBETAN SIGN RDEL NAG GCIG
-0F1E;AL;TIBETAN SIGN RDEL NAG GNYIS
-0F1F;AL;TIBETAN SIGN RDEL DKAR RDEL NAG
-0F20;NU;TIBETAN DIGIT ZERO
-0F21;NU;TIBETAN DIGIT ONE
-0F22;NU;TIBETAN DIGIT TWO
-0F23;NU;TIBETAN DIGIT THREE
-0F24;NU;TIBETAN DIGIT FOUR
-0F25;NU;TIBETAN DIGIT FIVE
-0F26;NU;TIBETAN DIGIT SIX
-0F27;NU;TIBETAN DIGIT SEVEN
-0F28;NU;TIBETAN DIGIT EIGHT
-0F29;NU;TIBETAN DIGIT NINE
-0F2A;AL;TIBETAN DIGIT HALF ONE
-0F2B;AL;TIBETAN DIGIT HALF TWO
-0F2C;AL;TIBETAN DIGIT HALF THREE
-0F2D;AL;TIBETAN DIGIT HALF FOUR
-0F2E;AL;TIBETAN DIGIT HALF FIVE
-0F2F;AL;TIBETAN DIGIT HALF SIX
-0F30;AL;TIBETAN DIGIT HALF SEVEN
-0F31;AL;TIBETAN DIGIT HALF EIGHT
-0F32;AL;TIBETAN DIGIT HALF NINE
-0F33;AL;TIBETAN DIGIT HALF ZERO
-0F34;AL;TIBETAN MARK BSDUS RTAGS
-0F35;CM;TIBETAN MARK NGAS BZUNG NYI ZLA
-0F36;AL;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
-0F37;CM;TIBETAN MARK NGAS BZUNG SGOR RTAGS
-0F38;AL;TIBETAN MARK CHE MGO
-0F39;CM;TIBETAN MARK TSA -PHRU
-0F3A;OP;TIBETAN MARK GUG RTAGS GYON
-0F3B;CL;TIBETAN MARK GUG RTAGS GYAS
-0F3C;OP;TIBETAN MARK ANG KHANG GYON
-0F3D;CL;TIBETAN MARK ANG KHANG GYAS
-0F3E;CM;TIBETAN SIGN YAR TSHES
-0F3F;CM;TIBETAN SIGN MAR TSHES
-0F40;AL;TIBETAN LETTER KA
-0F41;AL;TIBETAN LETTER KHA
-0F42;AL;TIBETAN LETTER GA
-0F43;AL;TIBETAN LETTER GHA
-0F44;AL;TIBETAN LETTER NGA
-0F45;AL;TIBETAN LETTER CA
-0F46;AL;TIBETAN LETTER CHA
-0F47;AL;TIBETAN LETTER JA
-0F49;AL;TIBETAN LETTER NYA
-0F4A;AL;TIBETAN LETTER TTA
-0F4B;AL;TIBETAN LETTER TTHA
-0F4C;AL;TIBETAN LETTER DDA
-0F4D;AL;TIBETAN LETTER DDHA
-0F4E;AL;TIBETAN LETTER NNA
-0F4F;AL;TIBETAN LETTER TA
-0F50;AL;TIBETAN LETTER THA
-0F51;AL;TIBETAN LETTER DA
-0F52;AL;TIBETAN LETTER DHA
-0F53;AL;TIBETAN LETTER NA
-0F54;AL;TIBETAN LETTER PA
-0F55;AL;TIBETAN LETTER PHA
-0F56;AL;TIBETAN LETTER BA
-0F57;AL;TIBETAN LETTER BHA
-0F58;AL;TIBETAN LETTER MA
-0F59;AL;TIBETAN LETTER TSA
-0F5A;AL;TIBETAN LETTER TSHA
-0F5B;AL;TIBETAN LETTER DZA
-0F5C;AL;TIBETAN LETTER DZHA
-0F5D;AL;TIBETAN LETTER WA
-0F5E;AL;TIBETAN LETTER ZHA
-0F5F;AL;TIBETAN LETTER ZA
-0F60;AL;TIBETAN LETTER -A
-0F61;AL;TIBETAN LETTER YA
-0F62;AL;TIBETAN LETTER RA
-0F63;AL;TIBETAN LETTER LA
-0F64;AL;TIBETAN LETTER SHA
-0F65;AL;TIBETAN LETTER SSA
-0F66;AL;TIBETAN LETTER SA
-0F67;AL;TIBETAN LETTER HA
-0F68;AL;TIBETAN LETTER A
-0F69;AL;TIBETAN LETTER KSSA
-0F6A;AL;TIBETAN LETTER FIXED-FORM RA
-0F71;CM;TIBETAN VOWEL SIGN AA
-0F72;CM;TIBETAN VOWEL SIGN I
-0F73;CM;TIBETAN VOWEL SIGN II
-0F74;CM;TIBETAN VOWEL SIGN U
-0F75;CM;TIBETAN VOWEL SIGN UU
-0F76;CM;TIBETAN VOWEL SIGN VOCALIC R
-0F77;CM;TIBETAN VOWEL SIGN VOCALIC RR
-0F78;CM;TIBETAN VOWEL SIGN VOCALIC L
-0F79;CM;TIBETAN VOWEL SIGN VOCALIC LL
-0F7A;CM;TIBETAN VOWEL SIGN E
-0F7B;CM;TIBETAN VOWEL SIGN EE
-0F7C;CM;TIBETAN VOWEL SIGN O
-0F7D;CM;TIBETAN VOWEL SIGN OO
-0F7E;CM;TIBETAN SIGN RJES SU NGA RO
-0F7F;CM;TIBETAN SIGN RNAM BCAD
-0F80;CM;TIBETAN VOWEL SIGN REVERSED I
-0F81;CM;TIBETAN VOWEL SIGN REVERSED II
-0F82;CM;TIBETAN SIGN NYI ZLA NAA DA
-0F83;CM;TIBETAN SIGN SNA LDAN
-0F84;CM;TIBETAN MARK HALANTA
-0F85;AL;TIBETAN MARK PALUTA
-0F86;CM;TIBETAN SIGN LCI RTAGS
-0F87;CM;TIBETAN SIGN YANG RTAGS
-0F88;AL;TIBETAN SIGN LCE TSA CAN
-0F89;AL;TIBETAN SIGN MCHU CAN
-0F8A;AL;TIBETAN SIGN GRU CAN RGYINGS
-0F8B;AL;TIBETAN SIGN GRU MED RGYINGS
-0F90;CM;TIBETAN SUBJOINED LETTER KA
-0F91;CM;TIBETAN SUBJOINED LETTER KHA
-0F92;CM;TIBETAN SUBJOINED LETTER GA
-0F93;CM;TIBETAN SUBJOINED LETTER GHA
-0F94;CM;TIBETAN SUBJOINED LETTER NGA
-0F95;CM;TIBETAN SUBJOINED LETTER CA
-0F96;CM;TIBETAN SUBJOINED LETTER CHA
-0F97;CM;TIBETAN SUBJOINED LETTER JA
-0F99;CM;TIBETAN SUBJOINED LETTER NYA
-0F9A;CM;TIBETAN SUBJOINED LETTER TTA
-0F9B;CM;TIBETAN SUBJOINED LETTER TTHA
-0F9C;CM;TIBETAN SUBJOINED LETTER DDA
-0F9D;CM;TIBETAN SUBJOINED LETTER DDHA
-0F9E;CM;TIBETAN SUBJOINED LETTER NNA
-0F9F;CM;TIBETAN SUBJOINED LETTER TA
-0FA0;CM;TIBETAN SUBJOINED LETTER THA
-0FA1;CM;TIBETAN SUBJOINED LETTER DA
-0FA2;CM;TIBETAN SUBJOINED LETTER DHA
-0FA3;CM;TIBETAN SUBJOINED LETTER NA
-0FA4;CM;TIBETAN SUBJOINED LETTER PA
-0FA5;CM;TIBETAN SUBJOINED LETTER PHA
-0FA6;CM;TIBETAN SUBJOINED LETTER BA
-0FA7;CM;TIBETAN SUBJOINED LETTER BHA
-0FA8;CM;TIBETAN SUBJOINED LETTER MA
-0FA9;CM;TIBETAN SUBJOINED LETTER TSA
-0FAA;CM;TIBETAN SUBJOINED LETTER TSHA
-0FAB;CM;TIBETAN SUBJOINED LETTER DZA
-0FAC;CM;TIBETAN SUBJOINED LETTER DZHA
-0FAD;CM;TIBETAN SUBJOINED LETTER WA
-0FAE;CM;TIBETAN SUBJOINED LETTER ZHA
-0FAF;CM;TIBETAN SUBJOINED LETTER ZA
-0FB0;CM;TIBETAN SUBJOINED LETTER -A
-0FB1;CM;TIBETAN SUBJOINED LETTER YA
-0FB2;CM;TIBETAN SUBJOINED LETTER RA
-0FB3;CM;TIBETAN SUBJOINED LETTER LA
-0FB4;CM;TIBETAN SUBJOINED LETTER SHA
-0FB5;CM;TIBETAN SUBJOINED LETTER SSA
-0FB6;CM;TIBETAN SUBJOINED LETTER SA
-0FB7;CM;TIBETAN SUBJOINED LETTER HA
-0FB8;CM;TIBETAN SUBJOINED LETTER A
-0FB9;CM;TIBETAN SUBJOINED LETTER KSSA
-0FBA;CM;TIBETAN SUBJOINED LETTER FIXED-FORM WA
-0FBB;CM;TIBETAN SUBJOINED LETTER FIXED-FORM YA
-0FBC;CM;TIBETAN SUBJOINED LETTER FIXED-FORM RA
-0FBE;AL;TIBETAN KU RU KHA
-0FBF;AL;TIBETAN KU RU KHA BZHI MIG CAN
-0FC0;AL;TIBETAN CANTILLATION SIGN HEAVY BEAT
-0FC1;AL;TIBETAN CANTILLATION SIGN LIGHT BEAT
-0FC2;AL;TIBETAN CANTILLATION SIGN CANG TE-U
-0FC3;AL;TIBETAN CANTILLATION SIGN SBUB -CHAL
-0FC4;AL;TIBETAN SYMBOL DRIL BU
-0FC5;AL;TIBETAN SYMBOL RDO RJE
-0FC6;CM;TIBETAN SYMBOL PADMA GDAN
-0FC7;AL;TIBETAN SYMBOL RDO RJE RGYA GRAM
-0FC8;AL;TIBETAN SYMBOL PHUR PA
-0FC9;AL;TIBETAN SYMBOL NOR BU
-0FCA;AL;TIBETAN SYMBOL NOR BU NYIS -KHYIL
-0FCB;AL;TIBETAN SYMBOL NOR BU GSUM -KHYIL
-0FCC;AL;TIBETAN SYMBOL NOR BU BZHI -KHYIL
-0FCF;AL;TIBETAN SIGN RDEL NAG GSUM
-1000;SA;MYANMAR LETTER KA
-1001;SA;MYANMAR LETTER KHA
-1002;SA;MYANMAR LETTER GA
-1003;SA;MYANMAR LETTER GHA
-1004;SA;MYANMAR LETTER NGA
-1005;SA;MYANMAR LETTER CA
-1006;SA;MYANMAR LETTER CHA
-1007;SA;MYANMAR LETTER JA
-1008;SA;MYANMAR LETTER JHA
-1009;SA;MYANMAR LETTER NYA
-100A;SA;MYANMAR LETTER NNYA
-100B;SA;MYANMAR LETTER TTA
-100C;SA;MYANMAR LETTER TTHA
-100D;SA;MYANMAR LETTER DDA
-100E;SA;MYANMAR LETTER DDHA
-100F;SA;MYANMAR LETTER NNA
-1010;SA;MYANMAR LETTER TA
-1011;SA;MYANMAR LETTER THA
-1012;SA;MYANMAR LETTER DA
-1013;SA;MYANMAR LETTER DHA
-1014;SA;MYANMAR LETTER NA
-1015;SA;MYANMAR LETTER PA
-1016;SA;MYANMAR LETTER PHA
-1017;SA;MYANMAR LETTER BA
-1018;SA;MYANMAR LETTER BHA
-1019;SA;MYANMAR LETTER MA
-101A;SA;MYANMAR LETTER YA
-101B;SA;MYANMAR LETTER RA
-101C;SA;MYANMAR LETTER LA
-101D;SA;MYANMAR LETTER WA
-101E;SA;MYANMAR LETTER SA
-101F;SA;MYANMAR LETTER HA
-1020;SA;MYANMAR LETTER LLA
-1021;SA;MYANMAR LETTER A
-1023;SA;MYANMAR LETTER I
-1024;SA;MYANMAR LETTER II
-1025;SA;MYANMAR LETTER U
-1026;SA;MYANMAR LETTER UU
-1027;SA;MYANMAR LETTER E
-1029;SA;MYANMAR LETTER O
-102A;SA;MYANMAR LETTER AU
-102C;CM;MYANMAR VOWEL SIGN AA
-102D;CM;MYANMAR VOWEL SIGN I
-102E;CM;MYANMAR VOWEL SIGN II
-102F;CM;MYANMAR VOWEL SIGN U
-1030;CM;MYANMAR VOWEL SIGN UU
-1031;CM;MYANMAR VOWEL SIGN E
-1032;CM;MYANMAR VOWEL SIGN AI
-1036;CM;MYANMAR SIGN ANUSVARA
-1037;CM;MYANMAR SIGN DOT BELOW
-1038;CM;MYANMAR SIGN VISARGA
-1039;CM;MYANMAR SIGN VIRAMA
-1040;NU;MYANMAR DIGIT ZERO
-1041;NU;MYANMAR DIGIT ONE
-1042;NU;MYANMAR DIGIT TWO
-1043;NU;MYANMAR DIGIT THREE
-1044;NU;MYANMAR DIGIT FOUR
-1045;NU;MYANMAR DIGIT FIVE
-1046;NU;MYANMAR DIGIT SIX
-1047;NU;MYANMAR DIGIT SEVEN
-1048;NU;MYANMAR DIGIT EIGHT
-1049;NU;MYANMAR DIGIT NINE
-104A;AL;MYANMAR SIGN LITTLE SECTION
-104B;AL;MYANMAR SIGN SECTION
-104C;AL;MYANMAR SYMBOL LOCATIVE
-104D;AL;MYANMAR SYMBOL COMPLETED
-104E;AL;MYANMAR SYMBOL AFOREMENTIONED
-104F;AL;MYANMAR SYMBOL GENITIVE
-1050;SA;MYANMAR LETTER SHA
-1051;SA;MYANMAR LETTER SSA
-1052;SA;MYANMAR LETTER VOCALIC R
-1053;SA;MYANMAR LETTER VOCALIC RR
-1054;SA;MYANMAR LETTER VOCALIC L
-1055;SA;MYANMAR LETTER VOCALIC LL
-1056;CM;MYANMAR VOWEL SIGN VOCALIC R
-1057;CM;MYANMAR VOWEL SIGN VOCALIC RR
-1058;CM;MYANMAR VOWEL SIGN VOCALIC L
-1059;CM;MYANMAR VOWEL SIGN VOCALIC LL
-10A0;AL;GEORGIAN CAPITAL LETTER AN
-10A1;AL;GEORGIAN CAPITAL LETTER BAN
-10A2;AL;GEORGIAN CAPITAL LETTER GAN
-10A3;AL;GEORGIAN CAPITAL LETTER DON
-10A4;AL;GEORGIAN CAPITAL LETTER EN
-10A5;AL;GEORGIAN CAPITAL LETTER VIN
-10A6;AL;GEORGIAN CAPITAL LETTER ZEN
-10A7;AL;GEORGIAN CAPITAL LETTER TAN
-10A8;AL;GEORGIAN CAPITAL LETTER IN
-10A9;AL;GEORGIAN CAPITAL LETTER KAN
-10AA;AL;GEORGIAN CAPITAL LETTER LAS
-10AB;AL;GEORGIAN CAPITAL LETTER MAN
-10AC;AL;GEORGIAN CAPITAL LETTER NAR
-10AD;AL;GEORGIAN CAPITAL LETTER ON
-10AE;AL;GEORGIAN CAPITAL LETTER PAR
-10AF;AL;GEORGIAN CAPITAL LETTER ZHAR
-10B0;AL;GEORGIAN CAPITAL LETTER RAE
-10B1;AL;GEORGIAN CAPITAL LETTER SAN
-10B2;AL;GEORGIAN CAPITAL LETTER TAR
-10B3;AL;GEORGIAN CAPITAL LETTER UN
-10B4;AL;GEORGIAN CAPITAL LETTER PHAR
-10B5;AL;GEORGIAN CAPITAL LETTER KHAR
-10B6;AL;GEORGIAN CAPITAL LETTER GHAN
-10B7;AL;GEORGIAN CAPITAL LETTER QAR
-10B8;AL;GEORGIAN CAPITAL LETTER SHIN
-10B9;AL;GEORGIAN CAPITAL LETTER CHIN
-10BA;AL;GEORGIAN CAPITAL LETTER CAN
-10BB;AL;GEORGIAN CAPITAL LETTER JIL
-10BC;AL;GEORGIAN CAPITAL LETTER CIL
-10BD;AL;GEORGIAN CAPITAL LETTER CHAR
-10BE;AL;GEORGIAN CAPITAL LETTER XAN
-10BF;AL;GEORGIAN CAPITAL LETTER JHAN
-10C0;AL;GEORGIAN CAPITAL LETTER HAE
-10C1;AL;GEORGIAN CAPITAL LETTER HE
-10C2;AL;GEORGIAN CAPITAL LETTER HIE
-10C3;AL;GEORGIAN CAPITAL LETTER WE
-10C4;AL;GEORGIAN CAPITAL LETTER HAR
-10C5;AL;GEORGIAN CAPITAL LETTER HOE
-10D0;AL;GEORGIAN LETTER AN
-10D1;AL;GEORGIAN LETTER BAN
-10D2;AL;GEORGIAN LETTER GAN
-10D3;AL;GEORGIAN LETTER DON
-10D4;AL;GEORGIAN LETTER EN
-10D5;AL;GEORGIAN LETTER VIN
-10D6;AL;GEORGIAN LETTER ZEN
-10D7;AL;GEORGIAN LETTER TAN
-10D8;AL;GEORGIAN LETTER IN
-10D9;AL;GEORGIAN LETTER KAN
-10DA;AL;GEORGIAN LETTER LAS
-10DB;AL;GEORGIAN LETTER MAN
-10DC;AL;GEORGIAN LETTER NAR
-10DD;AL;GEORGIAN LETTER ON
-10DE;AL;GEORGIAN LETTER PAR
-10DF;AL;GEORGIAN LETTER ZHAR
-10E0;AL;GEORGIAN LETTER RAE
-10E1;AL;GEORGIAN LETTER SAN
-10E2;AL;GEORGIAN LETTER TAR
-10E3;AL;GEORGIAN LETTER UN
-10E4;AL;GEORGIAN LETTER PHAR
-10E5;AL;GEORGIAN LETTER KHAR
-10E6;AL;GEORGIAN LETTER GHAN
-10E7;AL;GEORGIAN LETTER QAR
-10E8;AL;GEORGIAN LETTER SHIN
-10E9;AL;GEORGIAN LETTER CHIN
-10EA;AL;GEORGIAN LETTER CAN
-10EB;AL;GEORGIAN LETTER JIL
-10EC;AL;GEORGIAN LETTER CIL
-10ED;AL;GEORGIAN LETTER CHAR
-10EE;AL;GEORGIAN LETTER XAN
-10EF;AL;GEORGIAN LETTER JHAN
-10F0;AL;GEORGIAN LETTER HAE
-10F1;AL;GEORGIAN LETTER HE
-10F2;AL;GEORGIAN LETTER HIE
-10F3;AL;GEORGIAN LETTER WE
-10F4;AL;GEORGIAN LETTER HAR
-10F5;AL;GEORGIAN LETTER HOE
-10F6;AL;GEORGIAN LETTER FI
-10FB;AL;GEORGIAN PARAGRAPH SEPARATOR
-1100;ID;HANGUL CHOSEONG KIYEOK
-1101;ID;HANGUL CHOSEONG SSANGKIYEOK
-1102;ID;HANGUL CHOSEONG NIEUN
-1103;ID;HANGUL CHOSEONG TIKEUT
-1104;ID;HANGUL CHOSEONG SSANGTIKEUT
-1105;ID;HANGUL CHOSEONG RIEUL
-1106;ID;HANGUL CHOSEONG MIEUM
-1107;ID;HANGUL CHOSEONG PIEUP
-1108;ID;HANGUL CHOSEONG SSANGPIEUP
-1109;ID;HANGUL CHOSEONG SIOS
-110A;ID;HANGUL CHOSEONG SSANGSIOS
-110B;ID;HANGUL CHOSEONG IEUNG
-110C;ID;HANGUL CHOSEONG CIEUC
-110D;ID;HANGUL CHOSEONG SSANGCIEUC
-110E;ID;HANGUL CHOSEONG CHIEUCH
-110F;ID;HANGUL CHOSEONG KHIEUKH
-1110;ID;HANGUL CHOSEONG THIEUTH
-1111;ID;HANGUL CHOSEONG PHIEUPH
-1112;ID;HANGUL CHOSEONG HIEUH
-1113;ID;HANGUL CHOSEONG NIEUN-KIYEOK
-1114;ID;HANGUL CHOSEONG SSANGNIEUN
-1115;ID;HANGUL CHOSEONG NIEUN-TIKEUT
-1116;ID;HANGUL CHOSEONG NIEUN-PIEUP
-1117;ID;HANGUL CHOSEONG TIKEUT-KIYEOK
-1118;ID;HANGUL CHOSEONG RIEUL-NIEUN
-1119;ID;HANGUL CHOSEONG SSANGRIEUL
-111A;ID;HANGUL CHOSEONG RIEUL-HIEUH
-111B;ID;HANGUL CHOSEONG KAPYEOUNRIEUL
-111C;ID;HANGUL CHOSEONG MIEUM-PIEUP
-111D;ID;HANGUL CHOSEONG KAPYEOUNMIEUM
-111E;ID;HANGUL CHOSEONG PIEUP-KIYEOK
-111F;ID;HANGUL CHOSEONG PIEUP-NIEUN
-1120;ID;HANGUL CHOSEONG PIEUP-TIKEUT
-1121;ID;HANGUL CHOSEONG PIEUP-SIOS
-1122;ID;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
-1123;ID;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
-1124;ID;HANGUL CHOSEONG PIEUP-SIOS-PIEUP
-1125;ID;HANGUL CHOSEONG PIEUP-SSANGSIOS
-1126;ID;HANGUL CHOSEONG PIEUP-SIOS-CIEUC
-1127;ID;HANGUL CHOSEONG PIEUP-CIEUC
-1128;ID;HANGUL CHOSEONG PIEUP-CHIEUCH
-1129;ID;HANGUL CHOSEONG PIEUP-THIEUTH
-112A;ID;HANGUL CHOSEONG PIEUP-PHIEUPH
-112B;ID;HANGUL CHOSEONG KAPYEOUNPIEUP
-112C;ID;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
-112D;ID;HANGUL CHOSEONG SIOS-KIYEOK
-112E;ID;HANGUL CHOSEONG SIOS-NIEUN
-112F;ID;HANGUL CHOSEONG SIOS-TIKEUT
-1130;ID;HANGUL CHOSEONG SIOS-RIEUL
-1131;ID;HANGUL CHOSEONG SIOS-MIEUM
-1132;ID;HANGUL CHOSEONG SIOS-PIEUP
-1133;ID;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
-1134;ID;HANGUL CHOSEONG SIOS-SSANGSIOS
-1135;ID;HANGUL CHOSEONG SIOS-IEUNG
-1136;ID;HANGUL CHOSEONG SIOS-CIEUC
-1137;ID;HANGUL CHOSEONG SIOS-CHIEUCH
-1138;ID;HANGUL CHOSEONG SIOS-KHIEUKH
-1139;ID;HANGUL CHOSEONG SIOS-THIEUTH
-113A;ID;HANGUL CHOSEONG SIOS-PHIEUPH
-113B;ID;HANGUL CHOSEONG SIOS-HIEUH
-113C;ID;HANGUL CHOSEONG CHITUEUMSIOS
-113D;ID;HANGUL CHOSEONG CHITUEUMSSANGSIOS
-113E;ID;HANGUL CHOSEONG CEONGCHIEUMSIOS
-113F;ID;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
-1140;ID;HANGUL CHOSEONG PANSIOS
-1141;ID;HANGUL CHOSEONG IEUNG-KIYEOK
-1142;ID;HANGUL CHOSEONG IEUNG-TIKEUT
-1143;ID;HANGUL CHOSEONG IEUNG-MIEUM
-1144;ID;HANGUL CHOSEONG IEUNG-PIEUP
-1145;ID;HANGUL CHOSEONG IEUNG-SIOS
-1146;ID;HANGUL CHOSEONG IEUNG-PANSIOS
-1147;ID;HANGUL CHOSEONG SSANGIEUNG
-1148;ID;HANGUL CHOSEONG IEUNG-CIEUC
-1149;ID;HANGUL CHOSEONG IEUNG-CHIEUCH
-114A;ID;HANGUL CHOSEONG IEUNG-THIEUTH
-114B;ID;HANGUL CHOSEONG IEUNG-PHIEUPH
-114C;ID;HANGUL CHOSEONG YESIEUNG
-114D;ID;HANGUL CHOSEONG CIEUC-IEUNG
-114E;ID;HANGUL CHOSEONG CHITUEUMCIEUC
-114F;ID;HANGUL CHOSEONG CHITUEUMSSANGCIEUC
-1150;ID;HANGUL CHOSEONG CEONGCHIEUMCIEUC
-1151;ID;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
-1152;ID;HANGUL CHOSEONG CHIEUCH-KHIEUKH
-1153;ID;HANGUL CHOSEONG CHIEUCH-HIEUH
-1154;ID;HANGUL CHOSEONG CHITUEUMCHIEUCH
-1155;ID;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
-1156;ID;HANGUL CHOSEONG PHIEUPH-PIEUP
-1157;ID;HANGUL CHOSEONG KAPYEOUNPHIEUPH
-1158;ID;HANGUL CHOSEONG SSANGHIEUH
-1159;ID;HANGUL CHOSEONG YEORINHIEUH
-115F;ID;HANGUL CHOSEONG FILLER
-1160;CM;HANGUL JUNGSEONG FILLER
-1161;CM;HANGUL JUNGSEONG A
-1162;CM;HANGUL JUNGSEONG AE
-1163;CM;HANGUL JUNGSEONG YA
-1164;CM;HANGUL JUNGSEONG YAE
-1165;CM;HANGUL JUNGSEONG EO
-1166;CM;HANGUL JUNGSEONG E
-1167;CM;HANGUL JUNGSEONG YEO
-1168;CM;HANGUL JUNGSEONG YE
-1169;CM;HANGUL JUNGSEONG O
-116A;CM;HANGUL JUNGSEONG WA
-116B;CM;HANGUL JUNGSEONG WAE
-116C;CM;HANGUL JUNGSEONG OE
-116D;CM;HANGUL JUNGSEONG YO
-116E;CM;HANGUL JUNGSEONG U
-116F;CM;HANGUL JUNGSEONG WEO
-1170;CM;HANGUL JUNGSEONG WE
-1171;CM;HANGUL JUNGSEONG WI
-1172;CM;HANGUL JUNGSEONG YU
-1173;CM;HANGUL JUNGSEONG EU
-1174;CM;HANGUL JUNGSEONG YI
-1175;CM;HANGUL JUNGSEONG I
-1176;CM;HANGUL JUNGSEONG A-O
-1177;CM;HANGUL JUNGSEONG A-U
-1178;CM;HANGUL JUNGSEONG YA-O
-1179;CM;HANGUL JUNGSEONG YA-YO
-117A;CM;HANGUL JUNGSEONG EO-O
-117B;CM;HANGUL JUNGSEONG EO-U
-117C;CM;HANGUL JUNGSEONG EO-EU
-117D;CM;HANGUL JUNGSEONG YEO-O
-117E;CM;HANGUL JUNGSEONG YEO-U
-117F;CM;HANGUL JUNGSEONG O-EO
-1180;CM;HANGUL JUNGSEONG O-E
-1181;CM;HANGUL JUNGSEONG O-YE
-1182;CM;HANGUL JUNGSEONG O-O
-1183;CM;HANGUL JUNGSEONG O-U
-1184;CM;HANGUL JUNGSEONG YO-YA
-1185;CM;HANGUL JUNGSEONG YO-YAE
-1186;CM;HANGUL JUNGSEONG YO-YEO
-1187;CM;HANGUL JUNGSEONG YO-O
-1188;CM;HANGUL JUNGSEONG YO-I
-1189;CM;HANGUL JUNGSEONG U-A
-118A;CM;HANGUL JUNGSEONG U-AE
-118B;CM;HANGUL JUNGSEONG U-EO-EU
-118C;CM;HANGUL JUNGSEONG U-YE
-118D;CM;HANGUL JUNGSEONG U-U
-118E;CM;HANGUL JUNGSEONG YU-A
-118F;CM;HANGUL JUNGSEONG YU-EO
-1190;CM;HANGUL JUNGSEONG YU-E
-1191;CM;HANGUL JUNGSEONG YU-YEO
-1192;CM;HANGUL JUNGSEONG YU-YE
-1193;CM;HANGUL JUNGSEONG YU-U
-1194;CM;HANGUL JUNGSEONG YU-I
-1195;CM;HANGUL JUNGSEONG EU-U
-1196;CM;HANGUL JUNGSEONG EU-EU
-1197;CM;HANGUL JUNGSEONG YI-U
-1198;CM;HANGUL JUNGSEONG I-A
-1199;CM;HANGUL JUNGSEONG I-YA
-119A;CM;HANGUL JUNGSEONG I-O
-119B;CM;HANGUL JUNGSEONG I-U
-119C;CM;HANGUL JUNGSEONG I-EU
-119D;CM;HANGUL JUNGSEONG I-ARAEA
-119E;CM;HANGUL JUNGSEONG ARAEA
-119F;CM;HANGUL JUNGSEONG ARAEA-EO
-11A0;CM;HANGUL JUNGSEONG ARAEA-U
-11A1;CM;HANGUL JUNGSEONG ARAEA-I
-11A2;CM;HANGUL JUNGSEONG SSANGARAEA
-11A8;CM;HANGUL JONGSEONG KIYEOK
-11A9;CM;HANGUL JONGSEONG SSANGKIYEOK
-11AA;CM;HANGUL JONGSEONG KIYEOK-SIOS
-11AB;CM;HANGUL JONGSEONG NIEUN
-11AC;CM;HANGUL JONGSEONG NIEUN-CIEUC
-11AD;CM;HANGUL JONGSEONG NIEUN-HIEUH
-11AE;CM;HANGUL JONGSEONG TIKEUT
-11AF;CM;HANGUL JONGSEONG RIEUL
-11B0;CM;HANGUL JONGSEONG RIEUL-KIYEOK
-11B1;CM;HANGUL JONGSEONG RIEUL-MIEUM
-11B2;CM;HANGUL JONGSEONG RIEUL-PIEUP
-11B3;CM;HANGUL JONGSEONG RIEUL-SIOS
-11B4;CM;HANGUL JONGSEONG RIEUL-THIEUTH
-11B5;CM;HANGUL JONGSEONG RIEUL-PHIEUPH
-11B6;CM;HANGUL JONGSEONG RIEUL-HIEUH
-11B7;CM;HANGUL JONGSEONG MIEUM
-11B8;CM;HANGUL JONGSEONG PIEUP
-11B9;CM;HANGUL JONGSEONG PIEUP-SIOS
-11BA;CM;HANGUL JONGSEONG SIOS
-11BB;CM;HANGUL JONGSEONG SSANGSIOS
-11BC;CM;HANGUL JONGSEONG IEUNG
-11BD;CM;HANGUL JONGSEONG CIEUC
-11BE;CM;HANGUL JONGSEONG CHIEUCH
-11BF;CM;HANGUL JONGSEONG KHIEUKH
-11C0;CM;HANGUL JONGSEONG THIEUTH
-11C1;CM;HANGUL JONGSEONG PHIEUPH
-11C2;CM;HANGUL JONGSEONG HIEUH
-11C3;CM;HANGUL JONGSEONG KIYEOK-RIEUL
-11C4;CM;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
-11C5;CM;HANGUL JONGSEONG NIEUN-KIYEOK
-11C6;CM;HANGUL JONGSEONG NIEUN-TIKEUT
-11C7;CM;HANGUL JONGSEONG NIEUN-SIOS
-11C8;CM;HANGUL JONGSEONG NIEUN-PANSIOS
-11C9;CM;HANGUL JONGSEONG NIEUN-THIEUTH
-11CA;CM;HANGUL JONGSEONG TIKEUT-KIYEOK
-11CB;CM;HANGUL JONGSEONG TIKEUT-RIEUL
-11CC;CM;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
-11CD;CM;HANGUL JONGSEONG RIEUL-NIEUN
-11CE;CM;HANGUL JONGSEONG RIEUL-TIKEUT
-11CF;CM;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
-11D0;CM;HANGUL JONGSEONG SSANGRIEUL
-11D1;CM;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
-11D2;CM;HANGUL JONGSEONG RIEUL-MIEUM-SIOS
-11D3;CM;HANGUL JONGSEONG RIEUL-PIEUP-SIOS
-11D4;CM;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
-11D5;CM;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
-11D6;CM;HANGUL JONGSEONG RIEUL-SSANGSIOS
-11D7;CM;HANGUL JONGSEONG RIEUL-PANSIOS
-11D8;CM;HANGUL JONGSEONG RIEUL-KHIEUKH
-11D9;CM;HANGUL JONGSEONG RIEUL-YEORINHIEUH
-11DA;CM;HANGUL JONGSEONG MIEUM-KIYEOK
-11DB;CM;HANGUL JONGSEONG MIEUM-RIEUL
-11DC;CM;HANGUL JONGSEONG MIEUM-PIEUP
-11DD;CM;HANGUL JONGSEONG MIEUM-SIOS
-11DE;CM;HANGUL JONGSEONG MIEUM-SSANGSIOS
-11DF;CM;HANGUL JONGSEONG MIEUM-PANSIOS
-11E0;CM;HANGUL JONGSEONG MIEUM-CHIEUCH
-11E1;CM;HANGUL JONGSEONG MIEUM-HIEUH
-11E2;CM;HANGUL JONGSEONG KAPYEOUNMIEUM
-11E3;CM;HANGUL JONGSEONG PIEUP-RIEUL
-11E4;CM;HANGUL JONGSEONG PIEUP-PHIEUPH
-11E5;CM;HANGUL JONGSEONG PIEUP-HIEUH
-11E6;CM;HANGUL JONGSEONG KAPYEOUNPIEUP
-11E7;CM;HANGUL JONGSEONG SIOS-KIYEOK
-11E8;CM;HANGUL JONGSEONG SIOS-TIKEUT
-11E9;CM;HANGUL JONGSEONG SIOS-RIEUL
-11EA;CM;HANGUL JONGSEONG SIOS-PIEUP
-11EB;CM;HANGUL JONGSEONG PANSIOS
-11EC;CM;HANGUL JONGSEONG IEUNG-KIYEOK
-11ED;CM;HANGUL JONGSEONG IEUNG-SSANGKIYEOK
-11EE;CM;HANGUL JONGSEONG SSANGIEUNG
-11EF;CM;HANGUL JONGSEONG IEUNG-KHIEUKH
-11F0;CM;HANGUL JONGSEONG YESIEUNG
-11F1;CM;HANGUL JONGSEONG YESIEUNG-SIOS
-11F2;CM;HANGUL JONGSEONG YESIEUNG-PANSIOS
-11F3;CM;HANGUL JONGSEONG PHIEUPH-PIEUP
-11F4;CM;HANGUL JONGSEONG KAPYEOUNPHIEUPH
-11F5;CM;HANGUL JONGSEONG HIEUH-NIEUN
-11F6;CM;HANGUL JONGSEONG HIEUH-RIEUL
-11F7;CM;HANGUL JONGSEONG HIEUH-MIEUM
-11F8;CM;HANGUL JONGSEONG HIEUH-PIEUP
-11F9;CM;HANGUL JONGSEONG YEORINHIEUH
-1200;AL;ETHIOPIC SYLLABLE HA
-1201;AL;ETHIOPIC SYLLABLE HU
-1202;AL;ETHIOPIC SYLLABLE HI
-1203;AL;ETHIOPIC SYLLABLE HAA
-1204;AL;ETHIOPIC SYLLABLE HEE
-1205;AL;ETHIOPIC SYLLABLE HE
-1206;AL;ETHIOPIC SYLLABLE HO
-1208;AL;ETHIOPIC SYLLABLE LA
-1209;AL;ETHIOPIC SYLLABLE LU
-120A;AL;ETHIOPIC SYLLABLE LI
-120B;AL;ETHIOPIC SYLLABLE LAA
-120C;AL;ETHIOPIC SYLLABLE LEE
-120D;AL;ETHIOPIC SYLLABLE LE
-120E;AL;ETHIOPIC SYLLABLE LO
-120F;AL;ETHIOPIC SYLLABLE LWA
-1210;AL;ETHIOPIC SYLLABLE HHA
-1211;AL;ETHIOPIC SYLLABLE HHU
-1212;AL;ETHIOPIC SYLLABLE HHI
-1213;AL;ETHIOPIC SYLLABLE HHAA
-1214;AL;ETHIOPIC SYLLABLE HHEE
-1215;AL;ETHIOPIC SYLLABLE HHE
-1216;AL;ETHIOPIC SYLLABLE HHO
-1217;AL;ETHIOPIC SYLLABLE HHWA
-1218;AL;ETHIOPIC SYLLABLE MA
-1219;AL;ETHIOPIC SYLLABLE MU
-121A;AL;ETHIOPIC SYLLABLE MI
-121B;AL;ETHIOPIC SYLLABLE MAA
-121C;AL;ETHIOPIC SYLLABLE MEE
-121D;AL;ETHIOPIC SYLLABLE ME
-121E;AL;ETHIOPIC SYLLABLE MO
-121F;AL;ETHIOPIC SYLLABLE MWA
-1220;AL;ETHIOPIC SYLLABLE SZA
-1221;AL;ETHIOPIC SYLLABLE SZU
-1222;AL;ETHIOPIC SYLLABLE SZI
-1223;AL;ETHIOPIC SYLLABLE SZAA
-1224;AL;ETHIOPIC SYLLABLE SZEE
-1225;AL;ETHIOPIC SYLLABLE SZE
-1226;AL;ETHIOPIC SYLLABLE SZO
-1227;AL;ETHIOPIC SYLLABLE SZWA
-1228;AL;ETHIOPIC SYLLABLE RA
-1229;AL;ETHIOPIC SYLLABLE RU
-122A;AL;ETHIOPIC SYLLABLE RI
-122B;AL;ETHIOPIC SYLLABLE RAA
-122C;AL;ETHIOPIC SYLLABLE REE
-122D;AL;ETHIOPIC SYLLABLE RE
-122E;AL;ETHIOPIC SYLLABLE RO
-122F;AL;ETHIOPIC SYLLABLE RWA
-1230;AL;ETHIOPIC SYLLABLE SA
-1231;AL;ETHIOPIC SYLLABLE SU
-1232;AL;ETHIOPIC SYLLABLE SI
-1233;AL;ETHIOPIC SYLLABLE SAA
-1234;AL;ETHIOPIC SYLLABLE SEE
-1235;AL;ETHIOPIC SYLLABLE SE
-1236;AL;ETHIOPIC SYLLABLE SO
-1237;AL;ETHIOPIC SYLLABLE SWA
-1238;AL;ETHIOPIC SYLLABLE SHA
-1239;AL;ETHIOPIC SYLLABLE SHU
-123A;AL;ETHIOPIC SYLLABLE SHI
-123B;AL;ETHIOPIC SYLLABLE SHAA
-123C;AL;ETHIOPIC SYLLABLE SHEE
-123D;AL;ETHIOPIC SYLLABLE SHE
-123E;AL;ETHIOPIC SYLLABLE SHO
-123F;AL;ETHIOPIC SYLLABLE SHWA
-1240;AL;ETHIOPIC SYLLABLE QA
-1241;AL;ETHIOPIC SYLLABLE QU
-1242;AL;ETHIOPIC SYLLABLE QI
-1243;AL;ETHIOPIC SYLLABLE QAA
-1244;AL;ETHIOPIC SYLLABLE QEE
-1245;AL;ETHIOPIC SYLLABLE QE
-1246;AL;ETHIOPIC SYLLABLE QO
-1248;AL;ETHIOPIC SYLLABLE QWA
-124A;AL;ETHIOPIC SYLLABLE QWI
-124B;AL;ETHIOPIC SYLLABLE QWAA
-124C;AL;ETHIOPIC SYLLABLE QWEE
-124D;AL;ETHIOPIC SYLLABLE QWE
-1250;AL;ETHIOPIC SYLLABLE QHA
-1251;AL;ETHIOPIC SYLLABLE QHU
-1252;AL;ETHIOPIC SYLLABLE QHI
-1253;AL;ETHIOPIC SYLLABLE QHAA
-1254;AL;ETHIOPIC SYLLABLE QHEE
-1255;AL;ETHIOPIC SYLLABLE QHE
-1256;AL;ETHIOPIC SYLLABLE QHO
-1258;AL;ETHIOPIC SYLLABLE QHWA
-125A;AL;ETHIOPIC SYLLABLE QHWI
-125B;AL;ETHIOPIC SYLLABLE QHWAA
-125C;AL;ETHIOPIC SYLLABLE QHWEE
-125D;AL;ETHIOPIC SYLLABLE QHWE
-1260;AL;ETHIOPIC SYLLABLE BA
-1261;AL;ETHIOPIC SYLLABLE BU
-1262;AL;ETHIOPIC SYLLABLE BI
-1263;AL;ETHIOPIC SYLLABLE BAA
-1264;AL;ETHIOPIC SYLLABLE BEE
-1265;AL;ETHIOPIC SYLLABLE BE
-1266;AL;ETHIOPIC SYLLABLE BO
-1267;AL;ETHIOPIC SYLLABLE BWA
-1268;AL;ETHIOPIC SYLLABLE VA
-1269;AL;ETHIOPIC SYLLABLE VU
-126A;AL;ETHIOPIC SYLLABLE VI
-126B;AL;ETHIOPIC SYLLABLE VAA
-126C;AL;ETHIOPIC SYLLABLE VEE
-126D;AL;ETHIOPIC SYLLABLE VE
-126E;AL;ETHIOPIC SYLLABLE VO
-126F;AL;ETHIOPIC SYLLABLE VWA
-1270;AL;ETHIOPIC SYLLABLE TA
-1271;AL;ETHIOPIC SYLLABLE TU
-1272;AL;ETHIOPIC SYLLABLE TI
-1273;AL;ETHIOPIC SYLLABLE TAA
-1274;AL;ETHIOPIC SYLLABLE TEE
-1275;AL;ETHIOPIC SYLLABLE TE
-1276;AL;ETHIOPIC SYLLABLE TO
-1277;AL;ETHIOPIC SYLLABLE TWA
-1278;AL;ETHIOPIC SYLLABLE CA
-1279;AL;ETHIOPIC SYLLABLE CU
-127A;AL;ETHIOPIC SYLLABLE CI
-127B;AL;ETHIOPIC SYLLABLE CAA
-127C;AL;ETHIOPIC SYLLABLE CEE
-127D;AL;ETHIOPIC SYLLABLE CE
-127E;AL;ETHIOPIC SYLLABLE CO
-127F;AL;ETHIOPIC SYLLABLE CWA
-1280;AL;ETHIOPIC SYLLABLE XA
-1281;AL;ETHIOPIC SYLLABLE XU
-1282;AL;ETHIOPIC SYLLABLE XI
-1283;AL;ETHIOPIC SYLLABLE XAA
-1284;AL;ETHIOPIC SYLLABLE XEE
-1285;AL;ETHIOPIC SYLLABLE XE
-1286;AL;ETHIOPIC SYLLABLE XO
-1288;AL;ETHIOPIC SYLLABLE XWA
-128A;AL;ETHIOPIC SYLLABLE XWI
-128B;AL;ETHIOPIC SYLLABLE XWAA
-128C;AL;ETHIOPIC SYLLABLE XWEE
-128D;AL;ETHIOPIC SYLLABLE XWE
-1290;AL;ETHIOPIC SYLLABLE NA
-1291;AL;ETHIOPIC SYLLABLE NU
-1292;AL;ETHIOPIC SYLLABLE NI
-1293;AL;ETHIOPIC SYLLABLE NAA
-1294;AL;ETHIOPIC SYLLABLE NEE
-1295;AL;ETHIOPIC SYLLABLE NE
-1296;AL;ETHIOPIC SYLLABLE NO
-1297;AL;ETHIOPIC SYLLABLE NWA
-1298;AL;ETHIOPIC SYLLABLE NYA
-1299;AL;ETHIOPIC SYLLABLE NYU
-129A;AL;ETHIOPIC SYLLABLE NYI
-129B;AL;ETHIOPIC SYLLABLE NYAA
-129C;AL;ETHIOPIC SYLLABLE NYEE
-129D;AL;ETHIOPIC SYLLABLE NYE
-129E;AL;ETHIOPIC SYLLABLE NYO
-129F;AL;ETHIOPIC SYLLABLE NYWA
-12A0;AL;ETHIOPIC SYLLABLE GLOTTAL A
-12A1;AL;ETHIOPIC SYLLABLE GLOTTAL U
-12A2;AL;ETHIOPIC SYLLABLE GLOTTAL I
-12A3;AL;ETHIOPIC SYLLABLE GLOTTAL AA
-12A4;AL;ETHIOPIC SYLLABLE GLOTTAL EE
-12A5;AL;ETHIOPIC SYLLABLE GLOTTAL E
-12A6;AL;ETHIOPIC SYLLABLE GLOTTAL O
-12A7;AL;ETHIOPIC SYLLABLE GLOTTAL WA
-12A8;AL;ETHIOPIC SYLLABLE KA
-12A9;AL;ETHIOPIC SYLLABLE KU
-12AA;AL;ETHIOPIC SYLLABLE KI
-12AB;AL;ETHIOPIC SYLLABLE KAA
-12AC;AL;ETHIOPIC SYLLABLE KEE
-12AD;AL;ETHIOPIC SYLLABLE KE
-12AE;AL;ETHIOPIC SYLLABLE KO
-12B0;AL;ETHIOPIC SYLLABLE KWA
-12B2;AL;ETHIOPIC SYLLABLE KWI
-12B3;AL;ETHIOPIC SYLLABLE KWAA
-12B4;AL;ETHIOPIC SYLLABLE KWEE
-12B5;AL;ETHIOPIC SYLLABLE KWE
-12B8;AL;ETHIOPIC SYLLABLE KXA
-12B9;AL;ETHIOPIC SYLLABLE KXU
-12BA;AL;ETHIOPIC SYLLABLE KXI
-12BB;AL;ETHIOPIC SYLLABLE KXAA
-12BC;AL;ETHIOPIC SYLLABLE KXEE
-12BD;AL;ETHIOPIC SYLLABLE KXE
-12BE;AL;ETHIOPIC SYLLABLE KXO
-12C0;AL;ETHIOPIC SYLLABLE KXWA
-12C2;AL;ETHIOPIC SYLLABLE KXWI
-12C3;AL;ETHIOPIC SYLLABLE KXWAA
-12C4;AL;ETHIOPIC SYLLABLE KXWEE
-12C5;AL;ETHIOPIC SYLLABLE KXWE
-12C8;AL;ETHIOPIC SYLLABLE WA
-12C9;AL;ETHIOPIC SYLLABLE WU
-12CA;AL;ETHIOPIC SYLLABLE WI
-12CB;AL;ETHIOPIC SYLLABLE WAA
-12CC;AL;ETHIOPIC SYLLABLE WEE
-12CD;AL;ETHIOPIC SYLLABLE WE
-12CE;AL;ETHIOPIC SYLLABLE WO
-12D0;AL;ETHIOPIC SYLLABLE PHARYNGEAL A
-12D1;AL;ETHIOPIC SYLLABLE PHARYNGEAL U
-12D2;AL;ETHIOPIC SYLLABLE PHARYNGEAL I
-12D3;AL;ETHIOPIC SYLLABLE PHARYNGEAL AA
-12D4;AL;ETHIOPIC SYLLABLE PHARYNGEAL EE
-12D5;AL;ETHIOPIC SYLLABLE PHARYNGEAL E
-12D6;AL;ETHIOPIC SYLLABLE PHARYNGEAL O
-12D8;AL;ETHIOPIC SYLLABLE ZA
-12D9;AL;ETHIOPIC SYLLABLE ZU
-12DA;AL;ETHIOPIC SYLLABLE ZI
-12DB;AL;ETHIOPIC SYLLABLE ZAA
-12DC;AL;ETHIOPIC SYLLABLE ZEE
-12DD;AL;ETHIOPIC SYLLABLE ZE
-12DE;AL;ETHIOPIC SYLLABLE ZO
-12DF;AL;ETHIOPIC SYLLABLE ZWA
-12E0;AL;ETHIOPIC SYLLABLE ZHA
-12E1;AL;ETHIOPIC SYLLABLE ZHU
-12E2;AL;ETHIOPIC SYLLABLE ZHI
-12E3;AL;ETHIOPIC SYLLABLE ZHAA
-12E4;AL;ETHIOPIC SYLLABLE ZHEE
-12E5;AL;ETHIOPIC SYLLABLE ZHE
-12E6;AL;ETHIOPIC SYLLABLE ZHO
-12E7;AL;ETHIOPIC SYLLABLE ZHWA
-12E8;AL;ETHIOPIC SYLLABLE YA
-12E9;AL;ETHIOPIC SYLLABLE YU
-12EA;AL;ETHIOPIC SYLLABLE YI
-12EB;AL;ETHIOPIC SYLLABLE YAA
-12EC;AL;ETHIOPIC SYLLABLE YEE
-12ED;AL;ETHIOPIC SYLLABLE YE
-12EE;AL;ETHIOPIC SYLLABLE YO
-12F0;AL;ETHIOPIC SYLLABLE DA
-12F1;AL;ETHIOPIC SYLLABLE DU
-12F2;AL;ETHIOPIC SYLLABLE DI
-12F3;AL;ETHIOPIC SYLLABLE DAA
-12F4;AL;ETHIOPIC SYLLABLE DEE
-12F5;AL;ETHIOPIC SYLLABLE DE
-12F6;AL;ETHIOPIC SYLLABLE DO
-12F7;AL;ETHIOPIC SYLLABLE DWA
-12F8;AL;ETHIOPIC SYLLABLE DDA
-12F9;AL;ETHIOPIC SYLLABLE DDU
-12FA;AL;ETHIOPIC SYLLABLE DDI
-12FB;AL;ETHIOPIC SYLLABLE DDAA
-12FC;AL;ETHIOPIC SYLLABLE DDEE
-12FD;AL;ETHIOPIC SYLLABLE DDE
-12FE;AL;ETHIOPIC SYLLABLE DDO
-12FF;AL;ETHIOPIC SYLLABLE DDWA
-1300;AL;ETHIOPIC SYLLABLE JA
-1301;AL;ETHIOPIC SYLLABLE JU
-1302;AL;ETHIOPIC SYLLABLE JI
-1303;AL;ETHIOPIC SYLLABLE JAA
-1304;AL;ETHIOPIC SYLLABLE JEE
-1305;AL;ETHIOPIC SYLLABLE JE
-1306;AL;ETHIOPIC SYLLABLE JO
-1307;AL;ETHIOPIC SYLLABLE JWA
-1308;AL;ETHIOPIC SYLLABLE GA
-1309;AL;ETHIOPIC SYLLABLE GU
-130A;AL;ETHIOPIC SYLLABLE GI
-130B;AL;ETHIOPIC SYLLABLE GAA
-130C;AL;ETHIOPIC SYLLABLE GEE
-130D;AL;ETHIOPIC SYLLABLE GE
-130E;AL;ETHIOPIC SYLLABLE GO
-1310;AL;ETHIOPIC SYLLABLE GWA
-1312;AL;ETHIOPIC SYLLABLE GWI
-1313;AL;ETHIOPIC SYLLABLE GWAA
-1314;AL;ETHIOPIC SYLLABLE GWEE
-1315;AL;ETHIOPIC SYLLABLE GWE
-1318;AL;ETHIOPIC SYLLABLE GGA
-1319;AL;ETHIOPIC SYLLABLE GGU
-131A;AL;ETHIOPIC SYLLABLE GGI
-131B;AL;ETHIOPIC SYLLABLE GGAA
-131C;AL;ETHIOPIC SYLLABLE GGEE
-131D;AL;ETHIOPIC SYLLABLE GGE
-131E;AL;ETHIOPIC SYLLABLE GGO
-1320;AL;ETHIOPIC SYLLABLE THA
-1321;AL;ETHIOPIC SYLLABLE THU
-1322;AL;ETHIOPIC SYLLABLE THI
-1323;AL;ETHIOPIC SYLLABLE THAA
-1324;AL;ETHIOPIC SYLLABLE THEE
-1325;AL;ETHIOPIC SYLLABLE THE
-1326;AL;ETHIOPIC SYLLABLE THO
-1327;AL;ETHIOPIC SYLLABLE THWA
-1328;AL;ETHIOPIC SYLLABLE CHA
-1329;AL;ETHIOPIC SYLLABLE CHU
-132A;AL;ETHIOPIC SYLLABLE CHI
-132B;AL;ETHIOPIC SYLLABLE CHAA
-132C;AL;ETHIOPIC SYLLABLE CHEE
-132D;AL;ETHIOPIC SYLLABLE CHE
-132E;AL;ETHIOPIC SYLLABLE CHO
-132F;AL;ETHIOPIC SYLLABLE CHWA
-1330;AL;ETHIOPIC SYLLABLE PHA
-1331;AL;ETHIOPIC SYLLABLE PHU
-1332;AL;ETHIOPIC SYLLABLE PHI
-1333;AL;ETHIOPIC SYLLABLE PHAA
-1334;AL;ETHIOPIC SYLLABLE PHEE
-1335;AL;ETHIOPIC SYLLABLE PHE
-1336;AL;ETHIOPIC SYLLABLE PHO
-1337;AL;ETHIOPIC SYLLABLE PHWA
-1338;AL;ETHIOPIC SYLLABLE TSA
-1339;AL;ETHIOPIC SYLLABLE TSU
-133A;AL;ETHIOPIC SYLLABLE TSI
-133B;AL;ETHIOPIC SYLLABLE TSAA
-133C;AL;ETHIOPIC SYLLABLE TSEE
-133D;AL;ETHIOPIC SYLLABLE TSE
-133E;AL;ETHIOPIC SYLLABLE TSO
-133F;AL;ETHIOPIC SYLLABLE TSWA
-1340;AL;ETHIOPIC SYLLABLE TZA
-1341;AL;ETHIOPIC SYLLABLE TZU
-1342;AL;ETHIOPIC SYLLABLE TZI
-1343;AL;ETHIOPIC SYLLABLE TZAA
-1344;AL;ETHIOPIC SYLLABLE TZEE
-1345;AL;ETHIOPIC SYLLABLE TZE
-1346;AL;ETHIOPIC SYLLABLE TZO
-1348;AL;ETHIOPIC SYLLABLE FA
-1349;AL;ETHIOPIC SYLLABLE FU
-134A;AL;ETHIOPIC SYLLABLE FI
-134B;AL;ETHIOPIC SYLLABLE FAA
-134C;AL;ETHIOPIC SYLLABLE FEE
-134D;AL;ETHIOPIC SYLLABLE FE
-134E;AL;ETHIOPIC SYLLABLE FO
-134F;AL;ETHIOPIC SYLLABLE FWA
-1350;AL;ETHIOPIC SYLLABLE PA
-1351;AL;ETHIOPIC SYLLABLE PU
-1352;AL;ETHIOPIC SYLLABLE PI
-1353;AL;ETHIOPIC SYLLABLE PAA
-1354;AL;ETHIOPIC SYLLABLE PEE
-1355;AL;ETHIOPIC SYLLABLE PE
-1356;AL;ETHIOPIC SYLLABLE PO
-1357;AL;ETHIOPIC SYLLABLE PWA
-1358;AL;ETHIOPIC SYLLABLE RYA
-1359;AL;ETHIOPIC SYLLABLE MYA
-135A;AL;ETHIOPIC SYLLABLE FYA
-1361;BA;ETHIOPIC WORDSPACE
-1362;AL;ETHIOPIC FULL STOP
-1363;AL;ETHIOPIC COMMA
-1364;AL;ETHIOPIC SEMICOLON
-1365;AL;ETHIOPIC COLON
-1366;AL;ETHIOPIC PREFACE COLON
-1367;AL;ETHIOPIC QUESTION MARK
-1368;AL;ETHIOPIC PARAGRAPH SEPARATOR
-1369;NU;ETHIOPIC DIGIT ONE
-136A;NU;ETHIOPIC DIGIT TWO
-136B;NU;ETHIOPIC DIGIT THREE
-136C;NU;ETHIOPIC DIGIT FOUR
-136D;NU;ETHIOPIC DIGIT FIVE
-136E;NU;ETHIOPIC DIGIT SIX
-136F;NU;ETHIOPIC DIGIT SEVEN
-1370;NU;ETHIOPIC DIGIT EIGHT
-1371;NU;ETHIOPIC DIGIT NINE
-1372;AL;ETHIOPIC NUMBER TEN
-1373;AL;ETHIOPIC NUMBER TWENTY
-1374;AL;ETHIOPIC NUMBER THIRTY
-1375;AL;ETHIOPIC NUMBER FORTY
-1376;AL;ETHIOPIC NUMBER FIFTY
-1377;AL;ETHIOPIC NUMBER SIXTY
-1378;AL;ETHIOPIC NUMBER SEVENTY
-1379;AL;ETHIOPIC NUMBER EIGHTY
-137A;AL;ETHIOPIC NUMBER NINETY
-137B;AL;ETHIOPIC NUMBER HUNDRED
-137C;AL;ETHIOPIC NUMBER TEN THOUSAND
-13A0;AL;CHEROKEE LETTER A
-13A1;AL;CHEROKEE LETTER E
-13A2;AL;CHEROKEE LETTER I
-13A3;AL;CHEROKEE LETTER O
-13A4;AL;CHEROKEE LETTER U
-13A5;AL;CHEROKEE LETTER V
-13A6;AL;CHEROKEE LETTER GA
-13A7;AL;CHEROKEE LETTER KA
-13A8;AL;CHEROKEE LETTER GE
-13A9;AL;CHEROKEE LETTER GI
-13AA;AL;CHEROKEE LETTER GO
-13AB;AL;CHEROKEE LETTER GU
-13AC;AL;CHEROKEE LETTER GV
-13AD;AL;CHEROKEE LETTER HA
-13AE;AL;CHEROKEE LETTER HE
-13AF;AL;CHEROKEE LETTER HI
-13B0;AL;CHEROKEE LETTER HO
-13B1;AL;CHEROKEE LETTER HU
-13B2;AL;CHEROKEE LETTER HV
-13B3;AL;CHEROKEE LETTER LA
-13B4;AL;CHEROKEE LETTER LE
-13B5;AL;CHEROKEE LETTER LI
-13B6;AL;CHEROKEE LETTER LO
-13B7;AL;CHEROKEE LETTER LU
-13B8;AL;CHEROKEE LETTER LV
-13B9;AL;CHEROKEE LETTER MA
-13BA;AL;CHEROKEE LETTER ME
-13BB;AL;CHEROKEE LETTER MI
-13BC;AL;CHEROKEE LETTER MO
-13BD;AL;CHEROKEE LETTER MU
-13BE;AL;CHEROKEE LETTER NA
-13BF;AL;CHEROKEE LETTER HNA
-13C0;AL;CHEROKEE LETTER NAH
-13C1;AL;CHEROKEE LETTER NE
-13C2;AL;CHEROKEE LETTER NI
-13C3;AL;CHEROKEE LETTER NO
-13C4;AL;CHEROKEE LETTER NU
-13C5;AL;CHEROKEE LETTER NV
-13C6;AL;CHEROKEE LETTER QUA
-13C7;AL;CHEROKEE LETTER QUE
-13C8;AL;CHEROKEE LETTER QUI
-13C9;AL;CHEROKEE LETTER QUO
-13CA;AL;CHEROKEE LETTER QUU
-13CB;AL;CHEROKEE LETTER QUV
-13CC;AL;CHEROKEE LETTER SA
-13CD;AL;CHEROKEE LETTER S
-13CE;AL;CHEROKEE LETTER SE
-13CF;AL;CHEROKEE LETTER SI
-13D0;AL;CHEROKEE LETTER SO
-13D1;AL;CHEROKEE LETTER SU
-13D2;AL;CHEROKEE LETTER SV
-13D3;AL;CHEROKEE LETTER DA
-13D4;AL;CHEROKEE LETTER TA
-13D5;AL;CHEROKEE LETTER DE
-13D6;AL;CHEROKEE LETTER TE
-13D7;AL;CHEROKEE LETTER DI
-13D8;AL;CHEROKEE LETTER TI
-13D9;AL;CHEROKEE LETTER DO
-13DA;AL;CHEROKEE LETTER DU
-13DB;AL;CHEROKEE LETTER DV
-13DC;AL;CHEROKEE LETTER DLA
-13DD;AL;CHEROKEE LETTER TLA
-13DE;AL;CHEROKEE LETTER TLE
-13DF;AL;CHEROKEE LETTER TLI
-13E0;AL;CHEROKEE LETTER TLO
-13E1;AL;CHEROKEE LETTER TLU
-13E2;AL;CHEROKEE LETTER TLV
-13E3;AL;CHEROKEE LETTER TSA
-13E4;AL;CHEROKEE LETTER TSE
-13E5;AL;CHEROKEE LETTER TSI
-13E6;AL;CHEROKEE LETTER TSO
-13E7;AL;CHEROKEE LETTER TSU
-13E8;AL;CHEROKEE LETTER TSV
-13E9;AL;CHEROKEE LETTER WA
-13EA;AL;CHEROKEE LETTER WE
-13EB;AL;CHEROKEE LETTER WI
-13EC;AL;CHEROKEE LETTER WO
-13ED;AL;CHEROKEE LETTER WU
-13EE;AL;CHEROKEE LETTER WV
-13EF;AL;CHEROKEE LETTER YA
-13F0;AL;CHEROKEE LETTER YE
-13F1;AL;CHEROKEE LETTER YI
-13F2;AL;CHEROKEE LETTER YO
-13F3;AL;CHEROKEE LETTER YU
-13F4;AL;CHEROKEE LETTER YV
-1401;AL;CANADIAN SYLLABICS E
-1402;AL;CANADIAN SYLLABICS AAI
-1403;AL;CANADIAN SYLLABICS I
-1404;AL;CANADIAN SYLLABICS II
-1405;AL;CANADIAN SYLLABICS O
-1406;AL;CANADIAN SYLLABICS OO
-1407;AL;CANADIAN SYLLABICS Y-CREE OO
-1408;AL;CANADIAN SYLLABICS CARRIER EE
-1409;AL;CANADIAN SYLLABICS CARRIER I
-140A;AL;CANADIAN SYLLABICS A
-140B;AL;CANADIAN SYLLABICS AA
-140C;AL;CANADIAN SYLLABICS WE
-140D;AL;CANADIAN SYLLABICS WEST-CREE WE
-140E;AL;CANADIAN SYLLABICS WI
-140F;AL;CANADIAN SYLLABICS WEST-CREE WI
-1410;AL;CANADIAN SYLLABICS WII
-1411;AL;CANADIAN SYLLABICS WEST-CREE WII
-1412;AL;CANADIAN SYLLABICS WO
-1413;AL;CANADIAN SYLLABICS WEST-CREE WO
-1414;AL;CANADIAN SYLLABICS WOO
-1415;AL;CANADIAN SYLLABICS WEST-CREE WOO
-1416;AL;CANADIAN SYLLABICS NASKAPI WOO
-1417;AL;CANADIAN SYLLABICS WA
-1418;AL;CANADIAN SYLLABICS WEST-CREE WA
-1419;AL;CANADIAN SYLLABICS WAA
-141A;AL;CANADIAN SYLLABICS WEST-CREE WAA
-141B;AL;CANADIAN SYLLABICS NASKAPI WAA
-141C;AL;CANADIAN SYLLABICS AI
-141D;AL;CANADIAN SYLLABICS Y-CREE W
-141E;AL;CANADIAN SYLLABICS GLOTTAL STOP
-141F;AL;CANADIAN SYLLABICS FINAL ACUTE
-1420;AL;CANADIAN SYLLABICS FINAL GRAVE
-1421;AL;CANADIAN SYLLABICS FINAL BOTTOM HALF RING
-1422;AL;CANADIAN SYLLABICS FINAL TOP HALF RING
-1423;AL;CANADIAN SYLLABICS FINAL RIGHT HALF RING
-1424;AL;CANADIAN SYLLABICS FINAL RING
-1425;AL;CANADIAN SYLLABICS FINAL DOUBLE ACUTE
-1426;AL;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
-1427;AL;CANADIAN SYLLABICS FINAL MIDDLE DOT
-1428;AL;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
-1429;AL;CANADIAN SYLLABICS FINAL PLUS
-142A;AL;CANADIAN SYLLABICS FINAL DOWN TACK
-142B;AL;CANADIAN SYLLABICS EN
-142C;AL;CANADIAN SYLLABICS IN
-142D;AL;CANADIAN SYLLABICS ON
-142E;AL;CANADIAN SYLLABICS AN
-142F;AL;CANADIAN SYLLABICS PE
-1430;AL;CANADIAN SYLLABICS PAAI
-1431;AL;CANADIAN SYLLABICS PI
-1432;AL;CANADIAN SYLLABICS PII
-1433;AL;CANADIAN SYLLABICS PO
-1434;AL;CANADIAN SYLLABICS POO
-1435;AL;CANADIAN SYLLABICS Y-CREE POO
-1436;AL;CANADIAN SYLLABICS CARRIER HEE
-1437;AL;CANADIAN SYLLABICS CARRIER HI
-1438;AL;CANADIAN SYLLABICS PA
-1439;AL;CANADIAN SYLLABICS PAA
-143A;AL;CANADIAN SYLLABICS PWE
-143B;AL;CANADIAN SYLLABICS WEST-CREE PWE
-143C;AL;CANADIAN SYLLABICS PWI
-143D;AL;CANADIAN SYLLABICS WEST-CREE PWI
-143E;AL;CANADIAN SYLLABICS PWII
-143F;AL;CANADIAN SYLLABICS WEST-CREE PWII
-1440;AL;CANADIAN SYLLABICS PWO
-1441;AL;CANADIAN SYLLABICS WEST-CREE PWO
-1442;AL;CANADIAN SYLLABICS PWOO
-1443;AL;CANADIAN SYLLABICS WEST-CREE PWOO
-1444;AL;CANADIAN SYLLABICS PWA
-1445;AL;CANADIAN SYLLABICS WEST-CREE PWA
-1446;AL;CANADIAN SYLLABICS PWAA
-1447;AL;CANADIAN SYLLABICS WEST-CREE PWAA
-1448;AL;CANADIAN SYLLABICS Y-CREE PWAA
-1449;AL;CANADIAN SYLLABICS P
-144A;AL;CANADIAN SYLLABICS WEST-CREE P
-144B;AL;CANADIAN SYLLABICS CARRIER H
-144C;AL;CANADIAN SYLLABICS TE
-144D;AL;CANADIAN SYLLABICS TAAI
-144E;AL;CANADIAN SYLLABICS TI
-144F;AL;CANADIAN SYLLABICS TII
-1450;AL;CANADIAN SYLLABICS TO
-1451;AL;CANADIAN SYLLABICS TOO
-1452;AL;CANADIAN SYLLABICS Y-CREE TOO
-1453;AL;CANADIAN SYLLABICS CARRIER DEE
-1454;AL;CANADIAN SYLLABICS CARRIER DI
-1455;AL;CANADIAN SYLLABICS TA
-1456;AL;CANADIAN SYLLABICS TAA
-1457;AL;CANADIAN SYLLABICS TWE
-1458;AL;CANADIAN SYLLABICS WEST-CREE TWE
-1459;AL;CANADIAN SYLLABICS TWI
-145A;AL;CANADIAN SYLLABICS WEST-CREE TWI
-145B;AL;CANADIAN SYLLABICS TWII
-145C;AL;CANADIAN SYLLABICS WEST-CREE TWII
-145D;AL;CANADIAN SYLLABICS TWO
-145E;AL;CANADIAN SYLLABICS WEST-CREE TWO
-145F;AL;CANADIAN SYLLABICS TWOO
-1460;AL;CANADIAN SYLLABICS WEST-CREE TWOO
-1461;AL;CANADIAN SYLLABICS TWA
-1462;AL;CANADIAN SYLLABICS WEST-CREE TWA
-1463;AL;CANADIAN SYLLABICS TWAA
-1464;AL;CANADIAN SYLLABICS WEST-CREE TWAA
-1465;AL;CANADIAN SYLLABICS NASKAPI TWAA
-1466;AL;CANADIAN SYLLABICS T
-1467;AL;CANADIAN SYLLABICS TTE
-1468;AL;CANADIAN SYLLABICS TTI
-1469;AL;CANADIAN SYLLABICS TTO
-146A;AL;CANADIAN SYLLABICS TTA
-146B;AL;CANADIAN SYLLABICS KE
-146C;AL;CANADIAN SYLLABICS KAAI
-146D;AL;CANADIAN SYLLABICS KI
-146E;AL;CANADIAN SYLLABICS KII
-146F;AL;CANADIAN SYLLABICS KO
-1470;AL;CANADIAN SYLLABICS KOO
-1471;AL;CANADIAN SYLLABICS Y-CREE KOO
-1472;AL;CANADIAN SYLLABICS KA
-1473;AL;CANADIAN SYLLABICS KAA
-1474;AL;CANADIAN SYLLABICS KWE
-1475;AL;CANADIAN SYLLABICS WEST-CREE KWE
-1476;AL;CANADIAN SYLLABICS KWI
-1477;AL;CANADIAN SYLLABICS WEST-CREE KWI
-1478;AL;CANADIAN SYLLABICS KWII
-1479;AL;CANADIAN SYLLABICS WEST-CREE KWII
-147A;AL;CANADIAN SYLLABICS KWO
-147B;AL;CANADIAN SYLLABICS WEST-CREE KWO
-147C;AL;CANADIAN SYLLABICS KWOO
-147D;AL;CANADIAN SYLLABICS WEST-CREE KWOO
-147E;AL;CANADIAN SYLLABICS KWA
-147F;AL;CANADIAN SYLLABICS WEST-CREE KWA
-1480;AL;CANADIAN SYLLABICS KWAA
-1481;AL;CANADIAN SYLLABICS WEST-CREE KWAA
-1482;AL;CANADIAN SYLLABICS NASKAPI KWAA
-1483;AL;CANADIAN SYLLABICS K
-1484;AL;CANADIAN SYLLABICS KW
-1485;AL;CANADIAN SYLLABICS SOUTH-SLAVEY KEH
-1486;AL;CANADIAN SYLLABICS SOUTH-SLAVEY KIH
-1487;AL;CANADIAN SYLLABICS SOUTH-SLAVEY KOH
-1488;AL;CANADIAN SYLLABICS SOUTH-SLAVEY KAH
-1489;AL;CANADIAN SYLLABICS CE
-148A;AL;CANADIAN SYLLABICS CAAI
-148B;AL;CANADIAN SYLLABICS CI
-148C;AL;CANADIAN SYLLABICS CII
-148D;AL;CANADIAN SYLLABICS CO
-148E;AL;CANADIAN SYLLABICS COO
-148F;AL;CANADIAN SYLLABICS Y-CREE COO
-1490;AL;CANADIAN SYLLABICS CA
-1491;AL;CANADIAN SYLLABICS CAA
-1492;AL;CANADIAN SYLLABICS CWE
-1493;AL;CANADIAN SYLLABICS WEST-CREE CWE
-1494;AL;CANADIAN SYLLABICS CWI
-1495;AL;CANADIAN SYLLABICS WEST-CREE CWI
-1496;AL;CANADIAN SYLLABICS CWII
-1497;AL;CANADIAN SYLLABICS WEST-CREE CWII
-1498;AL;CANADIAN SYLLABICS CWO
-1499;AL;CANADIAN SYLLABICS WEST-CREE CWO
-149A;AL;CANADIAN SYLLABICS CWOO
-149B;AL;CANADIAN SYLLABICS WEST-CREE CWOO
-149C;AL;CANADIAN SYLLABICS CWA
-149D;AL;CANADIAN SYLLABICS WEST-CREE CWA
-149E;AL;CANADIAN SYLLABICS CWAA
-149F;AL;CANADIAN SYLLABICS WEST-CREE CWAA
-14A0;AL;CANADIAN SYLLABICS NASKAPI CWAA
-14A1;AL;CANADIAN SYLLABICS C
-14A2;AL;CANADIAN SYLLABICS SAYISI TH
-14A3;AL;CANADIAN SYLLABICS ME
-14A4;AL;CANADIAN SYLLABICS MAAI
-14A5;AL;CANADIAN SYLLABICS MI
-14A6;AL;CANADIAN SYLLABICS MII
-14A7;AL;CANADIAN SYLLABICS MO
-14A8;AL;CANADIAN SYLLABICS MOO
-14A9;AL;CANADIAN SYLLABICS Y-CREE MOO
-14AA;AL;CANADIAN SYLLABICS MA
-14AB;AL;CANADIAN SYLLABICS MAA
-14AC;AL;CANADIAN SYLLABICS MWE
-14AD;AL;CANADIAN SYLLABICS WEST-CREE MWE
-14AE;AL;CANADIAN SYLLABICS MWI
-14AF;AL;CANADIAN SYLLABICS WEST-CREE MWI
-14B0;AL;CANADIAN SYLLABICS MWII
-14B1;AL;CANADIAN SYLLABICS WEST-CREE MWII
-14B2;AL;CANADIAN SYLLABICS MWO
-14B3;AL;CANADIAN SYLLABICS WEST-CREE MWO
-14B4;AL;CANADIAN SYLLABICS MWOO
-14B5;AL;CANADIAN SYLLABICS WEST-CREE MWOO
-14B6;AL;CANADIAN SYLLABICS MWA
-14B7;AL;CANADIAN SYLLABICS WEST-CREE MWA
-14B8;AL;CANADIAN SYLLABICS MWAA
-14B9;AL;CANADIAN SYLLABICS WEST-CREE MWAA
-14BA;AL;CANADIAN SYLLABICS NASKAPI MWAA
-14BB;AL;CANADIAN SYLLABICS M
-14BC;AL;CANADIAN SYLLABICS WEST-CREE M
-14BD;AL;CANADIAN SYLLABICS MH
-14BE;AL;CANADIAN SYLLABICS ATHAPASCAN M
-14BF;AL;CANADIAN SYLLABICS SAYISI M
-14C0;AL;CANADIAN SYLLABICS NE
-14C1;AL;CANADIAN SYLLABICS NAAI
-14C2;AL;CANADIAN SYLLABICS NI
-14C3;AL;CANADIAN SYLLABICS NII
-14C4;AL;CANADIAN SYLLABICS NO
-14C5;AL;CANADIAN SYLLABICS NOO
-14C6;AL;CANADIAN SYLLABICS Y-CREE NOO
-14C7;AL;CANADIAN SYLLABICS NA
-14C8;AL;CANADIAN SYLLABICS NAA
-14C9;AL;CANADIAN SYLLABICS NWE
-14CA;AL;CANADIAN SYLLABICS WEST-CREE NWE
-14CB;AL;CANADIAN SYLLABICS NWA
-14CC;AL;CANADIAN SYLLABICS WEST-CREE NWA
-14CD;AL;CANADIAN SYLLABICS NWAA
-14CE;AL;CANADIAN SYLLABICS WEST-CREE NWAA
-14CF;AL;CANADIAN SYLLABICS NASKAPI NWAA
-14D0;AL;CANADIAN SYLLABICS N
-14D1;AL;CANADIAN SYLLABICS CARRIER NG
-14D2;AL;CANADIAN SYLLABICS NH
-14D3;AL;CANADIAN SYLLABICS LE
-14D4;AL;CANADIAN SYLLABICS LAAI
-14D5;AL;CANADIAN SYLLABICS LI
-14D6;AL;CANADIAN SYLLABICS LII
-14D7;AL;CANADIAN SYLLABICS LO
-14D8;AL;CANADIAN SYLLABICS LOO
-14D9;AL;CANADIAN SYLLABICS Y-CREE LOO
-14DA;AL;CANADIAN SYLLABICS LA
-14DB;AL;CANADIAN SYLLABICS LAA
-14DC;AL;CANADIAN SYLLABICS LWE
-14DD;AL;CANADIAN SYLLABICS WEST-CREE LWE
-14DE;AL;CANADIAN SYLLABICS LWI
-14DF;AL;CANADIAN SYLLABICS WEST-CREE LWI
-14E0;AL;CANADIAN SYLLABICS LWII
-14E1;AL;CANADIAN SYLLABICS WEST-CREE LWII
-14E2;AL;CANADIAN SYLLABICS LWO
-14E3;AL;CANADIAN SYLLABICS WEST-CREE LWO
-14E4;AL;CANADIAN SYLLABICS LWOO
-14E5;AL;CANADIAN SYLLABICS WEST-CREE LWOO
-14E6;AL;CANADIAN SYLLABICS LWA
-14E7;AL;CANADIAN SYLLABICS WEST-CREE LWA
-14E8;AL;CANADIAN SYLLABICS LWAA
-14E9;AL;CANADIAN SYLLABICS WEST-CREE LWAA
-14EA;AL;CANADIAN SYLLABICS L
-14EB;AL;CANADIAN SYLLABICS WEST-CREE L
-14EC;AL;CANADIAN SYLLABICS MEDIAL L
-14ED;AL;CANADIAN SYLLABICS SE
-14EE;AL;CANADIAN SYLLABICS SAAI
-14EF;AL;CANADIAN SYLLABICS SI
-14F0;AL;CANADIAN SYLLABICS SII
-14F1;AL;CANADIAN SYLLABICS SO
-14F2;AL;CANADIAN SYLLABICS SOO
-14F3;AL;CANADIAN SYLLABICS Y-CREE SOO
-14F4;AL;CANADIAN SYLLABICS SA
-14F5;AL;CANADIAN SYLLABICS SAA
-14F6;AL;CANADIAN SYLLABICS SWE
-14F7;AL;CANADIAN SYLLABICS WEST-CREE SWE
-14F8;AL;CANADIAN SYLLABICS SWI
-14F9;AL;CANADIAN SYLLABICS WEST-CREE SWI
-14FA;AL;CANADIAN SYLLABICS SWII
-14FB;AL;CANADIAN SYLLABICS WEST-CREE SWII
-14FC;AL;CANADIAN SYLLABICS SWO
-14FD;AL;CANADIAN SYLLABICS WEST-CREE SWO
-14FE;AL;CANADIAN SYLLABICS SWOO
-14FF;AL;CANADIAN SYLLABICS WEST-CREE SWOO
-1500;AL;CANADIAN SYLLABICS SWA
-1501;AL;CANADIAN SYLLABICS WEST-CREE SWA
-1502;AL;CANADIAN SYLLABICS SWAA
-1503;AL;CANADIAN SYLLABICS WEST-CREE SWAA
-1504;AL;CANADIAN SYLLABICS NASKAPI SWAA
-1505;AL;CANADIAN SYLLABICS S
-1506;AL;CANADIAN SYLLABICS ATHAPASCAN S
-1507;AL;CANADIAN SYLLABICS SW
-1508;AL;CANADIAN SYLLABICS BLACKFOOT S
-1509;AL;CANADIAN SYLLABICS MOOSE-CREE SK
-150A;AL;CANADIAN SYLLABICS NASKAPI SKW
-150B;AL;CANADIAN SYLLABICS NASKAPI S-W
-150C;AL;CANADIAN SYLLABICS NASKAPI SPWA
-150D;AL;CANADIAN SYLLABICS NASKAPI STWA
-150E;AL;CANADIAN SYLLABICS NASKAPI SKWA
-150F;AL;CANADIAN SYLLABICS NASKAPI SCWA
-1510;AL;CANADIAN SYLLABICS SHE
-1511;AL;CANADIAN SYLLABICS SHI
-1512;AL;CANADIAN SYLLABICS SHII
-1513;AL;CANADIAN SYLLABICS SHO
-1514;AL;CANADIAN SYLLABICS SHOO
-1515;AL;CANADIAN SYLLABICS SHA
-1516;AL;CANADIAN SYLLABICS SHAA
-1517;AL;CANADIAN SYLLABICS SHWE
-1518;AL;CANADIAN SYLLABICS WEST-CREE SHWE
-1519;AL;CANADIAN SYLLABICS SHWI
-151A;AL;CANADIAN SYLLABICS WEST-CREE SHWI
-151B;AL;CANADIAN SYLLABICS SHWII
-151C;AL;CANADIAN SYLLABICS WEST-CREE SHWII
-151D;AL;CANADIAN SYLLABICS SHWO
-151E;AL;CANADIAN SYLLABICS WEST-CREE SHWO
-151F;AL;CANADIAN SYLLABICS SHWOO
-1520;AL;CANADIAN SYLLABICS WEST-CREE SHWOO
-1521;AL;CANADIAN SYLLABICS SHWA
-1522;AL;CANADIAN SYLLABICS WEST-CREE SHWA
-1523;AL;CANADIAN SYLLABICS SHWAA
-1524;AL;CANADIAN SYLLABICS WEST-CREE SHWAA
-1525;AL;CANADIAN SYLLABICS SH
-1526;AL;CANADIAN SYLLABICS YE
-1527;AL;CANADIAN SYLLABICS YAAI
-1528;AL;CANADIAN SYLLABICS YI
-1529;AL;CANADIAN SYLLABICS YII
-152A;AL;CANADIAN SYLLABICS YO
-152B;AL;CANADIAN SYLLABICS YOO
-152C;AL;CANADIAN SYLLABICS Y-CREE YOO
-152D;AL;CANADIAN SYLLABICS YA
-152E;AL;CANADIAN SYLLABICS YAA
-152F;AL;CANADIAN SYLLABICS YWE
-1530;AL;CANADIAN SYLLABICS WEST-CREE YWE
-1531;AL;CANADIAN SYLLABICS YWI
-1532;AL;CANADIAN SYLLABICS WEST-CREE YWI
-1533;AL;CANADIAN SYLLABICS YWII
-1534;AL;CANADIAN SYLLABICS WEST-CREE YWII
-1535;AL;CANADIAN SYLLABICS YWO
-1536;AL;CANADIAN SYLLABICS WEST-CREE YWO
-1537;AL;CANADIAN SYLLABICS YWOO
-1538;AL;CANADIAN SYLLABICS WEST-CREE YWOO
-1539;AL;CANADIAN SYLLABICS YWA
-153A;AL;CANADIAN SYLLABICS WEST-CREE YWA
-153B;AL;CANADIAN SYLLABICS YWAA
-153C;AL;CANADIAN SYLLABICS WEST-CREE YWAA
-153D;AL;CANADIAN SYLLABICS NASKAPI YWAA
-153E;AL;CANADIAN SYLLABICS Y
-153F;AL;CANADIAN SYLLABICS BIBLE-CREE Y
-1540;AL;CANADIAN SYLLABICS WEST-CREE Y
-1541;AL;CANADIAN SYLLABICS SAYISI YI
-1542;AL;CANADIAN SYLLABICS RE
-1543;AL;CANADIAN SYLLABICS R-CREE RE
-1544;AL;CANADIAN SYLLABICS WEST-CREE LE
-1545;AL;CANADIAN SYLLABICS RAAI
-1546;AL;CANADIAN SYLLABICS RI
-1547;AL;CANADIAN SYLLABICS RII
-1548;AL;CANADIAN SYLLABICS RO
-1549;AL;CANADIAN SYLLABICS ROO
-154A;AL;CANADIAN SYLLABICS WEST-CREE LO
-154B;AL;CANADIAN SYLLABICS RA
-154C;AL;CANADIAN SYLLABICS RAA
-154D;AL;CANADIAN SYLLABICS WEST-CREE LA
-154E;AL;CANADIAN SYLLABICS RWAA
-154F;AL;CANADIAN SYLLABICS WEST-CREE RWAA
-1550;AL;CANADIAN SYLLABICS R
-1551;AL;CANADIAN SYLLABICS WEST-CREE R
-1552;AL;CANADIAN SYLLABICS MEDIAL R
-1553;AL;CANADIAN SYLLABICS FE
-1554;AL;CANADIAN SYLLABICS FAAI
-1555;AL;CANADIAN SYLLABICS FI
-1556;AL;CANADIAN SYLLABICS FII
-1557;AL;CANADIAN SYLLABICS FO
-1558;AL;CANADIAN SYLLABICS FOO
-1559;AL;CANADIAN SYLLABICS FA
-155A;AL;CANADIAN SYLLABICS FAA
-155B;AL;CANADIAN SYLLABICS FWAA
-155C;AL;CANADIAN SYLLABICS WEST-CREE FWAA
-155D;AL;CANADIAN SYLLABICS F
-155E;AL;CANADIAN SYLLABICS THE
-155F;AL;CANADIAN SYLLABICS N-CREE THE
-1560;AL;CANADIAN SYLLABICS THI
-1561;AL;CANADIAN SYLLABICS N-CREE THI
-1562;AL;CANADIAN SYLLABICS THII
-1563;AL;CANADIAN SYLLABICS N-CREE THII
-1564;AL;CANADIAN SYLLABICS THO
-1565;AL;CANADIAN SYLLABICS THOO
-1566;AL;CANADIAN SYLLABICS THA
-1567;AL;CANADIAN SYLLABICS THAA
-1568;AL;CANADIAN SYLLABICS THWAA
-1569;AL;CANADIAN SYLLABICS WEST-CREE THWAA
-156A;AL;CANADIAN SYLLABICS TH
-156B;AL;CANADIAN SYLLABICS TTHE
-156C;AL;CANADIAN SYLLABICS TTHI
-156D;AL;CANADIAN SYLLABICS TTHO
-156E;AL;CANADIAN SYLLABICS TTHA
-156F;AL;CANADIAN SYLLABICS TTH
-1570;AL;CANADIAN SYLLABICS TYE
-1571;AL;CANADIAN SYLLABICS TYI
-1572;AL;CANADIAN SYLLABICS TYO
-1573;AL;CANADIAN SYLLABICS TYA
-1574;AL;CANADIAN SYLLABICS NUNAVIK HE
-1575;AL;CANADIAN SYLLABICS NUNAVIK HI
-1576;AL;CANADIAN SYLLABICS NUNAVIK HII
-1577;AL;CANADIAN SYLLABICS NUNAVIK HO
-1578;AL;CANADIAN SYLLABICS NUNAVIK HOO
-1579;AL;CANADIAN SYLLABICS NUNAVIK HA
-157A;AL;CANADIAN SYLLABICS NUNAVIK HAA
-157B;AL;CANADIAN SYLLABICS NUNAVIK H
-157C;AL;CANADIAN SYLLABICS NUNAVUT H
-157D;AL;CANADIAN SYLLABICS HK
-157E;AL;CANADIAN SYLLABICS QAAI
-157F;AL;CANADIAN SYLLABICS QI
-1580;AL;CANADIAN SYLLABICS QII
-1581;AL;CANADIAN SYLLABICS QO
-1582;AL;CANADIAN SYLLABICS QOO
-1583;AL;CANADIAN SYLLABICS QA
-1584;AL;CANADIAN SYLLABICS QAA
-1585;AL;CANADIAN SYLLABICS Q
-1586;AL;CANADIAN SYLLABICS TLHE
-1587;AL;CANADIAN SYLLABICS TLHI
-1588;AL;CANADIAN SYLLABICS TLHO
-1589;AL;CANADIAN SYLLABICS TLHA
-158A;AL;CANADIAN SYLLABICS WEST-CREE RE
-158B;AL;CANADIAN SYLLABICS WEST-CREE RI
-158C;AL;CANADIAN SYLLABICS WEST-CREE RO
-158D;AL;CANADIAN SYLLABICS WEST-CREE RA
-158E;AL;CANADIAN SYLLABICS NGAAI
-158F;AL;CANADIAN SYLLABICS NGI
-1590;AL;CANADIAN SYLLABICS NGII
-1591;AL;CANADIAN SYLLABICS NGO
-1592;AL;CANADIAN SYLLABICS NGOO
-1593;AL;CANADIAN SYLLABICS NGA
-1594;AL;CANADIAN SYLLABICS NGAA
-1595;AL;CANADIAN SYLLABICS NG
-1596;AL;CANADIAN SYLLABICS NNG
-1597;AL;CANADIAN SYLLABICS SAYISI SHE
-1598;AL;CANADIAN SYLLABICS SAYISI SHI
-1599;AL;CANADIAN SYLLABICS SAYISI SHO
-159A;AL;CANADIAN SYLLABICS SAYISI SHA
-159B;AL;CANADIAN SYLLABICS WOODS-CREE THE
-159C;AL;CANADIAN SYLLABICS WOODS-CREE THI
-159D;AL;CANADIAN SYLLABICS WOODS-CREE THO
-159E;AL;CANADIAN SYLLABICS WOODS-CREE THA
-159F;AL;CANADIAN SYLLABICS WOODS-CREE TH
-15A0;AL;CANADIAN SYLLABICS LHI
-15A1;AL;CANADIAN SYLLABICS LHII
-15A2;AL;CANADIAN SYLLABICS LHO
-15A3;AL;CANADIAN SYLLABICS LHOO
-15A4;AL;CANADIAN SYLLABICS LHA
-15A5;AL;CANADIAN SYLLABICS LHAA
-15A6;AL;CANADIAN SYLLABICS LH
-15A7;AL;CANADIAN SYLLABICS TH-CREE THE
-15A8;AL;CANADIAN SYLLABICS TH-CREE THI
-15A9;AL;CANADIAN SYLLABICS TH-CREE THII
-15AA;AL;CANADIAN SYLLABICS TH-CREE THO
-15AB;AL;CANADIAN SYLLABICS TH-CREE THOO
-15AC;AL;CANADIAN SYLLABICS TH-CREE THA
-15AD;AL;CANADIAN SYLLABICS TH-CREE THAA
-15AE;AL;CANADIAN SYLLABICS TH-CREE TH
-15AF;AL;CANADIAN SYLLABICS AIVILIK B
-15B0;AL;CANADIAN SYLLABICS BLACKFOOT E
-15B1;AL;CANADIAN SYLLABICS BLACKFOOT I
-15B2;AL;CANADIAN SYLLABICS BLACKFOOT O
-15B3;AL;CANADIAN SYLLABICS BLACKFOOT A
-15B4;AL;CANADIAN SYLLABICS BLACKFOOT WE
-15B5;AL;CANADIAN SYLLABICS BLACKFOOT WI
-15B6;AL;CANADIAN SYLLABICS BLACKFOOT WO
-15B7;AL;CANADIAN SYLLABICS BLACKFOOT WA
-15B8;AL;CANADIAN SYLLABICS BLACKFOOT NE
-15B9;AL;CANADIAN SYLLABICS BLACKFOOT NI
-15BA;AL;CANADIAN SYLLABICS BLACKFOOT NO
-15BB;AL;CANADIAN SYLLABICS BLACKFOOT NA
-15BC;AL;CANADIAN SYLLABICS BLACKFOOT KE
-15BD;AL;CANADIAN SYLLABICS BLACKFOOT KI
-15BE;AL;CANADIAN SYLLABICS BLACKFOOT KO
-15BF;AL;CANADIAN SYLLABICS BLACKFOOT KA
-15C0;AL;CANADIAN SYLLABICS SAYISI HE
-15C1;AL;CANADIAN SYLLABICS SAYISI HI
-15C2;AL;CANADIAN SYLLABICS SAYISI HO
-15C3;AL;CANADIAN SYLLABICS SAYISI HA
-15C4;AL;CANADIAN SYLLABICS CARRIER GHU
-15C5;AL;CANADIAN SYLLABICS CARRIER GHO
-15C6;AL;CANADIAN SYLLABICS CARRIER GHE
-15C7;AL;CANADIAN SYLLABICS CARRIER GHEE
-15C8;AL;CANADIAN SYLLABICS CARRIER GHI
-15C9;AL;CANADIAN SYLLABICS CARRIER GHA
-15CA;AL;CANADIAN SYLLABICS CARRIER RU
-15CB;AL;CANADIAN SYLLABICS CARRIER RO
-15CC;AL;CANADIAN SYLLABICS CARRIER RE
-15CD;AL;CANADIAN SYLLABICS CARRIER REE
-15CE;AL;CANADIAN SYLLABICS CARRIER RI
-15CF;AL;CANADIAN SYLLABICS CARRIER RA
-15D0;AL;CANADIAN SYLLABICS CARRIER WU
-15D1;AL;CANADIAN SYLLABICS CARRIER WO
-15D2;AL;CANADIAN SYLLABICS CARRIER WE
-15D3;AL;CANADIAN SYLLABICS CARRIER WEE
-15D4;AL;CANADIAN SYLLABICS CARRIER WI
-15D5;AL;CANADIAN SYLLABICS CARRIER WA
-15D6;AL;CANADIAN SYLLABICS CARRIER HWU
-15D7;AL;CANADIAN SYLLABICS CARRIER HWO
-15D8;AL;CANADIAN SYLLABICS CARRIER HWE
-15D9;AL;CANADIAN SYLLABICS CARRIER HWEE
-15DA;AL;CANADIAN SYLLABICS CARRIER HWI
-15DB;AL;CANADIAN SYLLABICS CARRIER HWA
-15DC;AL;CANADIAN SYLLABICS CARRIER THU
-15DD;AL;CANADIAN SYLLABICS CARRIER THO
-15DE;AL;CANADIAN SYLLABICS CARRIER THE
-15DF;AL;CANADIAN SYLLABICS CARRIER THEE
-15E0;AL;CANADIAN SYLLABICS CARRIER THI
-15E1;AL;CANADIAN SYLLABICS CARRIER THA
-15E2;AL;CANADIAN SYLLABICS CARRIER TTU
-15E3;AL;CANADIAN SYLLABICS CARRIER TTO
-15E4;AL;CANADIAN SYLLABICS CARRIER TTE
-15E5;AL;CANADIAN SYLLABICS CARRIER TTEE
-15E6;AL;CANADIAN SYLLABICS CARRIER TTI
-15E7;AL;CANADIAN SYLLABICS CARRIER TTA
-15E8;AL;CANADIAN SYLLABICS CARRIER PU
-15E9;AL;CANADIAN SYLLABICS CARRIER PO
-15EA;AL;CANADIAN SYLLABICS CARRIER PE
-15EB;AL;CANADIAN SYLLABICS CARRIER PEE
-15EC;AL;CANADIAN SYLLABICS CARRIER PI
-15ED;AL;CANADIAN SYLLABICS CARRIER PA
-15EE;AL;CANADIAN SYLLABICS CARRIER P
-15EF;AL;CANADIAN SYLLABICS CARRIER GU
-15F0;AL;CANADIAN SYLLABICS CARRIER GO
-15F1;AL;CANADIAN SYLLABICS CARRIER GE
-15F2;AL;CANADIAN SYLLABICS CARRIER GEE
-15F3;AL;CANADIAN SYLLABICS CARRIER GI
-15F4;AL;CANADIAN SYLLABICS CARRIER GA
-15F5;AL;CANADIAN SYLLABICS CARRIER KHU
-15F6;AL;CANADIAN SYLLABICS CARRIER KHO
-15F7;AL;CANADIAN SYLLABICS CARRIER KHE
-15F8;AL;CANADIAN SYLLABICS CARRIER KHEE
-15F9;AL;CANADIAN SYLLABICS CARRIER KHI
-15FA;AL;CANADIAN SYLLABICS CARRIER KHA
-15FB;AL;CANADIAN SYLLABICS CARRIER KKU
-15FC;AL;CANADIAN SYLLABICS CARRIER KKO
-15FD;AL;CANADIAN SYLLABICS CARRIER KKE
-15FE;AL;CANADIAN SYLLABICS CARRIER KKEE
-15FF;AL;CANADIAN SYLLABICS CARRIER KKI
-1600;AL;CANADIAN SYLLABICS CARRIER KKA
-1601;AL;CANADIAN SYLLABICS CARRIER KK
-1602;AL;CANADIAN SYLLABICS CARRIER NU
-1603;AL;CANADIAN SYLLABICS CARRIER NO
-1604;AL;CANADIAN SYLLABICS CARRIER NE
-1605;AL;CANADIAN SYLLABICS CARRIER NEE
-1606;AL;CANADIAN SYLLABICS CARRIER NI
-1607;AL;CANADIAN SYLLABICS CARRIER NA
-1608;AL;CANADIAN SYLLABICS CARRIER MU
-1609;AL;CANADIAN SYLLABICS CARRIER MO
-160A;AL;CANADIAN SYLLABICS CARRIER ME
-160B;AL;CANADIAN SYLLABICS CARRIER MEE
-160C;AL;CANADIAN SYLLABICS CARRIER MI
-160D;AL;CANADIAN SYLLABICS CARRIER MA
-160E;AL;CANADIAN SYLLABICS CARRIER YU
-160F;AL;CANADIAN SYLLABICS CARRIER YO
-1610;AL;CANADIAN SYLLABICS CARRIER YE
-1611;AL;CANADIAN SYLLABICS CARRIER YEE
-1612;AL;CANADIAN SYLLABICS CARRIER YI
-1613;AL;CANADIAN SYLLABICS CARRIER YA
-1614;AL;CANADIAN SYLLABICS CARRIER JU
-1615;AL;CANADIAN SYLLABICS SAYISI JU
-1616;AL;CANADIAN SYLLABICS CARRIER JO
-1617;AL;CANADIAN SYLLABICS CARRIER JE
-1618;AL;CANADIAN SYLLABICS CARRIER JEE
-1619;AL;CANADIAN SYLLABICS CARRIER JI
-161A;AL;CANADIAN SYLLABICS SAYISI JI
-161B;AL;CANADIAN SYLLABICS CARRIER JA
-161C;AL;CANADIAN SYLLABICS CARRIER JJU
-161D;AL;CANADIAN SYLLABICS CARRIER JJO
-161E;AL;CANADIAN SYLLABICS CARRIER JJE
-161F;AL;CANADIAN SYLLABICS CARRIER JJEE
-1620;AL;CANADIAN SYLLABICS CARRIER JJI
-1621;AL;CANADIAN SYLLABICS CARRIER JJA
-1622;AL;CANADIAN SYLLABICS CARRIER LU
-1623;AL;CANADIAN SYLLABICS CARRIER LO
-1624;AL;CANADIAN SYLLABICS CARRIER LE
-1625;AL;CANADIAN SYLLABICS CARRIER LEE
-1626;AL;CANADIAN SYLLABICS CARRIER LI
-1627;AL;CANADIAN SYLLABICS CARRIER LA
-1628;AL;CANADIAN SYLLABICS CARRIER DLU
-1629;AL;CANADIAN SYLLABICS CARRIER DLO
-162A;AL;CANADIAN SYLLABICS CARRIER DLE
-162B;AL;CANADIAN SYLLABICS CARRIER DLEE
-162C;AL;CANADIAN SYLLABICS CARRIER DLI
-162D;AL;CANADIAN SYLLABICS CARRIER DLA
-162E;AL;CANADIAN SYLLABICS CARRIER LHU
-162F;AL;CANADIAN SYLLABICS CARRIER LHO
-1630;AL;CANADIAN SYLLABICS CARRIER LHE
-1631;AL;CANADIAN SYLLABICS CARRIER LHEE
-1632;AL;CANADIAN SYLLABICS CARRIER LHI
-1633;AL;CANADIAN SYLLABICS CARRIER LHA
-1634;AL;CANADIAN SYLLABICS CARRIER TLHU
-1635;AL;CANADIAN SYLLABICS CARRIER TLHO
-1636;AL;CANADIAN SYLLABICS CARRIER TLHE
-1637;AL;CANADIAN SYLLABICS CARRIER TLHEE
-1638;AL;CANADIAN SYLLABICS CARRIER TLHI
-1639;AL;CANADIAN SYLLABICS CARRIER TLHA
-163A;AL;CANADIAN SYLLABICS CARRIER TLU
-163B;AL;CANADIAN SYLLABICS CARRIER TLO
-163C;AL;CANADIAN SYLLABICS CARRIER TLE
-163D;AL;CANADIAN SYLLABICS CARRIER TLEE
-163E;AL;CANADIAN SYLLABICS CARRIER TLI
-163F;AL;CANADIAN SYLLABICS CARRIER TLA
-1640;AL;CANADIAN SYLLABICS CARRIER ZU
-1641;AL;CANADIAN SYLLABICS CARRIER ZO
-1642;AL;CANADIAN SYLLABICS CARRIER ZE
-1643;AL;CANADIAN SYLLABICS CARRIER ZEE
-1644;AL;CANADIAN SYLLABICS CARRIER ZI
-1645;AL;CANADIAN SYLLABICS CARRIER ZA
-1646;AL;CANADIAN SYLLABICS CARRIER Z
-1647;AL;CANADIAN SYLLABICS CARRIER INITIAL Z
-1648;AL;CANADIAN SYLLABICS CARRIER DZU
-1649;AL;CANADIAN SYLLABICS CARRIER DZO
-164A;AL;CANADIAN SYLLABICS CARRIER DZE
-164B;AL;CANADIAN SYLLABICS CARRIER DZEE
-164C;AL;CANADIAN SYLLABICS CARRIER DZI
-164D;AL;CANADIAN SYLLABICS CARRIER DZA
-164E;AL;CANADIAN SYLLABICS CARRIER SU
-164F;AL;CANADIAN SYLLABICS CARRIER SO
-1650;AL;CANADIAN SYLLABICS CARRIER SE
-1651;AL;CANADIAN SYLLABICS CARRIER SEE
-1652;AL;CANADIAN SYLLABICS CARRIER SI
-1653;AL;CANADIAN SYLLABICS CARRIER SA
-1654;AL;CANADIAN SYLLABICS CARRIER SHU
-1655;AL;CANADIAN SYLLABICS CARRIER SHO
-1656;AL;CANADIAN SYLLABICS CARRIER SHE
-1657;AL;CANADIAN SYLLABICS CARRIER SHEE
-1658;AL;CANADIAN SYLLABICS CARRIER SHI
-1659;AL;CANADIAN SYLLABICS CARRIER SHA
-165A;AL;CANADIAN SYLLABICS CARRIER SH
-165B;AL;CANADIAN SYLLABICS CARRIER TSU
-165C;AL;CANADIAN SYLLABICS CARRIER TSO
-165D;AL;CANADIAN SYLLABICS CARRIER TSE
-165E;AL;CANADIAN SYLLABICS CARRIER TSEE
-165F;AL;CANADIAN SYLLABICS CARRIER TSI
-1660;AL;CANADIAN SYLLABICS CARRIER TSA
-1661;AL;CANADIAN SYLLABICS CARRIER CHU
-1662;AL;CANADIAN SYLLABICS CARRIER CHO
-1663;AL;CANADIAN SYLLABICS CARRIER CHE
-1664;AL;CANADIAN SYLLABICS CARRIER CHEE
-1665;AL;CANADIAN SYLLABICS CARRIER CHI
-1666;AL;CANADIAN SYLLABICS CARRIER CHA
-1667;AL;CANADIAN SYLLABICS CARRIER TTSU
-1668;AL;CANADIAN SYLLABICS CARRIER TTSO
-1669;AL;CANADIAN SYLLABICS CARRIER TTSE
-166A;AL;CANADIAN SYLLABICS CARRIER TTSEE
-166B;AL;CANADIAN SYLLABICS CARRIER TTSI
-166C;AL;CANADIAN SYLLABICS CARRIER TTSA
-166D;AL;CANADIAN SYLLABICS CHI SIGN
-166E;AL;CANADIAN SYLLABICS FULL STOP
-166F;AL;CANADIAN SYLLABICS QAI
-1670;AL;CANADIAN SYLLABICS NGAI
-1671;AL;CANADIAN SYLLABICS NNGI
-1672;AL;CANADIAN SYLLABICS NNGII
-1673;AL;CANADIAN SYLLABICS NNGO
-1674;AL;CANADIAN SYLLABICS NNGOO
-1675;AL;CANADIAN SYLLABICS NNGA
-1676;AL;CANADIAN SYLLABICS NNGAA
-1680;BA;OGHAM SPACE MARK
-1681;AL;OGHAM LETTER BEITH
-1682;AL;OGHAM LETTER LUIS
-1683;AL;OGHAM LETTER FEARN
-1684;AL;OGHAM LETTER SAIL
-1685;AL;OGHAM LETTER NION
-1686;AL;OGHAM LETTER UATH
-1687;AL;OGHAM LETTER DAIR
-1688;AL;OGHAM LETTER TINNE
-1689;AL;OGHAM LETTER COLL
-168A;AL;OGHAM LETTER CEIRT
-168B;AL;OGHAM LETTER MUIN
-168C;AL;OGHAM LETTER GORT
-168D;AL;OGHAM LETTER NGEADAL
-168E;AL;OGHAM LETTER STRAIF
-168F;AL;OGHAM LETTER RUIS
-1690;AL;OGHAM LETTER AILM
-1691;AL;OGHAM LETTER ONN
-1692;AL;OGHAM LETTER UR
-1693;AL;OGHAM LETTER EADHADH
-1694;AL;OGHAM LETTER IODHADH
-1695;AL;OGHAM LETTER EABHADH
-1696;AL;OGHAM LETTER OR
-1697;AL;OGHAM LETTER UILLEANN
-1698;AL;OGHAM LETTER IFIN
-1699;AL;OGHAM LETTER EAMHANCHOLL
-169A;AL;OGHAM LETTER PEITH
-169B;OP;OGHAM FEATHER MARK
-169C;CL;OGHAM REVERSED FEATHER MARK
-16A0;AL;RUNIC LETTER FEHU FEOH FE F
-16A1;AL;RUNIC LETTER V
-16A2;AL;RUNIC LETTER URUZ UR U
-16A3;AL;RUNIC LETTER YR
-16A4;AL;RUNIC LETTER Y
-16A5;AL;RUNIC LETTER W
-16A6;AL;RUNIC LETTER THURISAZ THURS THORN
-16A7;AL;RUNIC LETTER ETH
-16A8;AL;RUNIC LETTER ANSUZ A
-16A9;AL;RUNIC LETTER OS O
-16AA;AL;RUNIC LETTER AC A
-16AB;AL;RUNIC LETTER AESC
-16AC;AL;RUNIC LETTER LONG-BRANCH-OSS O
-16AD;AL;RUNIC LETTER SHORT-TWIG-OSS O
-16AE;AL;RUNIC LETTER O
-16AF;AL;RUNIC LETTER OE
-16B0;AL;RUNIC LETTER ON
-16B1;AL;RUNIC LETTER RAIDO RAD REID R
-16B2;AL;RUNIC LETTER KAUNA
-16B3;AL;RUNIC LETTER CEN
-16B4;AL;RUNIC LETTER KAUN K
-16B5;AL;RUNIC LETTER G
-16B6;AL;RUNIC LETTER ENG
-16B7;AL;RUNIC LETTER GEBO GYFU G
-16B8;AL;RUNIC LETTER GAR
-16B9;AL;RUNIC LETTER WUNJO WYNN W
-16BA;AL;RUNIC LETTER HAGLAZ H
-16BB;AL;RUNIC LETTER HAEGL H
-16BC;AL;RUNIC LETTER LONG-BRANCH-HAGALL H
-16BD;AL;RUNIC LETTER SHORT-TWIG-HAGALL H
-16BE;AL;RUNIC LETTER NAUDIZ NYD NAUD N
-16BF;AL;RUNIC LETTER SHORT-TWIG-NAUD N
-16C0;AL;RUNIC LETTER DOTTED-N
-16C1;AL;RUNIC LETTER ISAZ IS ISS I
-16C2;AL;RUNIC LETTER E
-16C3;AL;RUNIC LETTER JERAN J
-16C4;AL;RUNIC LETTER GER
-16C5;AL;RUNIC LETTER LONG-BRANCH-AR AE
-16C6;AL;RUNIC LETTER SHORT-TWIG-AR A
-16C7;AL;RUNIC LETTER IWAZ EOH
-16C8;AL;RUNIC LETTER PERTHO PEORTH P
-16C9;AL;RUNIC LETTER ALGIZ EOLHX
-16CA;AL;RUNIC LETTER SOWILO S
-16CB;AL;RUNIC LETTER SIGEL LONG-BRANCH-SOL S
-16CC;AL;RUNIC LETTER SHORT-TWIG-SOL S
-16CD;AL;RUNIC LETTER C
-16CE;AL;RUNIC LETTER Z
-16CF;AL;RUNIC LETTER TIWAZ TIR TYR T
-16D0;AL;RUNIC LETTER SHORT-TWIG-TYR T
-16D1;AL;RUNIC LETTER D
-16D2;AL;RUNIC LETTER BERKANAN BEORC BJARKAN B
-16D3;AL;RUNIC LETTER SHORT-TWIG-BJARKAN B
-16D4;AL;RUNIC LETTER DOTTED-P
-16D5;AL;RUNIC LETTER OPEN-P
-16D6;AL;RUNIC LETTER EHWAZ EH E
-16D7;AL;RUNIC LETTER MANNAZ MAN M
-16D8;AL;RUNIC LETTER LONG-BRANCH-MADR M
-16D9;AL;RUNIC LETTER SHORT-TWIG-MADR M
-16DA;AL;RUNIC LETTER LAUKAZ LAGU LOGR L
-16DB;AL;RUNIC LETTER DOTTED-L
-16DC;AL;RUNIC LETTER INGWAZ
-16DD;AL;RUNIC LETTER ING
-16DE;AL;RUNIC LETTER DAGAZ DAEG D
-16DF;AL;RUNIC LETTER OTHALAN ETHEL O
-16E0;AL;RUNIC LETTER EAR
-16E1;AL;RUNIC LETTER IOR
-16E2;AL;RUNIC LETTER CWEORTH
-16E3;AL;RUNIC LETTER CALC
-16E4;AL;RUNIC LETTER CEALC
-16E5;AL;RUNIC LETTER STAN
-16E6;AL;RUNIC LETTER LONG-BRANCH-YR
-16E7;AL;RUNIC LETTER SHORT-TWIG-YR
-16E8;AL;RUNIC LETTER ICELANDIC-YR
-16E9;AL;RUNIC LETTER Q
-16EA;AL;RUNIC LETTER X
-16EB;AL;RUNIC SINGLE PUNCTUATION
-16EC;AL;RUNIC MULTIPLE PUNCTUATION
-16ED;AL;RUNIC CROSS PUNCTUATION
-16EE;AL;RUNIC ARLAUG SYMBOL
-16EF;AL;RUNIC TVIMADUR SYMBOL
-16F0;AL;RUNIC BELGTHOR SYMBOL
-1780;SA;KHMER LETTER KA
-1781;SA;KHMER LETTER KHA
-1782;SA;KHMER LETTER KO
-1783;SA;KHMER LETTER KHO
-1784;SA;KHMER LETTER NGO
-1785;SA;KHMER LETTER CA
-1786;SA;KHMER LETTER CHA
-1787;SA;KHMER LETTER CO
-1788;SA;KHMER LETTER CHO
-1789;SA;KHMER LETTER NYO
-178A;SA;KHMER LETTER DA
-178B;SA;KHMER LETTER TTHA
-178C;SA;KHMER LETTER DO
-178D;SA;KHMER LETTER TTHO
-178E;SA;KHMER LETTER NNO
-178F;SA;KHMER LETTER TA
-1790;SA;KHMER LETTER THA
-1791;SA;KHMER LETTER TO
-1792;SA;KHMER LETTER THO
-1793;SA;KHMER LETTER NO
-1794;SA;KHMER LETTER BA
-1795;SA;KHMER LETTER PHA
-1796;SA;KHMER LETTER PO
-1797;SA;KHMER LETTER PHO
-1798;SA;KHMER LETTER MO
-1799;SA;KHMER LETTER YO
-179A;SA;KHMER LETTER RO
-179B;SA;KHMER LETTER LO
-179C;SA;KHMER LETTER VO
-179D;SA;KHMER LETTER SHA
-179E;SA;KHMER LETTER SSO
-179F;SA;KHMER LETTER SA
-17A0;SA;KHMER LETTER HA
-17A1;SA;KHMER LETTER LA
-17A2;SA;KHMER LETTER QA
-17A3;SA;KHMER INDEPENDENT VOWEL QAQ
-17A4;SA;KHMER INDEPENDENT VOWEL QAA
-17A5;SA;KHMER INDEPENDENT VOWEL QI
-17A6;SA;KHMER INDEPENDENT VOWEL QII
-17A7;SA;KHMER INDEPENDENT VOWEL QU
-17A8;SA;KHMER INDEPENDENT VOWEL QUK
-17A9;SA;KHMER INDEPENDENT VOWEL QUU
-17AA;SA;KHMER INDEPENDENT VOWEL QUUV
-17AB;SA;KHMER INDEPENDENT VOWEL RY
-17AC;SA;KHMER INDEPENDENT VOWEL RYY
-17AD;SA;KHMER INDEPENDENT VOWEL LY
-17AE;SA;KHMER INDEPENDENT VOWEL LYY
-17AF;SA;KHMER INDEPENDENT VOWEL QE
-17B0;SA;KHMER INDEPENDENT VOWEL QAI
-17B1;SA;KHMER INDEPENDENT VOWEL QOO TYPE ONE
-17B2;SA;KHMER INDEPENDENT VOWEL QOO TYPE TWO
-17B3;SA;KHMER INDEPENDENT VOWEL QAU
-17B4;CM;KHMER VOWEL INHERENT AQ
-17B5;CM;KHMER VOWEL INHERENT AA
-17B6;CM;KHMER VOWEL SIGN AA
-17B7;CM;KHMER VOWEL SIGN I
-17B8;CM;KHMER VOWEL SIGN II
-17B9;CM;KHMER VOWEL SIGN Y
-17BA;CM;KHMER VOWEL SIGN YY
-17BB;CM;KHMER VOWEL SIGN U
-17BC;CM;KHMER VOWEL SIGN UU
-17BD;CM;KHMER VOWEL SIGN UA
-17BE;CM;KHMER VOWEL SIGN OE
-17BF;CM;KHMER VOWEL SIGN YA
-17C0;CM;KHMER VOWEL SIGN IE
-17C1;CM;KHMER VOWEL SIGN E
-17C2;CM;KHMER VOWEL SIGN AE
-17C3;CM;KHMER VOWEL SIGN AI
-17C4;CM;KHMER VOWEL SIGN OO
-17C5;CM;KHMER VOWEL SIGN AU
-17C6;CM;KHMER SIGN NIKAHIT
-17C7;CM;KHMER SIGN REAHMUK
-17C8;CM;KHMER SIGN YUUKALEAPINTU
-17C9;CM;KHMER SIGN MUUSIKATOAN
-17CA;CM;KHMER SIGN TRIISAP
-17CB;CM;KHMER SIGN BANTOC
-17CC;CM;KHMER SIGN ROBAT
-17CD;CM;KHMER SIGN TOANDAKHIAT
-17CE;CM;KHMER SIGN KAKABAT
-17CF;CM;KHMER SIGN AHSDA
-17D0;CM;KHMER SIGN SAMYOK SANNYA
-17D1;CM;KHMER SIGN VIRIAM
-17D2;CM;KHMER SIGN COENG
-17D3;CM;KHMER SIGN BATHAMASAT
-17D4;NS;KHMER SIGN KHAN
-17D5;BA;KHMER SIGN BARIYOOSAN
-17D6;NS;KHMER SIGN CAMNUC PII KUUH
-17D7;NS;KHMER SIGN LEK TOO
-17D8;NS;KHMER SIGN BEYYAL
-17D9;NS;KHMER SIGN PHNAEK MUAN
-17DA;NS;KHMER SIGN KOOMUUT
-17DB;PR;KHMER CURRENCY SYMBOL RIEL
-17DC;AL;KHMER SIGN AVAKRAHASANYA
-17E0;NU;KHMER DIGIT ZERO
-17E1;NU;KHMER DIGIT ONE
-17E2;NU;KHMER DIGIT TWO
-17E3;NU;KHMER DIGIT THREE
-17E4;NU;KHMER DIGIT FOUR
-17E5;NU;KHMER DIGIT FIVE
-17E6;NU;KHMER DIGIT SIX
-17E7;NU;KHMER DIGIT SEVEN
-17E8;NU;KHMER DIGIT EIGHT
-17E9;NU;KHMER DIGIT NINE
-1800;AL;MONGOLIAN BIRGA
-1801;AL;MONGOLIAN ELLIPSIS
-1802;AL;MONGOLIAN COMMA
-1803;AL;MONGOLIAN FULL STOP
-1804;AL;MONGOLIAN COLON
-1805;AL;MONGOLIAN FOUR DOTS
-1806;BB;MONGOLIAN TODO SOFT HYPHEN
-1807;AL;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
-1808;AL;MONGOLIAN MANCHU COMMA
-1809;AL;MONGOLIAN MANCHU FULL STOP
-180A;AL;MONGOLIAN NIRUGU
-180B;CM;MONGOLIAN FREE VARIATION SELECTOR ONE
-180C;CM;MONGOLIAN FREE VARIATION SELECTOR TWO
-180D;CM;MONGOLIAN FREE VARIATION SELECTOR THREE
-180E;CM;MONGOLIAN VOWEL SEPARATOR
-1810;NU;MONGOLIAN DIGIT ZERO
-1811;NU;MONGOLIAN DIGIT ONE
-1812;NU;MONGOLIAN DIGIT TWO
-1813;NU;MONGOLIAN DIGIT THREE
-1814;NU;MONGOLIAN DIGIT FOUR
-1815;NU;MONGOLIAN DIGIT FIVE
-1816;NU;MONGOLIAN DIGIT SIX
-1817;NU;MONGOLIAN DIGIT SEVEN
-1818;NU;MONGOLIAN DIGIT EIGHT
-1819;NU;MONGOLIAN DIGIT NINE
-1820;AL;MONGOLIAN LETTER A
-1821;AL;MONGOLIAN LETTER E
-1822;AL;MONGOLIAN LETTER I
-1823;AL;MONGOLIAN LETTER O
-1824;AL;MONGOLIAN LETTER U
-1825;AL;MONGOLIAN LETTER OE
-1826;AL;MONGOLIAN LETTER UE
-1827;AL;MONGOLIAN LETTER EE
-1828;AL;MONGOLIAN LETTER NA
-1829;AL;MONGOLIAN LETTER ANG
-182A;AL;MONGOLIAN LETTER BA
-182B;AL;MONGOLIAN LETTER PA
-182C;AL;MONGOLIAN LETTER QA
-182D;AL;MONGOLIAN LETTER GA
-182E;AL;MONGOLIAN LETTER MA
-182F;AL;MONGOLIAN LETTER LA
-1830;AL;MONGOLIAN LETTER SA
-1831;AL;MONGOLIAN LETTER SHA
-1832;AL;MONGOLIAN LETTER TA
-1833;AL;MONGOLIAN LETTER DA
-1834;AL;MONGOLIAN LETTER CHA
-1835;AL;MONGOLIAN LETTER JA
-1836;AL;MONGOLIAN LETTER YA
-1837;AL;MONGOLIAN LETTER RA
-1838;AL;MONGOLIAN LETTER WA
-1839;AL;MONGOLIAN LETTER FA
-183A;AL;MONGOLIAN LETTER KA
-183B;AL;MONGOLIAN LETTER KHA
-183C;AL;MONGOLIAN LETTER TSA
-183D;AL;MONGOLIAN LETTER ZA
-183E;AL;MONGOLIAN LETTER HAA
-183F;AL;MONGOLIAN LETTER ZRA
-1840;AL;MONGOLIAN LETTER LHA
-1841;AL;MONGOLIAN LETTER ZHI
-1842;AL;MONGOLIAN LETTER CHI
-1843;AL;MONGOLIAN LETTER TODO LONG VOWEL SIGN
-1844;AL;MONGOLIAN LETTER TODO E
-1845;AL;MONGOLIAN LETTER TODO I
-1846;AL;MONGOLIAN LETTER TODO O
-1847;AL;MONGOLIAN LETTER TODO U
-1848;AL;MONGOLIAN LETTER TODO OE
-1849;AL;MONGOLIAN LETTER TODO UE
-184A;AL;MONGOLIAN LETTER TODO ANG
-184B;AL;MONGOLIAN LETTER TODO BA
-184C;AL;MONGOLIAN LETTER TODO PA
-184D;AL;MONGOLIAN LETTER TODO QA
-184E;AL;MONGOLIAN LETTER TODO GA
-184F;AL;MONGOLIAN LETTER TODO MA
-1850;AL;MONGOLIAN LETTER TODO TA
-1851;AL;MONGOLIAN LETTER TODO DA
-1852;AL;MONGOLIAN LETTER TODO CHA
-1853;AL;MONGOLIAN LETTER TODO JA
-1854;AL;MONGOLIAN LETTER TODO TSA
-1855;AL;MONGOLIAN LETTER TODO YA
-1856;AL;MONGOLIAN LETTER TODO WA
-1857;AL;MONGOLIAN LETTER TODO KA
-1858;AL;MONGOLIAN LETTER TODO GAA
-1859;AL;MONGOLIAN LETTER TODO HAA
-185A;AL;MONGOLIAN LETTER TODO JIA
-185B;AL;MONGOLIAN LETTER TODO NIA
-185C;AL;MONGOLIAN LETTER TODO DZA
-185D;AL;MONGOLIAN LETTER SIBE E
-185E;AL;MONGOLIAN LETTER SIBE I
-185F;AL;MONGOLIAN LETTER SIBE IY
-1860;AL;MONGOLIAN LETTER SIBE UE
-1861;AL;MONGOLIAN LETTER SIBE U
-1862;AL;MONGOLIAN LETTER SIBE ANG
-1863;AL;MONGOLIAN LETTER SIBE KA
-1864;AL;MONGOLIAN LETTER SIBE GA
-1865;AL;MONGOLIAN LETTER SIBE HA
-1866;AL;MONGOLIAN LETTER SIBE PA
-1867;AL;MONGOLIAN LETTER SIBE SHA
-1868;AL;MONGOLIAN LETTER SIBE TA
-1869;AL;MONGOLIAN LETTER SIBE DA
-186A;AL;MONGOLIAN LETTER SIBE JA
-186B;AL;MONGOLIAN LETTER SIBE FA
-186C;AL;MONGOLIAN LETTER SIBE GAA
-186D;AL;MONGOLIAN LETTER SIBE HAA
-186E;AL;MONGOLIAN LETTER SIBE TSA
-186F;AL;MONGOLIAN LETTER SIBE ZA
-1870;AL;MONGOLIAN LETTER SIBE RAA
-1871;AL;MONGOLIAN LETTER SIBE CHA
-1872;AL;MONGOLIAN LETTER SIBE ZHA
-1873;AL;MONGOLIAN LETTER MANCHU I
-1874;AL;MONGOLIAN LETTER MANCHU KA
-1875;AL;MONGOLIAN LETTER MANCHU RA
-1876;AL;MONGOLIAN LETTER MANCHU FA
-1877;AL;MONGOLIAN LETTER MANCHU ZHA
-1880;AL;MONGOLIAN LETTER ALI GALI ANUSVARA ONE
-1881;AL;MONGOLIAN LETTER ALI GALI VISARGA ONE
-1882;AL;MONGOLIAN LETTER ALI GALI DAMARU
-1883;AL;MONGOLIAN LETTER ALI GALI UBADAMA
-1884;AL;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
-1885;AL;MONGOLIAN LETTER ALI GALI BALUDA
-1886;AL;MONGOLIAN LETTER ALI GALI THREE BALUDA
-1887;AL;MONGOLIAN LETTER ALI GALI A
-1888;AL;MONGOLIAN LETTER ALI GALI I
-1889;AL;MONGOLIAN LETTER ALI GALI KA
-188A;AL;MONGOLIAN LETTER ALI GALI NGA
-188B;AL;MONGOLIAN LETTER ALI GALI CA
-188C;AL;MONGOLIAN LETTER ALI GALI TTA
-188D;AL;MONGOLIAN LETTER ALI GALI TTHA
-188E;AL;MONGOLIAN LETTER ALI GALI DDA
-188F;AL;MONGOLIAN LETTER ALI GALI NNA
-1890;AL;MONGOLIAN LETTER ALI GALI TA
-1891;AL;MONGOLIAN LETTER ALI GALI DA
-1892;AL;MONGOLIAN LETTER ALI GALI PA
-1893;AL;MONGOLIAN LETTER ALI GALI PHA
-1894;AL;MONGOLIAN LETTER ALI GALI SSA
-1895;AL;MONGOLIAN LETTER ALI GALI ZHA
-1896;AL;MONGOLIAN LETTER ALI GALI ZA
-1897;AL;MONGOLIAN LETTER ALI GALI AH
-1898;AL;MONGOLIAN LETTER TODO ALI GALI TA
-1899;AL;MONGOLIAN LETTER TODO ALI GALI ZHA
-189A;AL;MONGOLIAN LETTER MANCHU ALI GALI GHA
-189B;AL;MONGOLIAN LETTER MANCHU ALI GALI NGA
-189C;AL;MONGOLIAN LETTER MANCHU ALI GALI CA
-189D;AL;MONGOLIAN LETTER MANCHU ALI GALI JHA
-189E;AL;MONGOLIAN LETTER MANCHU ALI GALI TTA
-189F;AL;MONGOLIAN LETTER MANCHU ALI GALI DDHA
-18A0;AL;MONGOLIAN LETTER MANCHU ALI GALI TA
-18A1;AL;MONGOLIAN LETTER MANCHU ALI GALI DHA
-18A2;AL;MONGOLIAN LETTER MANCHU ALI GALI SSA
-18A3;AL;MONGOLIAN LETTER MANCHU ALI GALI CYA
-18A4;AL;MONGOLIAN LETTER MANCHU ALI GALI ZHA
-18A5;AL;MONGOLIAN LETTER MANCHU ALI GALI ZA
-18A6;AL;MONGOLIAN LETTER ALI GALI HALF U
-18A7;AL;MONGOLIAN LETTER ALI GALI HALF YA
-18A8;AL;MONGOLIAN LETTER MANCHU ALI GALI BHA
-18A9;CM;MONGOLIAN LETTER ALI GALI DAGALGA
-1E00;AL;LATIN CAPITAL LETTER A WITH RING BELOW
-1E01;AL;LATIN SMALL LETTER A WITH RING BELOW
-1E02;AL;LATIN CAPITAL LETTER B WITH DOT ABOVE
-1E03;AL;LATIN SMALL LETTER B WITH DOT ABOVE
-1E04;AL;LATIN CAPITAL LETTER B WITH DOT BELOW
-1E05;AL;LATIN SMALL LETTER B WITH DOT BELOW
-1E06;AL;LATIN CAPITAL LETTER B WITH LINE BELOW
-1E07;AL;LATIN SMALL LETTER B WITH LINE BELOW
-1E08;AL;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
-1E09;AL;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
-1E0A;AL;LATIN CAPITAL LETTER D WITH DOT ABOVE
-1E0B;AL;LATIN SMALL LETTER D WITH DOT ABOVE
-1E0C;AL;LATIN CAPITAL LETTER D WITH DOT BELOW
-1E0D;AL;LATIN SMALL LETTER D WITH DOT BELOW
-1E0E;AL;LATIN CAPITAL LETTER D WITH LINE BELOW
-1E0F;AL;LATIN SMALL LETTER D WITH LINE BELOW
-1E10;AL;LATIN CAPITAL LETTER D WITH CEDILLA
-1E11;AL;LATIN SMALL LETTER D WITH CEDILLA
-1E12;AL;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
-1E13;AL;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
-1E14;AL;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
-1E15;AL;LATIN SMALL LETTER E WITH MACRON AND GRAVE
-1E16;AL;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
-1E17;AL;LATIN SMALL LETTER E WITH MACRON AND ACUTE
-1E18;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
-1E19;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
-1E1A;AL;LATIN CAPITAL LETTER E WITH TILDE BELOW
-1E1B;AL;LATIN SMALL LETTER E WITH TILDE BELOW
-1E1C;AL;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
-1E1D;AL;LATIN SMALL LETTER E WITH CEDILLA AND BREVE
-1E1E;AL;LATIN CAPITAL LETTER F WITH DOT ABOVE
-1E1F;AL;LATIN SMALL LETTER F WITH DOT ABOVE
-1E20;AL;LATIN CAPITAL LETTER G WITH MACRON
-1E21;AL;LATIN SMALL LETTER G WITH MACRON
-1E22;AL;LATIN CAPITAL LETTER H WITH DOT ABOVE
-1E23;AL;LATIN SMALL LETTER H WITH DOT ABOVE
-1E24;AL;LATIN CAPITAL LETTER H WITH DOT BELOW
-1E25;AL;LATIN SMALL LETTER H WITH DOT BELOW
-1E26;AL;LATIN CAPITAL LETTER H WITH DIAERESIS
-1E27;AL;LATIN SMALL LETTER H WITH DIAERESIS
-1E28;AL;LATIN CAPITAL LETTER H WITH CEDILLA
-1E29;AL;LATIN SMALL LETTER H WITH CEDILLA
-1E2A;AL;LATIN CAPITAL LETTER H WITH BREVE BELOW
-1E2B;AL;LATIN SMALL LETTER H WITH BREVE BELOW
-1E2C;AL;LATIN CAPITAL LETTER I WITH TILDE BELOW
-1E2D;AL;LATIN SMALL LETTER I WITH TILDE BELOW
-1E2E;AL;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
-1E2F;AL;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
-1E30;AL;LATIN CAPITAL LETTER K WITH ACUTE
-1E31;AL;LATIN SMALL LETTER K WITH ACUTE
-1E32;AL;LATIN CAPITAL LETTER K WITH DOT BELOW
-1E33;AL;LATIN SMALL LETTER K WITH DOT BELOW
-1E34;AL;LATIN CAPITAL LETTER K WITH LINE BELOW
-1E35;AL;LATIN SMALL LETTER K WITH LINE BELOW
-1E36;AL;LATIN CAPITAL LETTER L WITH DOT BELOW
-1E37;AL;LATIN SMALL LETTER L WITH DOT BELOW
-1E38;AL;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
-1E39;AL;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
-1E3A;AL;LATIN CAPITAL LETTER L WITH LINE BELOW
-1E3B;AL;LATIN SMALL LETTER L WITH LINE BELOW
-1E3C;AL;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
-1E3D;AL;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
-1E3E;AL;LATIN CAPITAL LETTER M WITH ACUTE
-1E3F;AL;LATIN SMALL LETTER M WITH ACUTE
-1E40;AL;LATIN CAPITAL LETTER M WITH DOT ABOVE
-1E41;AL;LATIN SMALL LETTER M WITH DOT ABOVE
-1E42;AL;LATIN CAPITAL LETTER M WITH DOT BELOW
-1E43;AL;LATIN SMALL LETTER M WITH DOT BELOW
-1E44;AL;LATIN CAPITAL LETTER N WITH DOT ABOVE
-1E45;AL;LATIN SMALL LETTER N WITH DOT ABOVE
-1E46;AL;LATIN CAPITAL LETTER N WITH DOT BELOW
-1E47;AL;LATIN SMALL LETTER N WITH DOT BELOW
-1E48;AL;LATIN CAPITAL LETTER N WITH LINE BELOW
-1E49;AL;LATIN SMALL LETTER N WITH LINE BELOW
-1E4A;AL;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
-1E4B;AL;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
-1E4C;AL;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-1E4D;AL;LATIN SMALL LETTER O WITH TILDE AND ACUTE
-1E4E;AL;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-1E4F;AL;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
-1E50;AL;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
-1E51;AL;LATIN SMALL LETTER O WITH MACRON AND GRAVE
-1E52;AL;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
-1E53;AL;LATIN SMALL LETTER O WITH MACRON AND ACUTE
-1E54;AL;LATIN CAPITAL LETTER P WITH ACUTE
-1E55;AL;LATIN SMALL LETTER P WITH ACUTE
-1E56;AL;LATIN CAPITAL LETTER P WITH DOT ABOVE
-1E57;AL;LATIN SMALL LETTER P WITH DOT ABOVE
-1E58;AL;LATIN CAPITAL LETTER R WITH DOT ABOVE
-1E59;AL;LATIN SMALL LETTER R WITH DOT ABOVE
-1E5A;AL;LATIN CAPITAL LETTER R WITH DOT BELOW
-1E5B;AL;LATIN SMALL LETTER R WITH DOT BELOW
-1E5C;AL;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
-1E5D;AL;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
-1E5E;AL;LATIN CAPITAL LETTER R WITH LINE BELOW
-1E5F;AL;LATIN SMALL LETTER R WITH LINE BELOW
-1E60;AL;LATIN CAPITAL LETTER S WITH DOT ABOVE
-1E61;AL;LATIN SMALL LETTER S WITH DOT ABOVE
-1E62;AL;LATIN CAPITAL LETTER S WITH DOT BELOW
-1E63;AL;LATIN SMALL LETTER S WITH DOT BELOW
-1E64;AL;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
-1E65;AL;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
-1E66;AL;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
-1E67;AL;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
-1E68;AL;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E69;AL;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E6A;AL;LATIN CAPITAL LETTER T WITH DOT ABOVE
-1E6B;AL;LATIN SMALL LETTER T WITH DOT ABOVE
-1E6C;AL;LATIN CAPITAL LETTER T WITH DOT BELOW
-1E6D;AL;LATIN SMALL LETTER T WITH DOT BELOW
-1E6E;AL;LATIN CAPITAL LETTER T WITH LINE BELOW
-1E6F;AL;LATIN SMALL LETTER T WITH LINE BELOW
-1E70;AL;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
-1E71;AL;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
-1E72;AL;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
-1E73;AL;LATIN SMALL LETTER U WITH DIAERESIS BELOW
-1E74;AL;LATIN CAPITAL LETTER U WITH TILDE BELOW
-1E75;AL;LATIN SMALL LETTER U WITH TILDE BELOW
-1E76;AL;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
-1E77;AL;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
-1E78;AL;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
-1E79;AL;LATIN SMALL LETTER U WITH TILDE AND ACUTE
-1E7A;AL;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
-1E7B;AL;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
-1E7C;AL;LATIN CAPITAL LETTER V WITH TILDE
-1E7D;AL;LATIN SMALL LETTER V WITH TILDE
-1E7E;AL;LATIN CAPITAL LETTER V WITH DOT BELOW
-1E7F;AL;LATIN SMALL LETTER V WITH DOT BELOW
-1E80;AL;LATIN CAPITAL LETTER W WITH GRAVE
-1E81;AL;LATIN SMALL LETTER W WITH GRAVE
-1E82;AL;LATIN CAPITAL LETTER W WITH ACUTE
-1E83;AL;LATIN SMALL LETTER W WITH ACUTE
-1E84;AL;LATIN CAPITAL LETTER W WITH DIAERESIS
-1E85;AL;LATIN SMALL LETTER W WITH DIAERESIS
-1E86;AL;LATIN CAPITAL LETTER W WITH DOT ABOVE
-1E87;AL;LATIN SMALL LETTER W WITH DOT ABOVE
-1E88;AL;LATIN CAPITAL LETTER W WITH DOT BELOW
-1E89;AL;LATIN SMALL LETTER W WITH DOT BELOW
-1E8A;AL;LATIN CAPITAL LETTER X WITH DOT ABOVE
-1E8B;AL;LATIN SMALL LETTER X WITH DOT ABOVE
-1E8C;AL;LATIN CAPITAL LETTER X WITH DIAERESIS
-1E8D;AL;LATIN SMALL LETTER X WITH DIAERESIS
-1E8E;AL;LATIN CAPITAL LETTER Y WITH DOT ABOVE
-1E8F;AL;LATIN SMALL LETTER Y WITH DOT ABOVE
-1E90;AL;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
-1E91;AL;LATIN SMALL LETTER Z WITH CIRCUMFLEX
-1E92;AL;LATIN CAPITAL LETTER Z WITH DOT BELOW
-1E93;AL;LATIN SMALL LETTER Z WITH DOT BELOW
-1E94;AL;LATIN CAPITAL LETTER Z WITH LINE BELOW
-1E95;AL;LATIN SMALL LETTER Z WITH LINE BELOW
-1E96;AL;LATIN SMALL LETTER H WITH LINE BELOW
-1E97;AL;LATIN SMALL LETTER T WITH DIAERESIS
-1E98;AL;LATIN SMALL LETTER W WITH RING ABOVE
-1E99;AL;LATIN SMALL LETTER Y WITH RING ABOVE
-1E9A;AL;LATIN SMALL LETTER A WITH RIGHT HALF RING
-1E9B;AL;LATIN SMALL LETTER LONG S WITH DOT ABOVE
-1EA0;AL;LATIN CAPITAL LETTER A WITH DOT BELOW
-1EA1;AL;LATIN SMALL LETTER A WITH DOT BELOW
-1EA2;AL;LATIN CAPITAL LETTER A WITH HOOK ABOVE
-1EA3;AL;LATIN SMALL LETTER A WITH HOOK ABOVE
-1EA4;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA5;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA6;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA7;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA8;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EA9;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EAA;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAB;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAC;AL;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAD;AL;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAE;AL;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1EAF;AL;LATIN SMALL LETTER A WITH BREVE AND ACUTE
-1EB0;AL;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1EB1;AL;LATIN SMALL LETTER A WITH BREVE AND GRAVE
-1EB2;AL;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-1EB3;AL;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
-1EB4;AL;LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1EB5;AL;LATIN SMALL LETTER A WITH BREVE AND TILDE
-1EB6;AL;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-1EB7;AL;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
-1EB8;AL;LATIN CAPITAL LETTER E WITH DOT BELOW
-1EB9;AL;LATIN SMALL LETTER E WITH DOT BELOW
-1EBA;AL;LATIN CAPITAL LETTER E WITH HOOK ABOVE
-1EBB;AL;LATIN SMALL LETTER E WITH HOOK ABOVE
-1EBC;AL;LATIN CAPITAL LETTER E WITH TILDE
-1EBD;AL;LATIN SMALL LETTER E WITH TILDE
-1EBE;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBF;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC0;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC1;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC2;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC3;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC4;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC5;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC6;AL;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC7;AL;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC8;AL;LATIN CAPITAL LETTER I WITH HOOK ABOVE
-1EC9;AL;LATIN SMALL LETTER I WITH HOOK ABOVE
-1ECA;AL;LATIN CAPITAL LETTER I WITH DOT BELOW
-1ECB;AL;LATIN SMALL LETTER I WITH DOT BELOW
-1ECC;AL;LATIN CAPITAL LETTER O WITH DOT BELOW
-1ECD;AL;LATIN SMALL LETTER O WITH DOT BELOW
-1ECE;AL;LATIN CAPITAL LETTER O WITH HOOK ABOVE
-1ECF;AL;LATIN SMALL LETTER O WITH HOOK ABOVE
-1ED0;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED1;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED2;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED3;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED4;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED5;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED6;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED7;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED8;AL;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED9;AL;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1EDA;AL;LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-1EDB;AL;LATIN SMALL LETTER O WITH HORN AND ACUTE
-1EDC;AL;LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-1EDD;AL;LATIN SMALL LETTER O WITH HORN AND GRAVE
-1EDE;AL;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-1EDF;AL;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
-1EE0;AL;LATIN CAPITAL LETTER O WITH HORN AND TILDE
-1EE1;AL;LATIN SMALL LETTER O WITH HORN AND TILDE
-1EE2;AL;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-1EE3;AL;LATIN SMALL LETTER O WITH HORN AND DOT BELOW
-1EE4;AL;LATIN CAPITAL LETTER U WITH DOT BELOW
-1EE5;AL;LATIN SMALL LETTER U WITH DOT BELOW
-1EE6;AL;LATIN CAPITAL LETTER U WITH HOOK ABOVE
-1EE7;AL;LATIN SMALL LETTER U WITH HOOK ABOVE
-1EE8;AL;LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-1EE9;AL;LATIN SMALL LETTER U WITH HORN AND ACUTE
-1EEA;AL;LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-1EEB;AL;LATIN SMALL LETTER U WITH HORN AND GRAVE
-1EEC;AL;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-1EED;AL;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
-1EEE;AL;LATIN CAPITAL LETTER U WITH HORN AND TILDE
-1EEF;AL;LATIN SMALL LETTER U WITH HORN AND TILDE
-1EF0;AL;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-1EF1;AL;LATIN SMALL LETTER U WITH HORN AND DOT BELOW
-1EF2;AL;LATIN CAPITAL LETTER Y WITH GRAVE
-1EF3;AL;LATIN SMALL LETTER Y WITH GRAVE
-1EF4;AL;LATIN CAPITAL LETTER Y WITH DOT BELOW
-1EF5;AL;LATIN SMALL LETTER Y WITH DOT BELOW
-1EF6;AL;LATIN CAPITAL LETTER Y WITH HOOK ABOVE
-1EF7;AL;LATIN SMALL LETTER Y WITH HOOK ABOVE
-1EF8;AL;LATIN CAPITAL LETTER Y WITH TILDE
-1EF9;AL;LATIN SMALL LETTER Y WITH TILDE
-1F00;AL;GREEK SMALL LETTER ALPHA WITH PSILI
-1F01;AL;GREEK SMALL LETTER ALPHA WITH DASIA
-1F02;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
-1F03;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
-1F04;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
-1F05;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
-1F06;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F07;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F08;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI
-1F09;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA
-1F0A;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
-1F0B;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
-1F0C;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
-1F0D;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
-1F0E;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F0F;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F10;AL;GREEK SMALL LETTER EPSILON WITH PSILI
-1F11;AL;GREEK SMALL LETTER EPSILON WITH DASIA
-1F12;AL;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
-1F13;AL;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
-1F14;AL;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
-1F15;AL;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
-1F18;AL;GREEK CAPITAL LETTER EPSILON WITH PSILI
-1F19;AL;GREEK CAPITAL LETTER EPSILON WITH DASIA
-1F1A;AL;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
-1F1B;AL;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
-1F1C;AL;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
-1F1D;AL;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
-1F20;AL;GREEK SMALL LETTER ETA WITH PSILI
-1F21;AL;GREEK SMALL LETTER ETA WITH DASIA
-1F22;AL;GREEK SMALL LETTER ETA WITH PSILI AND VARIA
-1F23;AL;GREEK SMALL LETTER ETA WITH DASIA AND VARIA
-1F24;AL;GREEK SMALL LETTER ETA WITH PSILI AND OXIA
-1F25;AL;GREEK SMALL LETTER ETA WITH DASIA AND OXIA
-1F26;AL;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
-1F27;AL;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
-1F28;AL;GREEK CAPITAL LETTER ETA WITH PSILI
-1F29;AL;GREEK CAPITAL LETTER ETA WITH DASIA
-1F2A;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
-1F2B;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
-1F2C;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
-1F2D;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
-1F2E;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
-1F2F;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
-1F30;AL;GREEK SMALL LETTER IOTA WITH PSILI
-1F31;AL;GREEK SMALL LETTER IOTA WITH DASIA
-1F32;AL;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
-1F33;AL;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
-1F34;AL;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
-1F35;AL;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
-1F36;AL;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F37;AL;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F38;AL;GREEK CAPITAL LETTER IOTA WITH PSILI
-1F39;AL;GREEK CAPITAL LETTER IOTA WITH DASIA
-1F3A;AL;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
-1F3B;AL;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
-1F3C;AL;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
-1F3D;AL;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
-1F3E;AL;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F3F;AL;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F40;AL;GREEK SMALL LETTER OMICRON WITH PSILI
-1F41;AL;GREEK SMALL LETTER OMICRON WITH DASIA
-1F42;AL;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
-1F43;AL;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
-1F44;AL;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
-1F45;AL;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
-1F48;AL;GREEK CAPITAL LETTER OMICRON WITH PSILI
-1F49;AL;GREEK CAPITAL LETTER OMICRON WITH DASIA
-1F4A;AL;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
-1F4B;AL;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
-1F4C;AL;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
-1F4D;AL;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
-1F50;AL;GREEK SMALL LETTER UPSILON WITH PSILI
-1F51;AL;GREEK SMALL LETTER UPSILON WITH DASIA
-1F52;AL;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-1F53;AL;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
-1F54;AL;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-1F55;AL;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
-1F56;AL;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-1F57;AL;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F59;AL;GREEK CAPITAL LETTER UPSILON WITH DASIA
-1F5B;AL;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
-1F5D;AL;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
-1F5F;AL;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F60;AL;GREEK SMALL LETTER OMEGA WITH PSILI
-1F61;AL;GREEK SMALL LETTER OMEGA WITH DASIA
-1F62;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
-1F63;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
-1F64;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
-1F65;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
-1F66;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1F67;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F68;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI
-1F69;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA
-1F6A;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
-1F6B;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
-1F6C;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
-1F6D;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
-1F6E;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1F6F;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F70;AL;GREEK SMALL LETTER ALPHA WITH VARIA
-1F71;AL;GREEK SMALL LETTER ALPHA WITH OXIA
-1F72;AL;GREEK SMALL LETTER EPSILON WITH VARIA
-1F73;AL;GREEK SMALL LETTER EPSILON WITH OXIA
-1F74;AL;GREEK SMALL LETTER ETA WITH VARIA
-1F75;AL;GREEK SMALL LETTER ETA WITH OXIA
-1F76;AL;GREEK SMALL LETTER IOTA WITH VARIA
-1F77;AL;GREEK SMALL LETTER IOTA WITH OXIA
-1F78;AL;GREEK SMALL LETTER OMICRON WITH VARIA
-1F79;AL;GREEK SMALL LETTER OMICRON WITH OXIA
-1F7A;AL;GREEK SMALL LETTER UPSILON WITH VARIA
-1F7B;AL;GREEK SMALL LETTER UPSILON WITH OXIA
-1F7C;AL;GREEK SMALL LETTER OMEGA WITH VARIA
-1F7D;AL;GREEK SMALL LETTER OMEGA WITH OXIA
-1F80;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-1F81;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-1F82;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F83;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F84;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F85;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F86;AL;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F87;AL;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F88;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1F89;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-1F8A;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F8B;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F8C;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F8D;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F8E;AL;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F8F;AL;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F90;AL;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-1F91;AL;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-1F92;AL;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F93;AL;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F94;AL;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F95;AL;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F96;AL;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F97;AL;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F98;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1F99;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-1F9A;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F9B;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F9C;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F9D;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F9E;AL;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F9F;AL;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FA0;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-1FA1;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-1FA2;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1FA3;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1FA4;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1FA5;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1FA6;AL;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1FA7;AL;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FA8;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1FA9;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-1FAA;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1FAB;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1FAC;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1FAD;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1FAE;AL;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1FAF;AL;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FB0;AL;GREEK SMALL LETTER ALPHA WITH VRACHY
-1FB1;AL;GREEK SMALL LETTER ALPHA WITH MACRON
-1FB2;AL;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-1FB3;AL;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-1FB4;AL;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1FB6;AL;GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-1FB7;AL;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FB8;AL;GREEK CAPITAL LETTER ALPHA WITH VRACHY
-1FB9;AL;GREEK CAPITAL LETTER ALPHA WITH MACRON
-1FBA;AL;GREEK CAPITAL LETTER ALPHA WITH VARIA
-1FBB;AL;GREEK CAPITAL LETTER ALPHA WITH OXIA
-1FBC;AL;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FBD;AL;GREEK KORONIS
-1FBE;AL;GREEK PROSGEGRAMMENI
-1FBF;AL;GREEK PSILI
-1FC0;AL;GREEK PERISPOMENI
-1FC1;AL;GREEK DIALYTIKA AND PERISPOMENI
-1FC2;AL;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-1FC3;AL;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-1FC4;AL;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1FC6;AL;GREEK SMALL LETTER ETA WITH PERISPOMENI
-1FC7;AL;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FC8;AL;GREEK CAPITAL LETTER EPSILON WITH VARIA
-1FC9;AL;GREEK CAPITAL LETTER EPSILON WITH OXIA
-1FCA;AL;GREEK CAPITAL LETTER ETA WITH VARIA
-1FCB;AL;GREEK CAPITAL LETTER ETA WITH OXIA
-1FCC;AL;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FCD;AL;GREEK PSILI AND VARIA
-1FCE;AL;GREEK PSILI AND OXIA
-1FCF;AL;GREEK PSILI AND PERISPOMENI
-1FD0;AL;GREEK SMALL LETTER IOTA WITH VRACHY
-1FD1;AL;GREEK SMALL LETTER IOTA WITH MACRON
-1FD2;AL;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-1FD3;AL;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD6;AL;GREEK SMALL LETTER IOTA WITH PERISPOMENI
-1FD7;AL;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1FD8;AL;GREEK CAPITAL LETTER IOTA WITH VRACHY
-1FD9;AL;GREEK CAPITAL LETTER IOTA WITH MACRON
-1FDA;AL;GREEK CAPITAL LETTER IOTA WITH VARIA
-1FDB;AL;GREEK CAPITAL LETTER IOTA WITH OXIA
-1FDD;AL;GREEK DASIA AND VARIA
-1FDE;AL;GREEK DASIA AND OXIA
-1FDF;AL;GREEK DASIA AND PERISPOMENI
-1FE0;AL;GREEK SMALL LETTER UPSILON WITH VRACHY
-1FE1;AL;GREEK SMALL LETTER UPSILON WITH MACRON
-1FE2;AL;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-1FE3;AL;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-1FE4;AL;GREEK SMALL LETTER RHO WITH PSILI
-1FE5;AL;GREEK SMALL LETTER RHO WITH DASIA
-1FE6;AL;GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-1FE7;AL;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1FE8;AL;GREEK CAPITAL LETTER UPSILON WITH VRACHY
-1FE9;AL;GREEK CAPITAL LETTER UPSILON WITH MACRON
-1FEA;AL;GREEK CAPITAL LETTER UPSILON WITH VARIA
-1FEB;AL;GREEK CAPITAL LETTER UPSILON WITH OXIA
-1FEC;AL;GREEK CAPITAL LETTER RHO WITH DASIA
-1FED;AL;GREEK DIALYTIKA AND VARIA
-1FEE;AL;GREEK DIALYTIKA AND OXIA
-1FEF;AL;GREEK VARIA
-1FF2;AL;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-1FF3;AL;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-1FF4;AL;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-1FF6;AL;GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-1FF7;AL;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FF8;AL;GREEK CAPITAL LETTER OMICRON WITH VARIA
-1FF9;AL;GREEK CAPITAL LETTER OMICRON WITH OXIA
-1FFA;AL;GREEK CAPITAL LETTER OMEGA WITH VARIA
-1FFB;AL;GREEK CAPITAL LETTER OMEGA WITH OXIA
-1FFC;AL;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-1FFD;AL;GREEK OXIA
-1FFE;AL;GREEK DASIA
-2000;BA;EN QUAD
-2001;BA;EM QUAD
-2002;BA;EN SPACE
-2003;BA;EM SPACE
-2004;BA;THREE-PER-EM SPACE
-2005;BA;FOUR-PER-EM SPACE
-2006;BA;SIX-PER-EM SPACE
-2007;GL;FIGURE SPACE
-2008;BA;PUNCTUATION SPACE
-2009;BA;THIN SPACE
-200A;BA;HAIR SPACE
-200B;ZW;ZERO WIDTH SPACE
-200C;CM;ZERO WIDTH NON-JOINER
-200D;CM;ZERO WIDTH JOINER
-200E;CM;LEFT-TO-RIGHT MARK
-200F;CM;RIGHT-TO-LEFT MARK
-2010;BA;HYPHEN
-2011;GL;NON-BREAKING HYPHEN
-2012;BA;FIGURE DASH
-2013;BA;EN DASH
-2014;B2;EM DASH
-2015;AL;HORIZONTAL BAR
-2016;AI;DOUBLE VERTICAL LINE
-2017;AL;DOUBLE LOW LINE
-2018;QU;LEFT SINGLE QUOTATION MARK
-2019;QU;RIGHT SINGLE QUOTATION MARK
-201A;OP;SINGLE LOW-9 QUOTATION MARK
-201B;QU;SINGLE HIGH-REVERSED-9 QUOTATION MARK
-201C;QU;LEFT DOUBLE QUOTATION MARK
-201D;QU;RIGHT DOUBLE QUOTATION MARK
-201E;OP;DOUBLE LOW-9 QUOTATION MARK
-201F;QU;DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-2020;AI;DAGGER
-2021;AI;DOUBLE DAGGER
-2022;AL;BULLET
-2023;AL;TRIANGULAR BULLET
-2024;IN;ONE DOT LEADER
-2025;IN;TWO DOT LEADER
-2026;IN;HORIZONTAL ELLIPSIS
-2027;BA;HYPHENATION POINT
-2028;BK;LINE SEPARATOR
-2029;BK;PARAGRAPH SEPARATOR
-202A;CM;LEFT-TO-RIGHT EMBEDDING
-202B;CM;RIGHT-TO-LEFT EMBEDDING
-202C;CM;POP DIRECTIONAL FORMATTING
-202D;CM;LEFT-TO-RIGHT OVERRIDE
-202E;CM;RIGHT-TO-LEFT OVERRIDE
-202F;GL;NARROW NO-BREAK SPACE
-2030;PO;PER MILLE SIGN
-2031;PO;PER TEN THOUSAND SIGN
-2032;PO;PRIME
-2033;PO;DOUBLE PRIME
-2034;PO;TRIPLE PRIME
-2035;PO;REVERSED PRIME
-2036;PO;REVERSED DOUBLE PRIME
-2037;PO;REVERSED TRIPLE PRIME
-2038;AL;CARET
-2039;QU;SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203A;QU;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-203B;AI;REFERENCE MARK
-203C;NS;DOUBLE EXCLAMATION MARK
-203D;AL;INTERROBANG
-203E;AL;OVERLINE
-203F;AL;UNDERTIE
-2040;AL;CHARACTER TIE
-2041;AL;CARET INSERTION POINT
-2042;AL;ASTERISM
-2043;AL;HYPHEN BULLET
-2044;NS;FRACTION SLASH
-2045;OP;LEFT SQUARE BRACKET WITH QUILL
-2046;CL;RIGHT SQUARE BRACKET WITH QUILL
-2048;AL;QUESTION EXCLAMATION MARK
-2049;AL;EXCLAMATION QUESTION MARK
-204A;AL;TIRONIAN SIGN ET
-204B;AL;REVERSED PILCROW SIGN
-204C;AL;BLACK LEFTWARDS BULLET
-204D;AL;BLACK RIGHTWARDS BULLET
-206A;CM;INHIBIT SYMMETRIC SWAPPING
-206B;CM;ACTIVATE SYMMETRIC SWAPPING
-206C;CM;INHIBIT ARABIC FORM SHAPING
-206D;CM;ACTIVATE ARABIC FORM SHAPING
-206E;CM;NATIONAL DIGIT SHAPES
-206F;CM;NOMINAL DIGIT SHAPES
-2070;AL;SUPERSCRIPT ZERO
-2074;AI;SUPERSCRIPT FOUR
-2075;AL;SUPERSCRIPT FIVE
-2076;AL;SUPERSCRIPT SIX
-2077;AL;SUPERSCRIPT SEVEN
-2078;AL;SUPERSCRIPT EIGHT
-2079;AL;SUPERSCRIPT NINE
-207A;AL;SUPERSCRIPT PLUS SIGN
-207B;AL;SUPERSCRIPT MINUS
-207C;AL;SUPERSCRIPT EQUALS SIGN
-207D;OP;SUPERSCRIPT LEFT PARENTHESIS
-207E;CL;SUPERSCRIPT RIGHT PARENTHESIS
-207F;AI;SUPERSCRIPT LATIN SMALL LETTER N
-2080;AL;SUBSCRIPT ZERO
-2081;AI;SUBSCRIPT ONE
-2082;AI;SUBSCRIPT TWO
-2083;AI;SUBSCRIPT THREE
-2084;AI;SUBSCRIPT FOUR
-2085;AL;SUBSCRIPT FIVE
-2086;AL;SUBSCRIPT SIX
-2087;AL;SUBSCRIPT SEVEN
-2088;AL;SUBSCRIPT EIGHT
-2089;AL;SUBSCRIPT NINE
-208A;AL;SUBSCRIPT PLUS SIGN
-208B;AL;SUBSCRIPT MINUS
-208C;AL;SUBSCRIPT EQUALS SIGN
-208D;OP;SUBSCRIPT LEFT PARENTHESIS
-208E;CL;SUBSCRIPT RIGHT PARENTHESIS
-20A0;PR;EURO-CURRENCY SIGN
-20A1;PR;COLON SIGN
-20A2;PR;CRUZEIRO SIGN
-20A3;PR;FRENCH FRANC SIGN
-20A4;PR;LIRA SIGN
-20A5;PR;MILL SIGN
-20A6;PR;NAIRA SIGN
-20A7;PO;PESETA SIGN
-20A8;PR;RUPEE SIGN
-20A9;PR;WON SIGN
-20AA;PR;NEW SHEQEL SIGN
-20AB;PR;DONG SIGN
-20AC;PR;EURO SIGN
-20AD;PR;KIP SIGN
-20AE;PR;TUGRIK SIGN
-20AF;PR;DRACHMA SIGN
-20D0;CM;COMBINING LEFT HARPOON ABOVE
-20D1;CM;COMBINING RIGHT HARPOON ABOVE
-20D2;CM;COMBINING LONG VERTICAL LINE OVERLAY
-20D3;CM;COMBINING SHORT VERTICAL LINE OVERLAY
-20D4;CM;COMBINING ANTICLOCKWISE ARROW ABOVE
-20D5;CM;COMBINING CLOCKWISE ARROW ABOVE
-20D6;CM;COMBINING LEFT ARROW ABOVE
-20D7;CM;COMBINING RIGHT ARROW ABOVE
-20D8;CM;COMBINING RING OVERLAY
-20D9;CM;COMBINING CLOCKWISE RING OVERLAY
-20DA;CM;COMBINING ANTICLOCKWISE RING OVERLAY
-20DB;CM;COMBINING THREE DOTS ABOVE
-20DC;CM;COMBINING FOUR DOTS ABOVE
-20DD;CM;COMBINING ENCLOSING CIRCLE
-20DE;CM;COMBINING ENCLOSING SQUARE
-20DF;CM;COMBINING ENCLOSING DIAMOND
-20E0;CM;COMBINING ENCLOSING CIRCLE BACKSLASH
-20E1;CM;COMBINING LEFT RIGHT ARROW ABOVE
-20E2;CM;COMBINING ENCLOSING SCREEN
-20E3;CM;COMBINING ENCLOSING KEYCAP
-2100;AL;ACCOUNT OF
-2101;AL;ADDRESSED TO THE SUBJECT
-2102;AL;DOUBLE-STRUCK CAPITAL C
-2103;PO;DEGREE CELSIUS
-2104;AL;CENTRE LINE SYMBOL
-2105;AI;CARE OF
-2106;AL;CADA UNA
-2107;AL;EULER CONSTANT
-2108;AL;SCRUPLE
-2109;PO;DEGREE FAHRENHEIT
-210A;AL;SCRIPT SMALL G
-210B;AL;SCRIPT CAPITAL H
-210C;AL;BLACK-LETTER CAPITAL H
-210D;AL;DOUBLE-STRUCK CAPITAL H
-210E;AL;PLANCK CONSTANT
-210F;AL;PLANCK CONSTANT OVER TWO PI
-2110;AL;SCRIPT CAPITAL I
-2111;AL;BLACK-LETTER CAPITAL I
-2112;AL;SCRIPT CAPITAL L
-2113;AI;SCRIPT SMALL L
-2114;AL;L B BAR SYMBOL
-2115;AL;DOUBLE-STRUCK CAPITAL N
-2116;PR;NUMERO SIGN
-2117;AL;SOUND RECORDING COPYRIGHT
-2118;AL;SCRIPT CAPITAL P
-2119;AL;DOUBLE-STRUCK CAPITAL P
-211A;AL;DOUBLE-STRUCK CAPITAL Q
-211B;AL;SCRIPT CAPITAL R
-211C;AL;BLACK-LETTER CAPITAL R
-211D;AL;DOUBLE-STRUCK CAPITAL R
-211E;AL;PRESCRIPTION TAKE
-211F;AL;RESPONSE
-2120;AL;SERVICE MARK
-2121;AI;TELEPHONE SIGN
-2122;AI;TRADE MARK SIGN
-2123;AL;VERSICLE
-2124;AL;DOUBLE-STRUCK CAPITAL Z
-2125;AL;OUNCE SIGN
-2126;PO;OHM SIGN
-2127;AL;INVERTED OHM SIGN
-2128;AL;BLACK-LETTER CAPITAL Z
-2129;AL;TURNED GREEK SMALL LETTER IOTA
-212A;AL;KELVIN SIGN
-212B;AI;ANGSTROM SIGN
-212C;AL;SCRIPT CAPITAL B
-212D;AL;BLACK-LETTER CAPITAL C
-212E;AL;ESTIMATED SYMBOL
-212F;AL;SCRIPT SMALL E
-2130;AL;SCRIPT CAPITAL E
-2131;AL;SCRIPT CAPITAL F
-2132;AL;TURNED CAPITAL F
-2133;AL;SCRIPT CAPITAL M
-2134;AL;SCRIPT SMALL O
-2135;AL;ALEF SYMBOL
-2136;AL;BET SYMBOL
-2137;AL;GIMEL SYMBOL
-2138;AL;DALET SYMBOL
-2139;AL;INFORMATION SOURCE
-213A;AL;ROTATED CAPITAL Q
-2153;AL;VULGAR FRACTION ONE THIRD
-2154;AI;VULGAR FRACTION TWO THIRDS
-2155;AI;VULGAR FRACTION ONE FIFTH
-2156;AL;VULGAR FRACTION TWO FIFTHS
-2157;AL;VULGAR FRACTION THREE FIFTHS
-2158;AL;VULGAR FRACTION FOUR FIFTHS
-2159;AL;VULGAR FRACTION ONE SIXTH
-215A;AL;VULGAR FRACTION FIVE SIXTHS
-215B;AI;VULGAR FRACTION ONE EIGHTH
-215C;AL;VULGAR FRACTION THREE EIGHTHS
-215D;AL;VULGAR FRACTION FIVE EIGHTHS
-215E;AI;VULGAR FRACTION SEVEN EIGHTHS
-215F;AL;FRACTION NUMERATOR ONE
-2160;AI;ROMAN NUMERAL ONE
-2161;AI;ROMAN NUMERAL TWO
-2162;AI;ROMAN NUMERAL THREE
-2163;AI;ROMAN NUMERAL FOUR
-2164;AI;ROMAN NUMERAL FIVE
-2165;AI;ROMAN NUMERAL SIX
-2166;AI;ROMAN NUMERAL SEVEN
-2167;AI;ROMAN NUMERAL EIGHT
-2168;AI;ROMAN NUMERAL NINE
-2169;AI;ROMAN NUMERAL TEN
-216A;AI;ROMAN NUMERAL ELEVEN
-216B;AI;ROMAN NUMERAL TWELVE
-216C;AL;ROMAN NUMERAL FIFTY
-216D;AL;ROMAN NUMERAL ONE HUNDRED
-216E;AL;ROMAN NUMERAL FIVE HUNDRED
-216F;AL;ROMAN NUMERAL ONE THOUSAND
-2170;AI;SMALL ROMAN NUMERAL ONE
-2171;AI;SMALL ROMAN NUMERAL TWO
-2172;AI;SMALL ROMAN NUMERAL THREE
-2173;AI;SMALL ROMAN NUMERAL FOUR
-2174;AI;SMALL ROMAN NUMERAL FIVE
-2175;AI;SMALL ROMAN NUMERAL SIX
-2176;AI;SMALL ROMAN NUMERAL SEVEN
-2177;AI;SMALL ROMAN NUMERAL EIGHT
-2178;AI;SMALL ROMAN NUMERAL NINE
-2179;AI;SMALL ROMAN NUMERAL TEN
-217A;AL;SMALL ROMAN NUMERAL ELEVEN
-217B;AL;SMALL ROMAN NUMERAL TWELVE
-217C;AL;SMALL ROMAN NUMERAL FIFTY
-217D;AL;SMALL ROMAN NUMERAL ONE HUNDRED
-217E;AL;SMALL ROMAN NUMERAL FIVE HUNDRED
-217F;AL;SMALL ROMAN NUMERAL ONE THOUSAND
-2180;AL;ROMAN NUMERAL ONE THOUSAND C D
-2181;AL;ROMAN NUMERAL FIVE THOUSAND
-2182;AL;ROMAN NUMERAL TEN THOUSAND
-2183;AL;ROMAN NUMERAL REVERSED ONE HUNDRED
-2190;AI;LEFTWARDS ARROW
-2191;AI;UPWARDS ARROW
-2192;AI;RIGHTWARDS ARROW
-2193;AI;DOWNWARDS ARROW
-2194;AI;LEFT RIGHT ARROW
-2195;AI;UP DOWN ARROW
-2196;AI;NORTH WEST ARROW
-2197;AI;NORTH EAST ARROW
-2198;AI;SOUTH EAST ARROW
-2199;AI;SOUTH WEST ARROW
-219A;AL;LEFTWARDS ARROW WITH STROKE
-219B;AL;RIGHTWARDS ARROW WITH STROKE
-219C;AL;LEFTWARDS WAVE ARROW
-219D;AL;RIGHTWARDS WAVE ARROW
-219E;AL;LEFTWARDS TWO HEADED ARROW
-219F;AL;UPWARDS TWO HEADED ARROW
-21A0;AL;RIGHTWARDS TWO HEADED ARROW
-21A1;AL;DOWNWARDS TWO HEADED ARROW
-21A2;AL;LEFTWARDS ARROW WITH TAIL
-21A3;AL;RIGHTWARDS ARROW WITH TAIL
-21A4;AL;LEFTWARDS ARROW FROM BAR
-21A5;AL;UPWARDS ARROW FROM BAR
-21A6;AL;RIGHTWARDS ARROW FROM BAR
-21A7;AL;DOWNWARDS ARROW FROM BAR
-21A8;AL;UP DOWN ARROW WITH BASE
-21A9;AL;LEFTWARDS ARROW WITH HOOK
-21AA;AL;RIGHTWARDS ARROW WITH HOOK
-21AB;AL;LEFTWARDS ARROW WITH LOOP
-21AC;AL;RIGHTWARDS ARROW WITH LOOP
-21AD;AL;LEFT RIGHT WAVE ARROW
-21AE;AL;LEFT RIGHT ARROW WITH STROKE
-21AF;AL;DOWNWARDS ZIGZAG ARROW
-21B0;AL;UPWARDS ARROW WITH TIP LEFTWARDS
-21B1;AL;UPWARDS ARROW WITH TIP RIGHTWARDS
-21B2;AL;DOWNWARDS ARROW WITH TIP LEFTWARDS
-21B3;AL;DOWNWARDS ARROW WITH TIP RIGHTWARDS
-21B4;AL;RIGHTWARDS ARROW WITH CORNER DOWNWARDS
-21B5;AL;DOWNWARDS ARROW WITH CORNER LEFTWARDS
-21B6;AL;ANTICLOCKWISE TOP SEMICIRCLE ARROW
-21B7;AL;CLOCKWISE TOP SEMICIRCLE ARROW
-21B8;AL;NORTH WEST ARROW TO LONG BAR
-21B9;AL;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
-21BA;AL;ANTICLOCKWISE OPEN CIRCLE ARROW
-21BB;AL;CLOCKWISE OPEN CIRCLE ARROW
-21BC;AL;LEFTWARDS HARPOON WITH BARB UPWARDS
-21BD;AL;LEFTWARDS HARPOON WITH BARB DOWNWARDS
-21BE;AL;UPWARDS HARPOON WITH BARB RIGHTWARDS
-21BF;AL;UPWARDS HARPOON WITH BARB LEFTWARDS
-21C0;AL;RIGHTWARDS HARPOON WITH BARB UPWARDS
-21C1;AL;RIGHTWARDS HARPOON WITH BARB DOWNWARDS
-21C2;AL;DOWNWARDS HARPOON WITH BARB RIGHTWARDS
-21C3;AL;DOWNWARDS HARPOON WITH BARB LEFTWARDS
-21C4;AL;RIGHTWARDS ARROW OVER LEFTWARDS ARROW
-21C5;AL;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
-21C6;AL;LEFTWARDS ARROW OVER RIGHTWARDS ARROW
-21C7;AL;LEFTWARDS PAIRED ARROWS
-21C8;AL;UPWARDS PAIRED ARROWS
-21C9;AL;RIGHTWARDS PAIRED ARROWS
-21CA;AL;DOWNWARDS PAIRED ARROWS
-21CB;AL;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
-21CC;AL;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
-21CD;AL;LEFTWARDS DOUBLE ARROW WITH STROKE
-21CE;AL;LEFT RIGHT DOUBLE ARROW WITH STROKE
-21CF;AL;RIGHTWARDS DOUBLE ARROW WITH STROKE
-21D0;AL;LEFTWARDS DOUBLE ARROW
-21D1;AL;UPWARDS DOUBLE ARROW
-21D2;AI;RIGHTWARDS DOUBLE ARROW
-21D3;AL;DOWNWARDS DOUBLE ARROW
-21D4;AI;LEFT RIGHT DOUBLE ARROW
-21D5;AL;UP DOWN DOUBLE ARROW
-21D6;AL;NORTH WEST DOUBLE ARROW
-21D7;AL;NORTH EAST DOUBLE ARROW
-21D8;AL;SOUTH EAST DOUBLE ARROW
-21D9;AL;SOUTH WEST DOUBLE ARROW
-21DA;AL;LEFTWARDS TRIPLE ARROW
-21DB;AL;RIGHTWARDS TRIPLE ARROW
-21DC;AL;LEFTWARDS SQUIGGLE ARROW
-21DD;AL;RIGHTWARDS SQUIGGLE ARROW
-21DE;AL;UPWARDS ARROW WITH DOUBLE STROKE
-21DF;AL;DOWNWARDS ARROW WITH DOUBLE STROKE
-21E0;AL;LEFTWARDS DASHED ARROW
-21E1;AL;UPWARDS DASHED ARROW
-21E2;AL;RIGHTWARDS DASHED ARROW
-21E3;AL;DOWNWARDS DASHED ARROW
-21E4;AL;LEFTWARDS ARROW TO BAR
-21E5;AL;RIGHTWARDS ARROW TO BAR
-21E6;AL;LEFTWARDS WHITE ARROW
-21E7;AL;UPWARDS WHITE ARROW
-21E8;AL;RIGHTWARDS WHITE ARROW
-21E9;AL;DOWNWARDS WHITE ARROW
-21EA;AL;UPWARDS WHITE ARROW FROM BAR
-21EB;AL;UPWARDS WHITE ARROW ON PEDESTAL
-21EC;AL;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
-21ED;AL;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
-21EE;AL;UPWARDS WHITE DOUBLE ARROW
-21EF;AL;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
-21F0;AL;RIGHTWARDS WHITE ARROW FROM WALL
-21F1;AL;NORTH WEST ARROW TO CORNER
-21F2;AL;SOUTH EAST ARROW TO CORNER
-21F3;AL;UP DOWN WHITE ARROW
-2200;AI;FOR ALL
-2201;AL;COMPLEMENT
-2202;AI;PARTIAL DIFFERENTIAL
-2203;AI;THERE EXISTS
-2204;AL;THERE DOES NOT EXIST
-2205;AL;EMPTY SET
-2206;AL;INCREMENT
-2207;AI;NABLA
-2208;AI;ELEMENT OF
-2209;AL;NOT AN ELEMENT OF
-220A;AL;SMALL ELEMENT OF
-220B;AI;CONTAINS AS MEMBER
-220C;AL;DOES NOT CONTAIN AS MEMBER
-220D;AL;SMALL CONTAINS AS MEMBER
-220E;AL;END OF PROOF
-220F;AI;N-ARY PRODUCT
-2210;AL;N-ARY COPRODUCT
-2211;AI;N-ARY SUMMATION
-2212;PR;MINUS SIGN
-2213;PR;MINUS-OR-PLUS SIGN
-2214;AL;DOT PLUS
-2215;AI;DIVISION SLASH
-2216;AL;SET MINUS
-2217;AL;ASTERISK OPERATOR
-2218;AL;RING OPERATOR
-2219;AL;BULLET OPERATOR
-221A;AI;SQUARE ROOT
-221B;AL;CUBE ROOT
-221C;AL;FOURTH ROOT
-221D;AI;PROPORTIONAL TO
-221E;AI;INFINITY
-221F;AI;RIGHT ANGLE
-2220;AI;ANGLE
-2221;AL;MEASURED ANGLE
-2222;AL;SPHERICAL ANGLE
-2223;AI;DIVIDES
-2224;AL;DOES NOT DIVIDE
-2225;AI;PARALLEL TO
-2226;AL;NOT PARALLEL TO
-2227;AI;LOGICAL AND
-2228;AI;LOGICAL OR
-2229;AI;INTERSECTION
-222A;AI;UNION
-222B;AI;INTEGRAL
-222C;AI;DOUBLE INTEGRAL
-222D;AL;TRIPLE INTEGRAL
-222E;AI;CONTOUR INTEGRAL
-222F;AL;SURFACE INTEGRAL
-2230;AL;VOLUME INTEGRAL
-2231;AL;CLOCKWISE INTEGRAL
-2232;AL;CLOCKWISE CONTOUR INTEGRAL
-2233;AL;ANTICLOCKWISE CONTOUR INTEGRAL
-2234;AI;THEREFORE
-2235;AI;BECAUSE
-2236;AI;RATIO
-2237;AI;PROPORTION
-2238;AL;DOT MINUS
-2239;AL;EXCESS
-223A;AL;GEOMETRIC PROPORTION
-223B;AL;HOMOTHETIC
-223C;AI;TILDE OPERATOR
-223D;AI;REVERSED TILDE
-223E;AL;INVERTED LAZY S
-223F;AL;SINE WAVE
-2240;AL;WREATH PRODUCT
-2241;AL;NOT TILDE
-2242;AL;MINUS TILDE
-2243;AL;ASYMPTOTICALLY EQUAL TO
-2244;AL;NOT ASYMPTOTICALLY EQUAL TO
-2245;AL;APPROXIMATELY EQUAL TO
-2246;AL;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
-2247;AL;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
-2248;AI;ALMOST EQUAL TO
-2249;AL;NOT ALMOST EQUAL TO
-224A;AL;ALMOST EQUAL OR EQUAL TO
-224B;AL;TRIPLE TILDE
-224C;AI;ALL EQUAL TO
-224D;AL;EQUIVALENT TO
-224E;AL;GEOMETRICALLY EQUIVALENT TO
-224F;AL;DIFFERENCE BETWEEN
-2250;AL;APPROACHES THE LIMIT
-2251;AL;GEOMETRICALLY EQUAL TO
-2252;AI;APPROXIMATELY EQUAL TO OR THE IMAGE OF
-2253;AL;IMAGE OF OR APPROXIMATELY EQUAL TO
-2254;AL;COLON EQUALS
-2255;AL;EQUALS COLON
-2256;AL;RING IN EQUAL TO
-2257;AL;RING EQUAL TO
-2258;AL;CORRESPONDS TO
-2259;AL;ESTIMATES
-225A;AL;EQUIANGULAR TO
-225B;AL;STAR EQUALS
-225C;AL;DELTA EQUAL TO
-225D;AL;EQUAL TO BY DEFINITION
-225E;AL;MEASURED BY
-225F;AL;QUESTIONED EQUAL TO
-2260;AI;NOT EQUAL TO
-2261;AI;IDENTICAL TO
-2262;AL;NOT IDENTICAL TO
-2263;AL;STRICTLY EQUIVALENT TO
-2264;AI;LESS-THAN OR EQUAL TO
-2265;AI;GREATER-THAN OR EQUAL TO
-2266;AI;LESS-THAN OVER EQUAL TO
-2267;AI;GREATER-THAN OVER EQUAL TO
-2268;AL;LESS-THAN BUT NOT EQUAL TO
-2269;AL;GREATER-THAN BUT NOT EQUAL TO
-226A;AI;MUCH LESS-THAN
-226B;AI;MUCH GREATER-THAN
-226C;AL;BETWEEN
-226D;AL;NOT EQUIVALENT TO
-226E;AI;NOT LESS-THAN
-226F;AI;NOT GREATER-THAN
-2270;AL;NEITHER LESS-THAN NOR EQUAL TO
-2271;AL;NEITHER GREATER-THAN NOR EQUAL TO
-2272;AL;LESS-THAN OR EQUIVALENT TO
-2273;AL;GREATER-THAN OR EQUIVALENT TO
-2274;AL;NEITHER LESS-THAN NOR EQUIVALENT TO
-2275;AL;NEITHER GREATER-THAN NOR EQUIVALENT TO
-2276;AL;LESS-THAN OR GREATER-THAN
-2277;AL;GREATER-THAN OR LESS-THAN
-2278;AL;NEITHER LESS-THAN NOR GREATER-THAN
-2279;AL;NEITHER GREATER-THAN NOR LESS-THAN
-227A;AL;PRECEDES
-227B;AL;SUCCEEDS
-227C;AL;PRECEDES OR EQUAL TO
-227D;AL;SUCCEEDS OR EQUAL TO
-227E;AL;PRECEDES OR EQUIVALENT TO
-227F;AL;SUCCEEDS OR EQUIVALENT TO
-2280;AL;DOES NOT PRECEDE
-2281;AL;DOES NOT SUCCEED
-2282;AI;SUBSET OF
-2283;AI;SUPERSET OF
-2284;AL;NOT A SUBSET OF
-2285;AL;NOT A SUPERSET OF
-2286;AI;SUBSET OF OR EQUAL TO
-2287;AI;SUPERSET OF OR EQUAL TO
-2288;AL;NEITHER A SUBSET OF NOR EQUAL TO
-2289;AL;NEITHER A SUPERSET OF NOR EQUAL TO
-228A;AL;SUBSET OF WITH NOT EQUAL TO
-228B;AL;SUPERSET OF WITH NOT EQUAL TO
-228C;AL;MULTISET
-228D;AL;MULTISET MULTIPLICATION
-228E;AL;MULTISET UNION
-228F;AL;SQUARE IMAGE OF
-2290;AL;SQUARE ORIGINAL OF
-2291;AL;SQUARE IMAGE OF OR EQUAL TO
-2292;AL;SQUARE ORIGINAL OF OR EQUAL TO
-2293;AL;SQUARE CAP
-2294;AL;SQUARE CUP
-2295;AI;CIRCLED PLUS
-2296;AL;CIRCLED MINUS
-2297;AL;CIRCLED TIMES
-2298;AL;CIRCLED DIVISION SLASH
-2299;AI;CIRCLED DOT OPERATOR
-229A;AL;CIRCLED RING OPERATOR
-229B;AL;CIRCLED ASTERISK OPERATOR
-229C;AL;CIRCLED EQUALS
-229D;AL;CIRCLED DASH
-229E;AL;SQUARED PLUS
-229F;AL;SQUARED MINUS
-22A0;AL;SQUARED TIMES
-22A1;AL;SQUARED DOT OPERATOR
-22A2;AL;RIGHT TACK
-22A3;AL;LEFT TACK
-22A4;AL;DOWN TACK
-22A5;AI;UP TACK
-22A6;AL;ASSERTION
-22A7;AL;MODELS
-22A8;AL;TRUE
-22A9;AL;FORCES
-22AA;AL;TRIPLE VERTICAL BAR RIGHT TURNSTILE
-22AB;AL;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-22AC;AL;DOES NOT PROVE
-22AD;AL;NOT TRUE
-22AE;AL;DOES NOT FORCE
-22AF;AL;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-22B0;AL;PRECEDES UNDER RELATION
-22B1;AL;SUCCEEDS UNDER RELATION
-22B2;AL;NORMAL SUBGROUP OF
-22B3;AL;CONTAINS AS NORMAL SUBGROUP
-22B4;AL;NORMAL SUBGROUP OF OR EQUAL TO
-22B5;AL;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
-22B6;AL;ORIGINAL OF
-22B7;AL;IMAGE OF
-22B8;AL;MULTIMAP
-22B9;AL;HERMITIAN CONJUGATE MATRIX
-22BA;AL;INTERCALATE
-22BB;AL;XOR
-22BC;AL;NAND
-22BD;AL;NOR
-22BE;AL;RIGHT ANGLE WITH ARC
-22BF;AI;RIGHT TRIANGLE
-22C0;AL;N-ARY LOGICAL AND
-22C1;AL;N-ARY LOGICAL OR
-22C2;AL;N-ARY INTERSECTION
-22C3;AL;N-ARY UNION
-22C4;AL;DIAMOND OPERATOR
-22C5;AL;DOT OPERATOR
-22C6;AL;STAR OPERATOR
-22C7;AL;DIVISION TIMES
-22C8;AL;BOWTIE
-22C9;AL;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CA;AL;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CB;AL;LEFT SEMIDIRECT PRODUCT
-22CC;AL;RIGHT SEMIDIRECT PRODUCT
-22CD;AL;REVERSED TILDE EQUALS
-22CE;AL;CURLY LOGICAL OR
-22CF;AL;CURLY LOGICAL AND
-22D0;AL;DOUBLE SUBSET
-22D1;AL;DOUBLE SUPERSET
-22D2;AL;DOUBLE INTERSECTION
-22D3;AL;DOUBLE UNION
-22D4;AL;PITCHFORK
-22D5;AL;EQUAL AND PARALLEL TO
-22D6;AL;LESS-THAN WITH DOT
-22D7;AL;GREATER-THAN WITH DOT
-22D8;AL;VERY MUCH LESS-THAN
-22D9;AL;VERY MUCH GREATER-THAN
-22DA;AL;LESS-THAN EQUAL TO OR GREATER-THAN
-22DB;AL;GREATER-THAN EQUAL TO OR LESS-THAN
-22DC;AL;EQUAL TO OR LESS-THAN
-22DD;AL;EQUAL TO OR GREATER-THAN
-22DE;AL;EQUAL TO OR PRECEDES
-22DF;AL;EQUAL TO OR SUCCEEDS
-22E0;AL;DOES NOT PRECEDE OR EQUAL
-22E1;AL;DOES NOT SUCCEED OR EQUAL
-22E2;AL;NOT SQUARE IMAGE OF OR EQUAL TO
-22E3;AL;NOT SQUARE ORIGINAL OF OR EQUAL TO
-22E4;AL;SQUARE IMAGE OF OR NOT EQUAL TO
-22E5;AL;SQUARE ORIGINAL OF OR NOT EQUAL TO
-22E6;AL;LESS-THAN BUT NOT EQUIVALENT TO
-22E7;AL;GREATER-THAN BUT NOT EQUIVALENT TO
-22E8;AL;PRECEDES BUT NOT EQUIVALENT TO
-22E9;AL;SUCCEEDS BUT NOT EQUIVALENT TO
-22EA;AL;NOT NORMAL SUBGROUP OF
-22EB;AL;DOES NOT CONTAIN AS NORMAL SUBGROUP
-22EC;AL;NOT NORMAL SUBGROUP OF OR EQUAL TO
-22ED;AL;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
-22EE;AL;VERTICAL ELLIPSIS
-22EF;AL;MIDLINE HORIZONTAL ELLIPSIS
-22F0;AL;UP RIGHT DIAGONAL ELLIPSIS
-22F1;AL;DOWN RIGHT DIAGONAL ELLIPSIS
-2300;AL;DIAMETER SIGN
-2301;AL;ELECTRIC ARROW
-2302;AL;HOUSE
-2303;AL;UP ARROWHEAD
-2304;AL;DOWN ARROWHEAD
-2305;AL;PROJECTIVE
-2306;AL;PERSPECTIVE
-2307;AL;WAVY LINE
-2308;AL;LEFT CEILING
-2309;AL;RIGHT CEILING
-230A;AL;LEFT FLOOR
-230B;AL;RIGHT FLOOR
-230C;AL;BOTTOM RIGHT CROP
-230D;AL;BOTTOM LEFT CROP
-230E;AL;TOP RIGHT CROP
-230F;AL;TOP LEFT CROP
-2310;AL;REVERSED NOT SIGN
-2311;AL;SQUARE LOZENGE
-2312;AI;ARC
-2313;AL;SEGMENT
-2314;AL;SECTOR
-2315;AL;TELEPHONE RECORDER
-2316;AL;POSITION INDICATOR
-2317;AL;VIEWDATA SQUARE
-2318;AL;PLACE OF INTEREST SIGN
-2319;AL;TURNED NOT SIGN
-231A;AL;WATCH
-231B;AL;HOURGLASS
-231C;AL;TOP LEFT CORNER
-231D;AL;TOP RIGHT CORNER
-231E;AL;BOTTOM LEFT CORNER
-231F;AL;BOTTOM RIGHT CORNER
-2320;AL;TOP HALF INTEGRAL
-2321;AL;BOTTOM HALF INTEGRAL
-2322;AL;FROWN
-2323;AL;SMILE
-2324;AL;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
-2325;AL;OPTION KEY
-2326;AL;ERASE TO THE RIGHT
-2327;AL;X IN A RECTANGLE BOX
-2328;AL;KEYBOARD
-2329;OP;LEFT-POINTING ANGLE BRACKET
-232A;CL;RIGHT-POINTING ANGLE BRACKET
-232B;AL;ERASE TO THE LEFT
-232C;AL;BENZENE RING
-232D;AL;CYLINDRICITY
-232E;AL;ALL AROUND-PROFILE
-232F;AL;SYMMETRY
-2330;AL;TOTAL RUNOUT
-2331;AL;DIMENSION ORIGIN
-2332;AL;CONICAL TAPER
-2333;AL;SLOPE
-2334;AL;COUNTERBORE
-2335;AL;COUNTERSINK
-2336;AL;APL FUNCTIONAL SYMBOL I-BEAM
-2337;AL;APL FUNCTIONAL SYMBOL SQUISH QUAD
-2338;AL;APL FUNCTIONAL SYMBOL QUAD EQUAL
-2339;AL;APL FUNCTIONAL SYMBOL QUAD DIVIDE
-233A;AL;APL FUNCTIONAL SYMBOL QUAD DIAMOND
-233B;AL;APL FUNCTIONAL SYMBOL QUAD JOT
-233C;AL;APL FUNCTIONAL SYMBOL QUAD CIRCLE
-233D;AL;APL FUNCTIONAL SYMBOL CIRCLE STILE
-233E;AL;APL FUNCTIONAL SYMBOL CIRCLE JOT
-233F;AL;APL FUNCTIONAL SYMBOL SLASH BAR
-2340;AL;APL FUNCTIONAL SYMBOL BACKSLASH BAR
-2341;AL;APL FUNCTIONAL SYMBOL QUAD SLASH
-2342;AL;APL FUNCTIONAL SYMBOL QUAD BACKSLASH
-2343;AL;APL FUNCTIONAL SYMBOL QUAD LESS-THAN
-2344;AL;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
-2345;AL;APL FUNCTIONAL SYMBOL LEFTWARDS VANE
-2346;AL;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
-2347;AL;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
-2348;AL;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
-2349;AL;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
-234A;AL;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
-234B;AL;APL FUNCTIONAL SYMBOL DELTA STILE
-234C;AL;APL FUNCTIONAL SYMBOL QUAD DOWN CARET
-234D;AL;APL FUNCTIONAL SYMBOL QUAD DELTA
-234E;AL;APL FUNCTIONAL SYMBOL DOWN TACK JOT
-234F;AL;APL FUNCTIONAL SYMBOL UPWARDS VANE
-2350;AL;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
-2351;AL;APL FUNCTIONAL SYMBOL UP TACK OVERBAR
-2352;AL;APL FUNCTIONAL SYMBOL DEL STILE
-2353;AL;APL FUNCTIONAL SYMBOL QUAD UP CARET
-2354;AL;APL FUNCTIONAL SYMBOL QUAD DEL
-2355;AL;APL FUNCTIONAL SYMBOL UP TACK JOT
-2356;AL;APL FUNCTIONAL SYMBOL DOWNWARDS VANE
-2357;AL;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
-2358;AL;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
-2359;AL;APL FUNCTIONAL SYMBOL DELTA UNDERBAR
-235A;AL;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
-235B;AL;APL FUNCTIONAL SYMBOL JOT UNDERBAR
-235C;AL;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
-235D;AL;APL FUNCTIONAL SYMBOL UP SHOE JOT
-235E;AL;APL FUNCTIONAL SYMBOL QUOTE QUAD
-235F;AL;APL FUNCTIONAL SYMBOL CIRCLE STAR
-2360;AL;APL FUNCTIONAL SYMBOL QUAD COLON
-2361;AL;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
-2362;AL;APL FUNCTIONAL SYMBOL DEL DIAERESIS
-2363;AL;APL FUNCTIONAL SYMBOL STAR DIAERESIS
-2364;AL;APL FUNCTIONAL SYMBOL JOT DIAERESIS
-2365;AL;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
-2366;AL;APL FUNCTIONAL SYMBOL DOWN SHOE STILE
-2367;AL;APL FUNCTIONAL SYMBOL LEFT SHOE STILE
-2368;AL;APL FUNCTIONAL SYMBOL TILDE DIAERESIS
-2369;AL;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
-236A;AL;APL FUNCTIONAL SYMBOL COMMA BAR
-236B;AL;APL FUNCTIONAL SYMBOL DEL TILDE
-236C;AL;APL FUNCTIONAL SYMBOL ZILDE
-236D;AL;APL FUNCTIONAL SYMBOL STILE TILDE
-236E;AL;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
-236F;AL;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
-2370;AL;APL FUNCTIONAL SYMBOL QUAD QUESTION
-2371;AL;APL FUNCTIONAL SYMBOL DOWN CARET TILDE
-2372;AL;APL FUNCTIONAL SYMBOL UP CARET TILDE
-2373;AL;APL FUNCTIONAL SYMBOL IOTA
-2374;AL;APL FUNCTIONAL SYMBOL RHO
-2375;AL;APL FUNCTIONAL SYMBOL OMEGA
-2376;AL;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
-2377;AL;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
-2378;AL;APL FUNCTIONAL SYMBOL IOTA UNDERBAR
-2379;AL;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
-237A;AL;APL FUNCTIONAL SYMBOL ALPHA
-237B;AL;NOT CHECK MARK
-237D;AL;SHOULDERED OPEN BOX
-237E;AL;BELL SYMBOL
-237F;AL;VERTICAL LINE WITH MIDDLE DOT
-2380;AL;INSERTION SYMBOL
-2381;AL;CONTINUOUS UNDERLINE SYMBOL
-2382;AL;DISCONTINUOUS UNDERLINE SYMBOL
-2383;AL;EMPHASIS SYMBOL
-2384;AL;COMPOSITION SYMBOL
-2385;AL;WHITE SQUARE WITH CENTRE VERTICAL LINE
-2386;AL;ENTER SYMBOL
-2387;AL;ALTERNATIVE KEY SYMBOL
-2388;AL;HELM SYMBOL
-2389;AL;CIRCLED HORIZONTAL BAR WITH NOTCH
-238A;AL;CIRCLED TRIANGLE DOWN
-238B;AL;BROKEN CIRCLE WITH NORTHWEST ARROW
-238C;AL;UNDO SYMBOL
-238D;AL;MONOSTABLE SYMBOL
-238E;AL;HYSTERESIS SYMBOL
-238F;AL;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
-2390;AL;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
-2391;AL;PASSIVE-PULL-DOWN-OUTPUT SYMBOL
-2392;AL;PASSIVE-PULL-UP-OUTPUT SYMBOL
-2393;AL;DIRECT CURRENT SYMBOL FORM TWO
-2394;AL;SOFTWARE-FUNCTION SYMBOL
-2395;AL;APL FUNCTIONAL SYMBOL QUAD
-2396;AL;DECIMAL SEPARATOR KEY SYMBOL
-2397;AL;PREVIOUS PAGE
-2398;AL;NEXT PAGE
-2399;AL;PRINT SCREEN SYMBOL
-239A;AL;CLEAR SCREEN SYMBOL
-2400;AL;SYMBOL FOR NULL
-2401;AL;SYMBOL FOR START OF HEADING
-2402;AL;SYMBOL FOR START OF TEXT
-2403;AL;SYMBOL FOR END OF TEXT
-2404;AL;SYMBOL FOR END OF TRANSMISSION
-2405;AL;SYMBOL FOR ENQUIRY
-2406;AL;SYMBOL FOR ACKNOWLEDGE
-2407;AL;SYMBOL FOR BELL
-2408;AL;SYMBOL FOR BACKSPACE
-2409;AL;SYMBOL FOR HORIZONTAL TABULATION
-240A;AL;SYMBOL FOR LINE FEED
-240B;AL;SYMBOL FOR VERTICAL TABULATION
-240C;AL;SYMBOL FOR FORM FEED
-240D;AL;SYMBOL FOR CARRIAGE RETURN
-240E;AL;SYMBOL FOR SHIFT OUT
-240F;AL;SYMBOL FOR SHIFT IN
-2410;AL;SYMBOL FOR DATA LINK ESCAPE
-2411;AL;SYMBOL FOR DEVICE CONTROL ONE
-2412;AL;SYMBOL FOR DEVICE CONTROL TWO
-2413;AL;SYMBOL FOR DEVICE CONTROL THREE
-2414;AL;SYMBOL FOR DEVICE CONTROL FOUR
-2415;AL;SYMBOL FOR NEGATIVE ACKNOWLEDGE
-2416;AL;SYMBOL FOR SYNCHRONOUS IDLE
-2417;AL;SYMBOL FOR END OF TRANSMISSION BLOCK
-2418;AL;SYMBOL FOR CANCEL
-2419;AL;SYMBOL FOR END OF MEDIUM
-241A;AL;SYMBOL FOR SUBSTITUTE
-241B;AL;SYMBOL FOR ESCAPE
-241C;AL;SYMBOL FOR FILE SEPARATOR
-241D;AL;SYMBOL FOR GROUP SEPARATOR
-241E;AL;SYMBOL FOR RECORD SEPARATOR
-241F;AL;SYMBOL FOR UNIT SEPARATOR
-2420;AL;SYMBOL FOR SPACE
-2421;AL;SYMBOL FOR DELETE
-2422;AL;BLANK SYMBOL
-2423;AL;OPEN BOX
-2424;AL;SYMBOL FOR NEWLINE
-2425;AL;SYMBOL FOR DELETE FORM TWO
-2426;AL;SYMBOL FOR SUBSTITUTE FORM TWO
-2440;AL;OCR HOOK
-2441;AL;OCR CHAIR
-2442;AL;OCR FORK
-2443;AL;OCR INVERTED FORK
-2444;AL;OCR BELT BUCKLE
-2445;AL;OCR BOW TIE
-2446;AL;OCR BRANCH BANK IDENTIFICATION
-2447;AL;OCR AMOUNT OF CHECK
-2448;AL;OCR DASH
-2449;AL;OCR CUSTOMER ACCOUNT NUMBER
-244A;AL;OCR DOUBLE BACKSLASH
-2460;AI;CIRCLED DIGIT ONE
-2461;AI;CIRCLED DIGIT TWO
-2462;AI;CIRCLED DIGIT THREE
-2463;AI;CIRCLED DIGIT FOUR
-2464;AI;CIRCLED DIGIT FIVE
-2465;AI;CIRCLED DIGIT SIX
-2466;AI;CIRCLED DIGIT SEVEN
-2467;AI;CIRCLED DIGIT EIGHT
-2468;AI;CIRCLED DIGIT NINE
-2469;AI;CIRCLED NUMBER TEN
-246A;AI;CIRCLED NUMBER ELEVEN
-246B;AI;CIRCLED NUMBER TWELVE
-246C;AI;CIRCLED NUMBER THIRTEEN
-246D;AI;CIRCLED NUMBER FOURTEEN
-246E;AI;CIRCLED NUMBER FIFTEEN
-246F;AI;CIRCLED NUMBER SIXTEEN
-2470;AI;CIRCLED NUMBER SEVENTEEN
-2471;AI;CIRCLED NUMBER EIGHTEEN
-2472;AI;CIRCLED NUMBER NINETEEN
-2473;AI;CIRCLED NUMBER TWENTY
-2474;AI;PARENTHESIZED DIGIT ONE
-2475;AI;PARENTHESIZED DIGIT TWO
-2476;AI;PARENTHESIZED DIGIT THREE
-2477;AI;PARENTHESIZED DIGIT FOUR
-2478;AI;PARENTHESIZED DIGIT FIVE
-2479;AI;PARENTHESIZED DIGIT SIX
-247A;AI;PARENTHESIZED DIGIT SEVEN
-247B;AI;PARENTHESIZED DIGIT EIGHT
-247C;AI;PARENTHESIZED DIGIT NINE
-247D;AI;PARENTHESIZED NUMBER TEN
-247E;AI;PARENTHESIZED NUMBER ELEVEN
-247F;AI;PARENTHESIZED NUMBER TWELVE
-2480;AI;PARENTHESIZED NUMBER THIRTEEN
-2481;AI;PARENTHESIZED NUMBER FOURTEEN
-2482;AI;PARENTHESIZED NUMBER FIFTEEN
-2483;AI;PARENTHESIZED NUMBER SIXTEEN
-2484;AI;PARENTHESIZED NUMBER SEVENTEEN
-2485;AI;PARENTHESIZED NUMBER EIGHTEEN
-2486;AI;PARENTHESIZED NUMBER NINETEEN
-2487;AI;PARENTHESIZED NUMBER TWENTY
-2488;AI;DIGIT ONE FULL STOP
-2489;AI;DIGIT TWO FULL STOP
-248A;AI;DIGIT THREE FULL STOP
-248B;AI;DIGIT FOUR FULL STOP
-248C;AI;DIGIT FIVE FULL STOP
-248D;AI;DIGIT SIX FULL STOP
-248E;AI;DIGIT SEVEN FULL STOP
-248F;AI;DIGIT EIGHT FULL STOP
-2490;AI;DIGIT NINE FULL STOP
-2491;AI;NUMBER TEN FULL STOP
-2492;AI;NUMBER ELEVEN FULL STOP
-2493;AI;NUMBER TWELVE FULL STOP
-2494;AI;NUMBER THIRTEEN FULL STOP
-2495;AI;NUMBER FOURTEEN FULL STOP
-2496;AI;NUMBER FIFTEEN FULL STOP
-2497;AI;NUMBER SIXTEEN FULL STOP
-2498;AI;NUMBER SEVENTEEN FULL STOP
-2499;AI;NUMBER EIGHTEEN FULL STOP
-249A;AI;NUMBER NINETEEN FULL STOP
-249B;AI;NUMBER TWENTY FULL STOP
-249C;AI;PARENTHESIZED LATIN SMALL LETTER A
-249D;AI;PARENTHESIZED LATIN SMALL LETTER B
-249E;AI;PARENTHESIZED LATIN SMALL LETTER C
-249F;AI;PARENTHESIZED LATIN SMALL LETTER D
-24A0;AI;PARENTHESIZED LATIN SMALL LETTER E
-24A1;AI;PARENTHESIZED LATIN SMALL LETTER F
-24A2;AI;PARENTHESIZED LATIN SMALL LETTER G
-24A3;AI;PARENTHESIZED LATIN SMALL LETTER H
-24A4;AI;PARENTHESIZED LATIN SMALL LETTER I
-24A5;AI;PARENTHESIZED LATIN SMALL LETTER J
-24A6;AI;PARENTHESIZED LATIN SMALL LETTER K
-24A7;AI;PARENTHESIZED LATIN SMALL LETTER L
-24A8;AI;PARENTHESIZED LATIN SMALL LETTER M
-24A9;AI;PARENTHESIZED LATIN SMALL LETTER N
-24AA;AI;PARENTHESIZED LATIN SMALL LETTER O
-24AB;AI;PARENTHESIZED LATIN SMALL LETTER P
-24AC;AI;PARENTHESIZED LATIN SMALL LETTER Q
-24AD;AI;PARENTHESIZED LATIN SMALL LETTER R
-24AE;AI;PARENTHESIZED LATIN SMALL LETTER S
-24AF;AI;PARENTHESIZED LATIN SMALL LETTER T
-24B0;AI;PARENTHESIZED LATIN SMALL LETTER U
-24B1;AI;PARENTHESIZED LATIN SMALL LETTER V
-24B2;AI;PARENTHESIZED LATIN SMALL LETTER W
-24B3;AI;PARENTHESIZED LATIN SMALL LETTER X
-24B4;AI;PARENTHESIZED LATIN SMALL LETTER Y
-24B5;AI;PARENTHESIZED LATIN SMALL LETTER Z
-24B6;AI;CIRCLED LATIN CAPITAL LETTER A
-24B7;AI;CIRCLED LATIN CAPITAL LETTER B
-24B8;AI;CIRCLED LATIN CAPITAL LETTER C
-24B9;AI;CIRCLED LATIN CAPITAL LETTER D
-24BA;AI;CIRCLED LATIN CAPITAL LETTER E
-24BB;AI;CIRCLED LATIN CAPITAL LETTER F
-24BC;AI;CIRCLED LATIN CAPITAL LETTER G
-24BD;AI;CIRCLED LATIN CAPITAL LETTER H
-24BE;AI;CIRCLED LATIN CAPITAL LETTER I
-24BF;AI;CIRCLED LATIN CAPITAL LETTER J
-24C0;AL;CIRCLED LATIN CAPITAL LETTER K
-24C1;AL;CIRCLED LATIN CAPITAL LETTER L
-24C2;AL;CIRCLED LATIN CAPITAL LETTER M
-24C3;AL;CIRCLED LATIN CAPITAL LETTER N
-24C4;AL;CIRCLED LATIN CAPITAL LETTER O
-24C5;AL;CIRCLED LATIN CAPITAL LETTER P
-24C6;AL;CIRCLED LATIN CAPITAL LETTER Q
-24C7;AL;CIRCLED LATIN CAPITAL LETTER R
-24C8;AL;CIRCLED LATIN CAPITAL LETTER S
-24C9;AL;CIRCLED LATIN CAPITAL LETTER T
-24CA;AL;CIRCLED LATIN CAPITAL LETTER U
-24CB;AL;CIRCLED LATIN CAPITAL LETTER V
-24CC;AL;CIRCLED LATIN CAPITAL LETTER W
-24CD;AL;CIRCLED LATIN CAPITAL LETTER X
-24CE;AL;CIRCLED LATIN CAPITAL LETTER Y
-24CF;AL;CIRCLED LATIN CAPITAL LETTER Z
-24D0;AI;CIRCLED LATIN SMALL LETTER A
-24D1;AI;CIRCLED LATIN SMALL LETTER B
-24D2;AI;CIRCLED LATIN SMALL LETTER C
-24D3;AI;CIRCLED LATIN SMALL LETTER D
-24D4;AI;CIRCLED LATIN SMALL LETTER E
-24D5;AI;CIRCLED LATIN SMALL LETTER F
-24D6;AI;CIRCLED LATIN SMALL LETTER G
-24D7;AI;CIRCLED LATIN SMALL LETTER H
-24D8;AI;CIRCLED LATIN SMALL LETTER I
-24D9;AI;CIRCLED LATIN SMALL LETTER J
-24DA;AI;CIRCLED LATIN SMALL LETTER K
-24DB;AI;CIRCLED LATIN SMALL LETTER L
-24DC;AI;CIRCLED LATIN SMALL LETTER M
-24DD;AI;CIRCLED LATIN SMALL LETTER N
-24DE;AI;CIRCLED LATIN SMALL LETTER O
-24DF;AI;CIRCLED LATIN SMALL LETTER P
-24E0;AI;CIRCLED LATIN SMALL LETTER Q
-24E1;AI;CIRCLED LATIN SMALL LETTER R
-24E2;AI;CIRCLED LATIN SMALL LETTER S
-24E3;AI;CIRCLED LATIN SMALL LETTER T
-24E4;AI;CIRCLED LATIN SMALL LETTER U
-24E5;AI;CIRCLED LATIN SMALL LETTER V
-24E6;AI;CIRCLED LATIN SMALL LETTER W
-24E7;AI;CIRCLED LATIN SMALL LETTER X
-24E8;AI;CIRCLED LATIN SMALL LETTER Y
-24E9;AI;CIRCLED LATIN SMALL LETTER Z
-24EA;AL;CIRCLED DIGIT ZERO
-2500;AI;BOX DRAWINGS LIGHT HORIZONTAL
-2501;AI;BOX DRAWINGS HEAVY HORIZONTAL
-2502;AI;BOX DRAWINGS LIGHT VERTICAL
-2503;AI;BOX DRAWINGS HEAVY VERTICAL
-2504;AI;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
-2505;AI;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
-2506;AI;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
-2507;AI;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
-2508;AI;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
-2509;AI;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
-250A;AI;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
-250B;AI;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
-250C;AI;BOX DRAWINGS LIGHT DOWN AND RIGHT
-250D;AI;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
-250E;AI;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
-250F;AI;BOX DRAWINGS HEAVY DOWN AND RIGHT
-2510;AI;BOX DRAWINGS LIGHT DOWN AND LEFT
-2511;AI;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
-2512;AI;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
-2513;AI;BOX DRAWINGS HEAVY DOWN AND LEFT
-2514;AI;BOX DRAWINGS LIGHT UP AND RIGHT
-2515;AI;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
-2516;AI;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
-2517;AI;BOX DRAWINGS HEAVY UP AND RIGHT
-2518;AI;BOX DRAWINGS LIGHT UP AND LEFT
-2519;AI;BOX DRAWINGS UP LIGHT AND LEFT HEAVY
-251A;AI;BOX DRAWINGS UP HEAVY AND LEFT LIGHT
-251B;AI;BOX DRAWINGS HEAVY UP AND LEFT
-251C;AI;BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-251D;AI;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
-251E;AI;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
-251F;AI;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
-2520;AI;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
-2521;AI;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
-2522;AI;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
-2523;AI;BOX DRAWINGS HEAVY VERTICAL AND RIGHT
-2524;AI;BOX DRAWINGS LIGHT VERTICAL AND LEFT
-2525;AI;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
-2526;AI;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
-2527;AI;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
-2528;AI;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
-2529;AI;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
-252A;AI;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
-252B;AI;BOX DRAWINGS HEAVY VERTICAL AND LEFT
-252C;AI;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-252D;AI;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
-252E;AI;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
-252F;AI;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
-2530;AI;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
-2531;AI;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
-2532;AI;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
-2533;AI;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
-2534;AI;BOX DRAWINGS LIGHT UP AND HORIZONTAL
-2535;AI;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
-2536;AI;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
-2537;AI;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
-2538;AI;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
-2539;AI;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
-253A;AI;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
-253B;AI;BOX DRAWINGS HEAVY UP AND HORIZONTAL
-253C;AI;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-253D;AI;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
-253E;AI;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
-253F;AI;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
-2540;AI;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
-2541;AI;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
-2542;AI;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
-2543;AI;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
-2544;AI;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
-2545;AI;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
-2546;AI;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
-2547;AI;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
-2548;AI;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
-2549;AI;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
-254A;AI;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
-254B;AI;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
-254C;AL;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
-254D;AL;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
-254E;AL;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
-254F;AL;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
-2550;AI;BOX DRAWINGS DOUBLE HORIZONTAL
-2551;AI;BOX DRAWINGS DOUBLE VERTICAL
-2552;AI;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-2553;AI;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-2554;AI;BOX DRAWINGS DOUBLE DOWN AND RIGHT
-2555;AI;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-2556;AI;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-2557;AI;BOX DRAWINGS DOUBLE DOWN AND LEFT
-2558;AI;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-2559;AI;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-255A;AI;BOX DRAWINGS DOUBLE UP AND RIGHT
-255B;AI;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-255C;AI;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-255D;AI;BOX DRAWINGS DOUBLE UP AND LEFT
-255E;AI;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-255F;AI;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-2560;AI;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-2561;AI;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-2562;AI;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-2563;AI;BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-2564;AI;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-2565;AI;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-2566;AI;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-2567;AI;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-2568;AI;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-2569;AI;BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-256A;AI;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-256B;AI;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-256C;AI;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-256D;AI;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
-256E;AI;BOX DRAWINGS LIGHT ARC DOWN AND LEFT
-256F;AI;BOX DRAWINGS LIGHT ARC UP AND LEFT
-2570;AI;BOX DRAWINGS LIGHT ARC UP AND RIGHT
-2571;AI;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
-2572;AI;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
-2573;AI;BOX DRAWINGS LIGHT DIAGONAL CROSS
-2574;AI;BOX DRAWINGS LIGHT LEFT
-2575;AL;BOX DRAWINGS LIGHT UP
-2576;AL;BOX DRAWINGS LIGHT RIGHT
-2577;AL;BOX DRAWINGS LIGHT DOWN
-2578;AL;BOX DRAWINGS HEAVY LEFT
-2579;AL;BOX DRAWINGS HEAVY UP
-257A;AL;BOX DRAWINGS HEAVY RIGHT
-257B;AL;BOX DRAWINGS HEAVY DOWN
-257C;AL;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
-257D;AL;BOX DRAWINGS LIGHT UP AND HEAVY DOWN
-257E;AL;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
-257F;AL;BOX DRAWINGS HEAVY UP AND LIGHT DOWN
-2580;AI;UPPER HALF BLOCK
-2581;AI;LOWER ONE EIGHTH BLOCK
-2582;AI;LOWER ONE QUARTER BLOCK
-2583;AI;LOWER THREE EIGHTHS BLOCK
-2584;AI;LOWER HALF BLOCK
-2585;AI;LOWER FIVE EIGHTHS BLOCK
-2586;AI;LOWER THREE QUARTERS BLOCK
-2587;AI;LOWER SEVEN EIGHTHS BLOCK
-2588;AI;FULL BLOCK
-2589;AI;LEFT SEVEN EIGHTHS BLOCK
-258A;AI;LEFT THREE QUARTERS BLOCK
-258B;AI;LEFT FIVE EIGHTHS BLOCK
-258C;AI;LEFT HALF BLOCK
-258D;AI;LEFT THREE EIGHTHS BLOCK
-258E;AI;LEFT ONE QUARTER BLOCK
-258F;AI;LEFT ONE EIGHTH BLOCK
-2590;AL;RIGHT HALF BLOCK
-2591;AL;LIGHT SHADE
-2592;AI;MEDIUM SHADE
-2593;AI;DARK SHADE
-2594;AI;UPPER ONE EIGHTH BLOCK
-2595;AI;RIGHT ONE EIGHTH BLOCK
-25A0;AI;BLACK SQUARE
-25A1;AI;WHITE SQUARE
-25A2;AL;WHITE SQUARE WITH ROUNDED CORNERS
-25A3;AI;WHITE SQUARE CONTAINING BLACK SMALL SQUARE
-25A4;AI;SQUARE WITH HORIZONTAL FILL
-25A5;AI;SQUARE WITH VERTICAL FILL
-25A6;AI;SQUARE WITH ORTHOGONAL CROSSHATCH FILL
-25A7;AI;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
-25A8;AI;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
-25A9;AI;SQUARE WITH DIAGONAL CROSSHATCH FILL
-25AA;AL;BLACK SMALL SQUARE
-25AB;AL;WHITE SMALL SQUARE
-25AC;AL;BLACK RECTANGLE
-25AD;AL;WHITE RECTANGLE
-25AE;AL;BLACK VERTICAL RECTANGLE
-25AF;AL;WHITE VERTICAL RECTANGLE
-25B0;AL;BLACK PARALLELOGRAM
-25B1;AL;WHITE PARALLELOGRAM
-25B2;AI;BLACK UP-POINTING TRIANGLE
-25B3;AI;WHITE UP-POINTING TRIANGLE
-25B4;AL;BLACK UP-POINTING SMALL TRIANGLE
-25B5;AL;WHITE UP-POINTING SMALL TRIANGLE
-25B6;AI;BLACK RIGHT-POINTING TRIANGLE
-25B7;AI;WHITE RIGHT-POINTING TRIANGLE
-25B8;AL;BLACK RIGHT-POINTING SMALL TRIANGLE
-25B9;AL;WHITE RIGHT-POINTING SMALL TRIANGLE
-25BA;AL;BLACK RIGHT-POINTING POINTER
-25BB;AL;WHITE RIGHT-POINTING POINTER
-25BC;AI;BLACK DOWN-POINTING TRIANGLE
-25BD;AI;WHITE DOWN-POINTING TRIANGLE
-25BE;AL;BLACK DOWN-POINTING SMALL TRIANGLE
-25BF;AL;WHITE DOWN-POINTING SMALL TRIANGLE
-25C0;AI;BLACK LEFT-POINTING TRIANGLE
-25C1;AI;WHITE LEFT-POINTING TRIANGLE
-25C2;AL;BLACK LEFT-POINTING SMALL TRIANGLE
-25C3;AL;WHITE LEFT-POINTING SMALL TRIANGLE
-25C4;AL;BLACK LEFT-POINTING POINTER
-25C5;AL;WHITE LEFT-POINTING POINTER
-25C6;AI;BLACK DIAMOND
-25C7;AI;WHITE DIAMOND
-25C8;AL;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
-25C9;AL;FISHEYE
-25CA;AL;LOZENGE
-25CB;AI;WHITE CIRCLE
-25CC;AL;DOTTED CIRCLE
-25CD;AL;CIRCLE WITH VERTICAL FILL
-25CE;AI;BULLSEYE
-25CF;AI;BLACK CIRCLE
-25D0;AI;CIRCLE WITH LEFT HALF BLACK
-25D1;AI;CIRCLE WITH RIGHT HALF BLACK
-25D2;AL;CIRCLE WITH LOWER HALF BLACK
-25D3;AL;CIRCLE WITH UPPER HALF BLACK
-25D4;AL;CIRCLE WITH UPPER RIGHT QUADRANT BLACK
-25D5;AL;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
-25D6;AL;LEFT HALF BLACK CIRCLE
-25D7;AL;RIGHT HALF BLACK CIRCLE
-25D8;AL;INVERSE BULLET
-25D9;AL;INVERSE WHITE CIRCLE
-25DA;AL;UPPER HALF INVERSE WHITE CIRCLE
-25DB;AL;LOWER HALF INVERSE WHITE CIRCLE
-25DC;AL;UPPER LEFT QUADRANT CIRCULAR ARC
-25DD;AL;UPPER RIGHT QUADRANT CIRCULAR ARC
-25DE;AL;LOWER RIGHT QUADRANT CIRCULAR ARC
-25DF;AL;LOWER LEFT QUADRANT CIRCULAR ARC
-25E0;AL;UPPER HALF CIRCLE
-25E1;AL;LOWER HALF CIRCLE
-25E2;AI;BLACK LOWER RIGHT TRIANGLE
-25E3;AI;BLACK LOWER LEFT TRIANGLE
-25E4;AI;BLACK UPPER LEFT TRIANGLE
-25E5;AI;BLACK UPPER RIGHT TRIANGLE
-25E6;AL;WHITE BULLET
-25E7;AL;SQUARE WITH LEFT HALF BLACK
-25E8;AL;SQUARE WITH RIGHT HALF BLACK
-25E9;AL;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
-25EA;AL;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
-25EB;AL;WHITE SQUARE WITH VERTICAL BISECTING LINE
-25EC;AL;WHITE UP-POINTING TRIANGLE WITH DOT
-25ED;AL;UP-POINTING TRIANGLE WITH LEFT HALF BLACK
-25EE;AL;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
-25EF;AI;LARGE CIRCLE
-25F0;AL;WHITE SQUARE WITH UPPER LEFT QUADRANT
-25F1;AL;WHITE SQUARE WITH LOWER LEFT QUADRANT
-25F2;AL;WHITE SQUARE WITH LOWER RIGHT QUADRANT
-25F3;AL;WHITE SQUARE WITH UPPER RIGHT QUADRANT
-25F4;AL;WHITE CIRCLE WITH UPPER LEFT QUADRANT
-25F5;AL;WHITE CIRCLE WITH LOWER LEFT QUADRANT
-25F6;AL;WHITE CIRCLE WITH LOWER RIGHT QUADRANT
-25F7;AL;WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-2600;AL;BLACK SUN WITH RAYS
-2601;AL;CLOUD
-2602;AL;UMBRELLA
-2603;AL;SNOWMAN
-2604;AL;COMET
-2605;AI;BLACK STAR
-2606;AI;WHITE STAR
-2607;AL;LIGHTNING
-2608;AL;THUNDERSTORM
-2609;AI;SUN
-260A;AL;ASCENDING NODE
-260B;AL;DESCENDING NODE
-260C;AL;CONJUNCTION
-260D;AL;OPPOSITION
-260E;AI;BLACK TELEPHONE
-260F;AI;WHITE TELEPHONE
-2610;AL;BALLOT BOX
-2611;AL;BALLOT BOX WITH CHECK
-2612;AL;BALLOT BOX WITH X
-2613;AL;SALTIRE
-2619;AL;REVERSED ROTATED FLORAL HEART BULLET
-261A;AL;BLACK LEFT POINTING INDEX
-261B;AL;BLACK RIGHT POINTING INDEX
-261C;AI;WHITE LEFT POINTING INDEX
-261D;AL;WHITE UP POINTING INDEX
-261E;AI;WHITE RIGHT POINTING INDEX
-261F;AL;WHITE DOWN POINTING INDEX
-2620;AL;SKULL AND CROSSBONES
-2621;AL;CAUTION SIGN
-2622;AL;RADIOACTIVE SIGN
-2623;AL;BIOHAZARD SIGN
-2624;AL;CADUCEUS
-2625;AL;ANKH
-2626;AL;ORTHODOX CROSS
-2627;AL;CHI RHO
-2628;AL;CROSS OF LORRAINE
-2629;AL;CROSS OF JERUSALEM
-262A;AL;STAR AND CRESCENT
-262B;AL;FARSI SYMBOL
-262C;AL;ADI SHAKTI
-262D;AL;HAMMER AND SICKLE
-262E;AL;PEACE SYMBOL
-262F;AL;YIN YANG
-2630;AL;TRIGRAM FOR HEAVEN
-2631;AL;TRIGRAM FOR LAKE
-2632;AL;TRIGRAM FOR FIRE
-2633;AL;TRIGRAM FOR THUNDER
-2634;AL;TRIGRAM FOR WIND
-2635;AL;TRIGRAM FOR WATER
-2636;AL;TRIGRAM FOR MOUNTAIN
-2637;AL;TRIGRAM FOR EARTH
-2638;AL;WHEEL OF DHARMA
-2639;AL;WHITE FROWNING FACE
-263A;AL;WHITE SMILING FACE
-263B;AL;BLACK SMILING FACE
-263C;AL;WHITE SUN WITH RAYS
-263D;AL;FIRST QUARTER MOON
-263E;AL;LAST QUARTER MOON
-263F;AL;MERCURY
-2640;AI;FEMALE SIGN
-2641;AL;EARTH
-2642;AI;MALE SIGN
-2643;AL;JUPITER
-2644;AL;SATURN
-2645;AL;URANUS
-2646;AL;NEPTUNE
-2647;AL;PLUTO
-2648;AL;ARIES
-2649;AL;TAURUS
-264A;AL;GEMINI
-264B;AL;CANCER
-264C;AL;LEO
-264D;AL;VIRGO
-264E;AL;LIBRA
-264F;AL;SCORPIUS
-2650;AL;SAGITTARIUS
-2651;AL;CAPRICORN
-2652;AL;AQUARIUS
-2653;AL;PISCES
-2654;AL;WHITE CHESS KING
-2655;AL;WHITE CHESS QUEEN
-2656;AL;WHITE CHESS ROOK
-2657;AL;WHITE CHESS BISHOP
-2658;AL;WHITE CHESS KNIGHT
-2659;AL;WHITE CHESS PAWN
-265A;AL;BLACK CHESS KING
-265B;AL;BLACK CHESS QUEEN
-265C;AL;BLACK CHESS ROOK
-265D;AL;BLACK CHESS BISHOP
-265E;AL;BLACK CHESS KNIGHT
-265F;AL;BLACK CHESS PAWN
-2660;AI;BLACK SPADE SUIT
-2661;AI;WHITE HEART SUIT
-2662;AL;WHITE DIAMOND SUIT
-2663;AI;BLACK CLUB SUIT
-2664;AI;WHITE SPADE SUIT
-2665;AI;BLACK HEART SUIT
-2666;AL;BLACK DIAMOND SUIT
-2667;AI;WHITE CLUB SUIT
-2668;AI;HOT SPRINGS
-2669;AI;QUARTER NOTE
-266A;AI;EIGHTH NOTE
-266B;AL;BEAMED EIGHTH NOTES
-266C;AI;BEAMED SIXTEENTH NOTES
-266D;AI;MUSIC FLAT SIGN
-266E;AL;MUSIC NATURAL SIGN
-266F;AI;MUSIC SHARP SIGN
-2670;AL;WEST SYRIAC CROSS
-2671;AL;EAST SYRIAC CROSS
-2701;AL;UPPER BLADE SCISSORS
-2702;AL;BLACK SCISSORS
-2703;AL;LOWER BLADE SCISSORS
-2704;AL;WHITE SCISSORS
-2706;AL;TELEPHONE LOCATION SIGN
-2707;AL;TAPE DRIVE
-2708;AL;AIRPLANE
-2709;AL;ENVELOPE
-270C;AL;VICTORY HAND
-270D;AL;WRITING HAND
-270E;AL;LOWER RIGHT PENCIL
-270F;AL;PENCIL
-2710;AL;UPPER RIGHT PENCIL
-2711;AL;WHITE NIB
-2712;AL;BLACK NIB
-2713;AL;CHECK MARK
-2714;AL;HEAVY CHECK MARK
-2715;AL;MULTIPLICATION X
-2716;AL;HEAVY MULTIPLICATION X
-2717;AL;BALLOT X
-2718;AL;HEAVY BALLOT X
-2719;AL;OUTLINED GREEK CROSS
-271A;AL;HEAVY GREEK CROSS
-271B;AL;OPEN CENTRE CROSS
-271C;AL;HEAVY OPEN CENTRE CROSS
-271D;AL;LATIN CROSS
-271E;AL;SHADOWED WHITE LATIN CROSS
-271F;AL;OUTLINED LATIN CROSS
-2720;AL;MALTESE CROSS
-2721;AL;STAR OF DAVID
-2722;AL;FOUR TEARDROP-SPOKED ASTERISK
-2723;AL;FOUR BALLOON-SPOKED ASTERISK
-2724;AL;HEAVY FOUR BALLOON-SPOKED ASTERISK
-2725;AL;FOUR CLUB-SPOKED ASTERISK
-2726;AL;BLACK FOUR POINTED STAR
-2727;AL;WHITE FOUR POINTED STAR
-2729;AL;STRESS OUTLINED WHITE STAR
-272A;AL;CIRCLED WHITE STAR
-272B;AL;OPEN CENTRE BLACK STAR
-272C;AL;BLACK CENTRE WHITE STAR
-272D;AL;OUTLINED BLACK STAR
-272E;AL;HEAVY OUTLINED BLACK STAR
-272F;AL;PINWHEEL STAR
-2730;AL;SHADOWED WHITE STAR
-2731;AL;HEAVY ASTERISK
-2732;AL;OPEN CENTRE ASTERISK
-2733;AL;EIGHT SPOKED ASTERISK
-2734;AL;EIGHT POINTED BLACK STAR
-2735;AL;EIGHT POINTED PINWHEEL STAR
-2736;AL;SIX POINTED BLACK STAR
-2737;AL;EIGHT POINTED RECTILINEAR BLACK STAR
-2738;AL;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
-2739;AL;TWELVE POINTED BLACK STAR
-273A;AL;SIXTEEN POINTED ASTERISK
-273B;AL;TEARDROP-SPOKED ASTERISK
-273C;AL;OPEN CENTRE TEARDROP-SPOKED ASTERISK
-273D;AL;HEAVY TEARDROP-SPOKED ASTERISK
-273E;AL;SIX PETALLED BLACK AND WHITE FLORETTE
-273F;AL;BLACK FLORETTE
-2740;AL;WHITE FLORETTE
-2741;AL;EIGHT PETALLED OUTLINED BLACK FLORETTE
-2742;AL;CIRCLED OPEN CENTRE EIGHT POINTED STAR
-2743;AL;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
-2744;AL;SNOWFLAKE
-2745;AL;TIGHT TRIFOLIATE SNOWFLAKE
-2746;AL;HEAVY CHEVRON SNOWFLAKE
-2747;AL;SPARKLE
-2748;AL;HEAVY SPARKLE
-2749;AL;BALLOON-SPOKED ASTERISK
-274A;AL;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274B;AL;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274D;AL;SHADOWED WHITE CIRCLE
-274F;AL;LOWER RIGHT DROP-SHADOWED WHITE SQUARE
-2750;AL;UPPER RIGHT DROP-SHADOWED WHITE SQUARE
-2751;AL;LOWER RIGHT SHADOWED WHITE SQUARE
-2752;AL;UPPER RIGHT SHADOWED WHITE SQUARE
-2756;AL;BLACK DIAMOND MINUS WHITE X
-2758;AL;LIGHT VERTICAL BAR
-2759;AL;MEDIUM VERTICAL BAR
-275A;AL;HEAVY VERTICAL BAR
-275B;AL;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
-275C;AL;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
-275D;AL;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
-275E;AL;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-2761;AL;CURVED STEM PARAGRAPH SIGN ORNAMENT
-2762;AL;HEAVY EXCLAMATION MARK ORNAMENT
-2763;AL;HEAVY HEART EXCLAMATION MARK ORNAMENT
-2764;AL;HEAVY BLACK HEART
-2765;AL;ROTATED HEAVY BLACK HEART BULLET
-2766;AL;FLORAL HEART
-2767;AL;ROTATED FLORAL HEART BULLET
-2776;AL;DINGBAT NEGATIVE CIRCLED DIGIT ONE
-2777;AL;DINGBAT NEGATIVE CIRCLED DIGIT TWO
-2778;AL;DINGBAT NEGATIVE CIRCLED DIGIT THREE
-2779;AL;DINGBAT NEGATIVE CIRCLED DIGIT FOUR
-277A;AL;DINGBAT NEGATIVE CIRCLED DIGIT FIVE
-277B;AL;DINGBAT NEGATIVE CIRCLED DIGIT SIX
-277C;AL;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
-277D;AL;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
-277E;AL;DINGBAT NEGATIVE CIRCLED DIGIT NINE
-277F;AL;DINGBAT NEGATIVE CIRCLED NUMBER TEN
-2780;AL;DINGBAT CIRCLED SANS-SERIF DIGIT ONE
-2781;AL;DINGBAT CIRCLED SANS-SERIF DIGIT TWO
-2782;AL;DINGBAT CIRCLED SANS-SERIF DIGIT THREE
-2783;AL;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
-2784;AL;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
-2785;AL;DINGBAT CIRCLED SANS-SERIF DIGIT SIX
-2786;AL;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
-2787;AL;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
-2788;AL;DINGBAT CIRCLED SANS-SERIF DIGIT NINE
-2789;AL;DINGBAT CIRCLED SANS-SERIF NUMBER TEN
-278A;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
-278B;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
-278C;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
-278D;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
-278E;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
-278F;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
-2790;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
-2791;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
-2792;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
-2793;AL;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
-2794;AL;HEAVY WIDE-HEADED RIGHTWARDS ARROW
-2798;AL;HEAVY SOUTH EAST ARROW
-2799;AL;HEAVY RIGHTWARDS ARROW
-279A;AL;HEAVY NORTH EAST ARROW
-279B;AL;DRAFTING POINT RIGHTWARDS ARROW
-279C;AL;HEAVY ROUND-TIPPED RIGHTWARDS ARROW
-279D;AL;TRIANGLE-HEADED RIGHTWARDS ARROW
-279E;AL;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
-279F;AL;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-27A0;AL;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-27A1;AL;BLACK RIGHTWARDS ARROW
-27A2;AL;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
-27A3;AL;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
-27A4;AL;BLACK RIGHTWARDS ARROWHEAD
-27A5;AL;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
-27A6;AL;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
-27A7;AL;SQUAT BLACK RIGHTWARDS ARROW
-27A8;AL;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
-27A9;AL;RIGHT-SHADED WHITE RIGHTWARDS ARROW
-27AA;AL;LEFT-SHADED WHITE RIGHTWARDS ARROW
-27AB;AL;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-27AC;AL;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-27AD;AL;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27AE;AL;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27AF;AL;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B1;AL;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B2;AL;CIRCLED HEAVY WHITE RIGHTWARDS ARROW
-27B3;AL;WHITE-FEATHERED RIGHTWARDS ARROW
-27B4;AL;BLACK-FEATHERED SOUTH EAST ARROW
-27B5;AL;BLACK-FEATHERED RIGHTWARDS ARROW
-27B6;AL;BLACK-FEATHERED NORTH EAST ARROW
-27B7;AL;HEAVY BLACK-FEATHERED SOUTH EAST ARROW
-27B8;AL;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
-27B9;AL;HEAVY BLACK-FEATHERED NORTH EAST ARROW
-27BA;AL;TEARDROP-BARBED RIGHTWARDS ARROW
-27BB;AL;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
-27BC;AL;WEDGE-TAILED RIGHTWARDS ARROW
-27BD;AL;HEAVY WEDGE-TAILED RIGHTWARDS ARROW
-27BE;AL;OPEN-OUTLINED RIGHTWARDS ARROW
-2800;AL;BRAILLE PATTERN BLANK
-2801;AL;BRAILLE PATTERN DOTS-1
-2802;AL;BRAILLE PATTERN DOTS-2
-2803;AL;BRAILLE PATTERN DOTS-12
-2804;AL;BRAILLE PATTERN DOTS-3
-2805;AL;BRAILLE PATTERN DOTS-13
-2806;AL;BRAILLE PATTERN DOTS-23
-2807;AL;BRAILLE PATTERN DOTS-123
-2808;AL;BRAILLE PATTERN DOTS-4
-2809;AL;BRAILLE PATTERN DOTS-14
-280A;AL;BRAILLE PATTERN DOTS-24
-280B;AL;BRAILLE PATTERN DOTS-124
-280C;AL;BRAILLE PATTERN DOTS-34
-280D;AL;BRAILLE PATTERN DOTS-134
-280E;AL;BRAILLE PATTERN DOTS-234
-280F;AL;BRAILLE PATTERN DOTS-1234
-2810;AL;BRAILLE PATTERN DOTS-5
-2811;AL;BRAILLE PATTERN DOTS-15
-2812;AL;BRAILLE PATTERN DOTS-25
-2813;AL;BRAILLE PATTERN DOTS-125
-2814;AL;BRAILLE PATTERN DOTS-35
-2815;AL;BRAILLE PATTERN DOTS-135
-2816;AL;BRAILLE PATTERN DOTS-235
-2817;AL;BRAILLE PATTERN DOTS-1235
-2818;AL;BRAILLE PATTERN DOTS-45
-2819;AL;BRAILLE PATTERN DOTS-145
-281A;AL;BRAILLE PATTERN DOTS-245
-281B;AL;BRAILLE PATTERN DOTS-1245
-281C;AL;BRAILLE PATTERN DOTS-345
-281D;AL;BRAILLE PATTERN DOTS-1345
-281E;AL;BRAILLE PATTERN DOTS-2345
-281F;AL;BRAILLE PATTERN DOTS-12345
-2820;AL;BRAILLE PATTERN DOTS-6
-2821;AL;BRAILLE PATTERN DOTS-16
-2822;AL;BRAILLE PATTERN DOTS-26
-2823;AL;BRAILLE PATTERN DOTS-126
-2824;AL;BRAILLE PATTERN DOTS-36
-2825;AL;BRAILLE PATTERN DOTS-136
-2826;AL;BRAILLE PATTERN DOTS-236
-2827;AL;BRAILLE PATTERN DOTS-1236
-2828;AL;BRAILLE PATTERN DOTS-46
-2829;AL;BRAILLE PATTERN DOTS-146
-282A;AL;BRAILLE PATTERN DOTS-246
-282B;AL;BRAILLE PATTERN DOTS-1246
-282C;AL;BRAILLE PATTERN DOTS-346
-282D;AL;BRAILLE PATTERN DOTS-1346
-282E;AL;BRAILLE PATTERN DOTS-2346
-282F;AL;BRAILLE PATTERN DOTS-12346
-2830;AL;BRAILLE PATTERN DOTS-56
-2831;AL;BRAILLE PATTERN DOTS-156
-2832;AL;BRAILLE PATTERN DOTS-256
-2833;AL;BRAILLE PATTERN DOTS-1256
-2834;AL;BRAILLE PATTERN DOTS-356
-2835;AL;BRAILLE PATTERN DOTS-1356
-2836;AL;BRAILLE PATTERN DOTS-2356
-2837;AL;BRAILLE PATTERN DOTS-12356
-2838;AL;BRAILLE PATTERN DOTS-456
-2839;AL;BRAILLE PATTERN DOTS-1456
-283A;AL;BRAILLE PATTERN DOTS-2456
-283B;AL;BRAILLE PATTERN DOTS-12456
-283C;AL;BRAILLE PATTERN DOTS-3456
-283D;AL;BRAILLE PATTERN DOTS-13456
-283E;AL;BRAILLE PATTERN DOTS-23456
-283F;AL;BRAILLE PATTERN DOTS-123456
-2840;AL;BRAILLE PATTERN DOTS-7
-2841;AL;BRAILLE PATTERN DOTS-17
-2842;AL;BRAILLE PATTERN DOTS-27
-2843;AL;BRAILLE PATTERN DOTS-127
-2844;AL;BRAILLE PATTERN DOTS-37
-2845;AL;BRAILLE PATTERN DOTS-137
-2846;AL;BRAILLE PATTERN DOTS-237
-2847;AL;BRAILLE PATTERN DOTS-1237
-2848;AL;BRAILLE PATTERN DOTS-47
-2849;AL;BRAILLE PATTERN DOTS-147
-284A;AL;BRAILLE PATTERN DOTS-247
-284B;AL;BRAILLE PATTERN DOTS-1247
-284C;AL;BRAILLE PATTERN DOTS-347
-284D;AL;BRAILLE PATTERN DOTS-1347
-284E;AL;BRAILLE PATTERN DOTS-2347
-284F;AL;BRAILLE PATTERN DOTS-12347
-2850;AL;BRAILLE PATTERN DOTS-57
-2851;AL;BRAILLE PATTERN DOTS-157
-2852;AL;BRAILLE PATTERN DOTS-257
-2853;AL;BRAILLE PATTERN DOTS-1257
-2854;AL;BRAILLE PATTERN DOTS-357
-2855;AL;BRAILLE PATTERN DOTS-1357
-2856;AL;BRAILLE PATTERN DOTS-2357
-2857;AL;BRAILLE PATTERN DOTS-12357
-2858;AL;BRAILLE PATTERN DOTS-457
-2859;AL;BRAILLE PATTERN DOTS-1457
-285A;AL;BRAILLE PATTERN DOTS-2457
-285B;AL;BRAILLE PATTERN DOTS-12457
-285C;AL;BRAILLE PATTERN DOTS-3457
-285D;AL;BRAILLE PATTERN DOTS-13457
-285E;AL;BRAILLE PATTERN DOTS-23457
-285F;AL;BRAILLE PATTERN DOTS-123457
-2860;AL;BRAILLE PATTERN DOTS-67
-2861;AL;BRAILLE PATTERN DOTS-167
-2862;AL;BRAILLE PATTERN DOTS-267
-2863;AL;BRAILLE PATTERN DOTS-1267
-2864;AL;BRAILLE PATTERN DOTS-367
-2865;AL;BRAILLE PATTERN DOTS-1367
-2866;AL;BRAILLE PATTERN DOTS-2367
-2867;AL;BRAILLE PATTERN DOTS-12367
-2868;AL;BRAILLE PATTERN DOTS-467
-2869;AL;BRAILLE PATTERN DOTS-1467
-286A;AL;BRAILLE PATTERN DOTS-2467
-286B;AL;BRAILLE PATTERN DOTS-12467
-286C;AL;BRAILLE PATTERN DOTS-3467
-286D;AL;BRAILLE PATTERN DOTS-13467
-286E;AL;BRAILLE PATTERN DOTS-23467
-286F;AL;BRAILLE PATTERN DOTS-123467
-2870;AL;BRAILLE PATTERN DOTS-567
-2871;AL;BRAILLE PATTERN DOTS-1567
-2872;AL;BRAILLE PATTERN DOTS-2567
-2873;AL;BRAILLE PATTERN DOTS-12567
-2874;AL;BRAILLE PATTERN DOTS-3567
-2875;AL;BRAILLE PATTERN DOTS-13567
-2876;AL;BRAILLE PATTERN DOTS-23567
-2877;AL;BRAILLE PATTERN DOTS-123567
-2878;AL;BRAILLE PATTERN DOTS-4567
-2879;AL;BRAILLE PATTERN DOTS-14567
-287A;AL;BRAILLE PATTERN DOTS-24567
-287B;AL;BRAILLE PATTERN DOTS-124567
-287C;AL;BRAILLE PATTERN DOTS-34567
-287D;AL;BRAILLE PATTERN DOTS-134567
-287E;AL;BRAILLE PATTERN DOTS-234567
-287F;AL;BRAILLE PATTERN DOTS-1234567
-2880;AL;BRAILLE PATTERN DOTS-8
-2881;AL;BRAILLE PATTERN DOTS-18
-2882;AL;BRAILLE PATTERN DOTS-28
-2883;AL;BRAILLE PATTERN DOTS-128
-2884;AL;BRAILLE PATTERN DOTS-38
-2885;AL;BRAILLE PATTERN DOTS-138
-2886;AL;BRAILLE PATTERN DOTS-238
-2887;AL;BRAILLE PATTERN DOTS-1238
-2888;AL;BRAILLE PATTERN DOTS-48
-2889;AL;BRAILLE PATTERN DOTS-148
-288A;AL;BRAILLE PATTERN DOTS-248
-288B;AL;BRAILLE PATTERN DOTS-1248
-288C;AL;BRAILLE PATTERN DOTS-348
-288D;AL;BRAILLE PATTERN DOTS-1348
-288E;AL;BRAILLE PATTERN DOTS-2348
-288F;AL;BRAILLE PATTERN DOTS-12348
-2890;AL;BRAILLE PATTERN DOTS-58
-2891;AL;BRAILLE PATTERN DOTS-158
-2892;AL;BRAILLE PATTERN DOTS-258
-2893;AL;BRAILLE PATTERN DOTS-1258
-2894;AL;BRAILLE PATTERN DOTS-358
-2895;AL;BRAILLE PATTERN DOTS-1358
-2896;AL;BRAILLE PATTERN DOTS-2358
-2897;AL;BRAILLE PATTERN DOTS-12358
-2898;AL;BRAILLE PATTERN DOTS-458
-2899;AL;BRAILLE PATTERN DOTS-1458
-289A;AL;BRAILLE PATTERN DOTS-2458
-289B;AL;BRAILLE PATTERN DOTS-12458
-289C;AL;BRAILLE PATTERN DOTS-3458
-289D;AL;BRAILLE PATTERN DOTS-13458
-289E;AL;BRAILLE PATTERN DOTS-23458
-289F;AL;BRAILLE PATTERN DOTS-123458
-28A0;AL;BRAILLE PATTERN DOTS-68
-28A1;AL;BRAILLE PATTERN DOTS-168
-28A2;AL;BRAILLE PATTERN DOTS-268
-28A3;AL;BRAILLE PATTERN DOTS-1268
-28A4;AL;BRAILLE PATTERN DOTS-368
-28A5;AL;BRAILLE PATTERN DOTS-1368
-28A6;AL;BRAILLE PATTERN DOTS-2368
-28A7;AL;BRAILLE PATTERN DOTS-12368
-28A8;AL;BRAILLE PATTERN DOTS-468
-28A9;AL;BRAILLE PATTERN DOTS-1468
-28AA;AL;BRAILLE PATTERN DOTS-2468
-28AB;AL;BRAILLE PATTERN DOTS-12468
-28AC;AL;BRAILLE PATTERN DOTS-3468
-28AD;AL;BRAILLE PATTERN DOTS-13468
-28AE;AL;BRAILLE PATTERN DOTS-23468
-28AF;AL;BRAILLE PATTERN DOTS-123468
-28B0;AL;BRAILLE PATTERN DOTS-568
-28B1;AL;BRAILLE PATTERN DOTS-1568
-28B2;AL;BRAILLE PATTERN DOTS-2568
-28B3;AL;BRAILLE PATTERN DOTS-12568
-28B4;AL;BRAILLE PATTERN DOTS-3568
-28B5;AL;BRAILLE PATTERN DOTS-13568
-28B6;AL;BRAILLE PATTERN DOTS-23568
-28B7;AL;BRAILLE PATTERN DOTS-123568
-28B8;AL;BRAILLE PATTERN DOTS-4568
-28B9;AL;BRAILLE PATTERN DOTS-14568
-28BA;AL;BRAILLE PATTERN DOTS-24568
-28BB;AL;BRAILLE PATTERN DOTS-124568
-28BC;AL;BRAILLE PATTERN DOTS-34568
-28BD;AL;BRAILLE PATTERN DOTS-134568
-28BE;AL;BRAILLE PATTERN DOTS-234568
-28BF;AL;BRAILLE PATTERN DOTS-1234568
-28C0;AL;BRAILLE PATTERN DOTS-78
-28C1;AL;BRAILLE PATTERN DOTS-178
-28C2;AL;BRAILLE PATTERN DOTS-278
-28C3;AL;BRAILLE PATTERN DOTS-1278
-28C4;AL;BRAILLE PATTERN DOTS-378
-28C5;AL;BRAILLE PATTERN DOTS-1378
-28C6;AL;BRAILLE PATTERN DOTS-2378
-28C7;AL;BRAILLE PATTERN DOTS-12378
-28C8;AL;BRAILLE PATTERN DOTS-478
-28C9;AL;BRAILLE PATTERN DOTS-1478
-28CA;AL;BRAILLE PATTERN DOTS-2478
-28CB;AL;BRAILLE PATTERN DOTS-12478
-28CC;AL;BRAILLE PATTERN DOTS-3478
-28CD;AL;BRAILLE PATTERN DOTS-13478
-28CE;AL;BRAILLE PATTERN DOTS-23478
-28CF;AL;BRAILLE PATTERN DOTS-123478
-28D0;AL;BRAILLE PATTERN DOTS-578
-28D1;AL;BRAILLE PATTERN DOTS-1578
-28D2;AL;BRAILLE PATTERN DOTS-2578
-28D3;AL;BRAILLE PATTERN DOTS-12578
-28D4;AL;BRAILLE PATTERN DOTS-3578
-28D5;AL;BRAILLE PATTERN DOTS-13578
-28D6;AL;BRAILLE PATTERN DOTS-23578
-28D7;AL;BRAILLE PATTERN DOTS-123578
-28D8;AL;BRAILLE PATTERN DOTS-4578
-28D9;AL;BRAILLE PATTERN DOTS-14578
-28DA;AL;BRAILLE PATTERN DOTS-24578
-28DB;AL;BRAILLE PATTERN DOTS-124578
-28DC;AL;BRAILLE PATTERN DOTS-34578
-28DD;AL;BRAILLE PATTERN DOTS-134578
-28DE;AL;BRAILLE PATTERN DOTS-234578
-28DF;AL;BRAILLE PATTERN DOTS-1234578
-28E0;AL;BRAILLE PATTERN DOTS-678
-28E1;AL;BRAILLE PATTERN DOTS-1678
-28E2;AL;BRAILLE PATTERN DOTS-2678
-28E3;AL;BRAILLE PATTERN DOTS-12678
-28E4;AL;BRAILLE PATTERN DOTS-3678
-28E5;AL;BRAILLE PATTERN DOTS-13678
-28E6;AL;BRAILLE PATTERN DOTS-23678
-28E7;AL;BRAILLE PATTERN DOTS-123678
-28E8;AL;BRAILLE PATTERN DOTS-4678
-28E9;AL;BRAILLE PATTERN DOTS-14678
-28EA;AL;BRAILLE PATTERN DOTS-24678
-28EB;AL;BRAILLE PATTERN DOTS-124678
-28EC;AL;BRAILLE PATTERN DOTS-34678
-28ED;AL;BRAILLE PATTERN DOTS-134678
-28EE;AL;BRAILLE PATTERN DOTS-234678
-28EF;AL;BRAILLE PATTERN DOTS-1234678
-28F0;AL;BRAILLE PATTERN DOTS-5678
-28F1;AL;BRAILLE PATTERN DOTS-15678
-28F2;AL;BRAILLE PATTERN DOTS-25678
-28F3;AL;BRAILLE PATTERN DOTS-125678
-28F4;AL;BRAILLE PATTERN DOTS-35678
-28F5;AL;BRAILLE PATTERN DOTS-135678
-28F6;AL;BRAILLE PATTERN DOTS-235678
-28F7;AL;BRAILLE PATTERN DOTS-1235678
-28F8;AL;BRAILLE PATTERN DOTS-45678
-28F9;AL;BRAILLE PATTERN DOTS-145678
-28FA;AL;BRAILLE PATTERN DOTS-245678
-28FB;AL;BRAILLE PATTERN DOTS-1245678
-28FC;AL;BRAILLE PATTERN DOTS-345678
-28FD;AL;BRAILLE PATTERN DOTS-1345678
-28FE;AL;BRAILLE PATTERN DOTS-2345678
-28FF;AL;BRAILLE PATTERN DOTS-12345678
-2E80;ID;CJK RADICAL REPEAT
-2E81;ID;CJK RADICAL CLIFF
-2E82;ID;CJK RADICAL SECOND ONE
-2E83;ID;CJK RADICAL SECOND TWO
-2E84;ID;CJK RADICAL SECOND THREE
-2E85;ID;CJK RADICAL PERSON
-2E86;ID;CJK RADICAL BOX
-2E87;ID;CJK RADICAL TABLE
-2E88;ID;CJK RADICAL KNIFE ONE
-2E89;ID;CJK RADICAL KNIFE TWO
-2E8A;ID;CJK RADICAL DIVINATION
-2E8B;ID;CJK RADICAL SEAL
-2E8C;ID;CJK RADICAL SMALL ONE
-2E8D;ID;CJK RADICAL SMALL TWO
-2E8E;ID;CJK RADICAL LAME ONE
-2E8F;ID;CJK RADICAL LAME TWO
-2E90;ID;CJK RADICAL LAME THREE
-2E91;ID;CJK RADICAL LAME FOUR
-2E92;ID;CJK RADICAL SNAKE
-2E93;ID;CJK RADICAL THREAD
-2E94;ID;CJK RADICAL SNOUT ONE
-2E95;ID;CJK RADICAL SNOUT TWO
-2E96;ID;CJK RADICAL HEART ONE
-2E97;ID;CJK RADICAL HEART TWO
-2E98;ID;CJK RADICAL HAND
-2E99;ID;CJK RADICAL RAP
-2E9B;ID;CJK RADICAL CHOKE
-2E9C;ID;CJK RADICAL SUN
-2E9D;ID;CJK RADICAL MOON
-2E9E;ID;CJK RADICAL DEATH
-2E9F;ID;CJK RADICAL MOTHER
-2EA0;ID;CJK RADICAL CIVILIAN
-2EA1;ID;CJK RADICAL WATER ONE
-2EA2;ID;CJK RADICAL WATER TWO
-2EA3;ID;CJK RADICAL FIRE
-2EA4;ID;CJK RADICAL PAW ONE
-2EA5;ID;CJK RADICAL PAW TWO
-2EA6;ID;CJK RADICAL SIMPLIFIED HALF TREE TRUNK
-2EA7;ID;CJK RADICAL COW
-2EA8;ID;CJK RADICAL DOG
-2EA9;ID;CJK RADICAL JADE
-2EAA;ID;CJK RADICAL BOLT OF CLOTH
-2EAB;ID;CJK RADICAL EYE
-2EAC;ID;CJK RADICAL SPIRIT ONE
-2EAD;ID;CJK RADICAL SPIRIT TWO
-2EAE;ID;CJK RADICAL BAMBOO
-2EAF;ID;CJK RADICAL SILK
-2EB0;ID;CJK RADICAL C-SIMPLIFIED SILK
-2EB1;ID;CJK RADICAL NET ONE
-2EB2;ID;CJK RADICAL NET TWO
-2EB3;ID;CJK RADICAL NET THREE
-2EB4;ID;CJK RADICAL NET FOUR
-2EB5;ID;CJK RADICAL MESH
-2EB6;ID;CJK RADICAL SHEEP
-2EB7;ID;CJK RADICAL RAM
-2EB8;ID;CJK RADICAL EWE
-2EB9;ID;CJK RADICAL OLD
-2EBA;ID;CJK RADICAL BRUSH ONE
-2EBB;ID;CJK RADICAL BRUSH TWO
-2EBC;ID;CJK RADICAL MEAT
-2EBD;ID;CJK RADICAL MORTAR
-2EBE;ID;CJK RADICAL GRASS ONE
-2EBF;ID;CJK RADICAL GRASS TWO
-2EC0;ID;CJK RADICAL GRASS THREE
-2EC1;ID;CJK RADICAL TIGER
-2EC2;ID;CJK RADICAL CLOTHES
-2EC3;ID;CJK RADICAL WEST ONE
-2EC4;ID;CJK RADICAL WEST TWO
-2EC5;ID;CJK RADICAL C-SIMPLIFIED SEE
-2EC6;ID;CJK RADICAL SIMPLIFIED HORN
-2EC7;ID;CJK RADICAL HORN
-2EC8;ID;CJK RADICAL C-SIMPLIFIED SPEECH
-2EC9;ID;CJK RADICAL C-SIMPLIFIED SHELL
-2ECA;ID;CJK RADICAL FOOT
-2ECB;ID;CJK RADICAL C-SIMPLIFIED CART
-2ECC;ID;CJK RADICAL SIMPLIFIED WALK
-2ECD;ID;CJK RADICAL WALK ONE
-2ECE;ID;CJK RADICAL WALK TWO
-2ECF;ID;CJK RADICAL CITY
-2ED0;ID;CJK RADICAL C-SIMPLIFIED GOLD
-2ED1;ID;CJK RADICAL LONG ONE
-2ED2;ID;CJK RADICAL LONG TWO
-2ED3;ID;CJK RADICAL C-SIMPLIFIED LONG
-2ED4;ID;CJK RADICAL C-SIMPLIFIED GATE
-2ED5;ID;CJK RADICAL MOUND ONE
-2ED6;ID;CJK RADICAL MOUND TWO
-2ED7;ID;CJK RADICAL RAIN
-2ED8;ID;CJK RADICAL BLUE
-2ED9;ID;CJK RADICAL C-SIMPLIFIED TANNED LEATHER
-2EDA;ID;CJK RADICAL C-SIMPLIFIED LEAF
-2EDB;ID;CJK RADICAL C-SIMPLIFIED WIND
-2EDC;ID;CJK RADICAL C-SIMPLIFIED FLY
-2EDD;ID;CJK RADICAL EAT ONE
-2EDE;ID;CJK RADICAL EAT TWO
-2EDF;ID;CJK RADICAL EAT THREE
-2EE0;ID;CJK RADICAL C-SIMPLIFIED EAT
-2EE1;ID;CJK RADICAL HEAD
-2EE2;ID;CJK RADICAL C-SIMPLIFIED HORSE
-2EE3;ID;CJK RADICAL BONE
-2EE4;ID;CJK RADICAL GHOST
-2EE5;ID;CJK RADICAL C-SIMPLIFIED FISH
-2EE6;ID;CJK RADICAL C-SIMPLIFIED BIRD
-2EE7;ID;CJK RADICAL C-SIMPLIFIED SALT
-2EE8;ID;CJK RADICAL SIMPLIFIED WHEAT
-2EE9;ID;CJK RADICAL SIMPLIFIED YELLOW
-2EEA;ID;CJK RADICAL C-SIMPLIFIED FROG
-2EEB;ID;CJK RADICAL J-SIMPLIFIED EVEN
-2EEC;ID;CJK RADICAL C-SIMPLIFIED EVEN
-2EED;ID;CJK RADICAL J-SIMPLIFIED TOOTH
-2EEE;ID;CJK RADICAL C-SIMPLIFIED TOOTH
-2EEF;ID;CJK RADICAL J-SIMPLIFIED DRAGON
-2EF0;ID;CJK RADICAL C-SIMPLIFIED DRAGON
-2EF1;ID;CJK RADICAL TURTLE
-2EF2;ID;CJK RADICAL J-SIMPLIFIED TURTLE
-2EF3;ID;CJK RADICAL C-SIMPLIFIED TURTLE
-2F00;ID;KANGXI RADICAL ONE
-2F01;ID;KANGXI RADICAL LINE
-2F02;ID;KANGXI RADICAL DOT
-2F03;ID;KANGXI RADICAL SLASH
-2F04;ID;KANGXI RADICAL SECOND
-2F05;ID;KANGXI RADICAL HOOK
-2F06;ID;KANGXI RADICAL TWO
-2F07;ID;KANGXI RADICAL LID
-2F08;ID;KANGXI RADICAL MAN
-2F09;ID;KANGXI RADICAL LEGS
-2F0A;ID;KANGXI RADICAL ENTER
-2F0B;ID;KANGXI RADICAL EIGHT
-2F0C;ID;KANGXI RADICAL DOWN BOX
-2F0D;ID;KANGXI RADICAL COVER
-2F0E;ID;KANGXI RADICAL ICE
-2F0F;ID;KANGXI RADICAL TABLE
-2F10;ID;KANGXI RADICAL OPEN BOX
-2F11;ID;KANGXI RADICAL KNIFE
-2F12;ID;KANGXI RADICAL POWER
-2F13;ID;KANGXI RADICAL WRAP
-2F14;ID;KANGXI RADICAL SPOON
-2F15;ID;KANGXI RADICAL RIGHT OPEN BOX
-2F16;ID;KANGXI RADICAL HIDING ENCLOSURE
-2F17;ID;KANGXI RADICAL TEN
-2F18;ID;KANGXI RADICAL DIVINATION
-2F19;ID;KANGXI RADICAL SEAL
-2F1A;ID;KANGXI RADICAL CLIFF
-2F1B;ID;KANGXI RADICAL PRIVATE
-2F1C;ID;KANGXI RADICAL AGAIN
-2F1D;ID;KANGXI RADICAL MOUTH
-2F1E;ID;KANGXI RADICAL ENCLOSURE
-2F1F;ID;KANGXI RADICAL EARTH
-2F20;ID;KANGXI RADICAL SCHOLAR
-2F21;ID;KANGXI RADICAL GO
-2F22;ID;KANGXI RADICAL GO SLOWLY
-2F23;ID;KANGXI RADICAL EVENING
-2F24;ID;KANGXI RADICAL BIG
-2F25;ID;KANGXI RADICAL WOMAN
-2F26;ID;KANGXI RADICAL CHILD
-2F27;ID;KANGXI RADICAL ROOF
-2F28;ID;KANGXI RADICAL INCH
-2F29;ID;KANGXI RADICAL SMALL
-2F2A;ID;KANGXI RADICAL LAME
-2F2B;ID;KANGXI RADICAL CORPSE
-2F2C;ID;KANGXI RADICAL SPROUT
-2F2D;ID;KANGXI RADICAL MOUNTAIN
-2F2E;ID;KANGXI RADICAL RIVER
-2F2F;ID;KANGXI RADICAL WORK
-2F30;ID;KANGXI RADICAL ONESELF
-2F31;ID;KANGXI RADICAL TURBAN
-2F32;ID;KANGXI RADICAL DRY
-2F33;ID;KANGXI RADICAL SHORT THREAD
-2F34;ID;KANGXI RADICAL DOTTED CLIFF
-2F35;ID;KANGXI RADICAL LONG STRIDE
-2F36;ID;KANGXI RADICAL TWO HANDS
-2F37;ID;KANGXI RADICAL SHOOT
-2F38;ID;KANGXI RADICAL BOW
-2F39;ID;KANGXI RADICAL SNOUT
-2F3A;ID;KANGXI RADICAL BRISTLE
-2F3B;ID;KANGXI RADICAL STEP
-2F3C;ID;KANGXI RADICAL HEART
-2F3D;ID;KANGXI RADICAL HALBERD
-2F3E;ID;KANGXI RADICAL DOOR
-2F3F;ID;KANGXI RADICAL HAND
-2F40;ID;KANGXI RADICAL BRANCH
-2F41;ID;KANGXI RADICAL RAP
-2F42;ID;KANGXI RADICAL SCRIPT
-2F43;ID;KANGXI RADICAL DIPPER
-2F44;ID;KANGXI RADICAL AXE
-2F45;ID;KANGXI RADICAL SQUARE
-2F46;ID;KANGXI RADICAL NOT
-2F47;ID;KANGXI RADICAL SUN
-2F48;ID;KANGXI RADICAL SAY
-2F49;ID;KANGXI RADICAL MOON
-2F4A;ID;KANGXI RADICAL TREE
-2F4B;ID;KANGXI RADICAL LACK
-2F4C;ID;KANGXI RADICAL STOP
-2F4D;ID;KANGXI RADICAL DEATH
-2F4E;ID;KANGXI RADICAL WEAPON
-2F4F;ID;KANGXI RADICAL DO NOT
-2F50;ID;KANGXI RADICAL COMPARE
-2F51;ID;KANGXI RADICAL FUR
-2F52;ID;KANGXI RADICAL CLAN
-2F53;ID;KANGXI RADICAL STEAM
-2F54;ID;KANGXI RADICAL WATER
-2F55;ID;KANGXI RADICAL FIRE
-2F56;ID;KANGXI RADICAL CLAW
-2F57;ID;KANGXI RADICAL FATHER
-2F58;ID;KANGXI RADICAL DOUBLE X
-2F59;ID;KANGXI RADICAL HALF TREE TRUNK
-2F5A;ID;KANGXI RADICAL SLICE
-2F5B;ID;KANGXI RADICAL FANG
-2F5C;ID;KANGXI RADICAL COW
-2F5D;ID;KANGXI RADICAL DOG
-2F5E;ID;KANGXI RADICAL PROFOUND
-2F5F;ID;KANGXI RADICAL JADE
-2F60;ID;KANGXI RADICAL MELON
-2F61;ID;KANGXI RADICAL TILE
-2F62;ID;KANGXI RADICAL SWEET
-2F63;ID;KANGXI RADICAL LIFE
-2F64;ID;KANGXI RADICAL USE
-2F65;ID;KANGXI RADICAL FIELD
-2F66;ID;KANGXI RADICAL BOLT OF CLOTH
-2F67;ID;KANGXI RADICAL SICKNESS
-2F68;ID;KANGXI RADICAL DOTTED TENT
-2F69;ID;KANGXI RADICAL WHITE
-2F6A;ID;KANGXI RADICAL SKIN
-2F6B;ID;KANGXI RADICAL DISH
-2F6C;ID;KANGXI RADICAL EYE
-2F6D;ID;KANGXI RADICAL SPEAR
-2F6E;ID;KANGXI RADICAL ARROW
-2F6F;ID;KANGXI RADICAL STONE
-2F70;ID;KANGXI RADICAL SPIRIT
-2F71;ID;KANGXI RADICAL TRACK
-2F72;ID;KANGXI RADICAL GRAIN
-2F73;ID;KANGXI RADICAL CAVE
-2F74;ID;KANGXI RADICAL STAND
-2F75;ID;KANGXI RADICAL BAMBOO
-2F76;ID;KANGXI RADICAL RICE
-2F77;ID;KANGXI RADICAL SILK
-2F78;ID;KANGXI RADICAL JAR
-2F79;ID;KANGXI RADICAL NET
-2F7A;ID;KANGXI RADICAL SHEEP
-2F7B;ID;KANGXI RADICAL FEATHER
-2F7C;ID;KANGXI RADICAL OLD
-2F7D;ID;KANGXI RADICAL AND
-2F7E;ID;KANGXI RADICAL PLOW
-2F7F;ID;KANGXI RADICAL EAR
-2F80;ID;KANGXI RADICAL BRUSH
-2F81;ID;KANGXI RADICAL MEAT
-2F82;ID;KANGXI RADICAL MINISTER
-2F83;ID;KANGXI RADICAL SELF
-2F84;ID;KANGXI RADICAL ARRIVE
-2F85;ID;KANGXI RADICAL MORTAR
-2F86;ID;KANGXI RADICAL TONGUE
-2F87;ID;KANGXI RADICAL OPPOSE
-2F88;ID;KANGXI RADICAL BOAT
-2F89;ID;KANGXI RADICAL STOPPING
-2F8A;ID;KANGXI RADICAL COLOR
-2F8B;ID;KANGXI RADICAL GRASS
-2F8C;ID;KANGXI RADICAL TIGER
-2F8D;ID;KANGXI RADICAL INSECT
-2F8E;ID;KANGXI RADICAL BLOOD
-2F8F;ID;KANGXI RADICAL WALK ENCLOSURE
-2F90;ID;KANGXI RADICAL CLOTHES
-2F91;ID;KANGXI RADICAL WEST
-2F92;ID;KANGXI RADICAL SEE
-2F93;ID;KANGXI RADICAL HORN
-2F94;ID;KANGXI RADICAL SPEECH
-2F95;ID;KANGXI RADICAL VALLEY
-2F96;ID;KANGXI RADICAL BEAN
-2F97;ID;KANGXI RADICAL PIG
-2F98;ID;KANGXI RADICAL BADGER
-2F99;ID;KANGXI RADICAL SHELL
-2F9A;ID;KANGXI RADICAL RED
-2F9B;ID;KANGXI RADICAL RUN
-2F9C;ID;KANGXI RADICAL FOOT
-2F9D;ID;KANGXI RADICAL BODY
-2F9E;ID;KANGXI RADICAL CART
-2F9F;ID;KANGXI RADICAL BITTER
-2FA0;ID;KANGXI RADICAL MORNING
-2FA1;ID;KANGXI RADICAL WALK
-2FA2;ID;KANGXI RADICAL CITY
-2FA3;ID;KANGXI RADICAL WINE
-2FA4;ID;KANGXI RADICAL DISTINGUISH
-2FA5;ID;KANGXI RADICAL VILLAGE
-2FA6;ID;KANGXI RADICAL GOLD
-2FA7;ID;KANGXI RADICAL LONG
-2FA8;ID;KANGXI RADICAL GATE
-2FA9;ID;KANGXI RADICAL MOUND
-2FAA;ID;KANGXI RADICAL SLAVE
-2FAB;ID;KANGXI RADICAL SHORT TAILED BIRD
-2FAC;ID;KANGXI RADICAL RAIN
-2FAD;ID;KANGXI RADICAL BLUE
-2FAE;ID;KANGXI RADICAL WRONG
-2FAF;ID;KANGXI RADICAL FACE
-2FB0;ID;KANGXI RADICAL LEATHER
-2FB1;ID;KANGXI RADICAL TANNED LEATHER
-2FB2;ID;KANGXI RADICAL LEEK
-2FB3;ID;KANGXI RADICAL SOUND
-2FB4;ID;KANGXI RADICAL LEAF
-2FB5;ID;KANGXI RADICAL WIND
-2FB6;ID;KANGXI RADICAL FLY
-2FB7;ID;KANGXI RADICAL EAT
-2FB8;ID;KANGXI RADICAL HEAD
-2FB9;ID;KANGXI RADICAL FRAGRANT
-2FBA;ID;KANGXI RADICAL HORSE
-2FBB;ID;KANGXI RADICAL BONE
-2FBC;ID;KANGXI RADICAL TALL
-2FBD;ID;KANGXI RADICAL HAIR
-2FBE;ID;KANGXI RADICAL FIGHT
-2FBF;ID;KANGXI RADICAL SACRIFICIAL WINE
-2FC0;ID;KANGXI RADICAL CAULDRON
-2FC1;ID;KANGXI RADICAL GHOST
-2FC2;ID;KANGXI RADICAL FISH
-2FC3;ID;KANGXI RADICAL BIRD
-2FC4;ID;KANGXI RADICAL SALT
-2FC5;ID;KANGXI RADICAL DEER
-2FC6;ID;KANGXI RADICAL WHEAT
-2FC7;ID;KANGXI RADICAL HEMP
-2FC8;ID;KANGXI RADICAL YELLOW
-2FC9;ID;KANGXI RADICAL MILLET
-2FCA;ID;KANGXI RADICAL BLACK
-2FCB;ID;KANGXI RADICAL EMBROIDERY
-2FCC;ID;KANGXI RADICAL FROG
-2FCD;ID;KANGXI RADICAL TRIPOD
-2FCE;ID;KANGXI RADICAL DRUM
-2FCF;ID;KANGXI RADICAL RAT
-2FD0;ID;KANGXI RADICAL NOSE
-2FD1;ID;KANGXI RADICAL EVEN
-2FD2;ID;KANGXI RADICAL TOOTH
-2FD3;ID;KANGXI RADICAL DRAGON
-2FD4;ID;KANGXI RADICAL TURTLE
-2FD5;ID;KANGXI RADICAL FLUTE
-2FF0;ID;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
-2FF1;ID;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
-2FF2;ID;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
-2FF3;ID;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
-2FF4;ID;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
-2FF5;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
-2FF6;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
-2FF7;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
-2FF8;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
-2FF9;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
-2FFA;ID;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
-2FFB;ID;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-3000;ID;IDEOGRAPHIC SPACE
-3001;CL;IDEOGRAPHIC COMMA
-3002;CL;IDEOGRAPHIC FULL STOP
-3003;ID;DITTO MARK
-3004;ID;JAPANESE INDUSTRIAL STANDARD SYMBOL
-3005;NS;IDEOGRAPHIC ITERATION MARK
-3006;ID;IDEOGRAPHIC CLOSING MARK
-3007;ID;IDEOGRAPHIC NUMBER ZERO
-3008;OP;LEFT ANGLE BRACKET
-3009;CL;RIGHT ANGLE BRACKET
-300A;OP;LEFT DOUBLE ANGLE BRACKET
-300B;CL;RIGHT DOUBLE ANGLE BRACKET
-300C;OP;LEFT CORNER BRACKET
-300D;CL;RIGHT CORNER BRACKET
-300E;OP;LEFT WHITE CORNER BRACKET
-300F;CL;RIGHT WHITE CORNER BRACKET
-3010;OP;LEFT BLACK LENTICULAR BRACKET
-3011;CL;RIGHT BLACK LENTICULAR BRACKET
-3012;ID;POSTAL MARK
-3013;ID;GETA MARK
-3014;OP;LEFT TORTOISE SHELL BRACKET
-3015;CL;RIGHT TORTOISE SHELL BRACKET
-3016;OP;LEFT WHITE LENTICULAR BRACKET
-3017;CL;RIGHT WHITE LENTICULAR BRACKET
-3018;OP;LEFT WHITE TORTOISE SHELL BRACKET
-3019;CL;RIGHT WHITE TORTOISE SHELL BRACKET
-301A;OP;LEFT WHITE SQUARE BRACKET
-301B;CL;RIGHT WHITE SQUARE BRACKET
-301C;NS;WAVE DASH
-301D;OP;REVERSED DOUBLE PRIME QUOTATION MARK
-301E;CL;DOUBLE PRIME QUOTATION MARK
-301F;CL;LOW DOUBLE PRIME QUOTATION MARK
-3020;ID;POSTAL MARK FACE
-3021;ID;HANGZHOU NUMERAL ONE
-3022;ID;HANGZHOU NUMERAL TWO
-3023;ID;HANGZHOU NUMERAL THREE
-3024;ID;HANGZHOU NUMERAL FOUR
-3025;ID;HANGZHOU NUMERAL FIVE
-3026;ID;HANGZHOU NUMERAL SIX
-3027;ID;HANGZHOU NUMERAL SEVEN
-3028;ID;HANGZHOU NUMERAL EIGHT
-3029;ID;HANGZHOU NUMERAL NINE
-302A;CM;IDEOGRAPHIC LEVEL TONE MARK
-302B;CM;IDEOGRAPHIC RISING TONE MARK
-302C;CM;IDEOGRAPHIC DEPARTING TONE MARK
-302D;CM;IDEOGRAPHIC ENTERING TONE MARK
-302E;CM;HANGUL SINGLE DOT TONE MARK
-302F;CM;HANGUL DOUBLE DOT TONE MARK
-3030;ID;WAVY DASH
-3031;ID;VERTICAL KANA REPEAT MARK
-3032;ID;VERTICAL KANA REPEAT WITH VOICED SOUND MARK
-3033;ID;VERTICAL KANA REPEAT MARK UPPER HALF
-3034;ID;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
-3035;ID;VERTICAL KANA REPEAT MARK LOWER HALF
-3036;ID;CIRCLED POSTAL MARK
-3037;ID;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
-3038;ID;HANGZHOU NUMERAL TEN
-3039;ID;HANGZHOU NUMERAL TWENTY
-303A;ID;HANGZHOU NUMERAL THIRTY
-303E;ID;IDEOGRAPHIC VARIATION INDICATOR
-303F;ID;IDEOGRAPHIC HALF FILL SPACE
-3041;NS;HIRAGANA LETTER SMALL A
-3042;ID;HIRAGANA LETTER A
-3043;NS;HIRAGANA LETTER SMALL I
-3044;ID;HIRAGANA LETTER I
-3045;NS;HIRAGANA LETTER SMALL U
-3046;ID;HIRAGANA LETTER U
-3047;NS;HIRAGANA LETTER SMALL E
-3048;ID;HIRAGANA LETTER E
-3049;NS;HIRAGANA LETTER SMALL O
-304A;ID;HIRAGANA LETTER O
-304B;ID;HIRAGANA LETTER KA
-304C;ID;HIRAGANA LETTER GA
-304D;ID;HIRAGANA LETTER KI
-304E;ID;HIRAGANA LETTER GI
-304F;ID;HIRAGANA LETTER KU
-3050;ID;HIRAGANA LETTER GU
-3051;ID;HIRAGANA LETTER KE
-3052;ID;HIRAGANA LETTER GE
-3053;ID;HIRAGANA LETTER KO
-3054;ID;HIRAGANA LETTER GO
-3055;ID;HIRAGANA LETTER SA
-3056;ID;HIRAGANA LETTER ZA
-3057;ID;HIRAGANA LETTER SI
-3058;ID;HIRAGANA LETTER ZI
-3059;ID;HIRAGANA LETTER SU
-305A;ID;HIRAGANA LETTER ZU
-305B;ID;HIRAGANA LETTER SE
-305C;ID;HIRAGANA LETTER ZE
-305D;ID;HIRAGANA LETTER SO
-305E;ID;HIRAGANA LETTER ZO
-305F;ID;HIRAGANA LETTER TA
-3060;ID;HIRAGANA LETTER DA
-3061;ID;HIRAGANA LETTER TI
-3062;ID;HIRAGANA LETTER DI
-3063;NS;HIRAGANA LETTER SMALL TU
-3064;ID;HIRAGANA LETTER TU
-3065;ID;HIRAGANA LETTER DU
-3066;ID;HIRAGANA LETTER TE
-3067;ID;HIRAGANA LETTER DE
-3068;ID;HIRAGANA LETTER TO
-3069;ID;HIRAGANA LETTER DO
-306A;ID;HIRAGANA LETTER NA
-306B;ID;HIRAGANA LETTER NI
-306C;ID;HIRAGANA LETTER NU
-306D;ID;HIRAGANA LETTER NE
-306E;ID;HIRAGANA LETTER NO
-306F;ID;HIRAGANA LETTER HA
-3070;ID;HIRAGANA LETTER BA
-3071;ID;HIRAGANA LETTER PA
-3072;ID;HIRAGANA LETTER HI
-3073;ID;HIRAGANA LETTER BI
-3074;ID;HIRAGANA LETTER PI
-3075;ID;HIRAGANA LETTER HU
-3076;ID;HIRAGANA LETTER BU
-3077;ID;HIRAGANA LETTER PU
-3078;ID;HIRAGANA LETTER HE
-3079;ID;HIRAGANA LETTER BE
-307A;ID;HIRAGANA LETTER PE
-307B;ID;HIRAGANA LETTER HO
-307C;ID;HIRAGANA LETTER BO
-307D;ID;HIRAGANA LETTER PO
-307E;ID;HIRAGANA LETTER MA
-307F;ID;HIRAGANA LETTER MI
-3080;ID;HIRAGANA LETTER MU
-3081;ID;HIRAGANA LETTER ME
-3082;ID;HIRAGANA LETTER MO
-3083;NS;HIRAGANA LETTER SMALL YA
-3084;ID;HIRAGANA LETTER YA
-3085;NS;HIRAGANA LETTER SMALL YU
-3086;ID;HIRAGANA LETTER YU
-3087;NS;HIRAGANA LETTER SMALL YO
-3088;ID;HIRAGANA LETTER YO
-3089;ID;HIRAGANA LETTER RA
-308A;ID;HIRAGANA LETTER RI
-308B;ID;HIRAGANA LETTER RU
-308C;ID;HIRAGANA LETTER RE
-308D;ID;HIRAGANA LETTER RO
-308E;NS;HIRAGANA LETTER SMALL WA
-308F;ID;HIRAGANA LETTER WA
-3090;ID;HIRAGANA LETTER WI
-3091;ID;HIRAGANA LETTER WE
-3092;ID;HIRAGANA LETTER WO
-3093;ID;HIRAGANA LETTER N
-3094;ID;HIRAGANA LETTER VU
-3099;CM;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
-309A;CM;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309B;NS;KATAKANA-HIRAGANA VOICED SOUND MARK
-309C;NS;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309D;NS;HIRAGANA ITERATION MARK
-309E;NS;HIRAGANA VOICED ITERATION MARK
-30A1;NS;KATAKANA LETTER SMALL A
-30A2;ID;KATAKANA LETTER A
-30A3;NS;KATAKANA LETTER SMALL I
-30A4;ID;KATAKANA LETTER I
-30A5;NS;KATAKANA LETTER SMALL U
-30A6;ID;KATAKANA LETTER U
-30A7;NS;KATAKANA LETTER SMALL E
-30A8;ID;KATAKANA LETTER E
-30A9;NS;KATAKANA LETTER SMALL O
-30AA;ID;KATAKANA LETTER O
-30AB;ID;KATAKANA LETTER KA
-30AC;ID;KATAKANA LETTER GA
-30AD;ID;KATAKANA LETTER KI
-30AE;ID;KATAKANA LETTER GI
-30AF;ID;KATAKANA LETTER KU
-30B0;ID;KATAKANA LETTER GU
-30B1;ID;KATAKANA LETTER KE
-30B2;ID;KATAKANA LETTER GE
-30B3;ID;KATAKANA LETTER KO
-30B4;ID;KATAKANA LETTER GO
-30B5;ID;KATAKANA LETTER SA
-30B6;ID;KATAKANA LETTER ZA
-30B7;ID;KATAKANA LETTER SI
-30B8;ID;KATAKANA LETTER ZI
-30B9;ID;KATAKANA LETTER SU
-30BA;ID;KATAKANA LETTER ZU
-30BB;ID;KATAKANA LETTER SE
-30BC;ID;KATAKANA LETTER ZE
-30BD;ID;KATAKANA LETTER SO
-30BE;ID;KATAKANA LETTER ZO
-30BF;ID;KATAKANA LETTER TA
-30C0;ID;KATAKANA LETTER DA
-30C1;ID;KATAKANA LETTER TI
-30C2;ID;KATAKANA LETTER DI
-30C3;NS;KATAKANA LETTER SMALL TU
-30C4;ID;KATAKANA LETTER TU
-30C5;ID;KATAKANA LETTER DU
-30C6;ID;KATAKANA LETTER TE
-30C7;ID;KATAKANA LETTER DE
-30C8;ID;KATAKANA LETTER TO
-30C9;ID;KATAKANA LETTER DO
-30CA;ID;KATAKANA LETTER NA
-30CB;ID;KATAKANA LETTER NI
-30CC;ID;KATAKANA LETTER NU
-30CD;ID;KATAKANA LETTER NE
-30CE;ID;KATAKANA LETTER NO
-30CF;ID;KATAKANA LETTER HA
-30D0;ID;KATAKANA LETTER BA
-30D1;ID;KATAKANA LETTER PA
-30D2;ID;KATAKANA LETTER HI
-30D3;ID;KATAKANA LETTER BI
-30D4;ID;KATAKANA LETTER PI
-30D5;ID;KATAKANA LETTER HU
-30D6;ID;KATAKANA LETTER BU
-30D7;ID;KATAKANA LETTER PU
-30D8;ID;KATAKANA LETTER HE
-30D9;ID;KATAKANA LETTER BE
-30DA;ID;KATAKANA LETTER PE
-30DB;ID;KATAKANA LETTER HO
-30DC;ID;KATAKANA LETTER BO
-30DD;ID;KATAKANA LETTER PO
-30DE;ID;KATAKANA LETTER MA
-30DF;ID;KATAKANA LETTER MI
-30E0;ID;KATAKANA LETTER MU
-30E1;ID;KATAKANA LETTER ME
-30E2;ID;KATAKANA LETTER MO
-30E3;NS;KATAKANA LETTER SMALL YA
-30E4;ID;KATAKANA LETTER YA
-30E5;NS;KATAKANA LETTER SMALL YU
-30E6;ID;KATAKANA LETTER YU
-30E7;NS;KATAKANA LETTER SMALL YO
-30E8;ID;KATAKANA LETTER YO
-30E9;ID;KATAKANA LETTER RA
-30EA;ID;KATAKANA LETTER RI
-30EB;ID;KATAKANA LETTER RU
-30EC;ID;KATAKANA LETTER RE
-30ED;ID;KATAKANA LETTER RO
-30EE;NS;KATAKANA LETTER SMALL WA
-30EF;ID;KATAKANA LETTER WA
-30F0;ID;KATAKANA LETTER WI
-30F1;ID;KATAKANA LETTER WE
-30F2;ID;KATAKANA LETTER WO
-30F3;ID;KATAKANA LETTER N
-30F4;ID;KATAKANA LETTER VU
-30F5;NS;KATAKANA LETTER SMALL KA
-30F6;NS;KATAKANA LETTER SMALL KE
-30F7;ID;KATAKANA LETTER VA
-30F8;ID;KATAKANA LETTER VI
-30F9;ID;KATAKANA LETTER VE
-30FA;ID;KATAKANA LETTER VO
-30FB;NS;KATAKANA MIDDLE DOT
-30FC;ID;KATAKANA-HIRAGANA PROLONGED SOUND MARK
-30FD;NS;KATAKANA ITERATION MARK
-30FE;ID;KATAKANA VOICED ITERATION MARK
-3105;ID;BOPOMOFO LETTER B
-3106;ID;BOPOMOFO LETTER P
-3107;ID;BOPOMOFO LETTER M
-3108;ID;BOPOMOFO LETTER F
-3109;ID;BOPOMOFO LETTER D
-310A;ID;BOPOMOFO LETTER T
-310B;ID;BOPOMOFO LETTER N
-310C;ID;BOPOMOFO LETTER L
-310D;ID;BOPOMOFO LETTER G
-310E;ID;BOPOMOFO LETTER K
-310F;ID;BOPOMOFO LETTER H
-3110;ID;BOPOMOFO LETTER J
-3111;ID;BOPOMOFO LETTER Q
-3112;ID;BOPOMOFO LETTER X
-3113;ID;BOPOMOFO LETTER ZH
-3114;ID;BOPOMOFO LETTER CH
-3115;ID;BOPOMOFO LETTER SH
-3116;ID;BOPOMOFO LETTER R
-3117;ID;BOPOMOFO LETTER Z
-3118;ID;BOPOMOFO LETTER C
-3119;ID;BOPOMOFO LETTER S
-311A;ID;BOPOMOFO LETTER A
-311B;ID;BOPOMOFO LETTER O
-311C;ID;BOPOMOFO LETTER E
-311D;ID;BOPOMOFO LETTER EH
-311E;ID;BOPOMOFO LETTER AI
-311F;ID;BOPOMOFO LETTER EI
-3120;ID;BOPOMOFO LETTER AU
-3121;ID;BOPOMOFO LETTER OU
-3122;ID;BOPOMOFO LETTER AN
-3123;ID;BOPOMOFO LETTER EN
-3124;ID;BOPOMOFO LETTER ANG
-3125;ID;BOPOMOFO LETTER ENG
-3126;ID;BOPOMOFO LETTER ER
-3127;ID;BOPOMOFO LETTER I
-3128;ID;BOPOMOFO LETTER U
-3129;ID;BOPOMOFO LETTER IU
-312A;ID;BOPOMOFO LETTER V
-312B;ID;BOPOMOFO LETTER NG
-312C;ID;BOPOMOFO LETTER GN
-3131;ID;HANGUL LETTER KIYEOK
-3132;ID;HANGUL LETTER SSANGKIYEOK
-3133;ID;HANGUL LETTER KIYEOK-SIOS
-3134;ID;HANGUL LETTER NIEUN
-3135;ID;HANGUL LETTER NIEUN-CIEUC
-3136;ID;HANGUL LETTER NIEUN-HIEUH
-3137;ID;HANGUL LETTER TIKEUT
-3138;ID;HANGUL LETTER SSANGTIKEUT
-3139;ID;HANGUL LETTER RIEUL
-313A;ID;HANGUL LETTER RIEUL-KIYEOK
-313B;ID;HANGUL LETTER RIEUL-MIEUM
-313C;ID;HANGUL LETTER RIEUL-PIEUP
-313D;ID;HANGUL LETTER RIEUL-SIOS
-313E;ID;HANGUL LETTER RIEUL-THIEUTH
-313F;ID;HANGUL LETTER RIEUL-PHIEUPH
-3140;ID;HANGUL LETTER RIEUL-HIEUH
-3141;ID;HANGUL LETTER MIEUM
-3142;ID;HANGUL LETTER PIEUP
-3143;ID;HANGUL LETTER SSANGPIEUP
-3144;ID;HANGUL LETTER PIEUP-SIOS
-3145;ID;HANGUL LETTER SIOS
-3146;ID;HANGUL LETTER SSANGSIOS
-3147;ID;HANGUL LETTER IEUNG
-3148;ID;HANGUL LETTER CIEUC
-3149;ID;HANGUL LETTER SSANGCIEUC
-314A;ID;HANGUL LETTER CHIEUCH
-314B;ID;HANGUL LETTER KHIEUKH
-314C;ID;HANGUL LETTER THIEUTH
-314D;ID;HANGUL LETTER PHIEUPH
-314E;ID;HANGUL LETTER HIEUH
-314F;ID;HANGUL LETTER A
-3150;ID;HANGUL LETTER AE
-3151;ID;HANGUL LETTER YA
-3152;ID;HANGUL LETTER YAE
-3153;ID;HANGUL LETTER EO
-3154;ID;HANGUL LETTER E
-3155;ID;HANGUL LETTER YEO
-3156;ID;HANGUL LETTER YE
-3157;ID;HANGUL LETTER O
-3158;ID;HANGUL LETTER WA
-3159;ID;HANGUL LETTER WAE
-315A;ID;HANGUL LETTER OE
-315B;ID;HANGUL LETTER YO
-315C;ID;HANGUL LETTER U
-315D;ID;HANGUL LETTER WEO
-315E;ID;HANGUL LETTER WE
-315F;ID;HANGUL LETTER WI
-3160;ID;HANGUL LETTER YU
-3161;ID;HANGUL LETTER EU
-3162;ID;HANGUL LETTER YI
-3163;ID;HANGUL LETTER I
-3164;ID;HANGUL FILLER
-3165;ID;HANGUL LETTER SSANGNIEUN
-3166;ID;HANGUL LETTER NIEUN-TIKEUT
-3167;ID;HANGUL LETTER NIEUN-SIOS
-3168;ID;HANGUL LETTER NIEUN-PANSIOS
-3169;ID;HANGUL LETTER RIEUL-KIYEOK-SIOS
-316A;ID;HANGUL LETTER RIEUL-TIKEUT
-316B;ID;HANGUL LETTER RIEUL-PIEUP-SIOS
-316C;ID;HANGUL LETTER RIEUL-PANSIOS
-316D;ID;HANGUL LETTER RIEUL-YEORINHIEUH
-316E;ID;HANGUL LETTER MIEUM-PIEUP
-316F;ID;HANGUL LETTER MIEUM-SIOS
-3170;ID;HANGUL LETTER MIEUM-PANSIOS
-3171;ID;HANGUL LETTER KAPYEOUNMIEUM
-3172;ID;HANGUL LETTER PIEUP-KIYEOK
-3173;ID;HANGUL LETTER PIEUP-TIKEUT
-3174;ID;HANGUL LETTER PIEUP-SIOS-KIYEOK
-3175;ID;HANGUL LETTER PIEUP-SIOS-TIKEUT
-3176;ID;HANGUL LETTER PIEUP-CIEUC
-3177;ID;HANGUL LETTER PIEUP-THIEUTH
-3178;ID;HANGUL LETTER KAPYEOUNPIEUP
-3179;ID;HANGUL LETTER KAPYEOUNSSANGPIEUP
-317A;ID;HANGUL LETTER SIOS-KIYEOK
-317B;ID;HANGUL LETTER SIOS-NIEUN
-317C;ID;HANGUL LETTER SIOS-TIKEUT
-317D;ID;HANGUL LETTER SIOS-PIEUP
-317E;ID;HANGUL LETTER SIOS-CIEUC
-317F;ID;HANGUL LETTER PANSIOS
-3180;ID;HANGUL LETTER SSANGIEUNG
-3181;ID;HANGUL LETTER YESIEUNG
-3182;ID;HANGUL LETTER YESIEUNG-SIOS
-3183;ID;HANGUL LETTER YESIEUNG-PANSIOS
-3184;ID;HANGUL LETTER KAPYEOUNPHIEUPH
-3185;ID;HANGUL LETTER SSANGHIEUH
-3186;ID;HANGUL LETTER YEORINHIEUH
-3187;ID;HANGUL LETTER YO-YA
-3188;ID;HANGUL LETTER YO-YAE
-3189;ID;HANGUL LETTER YO-I
-318A;ID;HANGUL LETTER YU-YEO
-318B;ID;HANGUL LETTER YU-YE
-318C;ID;HANGUL LETTER YU-I
-318D;ID;HANGUL LETTER ARAEA
-318E;ID;HANGUL LETTER ARAEAE
-3190;ID;IDEOGRAPHIC ANNOTATION LINKING MARK
-3191;ID;IDEOGRAPHIC ANNOTATION REVERSE MARK
-3192;ID;IDEOGRAPHIC ANNOTATION ONE MARK
-3193;ID;IDEOGRAPHIC ANNOTATION TWO MARK
-3194;ID;IDEOGRAPHIC ANNOTATION THREE MARK
-3195;ID;IDEOGRAPHIC ANNOTATION FOUR MARK
-3196;ID;IDEOGRAPHIC ANNOTATION TOP MARK
-3197;ID;IDEOGRAPHIC ANNOTATION MIDDLE MARK
-3198;ID;IDEOGRAPHIC ANNOTATION BOTTOM MARK
-3199;ID;IDEOGRAPHIC ANNOTATION FIRST MARK
-319A;ID;IDEOGRAPHIC ANNOTATION SECOND MARK
-319B;ID;IDEOGRAPHIC ANNOTATION THIRD MARK
-319C;ID;IDEOGRAPHIC ANNOTATION FOURTH MARK
-319D;ID;IDEOGRAPHIC ANNOTATION HEAVEN MARK
-319E;ID;IDEOGRAPHIC ANNOTATION EARTH MARK
-319F;ID;IDEOGRAPHIC ANNOTATION MAN MARK
-31A0;ID;BOPOMOFO LETTER BU
-31A1;ID;BOPOMOFO LETTER ZI
-31A2;ID;BOPOMOFO LETTER JI
-31A3;ID;BOPOMOFO LETTER GU
-31A4;ID;BOPOMOFO LETTER EE
-31A5;ID;BOPOMOFO LETTER ENN
-31A6;ID;BOPOMOFO LETTER OO
-31A7;ID;BOPOMOFO LETTER ONN
-31A8;ID;BOPOMOFO LETTER IR
-31A9;ID;BOPOMOFO LETTER ANN
-31AA;ID;BOPOMOFO LETTER INN
-31AB;ID;BOPOMOFO LETTER UNN
-31AC;ID;BOPOMOFO LETTER IM
-31AD;ID;BOPOMOFO LETTER NGG
-31AE;ID;BOPOMOFO LETTER AINN
-31AF;ID;BOPOMOFO LETTER AUNN
-31B0;ID;BOPOMOFO LETTER AM
-31B1;ID;BOPOMOFO LETTER OM
-31B2;ID;BOPOMOFO LETTER ONG
-31B3;ID;BOPOMOFO LETTER INNN
-31B4;ID;BOPOMOFO FINAL LETTER P
-31B5;ID;BOPOMOFO FINAL LETTER T
-31B6;ID;BOPOMOFO FINAL LETTER K
-31B7;ID;BOPOMOFO FINAL LETTER H
-3200;ID;PARENTHESIZED HANGUL KIYEOK
-3201;ID;PARENTHESIZED HANGUL NIEUN
-3202;ID;PARENTHESIZED HANGUL TIKEUT
-3203;ID;PARENTHESIZED HANGUL RIEUL
-3204;ID;PARENTHESIZED HANGUL MIEUM
-3205;ID;PARENTHESIZED HANGUL PIEUP
-3206;ID;PARENTHESIZED HANGUL SIOS
-3207;ID;PARENTHESIZED HANGUL IEUNG
-3208;ID;PARENTHESIZED HANGUL CIEUC
-3209;ID;PARENTHESIZED HANGUL CHIEUCH
-320A;ID;PARENTHESIZED HANGUL KHIEUKH
-320B;ID;PARENTHESIZED HANGUL THIEUTH
-320C;ID;PARENTHESIZED HANGUL PHIEUPH
-320D;ID;PARENTHESIZED HANGUL HIEUH
-320E;ID;PARENTHESIZED HANGUL KIYEOK A
-320F;ID;PARENTHESIZED HANGUL NIEUN A
-3210;ID;PARENTHESIZED HANGUL TIKEUT A
-3211;ID;PARENTHESIZED HANGUL RIEUL A
-3212;ID;PARENTHESIZED HANGUL MIEUM A
-3213;ID;PARENTHESIZED HANGUL PIEUP A
-3214;ID;PARENTHESIZED HANGUL SIOS A
-3215;ID;PARENTHESIZED HANGUL IEUNG A
-3216;ID;PARENTHESIZED HANGUL CIEUC A
-3217;ID;PARENTHESIZED HANGUL CHIEUCH A
-3218;ID;PARENTHESIZED HANGUL KHIEUKH A
-3219;ID;PARENTHESIZED HANGUL THIEUTH A
-321A;ID;PARENTHESIZED HANGUL PHIEUPH A
-321B;ID;PARENTHESIZED HANGUL HIEUH A
-321C;ID;PARENTHESIZED HANGUL CIEUC U
-3220;ID;PARENTHESIZED IDEOGRAPH ONE
-3221;ID;PARENTHESIZED IDEOGRAPH TWO
-3222;ID;PARENTHESIZED IDEOGRAPH THREE
-3223;ID;PARENTHESIZED IDEOGRAPH FOUR
-3224;ID;PARENTHESIZED IDEOGRAPH FIVE
-3225;ID;PARENTHESIZED IDEOGRAPH SIX
-3226;ID;PARENTHESIZED IDEOGRAPH SEVEN
-3227;ID;PARENTHESIZED IDEOGRAPH EIGHT
-3228;ID;PARENTHESIZED IDEOGRAPH NINE
-3229;ID;PARENTHESIZED IDEOGRAPH TEN
-322A;ID;PARENTHESIZED IDEOGRAPH MOON
-322B;ID;PARENTHESIZED IDEOGRAPH FIRE
-322C;ID;PARENTHESIZED IDEOGRAPH WATER
-322D;ID;PARENTHESIZED IDEOGRAPH WOOD
-322E;ID;PARENTHESIZED IDEOGRAPH METAL
-322F;ID;PARENTHESIZED IDEOGRAPH EARTH
-3230;ID;PARENTHESIZED IDEOGRAPH SUN
-3231;ID;PARENTHESIZED IDEOGRAPH STOCK
-3232;ID;PARENTHESIZED IDEOGRAPH HAVE
-3233;ID;PARENTHESIZED IDEOGRAPH SOCIETY
-3234;ID;PARENTHESIZED IDEOGRAPH NAME
-3235;ID;PARENTHESIZED IDEOGRAPH SPECIAL
-3236;ID;PARENTHESIZED IDEOGRAPH FINANCIAL
-3237;ID;PARENTHESIZED IDEOGRAPH CONGRATULATION
-3238;ID;PARENTHESIZED IDEOGRAPH LABOR
-3239;ID;PARENTHESIZED IDEOGRAPH REPRESENT
-323A;ID;PARENTHESIZED IDEOGRAPH CALL
-323B;ID;PARENTHESIZED IDEOGRAPH STUDY
-323C;ID;PARENTHESIZED IDEOGRAPH SUPERVISE
-323D;ID;PARENTHESIZED IDEOGRAPH ENTERPRISE
-323E;ID;PARENTHESIZED IDEOGRAPH RESOURCE
-323F;ID;PARENTHESIZED IDEOGRAPH ALLIANCE
-3240;ID;PARENTHESIZED IDEOGRAPH FESTIVAL
-3241;ID;PARENTHESIZED IDEOGRAPH REST
-3242;ID;PARENTHESIZED IDEOGRAPH SELF
-3243;ID;PARENTHESIZED IDEOGRAPH REACH
-3260;ID;CIRCLED HANGUL KIYEOK
-3261;ID;CIRCLED HANGUL NIEUN
-3262;ID;CIRCLED HANGUL TIKEUT
-3263;ID;CIRCLED HANGUL RIEUL
-3264;ID;CIRCLED HANGUL MIEUM
-3265;ID;CIRCLED HANGUL PIEUP
-3266;ID;CIRCLED HANGUL SIOS
-3267;ID;CIRCLED HANGUL IEUNG
-3268;ID;CIRCLED HANGUL CIEUC
-3269;ID;CIRCLED HANGUL CHIEUCH
-326A;ID;CIRCLED HANGUL KHIEUKH
-326B;ID;CIRCLED HANGUL THIEUTH
-326C;ID;CIRCLED HANGUL PHIEUPH
-326D;ID;CIRCLED HANGUL HIEUH
-326E;ID;CIRCLED HANGUL KIYEOK A
-326F;ID;CIRCLED HANGUL NIEUN A
-3270;ID;CIRCLED HANGUL TIKEUT A
-3271;ID;CIRCLED HANGUL RIEUL A
-3272;ID;CIRCLED HANGUL MIEUM A
-3273;ID;CIRCLED HANGUL PIEUP A
-3274;ID;CIRCLED HANGUL SIOS A
-3275;ID;CIRCLED HANGUL IEUNG A
-3276;ID;CIRCLED HANGUL CIEUC A
-3277;ID;CIRCLED HANGUL CHIEUCH A
-3278;ID;CIRCLED HANGUL KHIEUKH A
-3279;ID;CIRCLED HANGUL THIEUTH A
-327A;ID;CIRCLED HANGUL PHIEUPH A
-327B;ID;CIRCLED HANGUL HIEUH A
-327F;ID;KOREAN STANDARD SYMBOL
-3280;ID;CIRCLED IDEOGRAPH ONE
-3281;ID;CIRCLED IDEOGRAPH TWO
-3282;ID;CIRCLED IDEOGRAPH THREE
-3283;ID;CIRCLED IDEOGRAPH FOUR
-3284;ID;CIRCLED IDEOGRAPH FIVE
-3285;ID;CIRCLED IDEOGRAPH SIX
-3286;ID;CIRCLED IDEOGRAPH SEVEN
-3287;ID;CIRCLED IDEOGRAPH EIGHT
-3288;ID;CIRCLED IDEOGRAPH NINE
-3289;ID;CIRCLED IDEOGRAPH TEN
-328A;ID;CIRCLED IDEOGRAPH MOON
-328B;ID;CIRCLED IDEOGRAPH FIRE
-328C;ID;CIRCLED IDEOGRAPH WATER
-328D;ID;CIRCLED IDEOGRAPH WOOD
-328E;ID;CIRCLED IDEOGRAPH METAL
-328F;ID;CIRCLED IDEOGRAPH EARTH
-3290;ID;CIRCLED IDEOGRAPH SUN
-3291;ID;CIRCLED IDEOGRAPH STOCK
-3292;ID;CIRCLED IDEOGRAPH HAVE
-3293;ID;CIRCLED IDEOGRAPH SOCIETY
-3294;ID;CIRCLED IDEOGRAPH NAME
-3295;ID;CIRCLED IDEOGRAPH SPECIAL
-3296;ID;CIRCLED IDEOGRAPH FINANCIAL
-3297;ID;CIRCLED IDEOGRAPH CONGRATULATION
-3298;ID;CIRCLED IDEOGRAPH LABOR
-3299;ID;CIRCLED IDEOGRAPH SECRET
-329A;ID;CIRCLED IDEOGRAPH MALE
-329B;ID;CIRCLED IDEOGRAPH FEMALE
-329C;ID;CIRCLED IDEOGRAPH SUITABLE
-329D;ID;CIRCLED IDEOGRAPH EXCELLENT
-329E;ID;CIRCLED IDEOGRAPH PRINT
-329F;ID;CIRCLED IDEOGRAPH ATTENTION
-32A0;ID;CIRCLED IDEOGRAPH ITEM
-32A1;ID;CIRCLED IDEOGRAPH REST
-32A2;ID;CIRCLED IDEOGRAPH COPY
-32A3;ID;CIRCLED IDEOGRAPH CORRECT
-32A4;ID;CIRCLED IDEOGRAPH HIGH
-32A5;ID;CIRCLED IDEOGRAPH CENTRE
-32A6;ID;CIRCLED IDEOGRAPH LOW
-32A7;ID;CIRCLED IDEOGRAPH LEFT
-32A8;ID;CIRCLED IDEOGRAPH RIGHT
-32A9;ID;CIRCLED IDEOGRAPH MEDICINE
-32AA;ID;CIRCLED IDEOGRAPH RELIGION
-32AB;ID;CIRCLED IDEOGRAPH STUDY
-32AC;ID;CIRCLED IDEOGRAPH SUPERVISE
-32AD;ID;CIRCLED IDEOGRAPH ENTERPRISE
-32AE;ID;CIRCLED IDEOGRAPH RESOURCE
-32AF;ID;CIRCLED IDEOGRAPH ALLIANCE
-32B0;ID;CIRCLED IDEOGRAPH NIGHT
-32C0;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
-32C1;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
-32C2;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
-32C3;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
-32C4;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
-32C5;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
-32C6;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
-32C7;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
-32C8;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
-32C9;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
-32CA;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
-32CB;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
-32D0;ID;CIRCLED KATAKANA A
-32D1;ID;CIRCLED KATAKANA I
-32D2;ID;CIRCLED KATAKANA U
-32D3;ID;CIRCLED KATAKANA E
-32D4;ID;CIRCLED KATAKANA O
-32D5;ID;CIRCLED KATAKANA KA
-32D6;ID;CIRCLED KATAKANA KI
-32D7;ID;CIRCLED KATAKANA KU
-32D8;ID;CIRCLED KATAKANA KE
-32D9;ID;CIRCLED KATAKANA KO
-32DA;ID;CIRCLED KATAKANA SA
-32DB;ID;CIRCLED KATAKANA SI
-32DC;ID;CIRCLED KATAKANA SU
-32DD;ID;CIRCLED KATAKANA SE
-32DE;ID;CIRCLED KATAKANA SO
-32DF;ID;CIRCLED KATAKANA TA
-32E0;ID;CIRCLED KATAKANA TI
-32E1;ID;CIRCLED KATAKANA TU
-32E2;ID;CIRCLED KATAKANA TE
-32E3;ID;CIRCLED KATAKANA TO
-32E4;ID;CIRCLED KATAKANA NA
-32E5;ID;CIRCLED KATAKANA NI
-32E6;ID;CIRCLED KATAKANA NU
-32E7;ID;CIRCLED KATAKANA NE
-32E8;ID;CIRCLED KATAKANA NO
-32E9;ID;CIRCLED KATAKANA HA
-32EA;ID;CIRCLED KATAKANA HI
-32EB;ID;CIRCLED KATAKANA HU
-32EC;ID;CIRCLED KATAKANA HE
-32ED;ID;CIRCLED KATAKANA HO
-32EE;ID;CIRCLED KATAKANA MA
-32EF;ID;CIRCLED KATAKANA MI
-32F0;ID;CIRCLED KATAKANA MU
-32F1;ID;CIRCLED KATAKANA ME
-32F2;ID;CIRCLED KATAKANA MO
-32F3;ID;CIRCLED KATAKANA YA
-32F4;ID;CIRCLED KATAKANA YU
-32F5;ID;CIRCLED KATAKANA YO
-32F6;ID;CIRCLED KATAKANA RA
-32F7;ID;CIRCLED KATAKANA RI
-32F8;ID;CIRCLED KATAKANA RU
-32F9;ID;CIRCLED KATAKANA RE
-32FA;ID;CIRCLED KATAKANA RO
-32FB;ID;CIRCLED KATAKANA WA
-32FC;ID;CIRCLED KATAKANA WI
-32FD;ID;CIRCLED KATAKANA WE
-32FE;ID;CIRCLED KATAKANA WO
-3300;ID;SQUARE APAATO
-3301;ID;SQUARE ARUHUA
-3302;ID;SQUARE ANPEA
-3303;ID;SQUARE AARU
-3304;ID;SQUARE ININGU
-3305;ID;SQUARE INTI
-3306;ID;SQUARE UON
-3307;ID;SQUARE ESUKUUDO
-3308;ID;SQUARE EEKAA
-3309;ID;SQUARE ONSU
-330A;ID;SQUARE OOMU
-330B;ID;SQUARE KAIRI
-330C;ID;SQUARE KARATTO
-330D;ID;SQUARE KARORII
-330E;ID;SQUARE GARON
-330F;ID;SQUARE GANMA
-3310;ID;SQUARE GIGA
-3311;ID;SQUARE GINII
-3312;ID;SQUARE KYURII
-3313;ID;SQUARE GIRUDAA
-3314;ID;SQUARE KIRO
-3315;ID;SQUARE KIROGURAMU
-3316;ID;SQUARE KIROMEETORU
-3317;ID;SQUARE KIROWATTO
-3318;ID;SQUARE GURAMU
-3319;ID;SQUARE GURAMUTON
-331A;ID;SQUARE KURUZEIRO
-331B;ID;SQUARE KUROONE
-331C;ID;SQUARE KEESU
-331D;ID;SQUARE KORUNA
-331E;ID;SQUARE KOOPO
-331F;ID;SQUARE SAIKURU
-3320;ID;SQUARE SANTIIMU
-3321;ID;SQUARE SIRINGU
-3322;ID;SQUARE SENTI
-3323;ID;SQUARE SENTO
-3324;ID;SQUARE DAASU
-3325;ID;SQUARE DESI
-3326;ID;SQUARE DORU
-3327;ID;SQUARE TON
-3328;ID;SQUARE NANO
-3329;ID;SQUARE NOTTO
-332A;ID;SQUARE HAITU
-332B;ID;SQUARE PAASENTO
-332C;ID;SQUARE PAATU
-332D;ID;SQUARE BAARERU
-332E;ID;SQUARE PIASUTORU
-332F;ID;SQUARE PIKURU
-3330;ID;SQUARE PIKO
-3331;ID;SQUARE BIRU
-3332;ID;SQUARE HUARADDO
-3333;ID;SQUARE HUIITO
-3334;ID;SQUARE BUSSYERU
-3335;ID;SQUARE HURAN
-3336;ID;SQUARE HEKUTAARU
-3337;ID;SQUARE PESO
-3338;ID;SQUARE PENIHI
-3339;ID;SQUARE HERUTU
-333A;ID;SQUARE PENSU
-333B;ID;SQUARE PEEZI
-333C;ID;SQUARE BEETA
-333D;ID;SQUARE POINTO
-333E;ID;SQUARE BORUTO
-333F;ID;SQUARE HON
-3340;ID;SQUARE PONDO
-3341;ID;SQUARE HOORU
-3342;ID;SQUARE HOON
-3343;ID;SQUARE MAIKURO
-3344;ID;SQUARE MAIRU
-3345;ID;SQUARE MAHHA
-3346;ID;SQUARE MARUKU
-3347;ID;SQUARE MANSYON
-3348;ID;SQUARE MIKURON
-3349;ID;SQUARE MIRI
-334A;ID;SQUARE MIRIBAARU
-334B;ID;SQUARE MEGA
-334C;ID;SQUARE MEGATON
-334D;ID;SQUARE MEETORU
-334E;ID;SQUARE YAADO
-334F;ID;SQUARE YAARU
-3350;ID;SQUARE YUAN
-3351;ID;SQUARE RITTORU
-3352;ID;SQUARE RIRA
-3353;ID;SQUARE RUPII
-3354;ID;SQUARE RUUBURU
-3355;ID;SQUARE REMU
-3356;ID;SQUARE RENTOGEN
-3357;ID;SQUARE WATTO
-3358;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
-3359;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
-335A;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
-335B;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
-335C;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
-335D;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
-335E;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
-335F;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
-3360;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
-3361;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
-3362;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
-3363;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
-3364;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
-3365;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
-3366;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
-3367;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
-3368;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
-3369;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
-336A;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
-336B;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
-336C;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
-336D;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
-336E;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
-336F;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
-3370;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
-3371;ID;SQUARE HPA
-3372;ID;SQUARE DA
-3373;ID;SQUARE AU
-3374;ID;SQUARE BAR
-3375;ID;SQUARE OV
-3376;ID;SQUARE PC
-337B;ID;SQUARE ERA NAME HEISEI
-337C;ID;SQUARE ERA NAME SYOUWA
-337D;ID;SQUARE ERA NAME TAISYOU
-337E;ID;SQUARE ERA NAME MEIZI
-337F;ID;SQUARE CORPORATION
-3380;ID;SQUARE PA AMPS
-3381;ID;SQUARE NA
-3382;ID;SQUARE MU A
-3383;ID;SQUARE MA
-3384;ID;SQUARE KA
-3385;ID;SQUARE KB
-3386;ID;SQUARE MB
-3387;ID;SQUARE GB
-3388;ID;SQUARE CAL
-3389;ID;SQUARE KCAL
-338A;ID;SQUARE PF
-338B;ID;SQUARE NF
-338C;ID;SQUARE MU F
-338D;ID;SQUARE MU G
-338E;ID;SQUARE MG
-338F;ID;SQUARE KG
-3390;ID;SQUARE HZ
-3391;ID;SQUARE KHZ
-3392;ID;SQUARE MHZ
-3393;ID;SQUARE GHZ
-3394;ID;SQUARE THZ
-3395;ID;SQUARE MU L
-3396;ID;SQUARE ML
-3397;ID;SQUARE DL
-3398;ID;SQUARE KL
-3399;ID;SQUARE FM
-339A;ID;SQUARE NM
-339B;ID;SQUARE MU M
-339C;ID;SQUARE MM
-339D;ID;SQUARE CM
-339E;ID;SQUARE KM
-339F;ID;SQUARE MM SQUARED
-33A0;ID;SQUARE CM SQUARED
-33A1;ID;SQUARE M SQUARED
-33A2;ID;SQUARE KM SQUARED
-33A3;ID;SQUARE MM CUBED
-33A4;ID;SQUARE CM CUBED
-33A5;ID;SQUARE M CUBED
-33A6;ID;SQUARE KM CUBED
-33A7;ID;SQUARE M OVER S
-33A8;ID;SQUARE M OVER S SQUARED
-33A9;ID;SQUARE PA
-33AA;ID;SQUARE KPA
-33AB;ID;SQUARE MPA
-33AC;ID;SQUARE GPA
-33AD;ID;SQUARE RAD
-33AE;ID;SQUARE RAD OVER S
-33AF;ID;SQUARE RAD OVER S SQUARED
-33B0;ID;SQUARE PS
-33B1;ID;SQUARE NS
-33B2;ID;SQUARE MU S
-33B3;ID;SQUARE MS
-33B4;ID;SQUARE PV
-33B5;ID;SQUARE NV
-33B6;ID;SQUARE MU V
-33B7;ID;SQUARE MV
-33B8;ID;SQUARE KV
-33B9;ID;SQUARE MV MEGA
-33BA;ID;SQUARE PW
-33BB;ID;SQUARE NW
-33BC;ID;SQUARE MU W
-33BD;ID;SQUARE MW
-33BE;ID;SQUARE KW
-33BF;ID;SQUARE MW MEGA
-33C0;ID;SQUARE K OHM
-33C1;ID;SQUARE M OHM
-33C2;ID;SQUARE AM
-33C3;ID;SQUARE BQ
-33C4;ID;SQUARE CC
-33C5;ID;SQUARE CD
-33C6;ID;SQUARE C OVER KG
-33C7;ID;SQUARE CO
-33C8;ID;SQUARE DB
-33C9;ID;SQUARE GY
-33CA;ID;SQUARE HA
-33CB;ID;SQUARE HP
-33CC;ID;SQUARE IN
-33CD;ID;SQUARE KK
-33CE;ID;SQUARE KM CAPITAL
-33CF;ID;SQUARE KT
-33D0;ID;SQUARE LM
-33D1;ID;SQUARE LN
-33D2;ID;SQUARE LOG
-33D3;ID;SQUARE LX
-33D4;ID;SQUARE MB SMALL
-33D5;ID;SQUARE MIL
-33D6;ID;SQUARE MOL
-33D7;ID;SQUARE PH
-33D8;ID;SQUARE PM
-33D9;ID;SQUARE PPM
-33DA;ID;SQUARE PR
-33DB;ID;SQUARE SR
-33DC;ID;SQUARE SV
-33DD;ID;SQUARE WB
-33E0;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
-33E1;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
-33E2;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
-33E3;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
-33E4;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
-33E5;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
-33E6;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
-33E7;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
-33E8;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
-33E9;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
-33EA;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
-33EB;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
-33EC;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
-33ED;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
-33EE;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
-33EF;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
-33F0;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
-33F1;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
-33F2;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
-33F3;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
-33F4;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
-33F5;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
-33F6;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
-33F7;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
-33F8;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
-33F9;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
-33FA;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
-33FB;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
-33FC;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
-33FD;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
-33FE;ID;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
-3400;ID;<CJK Ideograph Extension A, First>
-4DB5;ID;<CJK Ideograph Extension A, Last>
-4E00;ID;<CJK Ideograph, First>
-9FA5;ID;<CJK Ideograph, Last>
-A000;ID;YI SYLLABLE IT
-A001;ID;YI SYLLABLE IX
-A002;ID;YI SYLLABLE I
-A003;ID;YI SYLLABLE IP
-A004;ID;YI SYLLABLE IET
-A005;ID;YI SYLLABLE IEX
-A006;ID;YI SYLLABLE IE
-A007;ID;YI SYLLABLE IEP
-A008;ID;YI SYLLABLE AT
-A009;ID;YI SYLLABLE AX
-A00A;ID;YI SYLLABLE A
-A00B;ID;YI SYLLABLE AP
-A00C;ID;YI SYLLABLE UOX
-A00D;ID;YI SYLLABLE UO
-A00E;ID;YI SYLLABLE UOP
-A00F;ID;YI SYLLABLE OT
-A010;ID;YI SYLLABLE OX
-A011;ID;YI SYLLABLE O
-A012;ID;YI SYLLABLE OP
-A013;ID;YI SYLLABLE EX
-A014;ID;YI SYLLABLE E
-A015;ID;YI SYLLABLE WU
-A016;ID;YI SYLLABLE BIT
-A017;ID;YI SYLLABLE BIX
-A018;ID;YI SYLLABLE BI
-A019;ID;YI SYLLABLE BIP
-A01A;ID;YI SYLLABLE BIET
-A01B;ID;YI SYLLABLE BIEX
-A01C;ID;YI SYLLABLE BIE
-A01D;ID;YI SYLLABLE BIEP
-A01E;ID;YI SYLLABLE BAT
-A01F;ID;YI SYLLABLE BAX
-A020;ID;YI SYLLABLE BA
-A021;ID;YI SYLLABLE BAP
-A022;ID;YI SYLLABLE BUOX
-A023;ID;YI SYLLABLE BUO
-A024;ID;YI SYLLABLE BUOP
-A025;ID;YI SYLLABLE BOT
-A026;ID;YI SYLLABLE BOX
-A027;ID;YI SYLLABLE BO
-A028;ID;YI SYLLABLE BOP
-A029;ID;YI SYLLABLE BEX
-A02A;ID;YI SYLLABLE BE
-A02B;ID;YI SYLLABLE BEP
-A02C;ID;YI SYLLABLE BUT
-A02D;ID;YI SYLLABLE BUX
-A02E;ID;YI SYLLABLE BU
-A02F;ID;YI SYLLABLE BUP
-A030;ID;YI SYLLABLE BURX
-A031;ID;YI SYLLABLE BUR
-A032;ID;YI SYLLABLE BYT
-A033;ID;YI SYLLABLE BYX
-A034;ID;YI SYLLABLE BY
-A035;ID;YI SYLLABLE BYP
-A036;ID;YI SYLLABLE BYRX
-A037;ID;YI SYLLABLE BYR
-A038;ID;YI SYLLABLE PIT
-A039;ID;YI SYLLABLE PIX
-A03A;ID;YI SYLLABLE PI
-A03B;ID;YI SYLLABLE PIP
-A03C;ID;YI SYLLABLE PIEX
-A03D;ID;YI SYLLABLE PIE
-A03E;ID;YI SYLLABLE PIEP
-A03F;ID;YI SYLLABLE PAT
-A040;ID;YI SYLLABLE PAX
-A041;ID;YI SYLLABLE PA
-A042;ID;YI SYLLABLE PAP
-A043;ID;YI SYLLABLE PUOX
-A044;ID;YI SYLLABLE PUO
-A045;ID;YI SYLLABLE PUOP
-A046;ID;YI SYLLABLE POT
-A047;ID;YI SYLLABLE POX
-A048;ID;YI SYLLABLE PO
-A049;ID;YI SYLLABLE POP
-A04A;ID;YI SYLLABLE PUT
-A04B;ID;YI SYLLABLE PUX
-A04C;ID;YI SYLLABLE PU
-A04D;ID;YI SYLLABLE PUP
-A04E;ID;YI SYLLABLE PURX
-A04F;ID;YI SYLLABLE PUR
-A050;ID;YI SYLLABLE PYT
-A051;ID;YI SYLLABLE PYX
-A052;ID;YI SYLLABLE PY
-A053;ID;YI SYLLABLE PYP
-A054;ID;YI SYLLABLE PYRX
-A055;ID;YI SYLLABLE PYR
-A056;ID;YI SYLLABLE BBIT
-A057;ID;YI SYLLABLE BBIX
-A058;ID;YI SYLLABLE BBI
-A059;ID;YI SYLLABLE BBIP
-A05A;ID;YI SYLLABLE BBIET
-A05B;ID;YI SYLLABLE BBIEX
-A05C;ID;YI SYLLABLE BBIE
-A05D;ID;YI SYLLABLE BBIEP
-A05E;ID;YI SYLLABLE BBAT
-A05F;ID;YI SYLLABLE BBAX
-A060;ID;YI SYLLABLE BBA
-A061;ID;YI SYLLABLE BBAP
-A062;ID;YI SYLLABLE BBUOX
-A063;ID;YI SYLLABLE BBUO
-A064;ID;YI SYLLABLE BBUOP
-A065;ID;YI SYLLABLE BBOT
-A066;ID;YI SYLLABLE BBOX
-A067;ID;YI SYLLABLE BBO
-A068;ID;YI SYLLABLE BBOP
-A069;ID;YI SYLLABLE BBEX
-A06A;ID;YI SYLLABLE BBE
-A06B;ID;YI SYLLABLE BBEP
-A06C;ID;YI SYLLABLE BBUT
-A06D;ID;YI SYLLABLE BBUX
-A06E;ID;YI SYLLABLE BBU
-A06F;ID;YI SYLLABLE BBUP
-A070;ID;YI SYLLABLE BBURX
-A071;ID;YI SYLLABLE BBUR
-A072;ID;YI SYLLABLE BBYT
-A073;ID;YI SYLLABLE BBYX
-A074;ID;YI SYLLABLE BBY
-A075;ID;YI SYLLABLE BBYP
-A076;ID;YI SYLLABLE NBIT
-A077;ID;YI SYLLABLE NBIX
-A078;ID;YI SYLLABLE NBI
-A079;ID;YI SYLLABLE NBIP
-A07A;ID;YI SYLLABLE NBIEX
-A07B;ID;YI SYLLABLE NBIE
-A07C;ID;YI SYLLABLE NBIEP
-A07D;ID;YI SYLLABLE NBAT
-A07E;ID;YI SYLLABLE NBAX
-A07F;ID;YI SYLLABLE NBA
-A080;ID;YI SYLLABLE NBAP
-A081;ID;YI SYLLABLE NBOT
-A082;ID;YI SYLLABLE NBOX
-A083;ID;YI SYLLABLE NBO
-A084;ID;YI SYLLABLE NBOP
-A085;ID;YI SYLLABLE NBUT
-A086;ID;YI SYLLABLE NBUX
-A087;ID;YI SYLLABLE NBU
-A088;ID;YI SYLLABLE NBUP
-A089;ID;YI SYLLABLE NBURX
-A08A;ID;YI SYLLABLE NBUR
-A08B;ID;YI SYLLABLE NBYT
-A08C;ID;YI SYLLABLE NBYX
-A08D;ID;YI SYLLABLE NBY
-A08E;ID;YI SYLLABLE NBYP
-A08F;ID;YI SYLLABLE NBYRX
-A090;ID;YI SYLLABLE NBYR
-A091;ID;YI SYLLABLE HMIT
-A092;ID;YI SYLLABLE HMIX
-A093;ID;YI SYLLABLE HMI
-A094;ID;YI SYLLABLE HMIP
-A095;ID;YI SYLLABLE HMIEX
-A096;ID;YI SYLLABLE HMIE
-A097;ID;YI SYLLABLE HMIEP
-A098;ID;YI SYLLABLE HMAT
-A099;ID;YI SYLLABLE HMAX
-A09A;ID;YI SYLLABLE HMA
-A09B;ID;YI SYLLABLE HMAP
-A09C;ID;YI SYLLABLE HMUOX
-A09D;ID;YI SYLLABLE HMUO
-A09E;ID;YI SYLLABLE HMUOP
-A09F;ID;YI SYLLABLE HMOT
-A0A0;ID;YI SYLLABLE HMOX
-A0A1;ID;YI SYLLABLE HMO
-A0A2;ID;YI SYLLABLE HMOP
-A0A3;ID;YI SYLLABLE HMUT
-A0A4;ID;YI SYLLABLE HMUX
-A0A5;ID;YI SYLLABLE HMU
-A0A6;ID;YI SYLLABLE HMUP
-A0A7;ID;YI SYLLABLE HMURX
-A0A8;ID;YI SYLLABLE HMUR
-A0A9;ID;YI SYLLABLE HMYX
-A0AA;ID;YI SYLLABLE HMY
-A0AB;ID;YI SYLLABLE HMYP
-A0AC;ID;YI SYLLABLE HMYRX
-A0AD;ID;YI SYLLABLE HMYR
-A0AE;ID;YI SYLLABLE MIT
-A0AF;ID;YI SYLLABLE MIX
-A0B0;ID;YI SYLLABLE MI
-A0B1;ID;YI SYLLABLE MIP
-A0B2;ID;YI SYLLABLE MIEX
-A0B3;ID;YI SYLLABLE MIE
-A0B4;ID;YI SYLLABLE MIEP
-A0B5;ID;YI SYLLABLE MAT
-A0B6;ID;YI SYLLABLE MAX
-A0B7;ID;YI SYLLABLE MA
-A0B8;ID;YI SYLLABLE MAP
-A0B9;ID;YI SYLLABLE MUOT
-A0BA;ID;YI SYLLABLE MUOX
-A0BB;ID;YI SYLLABLE MUO
-A0BC;ID;YI SYLLABLE MUOP
-A0BD;ID;YI SYLLABLE MOT
-A0BE;ID;YI SYLLABLE MOX
-A0BF;ID;YI SYLLABLE MO
-A0C0;ID;YI SYLLABLE MOP
-A0C1;ID;YI SYLLABLE MEX
-A0C2;ID;YI SYLLABLE ME
-A0C3;ID;YI SYLLABLE MUT
-A0C4;ID;YI SYLLABLE MUX
-A0C5;ID;YI SYLLABLE MU
-A0C6;ID;YI SYLLABLE MUP
-A0C7;ID;YI SYLLABLE MURX
-A0C8;ID;YI SYLLABLE MUR
-A0C9;ID;YI SYLLABLE MYT
-A0CA;ID;YI SYLLABLE MYX
-A0CB;ID;YI SYLLABLE MY
-A0CC;ID;YI SYLLABLE MYP
-A0CD;ID;YI SYLLABLE FIT
-A0CE;ID;YI SYLLABLE FIX
-A0CF;ID;YI SYLLABLE FI
-A0D0;ID;YI SYLLABLE FIP
-A0D1;ID;YI SYLLABLE FAT
-A0D2;ID;YI SYLLABLE FAX
-A0D3;ID;YI SYLLABLE FA
-A0D4;ID;YI SYLLABLE FAP
-A0D5;ID;YI SYLLABLE FOX
-A0D6;ID;YI SYLLABLE FO
-A0D7;ID;YI SYLLABLE FOP
-A0D8;ID;YI SYLLABLE FUT
-A0D9;ID;YI SYLLABLE FUX
-A0DA;ID;YI SYLLABLE FU
-A0DB;ID;YI SYLLABLE FUP
-A0DC;ID;YI SYLLABLE FURX
-A0DD;ID;YI SYLLABLE FUR
-A0DE;ID;YI SYLLABLE FYT
-A0DF;ID;YI SYLLABLE FYX
-A0E0;ID;YI SYLLABLE FY
-A0E1;ID;YI SYLLABLE FYP
-A0E2;ID;YI SYLLABLE VIT
-A0E3;ID;YI SYLLABLE VIX
-A0E4;ID;YI SYLLABLE VI
-A0E5;ID;YI SYLLABLE VIP
-A0E6;ID;YI SYLLABLE VIET
-A0E7;ID;YI SYLLABLE VIEX
-A0E8;ID;YI SYLLABLE VIE
-A0E9;ID;YI SYLLABLE VIEP
-A0EA;ID;YI SYLLABLE VAT
-A0EB;ID;YI SYLLABLE VAX
-A0EC;ID;YI SYLLABLE VA
-A0ED;ID;YI SYLLABLE VAP
-A0EE;ID;YI SYLLABLE VOT
-A0EF;ID;YI SYLLABLE VOX
-A0F0;ID;YI SYLLABLE VO
-A0F1;ID;YI SYLLABLE VOP
-A0F2;ID;YI SYLLABLE VEX
-A0F3;ID;YI SYLLABLE VEP
-A0F4;ID;YI SYLLABLE VUT
-A0F5;ID;YI SYLLABLE VUX
-A0F6;ID;YI SYLLABLE VU
-A0F7;ID;YI SYLLABLE VUP
-A0F8;ID;YI SYLLABLE VURX
-A0F9;ID;YI SYLLABLE VUR
-A0FA;ID;YI SYLLABLE VYT
-A0FB;ID;YI SYLLABLE VYX
-A0FC;ID;YI SYLLABLE VY
-A0FD;ID;YI SYLLABLE VYP
-A0FE;ID;YI SYLLABLE VYRX
-A0FF;ID;YI SYLLABLE VYR
-A100;ID;YI SYLLABLE DIT
-A101;ID;YI SYLLABLE DIX
-A102;ID;YI SYLLABLE DI
-A103;ID;YI SYLLABLE DIP
-A104;ID;YI SYLLABLE DIEX
-A105;ID;YI SYLLABLE DIE
-A106;ID;YI SYLLABLE DIEP
-A107;ID;YI SYLLABLE DAT
-A108;ID;YI SYLLABLE DAX
-A109;ID;YI SYLLABLE DA
-A10A;ID;YI SYLLABLE DAP
-A10B;ID;YI SYLLABLE DUOX
-A10C;ID;YI SYLLABLE DUO
-A10D;ID;YI SYLLABLE DOT
-A10E;ID;YI SYLLABLE DOX
-A10F;ID;YI SYLLABLE DO
-A110;ID;YI SYLLABLE DOP
-A111;ID;YI SYLLABLE DEX
-A112;ID;YI SYLLABLE DE
-A113;ID;YI SYLLABLE DEP
-A114;ID;YI SYLLABLE DUT
-A115;ID;YI SYLLABLE DUX
-A116;ID;YI SYLLABLE DU
-A117;ID;YI SYLLABLE DUP
-A118;ID;YI SYLLABLE DURX
-A119;ID;YI SYLLABLE DUR
-A11A;ID;YI SYLLABLE TIT
-A11B;ID;YI SYLLABLE TIX
-A11C;ID;YI SYLLABLE TI
-A11D;ID;YI SYLLABLE TIP
-A11E;ID;YI SYLLABLE TIEX
-A11F;ID;YI SYLLABLE TIE
-A120;ID;YI SYLLABLE TIEP
-A121;ID;YI SYLLABLE TAT
-A122;ID;YI SYLLABLE TAX
-A123;ID;YI SYLLABLE TA
-A124;ID;YI SYLLABLE TAP
-A125;ID;YI SYLLABLE TUOT
-A126;ID;YI SYLLABLE TUOX
-A127;ID;YI SYLLABLE TUO
-A128;ID;YI SYLLABLE TUOP
-A129;ID;YI SYLLABLE TOT
-A12A;ID;YI SYLLABLE TOX
-A12B;ID;YI SYLLABLE TO
-A12C;ID;YI SYLLABLE TOP
-A12D;ID;YI SYLLABLE TEX
-A12E;ID;YI SYLLABLE TE
-A12F;ID;YI SYLLABLE TEP
-A130;ID;YI SYLLABLE TUT
-A131;ID;YI SYLLABLE TUX
-A132;ID;YI SYLLABLE TU
-A133;ID;YI SYLLABLE TUP
-A134;ID;YI SYLLABLE TURX
-A135;ID;YI SYLLABLE TUR
-A136;ID;YI SYLLABLE DDIT
-A137;ID;YI SYLLABLE DDIX
-A138;ID;YI SYLLABLE DDI
-A139;ID;YI SYLLABLE DDIP
-A13A;ID;YI SYLLABLE DDIEX
-A13B;ID;YI SYLLABLE DDIE
-A13C;ID;YI SYLLABLE DDIEP
-A13D;ID;YI SYLLABLE DDAT
-A13E;ID;YI SYLLABLE DDAX
-A13F;ID;YI SYLLABLE DDA
-A140;ID;YI SYLLABLE DDAP
-A141;ID;YI SYLLABLE DDUOX
-A142;ID;YI SYLLABLE DDUO
-A143;ID;YI SYLLABLE DDUOP
-A144;ID;YI SYLLABLE DDOT
-A145;ID;YI SYLLABLE DDOX
-A146;ID;YI SYLLABLE DDO
-A147;ID;YI SYLLABLE DDOP
-A148;ID;YI SYLLABLE DDEX
-A149;ID;YI SYLLABLE DDE
-A14A;ID;YI SYLLABLE DDEP
-A14B;ID;YI SYLLABLE DDUT
-A14C;ID;YI SYLLABLE DDUX
-A14D;ID;YI SYLLABLE DDU
-A14E;ID;YI SYLLABLE DDUP
-A14F;ID;YI SYLLABLE DDURX
-A150;ID;YI SYLLABLE DDUR
-A151;ID;YI SYLLABLE NDIT
-A152;ID;YI SYLLABLE NDIX
-A153;ID;YI SYLLABLE NDI
-A154;ID;YI SYLLABLE NDIP
-A155;ID;YI SYLLABLE NDIEX
-A156;ID;YI SYLLABLE NDIE
-A157;ID;YI SYLLABLE NDAT
-A158;ID;YI SYLLABLE NDAX
-A159;ID;YI SYLLABLE NDA
-A15A;ID;YI SYLLABLE NDAP
-A15B;ID;YI SYLLABLE NDOT
-A15C;ID;YI SYLLABLE NDOX
-A15D;ID;YI SYLLABLE NDO
-A15E;ID;YI SYLLABLE NDOP
-A15F;ID;YI SYLLABLE NDEX
-A160;ID;YI SYLLABLE NDE
-A161;ID;YI SYLLABLE NDEP
-A162;ID;YI SYLLABLE NDUT
-A163;ID;YI SYLLABLE NDUX
-A164;ID;YI SYLLABLE NDU
-A165;ID;YI SYLLABLE NDUP
-A166;ID;YI SYLLABLE NDURX
-A167;ID;YI SYLLABLE NDUR
-A168;ID;YI SYLLABLE HNIT
-A169;ID;YI SYLLABLE HNIX
-A16A;ID;YI SYLLABLE HNI
-A16B;ID;YI SYLLABLE HNIP
-A16C;ID;YI SYLLABLE HNIET
-A16D;ID;YI SYLLABLE HNIEX
-A16E;ID;YI SYLLABLE HNIE
-A16F;ID;YI SYLLABLE HNIEP
-A170;ID;YI SYLLABLE HNAT
-A171;ID;YI SYLLABLE HNAX
-A172;ID;YI SYLLABLE HNA
-A173;ID;YI SYLLABLE HNAP
-A174;ID;YI SYLLABLE HNUOX
-A175;ID;YI SYLLABLE HNUO
-A176;ID;YI SYLLABLE HNOT
-A177;ID;YI SYLLABLE HNOX
-A178;ID;YI SYLLABLE HNOP
-A179;ID;YI SYLLABLE HNEX
-A17A;ID;YI SYLLABLE HNE
-A17B;ID;YI SYLLABLE HNEP
-A17C;ID;YI SYLLABLE HNUT
-A17D;ID;YI SYLLABLE NIT
-A17E;ID;YI SYLLABLE NIX
-A17F;ID;YI SYLLABLE NI
-A180;ID;YI SYLLABLE NIP
-A181;ID;YI SYLLABLE NIEX
-A182;ID;YI SYLLABLE NIE
-A183;ID;YI SYLLABLE NIEP
-A184;ID;YI SYLLABLE NAX
-A185;ID;YI SYLLABLE NA
-A186;ID;YI SYLLABLE NAP
-A187;ID;YI SYLLABLE NUOX
-A188;ID;YI SYLLABLE NUO
-A189;ID;YI SYLLABLE NUOP
-A18A;ID;YI SYLLABLE NOT
-A18B;ID;YI SYLLABLE NOX
-A18C;ID;YI SYLLABLE NO
-A18D;ID;YI SYLLABLE NOP
-A18E;ID;YI SYLLABLE NEX
-A18F;ID;YI SYLLABLE NE
-A190;ID;YI SYLLABLE NEP
-A191;ID;YI SYLLABLE NUT
-A192;ID;YI SYLLABLE NUX
-A193;ID;YI SYLLABLE NU
-A194;ID;YI SYLLABLE NUP
-A195;ID;YI SYLLABLE NURX
-A196;ID;YI SYLLABLE NUR
-A197;ID;YI SYLLABLE HLIT
-A198;ID;YI SYLLABLE HLIX
-A199;ID;YI SYLLABLE HLI
-A19A;ID;YI SYLLABLE HLIP
-A19B;ID;YI SYLLABLE HLIEX
-A19C;ID;YI SYLLABLE HLIE
-A19D;ID;YI SYLLABLE HLIEP
-A19E;ID;YI SYLLABLE HLAT
-A19F;ID;YI SYLLABLE HLAX
-A1A0;ID;YI SYLLABLE HLA
-A1A1;ID;YI SYLLABLE HLAP
-A1A2;ID;YI SYLLABLE HLUOX
-A1A3;ID;YI SYLLABLE HLUO
-A1A4;ID;YI SYLLABLE HLUOP
-A1A5;ID;YI SYLLABLE HLOX
-A1A6;ID;YI SYLLABLE HLO
-A1A7;ID;YI SYLLABLE HLOP
-A1A8;ID;YI SYLLABLE HLEX
-A1A9;ID;YI SYLLABLE HLE
-A1AA;ID;YI SYLLABLE HLEP
-A1AB;ID;YI SYLLABLE HLUT
-A1AC;ID;YI SYLLABLE HLUX
-A1AD;ID;YI SYLLABLE HLU
-A1AE;ID;YI SYLLABLE HLUP
-A1AF;ID;YI SYLLABLE HLURX
-A1B0;ID;YI SYLLABLE HLUR
-A1B1;ID;YI SYLLABLE HLYT
-A1B2;ID;YI SYLLABLE HLYX
-A1B3;ID;YI SYLLABLE HLY
-A1B4;ID;YI SYLLABLE HLYP
-A1B5;ID;YI SYLLABLE HLYRX
-A1B6;ID;YI SYLLABLE HLYR
-A1B7;ID;YI SYLLABLE LIT
-A1B8;ID;YI SYLLABLE LIX
-A1B9;ID;YI SYLLABLE LI
-A1BA;ID;YI SYLLABLE LIP
-A1BB;ID;YI SYLLABLE LIET
-A1BC;ID;YI SYLLABLE LIEX
-A1BD;ID;YI SYLLABLE LIE
-A1BE;ID;YI SYLLABLE LIEP
-A1BF;ID;YI SYLLABLE LAT
-A1C0;ID;YI SYLLABLE LAX
-A1C1;ID;YI SYLLABLE LA
-A1C2;ID;YI SYLLABLE LAP
-A1C3;ID;YI SYLLABLE LUOT
-A1C4;ID;YI SYLLABLE LUOX
-A1C5;ID;YI SYLLABLE LUO
-A1C6;ID;YI SYLLABLE LUOP
-A1C7;ID;YI SYLLABLE LOT
-A1C8;ID;YI SYLLABLE LOX
-A1C9;ID;YI SYLLABLE LO
-A1CA;ID;YI SYLLABLE LOP
-A1CB;ID;YI SYLLABLE LEX
-A1CC;ID;YI SYLLABLE LE
-A1CD;ID;YI SYLLABLE LEP
-A1CE;ID;YI SYLLABLE LUT
-A1CF;ID;YI SYLLABLE LUX
-A1D0;ID;YI SYLLABLE LU
-A1D1;ID;YI SYLLABLE LUP
-A1D2;ID;YI SYLLABLE LURX
-A1D3;ID;YI SYLLABLE LUR
-A1D4;ID;YI SYLLABLE LYT
-A1D5;ID;YI SYLLABLE LYX
-A1D6;ID;YI SYLLABLE LY
-A1D7;ID;YI SYLLABLE LYP
-A1D8;ID;YI SYLLABLE LYRX
-A1D9;ID;YI SYLLABLE LYR
-A1DA;ID;YI SYLLABLE GIT
-A1DB;ID;YI SYLLABLE GIX
-A1DC;ID;YI SYLLABLE GI
-A1DD;ID;YI SYLLABLE GIP
-A1DE;ID;YI SYLLABLE GIET
-A1DF;ID;YI SYLLABLE GIEX
-A1E0;ID;YI SYLLABLE GIE
-A1E1;ID;YI SYLLABLE GIEP
-A1E2;ID;YI SYLLABLE GAT
-A1E3;ID;YI SYLLABLE GAX
-A1E4;ID;YI SYLLABLE GA
-A1E5;ID;YI SYLLABLE GAP
-A1E6;ID;YI SYLLABLE GUOT
-A1E7;ID;YI SYLLABLE GUOX
-A1E8;ID;YI SYLLABLE GUO
-A1E9;ID;YI SYLLABLE GUOP
-A1EA;ID;YI SYLLABLE GOT
-A1EB;ID;YI SYLLABLE GOX
-A1EC;ID;YI SYLLABLE GO
-A1ED;ID;YI SYLLABLE GOP
-A1EE;ID;YI SYLLABLE GET
-A1EF;ID;YI SYLLABLE GEX
-A1F0;ID;YI SYLLABLE GE
-A1F1;ID;YI SYLLABLE GEP
-A1F2;ID;YI SYLLABLE GUT
-A1F3;ID;YI SYLLABLE GUX
-A1F4;ID;YI SYLLABLE GU
-A1F5;ID;YI SYLLABLE GUP
-A1F6;ID;YI SYLLABLE GURX
-A1F7;ID;YI SYLLABLE GUR
-A1F8;ID;YI SYLLABLE KIT
-A1F9;ID;YI SYLLABLE KIX
-A1FA;ID;YI SYLLABLE KI
-A1FB;ID;YI SYLLABLE KIP
-A1FC;ID;YI SYLLABLE KIEX
-A1FD;ID;YI SYLLABLE KIE
-A1FE;ID;YI SYLLABLE KIEP
-A1FF;ID;YI SYLLABLE KAT
-A200;ID;YI SYLLABLE KAX
-A201;ID;YI SYLLABLE KA
-A202;ID;YI SYLLABLE KAP
-A203;ID;YI SYLLABLE KUOX
-A204;ID;YI SYLLABLE KUO
-A205;ID;YI SYLLABLE KUOP
-A206;ID;YI SYLLABLE KOT
-A207;ID;YI SYLLABLE KOX
-A208;ID;YI SYLLABLE KO
-A209;ID;YI SYLLABLE KOP
-A20A;ID;YI SYLLABLE KET
-A20B;ID;YI SYLLABLE KEX
-A20C;ID;YI SYLLABLE KE
-A20D;ID;YI SYLLABLE KEP
-A20E;ID;YI SYLLABLE KUT
-A20F;ID;YI SYLLABLE KUX
-A210;ID;YI SYLLABLE KU
-A211;ID;YI SYLLABLE KUP
-A212;ID;YI SYLLABLE KURX
-A213;ID;YI SYLLABLE KUR
-A214;ID;YI SYLLABLE GGIT
-A215;ID;YI SYLLABLE GGIX
-A216;ID;YI SYLLABLE GGI
-A217;ID;YI SYLLABLE GGIEX
-A218;ID;YI SYLLABLE GGIE
-A219;ID;YI SYLLABLE GGIEP
-A21A;ID;YI SYLLABLE GGAT
-A21B;ID;YI SYLLABLE GGAX
-A21C;ID;YI SYLLABLE GGA
-A21D;ID;YI SYLLABLE GGAP
-A21E;ID;YI SYLLABLE GGUOT
-A21F;ID;YI SYLLABLE GGUOX
-A220;ID;YI SYLLABLE GGUO
-A221;ID;YI SYLLABLE GGUOP
-A222;ID;YI SYLLABLE GGOT
-A223;ID;YI SYLLABLE GGOX
-A224;ID;YI SYLLABLE GGO
-A225;ID;YI SYLLABLE GGOP
-A226;ID;YI SYLLABLE GGET
-A227;ID;YI SYLLABLE GGEX
-A228;ID;YI SYLLABLE GGE
-A229;ID;YI SYLLABLE GGEP
-A22A;ID;YI SYLLABLE GGUT
-A22B;ID;YI SYLLABLE GGUX
-A22C;ID;YI SYLLABLE GGU
-A22D;ID;YI SYLLABLE GGUP
-A22E;ID;YI SYLLABLE GGURX
-A22F;ID;YI SYLLABLE GGUR
-A230;ID;YI SYLLABLE MGIEX
-A231;ID;YI SYLLABLE MGIE
-A232;ID;YI SYLLABLE MGAT
-A233;ID;YI SYLLABLE MGAX
-A234;ID;YI SYLLABLE MGA
-A235;ID;YI SYLLABLE MGAP
-A236;ID;YI SYLLABLE MGUOX
-A237;ID;YI SYLLABLE MGUO
-A238;ID;YI SYLLABLE MGUOP
-A239;ID;YI SYLLABLE MGOT
-A23A;ID;YI SYLLABLE MGOX
-A23B;ID;YI SYLLABLE MGO
-A23C;ID;YI SYLLABLE MGOP
-A23D;ID;YI SYLLABLE MGEX
-A23E;ID;YI SYLLABLE MGE
-A23F;ID;YI SYLLABLE MGEP
-A240;ID;YI SYLLABLE MGUT
-A241;ID;YI SYLLABLE MGUX
-A242;ID;YI SYLLABLE MGU
-A243;ID;YI SYLLABLE MGUP
-A244;ID;YI SYLLABLE MGURX
-A245;ID;YI SYLLABLE MGUR
-A246;ID;YI SYLLABLE HXIT
-A247;ID;YI SYLLABLE HXIX
-A248;ID;YI SYLLABLE HXI
-A249;ID;YI SYLLABLE HXIP
-A24A;ID;YI SYLLABLE HXIET
-A24B;ID;YI SYLLABLE HXIEX
-A24C;ID;YI SYLLABLE HXIE
-A24D;ID;YI SYLLABLE HXIEP
-A24E;ID;YI SYLLABLE HXAT
-A24F;ID;YI SYLLABLE HXAX
-A250;ID;YI SYLLABLE HXA
-A251;ID;YI SYLLABLE HXAP
-A252;ID;YI SYLLABLE HXUOT
-A253;ID;YI SYLLABLE HXUOX
-A254;ID;YI SYLLABLE HXUO
-A255;ID;YI SYLLABLE HXUOP
-A256;ID;YI SYLLABLE HXOT
-A257;ID;YI SYLLABLE HXOX
-A258;ID;YI SYLLABLE HXO
-A259;ID;YI SYLLABLE HXOP
-A25A;ID;YI SYLLABLE HXEX
-A25B;ID;YI SYLLABLE HXE
-A25C;ID;YI SYLLABLE HXEP
-A25D;ID;YI SYLLABLE NGIEX
-A25E;ID;YI SYLLABLE NGIE
-A25F;ID;YI SYLLABLE NGIEP
-A260;ID;YI SYLLABLE NGAT
-A261;ID;YI SYLLABLE NGAX
-A262;ID;YI SYLLABLE NGA
-A263;ID;YI SYLLABLE NGAP
-A264;ID;YI SYLLABLE NGUOT
-A265;ID;YI SYLLABLE NGUOX
-A266;ID;YI SYLLABLE NGUO
-A267;ID;YI SYLLABLE NGOT
-A268;ID;YI SYLLABLE NGOX
-A269;ID;YI SYLLABLE NGO
-A26A;ID;YI SYLLABLE NGOP
-A26B;ID;YI SYLLABLE NGEX
-A26C;ID;YI SYLLABLE NGE
-A26D;ID;YI SYLLABLE NGEP
-A26E;ID;YI SYLLABLE HIT
-A26F;ID;YI SYLLABLE HIEX
-A270;ID;YI SYLLABLE HIE
-A271;ID;YI SYLLABLE HAT
-A272;ID;YI SYLLABLE HAX
-A273;ID;YI SYLLABLE HA
-A274;ID;YI SYLLABLE HAP
-A275;ID;YI SYLLABLE HUOT
-A276;ID;YI SYLLABLE HUOX
-A277;ID;YI SYLLABLE HUO
-A278;ID;YI SYLLABLE HUOP
-A279;ID;YI SYLLABLE HOT
-A27A;ID;YI SYLLABLE HOX
-A27B;ID;YI SYLLABLE HO
-A27C;ID;YI SYLLABLE HOP
-A27D;ID;YI SYLLABLE HEX
-A27E;ID;YI SYLLABLE HE
-A27F;ID;YI SYLLABLE HEP
-A280;ID;YI SYLLABLE WAT
-A281;ID;YI SYLLABLE WAX
-A282;ID;YI SYLLABLE WA
-A283;ID;YI SYLLABLE WAP
-A284;ID;YI SYLLABLE WUOX
-A285;ID;YI SYLLABLE WUO
-A286;ID;YI SYLLABLE WUOP
-A287;ID;YI SYLLABLE WOX
-A288;ID;YI SYLLABLE WO
-A289;ID;YI SYLLABLE WOP
-A28A;ID;YI SYLLABLE WEX
-A28B;ID;YI SYLLABLE WE
-A28C;ID;YI SYLLABLE WEP
-A28D;ID;YI SYLLABLE ZIT
-A28E;ID;YI SYLLABLE ZIX
-A28F;ID;YI SYLLABLE ZI
-A290;ID;YI SYLLABLE ZIP
-A291;ID;YI SYLLABLE ZIEX
-A292;ID;YI SYLLABLE ZIE
-A293;ID;YI SYLLABLE ZIEP
-A294;ID;YI SYLLABLE ZAT
-A295;ID;YI SYLLABLE ZAX
-A296;ID;YI SYLLABLE ZA
-A297;ID;YI SYLLABLE ZAP
-A298;ID;YI SYLLABLE ZUOX
-A299;ID;YI SYLLABLE ZUO
-A29A;ID;YI SYLLABLE ZUOP
-A29B;ID;YI SYLLABLE ZOT
-A29C;ID;YI SYLLABLE ZOX
-A29D;ID;YI SYLLABLE ZO
-A29E;ID;YI SYLLABLE ZOP
-A29F;ID;YI SYLLABLE ZEX
-A2A0;ID;YI SYLLABLE ZE
-A2A1;ID;YI SYLLABLE ZEP
-A2A2;ID;YI SYLLABLE ZUT
-A2A3;ID;YI SYLLABLE ZUX
-A2A4;ID;YI SYLLABLE ZU
-A2A5;ID;YI SYLLABLE ZUP
-A2A6;ID;YI SYLLABLE ZURX
-A2A7;ID;YI SYLLABLE ZUR
-A2A8;ID;YI SYLLABLE ZYT
-A2A9;ID;YI SYLLABLE ZYX
-A2AA;ID;YI SYLLABLE ZY
-A2AB;ID;YI SYLLABLE ZYP
-A2AC;ID;YI SYLLABLE ZYRX
-A2AD;ID;YI SYLLABLE ZYR
-A2AE;ID;YI SYLLABLE CIT
-A2AF;ID;YI SYLLABLE CIX
-A2B0;ID;YI SYLLABLE CI
-A2B1;ID;YI SYLLABLE CIP
-A2B2;ID;YI SYLLABLE CIET
-A2B3;ID;YI SYLLABLE CIEX
-A2B4;ID;YI SYLLABLE CIE
-A2B5;ID;YI SYLLABLE CIEP
-A2B6;ID;YI SYLLABLE CAT
-A2B7;ID;YI SYLLABLE CAX
-A2B8;ID;YI SYLLABLE CA
-A2B9;ID;YI SYLLABLE CAP
-A2BA;ID;YI SYLLABLE CUOX
-A2BB;ID;YI SYLLABLE CUO
-A2BC;ID;YI SYLLABLE CUOP
-A2BD;ID;YI SYLLABLE COT
-A2BE;ID;YI SYLLABLE COX
-A2BF;ID;YI SYLLABLE CO
-A2C0;ID;YI SYLLABLE COP
-A2C1;ID;YI SYLLABLE CEX
-A2C2;ID;YI SYLLABLE CE
-A2C3;ID;YI SYLLABLE CEP
-A2C4;ID;YI SYLLABLE CUT
-A2C5;ID;YI SYLLABLE CUX
-A2C6;ID;YI SYLLABLE CU
-A2C7;ID;YI SYLLABLE CUP
-A2C8;ID;YI SYLLABLE CURX
-A2C9;ID;YI SYLLABLE CUR
-A2CA;ID;YI SYLLABLE CYT
-A2CB;ID;YI SYLLABLE CYX
-A2CC;ID;YI SYLLABLE CY
-A2CD;ID;YI SYLLABLE CYP
-A2CE;ID;YI SYLLABLE CYRX
-A2CF;ID;YI SYLLABLE CYR
-A2D0;ID;YI SYLLABLE ZZIT
-A2D1;ID;YI SYLLABLE ZZIX
-A2D2;ID;YI SYLLABLE ZZI
-A2D3;ID;YI SYLLABLE ZZIP
-A2D4;ID;YI SYLLABLE ZZIET
-A2D5;ID;YI SYLLABLE ZZIEX
-A2D6;ID;YI SYLLABLE ZZIE
-A2D7;ID;YI SYLLABLE ZZIEP
-A2D8;ID;YI SYLLABLE ZZAT
-A2D9;ID;YI SYLLABLE ZZAX
-A2DA;ID;YI SYLLABLE ZZA
-A2DB;ID;YI SYLLABLE ZZAP
-A2DC;ID;YI SYLLABLE ZZOX
-A2DD;ID;YI SYLLABLE ZZO
-A2DE;ID;YI SYLLABLE ZZOP
-A2DF;ID;YI SYLLABLE ZZEX
-A2E0;ID;YI SYLLABLE ZZE
-A2E1;ID;YI SYLLABLE ZZEP
-A2E2;ID;YI SYLLABLE ZZUX
-A2E3;ID;YI SYLLABLE ZZU
-A2E4;ID;YI SYLLABLE ZZUP
-A2E5;ID;YI SYLLABLE ZZURX
-A2E6;ID;YI SYLLABLE ZZUR
-A2E7;ID;YI SYLLABLE ZZYT
-A2E8;ID;YI SYLLABLE ZZYX
-A2E9;ID;YI SYLLABLE ZZY
-A2EA;ID;YI SYLLABLE ZZYP
-A2EB;ID;YI SYLLABLE ZZYRX
-A2EC;ID;YI SYLLABLE ZZYR
-A2ED;ID;YI SYLLABLE NZIT
-A2EE;ID;YI SYLLABLE NZIX
-A2EF;ID;YI SYLLABLE NZI
-A2F0;ID;YI SYLLABLE NZIP
-A2F1;ID;YI SYLLABLE NZIEX
-A2F2;ID;YI SYLLABLE NZIE
-A2F3;ID;YI SYLLABLE NZIEP
-A2F4;ID;YI SYLLABLE NZAT
-A2F5;ID;YI SYLLABLE NZAX
-A2F6;ID;YI SYLLABLE NZA
-A2F7;ID;YI SYLLABLE NZAP
-A2F8;ID;YI SYLLABLE NZUOX
-A2F9;ID;YI SYLLABLE NZUO
-A2FA;ID;YI SYLLABLE NZOX
-A2FB;ID;YI SYLLABLE NZOP
-A2FC;ID;YI SYLLABLE NZEX
-A2FD;ID;YI SYLLABLE NZE
-A2FE;ID;YI SYLLABLE NZUX
-A2FF;ID;YI SYLLABLE NZU
-A300;ID;YI SYLLABLE NZUP
-A301;ID;YI SYLLABLE NZURX
-A302;ID;YI SYLLABLE NZUR
-A303;ID;YI SYLLABLE NZYT
-A304;ID;YI SYLLABLE NZYX
-A305;ID;YI SYLLABLE NZY
-A306;ID;YI SYLLABLE NZYP
-A307;ID;YI SYLLABLE NZYRX
-A308;ID;YI SYLLABLE NZYR
-A309;ID;YI SYLLABLE SIT
-A30A;ID;YI SYLLABLE SIX
-A30B;ID;YI SYLLABLE SI
-A30C;ID;YI SYLLABLE SIP
-A30D;ID;YI SYLLABLE SIEX
-A30E;ID;YI SYLLABLE SIE
-A30F;ID;YI SYLLABLE SIEP
-A310;ID;YI SYLLABLE SAT
-A311;ID;YI SYLLABLE SAX
-A312;ID;YI SYLLABLE SA
-A313;ID;YI SYLLABLE SAP
-A314;ID;YI SYLLABLE SUOX
-A315;ID;YI SYLLABLE SUO
-A316;ID;YI SYLLABLE SUOP
-A317;ID;YI SYLLABLE SOT
-A318;ID;YI SYLLABLE SOX
-A319;ID;YI SYLLABLE SO
-A31A;ID;YI SYLLABLE SOP
-A31B;ID;YI SYLLABLE SEX
-A31C;ID;YI SYLLABLE SE
-A31D;ID;YI SYLLABLE SEP
-A31E;ID;YI SYLLABLE SUT
-A31F;ID;YI SYLLABLE SUX
-A320;ID;YI SYLLABLE SU
-A321;ID;YI SYLLABLE SUP
-A322;ID;YI SYLLABLE SURX
-A323;ID;YI SYLLABLE SUR
-A324;ID;YI SYLLABLE SYT
-A325;ID;YI SYLLABLE SYX
-A326;ID;YI SYLLABLE SY
-A327;ID;YI SYLLABLE SYP
-A328;ID;YI SYLLABLE SYRX
-A329;ID;YI SYLLABLE SYR
-A32A;ID;YI SYLLABLE SSIT
-A32B;ID;YI SYLLABLE SSIX
-A32C;ID;YI SYLLABLE SSI
-A32D;ID;YI SYLLABLE SSIP
-A32E;ID;YI SYLLABLE SSIEX
-A32F;ID;YI SYLLABLE SSIE
-A330;ID;YI SYLLABLE SSIEP
-A331;ID;YI SYLLABLE SSAT
-A332;ID;YI SYLLABLE SSAX
-A333;ID;YI SYLLABLE SSA
-A334;ID;YI SYLLABLE SSAP
-A335;ID;YI SYLLABLE SSOT
-A336;ID;YI SYLLABLE SSOX
-A337;ID;YI SYLLABLE SSO
-A338;ID;YI SYLLABLE SSOP
-A339;ID;YI SYLLABLE SSEX
-A33A;ID;YI SYLLABLE SSE
-A33B;ID;YI SYLLABLE SSEP
-A33C;ID;YI SYLLABLE SSUT
-A33D;ID;YI SYLLABLE SSUX
-A33E;ID;YI SYLLABLE SSU
-A33F;ID;YI SYLLABLE SSUP
-A340;ID;YI SYLLABLE SSYT
-A341;ID;YI SYLLABLE SSYX
-A342;ID;YI SYLLABLE SSY
-A343;ID;YI SYLLABLE SSYP
-A344;ID;YI SYLLABLE SSYRX
-A345;ID;YI SYLLABLE SSYR
-A346;ID;YI SYLLABLE ZHAT
-A347;ID;YI SYLLABLE ZHAX
-A348;ID;YI SYLLABLE ZHA
-A349;ID;YI SYLLABLE ZHAP
-A34A;ID;YI SYLLABLE ZHUOX
-A34B;ID;YI SYLLABLE ZHUO
-A34C;ID;YI SYLLABLE ZHUOP
-A34D;ID;YI SYLLABLE ZHOT
-A34E;ID;YI SYLLABLE ZHOX
-A34F;ID;YI SYLLABLE ZHO
-A350;ID;YI SYLLABLE ZHOP
-A351;ID;YI SYLLABLE ZHET
-A352;ID;YI SYLLABLE ZHEX
-A353;ID;YI SYLLABLE ZHE
-A354;ID;YI SYLLABLE ZHEP
-A355;ID;YI SYLLABLE ZHUT
-A356;ID;YI SYLLABLE ZHUX
-A357;ID;YI SYLLABLE ZHU
-A358;ID;YI SYLLABLE ZHUP
-A359;ID;YI SYLLABLE ZHURX
-A35A;ID;YI SYLLABLE ZHUR
-A35B;ID;YI SYLLABLE ZHYT
-A35C;ID;YI SYLLABLE ZHYX
-A35D;ID;YI SYLLABLE ZHY
-A35E;ID;YI SYLLABLE ZHYP
-A35F;ID;YI SYLLABLE ZHYRX
-A360;ID;YI SYLLABLE ZHYR
-A361;ID;YI SYLLABLE CHAT
-A362;ID;YI SYLLABLE CHAX
-A363;ID;YI SYLLABLE CHA
-A364;ID;YI SYLLABLE CHAP
-A365;ID;YI SYLLABLE CHUOT
-A366;ID;YI SYLLABLE CHUOX
-A367;ID;YI SYLLABLE CHUO
-A368;ID;YI SYLLABLE CHUOP
-A369;ID;YI SYLLABLE CHOT
-A36A;ID;YI SYLLABLE CHOX
-A36B;ID;YI SYLLABLE CHO
-A36C;ID;YI SYLLABLE CHOP
-A36D;ID;YI SYLLABLE CHET
-A36E;ID;YI SYLLABLE CHEX
-A36F;ID;YI SYLLABLE CHE
-A370;ID;YI SYLLABLE CHEP
-A371;ID;YI SYLLABLE CHUX
-A372;ID;YI SYLLABLE CHU
-A373;ID;YI SYLLABLE CHUP
-A374;ID;YI SYLLABLE CHURX
-A375;ID;YI SYLLABLE CHUR
-A376;ID;YI SYLLABLE CHYT
-A377;ID;YI SYLLABLE CHYX
-A378;ID;YI SYLLABLE CHY
-A379;ID;YI SYLLABLE CHYP
-A37A;ID;YI SYLLABLE CHYRX
-A37B;ID;YI SYLLABLE CHYR
-A37C;ID;YI SYLLABLE RRAX
-A37D;ID;YI SYLLABLE RRA
-A37E;ID;YI SYLLABLE RRUOX
-A37F;ID;YI SYLLABLE RRUO
-A380;ID;YI SYLLABLE RROT
-A381;ID;YI SYLLABLE RROX
-A382;ID;YI SYLLABLE RRO
-A383;ID;YI SYLLABLE RROP
-A384;ID;YI SYLLABLE RRET
-A385;ID;YI SYLLABLE RREX
-A386;ID;YI SYLLABLE RRE
-A387;ID;YI SYLLABLE RREP
-A388;ID;YI SYLLABLE RRUT
-A389;ID;YI SYLLABLE RRUX
-A38A;ID;YI SYLLABLE RRU
-A38B;ID;YI SYLLABLE RRUP
-A38C;ID;YI SYLLABLE RRURX
-A38D;ID;YI SYLLABLE RRUR
-A38E;ID;YI SYLLABLE RRYT
-A38F;ID;YI SYLLABLE RRYX
-A390;ID;YI SYLLABLE RRY
-A391;ID;YI SYLLABLE RRYP
-A392;ID;YI SYLLABLE RRYRX
-A393;ID;YI SYLLABLE RRYR
-A394;ID;YI SYLLABLE NRAT
-A395;ID;YI SYLLABLE NRAX
-A396;ID;YI SYLLABLE NRA
-A397;ID;YI SYLLABLE NRAP
-A398;ID;YI SYLLABLE NROX
-A399;ID;YI SYLLABLE NRO
-A39A;ID;YI SYLLABLE NROP
-A39B;ID;YI SYLLABLE NRET
-A39C;ID;YI SYLLABLE NREX
-A39D;ID;YI SYLLABLE NRE
-A39E;ID;YI SYLLABLE NREP
-A39F;ID;YI SYLLABLE NRUT
-A3A0;ID;YI SYLLABLE NRUX
-A3A1;ID;YI SYLLABLE NRU
-A3A2;ID;YI SYLLABLE NRUP
-A3A3;ID;YI SYLLABLE NRURX
-A3A4;ID;YI SYLLABLE NRUR
-A3A5;ID;YI SYLLABLE NRYT
-A3A6;ID;YI SYLLABLE NRYX
-A3A7;ID;YI SYLLABLE NRY
-A3A8;ID;YI SYLLABLE NRYP
-A3A9;ID;YI SYLLABLE NRYRX
-A3AA;ID;YI SYLLABLE NRYR
-A3AB;ID;YI SYLLABLE SHAT
-A3AC;ID;YI SYLLABLE SHAX
-A3AD;ID;YI SYLLABLE SHA
-A3AE;ID;YI SYLLABLE SHAP
-A3AF;ID;YI SYLLABLE SHUOX
-A3B0;ID;YI SYLLABLE SHUO
-A3B1;ID;YI SYLLABLE SHUOP
-A3B2;ID;YI SYLLABLE SHOT
-A3B3;ID;YI SYLLABLE SHOX
-A3B4;ID;YI SYLLABLE SHO
-A3B5;ID;YI SYLLABLE SHOP
-A3B6;ID;YI SYLLABLE SHET
-A3B7;ID;YI SYLLABLE SHEX
-A3B8;ID;YI SYLLABLE SHE
-A3B9;ID;YI SYLLABLE SHEP
-A3BA;ID;YI SYLLABLE SHUT
-A3BB;ID;YI SYLLABLE SHUX
-A3BC;ID;YI SYLLABLE SHU
-A3BD;ID;YI SYLLABLE SHUP
-A3BE;ID;YI SYLLABLE SHURX
-A3BF;ID;YI SYLLABLE SHUR
-A3C0;ID;YI SYLLABLE SHYT
-A3C1;ID;YI SYLLABLE SHYX
-A3C2;ID;YI SYLLABLE SHY
-A3C3;ID;YI SYLLABLE SHYP
-A3C4;ID;YI SYLLABLE SHYRX
-A3C5;ID;YI SYLLABLE SHYR
-A3C6;ID;YI SYLLABLE RAT
-A3C7;ID;YI SYLLABLE RAX
-A3C8;ID;YI SYLLABLE RA
-A3C9;ID;YI SYLLABLE RAP
-A3CA;ID;YI SYLLABLE RUOX
-A3CB;ID;YI SYLLABLE RUO
-A3CC;ID;YI SYLLABLE RUOP
-A3CD;ID;YI SYLLABLE ROT
-A3CE;ID;YI SYLLABLE ROX
-A3CF;ID;YI SYLLABLE RO
-A3D0;ID;YI SYLLABLE ROP
-A3D1;ID;YI SYLLABLE REX
-A3D2;ID;YI SYLLABLE RE
-A3D3;ID;YI SYLLABLE REP
-A3D4;ID;YI SYLLABLE RUT
-A3D5;ID;YI SYLLABLE RUX
-A3D6;ID;YI SYLLABLE RU
-A3D7;ID;YI SYLLABLE RUP
-A3D8;ID;YI SYLLABLE RURX
-A3D9;ID;YI SYLLABLE RUR
-A3DA;ID;YI SYLLABLE RYT
-A3DB;ID;YI SYLLABLE RYX
-A3DC;ID;YI SYLLABLE RY
-A3DD;ID;YI SYLLABLE RYP
-A3DE;ID;YI SYLLABLE RYRX
-A3DF;ID;YI SYLLABLE RYR
-A3E0;ID;YI SYLLABLE JIT
-A3E1;ID;YI SYLLABLE JIX
-A3E2;ID;YI SYLLABLE JI
-A3E3;ID;YI SYLLABLE JIP
-A3E4;ID;YI SYLLABLE JIET
-A3E5;ID;YI SYLLABLE JIEX
-A3E6;ID;YI SYLLABLE JIE
-A3E7;ID;YI SYLLABLE JIEP
-A3E8;ID;YI SYLLABLE JUOT
-A3E9;ID;YI SYLLABLE JUOX
-A3EA;ID;YI SYLLABLE JUO
-A3EB;ID;YI SYLLABLE JUOP
-A3EC;ID;YI SYLLABLE JOT
-A3ED;ID;YI SYLLABLE JOX
-A3EE;ID;YI SYLLABLE JO
-A3EF;ID;YI SYLLABLE JOP
-A3F0;ID;YI SYLLABLE JUT
-A3F1;ID;YI SYLLABLE JUX
-A3F2;ID;YI SYLLABLE JU
-A3F3;ID;YI SYLLABLE JUP
-A3F4;ID;YI SYLLABLE JURX
-A3F5;ID;YI SYLLABLE JUR
-A3F6;ID;YI SYLLABLE JYT
-A3F7;ID;YI SYLLABLE JYX
-A3F8;ID;YI SYLLABLE JY
-A3F9;ID;YI SYLLABLE JYP
-A3FA;ID;YI SYLLABLE JYRX
-A3FB;ID;YI SYLLABLE JYR
-A3FC;ID;YI SYLLABLE QIT
-A3FD;ID;YI SYLLABLE QIX
-A3FE;ID;YI SYLLABLE QI
-A3FF;ID;YI SYLLABLE QIP
-A400;ID;YI SYLLABLE QIET
-A401;ID;YI SYLLABLE QIEX
-A402;ID;YI SYLLABLE QIE
-A403;ID;YI SYLLABLE QIEP
-A404;ID;YI SYLLABLE QUOT
-A405;ID;YI SYLLABLE QUOX
-A406;ID;YI SYLLABLE QUO
-A407;ID;YI SYLLABLE QUOP
-A408;ID;YI SYLLABLE QOT
-A409;ID;YI SYLLABLE QOX
-A40A;ID;YI SYLLABLE QO
-A40B;ID;YI SYLLABLE QOP
-A40C;ID;YI SYLLABLE QUT
-A40D;ID;YI SYLLABLE QUX
-A40E;ID;YI SYLLABLE QU
-A40F;ID;YI SYLLABLE QUP
-A410;ID;YI SYLLABLE QURX
-A411;ID;YI SYLLABLE QUR
-A412;ID;YI SYLLABLE QYT
-A413;ID;YI SYLLABLE QYX
-A414;ID;YI SYLLABLE QY
-A415;ID;YI SYLLABLE QYP
-A416;ID;YI SYLLABLE QYRX
-A417;ID;YI SYLLABLE QYR
-A418;ID;YI SYLLABLE JJIT
-A419;ID;YI SYLLABLE JJIX
-A41A;ID;YI SYLLABLE JJI
-A41B;ID;YI SYLLABLE JJIP
-A41C;ID;YI SYLLABLE JJIET
-A41D;ID;YI SYLLABLE JJIEX
-A41E;ID;YI SYLLABLE JJIE
-A41F;ID;YI SYLLABLE JJIEP
-A420;ID;YI SYLLABLE JJUOX
-A421;ID;YI SYLLABLE JJUO
-A422;ID;YI SYLLABLE JJUOP
-A423;ID;YI SYLLABLE JJOT
-A424;ID;YI SYLLABLE JJOX
-A425;ID;YI SYLLABLE JJO
-A426;ID;YI SYLLABLE JJOP
-A427;ID;YI SYLLABLE JJUT
-A428;ID;YI SYLLABLE JJUX
-A429;ID;YI SYLLABLE JJU
-A42A;ID;YI SYLLABLE JJUP
-A42B;ID;YI SYLLABLE JJURX
-A42C;ID;YI SYLLABLE JJUR
-A42D;ID;YI SYLLABLE JJYT
-A42E;ID;YI SYLLABLE JJYX
-A42F;ID;YI SYLLABLE JJY
-A430;ID;YI SYLLABLE JJYP
-A431;ID;YI SYLLABLE NJIT
-A432;ID;YI SYLLABLE NJIX
-A433;ID;YI SYLLABLE NJI
-A434;ID;YI SYLLABLE NJIP
-A435;ID;YI SYLLABLE NJIET
-A436;ID;YI SYLLABLE NJIEX
-A437;ID;YI SYLLABLE NJIE
-A438;ID;YI SYLLABLE NJIEP
-A439;ID;YI SYLLABLE NJUOX
-A43A;ID;YI SYLLABLE NJUO
-A43B;ID;YI SYLLABLE NJOT
-A43C;ID;YI SYLLABLE NJOX
-A43D;ID;YI SYLLABLE NJO
-A43E;ID;YI SYLLABLE NJOP
-A43F;ID;YI SYLLABLE NJUX
-A440;ID;YI SYLLABLE NJU
-A441;ID;YI SYLLABLE NJUP
-A442;ID;YI SYLLABLE NJURX
-A443;ID;YI SYLLABLE NJUR
-A444;ID;YI SYLLABLE NJYT
-A445;ID;YI SYLLABLE NJYX
-A446;ID;YI SYLLABLE NJY
-A447;ID;YI SYLLABLE NJYP
-A448;ID;YI SYLLABLE NJYRX
-A449;ID;YI SYLLABLE NJYR
-A44A;ID;YI SYLLABLE NYIT
-A44B;ID;YI SYLLABLE NYIX
-A44C;ID;YI SYLLABLE NYI
-A44D;ID;YI SYLLABLE NYIP
-A44E;ID;YI SYLLABLE NYIET
-A44F;ID;YI SYLLABLE NYIEX
-A450;ID;YI SYLLABLE NYIE
-A451;ID;YI SYLLABLE NYIEP
-A452;ID;YI SYLLABLE NYUOX
-A453;ID;YI SYLLABLE NYUO
-A454;ID;YI SYLLABLE NYUOP
-A455;ID;YI SYLLABLE NYOT
-A456;ID;YI SYLLABLE NYOX
-A457;ID;YI SYLLABLE NYO
-A458;ID;YI SYLLABLE NYOP
-A459;ID;YI SYLLABLE NYUT
-A45A;ID;YI SYLLABLE NYUX
-A45B;ID;YI SYLLABLE NYU
-A45C;ID;YI SYLLABLE NYUP
-A45D;ID;YI SYLLABLE XIT
-A45E;ID;YI SYLLABLE XIX
-A45F;ID;YI SYLLABLE XI
-A460;ID;YI SYLLABLE XIP
-A461;ID;YI SYLLABLE XIET
-A462;ID;YI SYLLABLE XIEX
-A463;ID;YI SYLLABLE XIE
-A464;ID;YI SYLLABLE XIEP
-A465;ID;YI SYLLABLE XUOX
-A466;ID;YI SYLLABLE XUO
-A467;ID;YI SYLLABLE XOT
-A468;ID;YI SYLLABLE XOX
-A469;ID;YI SYLLABLE XO
-A46A;ID;YI SYLLABLE XOP
-A46B;ID;YI SYLLABLE XYT
-A46C;ID;YI SYLLABLE XYX
-A46D;ID;YI SYLLABLE XY
-A46E;ID;YI SYLLABLE XYP
-A46F;ID;YI SYLLABLE XYRX
-A470;ID;YI SYLLABLE XYR
-A471;ID;YI SYLLABLE YIT
-A472;ID;YI SYLLABLE YIX
-A473;ID;YI SYLLABLE YI
-A474;ID;YI SYLLABLE YIP
-A475;ID;YI SYLLABLE YIET
-A476;ID;YI SYLLABLE YIEX
-A477;ID;YI SYLLABLE YIE
-A478;ID;YI SYLLABLE YIEP
-A479;ID;YI SYLLABLE YUOT
-A47A;ID;YI SYLLABLE YUOX
-A47B;ID;YI SYLLABLE YUO
-A47C;ID;YI SYLLABLE YUOP
-A47D;ID;YI SYLLABLE YOT
-A47E;ID;YI SYLLABLE YOX
-A47F;ID;YI SYLLABLE YO
-A480;ID;YI SYLLABLE YOP
-A481;ID;YI SYLLABLE YUT
-A482;ID;YI SYLLABLE YUX
-A483;ID;YI SYLLABLE YU
-A484;ID;YI SYLLABLE YUP
-A485;ID;YI SYLLABLE YURX
-A486;ID;YI SYLLABLE YUR
-A487;ID;YI SYLLABLE YYT
-A488;ID;YI SYLLABLE YYX
-A489;ID;YI SYLLABLE YY
-A48A;ID;YI SYLLABLE YYP
-A48B;ID;YI SYLLABLE YYRX
-A48C;ID;YI SYLLABLE YYR
-A490;ID;YI RADICAL QOT
-A491;ID;YI RADICAL LI
-A492;ID;YI RADICAL KIT
-A493;ID;YI RADICAL NYIP
-A494;ID;YI RADICAL CYP
-A495;ID;YI RADICAL SSI
-A496;ID;YI RADICAL GGOP
-A497;ID;YI RADICAL GEP
-A498;ID;YI RADICAL MI
-A499;ID;YI RADICAL HXIT
-A49A;ID;YI RADICAL LYR
-A49B;ID;YI RADICAL BBUT
-A49C;ID;YI RADICAL MOP
-A49D;ID;YI RADICAL YO
-A49E;ID;YI RADICAL PUT
-A49F;ID;YI RADICAL HXUO
-A4A0;ID;YI RADICAL TAT
-A4A1;ID;YI RADICAL GA
-A4A4;ID;YI RADICAL DDUR
-A4A5;ID;YI RADICAL BUR
-A4A6;ID;YI RADICAL GGUO
-A4A7;ID;YI RADICAL NYOP
-A4A8;ID;YI RADICAL TU
-A4A9;ID;YI RADICAL OP
-A4AA;ID;YI RADICAL JJUT
-A4AB;ID;YI RADICAL ZOT
-A4AC;ID;YI RADICAL PYT
-A4AD;ID;YI RADICAL HMO
-A4AE;ID;YI RADICAL YIT
-A4AF;ID;YI RADICAL VUR
-A4B0;ID;YI RADICAL SHY
-A4B1;ID;YI RADICAL VEP
-A4B2;ID;YI RADICAL ZA
-A4B3;ID;YI RADICAL JO
-A4B5;ID;YI RADICAL JJY
-A4B6;ID;YI RADICAL GOT
-A4B7;ID;YI RADICAL JJIE
-A4B8;ID;YI RADICAL WO
-A4B9;ID;YI RADICAL DU
-A4BA;ID;YI RADICAL SHUR
-A4BB;ID;YI RADICAL LIE
-A4BC;ID;YI RADICAL CY
-A4BD;ID;YI RADICAL CUOP
-A4BE;ID;YI RADICAL CIP
-A4BF;ID;YI RADICAL HXOP
-A4C0;ID;YI RADICAL SHAT
-A4C2;ID;YI RADICAL SHOP
-A4C3;ID;YI RADICAL CHE
-A4C4;ID;YI RADICAL ZZIET
-A4C6;ID;YI RADICAL KE
-AC00;ID;<Hangul Syllable, First>
-D7A3;ID;<Hangul Syllable, Last>
-D800;SG;<Non Private Use High Surrogate, First>
-DB7F;SG;<Non Private Use High Surrogate, Last>
-DB80;SG;<Private Use High Surrogate, First>
-DBFF;SG;<Private Use High Surrogate, Last>
-DC00;SG;<Low Surrogate, First>
-DFFF;SG;<Low Surrogate, Last>
-E000;AI;<Private Use, First>
-F8FF;AI;<Private Use, Last>
-F900;ID;CJK COMPATIBILITY IDEOGRAPH-F900
-F901;ID;CJK COMPATIBILITY IDEOGRAPH-F901
-F902;ID;CJK COMPATIBILITY IDEOGRAPH-F902
-F903;ID;CJK COMPATIBILITY IDEOGRAPH-F903
-F904;ID;CJK COMPATIBILITY IDEOGRAPH-F904
-F905;ID;CJK COMPATIBILITY IDEOGRAPH-F905
-F906;ID;CJK COMPATIBILITY IDEOGRAPH-F906
-F907;ID;CJK COMPATIBILITY IDEOGRAPH-F907
-F908;ID;CJK COMPATIBILITY IDEOGRAPH-F908
-F909;ID;CJK COMPATIBILITY IDEOGRAPH-F909
-F90A;ID;CJK COMPATIBILITY IDEOGRAPH-F90A
-F90B;ID;CJK COMPATIBILITY IDEOGRAPH-F90B
-F90C;ID;CJK COMPATIBILITY IDEOGRAPH-F90C
-F90D;ID;CJK COMPATIBILITY IDEOGRAPH-F90D
-F90E;ID;CJK COMPATIBILITY IDEOGRAPH-F90E
-F90F;ID;CJK COMPATIBILITY IDEOGRAPH-F90F
-F910;ID;CJK COMPATIBILITY IDEOGRAPH-F910
-F911;ID;CJK COMPATIBILITY IDEOGRAPH-F911
-F912;ID;CJK COMPATIBILITY IDEOGRAPH-F912
-F913;ID;CJK COMPATIBILITY IDEOGRAPH-F913
-F914;ID;CJK COMPATIBILITY IDEOGRAPH-F914
-F915;ID;CJK COMPATIBILITY IDEOGRAPH-F915
-F916;ID;CJK COMPATIBILITY IDEOGRAPH-F916
-F917;ID;CJK COMPATIBILITY IDEOGRAPH-F917
-F918;ID;CJK COMPATIBILITY IDEOGRAPH-F918
-F919;ID;CJK COMPATIBILITY IDEOGRAPH-F919
-F91A;ID;CJK COMPATIBILITY IDEOGRAPH-F91A
-F91B;ID;CJK COMPATIBILITY IDEOGRAPH-F91B
-F91C;ID;CJK COMPATIBILITY IDEOGRAPH-F91C
-F91D;ID;CJK COMPATIBILITY IDEOGRAPH-F91D
-F91E;ID;CJK COMPATIBILITY IDEOGRAPH-F91E
-F91F;ID;CJK COMPATIBILITY IDEOGRAPH-F91F
-F920;ID;CJK COMPATIBILITY IDEOGRAPH-F920
-F921;ID;CJK COMPATIBILITY IDEOGRAPH-F921
-F922;ID;CJK COMPATIBILITY IDEOGRAPH-F922
-F923;ID;CJK COMPATIBILITY IDEOGRAPH-F923
-F924;ID;CJK COMPATIBILITY IDEOGRAPH-F924
-F925;ID;CJK COMPATIBILITY IDEOGRAPH-F925
-F926;ID;CJK COMPATIBILITY IDEOGRAPH-F926
-F927;ID;CJK COMPATIBILITY IDEOGRAPH-F927
-F928;ID;CJK COMPATIBILITY IDEOGRAPH-F928
-F929;ID;CJK COMPATIBILITY IDEOGRAPH-F929
-F92A;ID;CJK COMPATIBILITY IDEOGRAPH-F92A
-F92B;ID;CJK COMPATIBILITY IDEOGRAPH-F92B
-F92C;ID;CJK COMPATIBILITY IDEOGRAPH-F92C
-F92D;ID;CJK COMPATIBILITY IDEOGRAPH-F92D
-F92E;ID;CJK COMPATIBILITY IDEOGRAPH-F92E
-F92F;ID;CJK COMPATIBILITY IDEOGRAPH-F92F
-F930;ID;CJK COMPATIBILITY IDEOGRAPH-F930
-F931;ID;CJK COMPATIBILITY IDEOGRAPH-F931
-F932;ID;CJK COMPATIBILITY IDEOGRAPH-F932
-F933;ID;CJK COMPATIBILITY IDEOGRAPH-F933
-F934;ID;CJK COMPATIBILITY IDEOGRAPH-F934
-F935;ID;CJK COMPATIBILITY IDEOGRAPH-F935
-F936;ID;CJK COMPATIBILITY IDEOGRAPH-F936
-F937;ID;CJK COMPATIBILITY IDEOGRAPH-F937
-F938;ID;CJK COMPATIBILITY IDEOGRAPH-F938
-F939;ID;CJK COMPATIBILITY IDEOGRAPH-F939
-F93A;ID;CJK COMPATIBILITY IDEOGRAPH-F93A
-F93B;ID;CJK COMPATIBILITY IDEOGRAPH-F93B
-F93C;ID;CJK COMPATIBILITY IDEOGRAPH-F93C
-F93D;ID;CJK COMPATIBILITY IDEOGRAPH-F93D
-F93E;ID;CJK COMPATIBILITY IDEOGRAPH-F93E
-F93F;ID;CJK COMPATIBILITY IDEOGRAPH-F93F
-F940;ID;CJK COMPATIBILITY IDEOGRAPH-F940
-F941;ID;CJK COMPATIBILITY IDEOGRAPH-F941
-F942;ID;CJK COMPATIBILITY IDEOGRAPH-F942
-F943;ID;CJK COMPATIBILITY IDEOGRAPH-F943
-F944;ID;CJK COMPATIBILITY IDEOGRAPH-F944
-F945;ID;CJK COMPATIBILITY IDEOGRAPH-F945
-F946;ID;CJK COMPATIBILITY IDEOGRAPH-F946
-F947;ID;CJK COMPATIBILITY IDEOGRAPH-F947
-F948;ID;CJK COMPATIBILITY IDEOGRAPH-F948
-F949;ID;CJK COMPATIBILITY IDEOGRAPH-F949
-F94A;ID;CJK COMPATIBILITY IDEOGRAPH-F94A
-F94B;ID;CJK COMPATIBILITY IDEOGRAPH-F94B
-F94C;ID;CJK COMPATIBILITY IDEOGRAPH-F94C
-F94D;ID;CJK COMPATIBILITY IDEOGRAPH-F94D
-F94E;ID;CJK COMPATIBILITY IDEOGRAPH-F94E
-F94F;ID;CJK COMPATIBILITY IDEOGRAPH-F94F
-F950;ID;CJK COMPATIBILITY IDEOGRAPH-F950
-F951;ID;CJK COMPATIBILITY IDEOGRAPH-F951
-F952;ID;CJK COMPATIBILITY IDEOGRAPH-F952
-F953;ID;CJK COMPATIBILITY IDEOGRAPH-F953
-F954;ID;CJK COMPATIBILITY IDEOGRAPH-F954
-F955;ID;CJK COMPATIBILITY IDEOGRAPH-F955
-F956;ID;CJK COMPATIBILITY IDEOGRAPH-F956
-F957;ID;CJK COMPATIBILITY IDEOGRAPH-F957
-F958;ID;CJK COMPATIBILITY IDEOGRAPH-F958
-F959;ID;CJK COMPATIBILITY IDEOGRAPH-F959
-F95A;ID;CJK COMPATIBILITY IDEOGRAPH-F95A
-F95B;ID;CJK COMPATIBILITY IDEOGRAPH-F95B
-F95C;ID;CJK COMPATIBILITY IDEOGRAPH-F95C
-F95D;ID;CJK COMPATIBILITY IDEOGRAPH-F95D
-F95E;ID;CJK COMPATIBILITY IDEOGRAPH-F95E
-F95F;ID;CJK COMPATIBILITY IDEOGRAPH-F95F
-F960;ID;CJK COMPATIBILITY IDEOGRAPH-F960
-F961;ID;CJK COMPATIBILITY IDEOGRAPH-F961
-F962;ID;CJK COMPATIBILITY IDEOGRAPH-F962
-F963;ID;CJK COMPATIBILITY IDEOGRAPH-F963
-F964;ID;CJK COMPATIBILITY IDEOGRAPH-F964
-F965;ID;CJK COMPATIBILITY IDEOGRAPH-F965
-F966;ID;CJK COMPATIBILITY IDEOGRAPH-F966
-F967;ID;CJK COMPATIBILITY IDEOGRAPH-F967
-F968;ID;CJK COMPATIBILITY IDEOGRAPH-F968
-F969;ID;CJK COMPATIBILITY IDEOGRAPH-F969
-F96A;ID;CJK COMPATIBILITY IDEOGRAPH-F96A
-F96B;ID;CJK COMPATIBILITY IDEOGRAPH-F96B
-F96C;ID;CJK COMPATIBILITY IDEOGRAPH-F96C
-F96D;ID;CJK COMPATIBILITY IDEOGRAPH-F96D
-F96E;ID;CJK COMPATIBILITY IDEOGRAPH-F96E
-F96F;ID;CJK COMPATIBILITY IDEOGRAPH-F96F
-F970;ID;CJK COMPATIBILITY IDEOGRAPH-F970
-F971;ID;CJK COMPATIBILITY IDEOGRAPH-F971
-F972;ID;CJK COMPATIBILITY IDEOGRAPH-F972
-F973;ID;CJK COMPATIBILITY IDEOGRAPH-F973
-F974;ID;CJK COMPATIBILITY IDEOGRAPH-F974
-F975;ID;CJK COMPATIBILITY IDEOGRAPH-F975
-F976;ID;CJK COMPATIBILITY IDEOGRAPH-F976
-F977;ID;CJK COMPATIBILITY IDEOGRAPH-F977
-F978;ID;CJK COMPATIBILITY IDEOGRAPH-F978
-F979;ID;CJK COMPATIBILITY IDEOGRAPH-F979
-F97A;ID;CJK COMPATIBILITY IDEOGRAPH-F97A
-F97B;ID;CJK COMPATIBILITY IDEOGRAPH-F97B
-F97C;ID;CJK COMPATIBILITY IDEOGRAPH-F97C
-F97D;ID;CJK COMPATIBILITY IDEOGRAPH-F97D
-F97E;ID;CJK COMPATIBILITY IDEOGRAPH-F97E
-F97F;ID;CJK COMPATIBILITY IDEOGRAPH-F97F
-F980;ID;CJK COMPATIBILITY IDEOGRAPH-F980
-F981;ID;CJK COMPATIBILITY IDEOGRAPH-F981
-F982;ID;CJK COMPATIBILITY IDEOGRAPH-F982
-F983;ID;CJK COMPATIBILITY IDEOGRAPH-F983
-F984;ID;CJK COMPATIBILITY IDEOGRAPH-F984
-F985;ID;CJK COMPATIBILITY IDEOGRAPH-F985
-F986;ID;CJK COMPATIBILITY IDEOGRAPH-F986
-F987;ID;CJK COMPATIBILITY IDEOGRAPH-F987
-F988;ID;CJK COMPATIBILITY IDEOGRAPH-F988
-F989;ID;CJK COMPATIBILITY IDEOGRAPH-F989
-F98A;ID;CJK COMPATIBILITY IDEOGRAPH-F98A
-F98B;ID;CJK COMPATIBILITY IDEOGRAPH-F98B
-F98C;ID;CJK COMPATIBILITY IDEOGRAPH-F98C
-F98D;ID;CJK COMPATIBILITY IDEOGRAPH-F98D
-F98E;ID;CJK COMPATIBILITY IDEOGRAPH-F98E
-F98F;ID;CJK COMPATIBILITY IDEOGRAPH-F98F
-F990;ID;CJK COMPATIBILITY IDEOGRAPH-F990
-F991;ID;CJK COMPATIBILITY IDEOGRAPH-F991
-F992;ID;CJK COMPATIBILITY IDEOGRAPH-F992
-F993;ID;CJK COMPATIBILITY IDEOGRAPH-F993
-F994;ID;CJK COMPATIBILITY IDEOGRAPH-F994
-F995;ID;CJK COMPATIBILITY IDEOGRAPH-F995
-F996;ID;CJK COMPATIBILITY IDEOGRAPH-F996
-F997;ID;CJK COMPATIBILITY IDEOGRAPH-F997
-F998;ID;CJK COMPATIBILITY IDEOGRAPH-F998
-F999;ID;CJK COMPATIBILITY IDEOGRAPH-F999
-F99A;ID;CJK COMPATIBILITY IDEOGRAPH-F99A
-F99B;ID;CJK COMPATIBILITY IDEOGRAPH-F99B
-F99C;ID;CJK COMPATIBILITY IDEOGRAPH-F99C
-F99D;ID;CJK COMPATIBILITY IDEOGRAPH-F99D
-F99E;ID;CJK COMPATIBILITY IDEOGRAPH-F99E
-F99F;ID;CJK COMPATIBILITY IDEOGRAPH-F99F
-F9A0;ID;CJK COMPATIBILITY IDEOGRAPH-F9A0
-F9A1;ID;CJK COMPATIBILITY IDEOGRAPH-F9A1
-F9A2;ID;CJK COMPATIBILITY IDEOGRAPH-F9A2
-F9A3;ID;CJK COMPATIBILITY IDEOGRAPH-F9A3
-F9A4;ID;CJK COMPATIBILITY IDEOGRAPH-F9A4
-F9A5;ID;CJK COMPATIBILITY IDEOGRAPH-F9A5
-F9A6;ID;CJK COMPATIBILITY IDEOGRAPH-F9A6
-F9A7;ID;CJK COMPATIBILITY IDEOGRAPH-F9A7
-F9A8;ID;CJK COMPATIBILITY IDEOGRAPH-F9A8
-F9A9;ID;CJK COMPATIBILITY IDEOGRAPH-F9A9
-F9AA;ID;CJK COMPATIBILITY IDEOGRAPH-F9AA
-F9AB;ID;CJK COMPATIBILITY IDEOGRAPH-F9AB
-F9AC;ID;CJK COMPATIBILITY IDEOGRAPH-F9AC
-F9AD;ID;CJK COMPATIBILITY IDEOGRAPH-F9AD
-F9AE;ID;CJK COMPATIBILITY IDEOGRAPH-F9AE
-F9AF;ID;CJK COMPATIBILITY IDEOGRAPH-F9AF
-F9B0;ID;CJK COMPATIBILITY IDEOGRAPH-F9B0
-F9B1;ID;CJK COMPATIBILITY IDEOGRAPH-F9B1
-F9B2;ID;CJK COMPATIBILITY IDEOGRAPH-F9B2
-F9B3;ID;CJK COMPATIBILITY IDEOGRAPH-F9B3
-F9B4;ID;CJK COMPATIBILITY IDEOGRAPH-F9B4
-F9B5;ID;CJK COMPATIBILITY IDEOGRAPH-F9B5
-F9B6;ID;CJK COMPATIBILITY IDEOGRAPH-F9B6
-F9B7;ID;CJK COMPATIBILITY IDEOGRAPH-F9B7
-F9B8;ID;CJK COMPATIBILITY IDEOGRAPH-F9B8
-F9B9;ID;CJK COMPATIBILITY IDEOGRAPH-F9B9
-F9BA;ID;CJK COMPATIBILITY IDEOGRAPH-F9BA
-F9BB;ID;CJK COMPATIBILITY IDEOGRAPH-F9BB
-F9BC;ID;CJK COMPATIBILITY IDEOGRAPH-F9BC
-F9BD;ID;CJK COMPATIBILITY IDEOGRAPH-F9BD
-F9BE;ID;CJK COMPATIBILITY IDEOGRAPH-F9BE
-F9BF;ID;CJK COMPATIBILITY IDEOGRAPH-F9BF
-F9C0;ID;CJK COMPATIBILITY IDEOGRAPH-F9C0
-F9C1;ID;CJK COMPATIBILITY IDEOGRAPH-F9C1
-F9C2;ID;CJK COMPATIBILITY IDEOGRAPH-F9C2
-F9C3;ID;CJK COMPATIBILITY IDEOGRAPH-F9C3
-F9C4;ID;CJK COMPATIBILITY IDEOGRAPH-F9C4
-F9C5;ID;CJK COMPATIBILITY IDEOGRAPH-F9C5
-F9C6;ID;CJK COMPATIBILITY IDEOGRAPH-F9C6
-F9C7;ID;CJK COMPATIBILITY IDEOGRAPH-F9C7
-F9C8;ID;CJK COMPATIBILITY IDEOGRAPH-F9C8
-F9C9;ID;CJK COMPATIBILITY IDEOGRAPH-F9C9
-F9CA;ID;CJK COMPATIBILITY IDEOGRAPH-F9CA
-F9CB;ID;CJK COMPATIBILITY IDEOGRAPH-F9CB
-F9CC;ID;CJK COMPATIBILITY IDEOGRAPH-F9CC
-F9CD;ID;CJK COMPATIBILITY IDEOGRAPH-F9CD
-F9CE;ID;CJK COMPATIBILITY IDEOGRAPH-F9CE
-F9CF;ID;CJK COMPATIBILITY IDEOGRAPH-F9CF
-F9D0;ID;CJK COMPATIBILITY IDEOGRAPH-F9D0
-F9D1;ID;CJK COMPATIBILITY IDEOGRAPH-F9D1
-F9D2;ID;CJK COMPATIBILITY IDEOGRAPH-F9D2
-F9D3;ID;CJK COMPATIBILITY IDEOGRAPH-F9D3
-F9D4;ID;CJK COMPATIBILITY IDEOGRAPH-F9D4
-F9D5;ID;CJK COMPATIBILITY IDEOGRAPH-F9D5
-F9D6;ID;CJK COMPATIBILITY IDEOGRAPH-F9D6
-F9D7;ID;CJK COMPATIBILITY IDEOGRAPH-F9D7
-F9D8;ID;CJK COMPATIBILITY IDEOGRAPH-F9D8
-F9D9;ID;CJK COMPATIBILITY IDEOGRAPH-F9D9
-F9DA;ID;CJK COMPATIBILITY IDEOGRAPH-F9DA
-F9DB;ID;CJK COMPATIBILITY IDEOGRAPH-F9DB
-F9DC;ID;CJK COMPATIBILITY IDEOGRAPH-F9DC
-F9DD;ID;CJK COMPATIBILITY IDEOGRAPH-F9DD
-F9DE;ID;CJK COMPATIBILITY IDEOGRAPH-F9DE
-F9DF;ID;CJK COMPATIBILITY IDEOGRAPH-F9DF
-F9E0;ID;CJK COMPATIBILITY IDEOGRAPH-F9E0
-F9E1;ID;CJK COMPATIBILITY IDEOGRAPH-F9E1
-F9E2;ID;CJK COMPATIBILITY IDEOGRAPH-F9E2
-F9E3;ID;CJK COMPATIBILITY IDEOGRAPH-F9E3
-F9E4;ID;CJK COMPATIBILITY IDEOGRAPH-F9E4
-F9E5;ID;CJK COMPATIBILITY IDEOGRAPH-F9E5
-F9E6;ID;CJK COMPATIBILITY IDEOGRAPH-F9E6
-F9E7;ID;CJK COMPATIBILITY IDEOGRAPH-F9E7
-F9E8;ID;CJK COMPATIBILITY IDEOGRAPH-F9E8
-F9E9;ID;CJK COMPATIBILITY IDEOGRAPH-F9E9
-F9EA;ID;CJK COMPATIBILITY IDEOGRAPH-F9EA
-F9EB;ID;CJK COMPATIBILITY IDEOGRAPH-F9EB
-F9EC;ID;CJK COMPATIBILITY IDEOGRAPH-F9EC
-F9ED;ID;CJK COMPATIBILITY IDEOGRAPH-F9ED
-F9EE;ID;CJK COMPATIBILITY IDEOGRAPH-F9EE
-F9EF;ID;CJK COMPATIBILITY IDEOGRAPH-F9EF
-F9F0;ID;CJK COMPATIBILITY IDEOGRAPH-F9F0
-F9F1;ID;CJK COMPATIBILITY IDEOGRAPH-F9F1
-F9F2;ID;CJK COMPATIBILITY IDEOGRAPH-F9F2
-F9F3;ID;CJK COMPATIBILITY IDEOGRAPH-F9F3
-F9F4;ID;CJK COMPATIBILITY IDEOGRAPH-F9F4
-F9F5;ID;CJK COMPATIBILITY IDEOGRAPH-F9F5
-F9F6;ID;CJK COMPATIBILITY IDEOGRAPH-F9F6
-F9F7;ID;CJK COMPATIBILITY IDEOGRAPH-F9F7
-F9F8;ID;CJK COMPATIBILITY IDEOGRAPH-F9F8
-F9F9;ID;CJK COMPATIBILITY IDEOGRAPH-F9F9
-F9FA;ID;CJK COMPATIBILITY IDEOGRAPH-F9FA
-F9FB;ID;CJK COMPATIBILITY IDEOGRAPH-F9FB
-F9FC;ID;CJK COMPATIBILITY IDEOGRAPH-F9FC
-F9FD;ID;CJK COMPATIBILITY IDEOGRAPH-F9FD
-F9FE;ID;CJK COMPATIBILITY IDEOGRAPH-F9FE
-F9FF;ID;CJK COMPATIBILITY IDEOGRAPH-F9FF
-FA00;ID;CJK COMPATIBILITY IDEOGRAPH-FA00
-FA01;ID;CJK COMPATIBILITY IDEOGRAPH-FA01
-FA02;ID;CJK COMPATIBILITY IDEOGRAPH-FA02
-FA03;ID;CJK COMPATIBILITY IDEOGRAPH-FA03
-FA04;ID;CJK COMPATIBILITY IDEOGRAPH-FA04
-FA05;ID;CJK COMPATIBILITY IDEOGRAPH-FA05
-FA06;ID;CJK COMPATIBILITY IDEOGRAPH-FA06
-FA07;ID;CJK COMPATIBILITY IDEOGRAPH-FA07
-FA08;ID;CJK COMPATIBILITY IDEOGRAPH-FA08
-FA09;ID;CJK COMPATIBILITY IDEOGRAPH-FA09
-FA0A;ID;CJK COMPATIBILITY IDEOGRAPH-FA0A
-FA0B;ID;CJK COMPATIBILITY IDEOGRAPH-FA0B
-FA0C;ID;CJK COMPATIBILITY IDEOGRAPH-FA0C
-FA0D;ID;CJK COMPATIBILITY IDEOGRAPH-FA0D
-FA0E;ID;CJK COMPATIBILITY IDEOGRAPH-FA0E
-FA0F;ID;CJK COMPATIBILITY IDEOGRAPH-FA0F
-FA10;ID;CJK COMPATIBILITY IDEOGRAPH-FA10
-FA11;ID;CJK COMPATIBILITY IDEOGRAPH-FA11
-FA12;ID;CJK COMPATIBILITY IDEOGRAPH-FA12
-FA13;ID;CJK COMPATIBILITY IDEOGRAPH-FA13
-FA14;ID;CJK COMPATIBILITY IDEOGRAPH-FA14
-FA15;ID;CJK COMPATIBILITY IDEOGRAPH-FA15
-FA16;ID;CJK COMPATIBILITY IDEOGRAPH-FA16
-FA17;ID;CJK COMPATIBILITY IDEOGRAPH-FA17
-FA18;ID;CJK COMPATIBILITY IDEOGRAPH-FA18
-FA19;ID;CJK COMPATIBILITY IDEOGRAPH-FA19
-FA1A;ID;CJK COMPATIBILITY IDEOGRAPH-FA1A
-FA1B;ID;CJK COMPATIBILITY IDEOGRAPH-FA1B
-FA1C;ID;CJK COMPATIBILITY IDEOGRAPH-FA1C
-FA1D;ID;CJK COMPATIBILITY IDEOGRAPH-FA1D
-FA1E;ID;CJK COMPATIBILITY IDEOGRAPH-FA1E
-FA1F;ID;CJK COMPATIBILITY IDEOGRAPH-FA1F
-FA20;ID;CJK COMPATIBILITY IDEOGRAPH-FA20
-FA21;ID;CJK COMPATIBILITY IDEOGRAPH-FA21
-FA22;ID;CJK COMPATIBILITY IDEOGRAPH-FA22
-FA23;ID;CJK COMPATIBILITY IDEOGRAPH-FA23
-FA24;ID;CJK COMPATIBILITY IDEOGRAPH-FA24
-FA25;ID;CJK COMPATIBILITY IDEOGRAPH-FA25
-FA26;ID;CJK COMPATIBILITY IDEOGRAPH-FA26
-FA27;ID;CJK COMPATIBILITY IDEOGRAPH-FA27
-FA28;ID;CJK COMPATIBILITY IDEOGRAPH-FA28
-FA29;ID;CJK COMPATIBILITY IDEOGRAPH-FA29
-FA2A;ID;CJK COMPATIBILITY IDEOGRAPH-FA2A
-FA2B;ID;CJK COMPATIBILITY IDEOGRAPH-FA2B
-FA2C;ID;CJK COMPATIBILITY IDEOGRAPH-FA2C
-FA2D;ID;CJK COMPATIBILITY IDEOGRAPH-FA2D
-FB00;AL;LATIN SMALL LIGATURE FF
-FB01;AL;LATIN SMALL LIGATURE FI
-FB02;AL;LATIN SMALL LIGATURE FL
-FB03;AL;LATIN SMALL LIGATURE FFI
-FB04;AL;LATIN SMALL LIGATURE FFL
-FB05;AL;LATIN SMALL LIGATURE LONG S T
-FB06;AL;LATIN SMALL LIGATURE ST
-FB13;AL;ARMENIAN SMALL LIGATURE MEN NOW
-FB14;AL;ARMENIAN SMALL LIGATURE MEN ECH
-FB15;AL;ARMENIAN SMALL LIGATURE MEN INI
-FB16;AL;ARMENIAN SMALL LIGATURE VEW NOW
-FB17;AL;ARMENIAN SMALL LIGATURE MEN XEH
-FB1D;AL;HEBREW LETTER YOD WITH HIRIQ
-FB1E;CM;HEBREW POINT JUDEO-SPANISH VARIKA
-FB1F;AL;HEBREW LIGATURE YIDDISH YOD YOD PATAH
-FB20;AL;HEBREW LETTER ALTERNATIVE AYIN
-FB21;AL;HEBREW LETTER WIDE ALEF
-FB22;AL;HEBREW LETTER WIDE DALET
-FB23;AL;HEBREW LETTER WIDE HE
-FB24;AL;HEBREW LETTER WIDE KAF
-FB25;AL;HEBREW LETTER WIDE LAMED
-FB26;AL;HEBREW LETTER WIDE FINAL MEM
-FB27;AL;HEBREW LETTER WIDE RESH
-FB28;AL;HEBREW LETTER WIDE TAV
-FB29;AL;HEBREW LETTER ALTERNATIVE PLUS SIGN
-FB2A;AL;HEBREW LETTER SHIN WITH SHIN DOT
-FB2B;AL;HEBREW LETTER SHIN WITH SIN DOT
-FB2C;AL;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
-FB2D;AL;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
-FB2E;AL;HEBREW LETTER ALEF WITH PATAH
-FB2F;AL;HEBREW LETTER ALEF WITH QAMATS
-FB30;AL;HEBREW LETTER ALEF WITH MAPIQ
-FB31;AL;HEBREW LETTER BET WITH DAGESH
-FB32;AL;HEBREW LETTER GIMEL WITH DAGESH
-FB33;AL;HEBREW LETTER DALET WITH DAGESH
-FB34;AL;HEBREW LETTER HE WITH MAPIQ
-FB35;AL;HEBREW LETTER VAV WITH DAGESH
-FB36;AL;HEBREW LETTER ZAYIN WITH DAGESH
-FB38;AL;HEBREW LETTER TET WITH DAGESH
-FB39;AL;HEBREW LETTER YOD WITH DAGESH
-FB3A;AL;HEBREW LETTER FINAL KAF WITH DAGESH
-FB3B;AL;HEBREW LETTER KAF WITH DAGESH
-FB3C;AL;HEBREW LETTER LAMED WITH DAGESH
-FB3E;AL;HEBREW LETTER MEM WITH DAGESH
-FB40;AL;HEBREW LETTER NUN WITH DAGESH
-FB41;AL;HEBREW LETTER SAMEKH WITH DAGESH
-FB43;AL;HEBREW LETTER FINAL PE WITH DAGESH
-FB44;AL;HEBREW LETTER PE WITH DAGESH
-FB46;AL;HEBREW LETTER TSADI WITH DAGESH
-FB47;AL;HEBREW LETTER QOF WITH DAGESH
-FB48;AL;HEBREW LETTER RESH WITH DAGESH
-FB49;AL;HEBREW LETTER SHIN WITH DAGESH
-FB4A;AL;HEBREW LETTER TAV WITH DAGESH
-FB4B;AL;HEBREW LETTER VAV WITH HOLAM
-FB4C;AL;HEBREW LETTER BET WITH RAFE
-FB4D;AL;HEBREW LETTER KAF WITH RAFE
-FB4E;AL;HEBREW LETTER PE WITH RAFE
-FB4F;AL;HEBREW LIGATURE ALEF LAMED
-FB50;AL;ARABIC LETTER ALEF WASLA ISOLATED FORM
-FB51;AL;ARABIC LETTER ALEF WASLA FINAL FORM
-FB52;AL;ARABIC LETTER BEEH ISOLATED FORM
-FB53;AL;ARABIC LETTER BEEH FINAL FORM
-FB54;AL;ARABIC LETTER BEEH INITIAL FORM
-FB55;AL;ARABIC LETTER BEEH MEDIAL FORM
-FB56;AL;ARABIC LETTER PEH ISOLATED FORM
-FB57;AL;ARABIC LETTER PEH FINAL FORM
-FB58;AL;ARABIC LETTER PEH INITIAL FORM
-FB59;AL;ARABIC LETTER PEH MEDIAL FORM
-FB5A;AL;ARABIC LETTER BEHEH ISOLATED FORM
-FB5B;AL;ARABIC LETTER BEHEH FINAL FORM
-FB5C;AL;ARABIC LETTER BEHEH INITIAL FORM
-FB5D;AL;ARABIC LETTER BEHEH MEDIAL FORM
-FB5E;AL;ARABIC LETTER TTEHEH ISOLATED FORM
-FB5F;AL;ARABIC LETTER TTEHEH FINAL FORM
-FB60;AL;ARABIC LETTER TTEHEH INITIAL FORM
-FB61;AL;ARABIC LETTER TTEHEH MEDIAL FORM
-FB62;AL;ARABIC LETTER TEHEH ISOLATED FORM
-FB63;AL;ARABIC LETTER TEHEH FINAL FORM
-FB64;AL;ARABIC LETTER TEHEH INITIAL FORM
-FB65;AL;ARABIC LETTER TEHEH MEDIAL FORM
-FB66;AL;ARABIC LETTER TTEH ISOLATED FORM
-FB67;AL;ARABIC LETTER TTEH FINAL FORM
-FB68;AL;ARABIC LETTER TTEH INITIAL FORM
-FB69;AL;ARABIC LETTER TTEH MEDIAL FORM
-FB6A;AL;ARABIC LETTER VEH ISOLATED FORM
-FB6B;AL;ARABIC LETTER VEH FINAL FORM
-FB6C;AL;ARABIC LETTER VEH INITIAL FORM
-FB6D;AL;ARABIC LETTER VEH MEDIAL FORM
-FB6E;AL;ARABIC LETTER PEHEH ISOLATED FORM
-FB6F;AL;ARABIC LETTER PEHEH FINAL FORM
-FB70;AL;ARABIC LETTER PEHEH INITIAL FORM
-FB71;AL;ARABIC LETTER PEHEH MEDIAL FORM
-FB72;AL;ARABIC LETTER DYEH ISOLATED FORM
-FB73;AL;ARABIC LETTER DYEH FINAL FORM
-FB74;AL;ARABIC LETTER DYEH INITIAL FORM
-FB75;AL;ARABIC LETTER DYEH MEDIAL FORM
-FB76;AL;ARABIC LETTER NYEH ISOLATED FORM
-FB77;AL;ARABIC LETTER NYEH FINAL FORM
-FB78;AL;ARABIC LETTER NYEH INITIAL FORM
-FB79;AL;ARABIC LETTER NYEH MEDIAL FORM
-FB7A;AL;ARABIC LETTER TCHEH ISOLATED FORM
-FB7B;AL;ARABIC LETTER TCHEH FINAL FORM
-FB7C;AL;ARABIC LETTER TCHEH INITIAL FORM
-FB7D;AL;ARABIC LETTER TCHEH MEDIAL FORM
-FB7E;AL;ARABIC LETTER TCHEHEH ISOLATED FORM
-FB7F;AL;ARABIC LETTER TCHEHEH FINAL FORM
-FB80;AL;ARABIC LETTER TCHEHEH INITIAL FORM
-FB81;AL;ARABIC LETTER TCHEHEH MEDIAL FORM
-FB82;AL;ARABIC LETTER DDAHAL ISOLATED FORM
-FB83;AL;ARABIC LETTER DDAHAL FINAL FORM
-FB84;AL;ARABIC LETTER DAHAL ISOLATED FORM
-FB85;AL;ARABIC LETTER DAHAL FINAL FORM
-FB86;AL;ARABIC LETTER DUL ISOLATED FORM
-FB87;AL;ARABIC LETTER DUL FINAL FORM
-FB88;AL;ARABIC LETTER DDAL ISOLATED FORM
-FB89;AL;ARABIC LETTER DDAL FINAL FORM
-FB8A;AL;ARABIC LETTER JEH ISOLATED FORM
-FB8B;AL;ARABIC LETTER JEH FINAL FORM
-FB8C;AL;ARABIC LETTER RREH ISOLATED FORM
-FB8D;AL;ARABIC LETTER RREH FINAL FORM
-FB8E;AL;ARABIC LETTER KEHEH ISOLATED FORM
-FB8F;AL;ARABIC LETTER KEHEH FINAL FORM
-FB90;AL;ARABIC LETTER KEHEH INITIAL FORM
-FB91;AL;ARABIC LETTER KEHEH MEDIAL FORM
-FB92;AL;ARABIC LETTER GAF ISOLATED FORM
-FB93;AL;ARABIC LETTER GAF FINAL FORM
-FB94;AL;ARABIC LETTER GAF INITIAL FORM
-FB95;AL;ARABIC LETTER GAF MEDIAL FORM
-FB96;AL;ARABIC LETTER GUEH ISOLATED FORM
-FB97;AL;ARABIC LETTER GUEH FINAL FORM
-FB98;AL;ARABIC LETTER GUEH INITIAL FORM
-FB99;AL;ARABIC LETTER GUEH MEDIAL FORM
-FB9A;AL;ARABIC LETTER NGOEH ISOLATED FORM
-FB9B;AL;ARABIC LETTER NGOEH FINAL FORM
-FB9C;AL;ARABIC LETTER NGOEH INITIAL FORM
-FB9D;AL;ARABIC LETTER NGOEH MEDIAL FORM
-FB9E;AL;ARABIC LETTER NOON GHUNNA ISOLATED FORM
-FB9F;AL;ARABIC LETTER NOON GHUNNA FINAL FORM
-FBA0;AL;ARABIC LETTER RNOON ISOLATED FORM
-FBA1;AL;ARABIC LETTER RNOON FINAL FORM
-FBA2;AL;ARABIC LETTER RNOON INITIAL FORM
-FBA3;AL;ARABIC LETTER RNOON MEDIAL FORM
-FBA4;AL;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
-FBA5;AL;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
-FBA6;AL;ARABIC LETTER HEH GOAL ISOLATED FORM
-FBA7;AL;ARABIC LETTER HEH GOAL FINAL FORM
-FBA8;AL;ARABIC LETTER HEH GOAL INITIAL FORM
-FBA9;AL;ARABIC LETTER HEH GOAL MEDIAL FORM
-FBAA;AL;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
-FBAB;AL;ARABIC LETTER HEH DOACHASHMEE FINAL FORM
-FBAC;AL;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
-FBAD;AL;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
-FBAE;AL;ARABIC LETTER YEH BARREE ISOLATED FORM
-FBAF;AL;ARABIC LETTER YEH BARREE FINAL FORM
-FBB0;AL;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
-FBB1;AL;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
-FBD3;AL;ARABIC LETTER NG ISOLATED FORM
-FBD4;AL;ARABIC LETTER NG FINAL FORM
-FBD5;AL;ARABIC LETTER NG INITIAL FORM
-FBD6;AL;ARABIC LETTER NG MEDIAL FORM
-FBD7;AL;ARABIC LETTER U ISOLATED FORM
-FBD8;AL;ARABIC LETTER U FINAL FORM
-FBD9;AL;ARABIC LETTER OE ISOLATED FORM
-FBDA;AL;ARABIC LETTER OE FINAL FORM
-FBDB;AL;ARABIC LETTER YU ISOLATED FORM
-FBDC;AL;ARABIC LETTER YU FINAL FORM
-FBDD;AL;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
-FBDE;AL;ARABIC LETTER VE ISOLATED FORM
-FBDF;AL;ARABIC LETTER VE FINAL FORM
-FBE0;AL;ARABIC LETTER KIRGHIZ OE ISOLATED FORM
-FBE1;AL;ARABIC LETTER KIRGHIZ OE FINAL FORM
-FBE2;AL;ARABIC LETTER KIRGHIZ YU ISOLATED FORM
-FBE3;AL;ARABIC LETTER KIRGHIZ YU FINAL FORM
-FBE4;AL;ARABIC LETTER E ISOLATED FORM
-FBE5;AL;ARABIC LETTER E FINAL FORM
-FBE6;AL;ARABIC LETTER E INITIAL FORM
-FBE7;AL;ARABIC LETTER E MEDIAL FORM
-FBE8;AL;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
-FBE9;AL;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
-FBEA;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
-FBEB;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
-FBEC;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
-FBED;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
-FBEE;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
-FBEF;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
-FBF0;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
-FBF1;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
-FBF2;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
-FBF3;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
-FBF4;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
-FBF5;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
-FBF6;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
-FBF7;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
-FBF8;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
-FBF9;AL;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-FBFA;AL;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-FBFB;AL;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
-FBFC;AL;ARABIC LETTER FARSI YEH ISOLATED FORM
-FBFD;AL;ARABIC LETTER FARSI YEH FINAL FORM
-FBFE;AL;ARABIC LETTER FARSI YEH INITIAL FORM
-FBFF;AL;ARABIC LETTER FARSI YEH MEDIAL FORM
-FC00;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
-FC01;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
-FC02;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
-FC03;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-FC04;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
-FC05;AL;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
-FC06;AL;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
-FC07;AL;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
-FC08;AL;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
-FC09;AL;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
-FC0A;AL;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
-FC0B;AL;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
-FC0C;AL;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
-FC0D;AL;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
-FC0E;AL;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
-FC0F;AL;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
-FC10;AL;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
-FC11;AL;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
-FC12;AL;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
-FC13;AL;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
-FC14;AL;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
-FC15;AL;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
-FC16;AL;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
-FC17;AL;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
-FC18;AL;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
-FC19;AL;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
-FC1A;AL;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
-FC1B;AL;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
-FC1C;AL;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
-FC1D;AL;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
-FC1E;AL;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
-FC1F;AL;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
-FC20;AL;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
-FC21;AL;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
-FC22;AL;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
-FC23;AL;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
-FC24;AL;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
-FC25;AL;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
-FC26;AL;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
-FC27;AL;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
-FC28;AL;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
-FC29;AL;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
-FC2A;AL;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
-FC2B;AL;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
-FC2C;AL;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
-FC2D;AL;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
-FC2E;AL;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
-FC2F;AL;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
-FC30;AL;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
-FC31;AL;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
-FC32;AL;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
-FC33;AL;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
-FC34;AL;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
-FC35;AL;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
-FC36;AL;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
-FC37;AL;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
-FC38;AL;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
-FC39;AL;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
-FC3A;AL;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
-FC3B;AL;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
-FC3C;AL;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
-FC3D;AL;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
-FC3E;AL;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
-FC3F;AL;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
-FC40;AL;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
-FC41;AL;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
-FC42;AL;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
-FC43;AL;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
-FC44;AL;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
-FC45;AL;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
-FC46;AL;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
-FC47;AL;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
-FC48;AL;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
-FC49;AL;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
-FC4A;AL;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
-FC4B;AL;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
-FC4C;AL;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
-FC4D;AL;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
-FC4E;AL;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
-FC4F;AL;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
-FC50;AL;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
-FC51;AL;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
-FC52;AL;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
-FC53;AL;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
-FC54;AL;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
-FC55;AL;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
-FC56;AL;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
-FC57;AL;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
-FC58;AL;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
-FC59;AL;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
-FC5A;AL;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
-FC5B;AL;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5C;AL;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5D;AL;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5E;AL;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
-FC5F;AL;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
-FC60;AL;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
-FC61;AL;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
-FC62;AL;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
-FC63;AL;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC64;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
-FC65;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
-FC66;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
-FC67;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
-FC68;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-FC69;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
-FC6A;AL;ARABIC LIGATURE BEH WITH REH FINAL FORM
-FC6B;AL;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
-FC6C;AL;ARABIC LIGATURE BEH WITH MEEM FINAL FORM
-FC6D;AL;ARABIC LIGATURE BEH WITH NOON FINAL FORM
-FC6E;AL;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
-FC6F;AL;ARABIC LIGATURE BEH WITH YEH FINAL FORM
-FC70;AL;ARABIC LIGATURE TEH WITH REH FINAL FORM
-FC71;AL;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
-FC72;AL;ARABIC LIGATURE TEH WITH MEEM FINAL FORM
-FC73;AL;ARABIC LIGATURE TEH WITH NOON FINAL FORM
-FC74;AL;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
-FC75;AL;ARABIC LIGATURE TEH WITH YEH FINAL FORM
-FC76;AL;ARABIC LIGATURE THEH WITH REH FINAL FORM
-FC77;AL;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
-FC78;AL;ARABIC LIGATURE THEH WITH MEEM FINAL FORM
-FC79;AL;ARABIC LIGATURE THEH WITH NOON FINAL FORM
-FC7A;AL;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
-FC7B;AL;ARABIC LIGATURE THEH WITH YEH FINAL FORM
-FC7C;AL;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
-FC7D;AL;ARABIC LIGATURE FEH WITH YEH FINAL FORM
-FC7E;AL;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
-FC7F;AL;ARABIC LIGATURE QAF WITH YEH FINAL FORM
-FC80;AL;ARABIC LIGATURE KAF WITH ALEF FINAL FORM
-FC81;AL;ARABIC LIGATURE KAF WITH LAM FINAL FORM
-FC82;AL;ARABIC LIGATURE KAF WITH MEEM FINAL FORM
-FC83;AL;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
-FC84;AL;ARABIC LIGATURE KAF WITH YEH FINAL FORM
-FC85;AL;ARABIC LIGATURE LAM WITH MEEM FINAL FORM
-FC86;AL;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
-FC87;AL;ARABIC LIGATURE LAM WITH YEH FINAL FORM
-FC88;AL;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
-FC89;AL;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
-FC8A;AL;ARABIC LIGATURE NOON WITH REH FINAL FORM
-FC8B;AL;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
-FC8C;AL;ARABIC LIGATURE NOON WITH MEEM FINAL FORM
-FC8D;AL;ARABIC LIGATURE NOON WITH NOON FINAL FORM
-FC8E;AL;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
-FC8F;AL;ARABIC LIGATURE NOON WITH YEH FINAL FORM
-FC90;AL;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
-FC91;AL;ARABIC LIGATURE YEH WITH REH FINAL FORM
-FC92;AL;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
-FC93;AL;ARABIC LIGATURE YEH WITH MEEM FINAL FORM
-FC94;AL;ARABIC LIGATURE YEH WITH NOON FINAL FORM
-FC95;AL;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
-FC96;AL;ARABIC LIGATURE YEH WITH YEH FINAL FORM
-FC97;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
-FC98;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
-FC99;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
-FC9A;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
-FC9B;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
-FC9C;AL;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
-FC9D;AL;ARABIC LIGATURE BEH WITH HAH INITIAL FORM
-FC9E;AL;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
-FC9F;AL;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
-FCA0;AL;ARABIC LIGATURE BEH WITH HEH INITIAL FORM
-FCA1;AL;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
-FCA2;AL;ARABIC LIGATURE TEH WITH HAH INITIAL FORM
-FCA3;AL;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
-FCA4;AL;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
-FCA5;AL;ARABIC LIGATURE TEH WITH HEH INITIAL FORM
-FCA6;AL;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
-FCA7;AL;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
-FCA8;AL;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
-FCA9;AL;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
-FCAA;AL;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
-FCAB;AL;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
-FCAC;AL;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
-FCAD;AL;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
-FCAE;AL;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
-FCAF;AL;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
-FCB0;AL;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
-FCB1;AL;ARABIC LIGATURE SAD WITH HAH INITIAL FORM
-FCB2;AL;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
-FCB3;AL;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
-FCB4;AL;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
-FCB5;AL;ARABIC LIGATURE DAD WITH HAH INITIAL FORM
-FCB6;AL;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
-FCB7;AL;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
-FCB8;AL;ARABIC LIGATURE TAH WITH HAH INITIAL FORM
-FCB9;AL;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
-FCBA;AL;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
-FCBB;AL;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
-FCBC;AL;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
-FCBD;AL;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
-FCBE;AL;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
-FCBF;AL;ARABIC LIGATURE FEH WITH HAH INITIAL FORM
-FCC0;AL;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
-FCC1;AL;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
-FCC2;AL;ARABIC LIGATURE QAF WITH HAH INITIAL FORM
-FCC3;AL;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
-FCC4;AL;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
-FCC5;AL;ARABIC LIGATURE KAF WITH HAH INITIAL FORM
-FCC6;AL;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
-FCC7;AL;ARABIC LIGATURE KAF WITH LAM INITIAL FORM
-FCC8;AL;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
-FCC9;AL;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
-FCCA;AL;ARABIC LIGATURE LAM WITH HAH INITIAL FORM
-FCCB;AL;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
-FCCC;AL;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
-FCCD;AL;ARABIC LIGATURE LAM WITH HEH INITIAL FORM
-FCCE;AL;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
-FCCF;AL;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
-FCD0;AL;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
-FCD1;AL;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
-FCD2;AL;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
-FCD3;AL;ARABIC LIGATURE NOON WITH HAH INITIAL FORM
-FCD4;AL;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
-FCD5;AL;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
-FCD6;AL;ARABIC LIGATURE NOON WITH HEH INITIAL FORM
-FCD7;AL;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
-FCD8;AL;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
-FCD9;AL;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
-FCDA;AL;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
-FCDB;AL;ARABIC LIGATURE YEH WITH HAH INITIAL FORM
-FCDC;AL;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
-FCDD;AL;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
-FCDE;AL;ARABIC LIGATURE YEH WITH HEH INITIAL FORM
-FCDF;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
-FCE0;AL;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
-FCE1;AL;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
-FCE2;AL;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
-FCE3;AL;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
-FCE4;AL;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
-FCE5;AL;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
-FCE6;AL;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
-FCE7;AL;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
-FCE8;AL;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
-FCE9;AL;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
-FCEA;AL;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
-FCEB;AL;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
-FCEC;AL;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
-FCED;AL;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
-FCEE;AL;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
-FCEF;AL;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
-FCF0;AL;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
-FCF1;AL;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
-FCF2;AL;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
-FCF3;AL;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
-FCF4;AL;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
-FCF5;AL;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
-FCF6;AL;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
-FCF7;AL;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
-FCF8;AL;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
-FCF9;AL;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
-FCFA;AL;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
-FCFB;AL;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
-FCFC;AL;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
-FCFD;AL;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
-FCFE;AL;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
-FCFF;AL;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
-FD00;AL;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
-FD01;AL;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
-FD02;AL;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
-FD03;AL;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
-FD04;AL;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
-FD05;AL;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
-FD06;AL;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
-FD07;AL;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
-FD08;AL;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
-FD09;AL;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
-FD0A;AL;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
-FD0B;AL;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
-FD0C;AL;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
-FD0D;AL;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
-FD0E;AL;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
-FD0F;AL;ARABIC LIGATURE SAD WITH REH ISOLATED FORM
-FD10;AL;ARABIC LIGATURE DAD WITH REH ISOLATED FORM
-FD11;AL;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
-FD12;AL;ARABIC LIGATURE TAH WITH YEH FINAL FORM
-FD13;AL;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
-FD14;AL;ARABIC LIGATURE AIN WITH YEH FINAL FORM
-FD15;AL;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
-FD16;AL;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
-FD17;AL;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
-FD18;AL;ARABIC LIGATURE SEEN WITH YEH FINAL FORM
-FD19;AL;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
-FD1A;AL;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
-FD1B;AL;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
-FD1C;AL;ARABIC LIGATURE HAH WITH YEH FINAL FORM
-FD1D;AL;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
-FD1E;AL;ARABIC LIGATURE JEEM WITH YEH FINAL FORM
-FD1F;AL;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
-FD20;AL;ARABIC LIGATURE KHAH WITH YEH FINAL FORM
-FD21;AL;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
-FD22;AL;ARABIC LIGATURE SAD WITH YEH FINAL FORM
-FD23;AL;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
-FD24;AL;ARABIC LIGATURE DAD WITH YEH FINAL FORM
-FD25;AL;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
-FD26;AL;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
-FD27;AL;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
-FD28;AL;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
-FD29;AL;ARABIC LIGATURE SHEEN WITH REH FINAL FORM
-FD2A;AL;ARABIC LIGATURE SEEN WITH REH FINAL FORM
-FD2B;AL;ARABIC LIGATURE SAD WITH REH FINAL FORM
-FD2C;AL;ARABIC LIGATURE DAD WITH REH FINAL FORM
-FD2D;AL;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
-FD2E;AL;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
-FD2F;AL;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
-FD30;AL;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
-FD31;AL;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
-FD32;AL;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
-FD33;AL;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
-FD34;AL;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
-FD35;AL;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
-FD36;AL;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
-FD37;AL;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
-FD38;AL;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
-FD39;AL;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
-FD3A;AL;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
-FD3B;AL;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
-FD3C;AL;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
-FD3D;AL;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
-FD3E;OP;ORNATE LEFT PARENTHESIS
-FD3F;CL;ORNATE RIGHT PARENTHESIS
-FD50;AL;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
-FD51;AL;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
-FD52;AL;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
-FD53;AL;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
-FD54;AL;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
-FD55;AL;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
-FD56;AL;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
-FD57;AL;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
-FD58;AL;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
-FD59;AL;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
-FD5A;AL;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
-FD5B;AL;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD5C;AL;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
-FD5D;AL;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
-FD5E;AL;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FD5F;AL;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
-FD60;AL;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
-FD61;AL;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
-FD62;AL;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
-FD63;AL;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
-FD64;AL;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
-FD65;AL;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
-FD66;AL;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
-FD67;AL;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
-FD68;AL;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
-FD69;AL;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
-FD6A;AL;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
-FD6B;AL;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
-FD6C;AL;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
-FD6D;AL;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
-FD6E;AL;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD6F;AL;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
-FD70;AL;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
-FD71;AL;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
-FD72;AL;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
-FD73;AL;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
-FD74;AL;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
-FD75;AL;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
-FD76;AL;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
-FD77;AL;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
-FD78;AL;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD79;AL;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
-FD7A;AL;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
-FD7B;AL;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD7C;AL;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
-FD7D;AL;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
-FD7E;AL;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
-FD7F;AL;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
-FD80;AL;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
-FD81;AL;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
-FD82;AL;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD83;AL;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
-FD84;AL;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
-FD85;AL;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
-FD86;AL;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
-FD87;AL;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
-FD88;AL;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
-FD89;AL;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
-FD8A;AL;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
-FD8B;AL;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
-FD8C;AL;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
-FD8D;AL;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
-FD8E;AL;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
-FD8F;AL;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
-FD92;AL;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
-FD93;AL;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
-FD94;AL;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
-FD95;AL;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
-FD96;AL;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD97;AL;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
-FD98;AL;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
-FD99;AL;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FD9A;AL;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
-FD9B;AL;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD9C;AL;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
-FD9D;AL;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
-FD9E;AL;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
-FD9F;AL;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
-FDA0;AL;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FDA1;AL;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
-FDA2;AL;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
-FDA3;AL;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
-FDA4;AL;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDA5;AL;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
-FDA6;AL;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
-FDA7;AL;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDA8;AL;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
-FDA9;AL;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
-FDAA;AL;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
-FDAB;AL;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
-FDAC;AL;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
-FDAD;AL;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
-FDAE;AL;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
-FDAF;AL;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
-FDB0;AL;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
-FDB1;AL;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
-FDB2;AL;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
-FDB3;AL;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
-FDB4;AL;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
-FDB5;AL;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
-FDB6;AL;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
-FDB7;AL;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
-FDB8;AL;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
-FDB9;AL;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
-FDBA;AL;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
-FDBB;AL;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
-FDBC;AL;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
-FDBD;AL;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
-FDBE;AL;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
-FDBF;AL;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
-FDC0;AL;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
-FDC1;AL;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
-FDC2;AL;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
-FDC3;AL;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
-FDC4;AL;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
-FDC5;AL;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
-FDC6;AL;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
-FDC7;AL;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
-FDF0;AL;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
-FDF1;AL;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
-FDF2;AL;ARABIC LIGATURE ALLAH ISOLATED FORM
-FDF3;AL;ARABIC LIGATURE AKBAR ISOLATED FORM
-FDF4;AL;ARABIC LIGATURE MOHAMMAD ISOLATED FORM
-FDF5;AL;ARABIC LIGATURE SALAM ISOLATED FORM
-FDF6;AL;ARABIC LIGATURE RASOUL ISOLATED FORM
-FDF7;AL;ARABIC LIGATURE ALAYHE ISOLATED FORM
-FDF8;AL;ARABIC LIGATURE WASALLAM ISOLATED FORM
-FDF9;AL;ARABIC LIGATURE SALLA ISOLATED FORM
-FDFA;AL;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
-FDFB;AL;ARABIC LIGATURE JALLAJALALOUHOU
-FE20;CM;COMBINING LIGATURE LEFT HALF
-FE21;CM;COMBINING LIGATURE RIGHT HALF
-FE22;CM;COMBINING DOUBLE TILDE LEFT HALF
-FE23;CM;COMBINING DOUBLE TILDE RIGHT HALF
-FE30;ID;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
-FE31;ID;PRESENTATION FORM FOR VERTICAL EM DASH
-FE32;ID;PRESENTATION FORM FOR VERTICAL EN DASH
-FE33;ID;PRESENTATION FORM FOR VERTICAL LOW LINE
-FE34;ID;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
-FE35;OP;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
-FE36;CL;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
-FE37;OP;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
-FE38;CL;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
-FE39;OP;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
-FE3A;CL;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
-FE3B;OP;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
-FE3C;CL;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
-FE3D;OP;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
-FE3E;CL;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
-FE3F;OP;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
-FE40;CL;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
-FE41;OP;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
-FE42;CL;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
-FE43;OP;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
-FE44;CL;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
-FE49;ID;DASHED OVERLINE
-FE4A;ID;CENTRELINE OVERLINE
-FE4B;ID;WAVY OVERLINE
-FE4C;ID;DOUBLE WAVY OVERLINE
-FE4D;ID;DASHED LOW LINE
-FE4E;ID;CENTRELINE LOW LINE
-FE4F;ID;WAVY LOW LINE
-FE50;CL;SMALL COMMA
-FE51;ID;SMALL IDEOGRAPHIC COMMA
-FE52;CL;SMALL FULL STOP
-FE54;NS;SMALL SEMICOLON
-FE55;NS;SMALL COLON
-FE56;EX;SMALL QUESTION MARK
-FE57;EX;SMALL EXCLAMATION MARK
-FE58;ID;SMALL EM DASH
-FE59;OP;SMALL LEFT PARENTHESIS
-FE5A;CL;SMALL RIGHT PARENTHESIS
-FE5B;OP;SMALL LEFT CURLY BRACKET
-FE5C;CL;SMALL RIGHT CURLY BRACKET
-FE5D;OP;SMALL LEFT TORTOISE SHELL BRACKET
-FE5E;CL;SMALL RIGHT TORTOISE SHELL BRACKET
-FE5F;ID;SMALL NUMBER SIGN
-FE60;ID;SMALL AMPERSAND
-FE61;ID;SMALL ASTERISK
-FE62;ID;SMALL PLUS SIGN
-FE63;ID;SMALL HYPHEN-MINUS
-FE64;ID;SMALL LESS-THAN SIGN
-FE65;ID;SMALL GREATER-THAN SIGN
-FE66;ID;SMALL EQUALS SIGN
-FE68;ID;SMALL REVERSE SOLIDUS
-FE69;PR;SMALL DOLLAR SIGN
-FE6A;PO;SMALL PERCENT SIGN
-FE6B;AL;SMALL COMMERCIAL AT
-FE70;AL;ARABIC FATHATAN ISOLATED FORM
-FE71;AL;ARABIC TATWEEL WITH FATHATAN ABOVE
-FE72;AL;ARABIC DAMMATAN ISOLATED FORM
-FE74;AL;ARABIC KASRATAN ISOLATED FORM
-FE76;AL;ARABIC FATHA ISOLATED FORM
-FE77;AL;ARABIC FATHA MEDIAL FORM
-FE78;AL;ARABIC DAMMA ISOLATED FORM
-FE79;AL;ARABIC DAMMA MEDIAL FORM
-FE7A;AL;ARABIC KASRA ISOLATED FORM
-FE7B;AL;ARABIC KASRA MEDIAL FORM
-FE7C;AL;ARABIC SHADDA ISOLATED FORM
-FE7D;AL;ARABIC SHADDA MEDIAL FORM
-FE7E;AL;ARABIC SUKUN ISOLATED FORM
-FE7F;AL;ARABIC SUKUN MEDIAL FORM
-FE80;AL;ARABIC LETTER HAMZA ISOLATED FORM
-FE81;AL;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-FE82;AL;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-FE83;AL;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-FE84;AL;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-FE85;AL;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-FE86;AL;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
-FE87;AL;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
-FE88;AL;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
-FE89;AL;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
-FE8A;AL;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
-FE8B;AL;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-FE8C;AL;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
-FE8D;AL;ARABIC LETTER ALEF ISOLATED FORM
-FE8E;AL;ARABIC LETTER ALEF FINAL FORM
-FE8F;AL;ARABIC LETTER BEH ISOLATED FORM
-FE90;AL;ARABIC LETTER BEH FINAL FORM
-FE91;AL;ARABIC LETTER BEH INITIAL FORM
-FE92;AL;ARABIC LETTER BEH MEDIAL FORM
-FE93;AL;ARABIC LETTER TEH MARBUTA ISOLATED FORM
-FE94;AL;ARABIC LETTER TEH MARBUTA FINAL FORM
-FE95;AL;ARABIC LETTER TEH ISOLATED FORM
-FE96;AL;ARABIC LETTER TEH FINAL FORM
-FE97;AL;ARABIC LETTER TEH INITIAL FORM
-FE98;AL;ARABIC LETTER TEH MEDIAL FORM
-FE99;AL;ARABIC LETTER THEH ISOLATED FORM
-FE9A;AL;ARABIC LETTER THEH FINAL FORM
-FE9B;AL;ARABIC LETTER THEH INITIAL FORM
-FE9C;AL;ARABIC LETTER THEH MEDIAL FORM
-FE9D;AL;ARABIC LETTER JEEM ISOLATED FORM
-FE9E;AL;ARABIC LETTER JEEM FINAL FORM
-FE9F;AL;ARABIC LETTER JEEM INITIAL FORM
-FEA0;AL;ARABIC LETTER JEEM MEDIAL FORM
-FEA1;AL;ARABIC LETTER HAH ISOLATED FORM
-FEA2;AL;ARABIC LETTER HAH FINAL FORM
-FEA3;AL;ARABIC LETTER HAH INITIAL FORM
-FEA4;AL;ARABIC LETTER HAH MEDIAL FORM
-FEA5;AL;ARABIC LETTER KHAH ISOLATED FORM
-FEA6;AL;ARABIC LETTER KHAH FINAL FORM
-FEA7;AL;ARABIC LETTER KHAH INITIAL FORM
-FEA8;AL;ARABIC LETTER KHAH MEDIAL FORM
-FEA9;AL;ARABIC LETTER DAL ISOLATED FORM
-FEAA;AL;ARABIC LETTER DAL FINAL FORM
-FEAB;AL;ARABIC LETTER THAL ISOLATED FORM
-FEAC;AL;ARABIC LETTER THAL FINAL FORM
-FEAD;AL;ARABIC LETTER REH ISOLATED FORM
-FEAE;AL;ARABIC LETTER REH FINAL FORM
-FEAF;AL;ARABIC LETTER ZAIN ISOLATED FORM
-FEB0;AL;ARABIC LETTER ZAIN FINAL FORM
-FEB1;AL;ARABIC LETTER SEEN ISOLATED FORM
-FEB2;AL;ARABIC LETTER SEEN FINAL FORM
-FEB3;AL;ARABIC LETTER SEEN INITIAL FORM
-FEB4;AL;ARABIC LETTER SEEN MEDIAL FORM
-FEB5;AL;ARABIC LETTER SHEEN ISOLATED FORM
-FEB6;AL;ARABIC LETTER SHEEN FINAL FORM
-FEB7;AL;ARABIC LETTER SHEEN INITIAL FORM
-FEB8;AL;ARABIC LETTER SHEEN MEDIAL FORM
-FEB9;AL;ARABIC LETTER SAD ISOLATED FORM
-FEBA;AL;ARABIC LETTER SAD FINAL FORM
-FEBB;AL;ARABIC LETTER SAD INITIAL FORM
-FEBC;AL;ARABIC LETTER SAD MEDIAL FORM
-FEBD;AL;ARABIC LETTER DAD ISOLATED FORM
-FEBE;AL;ARABIC LETTER DAD FINAL FORM
-FEBF;AL;ARABIC LETTER DAD INITIAL FORM
-FEC0;AL;ARABIC LETTER DAD MEDIAL FORM
-FEC1;AL;ARABIC LETTER TAH ISOLATED FORM
-FEC2;AL;ARABIC LETTER TAH FINAL FORM
-FEC3;AL;ARABIC LETTER TAH INITIAL FORM
-FEC4;AL;ARABIC LETTER TAH MEDIAL FORM
-FEC5;AL;ARABIC LETTER ZAH ISOLATED FORM
-FEC6;AL;ARABIC LETTER ZAH FINAL FORM
-FEC7;AL;ARABIC LETTER ZAH INITIAL FORM
-FEC8;AL;ARABIC LETTER ZAH MEDIAL FORM
-FEC9;AL;ARABIC LETTER AIN ISOLATED FORM
-FECA;AL;ARABIC LETTER AIN FINAL FORM
-FECB;AL;ARABIC LETTER AIN INITIAL FORM
-FECC;AL;ARABIC LETTER AIN MEDIAL FORM
-FECD;AL;ARABIC LETTER GHAIN ISOLATED FORM
-FECE;AL;ARABIC LETTER GHAIN FINAL FORM
-FECF;AL;ARABIC LETTER GHAIN INITIAL FORM
-FED0;AL;ARABIC LETTER GHAIN MEDIAL FORM
-FED1;AL;ARABIC LETTER FEH ISOLATED FORM
-FED2;AL;ARABIC LETTER FEH FINAL FORM
-FED3;AL;ARABIC LETTER FEH INITIAL FORM
-FED4;AL;ARABIC LETTER FEH MEDIAL FORM
-FED5;AL;ARABIC LETTER QAF ISOLATED FORM
-FED6;AL;ARABIC LETTER QAF FINAL FORM
-FED7;AL;ARABIC LETTER QAF INITIAL FORM
-FED8;AL;ARABIC LETTER QAF MEDIAL FORM
-FED9;AL;ARABIC LETTER KAF ISOLATED FORM
-FEDA;AL;ARABIC LETTER KAF FINAL FORM
-FEDB;AL;ARABIC LETTER KAF INITIAL FORM
-FEDC;AL;ARABIC LETTER KAF MEDIAL FORM
-FEDD;AL;ARABIC LETTER LAM ISOLATED FORM
-FEDE;AL;ARABIC LETTER LAM FINAL FORM
-FEDF;AL;ARABIC LETTER LAM INITIAL FORM
-FEE0;AL;ARABIC LETTER LAM MEDIAL FORM
-FEE1;AL;ARABIC LETTER MEEM ISOLATED FORM
-FEE2;AL;ARABIC LETTER MEEM FINAL FORM
-FEE3;AL;ARABIC LETTER MEEM INITIAL FORM
-FEE4;AL;ARABIC LETTER MEEM MEDIAL FORM
-FEE5;AL;ARABIC LETTER NOON ISOLATED FORM
-FEE6;AL;ARABIC LETTER NOON FINAL FORM
-FEE7;AL;ARABIC LETTER NOON INITIAL FORM
-FEE8;AL;ARABIC LETTER NOON MEDIAL FORM
-FEE9;AL;ARABIC LETTER HEH ISOLATED FORM
-FEEA;AL;ARABIC LETTER HEH FINAL FORM
-FEEB;AL;ARABIC LETTER HEH INITIAL FORM
-FEEC;AL;ARABIC LETTER HEH MEDIAL FORM
-FEED;AL;ARABIC LETTER WAW ISOLATED FORM
-FEEE;AL;ARABIC LETTER WAW FINAL FORM
-FEEF;AL;ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-FEF0;AL;ARABIC LETTER ALEF MAKSURA FINAL FORM
-FEF1;AL;ARABIC LETTER YEH ISOLATED FORM
-FEF2;AL;ARABIC LETTER YEH FINAL FORM
-FEF3;AL;ARABIC LETTER YEH INITIAL FORM
-FEF4;AL;ARABIC LETTER YEH MEDIAL FORM
-FEF5;AL;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-FEF6;AL;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-FEF7;AL;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-FEF8;AL;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-FEF9;AL;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
-FEFA;AL;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
-FEFB;AL;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-FEFC;AL;ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-FEFF;GL;ZERO WIDTH NO-BREAK SPACE
-FF01;EX;FULLWIDTH EXCLAMATION MARK
-FF02;ID;FULLWIDTH QUOTATION MARK
-FF03;ID;FULLWIDTH NUMBER SIGN
-FF04;PR;FULLWIDTH DOLLAR SIGN
-FF05;PO;FULLWIDTH PERCENT SIGN
-FF06;ID;FULLWIDTH AMPERSAND
-FF07;ID;FULLWIDTH APOSTROPHE
-FF08;OP;FULLWIDTH LEFT PARENTHESIS
-FF09;CL;FULLWIDTH RIGHT PARENTHESIS
-FF0A;ID;FULLWIDTH ASTERISK
-FF0B;ID;FULLWIDTH PLUS SIGN
-FF0C;CL;FULLWIDTH COMMA
-FF0D;ID;FULLWIDTH HYPHEN-MINUS
-FF0E;CL;FULLWIDTH FULL STOP
-FF0F;ID;FULLWIDTH SOLIDUS
-FF10;ID;FULLWIDTH DIGIT ZERO
-FF11;ID;FULLWIDTH DIGIT ONE
-FF12;ID;FULLWIDTH DIGIT TWO
-FF13;ID;FULLWIDTH DIGIT THREE
-FF14;ID;FULLWIDTH DIGIT FOUR
-FF15;ID;FULLWIDTH DIGIT FIVE
-FF16;ID;FULLWIDTH DIGIT SIX
-FF17;ID;FULLWIDTH DIGIT SEVEN
-FF18;ID;FULLWIDTH DIGIT EIGHT
-FF19;ID;FULLWIDTH DIGIT NINE
-FF1A;NS;FULLWIDTH COLON
-FF1B;NS;FULLWIDTH SEMICOLON
-FF1C;ID;FULLWIDTH LESS-THAN SIGN
-FF1D;ID;FULLWIDTH EQUALS SIGN
-FF1E;ID;FULLWIDTH GREATER-THAN SIGN
-FF1F;EX;FULLWIDTH QUESTION MARK
-FF20;ID;FULLWIDTH COMMERCIAL AT
-FF21;ID;FULLWIDTH LATIN CAPITAL LETTER A
-FF22;ID;FULLWIDTH LATIN CAPITAL LETTER B
-FF23;ID;FULLWIDTH LATIN CAPITAL LETTER C
-FF24;ID;FULLWIDTH LATIN CAPITAL LETTER D
-FF25;ID;FULLWIDTH LATIN CAPITAL LETTER E
-FF26;ID;FULLWIDTH LATIN CAPITAL LETTER F
-FF27;ID;FULLWIDTH LATIN CAPITAL LETTER G
-FF28;ID;FULLWIDTH LATIN CAPITAL LETTER H
-FF29;ID;FULLWIDTH LATIN CAPITAL LETTER I
-FF2A;ID;FULLWIDTH LATIN CAPITAL LETTER J
-FF2B;ID;FULLWIDTH LATIN CAPITAL LETTER K
-FF2C;ID;FULLWIDTH LATIN CAPITAL LETTER L
-FF2D;ID;FULLWIDTH LATIN CAPITAL LETTER M
-FF2E;ID;FULLWIDTH LATIN CAPITAL LETTER N
-FF2F;ID;FULLWIDTH LATIN CAPITAL LETTER O
-FF30;ID;FULLWIDTH LATIN CAPITAL LETTER P
-FF31;ID;FULLWIDTH LATIN CAPITAL LETTER Q
-FF32;ID;FULLWIDTH LATIN CAPITAL LETTER R
-FF33;ID;FULLWIDTH LATIN CAPITAL LETTER S
-FF34;ID;FULLWIDTH LATIN CAPITAL LETTER T
-FF35;ID;FULLWIDTH LATIN CAPITAL LETTER U
-FF36;ID;FULLWIDTH LATIN CAPITAL LETTER V
-FF37;ID;FULLWIDTH LATIN CAPITAL LETTER W
-FF38;ID;FULLWIDTH LATIN CAPITAL LETTER X
-FF39;ID;FULLWIDTH LATIN CAPITAL LETTER Y
-FF3A;ID;FULLWIDTH LATIN CAPITAL LETTER Z
-FF3B;OP;FULLWIDTH LEFT SQUARE BRACKET
-FF3C;ID;FULLWIDTH REVERSE SOLIDUS
-FF3D;CL;FULLWIDTH RIGHT SQUARE BRACKET
-FF3E;ID;FULLWIDTH CIRCUMFLEX ACCENT
-FF3F;ID;FULLWIDTH LOW LINE
-FF40;ID;FULLWIDTH GRAVE ACCENT
-FF41;ID;FULLWIDTH LATIN SMALL LETTER A
-FF42;ID;FULLWIDTH LATIN SMALL LETTER B
-FF43;ID;FULLWIDTH LATIN SMALL LETTER C
-FF44;ID;FULLWIDTH LATIN SMALL LETTER D
-FF45;ID;FULLWIDTH LATIN SMALL LETTER E
-FF46;ID;FULLWIDTH LATIN SMALL LETTER F
-FF47;ID;FULLWIDTH LATIN SMALL LETTER G
-FF48;ID;FULLWIDTH LATIN SMALL LETTER H
-FF49;ID;FULLWIDTH LATIN SMALL LETTER I
-FF4A;ID;FULLWIDTH LATIN SMALL LETTER J
-FF4B;ID;FULLWIDTH LATIN SMALL LETTER K
-FF4C;ID;FULLWIDTH LATIN SMALL LETTER L
-FF4D;ID;FULLWIDTH LATIN SMALL LETTER M
-FF4E;ID;FULLWIDTH LATIN SMALL LETTER N
-FF4F;ID;FULLWIDTH LATIN SMALL LETTER O
-FF50;ID;FULLWIDTH LATIN SMALL LETTER P
-FF51;ID;FULLWIDTH LATIN SMALL LETTER Q
-FF52;ID;FULLWIDTH LATIN SMALL LETTER R
-FF53;ID;FULLWIDTH LATIN SMALL LETTER S
-FF54;ID;FULLWIDTH LATIN SMALL LETTER T
-FF55;ID;FULLWIDTH LATIN SMALL LETTER U
-FF56;ID;FULLWIDTH LATIN SMALL LETTER V
-FF57;ID;FULLWIDTH LATIN SMALL LETTER W
-FF58;ID;FULLWIDTH LATIN SMALL LETTER X
-FF59;ID;FULLWIDTH LATIN SMALL LETTER Y
-FF5A;ID;FULLWIDTH LATIN SMALL LETTER Z
-FF5B;OP;FULLWIDTH LEFT CURLY BRACKET
-FF5C;ID;FULLWIDTH VERTICAL LINE
-FF5D;CL;FULLWIDTH RIGHT CURLY BRACKET
-FF5E;ID;FULLWIDTH TILDE
-FF61;CL;HALFWIDTH IDEOGRAPHIC FULL STOP
-FF62;OP;HALFWIDTH LEFT CORNER BRACKET
-FF63;CL;HALFWIDTH RIGHT CORNER BRACKET
-FF64;CL;HALFWIDTH IDEOGRAPHIC COMMA
-FF65;NS;HALFWIDTH KATAKANA MIDDLE DOT
-FF66;AL;HALFWIDTH KATAKANA LETTER WO
-FF67;NS;HALFWIDTH KATAKANA LETTER SMALL A
-FF68;NS;HALFWIDTH KATAKANA LETTER SMALL I
-FF69;NS;HALFWIDTH KATAKANA LETTER SMALL U
-FF6A;NS;HALFWIDTH KATAKANA LETTER SMALL E
-FF6B;NS;HALFWIDTH KATAKANA LETTER SMALL O
-FF6C;NS;HALFWIDTH KATAKANA LETTER SMALL YA
-FF6D;NS;HALFWIDTH KATAKANA LETTER SMALL YU
-FF6E;NS;HALFWIDTH KATAKANA LETTER SMALL YO
-FF6F;NS;HALFWIDTH KATAKANA LETTER SMALL TU
-FF70;NS;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF71;AL;HALFWIDTH KATAKANA LETTER A
-FF72;AL;HALFWIDTH KATAKANA LETTER I
-FF73;AL;HALFWIDTH KATAKANA LETTER U
-FF74;AL;HALFWIDTH KATAKANA LETTER E
-FF75;AL;HALFWIDTH KATAKANA LETTER O
-FF76;AL;HALFWIDTH KATAKANA LETTER KA
-FF77;AL;HALFWIDTH KATAKANA LETTER KI
-FF78;AL;HALFWIDTH KATAKANA LETTER KU
-FF79;AL;HALFWIDTH KATAKANA LETTER KE
-FF7A;AL;HALFWIDTH KATAKANA LETTER KO
-FF7B;AL;HALFWIDTH KATAKANA LETTER SA
-FF7C;AL;HALFWIDTH KATAKANA LETTER SI
-FF7D;AL;HALFWIDTH KATAKANA LETTER SU
-FF7E;AL;HALFWIDTH KATAKANA LETTER SE
-FF7F;AL;HALFWIDTH KATAKANA LETTER SO
-FF80;AL;HALFWIDTH KATAKANA LETTER TA
-FF81;AL;HALFWIDTH KATAKANA LETTER TI
-FF82;AL;HALFWIDTH KATAKANA LETTER TU
-FF83;AL;HALFWIDTH KATAKANA LETTER TE
-FF84;AL;HALFWIDTH KATAKANA LETTER TO
-FF85;AL;HALFWIDTH KATAKANA LETTER NA
-FF86;AL;HALFWIDTH KATAKANA LETTER NI
-FF87;AL;HALFWIDTH KATAKANA LETTER NU
-FF88;AL;HALFWIDTH KATAKANA LETTER NE
-FF89;AL;HALFWIDTH KATAKANA LETTER NO
-FF8A;AL;HALFWIDTH KATAKANA LETTER HA
-FF8B;AL;HALFWIDTH KATAKANA LETTER HI
-FF8C;AL;HALFWIDTH KATAKANA LETTER HU
-FF8D;AL;HALFWIDTH KATAKANA LETTER HE
-FF8E;AL;HALFWIDTH KATAKANA LETTER HO
-FF8F;AL;HALFWIDTH KATAKANA LETTER MA
-FF90;AL;HALFWIDTH KATAKANA LETTER MI
-FF91;AL;HALFWIDTH KATAKANA LETTER MU
-FF92;AL;HALFWIDTH KATAKANA LETTER ME
-FF93;AL;HALFWIDTH KATAKANA LETTER MO
-FF94;AL;HALFWIDTH KATAKANA LETTER YA
-FF95;AL;HALFWIDTH KATAKANA LETTER YU
-FF96;AL;HALFWIDTH KATAKANA LETTER YO
-FF97;AL;HALFWIDTH KATAKANA LETTER RA
-FF98;AL;HALFWIDTH KATAKANA LETTER RI
-FF99;AL;HALFWIDTH KATAKANA LETTER RU
-FF9A;AL;HALFWIDTH KATAKANA LETTER RE
-FF9B;AL;HALFWIDTH KATAKANA LETTER RO
-FF9C;AL;HALFWIDTH KATAKANA LETTER WA
-FF9D;AL;HALFWIDTH KATAKANA LETTER N
-FF9E;NS;HALFWIDTH KATAKANA VOICED SOUND MARK
-FF9F;NS;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-FFA0;AL;HALFWIDTH HANGUL FILLER
-FFA1;AL;HALFWIDTH HANGUL LETTER KIYEOK
-FFA2;AL;HALFWIDTH HANGUL LETTER SSANGKIYEOK
-FFA3;AL;HALFWIDTH HANGUL LETTER KIYEOK-SIOS
-FFA4;AL;HALFWIDTH HANGUL LETTER NIEUN
-FFA5;AL;HALFWIDTH HANGUL LETTER NIEUN-CIEUC
-FFA6;AL;HALFWIDTH HANGUL LETTER NIEUN-HIEUH
-FFA7;AL;HALFWIDTH HANGUL LETTER TIKEUT
-FFA8;AL;HALFWIDTH HANGUL LETTER SSANGTIKEUT
-FFA9;AL;HALFWIDTH HANGUL LETTER RIEUL
-FFAA;AL;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
-FFAB;AL;HALFWIDTH HANGUL LETTER RIEUL-MIEUM
-FFAC;AL;HALFWIDTH HANGUL LETTER RIEUL-PIEUP
-FFAD;AL;HALFWIDTH HANGUL LETTER RIEUL-SIOS
-FFAE;AL;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
-FFAF;AL;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
-FFB0;AL;HALFWIDTH HANGUL LETTER RIEUL-HIEUH
-FFB1;AL;HALFWIDTH HANGUL LETTER MIEUM
-FFB2;AL;HALFWIDTH HANGUL LETTER PIEUP
-FFB3;AL;HALFWIDTH HANGUL LETTER SSANGPIEUP
-FFB4;AL;HALFWIDTH HANGUL LETTER PIEUP-SIOS
-FFB5;AL;HALFWIDTH HANGUL LETTER SIOS
-FFB6;AL;HALFWIDTH HANGUL LETTER SSANGSIOS
-FFB7;AL;HALFWIDTH HANGUL LETTER IEUNG
-FFB8;AL;HALFWIDTH HANGUL LETTER CIEUC
-FFB9;AL;HALFWIDTH HANGUL LETTER SSANGCIEUC
-FFBA;AL;HALFWIDTH HANGUL LETTER CHIEUCH
-FFBB;AL;HALFWIDTH HANGUL LETTER KHIEUKH
-FFBC;AL;HALFWIDTH HANGUL LETTER THIEUTH
-FFBD;AL;HALFWIDTH HANGUL LETTER PHIEUPH
-FFBE;AL;HALFWIDTH HANGUL LETTER HIEUH
-FFC2;AL;HALFWIDTH HANGUL LETTER A
-FFC3;AL;HALFWIDTH HANGUL LETTER AE
-FFC4;AL;HALFWIDTH HANGUL LETTER YA
-FFC5;AL;HALFWIDTH HANGUL LETTER YAE
-FFC6;AL;HALFWIDTH HANGUL LETTER EO
-FFC7;AL;HALFWIDTH HANGUL LETTER E
-FFCA;AL;HALFWIDTH HANGUL LETTER YEO
-FFCB;AL;HALFWIDTH HANGUL LETTER YE
-FFCC;AL;HALFWIDTH HANGUL LETTER O
-FFCD;AL;HALFWIDTH HANGUL LETTER WA
-FFCE;AL;HALFWIDTH HANGUL LETTER WAE
-FFCF;AL;HALFWIDTH HANGUL LETTER OE
-FFD2;AL;HALFWIDTH HANGUL LETTER YO
-FFD3;AL;HALFWIDTH HANGUL LETTER U
-FFD4;AL;HALFWIDTH HANGUL LETTER WEO
-FFD5;AL;HALFWIDTH HANGUL LETTER WE
-FFD6;AL;HALFWIDTH HANGUL LETTER WI
-FFD7;AL;HALFWIDTH HANGUL LETTER YU
-FFDA;AL;HALFWIDTH HANGUL LETTER EU
-FFDB;AL;HALFWIDTH HANGUL LETTER YI
-FFDC;AL;HALFWIDTH HANGUL LETTER I
-FFE0;PO;FULLWIDTH CENT SIGN
-FFE1;PR;FULLWIDTH POUND SIGN
-FFE2;ID;FULLWIDTH NOT SIGN
-FFE3;ID;FULLWIDTH MACRON
-FFE4;ID;FULLWIDTH BROKEN BAR
-FFE5;PR;FULLWIDTH YEN SIGN
-FFE6;PR;FULLWIDTH WON SIGN
-FFE8;AL;HALFWIDTH FORMS LIGHT VERTICAL
-FFE9;AL;HALFWIDTH LEFTWARDS ARROW
-FFEA;AL;HALFWIDTH UPWARDS ARROW
-FFEB;AL;HALFWIDTH RIGHTWARDS ARROW
-FFEC;AL;HALFWIDTH DOWNWARDS ARROW
-FFED;AL;HALFWIDTH BLACK SQUARE
-FFEE;AL;HALFWIDTH WHITE CIRCLE
-FFF9;CM;INTERLINEAR ANNOTATION ANCHOR
-FFFA;CM;INTERLINEAR ANNOTATION SEPARATOR
-FFFB;CM;INTERLINEAR ANNOTATION TERMINATOR
-FFFC;CB;OBJECT REPLACEMENT CHARACTER
-FFFD;AI;REPLACEMENT CHARACTER
diff --git a/contrib/perl5/lib/unicode/Makefile b/contrib/perl5/lib/unicode/Makefile
deleted file mode 100644
index af5e77b..0000000
--- a/contrib/perl5/lib/unicode/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-all:
- ../../miniperl -I../../lib ./mktables.PL
-
-clean:
- rm -f *.pl */*.pl
diff --git a/contrib/perl5/lib/unicode/Name.pl b/contrib/perl5/lib/unicode/Name.pl
deleted file mode 100644
index f5c4c56..0000000
--- a/contrib/perl5/lib/unicode/Name.pl
+++ /dev/null
@@ -1,10554 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0000 001f <control>
-0020 SPACE
-0021 EXCLAMATION MARK
-0022 QUOTATION MARK
-0023 NUMBER SIGN
-0024 DOLLAR SIGN
-0025 PERCENT SIGN
-0026 AMPERSAND
-0027 APOSTROPHE
-0028 LEFT PARENTHESIS
-0029 RIGHT PARENTHESIS
-002a ASTERISK
-002b PLUS SIGN
-002c COMMA
-002d HYPHEN-MINUS
-002e FULL STOP
-002f SOLIDUS
-0030 DIGIT ZERO
-0031 DIGIT ONE
-0032 DIGIT TWO
-0033 DIGIT THREE
-0034 DIGIT FOUR
-0035 DIGIT FIVE
-0036 DIGIT SIX
-0037 DIGIT SEVEN
-0038 DIGIT EIGHT
-0039 DIGIT NINE
-003a COLON
-003b SEMICOLON
-003c LESS-THAN SIGN
-003d EQUALS SIGN
-003e GREATER-THAN SIGN
-003f QUESTION MARK
-0040 COMMERCIAL AT
-0041 LATIN CAPITAL LETTER A
-0042 LATIN CAPITAL LETTER B
-0043 LATIN CAPITAL LETTER C
-0044 LATIN CAPITAL LETTER D
-0045 LATIN CAPITAL LETTER E
-0046 LATIN CAPITAL LETTER F
-0047 LATIN CAPITAL LETTER G
-0048 LATIN CAPITAL LETTER H
-0049 LATIN CAPITAL LETTER I
-004a LATIN CAPITAL LETTER J
-004b LATIN CAPITAL LETTER K
-004c LATIN CAPITAL LETTER L
-004d LATIN CAPITAL LETTER M
-004e LATIN CAPITAL LETTER N
-004f LATIN CAPITAL LETTER O
-0050 LATIN CAPITAL LETTER P
-0051 LATIN CAPITAL LETTER Q
-0052 LATIN CAPITAL LETTER R
-0053 LATIN CAPITAL LETTER S
-0054 LATIN CAPITAL LETTER T
-0055 LATIN CAPITAL LETTER U
-0056 LATIN CAPITAL LETTER V
-0057 LATIN CAPITAL LETTER W
-0058 LATIN CAPITAL LETTER X
-0059 LATIN CAPITAL LETTER Y
-005a LATIN CAPITAL LETTER Z
-005b LEFT SQUARE BRACKET
-005c REVERSE SOLIDUS
-005d RIGHT SQUARE BRACKET
-005e CIRCUMFLEX ACCENT
-005f LOW LINE
-0060 GRAVE ACCENT
-0061 LATIN SMALL LETTER A
-0062 LATIN SMALL LETTER B
-0063 LATIN SMALL LETTER C
-0064 LATIN SMALL LETTER D
-0065 LATIN SMALL LETTER E
-0066 LATIN SMALL LETTER F
-0067 LATIN SMALL LETTER G
-0068 LATIN SMALL LETTER H
-0069 LATIN SMALL LETTER I
-006a LATIN SMALL LETTER J
-006b LATIN SMALL LETTER K
-006c LATIN SMALL LETTER L
-006d LATIN SMALL LETTER M
-006e LATIN SMALL LETTER N
-006f LATIN SMALL LETTER O
-0070 LATIN SMALL LETTER P
-0071 LATIN SMALL LETTER Q
-0072 LATIN SMALL LETTER R
-0073 LATIN SMALL LETTER S
-0074 LATIN SMALL LETTER T
-0075 LATIN SMALL LETTER U
-0076 LATIN SMALL LETTER V
-0077 LATIN SMALL LETTER W
-0078 LATIN SMALL LETTER X
-0079 LATIN SMALL LETTER Y
-007a LATIN SMALL LETTER Z
-007b LEFT CURLY BRACKET
-007c VERTICAL LINE
-007d RIGHT CURLY BRACKET
-007e TILDE
-007f 009f <control>
-00a0 NO-BREAK SPACE
-00a1 INVERTED EXCLAMATION MARK
-00a2 CENT SIGN
-00a3 POUND SIGN
-00a4 CURRENCY SIGN
-00a5 YEN SIGN
-00a6 BROKEN BAR
-00a7 SECTION SIGN
-00a8 DIAERESIS
-00a9 COPYRIGHT SIGN
-00aa FEMININE ORDINAL INDICATOR
-00ab LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-00ac NOT SIGN
-00ad SOFT HYPHEN
-00ae REGISTERED SIGN
-00af MACRON
-00b0 DEGREE SIGN
-00b1 PLUS-MINUS SIGN
-00b2 SUPERSCRIPT TWO
-00b3 SUPERSCRIPT THREE
-00b4 ACUTE ACCENT
-00b5 MICRO SIGN
-00b6 PILCROW SIGN
-00b7 MIDDLE DOT
-00b8 CEDILLA
-00b9 SUPERSCRIPT ONE
-00ba MASCULINE ORDINAL INDICATOR
-00bb RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-00bc VULGAR FRACTION ONE QUARTER
-00bd VULGAR FRACTION ONE HALF
-00be VULGAR FRACTION THREE QUARTERS
-00bf INVERTED QUESTION MARK
-00c0 LATIN CAPITAL LETTER A WITH GRAVE
-00c1 LATIN CAPITAL LETTER A WITH ACUTE
-00c2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-00c3 LATIN CAPITAL LETTER A WITH TILDE
-00c4 LATIN CAPITAL LETTER A WITH DIAERESIS
-00c5 LATIN CAPITAL LETTER A WITH RING ABOVE
-00c6 LATIN CAPITAL LETTER AE
-00c7 LATIN CAPITAL LETTER C WITH CEDILLA
-00c8 LATIN CAPITAL LETTER E WITH GRAVE
-00c9 LATIN CAPITAL LETTER E WITH ACUTE
-00ca LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-00cb LATIN CAPITAL LETTER E WITH DIAERESIS
-00cc LATIN CAPITAL LETTER I WITH GRAVE
-00cd LATIN CAPITAL LETTER I WITH ACUTE
-00ce LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-00cf LATIN CAPITAL LETTER I WITH DIAERESIS
-00d0 LATIN CAPITAL LETTER ETH
-00d1 LATIN CAPITAL LETTER N WITH TILDE
-00d2 LATIN CAPITAL LETTER O WITH GRAVE
-00d3 LATIN CAPITAL LETTER O WITH ACUTE
-00d4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-00d5 LATIN CAPITAL LETTER O WITH TILDE
-00d6 LATIN CAPITAL LETTER O WITH DIAERESIS
-00d7 MULTIPLICATION SIGN
-00d8 LATIN CAPITAL LETTER O WITH STROKE
-00d9 LATIN CAPITAL LETTER U WITH GRAVE
-00da LATIN CAPITAL LETTER U WITH ACUTE
-00db LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-00dc LATIN CAPITAL LETTER U WITH DIAERESIS
-00dd LATIN CAPITAL LETTER Y WITH ACUTE
-00de LATIN CAPITAL LETTER THORN
-00df LATIN SMALL LETTER SHARP S
-00e0 LATIN SMALL LETTER A WITH GRAVE
-00e1 LATIN SMALL LETTER A WITH ACUTE
-00e2 LATIN SMALL LETTER A WITH CIRCUMFLEX
-00e3 LATIN SMALL LETTER A WITH TILDE
-00e4 LATIN SMALL LETTER A WITH DIAERESIS
-00e5 LATIN SMALL LETTER A WITH RING ABOVE
-00e6 LATIN SMALL LETTER AE
-00e7 LATIN SMALL LETTER C WITH CEDILLA
-00e8 LATIN SMALL LETTER E WITH GRAVE
-00e9 LATIN SMALL LETTER E WITH ACUTE
-00ea LATIN SMALL LETTER E WITH CIRCUMFLEX
-00eb LATIN SMALL LETTER E WITH DIAERESIS
-00ec LATIN SMALL LETTER I WITH GRAVE
-00ed LATIN SMALL LETTER I WITH ACUTE
-00ee LATIN SMALL LETTER I WITH CIRCUMFLEX
-00ef LATIN SMALL LETTER I WITH DIAERESIS
-00f0 LATIN SMALL LETTER ETH
-00f1 LATIN SMALL LETTER N WITH TILDE
-00f2 LATIN SMALL LETTER O WITH GRAVE
-00f3 LATIN SMALL LETTER O WITH ACUTE
-00f4 LATIN SMALL LETTER O WITH CIRCUMFLEX
-00f5 LATIN SMALL LETTER O WITH TILDE
-00f6 LATIN SMALL LETTER O WITH DIAERESIS
-00f7 DIVISION SIGN
-00f8 LATIN SMALL LETTER O WITH STROKE
-00f9 LATIN SMALL LETTER U WITH GRAVE
-00fa LATIN SMALL LETTER U WITH ACUTE
-00fb LATIN SMALL LETTER U WITH CIRCUMFLEX
-00fc LATIN SMALL LETTER U WITH DIAERESIS
-00fd LATIN SMALL LETTER Y WITH ACUTE
-00fe LATIN SMALL LETTER THORN
-00ff LATIN SMALL LETTER Y WITH DIAERESIS
-0100 LATIN CAPITAL LETTER A WITH MACRON
-0101 LATIN SMALL LETTER A WITH MACRON
-0102 LATIN CAPITAL LETTER A WITH BREVE
-0103 LATIN SMALL LETTER A WITH BREVE
-0104 LATIN CAPITAL LETTER A WITH OGONEK
-0105 LATIN SMALL LETTER A WITH OGONEK
-0106 LATIN CAPITAL LETTER C WITH ACUTE
-0107 LATIN SMALL LETTER C WITH ACUTE
-0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-0109 LATIN SMALL LETTER C WITH CIRCUMFLEX
-010a LATIN CAPITAL LETTER C WITH DOT ABOVE
-010b LATIN SMALL LETTER C WITH DOT ABOVE
-010c LATIN CAPITAL LETTER C WITH CARON
-010d LATIN SMALL LETTER C WITH CARON
-010e LATIN CAPITAL LETTER D WITH CARON
-010f LATIN SMALL LETTER D WITH CARON
-0110 LATIN CAPITAL LETTER D WITH STROKE
-0111 LATIN SMALL LETTER D WITH STROKE
-0112 LATIN CAPITAL LETTER E WITH MACRON
-0113 LATIN SMALL LETTER E WITH MACRON
-0114 LATIN CAPITAL LETTER E WITH BREVE
-0115 LATIN SMALL LETTER E WITH BREVE
-0116 LATIN CAPITAL LETTER E WITH DOT ABOVE
-0117 LATIN SMALL LETTER E WITH DOT ABOVE
-0118 LATIN CAPITAL LETTER E WITH OGONEK
-0119 LATIN SMALL LETTER E WITH OGONEK
-011a LATIN CAPITAL LETTER E WITH CARON
-011b LATIN SMALL LETTER E WITH CARON
-011c LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-011d LATIN SMALL LETTER G WITH CIRCUMFLEX
-011e LATIN CAPITAL LETTER G WITH BREVE
-011f LATIN SMALL LETTER G WITH BREVE
-0120 LATIN CAPITAL LETTER G WITH DOT ABOVE
-0121 LATIN SMALL LETTER G WITH DOT ABOVE
-0122 LATIN CAPITAL LETTER G WITH CEDILLA
-0123 LATIN SMALL LETTER G WITH CEDILLA
-0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0125 LATIN SMALL LETTER H WITH CIRCUMFLEX
-0126 LATIN CAPITAL LETTER H WITH STROKE
-0127 LATIN SMALL LETTER H WITH STROKE
-0128 LATIN CAPITAL LETTER I WITH TILDE
-0129 LATIN SMALL LETTER I WITH TILDE
-012a LATIN CAPITAL LETTER I WITH MACRON
-012b LATIN SMALL LETTER I WITH MACRON
-012c LATIN CAPITAL LETTER I WITH BREVE
-012d LATIN SMALL LETTER I WITH BREVE
-012e LATIN CAPITAL LETTER I WITH OGONEK
-012f LATIN SMALL LETTER I WITH OGONEK
-0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
-0131 LATIN SMALL LETTER DOTLESS I
-0132 LATIN CAPITAL LIGATURE IJ
-0133 LATIN SMALL LIGATURE IJ
-0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-0135 LATIN SMALL LETTER J WITH CIRCUMFLEX
-0136 LATIN CAPITAL LETTER K WITH CEDILLA
-0137 LATIN SMALL LETTER K WITH CEDILLA
-0138 LATIN SMALL LETTER KRA
-0139 LATIN CAPITAL LETTER L WITH ACUTE
-013a LATIN SMALL LETTER L WITH ACUTE
-013b LATIN CAPITAL LETTER L WITH CEDILLA
-013c LATIN SMALL LETTER L WITH CEDILLA
-013d LATIN CAPITAL LETTER L WITH CARON
-013e LATIN SMALL LETTER L WITH CARON
-013f LATIN CAPITAL LETTER L WITH MIDDLE DOT
-0140 LATIN SMALL LETTER L WITH MIDDLE DOT
-0141 LATIN CAPITAL LETTER L WITH STROKE
-0142 LATIN SMALL LETTER L WITH STROKE
-0143 LATIN CAPITAL LETTER N WITH ACUTE
-0144 LATIN SMALL LETTER N WITH ACUTE
-0145 LATIN CAPITAL LETTER N WITH CEDILLA
-0146 LATIN SMALL LETTER N WITH CEDILLA
-0147 LATIN CAPITAL LETTER N WITH CARON
-0148 LATIN SMALL LETTER N WITH CARON
-0149 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-014a LATIN CAPITAL LETTER ENG
-014b LATIN SMALL LETTER ENG
-014c LATIN CAPITAL LETTER O WITH MACRON
-014d LATIN SMALL LETTER O WITH MACRON
-014e LATIN CAPITAL LETTER O WITH BREVE
-014f LATIN SMALL LETTER O WITH BREVE
-0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0152 LATIN CAPITAL LIGATURE OE
-0153 LATIN SMALL LIGATURE OE
-0154 LATIN CAPITAL LETTER R WITH ACUTE
-0155 LATIN SMALL LETTER R WITH ACUTE
-0156 LATIN CAPITAL LETTER R WITH CEDILLA
-0157 LATIN SMALL LETTER R WITH CEDILLA
-0158 LATIN CAPITAL LETTER R WITH CARON
-0159 LATIN SMALL LETTER R WITH CARON
-015a LATIN CAPITAL LETTER S WITH ACUTE
-015b LATIN SMALL LETTER S WITH ACUTE
-015c LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-015d LATIN SMALL LETTER S WITH CIRCUMFLEX
-015e LATIN CAPITAL LETTER S WITH CEDILLA
-015f LATIN SMALL LETTER S WITH CEDILLA
-0160 LATIN CAPITAL LETTER S WITH CARON
-0161 LATIN SMALL LETTER S WITH CARON
-0162 LATIN CAPITAL LETTER T WITH CEDILLA
-0163 LATIN SMALL LETTER T WITH CEDILLA
-0164 LATIN CAPITAL LETTER T WITH CARON
-0165 LATIN SMALL LETTER T WITH CARON
-0166 LATIN CAPITAL LETTER T WITH STROKE
-0167 LATIN SMALL LETTER T WITH STROKE
-0168 LATIN CAPITAL LETTER U WITH TILDE
-0169 LATIN SMALL LETTER U WITH TILDE
-016a LATIN CAPITAL LETTER U WITH MACRON
-016b LATIN SMALL LETTER U WITH MACRON
-016c LATIN CAPITAL LETTER U WITH BREVE
-016d LATIN SMALL LETTER U WITH BREVE
-016e LATIN CAPITAL LETTER U WITH RING ABOVE
-016f LATIN SMALL LETTER U WITH RING ABOVE
-0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0172 LATIN CAPITAL LETTER U WITH OGONEK
-0173 LATIN SMALL LETTER U WITH OGONEK
-0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-0175 LATIN SMALL LETTER W WITH CIRCUMFLEX
-0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX
-0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
-0179 LATIN CAPITAL LETTER Z WITH ACUTE
-017a LATIN SMALL LETTER Z WITH ACUTE
-017b LATIN CAPITAL LETTER Z WITH DOT ABOVE
-017c LATIN SMALL LETTER Z WITH DOT ABOVE
-017d LATIN CAPITAL LETTER Z WITH CARON
-017e LATIN SMALL LETTER Z WITH CARON
-017f LATIN SMALL LETTER LONG S
-0180 LATIN SMALL LETTER B WITH STROKE
-0181 LATIN CAPITAL LETTER B WITH HOOK
-0182 LATIN CAPITAL LETTER B WITH TOPBAR
-0183 LATIN SMALL LETTER B WITH TOPBAR
-0184 LATIN CAPITAL LETTER TONE SIX
-0185 LATIN SMALL LETTER TONE SIX
-0186 LATIN CAPITAL LETTER OPEN O
-0187 LATIN CAPITAL LETTER C WITH HOOK
-0188 LATIN SMALL LETTER C WITH HOOK
-0189 LATIN CAPITAL LETTER AFRICAN D
-018a LATIN CAPITAL LETTER D WITH HOOK
-018b LATIN CAPITAL LETTER D WITH TOPBAR
-018c LATIN SMALL LETTER D WITH TOPBAR
-018d LATIN SMALL LETTER TURNED DELTA
-018e LATIN CAPITAL LETTER REVERSED E
-018f LATIN CAPITAL LETTER SCHWA
-0190 LATIN CAPITAL LETTER OPEN E
-0191 LATIN CAPITAL LETTER F WITH HOOK
-0192 LATIN SMALL LETTER F WITH HOOK
-0193 LATIN CAPITAL LETTER G WITH HOOK
-0194 LATIN CAPITAL LETTER GAMMA
-0195 LATIN SMALL LETTER HV
-0196 LATIN CAPITAL LETTER IOTA
-0197 LATIN CAPITAL LETTER I WITH STROKE
-0198 LATIN CAPITAL LETTER K WITH HOOK
-0199 LATIN SMALL LETTER K WITH HOOK
-019a LATIN SMALL LETTER L WITH BAR
-019b LATIN SMALL LETTER LAMBDA WITH STROKE
-019c LATIN CAPITAL LETTER TURNED M
-019d LATIN CAPITAL LETTER N WITH LEFT HOOK
-019e LATIN SMALL LETTER N WITH LONG RIGHT LEG
-019f LATIN CAPITAL LETTER O WITH MIDDLE TILDE
-01a0 LATIN CAPITAL LETTER O WITH HORN
-01a1 LATIN SMALL LETTER O WITH HORN
-01a2 LATIN CAPITAL LETTER OI
-01a3 LATIN SMALL LETTER OI
-01a4 LATIN CAPITAL LETTER P WITH HOOK
-01a5 LATIN SMALL LETTER P WITH HOOK
-01a6 LATIN LETTER YR
-01a7 LATIN CAPITAL LETTER TONE TWO
-01a8 LATIN SMALL LETTER TONE TWO
-01a9 LATIN CAPITAL LETTER ESH
-01aa LATIN LETTER REVERSED ESH LOOP
-01ab LATIN SMALL LETTER T WITH PALATAL HOOK
-01ac LATIN CAPITAL LETTER T WITH HOOK
-01ad LATIN SMALL LETTER T WITH HOOK
-01ae LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
-01af LATIN CAPITAL LETTER U WITH HORN
-01b0 LATIN SMALL LETTER U WITH HORN
-01b1 LATIN CAPITAL LETTER UPSILON
-01b2 LATIN CAPITAL LETTER V WITH HOOK
-01b3 LATIN CAPITAL LETTER Y WITH HOOK
-01b4 LATIN SMALL LETTER Y WITH HOOK
-01b5 LATIN CAPITAL LETTER Z WITH STROKE
-01b6 LATIN SMALL LETTER Z WITH STROKE
-01b7 LATIN CAPITAL LETTER EZH
-01b8 LATIN CAPITAL LETTER EZH REVERSED
-01b9 LATIN SMALL LETTER EZH REVERSED
-01ba LATIN SMALL LETTER EZH WITH TAIL
-01bb LATIN LETTER TWO WITH STROKE
-01bc LATIN CAPITAL LETTER TONE FIVE
-01bd LATIN SMALL LETTER TONE FIVE
-01be LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
-01bf LATIN LETTER WYNN
-01c0 LATIN LETTER DENTAL CLICK
-01c1 LATIN LETTER LATERAL CLICK
-01c2 LATIN LETTER ALVEOLAR CLICK
-01c3 LATIN LETTER RETROFLEX CLICK
-01c4 LATIN CAPITAL LETTER DZ WITH CARON
-01c5 LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
-01c6 LATIN SMALL LETTER DZ WITH CARON
-01c7 LATIN CAPITAL LETTER LJ
-01c8 LATIN CAPITAL LETTER L WITH SMALL LETTER J
-01c9 LATIN SMALL LETTER LJ
-01ca LATIN CAPITAL LETTER NJ
-01cb LATIN CAPITAL LETTER N WITH SMALL LETTER J
-01cc LATIN SMALL LETTER NJ
-01cd LATIN CAPITAL LETTER A WITH CARON
-01ce LATIN SMALL LETTER A WITH CARON
-01cf LATIN CAPITAL LETTER I WITH CARON
-01d0 LATIN SMALL LETTER I WITH CARON
-01d1 LATIN CAPITAL LETTER O WITH CARON
-01d2 LATIN SMALL LETTER O WITH CARON
-01d3 LATIN CAPITAL LETTER U WITH CARON
-01d4 LATIN SMALL LETTER U WITH CARON
-01d5 LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01d6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01d7 LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01d8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01d9 LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-01da LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01db LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01dc LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01dd LATIN SMALL LETTER TURNED E
-01de LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-01df LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01e0 LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
-01e1 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
-01e2 LATIN CAPITAL LETTER AE WITH MACRON
-01e3 LATIN SMALL LETTER AE WITH MACRON
-01e4 LATIN CAPITAL LETTER G WITH STROKE
-01e5 LATIN SMALL LETTER G WITH STROKE
-01e6 LATIN CAPITAL LETTER G WITH CARON
-01e7 LATIN SMALL LETTER G WITH CARON
-01e8 LATIN CAPITAL LETTER K WITH CARON
-01e9 LATIN SMALL LETTER K WITH CARON
-01ea LATIN CAPITAL LETTER O WITH OGONEK
-01eb LATIN SMALL LETTER O WITH OGONEK
-01ec LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
-01ed LATIN SMALL LETTER O WITH OGONEK AND MACRON
-01ee LATIN CAPITAL LETTER EZH WITH CARON
-01ef LATIN SMALL LETTER EZH WITH CARON
-01f0 LATIN SMALL LETTER J WITH CARON
-01f1 LATIN CAPITAL LETTER DZ
-01f2 LATIN CAPITAL LETTER D WITH SMALL LETTER Z
-01f3 LATIN SMALL LETTER DZ
-01f4 LATIN CAPITAL LETTER G WITH ACUTE
-01f5 LATIN SMALL LETTER G WITH ACUTE
-01f6 LATIN CAPITAL LETTER HWAIR
-01f7 LATIN CAPITAL LETTER WYNN
-01f8 LATIN CAPITAL LETTER N WITH GRAVE
-01f9 LATIN SMALL LETTER N WITH GRAVE
-01fa LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-01fb LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01fc LATIN CAPITAL LETTER AE WITH ACUTE
-01fd LATIN SMALL LETTER AE WITH ACUTE
-01fe LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-01ff LATIN SMALL LETTER O WITH STROKE AND ACUTE
-0200 LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
-0201 LATIN SMALL LETTER A WITH DOUBLE GRAVE
-0202 LATIN CAPITAL LETTER A WITH INVERTED BREVE
-0203 LATIN SMALL LETTER A WITH INVERTED BREVE
-0204 LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
-0205 LATIN SMALL LETTER E WITH DOUBLE GRAVE
-0206 LATIN CAPITAL LETTER E WITH INVERTED BREVE
-0207 LATIN SMALL LETTER E WITH INVERTED BREVE
-0208 LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
-0209 LATIN SMALL LETTER I WITH DOUBLE GRAVE
-020a LATIN CAPITAL LETTER I WITH INVERTED BREVE
-020b LATIN SMALL LETTER I WITH INVERTED BREVE
-020c LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
-020d LATIN SMALL LETTER O WITH DOUBLE GRAVE
-020e LATIN CAPITAL LETTER O WITH INVERTED BREVE
-020f LATIN SMALL LETTER O WITH INVERTED BREVE
-0210 LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
-0211 LATIN SMALL LETTER R WITH DOUBLE GRAVE
-0212 LATIN CAPITAL LETTER R WITH INVERTED BREVE
-0213 LATIN SMALL LETTER R WITH INVERTED BREVE
-0214 LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
-0215 LATIN SMALL LETTER U WITH DOUBLE GRAVE
-0216 LATIN CAPITAL LETTER U WITH INVERTED BREVE
-0217 LATIN SMALL LETTER U WITH INVERTED BREVE
-0218 LATIN CAPITAL LETTER S WITH COMMA BELOW
-0219 LATIN SMALL LETTER S WITH COMMA BELOW
-021a LATIN CAPITAL LETTER T WITH COMMA BELOW
-021b LATIN SMALL LETTER T WITH COMMA BELOW
-021c LATIN CAPITAL LETTER YOGH
-021d LATIN SMALL LETTER YOGH
-021e LATIN CAPITAL LETTER H WITH CARON
-021f LATIN SMALL LETTER H WITH CARON
-0222 LATIN CAPITAL LETTER OU
-0223 LATIN SMALL LETTER OU
-0224 LATIN CAPITAL LETTER Z WITH HOOK
-0225 LATIN SMALL LETTER Z WITH HOOK
-0226 LATIN CAPITAL LETTER A WITH DOT ABOVE
-0227 LATIN SMALL LETTER A WITH DOT ABOVE
-0228 LATIN CAPITAL LETTER E WITH CEDILLA
-0229 LATIN SMALL LETTER E WITH CEDILLA
-022a LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-022b LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022c LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-022d LATIN SMALL LETTER O WITH TILDE AND MACRON
-022e LATIN CAPITAL LETTER O WITH DOT ABOVE
-022f LATIN SMALL LETTER O WITH DOT ABOVE
-0230 LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
-0231 LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
-0232 LATIN CAPITAL LETTER Y WITH MACRON
-0233 LATIN SMALL LETTER Y WITH MACRON
-0250 LATIN SMALL LETTER TURNED A
-0251 LATIN SMALL LETTER ALPHA
-0252 LATIN SMALL LETTER TURNED ALPHA
-0253 LATIN SMALL LETTER B WITH HOOK
-0254 LATIN SMALL LETTER OPEN O
-0255 LATIN SMALL LETTER C WITH CURL
-0256 LATIN SMALL LETTER D WITH TAIL
-0257 LATIN SMALL LETTER D WITH HOOK
-0258 LATIN SMALL LETTER REVERSED E
-0259 LATIN SMALL LETTER SCHWA
-025a LATIN SMALL LETTER SCHWA WITH HOOK
-025b LATIN SMALL LETTER OPEN E
-025c LATIN SMALL LETTER REVERSED OPEN E
-025d LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
-025e LATIN SMALL LETTER CLOSED REVERSED OPEN E
-025f LATIN SMALL LETTER DOTLESS J WITH STROKE
-0260 LATIN SMALL LETTER G WITH HOOK
-0261 LATIN SMALL LETTER SCRIPT G
-0262 LATIN LETTER SMALL CAPITAL G
-0263 LATIN SMALL LETTER GAMMA
-0264 LATIN SMALL LETTER RAMS HORN
-0265 LATIN SMALL LETTER TURNED H
-0266 LATIN SMALL LETTER H WITH HOOK
-0267 LATIN SMALL LETTER HENG WITH HOOK
-0268 LATIN SMALL LETTER I WITH STROKE
-0269 LATIN SMALL LETTER IOTA
-026a LATIN LETTER SMALL CAPITAL I
-026b LATIN SMALL LETTER L WITH MIDDLE TILDE
-026c LATIN SMALL LETTER L WITH BELT
-026d LATIN SMALL LETTER L WITH RETROFLEX HOOK
-026e LATIN SMALL LETTER LEZH
-026f LATIN SMALL LETTER TURNED M
-0270 LATIN SMALL LETTER TURNED M WITH LONG LEG
-0271 LATIN SMALL LETTER M WITH HOOK
-0272 LATIN SMALL LETTER N WITH LEFT HOOK
-0273 LATIN SMALL LETTER N WITH RETROFLEX HOOK
-0274 LATIN LETTER SMALL CAPITAL N
-0275 LATIN SMALL LETTER BARRED O
-0276 LATIN LETTER SMALL CAPITAL OE
-0277 LATIN SMALL LETTER CLOSED OMEGA
-0278 LATIN SMALL LETTER PHI
-0279 LATIN SMALL LETTER TURNED R
-027a LATIN SMALL LETTER TURNED R WITH LONG LEG
-027b LATIN SMALL LETTER TURNED R WITH HOOK
-027c LATIN SMALL LETTER R WITH LONG LEG
-027d LATIN SMALL LETTER R WITH TAIL
-027e LATIN SMALL LETTER R WITH FISHHOOK
-027f LATIN SMALL LETTER REVERSED R WITH FISHHOOK
-0280 LATIN LETTER SMALL CAPITAL R
-0281 LATIN LETTER SMALL CAPITAL INVERTED R
-0282 LATIN SMALL LETTER S WITH HOOK
-0283 LATIN SMALL LETTER ESH
-0284 LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
-0285 LATIN SMALL LETTER SQUAT REVERSED ESH
-0286 LATIN SMALL LETTER ESH WITH CURL
-0287 LATIN SMALL LETTER TURNED T
-0288 LATIN SMALL LETTER T WITH RETROFLEX HOOK
-0289 LATIN SMALL LETTER U BAR
-028a LATIN SMALL LETTER UPSILON
-028b LATIN SMALL LETTER V WITH HOOK
-028c LATIN SMALL LETTER TURNED V
-028d LATIN SMALL LETTER TURNED W
-028e LATIN SMALL LETTER TURNED Y
-028f LATIN LETTER SMALL CAPITAL Y
-0290 LATIN SMALL LETTER Z WITH RETROFLEX HOOK
-0291 LATIN SMALL LETTER Z WITH CURL
-0292 LATIN SMALL LETTER EZH
-0293 LATIN SMALL LETTER EZH WITH CURL
-0294 LATIN LETTER GLOTTAL STOP
-0295 LATIN LETTER PHARYNGEAL VOICED FRICATIVE
-0296 LATIN LETTER INVERTED GLOTTAL STOP
-0297 LATIN LETTER STRETCHED C
-0298 LATIN LETTER BILABIAL CLICK
-0299 LATIN LETTER SMALL CAPITAL B
-029a LATIN SMALL LETTER CLOSED OPEN E
-029b LATIN LETTER SMALL CAPITAL G WITH HOOK
-029c LATIN LETTER SMALL CAPITAL H
-029d LATIN SMALL LETTER J WITH CROSSED-TAIL
-029e LATIN SMALL LETTER TURNED K
-029f LATIN LETTER SMALL CAPITAL L
-02a0 LATIN SMALL LETTER Q WITH HOOK
-02a1 LATIN LETTER GLOTTAL STOP WITH STROKE
-02a2 LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
-02a3 LATIN SMALL LETTER DZ DIGRAPH
-02a4 LATIN SMALL LETTER DEZH DIGRAPH
-02a5 LATIN SMALL LETTER DZ DIGRAPH WITH CURL
-02a6 LATIN SMALL LETTER TS DIGRAPH
-02a7 LATIN SMALL LETTER TESH DIGRAPH
-02a8 LATIN SMALL LETTER TC DIGRAPH WITH CURL
-02a9 LATIN SMALL LETTER FENG DIGRAPH
-02aa LATIN SMALL LETTER LS DIGRAPH
-02ab LATIN SMALL LETTER LZ DIGRAPH
-02ac LATIN LETTER BILABIAL PERCUSSIVE
-02ad LATIN LETTER BIDENTAL PERCUSSIVE
-02b0 MODIFIER LETTER SMALL H
-02b1 MODIFIER LETTER SMALL H WITH HOOK
-02b2 MODIFIER LETTER SMALL J
-02b3 MODIFIER LETTER SMALL R
-02b4 MODIFIER LETTER SMALL TURNED R
-02b5 MODIFIER LETTER SMALL TURNED R WITH HOOK
-02b6 MODIFIER LETTER SMALL CAPITAL INVERTED R
-02b7 MODIFIER LETTER SMALL W
-02b8 MODIFIER LETTER SMALL Y
-02b9 MODIFIER LETTER PRIME
-02ba MODIFIER LETTER DOUBLE PRIME
-02bb MODIFIER LETTER TURNED COMMA
-02bc MODIFIER LETTER APOSTROPHE
-02bd MODIFIER LETTER REVERSED COMMA
-02be MODIFIER LETTER RIGHT HALF RING
-02bf MODIFIER LETTER LEFT HALF RING
-02c0 MODIFIER LETTER GLOTTAL STOP
-02c1 MODIFIER LETTER REVERSED GLOTTAL STOP
-02c2 MODIFIER LETTER LEFT ARROWHEAD
-02c3 MODIFIER LETTER RIGHT ARROWHEAD
-02c4 MODIFIER LETTER UP ARROWHEAD
-02c5 MODIFIER LETTER DOWN ARROWHEAD
-02c6 MODIFIER LETTER CIRCUMFLEX ACCENT
-02c7 CARON
-02c8 MODIFIER LETTER VERTICAL LINE
-02c9 MODIFIER LETTER MACRON
-02ca MODIFIER LETTER ACUTE ACCENT
-02cb MODIFIER LETTER GRAVE ACCENT
-02cc MODIFIER LETTER LOW VERTICAL LINE
-02cd MODIFIER LETTER LOW MACRON
-02ce MODIFIER LETTER LOW GRAVE ACCENT
-02cf MODIFIER LETTER LOW ACUTE ACCENT
-02d0 MODIFIER LETTER TRIANGULAR COLON
-02d1 MODIFIER LETTER HALF TRIANGULAR COLON
-02d2 MODIFIER LETTER CENTRED RIGHT HALF RING
-02d3 MODIFIER LETTER CENTRED LEFT HALF RING
-02d4 MODIFIER LETTER UP TACK
-02d5 MODIFIER LETTER DOWN TACK
-02d6 MODIFIER LETTER PLUS SIGN
-02d7 MODIFIER LETTER MINUS SIGN
-02d8 BREVE
-02d9 DOT ABOVE
-02da RING ABOVE
-02db OGONEK
-02dc SMALL TILDE
-02dd DOUBLE ACUTE ACCENT
-02de MODIFIER LETTER RHOTIC HOOK
-02df MODIFIER LETTER CROSS ACCENT
-02e0 MODIFIER LETTER SMALL GAMMA
-02e1 MODIFIER LETTER SMALL L
-02e2 MODIFIER LETTER SMALL S
-02e3 MODIFIER LETTER SMALL X
-02e4 MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-02e5 MODIFIER LETTER EXTRA-HIGH TONE BAR
-02e6 MODIFIER LETTER HIGH TONE BAR
-02e7 MODIFIER LETTER MID TONE BAR
-02e8 MODIFIER LETTER LOW TONE BAR
-02e9 MODIFIER LETTER EXTRA-LOW TONE BAR
-02ea MODIFIER LETTER YIN DEPARTING TONE MARK
-02eb MODIFIER LETTER YANG DEPARTING TONE MARK
-02ec MODIFIER LETTER VOICING
-02ed MODIFIER LETTER UNASPIRATED
-02ee MODIFIER LETTER DOUBLE APOSTROPHE
-0300 COMBINING GRAVE ACCENT
-0301 COMBINING ACUTE ACCENT
-0302 COMBINING CIRCUMFLEX ACCENT
-0303 COMBINING TILDE
-0304 COMBINING MACRON
-0305 COMBINING OVERLINE
-0306 COMBINING BREVE
-0307 COMBINING DOT ABOVE
-0308 COMBINING DIAERESIS
-0309 COMBINING HOOK ABOVE
-030a COMBINING RING ABOVE
-030b COMBINING DOUBLE ACUTE ACCENT
-030c COMBINING CARON
-030d COMBINING VERTICAL LINE ABOVE
-030e COMBINING DOUBLE VERTICAL LINE ABOVE
-030f COMBINING DOUBLE GRAVE ACCENT
-0310 COMBINING CANDRABINDU
-0311 COMBINING INVERTED BREVE
-0312 COMBINING TURNED COMMA ABOVE
-0313 COMBINING COMMA ABOVE
-0314 COMBINING REVERSED COMMA ABOVE
-0315 COMBINING COMMA ABOVE RIGHT
-0316 COMBINING GRAVE ACCENT BELOW
-0317 COMBINING ACUTE ACCENT BELOW
-0318 COMBINING LEFT TACK BELOW
-0319 COMBINING RIGHT TACK BELOW
-031a COMBINING LEFT ANGLE ABOVE
-031b COMBINING HORN
-031c COMBINING LEFT HALF RING BELOW
-031d COMBINING UP TACK BELOW
-031e COMBINING DOWN TACK BELOW
-031f COMBINING PLUS SIGN BELOW
-0320 COMBINING MINUS SIGN BELOW
-0321 COMBINING PALATALIZED HOOK BELOW
-0322 COMBINING RETROFLEX HOOK BELOW
-0323 COMBINING DOT BELOW
-0324 COMBINING DIAERESIS BELOW
-0325 COMBINING RING BELOW
-0326 COMBINING COMMA BELOW
-0327 COMBINING CEDILLA
-0328 COMBINING OGONEK
-0329 COMBINING VERTICAL LINE BELOW
-032a COMBINING BRIDGE BELOW
-032b COMBINING INVERTED DOUBLE ARCH BELOW
-032c COMBINING CARON BELOW
-032d COMBINING CIRCUMFLEX ACCENT BELOW
-032e COMBINING BREVE BELOW
-032f COMBINING INVERTED BREVE BELOW
-0330 COMBINING TILDE BELOW
-0331 COMBINING MACRON BELOW
-0332 COMBINING LOW LINE
-0333 COMBINING DOUBLE LOW LINE
-0334 COMBINING TILDE OVERLAY
-0335 COMBINING SHORT STROKE OVERLAY
-0336 COMBINING LONG STROKE OVERLAY
-0337 COMBINING SHORT SOLIDUS OVERLAY
-0338 COMBINING LONG SOLIDUS OVERLAY
-0339 COMBINING RIGHT HALF RING BELOW
-033a COMBINING INVERTED BRIDGE BELOW
-033b COMBINING SQUARE BELOW
-033c COMBINING SEAGULL BELOW
-033d COMBINING X ABOVE
-033e COMBINING VERTICAL TILDE
-033f COMBINING DOUBLE OVERLINE
-0340 COMBINING GRAVE TONE MARK
-0341 COMBINING ACUTE TONE MARK
-0342 COMBINING GREEK PERISPOMENI
-0343 COMBINING GREEK KORONIS
-0344 COMBINING GREEK DIALYTIKA TONOS
-0345 COMBINING GREEK YPOGEGRAMMENI
-0346 COMBINING BRIDGE ABOVE
-0347 COMBINING EQUALS SIGN BELOW
-0348 COMBINING DOUBLE VERTICAL LINE BELOW
-0349 COMBINING LEFT ANGLE BELOW
-034a COMBINING NOT TILDE ABOVE
-034b COMBINING HOMOTHETIC ABOVE
-034c COMBINING ALMOST EQUAL TO ABOVE
-034d COMBINING LEFT RIGHT ARROW BELOW
-034e COMBINING UPWARDS ARROW BELOW
-0360 COMBINING DOUBLE TILDE
-0361 COMBINING DOUBLE INVERTED BREVE
-0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-0374 GREEK NUMERAL SIGN
-0375 GREEK LOWER NUMERAL SIGN
-037a GREEK YPOGEGRAMMENI
-037e GREEK QUESTION MARK
-0384 GREEK TONOS
-0385 GREEK DIALYTIKA TONOS
-0386 GREEK CAPITAL LETTER ALPHA WITH TONOS
-0387 GREEK ANO TELEIA
-0388 GREEK CAPITAL LETTER EPSILON WITH TONOS
-0389 GREEK CAPITAL LETTER ETA WITH TONOS
-038a GREEK CAPITAL LETTER IOTA WITH TONOS
-038c GREEK CAPITAL LETTER OMICRON WITH TONOS
-038e GREEK CAPITAL LETTER UPSILON WITH TONOS
-038f GREEK CAPITAL LETTER OMEGA WITH TONOS
-0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0391 GREEK CAPITAL LETTER ALPHA
-0392 GREEK CAPITAL LETTER BETA
-0393 GREEK CAPITAL LETTER GAMMA
-0394 GREEK CAPITAL LETTER DELTA
-0395 GREEK CAPITAL LETTER EPSILON
-0396 GREEK CAPITAL LETTER ZETA
-0397 GREEK CAPITAL LETTER ETA
-0398 GREEK CAPITAL LETTER THETA
-0399 GREEK CAPITAL LETTER IOTA
-039a GREEK CAPITAL LETTER KAPPA
-039b GREEK CAPITAL LETTER LAMDA
-039c GREEK CAPITAL LETTER MU
-039d GREEK CAPITAL LETTER NU
-039e GREEK CAPITAL LETTER XI
-039f GREEK CAPITAL LETTER OMICRON
-03a0 GREEK CAPITAL LETTER PI
-03a1 GREEK CAPITAL LETTER RHO
-03a3 GREEK CAPITAL LETTER SIGMA
-03a4 GREEK CAPITAL LETTER TAU
-03a5 GREEK CAPITAL LETTER UPSILON
-03a6 GREEK CAPITAL LETTER PHI
-03a7 GREEK CAPITAL LETTER CHI
-03a8 GREEK CAPITAL LETTER PSI
-03a9 GREEK CAPITAL LETTER OMEGA
-03aa GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-03ab GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-03ac GREEK SMALL LETTER ALPHA WITH TONOS
-03ad GREEK SMALL LETTER EPSILON WITH TONOS
-03ae GREEK SMALL LETTER ETA WITH TONOS
-03af GREEK SMALL LETTER IOTA WITH TONOS
-03b0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-03b1 GREEK SMALL LETTER ALPHA
-03b2 GREEK SMALL LETTER BETA
-03b3 GREEK SMALL LETTER GAMMA
-03b4 GREEK SMALL LETTER DELTA
-03b5 GREEK SMALL LETTER EPSILON
-03b6 GREEK SMALL LETTER ZETA
-03b7 GREEK SMALL LETTER ETA
-03b8 GREEK SMALL LETTER THETA
-03b9 GREEK SMALL LETTER IOTA
-03ba GREEK SMALL LETTER KAPPA
-03bb GREEK SMALL LETTER LAMDA
-03bc GREEK SMALL LETTER MU
-03bd GREEK SMALL LETTER NU
-03be GREEK SMALL LETTER XI
-03bf GREEK SMALL LETTER OMICRON
-03c0 GREEK SMALL LETTER PI
-03c1 GREEK SMALL LETTER RHO
-03c2 GREEK SMALL LETTER FINAL SIGMA
-03c3 GREEK SMALL LETTER SIGMA
-03c4 GREEK SMALL LETTER TAU
-03c5 GREEK SMALL LETTER UPSILON
-03c6 GREEK SMALL LETTER PHI
-03c7 GREEK SMALL LETTER CHI
-03c8 GREEK SMALL LETTER PSI
-03c9 GREEK SMALL LETTER OMEGA
-03ca GREEK SMALL LETTER IOTA WITH DIALYTIKA
-03cb GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-03cc GREEK SMALL LETTER OMICRON WITH TONOS
-03cd GREEK SMALL LETTER UPSILON WITH TONOS
-03ce GREEK SMALL LETTER OMEGA WITH TONOS
-03d0 GREEK BETA SYMBOL
-03d1 GREEK THETA SYMBOL
-03d2 GREEK UPSILON WITH HOOK SYMBOL
-03d3 GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
-03d4 GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
-03d5 GREEK PHI SYMBOL
-03d6 GREEK PI SYMBOL
-03d7 GREEK KAI SYMBOL
-03da GREEK LETTER STIGMA
-03db GREEK SMALL LETTER STIGMA
-03dc GREEK LETTER DIGAMMA
-03dd GREEK SMALL LETTER DIGAMMA
-03de GREEK LETTER KOPPA
-03df GREEK SMALL LETTER KOPPA
-03e0 GREEK LETTER SAMPI
-03e1 GREEK SMALL LETTER SAMPI
-03e2 COPTIC CAPITAL LETTER SHEI
-03e3 COPTIC SMALL LETTER SHEI
-03e4 COPTIC CAPITAL LETTER FEI
-03e5 COPTIC SMALL LETTER FEI
-03e6 COPTIC CAPITAL LETTER KHEI
-03e7 COPTIC SMALL LETTER KHEI
-03e8 COPTIC CAPITAL LETTER HORI
-03e9 COPTIC SMALL LETTER HORI
-03ea COPTIC CAPITAL LETTER GANGIA
-03eb COPTIC SMALL LETTER GANGIA
-03ec COPTIC CAPITAL LETTER SHIMA
-03ed COPTIC SMALL LETTER SHIMA
-03ee COPTIC CAPITAL LETTER DEI
-03ef COPTIC SMALL LETTER DEI
-03f0 GREEK KAPPA SYMBOL
-03f1 GREEK RHO SYMBOL
-03f2 GREEK LUNATE SIGMA SYMBOL
-03f3 GREEK LETTER YOT
-0400 CYRILLIC CAPITAL LETTER IE WITH GRAVE
-0401 CYRILLIC CAPITAL LETTER IO
-0402 CYRILLIC CAPITAL LETTER DJE
-0403 CYRILLIC CAPITAL LETTER GJE
-0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0405 CYRILLIC CAPITAL LETTER DZE
-0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0407 CYRILLIC CAPITAL LETTER YI
-0408 CYRILLIC CAPITAL LETTER JE
-0409 CYRILLIC CAPITAL LETTER LJE
-040a CYRILLIC CAPITAL LETTER NJE
-040b CYRILLIC CAPITAL LETTER TSHE
-040c CYRILLIC CAPITAL LETTER KJE
-040d CYRILLIC CAPITAL LETTER I WITH GRAVE
-040e CYRILLIC CAPITAL LETTER SHORT U
-040f CYRILLIC CAPITAL LETTER DZHE
-0410 CYRILLIC CAPITAL LETTER A
-0411 CYRILLIC CAPITAL LETTER BE
-0412 CYRILLIC CAPITAL LETTER VE
-0413 CYRILLIC CAPITAL LETTER GHE
-0414 CYRILLIC CAPITAL LETTER DE
-0415 CYRILLIC CAPITAL LETTER IE
-0416 CYRILLIC CAPITAL LETTER ZHE
-0417 CYRILLIC CAPITAL LETTER ZE
-0418 CYRILLIC CAPITAL LETTER I
-0419 CYRILLIC CAPITAL LETTER SHORT I
-041a CYRILLIC CAPITAL LETTER KA
-041b CYRILLIC CAPITAL LETTER EL
-041c CYRILLIC CAPITAL LETTER EM
-041d CYRILLIC CAPITAL LETTER EN
-041e CYRILLIC CAPITAL LETTER O
-041f CYRILLIC CAPITAL LETTER PE
-0420 CYRILLIC CAPITAL LETTER ER
-0421 CYRILLIC CAPITAL LETTER ES
-0422 CYRILLIC CAPITAL LETTER TE
-0423 CYRILLIC CAPITAL LETTER U
-0424 CYRILLIC CAPITAL LETTER EF
-0425 CYRILLIC CAPITAL LETTER HA
-0426 CYRILLIC CAPITAL LETTER TSE
-0427 CYRILLIC CAPITAL LETTER CHE
-0428 CYRILLIC CAPITAL LETTER SHA
-0429 CYRILLIC CAPITAL LETTER SHCHA
-042a CYRILLIC CAPITAL LETTER HARD SIGN
-042b CYRILLIC CAPITAL LETTER YERU
-042c CYRILLIC CAPITAL LETTER SOFT SIGN
-042d CYRILLIC CAPITAL LETTER E
-042e CYRILLIC CAPITAL LETTER YU
-042f CYRILLIC CAPITAL LETTER YA
-0430 CYRILLIC SMALL LETTER A
-0431 CYRILLIC SMALL LETTER BE
-0432 CYRILLIC SMALL LETTER VE
-0433 CYRILLIC SMALL LETTER GHE
-0434 CYRILLIC SMALL LETTER DE
-0435 CYRILLIC SMALL LETTER IE
-0436 CYRILLIC SMALL LETTER ZHE
-0437 CYRILLIC SMALL LETTER ZE
-0438 CYRILLIC SMALL LETTER I
-0439 CYRILLIC SMALL LETTER SHORT I
-043a CYRILLIC SMALL LETTER KA
-043b CYRILLIC SMALL LETTER EL
-043c CYRILLIC SMALL LETTER EM
-043d CYRILLIC SMALL LETTER EN
-043e CYRILLIC SMALL LETTER O
-043f CYRILLIC SMALL LETTER PE
-0440 CYRILLIC SMALL LETTER ER
-0441 CYRILLIC SMALL LETTER ES
-0442 CYRILLIC SMALL LETTER TE
-0443 CYRILLIC SMALL LETTER U
-0444 CYRILLIC SMALL LETTER EF
-0445 CYRILLIC SMALL LETTER HA
-0446 CYRILLIC SMALL LETTER TSE
-0447 CYRILLIC SMALL LETTER CHE
-0448 CYRILLIC SMALL LETTER SHA
-0449 CYRILLIC SMALL LETTER SHCHA
-044a CYRILLIC SMALL LETTER HARD SIGN
-044b CYRILLIC SMALL LETTER YERU
-044c CYRILLIC SMALL LETTER SOFT SIGN
-044d CYRILLIC SMALL LETTER E
-044e CYRILLIC SMALL LETTER YU
-044f CYRILLIC SMALL LETTER YA
-0450 CYRILLIC SMALL LETTER IE WITH GRAVE
-0451 CYRILLIC SMALL LETTER IO
-0452 CYRILLIC SMALL LETTER DJE
-0453 CYRILLIC SMALL LETTER GJE
-0454 CYRILLIC SMALL LETTER UKRAINIAN IE
-0455 CYRILLIC SMALL LETTER DZE
-0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0457 CYRILLIC SMALL LETTER YI
-0458 CYRILLIC SMALL LETTER JE
-0459 CYRILLIC SMALL LETTER LJE
-045a CYRILLIC SMALL LETTER NJE
-045b CYRILLIC SMALL LETTER TSHE
-045c CYRILLIC SMALL LETTER KJE
-045d CYRILLIC SMALL LETTER I WITH GRAVE
-045e CYRILLIC SMALL LETTER SHORT U
-045f CYRILLIC SMALL LETTER DZHE
-0460 CYRILLIC CAPITAL LETTER OMEGA
-0461 CYRILLIC SMALL LETTER OMEGA
-0462 CYRILLIC CAPITAL LETTER YAT
-0463 CYRILLIC SMALL LETTER YAT
-0464 CYRILLIC CAPITAL LETTER IOTIFIED E
-0465 CYRILLIC SMALL LETTER IOTIFIED E
-0466 CYRILLIC CAPITAL LETTER LITTLE YUS
-0467 CYRILLIC SMALL LETTER LITTLE YUS
-0468 CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-0469 CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
-046a CYRILLIC CAPITAL LETTER BIG YUS
-046b CYRILLIC SMALL LETTER BIG YUS
-046c CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-046d CYRILLIC SMALL LETTER IOTIFIED BIG YUS
-046e CYRILLIC CAPITAL LETTER KSI
-046f CYRILLIC SMALL LETTER KSI
-0470 CYRILLIC CAPITAL LETTER PSI
-0471 CYRILLIC SMALL LETTER PSI
-0472 CYRILLIC CAPITAL LETTER FITA
-0473 CYRILLIC SMALL LETTER FITA
-0474 CYRILLIC CAPITAL LETTER IZHITSA
-0475 CYRILLIC SMALL LETTER IZHITSA
-0476 CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0477 CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0478 CYRILLIC CAPITAL LETTER UK
-0479 CYRILLIC SMALL LETTER UK
-047a CYRILLIC CAPITAL LETTER ROUND OMEGA
-047b CYRILLIC SMALL LETTER ROUND OMEGA
-047c CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
-047d CYRILLIC SMALL LETTER OMEGA WITH TITLO
-047e CYRILLIC CAPITAL LETTER OT
-047f CYRILLIC SMALL LETTER OT
-0480 CYRILLIC CAPITAL LETTER KOPPA
-0481 CYRILLIC SMALL LETTER KOPPA
-0482 CYRILLIC THOUSANDS SIGN
-0483 COMBINING CYRILLIC TITLO
-0484 COMBINING CYRILLIC PALATALIZATION
-0485 COMBINING CYRILLIC DASIA PNEUMATA
-0486 COMBINING CYRILLIC PSILI PNEUMATA
-0488 COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
-0489 COMBINING CYRILLIC MILLIONS SIGN
-048c CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-048d CYRILLIC SMALL LETTER SEMISOFT SIGN
-048e CYRILLIC CAPITAL LETTER ER WITH TICK
-048f CYRILLIC SMALL LETTER ER WITH TICK
-0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
-0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE
-0493 CYRILLIC SMALL LETTER GHE WITH STROKE
-0494 CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
-0495 CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
-0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER
-0498 CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-0499 CYRILLIC SMALL LETTER ZE WITH DESCENDER
-049a CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-049b CYRILLIC SMALL LETTER KA WITH DESCENDER
-049c CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-049d CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
-049e CYRILLIC CAPITAL LETTER KA WITH STROKE
-049f CYRILLIC SMALL LETTER KA WITH STROKE
-04a0 CYRILLIC CAPITAL LETTER BASHKIR KA
-04a1 CYRILLIC SMALL LETTER BASHKIR KA
-04a2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-04a3 CYRILLIC SMALL LETTER EN WITH DESCENDER
-04a4 CYRILLIC CAPITAL LIGATURE EN GHE
-04a5 CYRILLIC SMALL LIGATURE EN GHE
-04a6 CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
-04a7 CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
-04a8 CYRILLIC CAPITAL LETTER ABKHASIAN HA
-04a9 CYRILLIC SMALL LETTER ABKHASIAN HA
-04aa CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-04ab CYRILLIC SMALL LETTER ES WITH DESCENDER
-04ac CYRILLIC CAPITAL LETTER TE WITH DESCENDER
-04ad CYRILLIC SMALL LETTER TE WITH DESCENDER
-04ae CYRILLIC CAPITAL LETTER STRAIGHT U
-04af CYRILLIC SMALL LETTER STRAIGHT U
-04b0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-04b1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
-04b2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-04b3 CYRILLIC SMALL LETTER HA WITH DESCENDER
-04b4 CYRILLIC CAPITAL LIGATURE TE TSE
-04b5 CYRILLIC SMALL LIGATURE TE TSE
-04b6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-04b7 CYRILLIC SMALL LETTER CHE WITH DESCENDER
-04b8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-04b9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
-04ba CYRILLIC CAPITAL LETTER SHHA
-04bb CYRILLIC SMALL LETTER SHHA
-04bc CYRILLIC CAPITAL LETTER ABKHASIAN CHE
-04bd CYRILLIC SMALL LETTER ABKHASIAN CHE
-04be CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
-04bf CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
-04c0 CYRILLIC LETTER PALOCHKA
-04c1 CYRILLIC CAPITAL LETTER ZHE WITH BREVE
-04c2 CYRILLIC SMALL LETTER ZHE WITH BREVE
-04c3 CYRILLIC CAPITAL LETTER KA WITH HOOK
-04c4 CYRILLIC SMALL LETTER KA WITH HOOK
-04c7 CYRILLIC CAPITAL LETTER EN WITH HOOK
-04c8 CYRILLIC SMALL LETTER EN WITH HOOK
-04cb CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04cc CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04d0 CYRILLIC CAPITAL LETTER A WITH BREVE
-04d1 CYRILLIC SMALL LETTER A WITH BREVE
-04d2 CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04d3 CYRILLIC SMALL LETTER A WITH DIAERESIS
-04d4 CYRILLIC CAPITAL LIGATURE A IE
-04d5 CYRILLIC SMALL LIGATURE A IE
-04d6 CYRILLIC CAPITAL LETTER IE WITH BREVE
-04d7 CYRILLIC SMALL LETTER IE WITH BREVE
-04d8 CYRILLIC CAPITAL LETTER SCHWA
-04d9 CYRILLIC SMALL LETTER SCHWA
-04da CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04db CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04dc CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04dd CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04de CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04df CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04e0 CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-04e1 CYRILLIC SMALL LETTER ABKHASIAN DZE
-04e2 CYRILLIC CAPITAL LETTER I WITH MACRON
-04e3 CYRILLIC SMALL LETTER I WITH MACRON
-04e4 CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-04e5 CYRILLIC SMALL LETTER I WITH DIAERESIS
-04e6 CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04e7 CYRILLIC SMALL LETTER O WITH DIAERESIS
-04e8 CYRILLIC CAPITAL LETTER BARRED O
-04e9 CYRILLIC SMALL LETTER BARRED O
-04ea CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-04eb CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04ec CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-04ed CYRILLIC SMALL LETTER E WITH DIAERESIS
-04ee CYRILLIC CAPITAL LETTER U WITH MACRON
-04ef CYRILLIC SMALL LETTER U WITH MACRON
-04f0 CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04f1 CYRILLIC SMALL LETTER U WITH DIAERESIS
-04f2 CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04f3 CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04f4 CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04f5 CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04f8 CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04f9 CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-0531 ARMENIAN CAPITAL LETTER AYB
-0532 ARMENIAN CAPITAL LETTER BEN
-0533 ARMENIAN CAPITAL LETTER GIM
-0534 ARMENIAN CAPITAL LETTER DA
-0535 ARMENIAN CAPITAL LETTER ECH
-0536 ARMENIAN CAPITAL LETTER ZA
-0537 ARMENIAN CAPITAL LETTER EH
-0538 ARMENIAN CAPITAL LETTER ET
-0539 ARMENIAN CAPITAL LETTER TO
-053a ARMENIAN CAPITAL LETTER ZHE
-053b ARMENIAN CAPITAL LETTER INI
-053c ARMENIAN CAPITAL LETTER LIWN
-053d ARMENIAN CAPITAL LETTER XEH
-053e ARMENIAN CAPITAL LETTER CA
-053f ARMENIAN CAPITAL LETTER KEN
-0540 ARMENIAN CAPITAL LETTER HO
-0541 ARMENIAN CAPITAL LETTER JA
-0542 ARMENIAN CAPITAL LETTER GHAD
-0543 ARMENIAN CAPITAL LETTER CHEH
-0544 ARMENIAN CAPITAL LETTER MEN
-0545 ARMENIAN CAPITAL LETTER YI
-0546 ARMENIAN CAPITAL LETTER NOW
-0547 ARMENIAN CAPITAL LETTER SHA
-0548 ARMENIAN CAPITAL LETTER VO
-0549 ARMENIAN CAPITAL LETTER CHA
-054a ARMENIAN CAPITAL LETTER PEH
-054b ARMENIAN CAPITAL LETTER JHEH
-054c ARMENIAN CAPITAL LETTER RA
-054d ARMENIAN CAPITAL LETTER SEH
-054e ARMENIAN CAPITAL LETTER VEW
-054f ARMENIAN CAPITAL LETTER TIWN
-0550 ARMENIAN CAPITAL LETTER REH
-0551 ARMENIAN CAPITAL LETTER CO
-0552 ARMENIAN CAPITAL LETTER YIWN
-0553 ARMENIAN CAPITAL LETTER PIWR
-0554 ARMENIAN CAPITAL LETTER KEH
-0555 ARMENIAN CAPITAL LETTER OH
-0556 ARMENIAN CAPITAL LETTER FEH
-0559 ARMENIAN MODIFIER LETTER LEFT HALF RING
-055a ARMENIAN APOSTROPHE
-055b ARMENIAN EMPHASIS MARK
-055c ARMENIAN EXCLAMATION MARK
-055d ARMENIAN COMMA
-055e ARMENIAN QUESTION MARK
-055f ARMENIAN ABBREVIATION MARK
-0561 ARMENIAN SMALL LETTER AYB
-0562 ARMENIAN SMALL LETTER BEN
-0563 ARMENIAN SMALL LETTER GIM
-0564 ARMENIAN SMALL LETTER DA
-0565 ARMENIAN SMALL LETTER ECH
-0566 ARMENIAN SMALL LETTER ZA
-0567 ARMENIAN SMALL LETTER EH
-0568 ARMENIAN SMALL LETTER ET
-0569 ARMENIAN SMALL LETTER TO
-056a ARMENIAN SMALL LETTER ZHE
-056b ARMENIAN SMALL LETTER INI
-056c ARMENIAN SMALL LETTER LIWN
-056d ARMENIAN SMALL LETTER XEH
-056e ARMENIAN SMALL LETTER CA
-056f ARMENIAN SMALL LETTER KEN
-0570 ARMENIAN SMALL LETTER HO
-0571 ARMENIAN SMALL LETTER JA
-0572 ARMENIAN SMALL LETTER GHAD
-0573 ARMENIAN SMALL LETTER CHEH
-0574 ARMENIAN SMALL LETTER MEN
-0575 ARMENIAN SMALL LETTER YI
-0576 ARMENIAN SMALL LETTER NOW
-0577 ARMENIAN SMALL LETTER SHA
-0578 ARMENIAN SMALL LETTER VO
-0579 ARMENIAN SMALL LETTER CHA
-057a ARMENIAN SMALL LETTER PEH
-057b ARMENIAN SMALL LETTER JHEH
-057c ARMENIAN SMALL LETTER RA
-057d ARMENIAN SMALL LETTER SEH
-057e ARMENIAN SMALL LETTER VEW
-057f ARMENIAN SMALL LETTER TIWN
-0580 ARMENIAN SMALL LETTER REH
-0581 ARMENIAN SMALL LETTER CO
-0582 ARMENIAN SMALL LETTER YIWN
-0583 ARMENIAN SMALL LETTER PIWR
-0584 ARMENIAN SMALL LETTER KEH
-0585 ARMENIAN SMALL LETTER OH
-0586 ARMENIAN SMALL LETTER FEH
-0587 ARMENIAN SMALL LIGATURE ECH YIWN
-0589 ARMENIAN FULL STOP
-058a ARMENIAN HYPHEN
-0591 HEBREW ACCENT ETNAHTA
-0592 HEBREW ACCENT SEGOL
-0593 HEBREW ACCENT SHALSHELET
-0594 HEBREW ACCENT ZAQEF QATAN
-0595 HEBREW ACCENT ZAQEF GADOL
-0596 HEBREW ACCENT TIPEHA
-0597 HEBREW ACCENT REVIA
-0598 HEBREW ACCENT ZARQA
-0599 HEBREW ACCENT PASHTA
-059a HEBREW ACCENT YETIV
-059b HEBREW ACCENT TEVIR
-059c HEBREW ACCENT GERESH
-059d HEBREW ACCENT GERESH MUQDAM
-059e HEBREW ACCENT GERSHAYIM
-059f HEBREW ACCENT QARNEY PARA
-05a0 HEBREW ACCENT TELISHA GEDOLA
-05a1 HEBREW ACCENT PAZER
-05a3 HEBREW ACCENT MUNAH
-05a4 HEBREW ACCENT MAHAPAKH
-05a5 HEBREW ACCENT MERKHA
-05a6 HEBREW ACCENT MERKHA KEFULA
-05a7 HEBREW ACCENT DARGA
-05a8 HEBREW ACCENT QADMA
-05a9 HEBREW ACCENT TELISHA QETANA
-05aa HEBREW ACCENT YERAH BEN YOMO
-05ab HEBREW ACCENT OLE
-05ac HEBREW ACCENT ILUY
-05ad HEBREW ACCENT DEHI
-05ae HEBREW ACCENT ZINOR
-05af HEBREW MARK MASORA CIRCLE
-05b0 HEBREW POINT SHEVA
-05b1 HEBREW POINT HATAF SEGOL
-05b2 HEBREW POINT HATAF PATAH
-05b3 HEBREW POINT HATAF QAMATS
-05b4 HEBREW POINT HIRIQ
-05b5 HEBREW POINT TSERE
-05b6 HEBREW POINT SEGOL
-05b7 HEBREW POINT PATAH
-05b8 HEBREW POINT QAMATS
-05b9 HEBREW POINT HOLAM
-05bb HEBREW POINT QUBUTS
-05bc HEBREW POINT DAGESH OR MAPIQ
-05bd HEBREW POINT METEG
-05be HEBREW PUNCTUATION MAQAF
-05bf HEBREW POINT RAFE
-05c0 HEBREW PUNCTUATION PASEQ
-05c1 HEBREW POINT SHIN DOT
-05c2 HEBREW POINT SIN DOT
-05c3 HEBREW PUNCTUATION SOF PASUQ
-05c4 HEBREW MARK UPPER DOT
-05d0 HEBREW LETTER ALEF
-05d1 HEBREW LETTER BET
-05d2 HEBREW LETTER GIMEL
-05d3 HEBREW LETTER DALET
-05d4 HEBREW LETTER HE
-05d5 HEBREW LETTER VAV
-05d6 HEBREW LETTER ZAYIN
-05d7 HEBREW LETTER HET
-05d8 HEBREW LETTER TET
-05d9 HEBREW LETTER YOD
-05da HEBREW LETTER FINAL KAF
-05db HEBREW LETTER KAF
-05dc HEBREW LETTER LAMED
-05dd HEBREW LETTER FINAL MEM
-05de HEBREW LETTER MEM
-05df HEBREW LETTER FINAL NUN
-05e0 HEBREW LETTER NUN
-05e1 HEBREW LETTER SAMEKH
-05e2 HEBREW LETTER AYIN
-05e3 HEBREW LETTER FINAL PE
-05e4 HEBREW LETTER PE
-05e5 HEBREW LETTER FINAL TSADI
-05e6 HEBREW LETTER TSADI
-05e7 HEBREW LETTER QOF
-05e8 HEBREW LETTER RESH
-05e9 HEBREW LETTER SHIN
-05ea HEBREW LETTER TAV
-05f0 HEBREW LIGATURE YIDDISH DOUBLE VAV
-05f1 HEBREW LIGATURE YIDDISH VAV YOD
-05f2 HEBREW LIGATURE YIDDISH DOUBLE YOD
-05f3 HEBREW PUNCTUATION GERESH
-05f4 HEBREW PUNCTUATION GERSHAYIM
-060c ARABIC COMMA
-061b ARABIC SEMICOLON
-061f ARABIC QUESTION MARK
-0621 ARABIC LETTER HAMZA
-0622 ARABIC LETTER ALEF WITH MADDA ABOVE
-0623 ARABIC LETTER ALEF WITH HAMZA ABOVE
-0624 ARABIC LETTER WAW WITH HAMZA ABOVE
-0625 ARABIC LETTER ALEF WITH HAMZA BELOW
-0626 ARABIC LETTER YEH WITH HAMZA ABOVE
-0627 ARABIC LETTER ALEF
-0628 ARABIC LETTER BEH
-0629 ARABIC LETTER TEH MARBUTA
-062a ARABIC LETTER TEH
-062b ARABIC LETTER THEH
-062c ARABIC LETTER JEEM
-062d ARABIC LETTER HAH
-062e ARABIC LETTER KHAH
-062f ARABIC LETTER DAL
-0630 ARABIC LETTER THAL
-0631 ARABIC LETTER REH
-0632 ARABIC LETTER ZAIN
-0633 ARABIC LETTER SEEN
-0634 ARABIC LETTER SHEEN
-0635 ARABIC LETTER SAD
-0636 ARABIC LETTER DAD
-0637 ARABIC LETTER TAH
-0638 ARABIC LETTER ZAH
-0639 ARABIC LETTER AIN
-063a ARABIC LETTER GHAIN
-0640 ARABIC TATWEEL
-0641 ARABIC LETTER FEH
-0642 ARABIC LETTER QAF
-0643 ARABIC LETTER KAF
-0644 ARABIC LETTER LAM
-0645 ARABIC LETTER MEEM
-0646 ARABIC LETTER NOON
-0647 ARABIC LETTER HEH
-0648 ARABIC LETTER WAW
-0649 ARABIC LETTER ALEF MAKSURA
-064a ARABIC LETTER YEH
-064b ARABIC FATHATAN
-064c ARABIC DAMMATAN
-064d ARABIC KASRATAN
-064e ARABIC FATHA
-064f ARABIC DAMMA
-0650 ARABIC KASRA
-0651 ARABIC SHADDA
-0652 ARABIC SUKUN
-0653 ARABIC MADDAH ABOVE
-0654 ARABIC HAMZA ABOVE
-0655 ARABIC HAMZA BELOW
-0660 ARABIC-INDIC DIGIT ZERO
-0661 ARABIC-INDIC DIGIT ONE
-0662 ARABIC-INDIC DIGIT TWO
-0663 ARABIC-INDIC DIGIT THREE
-0664 ARABIC-INDIC DIGIT FOUR
-0665 ARABIC-INDIC DIGIT FIVE
-0666 ARABIC-INDIC DIGIT SIX
-0667 ARABIC-INDIC DIGIT SEVEN
-0668 ARABIC-INDIC DIGIT EIGHT
-0669 ARABIC-INDIC DIGIT NINE
-066a ARABIC PERCENT SIGN
-066b ARABIC DECIMAL SEPARATOR
-066c ARABIC THOUSANDS SEPARATOR
-066d ARABIC FIVE POINTED STAR
-0670 ARABIC LETTER SUPERSCRIPT ALEF
-0671 ARABIC LETTER ALEF WASLA
-0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
-0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
-0674 ARABIC LETTER HIGH HAMZA
-0675 ARABIC LETTER HIGH HAMZA ALEF
-0676 ARABIC LETTER HIGH HAMZA WAW
-0677 ARABIC LETTER U WITH HAMZA ABOVE
-0678 ARABIC LETTER HIGH HAMZA YEH
-0679 ARABIC LETTER TTEH
-067a ARABIC LETTER TTEHEH
-067b ARABIC LETTER BEEH
-067c ARABIC LETTER TEH WITH RING
-067d ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
-067e ARABIC LETTER PEH
-067f ARABIC LETTER TEHEH
-0680 ARABIC LETTER BEHEH
-0681 ARABIC LETTER HAH WITH HAMZA ABOVE
-0682 ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
-0683 ARABIC LETTER NYEH
-0684 ARABIC LETTER DYEH
-0685 ARABIC LETTER HAH WITH THREE DOTS ABOVE
-0686 ARABIC LETTER TCHEH
-0687 ARABIC LETTER TCHEHEH
-0688 ARABIC LETTER DDAL
-0689 ARABIC LETTER DAL WITH RING
-068a ARABIC LETTER DAL WITH DOT BELOW
-068b ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
-068c ARABIC LETTER DAHAL
-068d ARABIC LETTER DDAHAL
-068e ARABIC LETTER DUL
-068f ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
-0690 ARABIC LETTER DAL WITH FOUR DOTS ABOVE
-0691 ARABIC LETTER RREH
-0692 ARABIC LETTER REH WITH SMALL V
-0693 ARABIC LETTER REH WITH RING
-0694 ARABIC LETTER REH WITH DOT BELOW
-0695 ARABIC LETTER REH WITH SMALL V BELOW
-0696 ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
-0697 ARABIC LETTER REH WITH TWO DOTS ABOVE
-0698 ARABIC LETTER JEH
-0699 ARABIC LETTER REH WITH FOUR DOTS ABOVE
-069a ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
-069b ARABIC LETTER SEEN WITH THREE DOTS BELOW
-069c ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
-069d ARABIC LETTER SAD WITH TWO DOTS BELOW
-069e ARABIC LETTER SAD WITH THREE DOTS ABOVE
-069f ARABIC LETTER TAH WITH THREE DOTS ABOVE
-06a0 ARABIC LETTER AIN WITH THREE DOTS ABOVE
-06a1 ARABIC LETTER DOTLESS FEH
-06a2 ARABIC LETTER FEH WITH DOT MOVED BELOW
-06a3 ARABIC LETTER FEH WITH DOT BELOW
-06a4 ARABIC LETTER VEH
-06a5 ARABIC LETTER FEH WITH THREE DOTS BELOW
-06a6 ARABIC LETTER PEHEH
-06a7 ARABIC LETTER QAF WITH DOT ABOVE
-06a8 ARABIC LETTER QAF WITH THREE DOTS ABOVE
-06a9 ARABIC LETTER KEHEH
-06aa ARABIC LETTER SWASH KAF
-06ab ARABIC LETTER KAF WITH RING
-06ac ARABIC LETTER KAF WITH DOT ABOVE
-06ad ARABIC LETTER NG
-06ae ARABIC LETTER KAF WITH THREE DOTS BELOW
-06af ARABIC LETTER GAF
-06b0 ARABIC LETTER GAF WITH RING
-06b1 ARABIC LETTER NGOEH
-06b2 ARABIC LETTER GAF WITH TWO DOTS BELOW
-06b3 ARABIC LETTER GUEH
-06b4 ARABIC LETTER GAF WITH THREE DOTS ABOVE
-06b5 ARABIC LETTER LAM WITH SMALL V
-06b6 ARABIC LETTER LAM WITH DOT ABOVE
-06b7 ARABIC LETTER LAM WITH THREE DOTS ABOVE
-06b8 ARABIC LETTER LAM WITH THREE DOTS BELOW
-06b9 ARABIC LETTER NOON WITH DOT BELOW
-06ba ARABIC LETTER NOON GHUNNA
-06bb ARABIC LETTER RNOON
-06bc ARABIC LETTER NOON WITH RING
-06bd ARABIC LETTER NOON WITH THREE DOTS ABOVE
-06be ARABIC LETTER HEH DOACHASHMEE
-06bf ARABIC LETTER TCHEH WITH DOT ABOVE
-06c0 ARABIC LETTER HEH WITH YEH ABOVE
-06c1 ARABIC LETTER HEH GOAL
-06c2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
-06c3 ARABIC LETTER TEH MARBUTA GOAL
-06c4 ARABIC LETTER WAW WITH RING
-06c5 ARABIC LETTER KIRGHIZ OE
-06c6 ARABIC LETTER OE
-06c7 ARABIC LETTER U
-06c8 ARABIC LETTER YU
-06c9 ARABIC LETTER KIRGHIZ YU
-06ca ARABIC LETTER WAW WITH TWO DOTS ABOVE
-06cb ARABIC LETTER VE
-06cc ARABIC LETTER FARSI YEH
-06cd ARABIC LETTER YEH WITH TAIL
-06ce ARABIC LETTER YEH WITH SMALL V
-06cf ARABIC LETTER WAW WITH DOT ABOVE
-06d0 ARABIC LETTER E
-06d1 ARABIC LETTER YEH WITH THREE DOTS BELOW
-06d2 ARABIC LETTER YEH BARREE
-06d3 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
-06d4 ARABIC FULL STOP
-06d5 ARABIC LETTER AE
-06d6 ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
-06d7 ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
-06d8 ARABIC SMALL HIGH MEEM INITIAL FORM
-06d9 ARABIC SMALL HIGH LAM ALEF
-06da ARABIC SMALL HIGH JEEM
-06db ARABIC SMALL HIGH THREE DOTS
-06dc ARABIC SMALL HIGH SEEN
-06dd ARABIC END OF AYAH
-06de ARABIC START OF RUB EL HIZB
-06df ARABIC SMALL HIGH ROUNDED ZERO
-06e0 ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
-06e1 ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
-06e2 ARABIC SMALL HIGH MEEM ISOLATED FORM
-06e3 ARABIC SMALL LOW SEEN
-06e4 ARABIC SMALL HIGH MADDA
-06e5 ARABIC SMALL WAW
-06e6 ARABIC SMALL YEH
-06e7 ARABIC SMALL HIGH YEH
-06e8 ARABIC SMALL HIGH NOON
-06e9 ARABIC PLACE OF SAJDAH
-06ea ARABIC EMPTY CENTRE LOW STOP
-06eb ARABIC EMPTY CENTRE HIGH STOP
-06ec ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
-06ed ARABIC SMALL LOW MEEM
-06f0 EXTENDED ARABIC-INDIC DIGIT ZERO
-06f1 EXTENDED ARABIC-INDIC DIGIT ONE
-06f2 EXTENDED ARABIC-INDIC DIGIT TWO
-06f3 EXTENDED ARABIC-INDIC DIGIT THREE
-06f4 EXTENDED ARABIC-INDIC DIGIT FOUR
-06f5 EXTENDED ARABIC-INDIC DIGIT FIVE
-06f6 EXTENDED ARABIC-INDIC DIGIT SIX
-06f7 EXTENDED ARABIC-INDIC DIGIT SEVEN
-06f8 EXTENDED ARABIC-INDIC DIGIT EIGHT
-06f9 EXTENDED ARABIC-INDIC DIGIT NINE
-06fa ARABIC LETTER SHEEN WITH DOT BELOW
-06fb ARABIC LETTER DAD WITH DOT BELOW
-06fc ARABIC LETTER GHAIN WITH DOT BELOW
-06fd ARABIC SIGN SINDHI AMPERSAND
-06fe ARABIC SIGN SINDHI POSTPOSITION MEN
-0700 SYRIAC END OF PARAGRAPH
-0701 SYRIAC SUPRALINEAR FULL STOP
-0702 SYRIAC SUBLINEAR FULL STOP
-0703 SYRIAC SUPRALINEAR COLON
-0704 SYRIAC SUBLINEAR COLON
-0705 SYRIAC HORIZONTAL COLON
-0706 SYRIAC COLON SKEWED LEFT
-0707 SYRIAC COLON SKEWED RIGHT
-0708 SYRIAC SUPRALINEAR COLON SKEWED LEFT
-0709 SYRIAC SUBLINEAR COLON SKEWED RIGHT
-070a SYRIAC CONTRACTION
-070b SYRIAC HARKLEAN OBELUS
-070c SYRIAC HARKLEAN METOBELUS
-070d SYRIAC HARKLEAN ASTERISCUS
-070f SYRIAC ABBREVIATION MARK
-0710 SYRIAC LETTER ALAPH
-0711 SYRIAC LETTER SUPERSCRIPT ALAPH
-0712 SYRIAC LETTER BETH
-0713 SYRIAC LETTER GAMAL
-0714 SYRIAC LETTER GAMAL GARSHUNI
-0715 SYRIAC LETTER DALATH
-0716 SYRIAC LETTER DOTLESS DALATH RISH
-0717 SYRIAC LETTER HE
-0718 SYRIAC LETTER WAW
-0719 SYRIAC LETTER ZAIN
-071a SYRIAC LETTER HETH
-071b SYRIAC LETTER TETH
-071c SYRIAC LETTER TETH GARSHUNI
-071d SYRIAC LETTER YUDH
-071e SYRIAC LETTER YUDH HE
-071f SYRIAC LETTER KAPH
-0720 SYRIAC LETTER LAMADH
-0721 SYRIAC LETTER MIM
-0722 SYRIAC LETTER NUN
-0723 SYRIAC LETTER SEMKATH
-0724 SYRIAC LETTER FINAL SEMKATH
-0725 SYRIAC LETTER E
-0726 SYRIAC LETTER PE
-0727 SYRIAC LETTER REVERSED PE
-0728 SYRIAC LETTER SADHE
-0729 SYRIAC LETTER QAPH
-072a SYRIAC LETTER RISH
-072b SYRIAC LETTER SHIN
-072c SYRIAC LETTER TAW
-0730 SYRIAC PTHAHA ABOVE
-0731 SYRIAC PTHAHA BELOW
-0732 SYRIAC PTHAHA DOTTED
-0733 SYRIAC ZQAPHA ABOVE
-0734 SYRIAC ZQAPHA BELOW
-0735 SYRIAC ZQAPHA DOTTED
-0736 SYRIAC RBASA ABOVE
-0737 SYRIAC RBASA BELOW
-0738 SYRIAC DOTTED ZLAMA HORIZONTAL
-0739 SYRIAC DOTTED ZLAMA ANGULAR
-073a SYRIAC HBASA ABOVE
-073b SYRIAC HBASA BELOW
-073c SYRIAC HBASA-ESASA DOTTED
-073d SYRIAC ESASA ABOVE
-073e SYRIAC ESASA BELOW
-073f SYRIAC RWAHA
-0740 SYRIAC FEMININE DOT
-0741 SYRIAC QUSHSHAYA
-0742 SYRIAC RUKKAKHA
-0743 SYRIAC TWO VERTICAL DOTS ABOVE
-0744 SYRIAC TWO VERTICAL DOTS BELOW
-0745 SYRIAC THREE DOTS ABOVE
-0746 SYRIAC THREE DOTS BELOW
-0747 SYRIAC OBLIQUE LINE ABOVE
-0748 SYRIAC OBLIQUE LINE BELOW
-0749 SYRIAC MUSIC
-074a SYRIAC BARREKH
-0780 THAANA LETTER HAA
-0781 THAANA LETTER SHAVIYANI
-0782 THAANA LETTER NOONU
-0783 THAANA LETTER RAA
-0784 THAANA LETTER BAA
-0785 THAANA LETTER LHAVIYANI
-0786 THAANA LETTER KAAFU
-0787 THAANA LETTER ALIFU
-0788 THAANA LETTER VAAVU
-0789 THAANA LETTER MEEMU
-078a THAANA LETTER FAAFU
-078b THAANA LETTER DHAALU
-078c THAANA LETTER THAA
-078d THAANA LETTER LAAMU
-078e THAANA LETTER GAAFU
-078f THAANA LETTER GNAVIYANI
-0790 THAANA LETTER SEENU
-0791 THAANA LETTER DAVIYANI
-0792 THAANA LETTER ZAVIYANI
-0793 THAANA LETTER TAVIYANI
-0794 THAANA LETTER YAA
-0795 THAANA LETTER PAVIYANI
-0796 THAANA LETTER JAVIYANI
-0797 THAANA LETTER CHAVIYANI
-0798 THAANA LETTER TTAA
-0799 THAANA LETTER HHAA
-079a THAANA LETTER KHAA
-079b THAANA LETTER THAALU
-079c THAANA LETTER ZAA
-079d THAANA LETTER SHEENU
-079e THAANA LETTER SAADHU
-079f THAANA LETTER DAADHU
-07a0 THAANA LETTER TO
-07a1 THAANA LETTER ZO
-07a2 THAANA LETTER AINU
-07a3 THAANA LETTER GHAINU
-07a4 THAANA LETTER QAAFU
-07a5 THAANA LETTER WAAVU
-07a6 THAANA ABAFILI
-07a7 THAANA AABAAFILI
-07a8 THAANA IBIFILI
-07a9 THAANA EEBEEFILI
-07aa THAANA UBUFILI
-07ab THAANA OOBOOFILI
-07ac THAANA EBEFILI
-07ad THAANA EYBEYFILI
-07ae THAANA OBOFILI
-07af THAANA OABOAFILI
-07b0 THAANA SUKUN
-0901 DEVANAGARI SIGN CANDRABINDU
-0902 DEVANAGARI SIGN ANUSVARA
-0903 DEVANAGARI SIGN VISARGA
-0905 DEVANAGARI LETTER A
-0906 DEVANAGARI LETTER AA
-0907 DEVANAGARI LETTER I
-0908 DEVANAGARI LETTER II
-0909 DEVANAGARI LETTER U
-090a DEVANAGARI LETTER UU
-090b DEVANAGARI LETTER VOCALIC R
-090c DEVANAGARI LETTER VOCALIC L
-090d DEVANAGARI LETTER CANDRA E
-090e DEVANAGARI LETTER SHORT E
-090f DEVANAGARI LETTER E
-0910 DEVANAGARI LETTER AI
-0911 DEVANAGARI LETTER CANDRA O
-0912 DEVANAGARI LETTER SHORT O
-0913 DEVANAGARI LETTER O
-0914 DEVANAGARI LETTER AU
-0915 DEVANAGARI LETTER KA
-0916 DEVANAGARI LETTER KHA
-0917 DEVANAGARI LETTER GA
-0918 DEVANAGARI LETTER GHA
-0919 DEVANAGARI LETTER NGA
-091a DEVANAGARI LETTER CA
-091b DEVANAGARI LETTER CHA
-091c DEVANAGARI LETTER JA
-091d DEVANAGARI LETTER JHA
-091e DEVANAGARI LETTER NYA
-091f DEVANAGARI LETTER TTA
-0920 DEVANAGARI LETTER TTHA
-0921 DEVANAGARI LETTER DDA
-0922 DEVANAGARI LETTER DDHA
-0923 DEVANAGARI LETTER NNA
-0924 DEVANAGARI LETTER TA
-0925 DEVANAGARI LETTER THA
-0926 DEVANAGARI LETTER DA
-0927 DEVANAGARI LETTER DHA
-0928 DEVANAGARI LETTER NA
-0929 DEVANAGARI LETTER NNNA
-092a DEVANAGARI LETTER PA
-092b DEVANAGARI LETTER PHA
-092c DEVANAGARI LETTER BA
-092d DEVANAGARI LETTER BHA
-092e DEVANAGARI LETTER MA
-092f DEVANAGARI LETTER YA
-0930 DEVANAGARI LETTER RA
-0931 DEVANAGARI LETTER RRA
-0932 DEVANAGARI LETTER LA
-0933 DEVANAGARI LETTER LLA
-0934 DEVANAGARI LETTER LLLA
-0935 DEVANAGARI LETTER VA
-0936 DEVANAGARI LETTER SHA
-0937 DEVANAGARI LETTER SSA
-0938 DEVANAGARI LETTER SA
-0939 DEVANAGARI LETTER HA
-093c DEVANAGARI SIGN NUKTA
-093d DEVANAGARI SIGN AVAGRAHA
-093e DEVANAGARI VOWEL SIGN AA
-093f DEVANAGARI VOWEL SIGN I
-0940 DEVANAGARI VOWEL SIGN II
-0941 DEVANAGARI VOWEL SIGN U
-0942 DEVANAGARI VOWEL SIGN UU
-0943 DEVANAGARI VOWEL SIGN VOCALIC R
-0944 DEVANAGARI VOWEL SIGN VOCALIC RR
-0945 DEVANAGARI VOWEL SIGN CANDRA E
-0946 DEVANAGARI VOWEL SIGN SHORT E
-0947 DEVANAGARI VOWEL SIGN E
-0948 DEVANAGARI VOWEL SIGN AI
-0949 DEVANAGARI VOWEL SIGN CANDRA O
-094a DEVANAGARI VOWEL SIGN SHORT O
-094b DEVANAGARI VOWEL SIGN O
-094c DEVANAGARI VOWEL SIGN AU
-094d DEVANAGARI SIGN VIRAMA
-0950 DEVANAGARI OM
-0951 DEVANAGARI STRESS SIGN UDATTA
-0952 DEVANAGARI STRESS SIGN ANUDATTA
-0953 DEVANAGARI GRAVE ACCENT
-0954 DEVANAGARI ACUTE ACCENT
-0958 DEVANAGARI LETTER QA
-0959 DEVANAGARI LETTER KHHA
-095a DEVANAGARI LETTER GHHA
-095b DEVANAGARI LETTER ZA
-095c DEVANAGARI LETTER DDDHA
-095d DEVANAGARI LETTER RHA
-095e DEVANAGARI LETTER FA
-095f DEVANAGARI LETTER YYA
-0960 DEVANAGARI LETTER VOCALIC RR
-0961 DEVANAGARI LETTER VOCALIC LL
-0962 DEVANAGARI VOWEL SIGN VOCALIC L
-0963 DEVANAGARI VOWEL SIGN VOCALIC LL
-0964 DEVANAGARI DANDA
-0965 DEVANAGARI DOUBLE DANDA
-0966 DEVANAGARI DIGIT ZERO
-0967 DEVANAGARI DIGIT ONE
-0968 DEVANAGARI DIGIT TWO
-0969 DEVANAGARI DIGIT THREE
-096a DEVANAGARI DIGIT FOUR
-096b DEVANAGARI DIGIT FIVE
-096c DEVANAGARI DIGIT SIX
-096d DEVANAGARI DIGIT SEVEN
-096e DEVANAGARI DIGIT EIGHT
-096f DEVANAGARI DIGIT NINE
-0970 DEVANAGARI ABBREVIATION SIGN
-0981 BENGALI SIGN CANDRABINDU
-0982 BENGALI SIGN ANUSVARA
-0983 BENGALI SIGN VISARGA
-0985 BENGALI LETTER A
-0986 BENGALI LETTER AA
-0987 BENGALI LETTER I
-0988 BENGALI LETTER II
-0989 BENGALI LETTER U
-098a BENGALI LETTER UU
-098b BENGALI LETTER VOCALIC R
-098c BENGALI LETTER VOCALIC L
-098f BENGALI LETTER E
-0990 BENGALI LETTER AI
-0993 BENGALI LETTER O
-0994 BENGALI LETTER AU
-0995 BENGALI LETTER KA
-0996 BENGALI LETTER KHA
-0997 BENGALI LETTER GA
-0998 BENGALI LETTER GHA
-0999 BENGALI LETTER NGA
-099a BENGALI LETTER CA
-099b BENGALI LETTER CHA
-099c BENGALI LETTER JA
-099d BENGALI LETTER JHA
-099e BENGALI LETTER NYA
-099f BENGALI LETTER TTA
-09a0 BENGALI LETTER TTHA
-09a1 BENGALI LETTER DDA
-09a2 BENGALI LETTER DDHA
-09a3 BENGALI LETTER NNA
-09a4 BENGALI LETTER TA
-09a5 BENGALI LETTER THA
-09a6 BENGALI LETTER DA
-09a7 BENGALI LETTER DHA
-09a8 BENGALI LETTER NA
-09aa BENGALI LETTER PA
-09ab BENGALI LETTER PHA
-09ac BENGALI LETTER BA
-09ad BENGALI LETTER BHA
-09ae BENGALI LETTER MA
-09af BENGALI LETTER YA
-09b0 BENGALI LETTER RA
-09b2 BENGALI LETTER LA
-09b6 BENGALI LETTER SHA
-09b7 BENGALI LETTER SSA
-09b8 BENGALI LETTER SA
-09b9 BENGALI LETTER HA
-09bc BENGALI SIGN NUKTA
-09be BENGALI VOWEL SIGN AA
-09bf BENGALI VOWEL SIGN I
-09c0 BENGALI VOWEL SIGN II
-09c1 BENGALI VOWEL SIGN U
-09c2 BENGALI VOWEL SIGN UU
-09c3 BENGALI VOWEL SIGN VOCALIC R
-09c4 BENGALI VOWEL SIGN VOCALIC RR
-09c7 BENGALI VOWEL SIGN E
-09c8 BENGALI VOWEL SIGN AI
-09cb BENGALI VOWEL SIGN O
-09cc BENGALI VOWEL SIGN AU
-09cd BENGALI SIGN VIRAMA
-09d7 BENGALI AU LENGTH MARK
-09dc BENGALI LETTER RRA
-09dd BENGALI LETTER RHA
-09df BENGALI LETTER YYA
-09e0 BENGALI LETTER VOCALIC RR
-09e1 BENGALI LETTER VOCALIC LL
-09e2 BENGALI VOWEL SIGN VOCALIC L
-09e3 BENGALI VOWEL SIGN VOCALIC LL
-09e6 BENGALI DIGIT ZERO
-09e7 BENGALI DIGIT ONE
-09e8 BENGALI DIGIT TWO
-09e9 BENGALI DIGIT THREE
-09ea BENGALI DIGIT FOUR
-09eb BENGALI DIGIT FIVE
-09ec BENGALI DIGIT SIX
-09ed BENGALI DIGIT SEVEN
-09ee BENGALI DIGIT EIGHT
-09ef BENGALI DIGIT NINE
-09f0 BENGALI LETTER RA WITH MIDDLE DIAGONAL
-09f1 BENGALI LETTER RA WITH LOWER DIAGONAL
-09f2 BENGALI RUPEE MARK
-09f3 BENGALI RUPEE SIGN
-09f4 BENGALI CURRENCY NUMERATOR ONE
-09f5 BENGALI CURRENCY NUMERATOR TWO
-09f6 BENGALI CURRENCY NUMERATOR THREE
-09f7 BENGALI CURRENCY NUMERATOR FOUR
-09f8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
-09f9 BENGALI CURRENCY DENOMINATOR SIXTEEN
-09fa BENGALI ISSHAR
-0a02 GURMUKHI SIGN BINDI
-0a05 GURMUKHI LETTER A
-0a06 GURMUKHI LETTER AA
-0a07 GURMUKHI LETTER I
-0a08 GURMUKHI LETTER II
-0a09 GURMUKHI LETTER U
-0a0a GURMUKHI LETTER UU
-0a0f GURMUKHI LETTER EE
-0a10 GURMUKHI LETTER AI
-0a13 GURMUKHI LETTER OO
-0a14 GURMUKHI LETTER AU
-0a15 GURMUKHI LETTER KA
-0a16 GURMUKHI LETTER KHA
-0a17 GURMUKHI LETTER GA
-0a18 GURMUKHI LETTER GHA
-0a19 GURMUKHI LETTER NGA
-0a1a GURMUKHI LETTER CA
-0a1b GURMUKHI LETTER CHA
-0a1c GURMUKHI LETTER JA
-0a1d GURMUKHI LETTER JHA
-0a1e GURMUKHI LETTER NYA
-0a1f GURMUKHI LETTER TTA
-0a20 GURMUKHI LETTER TTHA
-0a21 GURMUKHI LETTER DDA
-0a22 GURMUKHI LETTER DDHA
-0a23 GURMUKHI LETTER NNA
-0a24 GURMUKHI LETTER TA
-0a25 GURMUKHI LETTER THA
-0a26 GURMUKHI LETTER DA
-0a27 GURMUKHI LETTER DHA
-0a28 GURMUKHI LETTER NA
-0a2a GURMUKHI LETTER PA
-0a2b GURMUKHI LETTER PHA
-0a2c GURMUKHI LETTER BA
-0a2d GURMUKHI LETTER BHA
-0a2e GURMUKHI LETTER MA
-0a2f GURMUKHI LETTER YA
-0a30 GURMUKHI LETTER RA
-0a32 GURMUKHI LETTER LA
-0a33 GURMUKHI LETTER LLA
-0a35 GURMUKHI LETTER VA
-0a36 GURMUKHI LETTER SHA
-0a38 GURMUKHI LETTER SA
-0a39 GURMUKHI LETTER HA
-0a3c GURMUKHI SIGN NUKTA
-0a3e GURMUKHI VOWEL SIGN AA
-0a3f GURMUKHI VOWEL SIGN I
-0a40 GURMUKHI VOWEL SIGN II
-0a41 GURMUKHI VOWEL SIGN U
-0a42 GURMUKHI VOWEL SIGN UU
-0a47 GURMUKHI VOWEL SIGN EE
-0a48 GURMUKHI VOWEL SIGN AI
-0a4b GURMUKHI VOWEL SIGN OO
-0a4c GURMUKHI VOWEL SIGN AU
-0a4d GURMUKHI SIGN VIRAMA
-0a59 GURMUKHI LETTER KHHA
-0a5a GURMUKHI LETTER GHHA
-0a5b GURMUKHI LETTER ZA
-0a5c GURMUKHI LETTER RRA
-0a5e GURMUKHI LETTER FA
-0a66 GURMUKHI DIGIT ZERO
-0a67 GURMUKHI DIGIT ONE
-0a68 GURMUKHI DIGIT TWO
-0a69 GURMUKHI DIGIT THREE
-0a6a GURMUKHI DIGIT FOUR
-0a6b GURMUKHI DIGIT FIVE
-0a6c GURMUKHI DIGIT SIX
-0a6d GURMUKHI DIGIT SEVEN
-0a6e GURMUKHI DIGIT EIGHT
-0a6f GURMUKHI DIGIT NINE
-0a70 GURMUKHI TIPPI
-0a71 GURMUKHI ADDAK
-0a72 GURMUKHI IRI
-0a73 GURMUKHI URA
-0a74 GURMUKHI EK ONKAR
-0a81 GUJARATI SIGN CANDRABINDU
-0a82 GUJARATI SIGN ANUSVARA
-0a83 GUJARATI SIGN VISARGA
-0a85 GUJARATI LETTER A
-0a86 GUJARATI LETTER AA
-0a87 GUJARATI LETTER I
-0a88 GUJARATI LETTER II
-0a89 GUJARATI LETTER U
-0a8a GUJARATI LETTER UU
-0a8b GUJARATI LETTER VOCALIC R
-0a8d GUJARATI VOWEL CANDRA E
-0a8f GUJARATI LETTER E
-0a90 GUJARATI LETTER AI
-0a91 GUJARATI VOWEL CANDRA O
-0a93 GUJARATI LETTER O
-0a94 GUJARATI LETTER AU
-0a95 GUJARATI LETTER KA
-0a96 GUJARATI LETTER KHA
-0a97 GUJARATI LETTER GA
-0a98 GUJARATI LETTER GHA
-0a99 GUJARATI LETTER NGA
-0a9a GUJARATI LETTER CA
-0a9b GUJARATI LETTER CHA
-0a9c GUJARATI LETTER JA
-0a9d GUJARATI LETTER JHA
-0a9e GUJARATI LETTER NYA
-0a9f GUJARATI LETTER TTA
-0aa0 GUJARATI LETTER TTHA
-0aa1 GUJARATI LETTER DDA
-0aa2 GUJARATI LETTER DDHA
-0aa3 GUJARATI LETTER NNA
-0aa4 GUJARATI LETTER TA
-0aa5 GUJARATI LETTER THA
-0aa6 GUJARATI LETTER DA
-0aa7 GUJARATI LETTER DHA
-0aa8 GUJARATI LETTER NA
-0aaa GUJARATI LETTER PA
-0aab GUJARATI LETTER PHA
-0aac GUJARATI LETTER BA
-0aad GUJARATI LETTER BHA
-0aae GUJARATI LETTER MA
-0aaf GUJARATI LETTER YA
-0ab0 GUJARATI LETTER RA
-0ab2 GUJARATI LETTER LA
-0ab3 GUJARATI LETTER LLA
-0ab5 GUJARATI LETTER VA
-0ab6 GUJARATI LETTER SHA
-0ab7 GUJARATI LETTER SSA
-0ab8 GUJARATI LETTER SA
-0ab9 GUJARATI LETTER HA
-0abc GUJARATI SIGN NUKTA
-0abd GUJARATI SIGN AVAGRAHA
-0abe GUJARATI VOWEL SIGN AA
-0abf GUJARATI VOWEL SIGN I
-0ac0 GUJARATI VOWEL SIGN II
-0ac1 GUJARATI VOWEL SIGN U
-0ac2 GUJARATI VOWEL SIGN UU
-0ac3 GUJARATI VOWEL SIGN VOCALIC R
-0ac4 GUJARATI VOWEL SIGN VOCALIC RR
-0ac5 GUJARATI VOWEL SIGN CANDRA E
-0ac7 GUJARATI VOWEL SIGN E
-0ac8 GUJARATI VOWEL SIGN AI
-0ac9 GUJARATI VOWEL SIGN CANDRA O
-0acb GUJARATI VOWEL SIGN O
-0acc GUJARATI VOWEL SIGN AU
-0acd GUJARATI SIGN VIRAMA
-0ad0 GUJARATI OM
-0ae0 GUJARATI LETTER VOCALIC RR
-0ae6 GUJARATI DIGIT ZERO
-0ae7 GUJARATI DIGIT ONE
-0ae8 GUJARATI DIGIT TWO
-0ae9 GUJARATI DIGIT THREE
-0aea GUJARATI DIGIT FOUR
-0aeb GUJARATI DIGIT FIVE
-0aec GUJARATI DIGIT SIX
-0aed GUJARATI DIGIT SEVEN
-0aee GUJARATI DIGIT EIGHT
-0aef GUJARATI DIGIT NINE
-0b01 ORIYA SIGN CANDRABINDU
-0b02 ORIYA SIGN ANUSVARA
-0b03 ORIYA SIGN VISARGA
-0b05 ORIYA LETTER A
-0b06 ORIYA LETTER AA
-0b07 ORIYA LETTER I
-0b08 ORIYA LETTER II
-0b09 ORIYA LETTER U
-0b0a ORIYA LETTER UU
-0b0b ORIYA LETTER VOCALIC R
-0b0c ORIYA LETTER VOCALIC L
-0b0f ORIYA LETTER E
-0b10 ORIYA LETTER AI
-0b13 ORIYA LETTER O
-0b14 ORIYA LETTER AU
-0b15 ORIYA LETTER KA
-0b16 ORIYA LETTER KHA
-0b17 ORIYA LETTER GA
-0b18 ORIYA LETTER GHA
-0b19 ORIYA LETTER NGA
-0b1a ORIYA LETTER CA
-0b1b ORIYA LETTER CHA
-0b1c ORIYA LETTER JA
-0b1d ORIYA LETTER JHA
-0b1e ORIYA LETTER NYA
-0b1f ORIYA LETTER TTA
-0b20 ORIYA LETTER TTHA
-0b21 ORIYA LETTER DDA
-0b22 ORIYA LETTER DDHA
-0b23 ORIYA LETTER NNA
-0b24 ORIYA LETTER TA
-0b25 ORIYA LETTER THA
-0b26 ORIYA LETTER DA
-0b27 ORIYA LETTER DHA
-0b28 ORIYA LETTER NA
-0b2a ORIYA LETTER PA
-0b2b ORIYA LETTER PHA
-0b2c ORIYA LETTER BA
-0b2d ORIYA LETTER BHA
-0b2e ORIYA LETTER MA
-0b2f ORIYA LETTER YA
-0b30 ORIYA LETTER RA
-0b32 ORIYA LETTER LA
-0b33 ORIYA LETTER LLA
-0b36 ORIYA LETTER SHA
-0b37 ORIYA LETTER SSA
-0b38 ORIYA LETTER SA
-0b39 ORIYA LETTER HA
-0b3c ORIYA SIGN NUKTA
-0b3d ORIYA SIGN AVAGRAHA
-0b3e ORIYA VOWEL SIGN AA
-0b3f ORIYA VOWEL SIGN I
-0b40 ORIYA VOWEL SIGN II
-0b41 ORIYA VOWEL SIGN U
-0b42 ORIYA VOWEL SIGN UU
-0b43 ORIYA VOWEL SIGN VOCALIC R
-0b47 ORIYA VOWEL SIGN E
-0b48 ORIYA VOWEL SIGN AI
-0b4b ORIYA VOWEL SIGN O
-0b4c ORIYA VOWEL SIGN AU
-0b4d ORIYA SIGN VIRAMA
-0b56 ORIYA AI LENGTH MARK
-0b57 ORIYA AU LENGTH MARK
-0b5c ORIYA LETTER RRA
-0b5d ORIYA LETTER RHA
-0b5f ORIYA LETTER YYA
-0b60 ORIYA LETTER VOCALIC RR
-0b61 ORIYA LETTER VOCALIC LL
-0b66 ORIYA DIGIT ZERO
-0b67 ORIYA DIGIT ONE
-0b68 ORIYA DIGIT TWO
-0b69 ORIYA DIGIT THREE
-0b6a ORIYA DIGIT FOUR
-0b6b ORIYA DIGIT FIVE
-0b6c ORIYA DIGIT SIX
-0b6d ORIYA DIGIT SEVEN
-0b6e ORIYA DIGIT EIGHT
-0b6f ORIYA DIGIT NINE
-0b70 ORIYA ISSHAR
-0b82 TAMIL SIGN ANUSVARA
-0b83 TAMIL SIGN VISARGA
-0b85 TAMIL LETTER A
-0b86 TAMIL LETTER AA
-0b87 TAMIL LETTER I
-0b88 TAMIL LETTER II
-0b89 TAMIL LETTER U
-0b8a TAMIL LETTER UU
-0b8e TAMIL LETTER E
-0b8f TAMIL LETTER EE
-0b90 TAMIL LETTER AI
-0b92 TAMIL LETTER O
-0b93 TAMIL LETTER OO
-0b94 TAMIL LETTER AU
-0b95 TAMIL LETTER KA
-0b99 TAMIL LETTER NGA
-0b9a TAMIL LETTER CA
-0b9c TAMIL LETTER JA
-0b9e TAMIL LETTER NYA
-0b9f TAMIL LETTER TTA
-0ba3 TAMIL LETTER NNA
-0ba4 TAMIL LETTER TA
-0ba8 TAMIL LETTER NA
-0ba9 TAMIL LETTER NNNA
-0baa TAMIL LETTER PA
-0bae TAMIL LETTER MA
-0baf TAMIL LETTER YA
-0bb0 TAMIL LETTER RA
-0bb1 TAMIL LETTER RRA
-0bb2 TAMIL LETTER LA
-0bb3 TAMIL LETTER LLA
-0bb4 TAMIL LETTER LLLA
-0bb5 TAMIL LETTER VA
-0bb7 TAMIL LETTER SSA
-0bb8 TAMIL LETTER SA
-0bb9 TAMIL LETTER HA
-0bbe TAMIL VOWEL SIGN AA
-0bbf TAMIL VOWEL SIGN I
-0bc0 TAMIL VOWEL SIGN II
-0bc1 TAMIL VOWEL SIGN U
-0bc2 TAMIL VOWEL SIGN UU
-0bc6 TAMIL VOWEL SIGN E
-0bc7 TAMIL VOWEL SIGN EE
-0bc8 TAMIL VOWEL SIGN AI
-0bca TAMIL VOWEL SIGN O
-0bcb TAMIL VOWEL SIGN OO
-0bcc TAMIL VOWEL SIGN AU
-0bcd TAMIL SIGN VIRAMA
-0bd7 TAMIL AU LENGTH MARK
-0be7 TAMIL DIGIT ONE
-0be8 TAMIL DIGIT TWO
-0be9 TAMIL DIGIT THREE
-0bea TAMIL DIGIT FOUR
-0beb TAMIL DIGIT FIVE
-0bec TAMIL DIGIT SIX
-0bed TAMIL DIGIT SEVEN
-0bee TAMIL DIGIT EIGHT
-0bef TAMIL DIGIT NINE
-0bf0 TAMIL NUMBER TEN
-0bf1 TAMIL NUMBER ONE HUNDRED
-0bf2 TAMIL NUMBER ONE THOUSAND
-0c01 TELUGU SIGN CANDRABINDU
-0c02 TELUGU SIGN ANUSVARA
-0c03 TELUGU SIGN VISARGA
-0c05 TELUGU LETTER A
-0c06 TELUGU LETTER AA
-0c07 TELUGU LETTER I
-0c08 TELUGU LETTER II
-0c09 TELUGU LETTER U
-0c0a TELUGU LETTER UU
-0c0b TELUGU LETTER VOCALIC R
-0c0c TELUGU LETTER VOCALIC L
-0c0e TELUGU LETTER E
-0c0f TELUGU LETTER EE
-0c10 TELUGU LETTER AI
-0c12 TELUGU LETTER O
-0c13 TELUGU LETTER OO
-0c14 TELUGU LETTER AU
-0c15 TELUGU LETTER KA
-0c16 TELUGU LETTER KHA
-0c17 TELUGU LETTER GA
-0c18 TELUGU LETTER GHA
-0c19 TELUGU LETTER NGA
-0c1a TELUGU LETTER CA
-0c1b TELUGU LETTER CHA
-0c1c TELUGU LETTER JA
-0c1d TELUGU LETTER JHA
-0c1e TELUGU LETTER NYA
-0c1f TELUGU LETTER TTA
-0c20 TELUGU LETTER TTHA
-0c21 TELUGU LETTER DDA
-0c22 TELUGU LETTER DDHA
-0c23 TELUGU LETTER NNA
-0c24 TELUGU LETTER TA
-0c25 TELUGU LETTER THA
-0c26 TELUGU LETTER DA
-0c27 TELUGU LETTER DHA
-0c28 TELUGU LETTER NA
-0c2a TELUGU LETTER PA
-0c2b TELUGU LETTER PHA
-0c2c TELUGU LETTER BA
-0c2d TELUGU LETTER BHA
-0c2e TELUGU LETTER MA
-0c2f TELUGU LETTER YA
-0c30 TELUGU LETTER RA
-0c31 TELUGU LETTER RRA
-0c32 TELUGU LETTER LA
-0c33 TELUGU LETTER LLA
-0c35 TELUGU LETTER VA
-0c36 TELUGU LETTER SHA
-0c37 TELUGU LETTER SSA
-0c38 TELUGU LETTER SA
-0c39 TELUGU LETTER HA
-0c3e TELUGU VOWEL SIGN AA
-0c3f TELUGU VOWEL SIGN I
-0c40 TELUGU VOWEL SIGN II
-0c41 TELUGU VOWEL SIGN U
-0c42 TELUGU VOWEL SIGN UU
-0c43 TELUGU VOWEL SIGN VOCALIC R
-0c44 TELUGU VOWEL SIGN VOCALIC RR
-0c46 TELUGU VOWEL SIGN E
-0c47 TELUGU VOWEL SIGN EE
-0c48 TELUGU VOWEL SIGN AI
-0c4a TELUGU VOWEL SIGN O
-0c4b TELUGU VOWEL SIGN OO
-0c4c TELUGU VOWEL SIGN AU
-0c4d TELUGU SIGN VIRAMA
-0c55 TELUGU LENGTH MARK
-0c56 TELUGU AI LENGTH MARK
-0c60 TELUGU LETTER VOCALIC RR
-0c61 TELUGU LETTER VOCALIC LL
-0c66 TELUGU DIGIT ZERO
-0c67 TELUGU DIGIT ONE
-0c68 TELUGU DIGIT TWO
-0c69 TELUGU DIGIT THREE
-0c6a TELUGU DIGIT FOUR
-0c6b TELUGU DIGIT FIVE
-0c6c TELUGU DIGIT SIX
-0c6d TELUGU DIGIT SEVEN
-0c6e TELUGU DIGIT EIGHT
-0c6f TELUGU DIGIT NINE
-0c82 KANNADA SIGN ANUSVARA
-0c83 KANNADA SIGN VISARGA
-0c85 KANNADA LETTER A
-0c86 KANNADA LETTER AA
-0c87 KANNADA LETTER I
-0c88 KANNADA LETTER II
-0c89 KANNADA LETTER U
-0c8a KANNADA LETTER UU
-0c8b KANNADA LETTER VOCALIC R
-0c8c KANNADA LETTER VOCALIC L
-0c8e KANNADA LETTER E
-0c8f KANNADA LETTER EE
-0c90 KANNADA LETTER AI
-0c92 KANNADA LETTER O
-0c93 KANNADA LETTER OO
-0c94 KANNADA LETTER AU
-0c95 KANNADA LETTER KA
-0c96 KANNADA LETTER KHA
-0c97 KANNADA LETTER GA
-0c98 KANNADA LETTER GHA
-0c99 KANNADA LETTER NGA
-0c9a KANNADA LETTER CA
-0c9b KANNADA LETTER CHA
-0c9c KANNADA LETTER JA
-0c9d KANNADA LETTER JHA
-0c9e KANNADA LETTER NYA
-0c9f KANNADA LETTER TTA
-0ca0 KANNADA LETTER TTHA
-0ca1 KANNADA LETTER DDA
-0ca2 KANNADA LETTER DDHA
-0ca3 KANNADA LETTER NNA
-0ca4 KANNADA LETTER TA
-0ca5 KANNADA LETTER THA
-0ca6 KANNADA LETTER DA
-0ca7 KANNADA LETTER DHA
-0ca8 KANNADA LETTER NA
-0caa KANNADA LETTER PA
-0cab KANNADA LETTER PHA
-0cac KANNADA LETTER BA
-0cad KANNADA LETTER BHA
-0cae KANNADA LETTER MA
-0caf KANNADA LETTER YA
-0cb0 KANNADA LETTER RA
-0cb1 KANNADA LETTER RRA
-0cb2 KANNADA LETTER LA
-0cb3 KANNADA LETTER LLA
-0cb5 KANNADA LETTER VA
-0cb6 KANNADA LETTER SHA
-0cb7 KANNADA LETTER SSA
-0cb8 KANNADA LETTER SA
-0cb9 KANNADA LETTER HA
-0cbe KANNADA VOWEL SIGN AA
-0cbf KANNADA VOWEL SIGN I
-0cc0 KANNADA VOWEL SIGN II
-0cc1 KANNADA VOWEL SIGN U
-0cc2 KANNADA VOWEL SIGN UU
-0cc3 KANNADA VOWEL SIGN VOCALIC R
-0cc4 KANNADA VOWEL SIGN VOCALIC RR
-0cc6 KANNADA VOWEL SIGN E
-0cc7 KANNADA VOWEL SIGN EE
-0cc8 KANNADA VOWEL SIGN AI
-0cca KANNADA VOWEL SIGN O
-0ccb KANNADA VOWEL SIGN OO
-0ccc KANNADA VOWEL SIGN AU
-0ccd KANNADA SIGN VIRAMA
-0cd5 KANNADA LENGTH MARK
-0cd6 KANNADA AI LENGTH MARK
-0cde KANNADA LETTER FA
-0ce0 KANNADA LETTER VOCALIC RR
-0ce1 KANNADA LETTER VOCALIC LL
-0ce6 KANNADA DIGIT ZERO
-0ce7 KANNADA DIGIT ONE
-0ce8 KANNADA DIGIT TWO
-0ce9 KANNADA DIGIT THREE
-0cea KANNADA DIGIT FOUR
-0ceb KANNADA DIGIT FIVE
-0cec KANNADA DIGIT SIX
-0ced KANNADA DIGIT SEVEN
-0cee KANNADA DIGIT EIGHT
-0cef KANNADA DIGIT NINE
-0d02 MALAYALAM SIGN ANUSVARA
-0d03 MALAYALAM SIGN VISARGA
-0d05 MALAYALAM LETTER A
-0d06 MALAYALAM LETTER AA
-0d07 MALAYALAM LETTER I
-0d08 MALAYALAM LETTER II
-0d09 MALAYALAM LETTER U
-0d0a MALAYALAM LETTER UU
-0d0b MALAYALAM LETTER VOCALIC R
-0d0c MALAYALAM LETTER VOCALIC L
-0d0e MALAYALAM LETTER E
-0d0f MALAYALAM LETTER EE
-0d10 MALAYALAM LETTER AI
-0d12 MALAYALAM LETTER O
-0d13 MALAYALAM LETTER OO
-0d14 MALAYALAM LETTER AU
-0d15 MALAYALAM LETTER KA
-0d16 MALAYALAM LETTER KHA
-0d17 MALAYALAM LETTER GA
-0d18 MALAYALAM LETTER GHA
-0d19 MALAYALAM LETTER NGA
-0d1a MALAYALAM LETTER CA
-0d1b MALAYALAM LETTER CHA
-0d1c MALAYALAM LETTER JA
-0d1d MALAYALAM LETTER JHA
-0d1e MALAYALAM LETTER NYA
-0d1f MALAYALAM LETTER TTA
-0d20 MALAYALAM LETTER TTHA
-0d21 MALAYALAM LETTER DDA
-0d22 MALAYALAM LETTER DDHA
-0d23 MALAYALAM LETTER NNA
-0d24 MALAYALAM LETTER TA
-0d25 MALAYALAM LETTER THA
-0d26 MALAYALAM LETTER DA
-0d27 MALAYALAM LETTER DHA
-0d28 MALAYALAM LETTER NA
-0d2a MALAYALAM LETTER PA
-0d2b MALAYALAM LETTER PHA
-0d2c MALAYALAM LETTER BA
-0d2d MALAYALAM LETTER BHA
-0d2e MALAYALAM LETTER MA
-0d2f MALAYALAM LETTER YA
-0d30 MALAYALAM LETTER RA
-0d31 MALAYALAM LETTER RRA
-0d32 MALAYALAM LETTER LA
-0d33 MALAYALAM LETTER LLA
-0d34 MALAYALAM LETTER LLLA
-0d35 MALAYALAM LETTER VA
-0d36 MALAYALAM LETTER SHA
-0d37 MALAYALAM LETTER SSA
-0d38 MALAYALAM LETTER SA
-0d39 MALAYALAM LETTER HA
-0d3e MALAYALAM VOWEL SIGN AA
-0d3f MALAYALAM VOWEL SIGN I
-0d40 MALAYALAM VOWEL SIGN II
-0d41 MALAYALAM VOWEL SIGN U
-0d42 MALAYALAM VOWEL SIGN UU
-0d43 MALAYALAM VOWEL SIGN VOCALIC R
-0d46 MALAYALAM VOWEL SIGN E
-0d47 MALAYALAM VOWEL SIGN EE
-0d48 MALAYALAM VOWEL SIGN AI
-0d4a MALAYALAM VOWEL SIGN O
-0d4b MALAYALAM VOWEL SIGN OO
-0d4c MALAYALAM VOWEL SIGN AU
-0d4d MALAYALAM SIGN VIRAMA
-0d57 MALAYALAM AU LENGTH MARK
-0d60 MALAYALAM LETTER VOCALIC RR
-0d61 MALAYALAM LETTER VOCALIC LL
-0d66 MALAYALAM DIGIT ZERO
-0d67 MALAYALAM DIGIT ONE
-0d68 MALAYALAM DIGIT TWO
-0d69 MALAYALAM DIGIT THREE
-0d6a MALAYALAM DIGIT FOUR
-0d6b MALAYALAM DIGIT FIVE
-0d6c MALAYALAM DIGIT SIX
-0d6d MALAYALAM DIGIT SEVEN
-0d6e MALAYALAM DIGIT EIGHT
-0d6f MALAYALAM DIGIT NINE
-0d82 SINHALA SIGN ANUSVARAYA
-0d83 SINHALA SIGN VISARGAYA
-0d85 SINHALA LETTER AYANNA
-0d86 SINHALA LETTER AAYANNA
-0d87 SINHALA LETTER AEYANNA
-0d88 SINHALA LETTER AEEYANNA
-0d89 SINHALA LETTER IYANNA
-0d8a SINHALA LETTER IIYANNA
-0d8b SINHALA LETTER UYANNA
-0d8c SINHALA LETTER UUYANNA
-0d8d SINHALA LETTER IRUYANNA
-0d8e SINHALA LETTER IRUUYANNA
-0d8f SINHALA LETTER ILUYANNA
-0d90 SINHALA LETTER ILUUYANNA
-0d91 SINHALA LETTER EYANNA
-0d92 SINHALA LETTER EEYANNA
-0d93 SINHALA LETTER AIYANNA
-0d94 SINHALA LETTER OYANNA
-0d95 SINHALA LETTER OOYANNA
-0d96 SINHALA LETTER AUYANNA
-0d9a SINHALA LETTER ALPAPRAANA KAYANNA
-0d9b SINHALA LETTER MAHAAPRAANA KAYANNA
-0d9c SINHALA LETTER ALPAPRAANA GAYANNA
-0d9d SINHALA LETTER MAHAAPRAANA GAYANNA
-0d9e SINHALA LETTER KANTAJA NAASIKYAYA
-0d9f SINHALA LETTER SANYAKA GAYANNA
-0da0 SINHALA LETTER ALPAPRAANA CAYANNA
-0da1 SINHALA LETTER MAHAAPRAANA CAYANNA
-0da2 SINHALA LETTER ALPAPRAANA JAYANNA
-0da3 SINHALA LETTER MAHAAPRAANA JAYANNA
-0da4 SINHALA LETTER TAALUJA NAASIKYAYA
-0da5 SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
-0da6 SINHALA LETTER SANYAKA JAYANNA
-0da7 SINHALA LETTER ALPAPRAANA TTAYANNA
-0da8 SINHALA LETTER MAHAAPRAANA TTAYANNA
-0da9 SINHALA LETTER ALPAPRAANA DDAYANNA
-0daa SINHALA LETTER MAHAAPRAANA DDAYANNA
-0dab SINHALA LETTER MUURDHAJA NAYANNA
-0dac SINHALA LETTER SANYAKA DDAYANNA
-0dad SINHALA LETTER ALPAPRAANA TAYANNA
-0dae SINHALA LETTER MAHAAPRAANA TAYANNA
-0daf SINHALA LETTER ALPAPRAANA DAYANNA
-0db0 SINHALA LETTER MAHAAPRAANA DAYANNA
-0db1 SINHALA LETTER DANTAJA NAYANNA
-0db3 SINHALA LETTER SANYAKA DAYANNA
-0db4 SINHALA LETTER ALPAPRAANA PAYANNA
-0db5 SINHALA LETTER MAHAAPRAANA PAYANNA
-0db6 SINHALA LETTER ALPAPRAANA BAYANNA
-0db7 SINHALA LETTER MAHAAPRAANA BAYANNA
-0db8 SINHALA LETTER MAYANNA
-0db9 SINHALA LETTER AMBA BAYANNA
-0dba SINHALA LETTER YAYANNA
-0dbb SINHALA LETTER RAYANNA
-0dbd SINHALA LETTER DANTAJA LAYANNA
-0dc0 SINHALA LETTER VAYANNA
-0dc1 SINHALA LETTER TAALUJA SAYANNA
-0dc2 SINHALA LETTER MUURDHAJA SAYANNA
-0dc3 SINHALA LETTER DANTAJA SAYANNA
-0dc4 SINHALA LETTER HAYANNA
-0dc5 SINHALA LETTER MUURDHAJA LAYANNA
-0dc6 SINHALA LETTER FAYANNA
-0dca SINHALA SIGN AL-LAKUNA
-0dcf SINHALA VOWEL SIGN AELA-PILLA
-0dd0 SINHALA VOWEL SIGN KETTI AEDA-PILLA
-0dd1 SINHALA VOWEL SIGN DIGA AEDA-PILLA
-0dd2 SINHALA VOWEL SIGN KETTI IS-PILLA
-0dd3 SINHALA VOWEL SIGN DIGA IS-PILLA
-0dd4 SINHALA VOWEL SIGN KETTI PAA-PILLA
-0dd6 SINHALA VOWEL SIGN DIGA PAA-PILLA
-0dd8 SINHALA VOWEL SIGN GAETTA-PILLA
-0dd9 SINHALA VOWEL SIGN KOMBUVA
-0dda SINHALA VOWEL SIGN DIGA KOMBUVA
-0ddb SINHALA VOWEL SIGN KOMBU DEKA
-0ddc SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
-0ddd SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
-0dde SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
-0ddf SINHALA VOWEL SIGN GAYANUKITTA
-0df2 SINHALA VOWEL SIGN DIGA GAETTA-PILLA
-0df3 SINHALA VOWEL SIGN DIGA GAYANUKITTA
-0df4 SINHALA PUNCTUATION KUNDDALIYA
-0e01 THAI CHARACTER KO KAI
-0e02 THAI CHARACTER KHO KHAI
-0e03 THAI CHARACTER KHO KHUAT
-0e04 THAI CHARACTER KHO KHWAI
-0e05 THAI CHARACTER KHO KHON
-0e06 THAI CHARACTER KHO RAKHANG
-0e07 THAI CHARACTER NGO NGU
-0e08 THAI CHARACTER CHO CHAN
-0e09 THAI CHARACTER CHO CHING
-0e0a THAI CHARACTER CHO CHANG
-0e0b THAI CHARACTER SO SO
-0e0c THAI CHARACTER CHO CHOE
-0e0d THAI CHARACTER YO YING
-0e0e THAI CHARACTER DO CHADA
-0e0f THAI CHARACTER TO PATAK
-0e10 THAI CHARACTER THO THAN
-0e11 THAI CHARACTER THO NANGMONTHO
-0e12 THAI CHARACTER THO PHUTHAO
-0e13 THAI CHARACTER NO NEN
-0e14 THAI CHARACTER DO DEK
-0e15 THAI CHARACTER TO TAO
-0e16 THAI CHARACTER THO THUNG
-0e17 THAI CHARACTER THO THAHAN
-0e18 THAI CHARACTER THO THONG
-0e19 THAI CHARACTER NO NU
-0e1a THAI CHARACTER BO BAIMAI
-0e1b THAI CHARACTER PO PLA
-0e1c THAI CHARACTER PHO PHUNG
-0e1d THAI CHARACTER FO FA
-0e1e THAI CHARACTER PHO PHAN
-0e1f THAI CHARACTER FO FAN
-0e20 THAI CHARACTER PHO SAMPHAO
-0e21 THAI CHARACTER MO MA
-0e22 THAI CHARACTER YO YAK
-0e23 THAI CHARACTER RO RUA
-0e24 THAI CHARACTER RU
-0e25 THAI CHARACTER LO LING
-0e26 THAI CHARACTER LU
-0e27 THAI CHARACTER WO WAEN
-0e28 THAI CHARACTER SO SALA
-0e29 THAI CHARACTER SO RUSI
-0e2a THAI CHARACTER SO SUA
-0e2b THAI CHARACTER HO HIP
-0e2c THAI CHARACTER LO CHULA
-0e2d THAI CHARACTER O ANG
-0e2e THAI CHARACTER HO NOKHUK
-0e2f THAI CHARACTER PAIYANNOI
-0e30 THAI CHARACTER SARA A
-0e31 THAI CHARACTER MAI HAN-AKAT
-0e32 THAI CHARACTER SARA AA
-0e33 THAI CHARACTER SARA AM
-0e34 THAI CHARACTER SARA I
-0e35 THAI CHARACTER SARA II
-0e36 THAI CHARACTER SARA UE
-0e37 THAI CHARACTER SARA UEE
-0e38 THAI CHARACTER SARA U
-0e39 THAI CHARACTER SARA UU
-0e3a THAI CHARACTER PHINTHU
-0e3f THAI CURRENCY SYMBOL BAHT
-0e40 THAI CHARACTER SARA E
-0e41 THAI CHARACTER SARA AE
-0e42 THAI CHARACTER SARA O
-0e43 THAI CHARACTER SARA AI MAIMUAN
-0e44 THAI CHARACTER SARA AI MAIMALAI
-0e45 THAI CHARACTER LAKKHANGYAO
-0e46 THAI CHARACTER MAIYAMOK
-0e47 THAI CHARACTER MAITAIKHU
-0e48 THAI CHARACTER MAI EK
-0e49 THAI CHARACTER MAI THO
-0e4a THAI CHARACTER MAI TRI
-0e4b THAI CHARACTER MAI CHATTAWA
-0e4c THAI CHARACTER THANTHAKHAT
-0e4d THAI CHARACTER NIKHAHIT
-0e4e THAI CHARACTER YAMAKKAN
-0e4f THAI CHARACTER FONGMAN
-0e50 THAI DIGIT ZERO
-0e51 THAI DIGIT ONE
-0e52 THAI DIGIT TWO
-0e53 THAI DIGIT THREE
-0e54 THAI DIGIT FOUR
-0e55 THAI DIGIT FIVE
-0e56 THAI DIGIT SIX
-0e57 THAI DIGIT SEVEN
-0e58 THAI DIGIT EIGHT
-0e59 THAI DIGIT NINE
-0e5a THAI CHARACTER ANGKHANKHU
-0e5b THAI CHARACTER KHOMUT
-0e81 LAO LETTER KO
-0e82 LAO LETTER KHO SUNG
-0e84 LAO LETTER KHO TAM
-0e87 LAO LETTER NGO
-0e88 LAO LETTER CO
-0e8a LAO LETTER SO TAM
-0e8d LAO LETTER NYO
-0e94 LAO LETTER DO
-0e95 LAO LETTER TO
-0e96 LAO LETTER THO SUNG
-0e97 LAO LETTER THO TAM
-0e99 LAO LETTER NO
-0e9a LAO LETTER BO
-0e9b LAO LETTER PO
-0e9c LAO LETTER PHO SUNG
-0e9d LAO LETTER FO TAM
-0e9e LAO LETTER PHO TAM
-0e9f LAO LETTER FO SUNG
-0ea1 LAO LETTER MO
-0ea2 LAO LETTER YO
-0ea3 LAO LETTER LO LING
-0ea5 LAO LETTER LO LOOT
-0ea7 LAO LETTER WO
-0eaa LAO LETTER SO SUNG
-0eab LAO LETTER HO SUNG
-0ead LAO LETTER O
-0eae LAO LETTER HO TAM
-0eaf LAO ELLIPSIS
-0eb0 LAO VOWEL SIGN A
-0eb1 LAO VOWEL SIGN MAI KAN
-0eb2 LAO VOWEL SIGN AA
-0eb3 LAO VOWEL SIGN AM
-0eb4 LAO VOWEL SIGN I
-0eb5 LAO VOWEL SIGN II
-0eb6 LAO VOWEL SIGN Y
-0eb7 LAO VOWEL SIGN YY
-0eb8 LAO VOWEL SIGN U
-0eb9 LAO VOWEL SIGN UU
-0ebb LAO VOWEL SIGN MAI KON
-0ebc LAO SEMIVOWEL SIGN LO
-0ebd LAO SEMIVOWEL SIGN NYO
-0ec0 LAO VOWEL SIGN E
-0ec1 LAO VOWEL SIGN EI
-0ec2 LAO VOWEL SIGN O
-0ec3 LAO VOWEL SIGN AY
-0ec4 LAO VOWEL SIGN AI
-0ec6 LAO KO LA
-0ec8 LAO TONE MAI EK
-0ec9 LAO TONE MAI THO
-0eca LAO TONE MAI TI
-0ecb LAO TONE MAI CATAWA
-0ecc LAO CANCELLATION MARK
-0ecd LAO NIGGAHITA
-0ed0 LAO DIGIT ZERO
-0ed1 LAO DIGIT ONE
-0ed2 LAO DIGIT TWO
-0ed3 LAO DIGIT THREE
-0ed4 LAO DIGIT FOUR
-0ed5 LAO DIGIT FIVE
-0ed6 LAO DIGIT SIX
-0ed7 LAO DIGIT SEVEN
-0ed8 LAO DIGIT EIGHT
-0ed9 LAO DIGIT NINE
-0edc LAO HO NO
-0edd LAO HO MO
-0f00 TIBETAN SYLLABLE OM
-0f01 TIBETAN MARK GTER YIG MGO TRUNCATED A
-0f02 TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA
-0f03 TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
-0f04 TIBETAN MARK INITIAL YIG MGO MDUN MA
-0f05 TIBETAN MARK CLOSING YIG MGO SGAB MA
-0f06 TIBETAN MARK CARET YIG MGO PHUR SHAD MA
-0f07 TIBETAN MARK YIG MGO TSHEG SHAD MA
-0f08 TIBETAN MARK SBRUL SHAD
-0f09 TIBETAN MARK BSKUR YIG MGO
-0f0a TIBETAN MARK BKA- SHOG YIG MGO
-0f0b TIBETAN MARK INTERSYLLABIC TSHEG
-0f0c TIBETAN MARK DELIMITER TSHEG BSTAR
-0f0d TIBETAN MARK SHAD
-0f0e TIBETAN MARK NYIS SHAD
-0f0f TIBETAN MARK TSHEG SHAD
-0f10 TIBETAN MARK NYIS TSHEG SHAD
-0f11 TIBETAN MARK RIN CHEN SPUNGS SHAD
-0f12 TIBETAN MARK RGYA GRAM SHAD
-0f13 TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
-0f14 TIBETAN MARK GTER TSHEG
-0f15 TIBETAN LOGOTYPE SIGN CHAD RTAGS
-0f16 TIBETAN LOGOTYPE SIGN LHAG RTAGS
-0f17 TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
-0f18 TIBETAN ASTROLOGICAL SIGN -KHYUD PA
-0f19 TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
-0f1a TIBETAN SIGN RDEL DKAR GCIG
-0f1b TIBETAN SIGN RDEL DKAR GNYIS
-0f1c TIBETAN SIGN RDEL DKAR GSUM
-0f1d TIBETAN SIGN RDEL NAG GCIG
-0f1e TIBETAN SIGN RDEL NAG GNYIS
-0f1f TIBETAN SIGN RDEL DKAR RDEL NAG
-0f20 TIBETAN DIGIT ZERO
-0f21 TIBETAN DIGIT ONE
-0f22 TIBETAN DIGIT TWO
-0f23 TIBETAN DIGIT THREE
-0f24 TIBETAN DIGIT FOUR
-0f25 TIBETAN DIGIT FIVE
-0f26 TIBETAN DIGIT SIX
-0f27 TIBETAN DIGIT SEVEN
-0f28 TIBETAN DIGIT EIGHT
-0f29 TIBETAN DIGIT NINE
-0f2a TIBETAN DIGIT HALF ONE
-0f2b TIBETAN DIGIT HALF TWO
-0f2c TIBETAN DIGIT HALF THREE
-0f2d TIBETAN DIGIT HALF FOUR
-0f2e TIBETAN DIGIT HALF FIVE
-0f2f TIBETAN DIGIT HALF SIX
-0f30 TIBETAN DIGIT HALF SEVEN
-0f31 TIBETAN DIGIT HALF EIGHT
-0f32 TIBETAN DIGIT HALF NINE
-0f33 TIBETAN DIGIT HALF ZERO
-0f34 TIBETAN MARK BSDUS RTAGS
-0f35 TIBETAN MARK NGAS BZUNG NYI ZLA
-0f36 TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
-0f37 TIBETAN MARK NGAS BZUNG SGOR RTAGS
-0f38 TIBETAN MARK CHE MGO
-0f39 TIBETAN MARK TSA -PHRU
-0f3a TIBETAN MARK GUG RTAGS GYON
-0f3b TIBETAN MARK GUG RTAGS GYAS
-0f3c TIBETAN MARK ANG KHANG GYON
-0f3d TIBETAN MARK ANG KHANG GYAS
-0f3e TIBETAN SIGN YAR TSHES
-0f3f TIBETAN SIGN MAR TSHES
-0f40 TIBETAN LETTER KA
-0f41 TIBETAN LETTER KHA
-0f42 TIBETAN LETTER GA
-0f43 TIBETAN LETTER GHA
-0f44 TIBETAN LETTER NGA
-0f45 TIBETAN LETTER CA
-0f46 TIBETAN LETTER CHA
-0f47 TIBETAN LETTER JA
-0f49 TIBETAN LETTER NYA
-0f4a TIBETAN LETTER TTA
-0f4b TIBETAN LETTER TTHA
-0f4c TIBETAN LETTER DDA
-0f4d TIBETAN LETTER DDHA
-0f4e TIBETAN LETTER NNA
-0f4f TIBETAN LETTER TA
-0f50 TIBETAN LETTER THA
-0f51 TIBETAN LETTER DA
-0f52 TIBETAN LETTER DHA
-0f53 TIBETAN LETTER NA
-0f54 TIBETAN LETTER PA
-0f55 TIBETAN LETTER PHA
-0f56 TIBETAN LETTER BA
-0f57 TIBETAN LETTER BHA
-0f58 TIBETAN LETTER MA
-0f59 TIBETAN LETTER TSA
-0f5a TIBETAN LETTER TSHA
-0f5b TIBETAN LETTER DZA
-0f5c TIBETAN LETTER DZHA
-0f5d TIBETAN LETTER WA
-0f5e TIBETAN LETTER ZHA
-0f5f TIBETAN LETTER ZA
-0f60 TIBETAN LETTER -A
-0f61 TIBETAN LETTER YA
-0f62 TIBETAN LETTER RA
-0f63 TIBETAN LETTER LA
-0f64 TIBETAN LETTER SHA
-0f65 TIBETAN LETTER SSA
-0f66 TIBETAN LETTER SA
-0f67 TIBETAN LETTER HA
-0f68 TIBETAN LETTER A
-0f69 TIBETAN LETTER KSSA
-0f6a TIBETAN LETTER FIXED-FORM RA
-0f71 TIBETAN VOWEL SIGN AA
-0f72 TIBETAN VOWEL SIGN I
-0f73 TIBETAN VOWEL SIGN II
-0f74 TIBETAN VOWEL SIGN U
-0f75 TIBETAN VOWEL SIGN UU
-0f76 TIBETAN VOWEL SIGN VOCALIC R
-0f77 TIBETAN VOWEL SIGN VOCALIC RR
-0f78 TIBETAN VOWEL SIGN VOCALIC L
-0f79 TIBETAN VOWEL SIGN VOCALIC LL
-0f7a TIBETAN VOWEL SIGN E
-0f7b TIBETAN VOWEL SIGN EE
-0f7c TIBETAN VOWEL SIGN O
-0f7d TIBETAN VOWEL SIGN OO
-0f7e TIBETAN SIGN RJES SU NGA RO
-0f7f TIBETAN SIGN RNAM BCAD
-0f80 TIBETAN VOWEL SIGN REVERSED I
-0f81 TIBETAN VOWEL SIGN REVERSED II
-0f82 TIBETAN SIGN NYI ZLA NAA DA
-0f83 TIBETAN SIGN SNA LDAN
-0f84 TIBETAN MARK HALANTA
-0f85 TIBETAN MARK PALUTA
-0f86 TIBETAN SIGN LCI RTAGS
-0f87 TIBETAN SIGN YANG RTAGS
-0f88 TIBETAN SIGN LCE TSA CAN
-0f89 TIBETAN SIGN MCHU CAN
-0f8a TIBETAN SIGN GRU CAN RGYINGS
-0f8b TIBETAN SIGN GRU MED RGYINGS
-0f90 TIBETAN SUBJOINED LETTER KA
-0f91 TIBETAN SUBJOINED LETTER KHA
-0f92 TIBETAN SUBJOINED LETTER GA
-0f93 TIBETAN SUBJOINED LETTER GHA
-0f94 TIBETAN SUBJOINED LETTER NGA
-0f95 TIBETAN SUBJOINED LETTER CA
-0f96 TIBETAN SUBJOINED LETTER CHA
-0f97 TIBETAN SUBJOINED LETTER JA
-0f99 TIBETAN SUBJOINED LETTER NYA
-0f9a TIBETAN SUBJOINED LETTER TTA
-0f9b TIBETAN SUBJOINED LETTER TTHA
-0f9c TIBETAN SUBJOINED LETTER DDA
-0f9d TIBETAN SUBJOINED LETTER DDHA
-0f9e TIBETAN SUBJOINED LETTER NNA
-0f9f TIBETAN SUBJOINED LETTER TA
-0fa0 TIBETAN SUBJOINED LETTER THA
-0fa1 TIBETAN SUBJOINED LETTER DA
-0fa2 TIBETAN SUBJOINED LETTER DHA
-0fa3 TIBETAN SUBJOINED LETTER NA
-0fa4 TIBETAN SUBJOINED LETTER PA
-0fa5 TIBETAN SUBJOINED LETTER PHA
-0fa6 TIBETAN SUBJOINED LETTER BA
-0fa7 TIBETAN SUBJOINED LETTER BHA
-0fa8 TIBETAN SUBJOINED LETTER MA
-0fa9 TIBETAN SUBJOINED LETTER TSA
-0faa TIBETAN SUBJOINED LETTER TSHA
-0fab TIBETAN SUBJOINED LETTER DZA
-0fac TIBETAN SUBJOINED LETTER DZHA
-0fad TIBETAN SUBJOINED LETTER WA
-0fae TIBETAN SUBJOINED LETTER ZHA
-0faf TIBETAN SUBJOINED LETTER ZA
-0fb0 TIBETAN SUBJOINED LETTER -A
-0fb1 TIBETAN SUBJOINED LETTER YA
-0fb2 TIBETAN SUBJOINED LETTER RA
-0fb3 TIBETAN SUBJOINED LETTER LA
-0fb4 TIBETAN SUBJOINED LETTER SHA
-0fb5 TIBETAN SUBJOINED LETTER SSA
-0fb6 TIBETAN SUBJOINED LETTER SA
-0fb7 TIBETAN SUBJOINED LETTER HA
-0fb8 TIBETAN SUBJOINED LETTER A
-0fb9 TIBETAN SUBJOINED LETTER KSSA
-0fba TIBETAN SUBJOINED LETTER FIXED-FORM WA
-0fbb TIBETAN SUBJOINED LETTER FIXED-FORM YA
-0fbc TIBETAN SUBJOINED LETTER FIXED-FORM RA
-0fbe TIBETAN KU RU KHA
-0fbf TIBETAN KU RU KHA BZHI MIG CAN
-0fc0 TIBETAN CANTILLATION SIGN HEAVY BEAT
-0fc1 TIBETAN CANTILLATION SIGN LIGHT BEAT
-0fc2 TIBETAN CANTILLATION SIGN CANG TE-U
-0fc3 TIBETAN CANTILLATION SIGN SBUB -CHAL
-0fc4 TIBETAN SYMBOL DRIL BU
-0fc5 TIBETAN SYMBOL RDO RJE
-0fc6 TIBETAN SYMBOL PADMA GDAN
-0fc7 TIBETAN SYMBOL RDO RJE RGYA GRAM
-0fc8 TIBETAN SYMBOL PHUR PA
-0fc9 TIBETAN SYMBOL NOR BU
-0fca TIBETAN SYMBOL NOR BU NYIS -KHYIL
-0fcb TIBETAN SYMBOL NOR BU GSUM -KHYIL
-0fcc TIBETAN SYMBOL NOR BU BZHI -KHYIL
-0fcf TIBETAN SIGN RDEL NAG GSUM
-1000 MYANMAR LETTER KA
-1001 MYANMAR LETTER KHA
-1002 MYANMAR LETTER GA
-1003 MYANMAR LETTER GHA
-1004 MYANMAR LETTER NGA
-1005 MYANMAR LETTER CA
-1006 MYANMAR LETTER CHA
-1007 MYANMAR LETTER JA
-1008 MYANMAR LETTER JHA
-1009 MYANMAR LETTER NYA
-100a MYANMAR LETTER NNYA
-100b MYANMAR LETTER TTA
-100c MYANMAR LETTER TTHA
-100d MYANMAR LETTER DDA
-100e MYANMAR LETTER DDHA
-100f MYANMAR LETTER NNA
-1010 MYANMAR LETTER TA
-1011 MYANMAR LETTER THA
-1012 MYANMAR LETTER DA
-1013 MYANMAR LETTER DHA
-1014 MYANMAR LETTER NA
-1015 MYANMAR LETTER PA
-1016 MYANMAR LETTER PHA
-1017 MYANMAR LETTER BA
-1018 MYANMAR LETTER BHA
-1019 MYANMAR LETTER MA
-101a MYANMAR LETTER YA
-101b MYANMAR LETTER RA
-101c MYANMAR LETTER LA
-101d MYANMAR LETTER WA
-101e MYANMAR LETTER SA
-101f MYANMAR LETTER HA
-1020 MYANMAR LETTER LLA
-1021 MYANMAR LETTER A
-1023 MYANMAR LETTER I
-1024 MYANMAR LETTER II
-1025 MYANMAR LETTER U
-1026 MYANMAR LETTER UU
-1027 MYANMAR LETTER E
-1029 MYANMAR LETTER O
-102a MYANMAR LETTER AU
-102c MYANMAR VOWEL SIGN AA
-102d MYANMAR VOWEL SIGN I
-102e MYANMAR VOWEL SIGN II
-102f MYANMAR VOWEL SIGN U
-1030 MYANMAR VOWEL SIGN UU
-1031 MYANMAR VOWEL SIGN E
-1032 MYANMAR VOWEL SIGN AI
-1036 MYANMAR SIGN ANUSVARA
-1037 MYANMAR SIGN DOT BELOW
-1038 MYANMAR SIGN VISARGA
-1039 MYANMAR SIGN VIRAMA
-1040 MYANMAR DIGIT ZERO
-1041 MYANMAR DIGIT ONE
-1042 MYANMAR DIGIT TWO
-1043 MYANMAR DIGIT THREE
-1044 MYANMAR DIGIT FOUR
-1045 MYANMAR DIGIT FIVE
-1046 MYANMAR DIGIT SIX
-1047 MYANMAR DIGIT SEVEN
-1048 MYANMAR DIGIT EIGHT
-1049 MYANMAR DIGIT NINE
-104a MYANMAR SIGN LITTLE SECTION
-104b MYANMAR SIGN SECTION
-104c MYANMAR SYMBOL LOCATIVE
-104d MYANMAR SYMBOL COMPLETED
-104e MYANMAR SYMBOL AFOREMENTIONED
-104f MYANMAR SYMBOL GENITIVE
-1050 MYANMAR LETTER SHA
-1051 MYANMAR LETTER SSA
-1052 MYANMAR LETTER VOCALIC R
-1053 MYANMAR LETTER VOCALIC RR
-1054 MYANMAR LETTER VOCALIC L
-1055 MYANMAR LETTER VOCALIC LL
-1056 MYANMAR VOWEL SIGN VOCALIC R
-1057 MYANMAR VOWEL SIGN VOCALIC RR
-1058 MYANMAR VOWEL SIGN VOCALIC L
-1059 MYANMAR VOWEL SIGN VOCALIC LL
-10a0 GEORGIAN CAPITAL LETTER AN
-10a1 GEORGIAN CAPITAL LETTER BAN
-10a2 GEORGIAN CAPITAL LETTER GAN
-10a3 GEORGIAN CAPITAL LETTER DON
-10a4 GEORGIAN CAPITAL LETTER EN
-10a5 GEORGIAN CAPITAL LETTER VIN
-10a6 GEORGIAN CAPITAL LETTER ZEN
-10a7 GEORGIAN CAPITAL LETTER TAN
-10a8 GEORGIAN CAPITAL LETTER IN
-10a9 GEORGIAN CAPITAL LETTER KAN
-10aa GEORGIAN CAPITAL LETTER LAS
-10ab GEORGIAN CAPITAL LETTER MAN
-10ac GEORGIAN CAPITAL LETTER NAR
-10ad GEORGIAN CAPITAL LETTER ON
-10ae GEORGIAN CAPITAL LETTER PAR
-10af GEORGIAN CAPITAL LETTER ZHAR
-10b0 GEORGIAN CAPITAL LETTER RAE
-10b1 GEORGIAN CAPITAL LETTER SAN
-10b2 GEORGIAN CAPITAL LETTER TAR
-10b3 GEORGIAN CAPITAL LETTER UN
-10b4 GEORGIAN CAPITAL LETTER PHAR
-10b5 GEORGIAN CAPITAL LETTER KHAR
-10b6 GEORGIAN CAPITAL LETTER GHAN
-10b7 GEORGIAN CAPITAL LETTER QAR
-10b8 GEORGIAN CAPITAL LETTER SHIN
-10b9 GEORGIAN CAPITAL LETTER CHIN
-10ba GEORGIAN CAPITAL LETTER CAN
-10bb GEORGIAN CAPITAL LETTER JIL
-10bc GEORGIAN CAPITAL LETTER CIL
-10bd GEORGIAN CAPITAL LETTER CHAR
-10be GEORGIAN CAPITAL LETTER XAN
-10bf GEORGIAN CAPITAL LETTER JHAN
-10c0 GEORGIAN CAPITAL LETTER HAE
-10c1 GEORGIAN CAPITAL LETTER HE
-10c2 GEORGIAN CAPITAL LETTER HIE
-10c3 GEORGIAN CAPITAL LETTER WE
-10c4 GEORGIAN CAPITAL LETTER HAR
-10c5 GEORGIAN CAPITAL LETTER HOE
-10d0 GEORGIAN LETTER AN
-10d1 GEORGIAN LETTER BAN
-10d2 GEORGIAN LETTER GAN
-10d3 GEORGIAN LETTER DON
-10d4 GEORGIAN LETTER EN
-10d5 GEORGIAN LETTER VIN
-10d6 GEORGIAN LETTER ZEN
-10d7 GEORGIAN LETTER TAN
-10d8 GEORGIAN LETTER IN
-10d9 GEORGIAN LETTER KAN
-10da GEORGIAN LETTER LAS
-10db GEORGIAN LETTER MAN
-10dc GEORGIAN LETTER NAR
-10dd GEORGIAN LETTER ON
-10de GEORGIAN LETTER PAR
-10df GEORGIAN LETTER ZHAR
-10e0 GEORGIAN LETTER RAE
-10e1 GEORGIAN LETTER SAN
-10e2 GEORGIAN LETTER TAR
-10e3 GEORGIAN LETTER UN
-10e4 GEORGIAN LETTER PHAR
-10e5 GEORGIAN LETTER KHAR
-10e6 GEORGIAN LETTER GHAN
-10e7 GEORGIAN LETTER QAR
-10e8 GEORGIAN LETTER SHIN
-10e9 GEORGIAN LETTER CHIN
-10ea GEORGIAN LETTER CAN
-10eb GEORGIAN LETTER JIL
-10ec GEORGIAN LETTER CIL
-10ed GEORGIAN LETTER CHAR
-10ee GEORGIAN LETTER XAN
-10ef GEORGIAN LETTER JHAN
-10f0 GEORGIAN LETTER HAE
-10f1 GEORGIAN LETTER HE
-10f2 GEORGIAN LETTER HIE
-10f3 GEORGIAN LETTER WE
-10f4 GEORGIAN LETTER HAR
-10f5 GEORGIAN LETTER HOE
-10f6 GEORGIAN LETTER FI
-10fb GEORGIAN PARAGRAPH SEPARATOR
-1100 HANGUL CHOSEONG KIYEOK
-1101 HANGUL CHOSEONG SSANGKIYEOK
-1102 HANGUL CHOSEONG NIEUN
-1103 HANGUL CHOSEONG TIKEUT
-1104 HANGUL CHOSEONG SSANGTIKEUT
-1105 HANGUL CHOSEONG RIEUL
-1106 HANGUL CHOSEONG MIEUM
-1107 HANGUL CHOSEONG PIEUP
-1108 HANGUL CHOSEONG SSANGPIEUP
-1109 HANGUL CHOSEONG SIOS
-110a HANGUL CHOSEONG SSANGSIOS
-110b HANGUL CHOSEONG IEUNG
-110c HANGUL CHOSEONG CIEUC
-110d HANGUL CHOSEONG SSANGCIEUC
-110e HANGUL CHOSEONG CHIEUCH
-110f HANGUL CHOSEONG KHIEUKH
-1110 HANGUL CHOSEONG THIEUTH
-1111 HANGUL CHOSEONG PHIEUPH
-1112 HANGUL CHOSEONG HIEUH
-1113 HANGUL CHOSEONG NIEUN-KIYEOK
-1114 HANGUL CHOSEONG SSANGNIEUN
-1115 HANGUL CHOSEONG NIEUN-TIKEUT
-1116 HANGUL CHOSEONG NIEUN-PIEUP
-1117 HANGUL CHOSEONG TIKEUT-KIYEOK
-1118 HANGUL CHOSEONG RIEUL-NIEUN
-1119 HANGUL CHOSEONG SSANGRIEUL
-111a HANGUL CHOSEONG RIEUL-HIEUH
-111b HANGUL CHOSEONG KAPYEOUNRIEUL
-111c HANGUL CHOSEONG MIEUM-PIEUP
-111d HANGUL CHOSEONG KAPYEOUNMIEUM
-111e HANGUL CHOSEONG PIEUP-KIYEOK
-111f HANGUL CHOSEONG PIEUP-NIEUN
-1120 HANGUL CHOSEONG PIEUP-TIKEUT
-1121 HANGUL CHOSEONG PIEUP-SIOS
-1122 HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
-1123 HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
-1124 HANGUL CHOSEONG PIEUP-SIOS-PIEUP
-1125 HANGUL CHOSEONG PIEUP-SSANGSIOS
-1126 HANGUL CHOSEONG PIEUP-SIOS-CIEUC
-1127 HANGUL CHOSEONG PIEUP-CIEUC
-1128 HANGUL CHOSEONG PIEUP-CHIEUCH
-1129 HANGUL CHOSEONG PIEUP-THIEUTH
-112a HANGUL CHOSEONG PIEUP-PHIEUPH
-112b HANGUL CHOSEONG KAPYEOUNPIEUP
-112c HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
-112d HANGUL CHOSEONG SIOS-KIYEOK
-112e HANGUL CHOSEONG SIOS-NIEUN
-112f HANGUL CHOSEONG SIOS-TIKEUT
-1130 HANGUL CHOSEONG SIOS-RIEUL
-1131 HANGUL CHOSEONG SIOS-MIEUM
-1132 HANGUL CHOSEONG SIOS-PIEUP
-1133 HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
-1134 HANGUL CHOSEONG SIOS-SSANGSIOS
-1135 HANGUL CHOSEONG SIOS-IEUNG
-1136 HANGUL CHOSEONG SIOS-CIEUC
-1137 HANGUL CHOSEONG SIOS-CHIEUCH
-1138 HANGUL CHOSEONG SIOS-KHIEUKH
-1139 HANGUL CHOSEONG SIOS-THIEUTH
-113a HANGUL CHOSEONG SIOS-PHIEUPH
-113b HANGUL CHOSEONG SIOS-HIEUH
-113c HANGUL CHOSEONG CHITUEUMSIOS
-113d HANGUL CHOSEONG CHITUEUMSSANGSIOS
-113e HANGUL CHOSEONG CEONGCHIEUMSIOS
-113f HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
-1140 HANGUL CHOSEONG PANSIOS
-1141 HANGUL CHOSEONG IEUNG-KIYEOK
-1142 HANGUL CHOSEONG IEUNG-TIKEUT
-1143 HANGUL CHOSEONG IEUNG-MIEUM
-1144 HANGUL CHOSEONG IEUNG-PIEUP
-1145 HANGUL CHOSEONG IEUNG-SIOS
-1146 HANGUL CHOSEONG IEUNG-PANSIOS
-1147 HANGUL CHOSEONG SSANGIEUNG
-1148 HANGUL CHOSEONG IEUNG-CIEUC
-1149 HANGUL CHOSEONG IEUNG-CHIEUCH
-114a HANGUL CHOSEONG IEUNG-THIEUTH
-114b HANGUL CHOSEONG IEUNG-PHIEUPH
-114c HANGUL CHOSEONG YESIEUNG
-114d HANGUL CHOSEONG CIEUC-IEUNG
-114e HANGUL CHOSEONG CHITUEUMCIEUC
-114f HANGUL CHOSEONG CHITUEUMSSANGCIEUC
-1150 HANGUL CHOSEONG CEONGCHIEUMCIEUC
-1151 HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
-1152 HANGUL CHOSEONG CHIEUCH-KHIEUKH
-1153 HANGUL CHOSEONG CHIEUCH-HIEUH
-1154 HANGUL CHOSEONG CHITUEUMCHIEUCH
-1155 HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
-1156 HANGUL CHOSEONG PHIEUPH-PIEUP
-1157 HANGUL CHOSEONG KAPYEOUNPHIEUPH
-1158 HANGUL CHOSEONG SSANGHIEUH
-1159 HANGUL CHOSEONG YEORINHIEUH
-115f HANGUL CHOSEONG FILLER
-1160 HANGUL JUNGSEONG FILLER
-1161 HANGUL JUNGSEONG A
-1162 HANGUL JUNGSEONG AE
-1163 HANGUL JUNGSEONG YA
-1164 HANGUL JUNGSEONG YAE
-1165 HANGUL JUNGSEONG EO
-1166 HANGUL JUNGSEONG E
-1167 HANGUL JUNGSEONG YEO
-1168 HANGUL JUNGSEONG YE
-1169 HANGUL JUNGSEONG O
-116a HANGUL JUNGSEONG WA
-116b HANGUL JUNGSEONG WAE
-116c HANGUL JUNGSEONG OE
-116d HANGUL JUNGSEONG YO
-116e HANGUL JUNGSEONG U
-116f HANGUL JUNGSEONG WEO
-1170 HANGUL JUNGSEONG WE
-1171 HANGUL JUNGSEONG WI
-1172 HANGUL JUNGSEONG YU
-1173 HANGUL JUNGSEONG EU
-1174 HANGUL JUNGSEONG YI
-1175 HANGUL JUNGSEONG I
-1176 HANGUL JUNGSEONG A-O
-1177 HANGUL JUNGSEONG A-U
-1178 HANGUL JUNGSEONG YA-O
-1179 HANGUL JUNGSEONG YA-YO
-117a HANGUL JUNGSEONG EO-O
-117b HANGUL JUNGSEONG EO-U
-117c HANGUL JUNGSEONG EO-EU
-117d HANGUL JUNGSEONG YEO-O
-117e HANGUL JUNGSEONG YEO-U
-117f HANGUL JUNGSEONG O-EO
-1180 HANGUL JUNGSEONG O-E
-1181 HANGUL JUNGSEONG O-YE
-1182 HANGUL JUNGSEONG O-O
-1183 HANGUL JUNGSEONG O-U
-1184 HANGUL JUNGSEONG YO-YA
-1185 HANGUL JUNGSEONG YO-YAE
-1186 HANGUL JUNGSEONG YO-YEO
-1187 HANGUL JUNGSEONG YO-O
-1188 HANGUL JUNGSEONG YO-I
-1189 HANGUL JUNGSEONG U-A
-118a HANGUL JUNGSEONG U-AE
-118b HANGUL JUNGSEONG U-EO-EU
-118c HANGUL JUNGSEONG U-YE
-118d HANGUL JUNGSEONG U-U
-118e HANGUL JUNGSEONG YU-A
-118f HANGUL JUNGSEONG YU-EO
-1190 HANGUL JUNGSEONG YU-E
-1191 HANGUL JUNGSEONG YU-YEO
-1192 HANGUL JUNGSEONG YU-YE
-1193 HANGUL JUNGSEONG YU-U
-1194 HANGUL JUNGSEONG YU-I
-1195 HANGUL JUNGSEONG EU-U
-1196 HANGUL JUNGSEONG EU-EU
-1197 HANGUL JUNGSEONG YI-U
-1198 HANGUL JUNGSEONG I-A
-1199 HANGUL JUNGSEONG I-YA
-119a HANGUL JUNGSEONG I-O
-119b HANGUL JUNGSEONG I-U
-119c HANGUL JUNGSEONG I-EU
-119d HANGUL JUNGSEONG I-ARAEA
-119e HANGUL JUNGSEONG ARAEA
-119f HANGUL JUNGSEONG ARAEA-EO
-11a0 HANGUL JUNGSEONG ARAEA-U
-11a1 HANGUL JUNGSEONG ARAEA-I
-11a2 HANGUL JUNGSEONG SSANGARAEA
-11a8 HANGUL JONGSEONG KIYEOK
-11a9 HANGUL JONGSEONG SSANGKIYEOK
-11aa HANGUL JONGSEONG KIYEOK-SIOS
-11ab HANGUL JONGSEONG NIEUN
-11ac HANGUL JONGSEONG NIEUN-CIEUC
-11ad HANGUL JONGSEONG NIEUN-HIEUH
-11ae HANGUL JONGSEONG TIKEUT
-11af HANGUL JONGSEONG RIEUL
-11b0 HANGUL JONGSEONG RIEUL-KIYEOK
-11b1 HANGUL JONGSEONG RIEUL-MIEUM
-11b2 HANGUL JONGSEONG RIEUL-PIEUP
-11b3 HANGUL JONGSEONG RIEUL-SIOS
-11b4 HANGUL JONGSEONG RIEUL-THIEUTH
-11b5 HANGUL JONGSEONG RIEUL-PHIEUPH
-11b6 HANGUL JONGSEONG RIEUL-HIEUH
-11b7 HANGUL JONGSEONG MIEUM
-11b8 HANGUL JONGSEONG PIEUP
-11b9 HANGUL JONGSEONG PIEUP-SIOS
-11ba HANGUL JONGSEONG SIOS
-11bb HANGUL JONGSEONG SSANGSIOS
-11bc HANGUL JONGSEONG IEUNG
-11bd HANGUL JONGSEONG CIEUC
-11be HANGUL JONGSEONG CHIEUCH
-11bf HANGUL JONGSEONG KHIEUKH
-11c0 HANGUL JONGSEONG THIEUTH
-11c1 HANGUL JONGSEONG PHIEUPH
-11c2 HANGUL JONGSEONG HIEUH
-11c3 HANGUL JONGSEONG KIYEOK-RIEUL
-11c4 HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
-11c5 HANGUL JONGSEONG NIEUN-KIYEOK
-11c6 HANGUL JONGSEONG NIEUN-TIKEUT
-11c7 HANGUL JONGSEONG NIEUN-SIOS
-11c8 HANGUL JONGSEONG NIEUN-PANSIOS
-11c9 HANGUL JONGSEONG NIEUN-THIEUTH
-11ca HANGUL JONGSEONG TIKEUT-KIYEOK
-11cb HANGUL JONGSEONG TIKEUT-RIEUL
-11cc HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
-11cd HANGUL JONGSEONG RIEUL-NIEUN
-11ce HANGUL JONGSEONG RIEUL-TIKEUT
-11cf HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
-11d0 HANGUL JONGSEONG SSANGRIEUL
-11d1 HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
-11d2 HANGUL JONGSEONG RIEUL-MIEUM-SIOS
-11d3 HANGUL JONGSEONG RIEUL-PIEUP-SIOS
-11d4 HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
-11d5 HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
-11d6 HANGUL JONGSEONG RIEUL-SSANGSIOS
-11d7 HANGUL JONGSEONG RIEUL-PANSIOS
-11d8 HANGUL JONGSEONG RIEUL-KHIEUKH
-11d9 HANGUL JONGSEONG RIEUL-YEORINHIEUH
-11da HANGUL JONGSEONG MIEUM-KIYEOK
-11db HANGUL JONGSEONG MIEUM-RIEUL
-11dc HANGUL JONGSEONG MIEUM-PIEUP
-11dd HANGUL JONGSEONG MIEUM-SIOS
-11de HANGUL JONGSEONG MIEUM-SSANGSIOS
-11df HANGUL JONGSEONG MIEUM-PANSIOS
-11e0 HANGUL JONGSEONG MIEUM-CHIEUCH
-11e1 HANGUL JONGSEONG MIEUM-HIEUH
-11e2 HANGUL JONGSEONG KAPYEOUNMIEUM
-11e3 HANGUL JONGSEONG PIEUP-RIEUL
-11e4 HANGUL JONGSEONG PIEUP-PHIEUPH
-11e5 HANGUL JONGSEONG PIEUP-HIEUH
-11e6 HANGUL JONGSEONG KAPYEOUNPIEUP
-11e7 HANGUL JONGSEONG SIOS-KIYEOK
-11e8 HANGUL JONGSEONG SIOS-TIKEUT
-11e9 HANGUL JONGSEONG SIOS-RIEUL
-11ea HANGUL JONGSEONG SIOS-PIEUP
-11eb HANGUL JONGSEONG PANSIOS
-11ec HANGUL JONGSEONG IEUNG-KIYEOK
-11ed HANGUL JONGSEONG IEUNG-SSANGKIYEOK
-11ee HANGUL JONGSEONG SSANGIEUNG
-11ef HANGUL JONGSEONG IEUNG-KHIEUKH
-11f0 HANGUL JONGSEONG YESIEUNG
-11f1 HANGUL JONGSEONG YESIEUNG-SIOS
-11f2 HANGUL JONGSEONG YESIEUNG-PANSIOS
-11f3 HANGUL JONGSEONG PHIEUPH-PIEUP
-11f4 HANGUL JONGSEONG KAPYEOUNPHIEUPH
-11f5 HANGUL JONGSEONG HIEUH-NIEUN
-11f6 HANGUL JONGSEONG HIEUH-RIEUL
-11f7 HANGUL JONGSEONG HIEUH-MIEUM
-11f8 HANGUL JONGSEONG HIEUH-PIEUP
-11f9 HANGUL JONGSEONG YEORINHIEUH
-1200 ETHIOPIC SYLLABLE HA
-1201 ETHIOPIC SYLLABLE HU
-1202 ETHIOPIC SYLLABLE HI
-1203 ETHIOPIC SYLLABLE HAA
-1204 ETHIOPIC SYLLABLE HEE
-1205 ETHIOPIC SYLLABLE HE
-1206 ETHIOPIC SYLLABLE HO
-1208 ETHIOPIC SYLLABLE LA
-1209 ETHIOPIC SYLLABLE LU
-120a ETHIOPIC SYLLABLE LI
-120b ETHIOPIC SYLLABLE LAA
-120c ETHIOPIC SYLLABLE LEE
-120d ETHIOPIC SYLLABLE LE
-120e ETHIOPIC SYLLABLE LO
-120f ETHIOPIC SYLLABLE LWA
-1210 ETHIOPIC SYLLABLE HHA
-1211 ETHIOPIC SYLLABLE HHU
-1212 ETHIOPIC SYLLABLE HHI
-1213 ETHIOPIC SYLLABLE HHAA
-1214 ETHIOPIC SYLLABLE HHEE
-1215 ETHIOPIC SYLLABLE HHE
-1216 ETHIOPIC SYLLABLE HHO
-1217 ETHIOPIC SYLLABLE HHWA
-1218 ETHIOPIC SYLLABLE MA
-1219 ETHIOPIC SYLLABLE MU
-121a ETHIOPIC SYLLABLE MI
-121b ETHIOPIC SYLLABLE MAA
-121c ETHIOPIC SYLLABLE MEE
-121d ETHIOPIC SYLLABLE ME
-121e ETHIOPIC SYLLABLE MO
-121f ETHIOPIC SYLLABLE MWA
-1220 ETHIOPIC SYLLABLE SZA
-1221 ETHIOPIC SYLLABLE SZU
-1222 ETHIOPIC SYLLABLE SZI
-1223 ETHIOPIC SYLLABLE SZAA
-1224 ETHIOPIC SYLLABLE SZEE
-1225 ETHIOPIC SYLLABLE SZE
-1226 ETHIOPIC SYLLABLE SZO
-1227 ETHIOPIC SYLLABLE SZWA
-1228 ETHIOPIC SYLLABLE RA
-1229 ETHIOPIC SYLLABLE RU
-122a ETHIOPIC SYLLABLE RI
-122b ETHIOPIC SYLLABLE RAA
-122c ETHIOPIC SYLLABLE REE
-122d ETHIOPIC SYLLABLE RE
-122e ETHIOPIC SYLLABLE RO
-122f ETHIOPIC SYLLABLE RWA
-1230 ETHIOPIC SYLLABLE SA
-1231 ETHIOPIC SYLLABLE SU
-1232 ETHIOPIC SYLLABLE SI
-1233 ETHIOPIC SYLLABLE SAA
-1234 ETHIOPIC SYLLABLE SEE
-1235 ETHIOPIC SYLLABLE SE
-1236 ETHIOPIC SYLLABLE SO
-1237 ETHIOPIC SYLLABLE SWA
-1238 ETHIOPIC SYLLABLE SHA
-1239 ETHIOPIC SYLLABLE SHU
-123a ETHIOPIC SYLLABLE SHI
-123b ETHIOPIC SYLLABLE SHAA
-123c ETHIOPIC SYLLABLE SHEE
-123d ETHIOPIC SYLLABLE SHE
-123e ETHIOPIC SYLLABLE SHO
-123f ETHIOPIC SYLLABLE SHWA
-1240 ETHIOPIC SYLLABLE QA
-1241 ETHIOPIC SYLLABLE QU
-1242 ETHIOPIC SYLLABLE QI
-1243 ETHIOPIC SYLLABLE QAA
-1244 ETHIOPIC SYLLABLE QEE
-1245 ETHIOPIC SYLLABLE QE
-1246 ETHIOPIC SYLLABLE QO
-1248 ETHIOPIC SYLLABLE QWA
-124a ETHIOPIC SYLLABLE QWI
-124b ETHIOPIC SYLLABLE QWAA
-124c ETHIOPIC SYLLABLE QWEE
-124d ETHIOPIC SYLLABLE QWE
-1250 ETHIOPIC SYLLABLE QHA
-1251 ETHIOPIC SYLLABLE QHU
-1252 ETHIOPIC SYLLABLE QHI
-1253 ETHIOPIC SYLLABLE QHAA
-1254 ETHIOPIC SYLLABLE QHEE
-1255 ETHIOPIC SYLLABLE QHE
-1256 ETHIOPIC SYLLABLE QHO
-1258 ETHIOPIC SYLLABLE QHWA
-125a ETHIOPIC SYLLABLE QHWI
-125b ETHIOPIC SYLLABLE QHWAA
-125c ETHIOPIC SYLLABLE QHWEE
-125d ETHIOPIC SYLLABLE QHWE
-1260 ETHIOPIC SYLLABLE BA
-1261 ETHIOPIC SYLLABLE BU
-1262 ETHIOPIC SYLLABLE BI
-1263 ETHIOPIC SYLLABLE BAA
-1264 ETHIOPIC SYLLABLE BEE
-1265 ETHIOPIC SYLLABLE BE
-1266 ETHIOPIC SYLLABLE BO
-1267 ETHIOPIC SYLLABLE BWA
-1268 ETHIOPIC SYLLABLE VA
-1269 ETHIOPIC SYLLABLE VU
-126a ETHIOPIC SYLLABLE VI
-126b ETHIOPIC SYLLABLE VAA
-126c ETHIOPIC SYLLABLE VEE
-126d ETHIOPIC SYLLABLE VE
-126e ETHIOPIC SYLLABLE VO
-126f ETHIOPIC SYLLABLE VWA
-1270 ETHIOPIC SYLLABLE TA
-1271 ETHIOPIC SYLLABLE TU
-1272 ETHIOPIC SYLLABLE TI
-1273 ETHIOPIC SYLLABLE TAA
-1274 ETHIOPIC SYLLABLE TEE
-1275 ETHIOPIC SYLLABLE TE
-1276 ETHIOPIC SYLLABLE TO
-1277 ETHIOPIC SYLLABLE TWA
-1278 ETHIOPIC SYLLABLE CA
-1279 ETHIOPIC SYLLABLE CU
-127a ETHIOPIC SYLLABLE CI
-127b ETHIOPIC SYLLABLE CAA
-127c ETHIOPIC SYLLABLE CEE
-127d ETHIOPIC SYLLABLE CE
-127e ETHIOPIC SYLLABLE CO
-127f ETHIOPIC SYLLABLE CWA
-1280 ETHIOPIC SYLLABLE XA
-1281 ETHIOPIC SYLLABLE XU
-1282 ETHIOPIC SYLLABLE XI
-1283 ETHIOPIC SYLLABLE XAA
-1284 ETHIOPIC SYLLABLE XEE
-1285 ETHIOPIC SYLLABLE XE
-1286 ETHIOPIC SYLLABLE XO
-1288 ETHIOPIC SYLLABLE XWA
-128a ETHIOPIC SYLLABLE XWI
-128b ETHIOPIC SYLLABLE XWAA
-128c ETHIOPIC SYLLABLE XWEE
-128d ETHIOPIC SYLLABLE XWE
-1290 ETHIOPIC SYLLABLE NA
-1291 ETHIOPIC SYLLABLE NU
-1292 ETHIOPIC SYLLABLE NI
-1293 ETHIOPIC SYLLABLE NAA
-1294 ETHIOPIC SYLLABLE NEE
-1295 ETHIOPIC SYLLABLE NE
-1296 ETHIOPIC SYLLABLE NO
-1297 ETHIOPIC SYLLABLE NWA
-1298 ETHIOPIC SYLLABLE NYA
-1299 ETHIOPIC SYLLABLE NYU
-129a ETHIOPIC SYLLABLE NYI
-129b ETHIOPIC SYLLABLE NYAA
-129c ETHIOPIC SYLLABLE NYEE
-129d ETHIOPIC SYLLABLE NYE
-129e ETHIOPIC SYLLABLE NYO
-129f ETHIOPIC SYLLABLE NYWA
-12a0 ETHIOPIC SYLLABLE GLOTTAL A
-12a1 ETHIOPIC SYLLABLE GLOTTAL U
-12a2 ETHIOPIC SYLLABLE GLOTTAL I
-12a3 ETHIOPIC SYLLABLE GLOTTAL AA
-12a4 ETHIOPIC SYLLABLE GLOTTAL EE
-12a5 ETHIOPIC SYLLABLE GLOTTAL E
-12a6 ETHIOPIC SYLLABLE GLOTTAL O
-12a7 ETHIOPIC SYLLABLE GLOTTAL WA
-12a8 ETHIOPIC SYLLABLE KA
-12a9 ETHIOPIC SYLLABLE KU
-12aa ETHIOPIC SYLLABLE KI
-12ab ETHIOPIC SYLLABLE KAA
-12ac ETHIOPIC SYLLABLE KEE
-12ad ETHIOPIC SYLLABLE KE
-12ae ETHIOPIC SYLLABLE KO
-12b0 ETHIOPIC SYLLABLE KWA
-12b2 ETHIOPIC SYLLABLE KWI
-12b3 ETHIOPIC SYLLABLE KWAA
-12b4 ETHIOPIC SYLLABLE KWEE
-12b5 ETHIOPIC SYLLABLE KWE
-12b8 ETHIOPIC SYLLABLE KXA
-12b9 ETHIOPIC SYLLABLE KXU
-12ba ETHIOPIC SYLLABLE KXI
-12bb ETHIOPIC SYLLABLE KXAA
-12bc ETHIOPIC SYLLABLE KXEE
-12bd ETHIOPIC SYLLABLE KXE
-12be ETHIOPIC SYLLABLE KXO
-12c0 ETHIOPIC SYLLABLE KXWA
-12c2 ETHIOPIC SYLLABLE KXWI
-12c3 ETHIOPIC SYLLABLE KXWAA
-12c4 ETHIOPIC SYLLABLE KXWEE
-12c5 ETHIOPIC SYLLABLE KXWE
-12c8 ETHIOPIC SYLLABLE WA
-12c9 ETHIOPIC SYLLABLE WU
-12ca ETHIOPIC SYLLABLE WI
-12cb ETHIOPIC SYLLABLE WAA
-12cc ETHIOPIC SYLLABLE WEE
-12cd ETHIOPIC SYLLABLE WE
-12ce ETHIOPIC SYLLABLE WO
-12d0 ETHIOPIC SYLLABLE PHARYNGEAL A
-12d1 ETHIOPIC SYLLABLE PHARYNGEAL U
-12d2 ETHIOPIC SYLLABLE PHARYNGEAL I
-12d3 ETHIOPIC SYLLABLE PHARYNGEAL AA
-12d4 ETHIOPIC SYLLABLE PHARYNGEAL EE
-12d5 ETHIOPIC SYLLABLE PHARYNGEAL E
-12d6 ETHIOPIC SYLLABLE PHARYNGEAL O
-12d8 ETHIOPIC SYLLABLE ZA
-12d9 ETHIOPIC SYLLABLE ZU
-12da ETHIOPIC SYLLABLE ZI
-12db ETHIOPIC SYLLABLE ZAA
-12dc ETHIOPIC SYLLABLE ZEE
-12dd ETHIOPIC SYLLABLE ZE
-12de ETHIOPIC SYLLABLE ZO
-12df ETHIOPIC SYLLABLE ZWA
-12e0 ETHIOPIC SYLLABLE ZHA
-12e1 ETHIOPIC SYLLABLE ZHU
-12e2 ETHIOPIC SYLLABLE ZHI
-12e3 ETHIOPIC SYLLABLE ZHAA
-12e4 ETHIOPIC SYLLABLE ZHEE
-12e5 ETHIOPIC SYLLABLE ZHE
-12e6 ETHIOPIC SYLLABLE ZHO
-12e7 ETHIOPIC SYLLABLE ZHWA
-12e8 ETHIOPIC SYLLABLE YA
-12e9 ETHIOPIC SYLLABLE YU
-12ea ETHIOPIC SYLLABLE YI
-12eb ETHIOPIC SYLLABLE YAA
-12ec ETHIOPIC SYLLABLE YEE
-12ed ETHIOPIC SYLLABLE YE
-12ee ETHIOPIC SYLLABLE YO
-12f0 ETHIOPIC SYLLABLE DA
-12f1 ETHIOPIC SYLLABLE DU
-12f2 ETHIOPIC SYLLABLE DI
-12f3 ETHIOPIC SYLLABLE DAA
-12f4 ETHIOPIC SYLLABLE DEE
-12f5 ETHIOPIC SYLLABLE DE
-12f6 ETHIOPIC SYLLABLE DO
-12f7 ETHIOPIC SYLLABLE DWA
-12f8 ETHIOPIC SYLLABLE DDA
-12f9 ETHIOPIC SYLLABLE DDU
-12fa ETHIOPIC SYLLABLE DDI
-12fb ETHIOPIC SYLLABLE DDAA
-12fc ETHIOPIC SYLLABLE DDEE
-12fd ETHIOPIC SYLLABLE DDE
-12fe ETHIOPIC SYLLABLE DDO
-12ff ETHIOPIC SYLLABLE DDWA
-1300 ETHIOPIC SYLLABLE JA
-1301 ETHIOPIC SYLLABLE JU
-1302 ETHIOPIC SYLLABLE JI
-1303 ETHIOPIC SYLLABLE JAA
-1304 ETHIOPIC SYLLABLE JEE
-1305 ETHIOPIC SYLLABLE JE
-1306 ETHIOPIC SYLLABLE JO
-1307 ETHIOPIC SYLLABLE JWA
-1308 ETHIOPIC SYLLABLE GA
-1309 ETHIOPIC SYLLABLE GU
-130a ETHIOPIC SYLLABLE GI
-130b ETHIOPIC SYLLABLE GAA
-130c ETHIOPIC SYLLABLE GEE
-130d ETHIOPIC SYLLABLE GE
-130e ETHIOPIC SYLLABLE GO
-1310 ETHIOPIC SYLLABLE GWA
-1312 ETHIOPIC SYLLABLE GWI
-1313 ETHIOPIC SYLLABLE GWAA
-1314 ETHIOPIC SYLLABLE GWEE
-1315 ETHIOPIC SYLLABLE GWE
-1318 ETHIOPIC SYLLABLE GGA
-1319 ETHIOPIC SYLLABLE GGU
-131a ETHIOPIC SYLLABLE GGI
-131b ETHIOPIC SYLLABLE GGAA
-131c ETHIOPIC SYLLABLE GGEE
-131d ETHIOPIC SYLLABLE GGE
-131e ETHIOPIC SYLLABLE GGO
-1320 ETHIOPIC SYLLABLE THA
-1321 ETHIOPIC SYLLABLE THU
-1322 ETHIOPIC SYLLABLE THI
-1323 ETHIOPIC SYLLABLE THAA
-1324 ETHIOPIC SYLLABLE THEE
-1325 ETHIOPIC SYLLABLE THE
-1326 ETHIOPIC SYLLABLE THO
-1327 ETHIOPIC SYLLABLE THWA
-1328 ETHIOPIC SYLLABLE CHA
-1329 ETHIOPIC SYLLABLE CHU
-132a ETHIOPIC SYLLABLE CHI
-132b ETHIOPIC SYLLABLE CHAA
-132c ETHIOPIC SYLLABLE CHEE
-132d ETHIOPIC SYLLABLE CHE
-132e ETHIOPIC SYLLABLE CHO
-132f ETHIOPIC SYLLABLE CHWA
-1330 ETHIOPIC SYLLABLE PHA
-1331 ETHIOPIC SYLLABLE PHU
-1332 ETHIOPIC SYLLABLE PHI
-1333 ETHIOPIC SYLLABLE PHAA
-1334 ETHIOPIC SYLLABLE PHEE
-1335 ETHIOPIC SYLLABLE PHE
-1336 ETHIOPIC SYLLABLE PHO
-1337 ETHIOPIC SYLLABLE PHWA
-1338 ETHIOPIC SYLLABLE TSA
-1339 ETHIOPIC SYLLABLE TSU
-133a ETHIOPIC SYLLABLE TSI
-133b ETHIOPIC SYLLABLE TSAA
-133c ETHIOPIC SYLLABLE TSEE
-133d ETHIOPIC SYLLABLE TSE
-133e ETHIOPIC SYLLABLE TSO
-133f ETHIOPIC SYLLABLE TSWA
-1340 ETHIOPIC SYLLABLE TZA
-1341 ETHIOPIC SYLLABLE TZU
-1342 ETHIOPIC SYLLABLE TZI
-1343 ETHIOPIC SYLLABLE TZAA
-1344 ETHIOPIC SYLLABLE TZEE
-1345 ETHIOPIC SYLLABLE TZE
-1346 ETHIOPIC SYLLABLE TZO
-1348 ETHIOPIC SYLLABLE FA
-1349 ETHIOPIC SYLLABLE FU
-134a ETHIOPIC SYLLABLE FI
-134b ETHIOPIC SYLLABLE FAA
-134c ETHIOPIC SYLLABLE FEE
-134d ETHIOPIC SYLLABLE FE
-134e ETHIOPIC SYLLABLE FO
-134f ETHIOPIC SYLLABLE FWA
-1350 ETHIOPIC SYLLABLE PA
-1351 ETHIOPIC SYLLABLE PU
-1352 ETHIOPIC SYLLABLE PI
-1353 ETHIOPIC SYLLABLE PAA
-1354 ETHIOPIC SYLLABLE PEE
-1355 ETHIOPIC SYLLABLE PE
-1356 ETHIOPIC SYLLABLE PO
-1357 ETHIOPIC SYLLABLE PWA
-1358 ETHIOPIC SYLLABLE RYA
-1359 ETHIOPIC SYLLABLE MYA
-135a ETHIOPIC SYLLABLE FYA
-1361 ETHIOPIC WORDSPACE
-1362 ETHIOPIC FULL STOP
-1363 ETHIOPIC COMMA
-1364 ETHIOPIC SEMICOLON
-1365 ETHIOPIC COLON
-1366 ETHIOPIC PREFACE COLON
-1367 ETHIOPIC QUESTION MARK
-1368 ETHIOPIC PARAGRAPH SEPARATOR
-1369 ETHIOPIC DIGIT ONE
-136a ETHIOPIC DIGIT TWO
-136b ETHIOPIC DIGIT THREE
-136c ETHIOPIC DIGIT FOUR
-136d ETHIOPIC DIGIT FIVE
-136e ETHIOPIC DIGIT SIX
-136f ETHIOPIC DIGIT SEVEN
-1370 ETHIOPIC DIGIT EIGHT
-1371 ETHIOPIC DIGIT NINE
-1372 ETHIOPIC NUMBER TEN
-1373 ETHIOPIC NUMBER TWENTY
-1374 ETHIOPIC NUMBER THIRTY
-1375 ETHIOPIC NUMBER FORTY
-1376 ETHIOPIC NUMBER FIFTY
-1377 ETHIOPIC NUMBER SIXTY
-1378 ETHIOPIC NUMBER SEVENTY
-1379 ETHIOPIC NUMBER EIGHTY
-137a ETHIOPIC NUMBER NINETY
-137b ETHIOPIC NUMBER HUNDRED
-137c ETHIOPIC NUMBER TEN THOUSAND
-13a0 CHEROKEE LETTER A
-13a1 CHEROKEE LETTER E
-13a2 CHEROKEE LETTER I
-13a3 CHEROKEE LETTER O
-13a4 CHEROKEE LETTER U
-13a5 CHEROKEE LETTER V
-13a6 CHEROKEE LETTER GA
-13a7 CHEROKEE LETTER KA
-13a8 CHEROKEE LETTER GE
-13a9 CHEROKEE LETTER GI
-13aa CHEROKEE LETTER GO
-13ab CHEROKEE LETTER GU
-13ac CHEROKEE LETTER GV
-13ad CHEROKEE LETTER HA
-13ae CHEROKEE LETTER HE
-13af CHEROKEE LETTER HI
-13b0 CHEROKEE LETTER HO
-13b1 CHEROKEE LETTER HU
-13b2 CHEROKEE LETTER HV
-13b3 CHEROKEE LETTER LA
-13b4 CHEROKEE LETTER LE
-13b5 CHEROKEE LETTER LI
-13b6 CHEROKEE LETTER LO
-13b7 CHEROKEE LETTER LU
-13b8 CHEROKEE LETTER LV
-13b9 CHEROKEE LETTER MA
-13ba CHEROKEE LETTER ME
-13bb CHEROKEE LETTER MI
-13bc CHEROKEE LETTER MO
-13bd CHEROKEE LETTER MU
-13be CHEROKEE LETTER NA
-13bf CHEROKEE LETTER HNA
-13c0 CHEROKEE LETTER NAH
-13c1 CHEROKEE LETTER NE
-13c2 CHEROKEE LETTER NI
-13c3 CHEROKEE LETTER NO
-13c4 CHEROKEE LETTER NU
-13c5 CHEROKEE LETTER NV
-13c6 CHEROKEE LETTER QUA
-13c7 CHEROKEE LETTER QUE
-13c8 CHEROKEE LETTER QUI
-13c9 CHEROKEE LETTER QUO
-13ca CHEROKEE LETTER QUU
-13cb CHEROKEE LETTER QUV
-13cc CHEROKEE LETTER SA
-13cd CHEROKEE LETTER S
-13ce CHEROKEE LETTER SE
-13cf CHEROKEE LETTER SI
-13d0 CHEROKEE LETTER SO
-13d1 CHEROKEE LETTER SU
-13d2 CHEROKEE LETTER SV
-13d3 CHEROKEE LETTER DA
-13d4 CHEROKEE LETTER TA
-13d5 CHEROKEE LETTER DE
-13d6 CHEROKEE LETTER TE
-13d7 CHEROKEE LETTER DI
-13d8 CHEROKEE LETTER TI
-13d9 CHEROKEE LETTER DO
-13da CHEROKEE LETTER DU
-13db CHEROKEE LETTER DV
-13dc CHEROKEE LETTER DLA
-13dd CHEROKEE LETTER TLA
-13de CHEROKEE LETTER TLE
-13df CHEROKEE LETTER TLI
-13e0 CHEROKEE LETTER TLO
-13e1 CHEROKEE LETTER TLU
-13e2 CHEROKEE LETTER TLV
-13e3 CHEROKEE LETTER TSA
-13e4 CHEROKEE LETTER TSE
-13e5 CHEROKEE LETTER TSI
-13e6 CHEROKEE LETTER TSO
-13e7 CHEROKEE LETTER TSU
-13e8 CHEROKEE LETTER TSV
-13e9 CHEROKEE LETTER WA
-13ea CHEROKEE LETTER WE
-13eb CHEROKEE LETTER WI
-13ec CHEROKEE LETTER WO
-13ed CHEROKEE LETTER WU
-13ee CHEROKEE LETTER WV
-13ef CHEROKEE LETTER YA
-13f0 CHEROKEE LETTER YE
-13f1 CHEROKEE LETTER YI
-13f2 CHEROKEE LETTER YO
-13f3 CHEROKEE LETTER YU
-13f4 CHEROKEE LETTER YV
-1401 CANADIAN SYLLABICS E
-1402 CANADIAN SYLLABICS AAI
-1403 CANADIAN SYLLABICS I
-1404 CANADIAN SYLLABICS II
-1405 CANADIAN SYLLABICS O
-1406 CANADIAN SYLLABICS OO
-1407 CANADIAN SYLLABICS Y-CREE OO
-1408 CANADIAN SYLLABICS CARRIER EE
-1409 CANADIAN SYLLABICS CARRIER I
-140a CANADIAN SYLLABICS A
-140b CANADIAN SYLLABICS AA
-140c CANADIAN SYLLABICS WE
-140d CANADIAN SYLLABICS WEST-CREE WE
-140e CANADIAN SYLLABICS WI
-140f CANADIAN SYLLABICS WEST-CREE WI
-1410 CANADIAN SYLLABICS WII
-1411 CANADIAN SYLLABICS WEST-CREE WII
-1412 CANADIAN SYLLABICS WO
-1413 CANADIAN SYLLABICS WEST-CREE WO
-1414 CANADIAN SYLLABICS WOO
-1415 CANADIAN SYLLABICS WEST-CREE WOO
-1416 CANADIAN SYLLABICS NASKAPI WOO
-1417 CANADIAN SYLLABICS WA
-1418 CANADIAN SYLLABICS WEST-CREE WA
-1419 CANADIAN SYLLABICS WAA
-141a CANADIAN SYLLABICS WEST-CREE WAA
-141b CANADIAN SYLLABICS NASKAPI WAA
-141c CANADIAN SYLLABICS AI
-141d CANADIAN SYLLABICS Y-CREE W
-141e CANADIAN SYLLABICS GLOTTAL STOP
-141f CANADIAN SYLLABICS FINAL ACUTE
-1420 CANADIAN SYLLABICS FINAL GRAVE
-1421 CANADIAN SYLLABICS FINAL BOTTOM HALF RING
-1422 CANADIAN SYLLABICS FINAL TOP HALF RING
-1423 CANADIAN SYLLABICS FINAL RIGHT HALF RING
-1424 CANADIAN SYLLABICS FINAL RING
-1425 CANADIAN SYLLABICS FINAL DOUBLE ACUTE
-1426 CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
-1427 CANADIAN SYLLABICS FINAL MIDDLE DOT
-1428 CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
-1429 CANADIAN SYLLABICS FINAL PLUS
-142a CANADIAN SYLLABICS FINAL DOWN TACK
-142b CANADIAN SYLLABICS EN
-142c CANADIAN SYLLABICS IN
-142d CANADIAN SYLLABICS ON
-142e CANADIAN SYLLABICS AN
-142f CANADIAN SYLLABICS PE
-1430 CANADIAN SYLLABICS PAAI
-1431 CANADIAN SYLLABICS PI
-1432 CANADIAN SYLLABICS PII
-1433 CANADIAN SYLLABICS PO
-1434 CANADIAN SYLLABICS POO
-1435 CANADIAN SYLLABICS Y-CREE POO
-1436 CANADIAN SYLLABICS CARRIER HEE
-1437 CANADIAN SYLLABICS CARRIER HI
-1438 CANADIAN SYLLABICS PA
-1439 CANADIAN SYLLABICS PAA
-143a CANADIAN SYLLABICS PWE
-143b CANADIAN SYLLABICS WEST-CREE PWE
-143c CANADIAN SYLLABICS PWI
-143d CANADIAN SYLLABICS WEST-CREE PWI
-143e CANADIAN SYLLABICS PWII
-143f CANADIAN SYLLABICS WEST-CREE PWII
-1440 CANADIAN SYLLABICS PWO
-1441 CANADIAN SYLLABICS WEST-CREE PWO
-1442 CANADIAN SYLLABICS PWOO
-1443 CANADIAN SYLLABICS WEST-CREE PWOO
-1444 CANADIAN SYLLABICS PWA
-1445 CANADIAN SYLLABICS WEST-CREE PWA
-1446 CANADIAN SYLLABICS PWAA
-1447 CANADIAN SYLLABICS WEST-CREE PWAA
-1448 CANADIAN SYLLABICS Y-CREE PWAA
-1449 CANADIAN SYLLABICS P
-144a CANADIAN SYLLABICS WEST-CREE P
-144b CANADIAN SYLLABICS CARRIER H
-144c CANADIAN SYLLABICS TE
-144d CANADIAN SYLLABICS TAAI
-144e CANADIAN SYLLABICS TI
-144f CANADIAN SYLLABICS TII
-1450 CANADIAN SYLLABICS TO
-1451 CANADIAN SYLLABICS TOO
-1452 CANADIAN SYLLABICS Y-CREE TOO
-1453 CANADIAN SYLLABICS CARRIER DEE
-1454 CANADIAN SYLLABICS CARRIER DI
-1455 CANADIAN SYLLABICS TA
-1456 CANADIAN SYLLABICS TAA
-1457 CANADIAN SYLLABICS TWE
-1458 CANADIAN SYLLABICS WEST-CREE TWE
-1459 CANADIAN SYLLABICS TWI
-145a CANADIAN SYLLABICS WEST-CREE TWI
-145b CANADIAN SYLLABICS TWII
-145c CANADIAN SYLLABICS WEST-CREE TWII
-145d CANADIAN SYLLABICS TWO
-145e CANADIAN SYLLABICS WEST-CREE TWO
-145f CANADIAN SYLLABICS TWOO
-1460 CANADIAN SYLLABICS WEST-CREE TWOO
-1461 CANADIAN SYLLABICS TWA
-1462 CANADIAN SYLLABICS WEST-CREE TWA
-1463 CANADIAN SYLLABICS TWAA
-1464 CANADIAN SYLLABICS WEST-CREE TWAA
-1465 CANADIAN SYLLABICS NASKAPI TWAA
-1466 CANADIAN SYLLABICS T
-1467 CANADIAN SYLLABICS TTE
-1468 CANADIAN SYLLABICS TTI
-1469 CANADIAN SYLLABICS TTO
-146a CANADIAN SYLLABICS TTA
-146b CANADIAN SYLLABICS KE
-146c CANADIAN SYLLABICS KAAI
-146d CANADIAN SYLLABICS KI
-146e CANADIAN SYLLABICS KII
-146f CANADIAN SYLLABICS KO
-1470 CANADIAN SYLLABICS KOO
-1471 CANADIAN SYLLABICS Y-CREE KOO
-1472 CANADIAN SYLLABICS KA
-1473 CANADIAN SYLLABICS KAA
-1474 CANADIAN SYLLABICS KWE
-1475 CANADIAN SYLLABICS WEST-CREE KWE
-1476 CANADIAN SYLLABICS KWI
-1477 CANADIAN SYLLABICS WEST-CREE KWI
-1478 CANADIAN SYLLABICS KWII
-1479 CANADIAN SYLLABICS WEST-CREE KWII
-147a CANADIAN SYLLABICS KWO
-147b CANADIAN SYLLABICS WEST-CREE KWO
-147c CANADIAN SYLLABICS KWOO
-147d CANADIAN SYLLABICS WEST-CREE KWOO
-147e CANADIAN SYLLABICS KWA
-147f CANADIAN SYLLABICS WEST-CREE KWA
-1480 CANADIAN SYLLABICS KWAA
-1481 CANADIAN SYLLABICS WEST-CREE KWAA
-1482 CANADIAN SYLLABICS NASKAPI KWAA
-1483 CANADIAN SYLLABICS K
-1484 CANADIAN SYLLABICS KW
-1485 CANADIAN SYLLABICS SOUTH-SLAVEY KEH
-1486 CANADIAN SYLLABICS SOUTH-SLAVEY KIH
-1487 CANADIAN SYLLABICS SOUTH-SLAVEY KOH
-1488 CANADIAN SYLLABICS SOUTH-SLAVEY KAH
-1489 CANADIAN SYLLABICS CE
-148a CANADIAN SYLLABICS CAAI
-148b CANADIAN SYLLABICS CI
-148c CANADIAN SYLLABICS CII
-148d CANADIAN SYLLABICS CO
-148e CANADIAN SYLLABICS COO
-148f CANADIAN SYLLABICS Y-CREE COO
-1490 CANADIAN SYLLABICS CA
-1491 CANADIAN SYLLABICS CAA
-1492 CANADIAN SYLLABICS CWE
-1493 CANADIAN SYLLABICS WEST-CREE CWE
-1494 CANADIAN SYLLABICS CWI
-1495 CANADIAN SYLLABICS WEST-CREE CWI
-1496 CANADIAN SYLLABICS CWII
-1497 CANADIAN SYLLABICS WEST-CREE CWII
-1498 CANADIAN SYLLABICS CWO
-1499 CANADIAN SYLLABICS WEST-CREE CWO
-149a CANADIAN SYLLABICS CWOO
-149b CANADIAN SYLLABICS WEST-CREE CWOO
-149c CANADIAN SYLLABICS CWA
-149d CANADIAN SYLLABICS WEST-CREE CWA
-149e CANADIAN SYLLABICS CWAA
-149f CANADIAN SYLLABICS WEST-CREE CWAA
-14a0 CANADIAN SYLLABICS NASKAPI CWAA
-14a1 CANADIAN SYLLABICS C
-14a2 CANADIAN SYLLABICS SAYISI TH
-14a3 CANADIAN SYLLABICS ME
-14a4 CANADIAN SYLLABICS MAAI
-14a5 CANADIAN SYLLABICS MI
-14a6 CANADIAN SYLLABICS MII
-14a7 CANADIAN SYLLABICS MO
-14a8 CANADIAN SYLLABICS MOO
-14a9 CANADIAN SYLLABICS Y-CREE MOO
-14aa CANADIAN SYLLABICS MA
-14ab CANADIAN SYLLABICS MAA
-14ac CANADIAN SYLLABICS MWE
-14ad CANADIAN SYLLABICS WEST-CREE MWE
-14ae CANADIAN SYLLABICS MWI
-14af CANADIAN SYLLABICS WEST-CREE MWI
-14b0 CANADIAN SYLLABICS MWII
-14b1 CANADIAN SYLLABICS WEST-CREE MWII
-14b2 CANADIAN SYLLABICS MWO
-14b3 CANADIAN SYLLABICS WEST-CREE MWO
-14b4 CANADIAN SYLLABICS MWOO
-14b5 CANADIAN SYLLABICS WEST-CREE MWOO
-14b6 CANADIAN SYLLABICS MWA
-14b7 CANADIAN SYLLABICS WEST-CREE MWA
-14b8 CANADIAN SYLLABICS MWAA
-14b9 CANADIAN SYLLABICS WEST-CREE MWAA
-14ba CANADIAN SYLLABICS NASKAPI MWAA
-14bb CANADIAN SYLLABICS M
-14bc CANADIAN SYLLABICS WEST-CREE M
-14bd CANADIAN SYLLABICS MH
-14be CANADIAN SYLLABICS ATHAPASCAN M
-14bf CANADIAN SYLLABICS SAYISI M
-14c0 CANADIAN SYLLABICS NE
-14c1 CANADIAN SYLLABICS NAAI
-14c2 CANADIAN SYLLABICS NI
-14c3 CANADIAN SYLLABICS NII
-14c4 CANADIAN SYLLABICS NO
-14c5 CANADIAN SYLLABICS NOO
-14c6 CANADIAN SYLLABICS Y-CREE NOO
-14c7 CANADIAN SYLLABICS NA
-14c8 CANADIAN SYLLABICS NAA
-14c9 CANADIAN SYLLABICS NWE
-14ca CANADIAN SYLLABICS WEST-CREE NWE
-14cb CANADIAN SYLLABICS NWA
-14cc CANADIAN SYLLABICS WEST-CREE NWA
-14cd CANADIAN SYLLABICS NWAA
-14ce CANADIAN SYLLABICS WEST-CREE NWAA
-14cf CANADIAN SYLLABICS NASKAPI NWAA
-14d0 CANADIAN SYLLABICS N
-14d1 CANADIAN SYLLABICS CARRIER NG
-14d2 CANADIAN SYLLABICS NH
-14d3 CANADIAN SYLLABICS LE
-14d4 CANADIAN SYLLABICS LAAI
-14d5 CANADIAN SYLLABICS LI
-14d6 CANADIAN SYLLABICS LII
-14d7 CANADIAN SYLLABICS LO
-14d8 CANADIAN SYLLABICS LOO
-14d9 CANADIAN SYLLABICS Y-CREE LOO
-14da CANADIAN SYLLABICS LA
-14db CANADIAN SYLLABICS LAA
-14dc CANADIAN SYLLABICS LWE
-14dd CANADIAN SYLLABICS WEST-CREE LWE
-14de CANADIAN SYLLABICS LWI
-14df CANADIAN SYLLABICS WEST-CREE LWI
-14e0 CANADIAN SYLLABICS LWII
-14e1 CANADIAN SYLLABICS WEST-CREE LWII
-14e2 CANADIAN SYLLABICS LWO
-14e3 CANADIAN SYLLABICS WEST-CREE LWO
-14e4 CANADIAN SYLLABICS LWOO
-14e5 CANADIAN SYLLABICS WEST-CREE LWOO
-14e6 CANADIAN SYLLABICS LWA
-14e7 CANADIAN SYLLABICS WEST-CREE LWA
-14e8 CANADIAN SYLLABICS LWAA
-14e9 CANADIAN SYLLABICS WEST-CREE LWAA
-14ea CANADIAN SYLLABICS L
-14eb CANADIAN SYLLABICS WEST-CREE L
-14ec CANADIAN SYLLABICS MEDIAL L
-14ed CANADIAN SYLLABICS SE
-14ee CANADIAN SYLLABICS SAAI
-14ef CANADIAN SYLLABICS SI
-14f0 CANADIAN SYLLABICS SII
-14f1 CANADIAN SYLLABICS SO
-14f2 CANADIAN SYLLABICS SOO
-14f3 CANADIAN SYLLABICS Y-CREE SOO
-14f4 CANADIAN SYLLABICS SA
-14f5 CANADIAN SYLLABICS SAA
-14f6 CANADIAN SYLLABICS SWE
-14f7 CANADIAN SYLLABICS WEST-CREE SWE
-14f8 CANADIAN SYLLABICS SWI
-14f9 CANADIAN SYLLABICS WEST-CREE SWI
-14fa CANADIAN SYLLABICS SWII
-14fb CANADIAN SYLLABICS WEST-CREE SWII
-14fc CANADIAN SYLLABICS SWO
-14fd CANADIAN SYLLABICS WEST-CREE SWO
-14fe CANADIAN SYLLABICS SWOO
-14ff CANADIAN SYLLABICS WEST-CREE SWOO
-1500 CANADIAN SYLLABICS SWA
-1501 CANADIAN SYLLABICS WEST-CREE SWA
-1502 CANADIAN SYLLABICS SWAA
-1503 CANADIAN SYLLABICS WEST-CREE SWAA
-1504 CANADIAN SYLLABICS NASKAPI SWAA
-1505 CANADIAN SYLLABICS S
-1506 CANADIAN SYLLABICS ATHAPASCAN S
-1507 CANADIAN SYLLABICS SW
-1508 CANADIAN SYLLABICS BLACKFOOT S
-1509 CANADIAN SYLLABICS MOOSE-CREE SK
-150a CANADIAN SYLLABICS NASKAPI SKW
-150b CANADIAN SYLLABICS NASKAPI S-W
-150c CANADIAN SYLLABICS NASKAPI SPWA
-150d CANADIAN SYLLABICS NASKAPI STWA
-150e CANADIAN SYLLABICS NASKAPI SKWA
-150f CANADIAN SYLLABICS NASKAPI SCWA
-1510 CANADIAN SYLLABICS SHE
-1511 CANADIAN SYLLABICS SHI
-1512 CANADIAN SYLLABICS SHII
-1513 CANADIAN SYLLABICS SHO
-1514 CANADIAN SYLLABICS SHOO
-1515 CANADIAN SYLLABICS SHA
-1516 CANADIAN SYLLABICS SHAA
-1517 CANADIAN SYLLABICS SHWE
-1518 CANADIAN SYLLABICS WEST-CREE SHWE
-1519 CANADIAN SYLLABICS SHWI
-151a CANADIAN SYLLABICS WEST-CREE SHWI
-151b CANADIAN SYLLABICS SHWII
-151c CANADIAN SYLLABICS WEST-CREE SHWII
-151d CANADIAN SYLLABICS SHWO
-151e CANADIAN SYLLABICS WEST-CREE SHWO
-151f CANADIAN SYLLABICS SHWOO
-1520 CANADIAN SYLLABICS WEST-CREE SHWOO
-1521 CANADIAN SYLLABICS SHWA
-1522 CANADIAN SYLLABICS WEST-CREE SHWA
-1523 CANADIAN SYLLABICS SHWAA
-1524 CANADIAN SYLLABICS WEST-CREE SHWAA
-1525 CANADIAN SYLLABICS SH
-1526 CANADIAN SYLLABICS YE
-1527 CANADIAN SYLLABICS YAAI
-1528 CANADIAN SYLLABICS YI
-1529 CANADIAN SYLLABICS YII
-152a CANADIAN SYLLABICS YO
-152b CANADIAN SYLLABICS YOO
-152c CANADIAN SYLLABICS Y-CREE YOO
-152d CANADIAN SYLLABICS YA
-152e CANADIAN SYLLABICS YAA
-152f CANADIAN SYLLABICS YWE
-1530 CANADIAN SYLLABICS WEST-CREE YWE
-1531 CANADIAN SYLLABICS YWI
-1532 CANADIAN SYLLABICS WEST-CREE YWI
-1533 CANADIAN SYLLABICS YWII
-1534 CANADIAN SYLLABICS WEST-CREE YWII
-1535 CANADIAN SYLLABICS YWO
-1536 CANADIAN SYLLABICS WEST-CREE YWO
-1537 CANADIAN SYLLABICS YWOO
-1538 CANADIAN SYLLABICS WEST-CREE YWOO
-1539 CANADIAN SYLLABICS YWA
-153a CANADIAN SYLLABICS WEST-CREE YWA
-153b CANADIAN SYLLABICS YWAA
-153c CANADIAN SYLLABICS WEST-CREE YWAA
-153d CANADIAN SYLLABICS NASKAPI YWAA
-153e CANADIAN SYLLABICS Y
-153f CANADIAN SYLLABICS BIBLE-CREE Y
-1540 CANADIAN SYLLABICS WEST-CREE Y
-1541 CANADIAN SYLLABICS SAYISI YI
-1542 CANADIAN SYLLABICS RE
-1543 CANADIAN SYLLABICS R-CREE RE
-1544 CANADIAN SYLLABICS WEST-CREE LE
-1545 CANADIAN SYLLABICS RAAI
-1546 CANADIAN SYLLABICS RI
-1547 CANADIAN SYLLABICS RII
-1548 CANADIAN SYLLABICS RO
-1549 CANADIAN SYLLABICS ROO
-154a CANADIAN SYLLABICS WEST-CREE LO
-154b CANADIAN SYLLABICS RA
-154c CANADIAN SYLLABICS RAA
-154d CANADIAN SYLLABICS WEST-CREE LA
-154e CANADIAN SYLLABICS RWAA
-154f CANADIAN SYLLABICS WEST-CREE RWAA
-1550 CANADIAN SYLLABICS R
-1551 CANADIAN SYLLABICS WEST-CREE R
-1552 CANADIAN SYLLABICS MEDIAL R
-1553 CANADIAN SYLLABICS FE
-1554 CANADIAN SYLLABICS FAAI
-1555 CANADIAN SYLLABICS FI
-1556 CANADIAN SYLLABICS FII
-1557 CANADIAN SYLLABICS FO
-1558 CANADIAN SYLLABICS FOO
-1559 CANADIAN SYLLABICS FA
-155a CANADIAN SYLLABICS FAA
-155b CANADIAN SYLLABICS FWAA
-155c CANADIAN SYLLABICS WEST-CREE FWAA
-155d CANADIAN SYLLABICS F
-155e CANADIAN SYLLABICS THE
-155f CANADIAN SYLLABICS N-CREE THE
-1560 CANADIAN SYLLABICS THI
-1561 CANADIAN SYLLABICS N-CREE THI
-1562 CANADIAN SYLLABICS THII
-1563 CANADIAN SYLLABICS N-CREE THII
-1564 CANADIAN SYLLABICS THO
-1565 CANADIAN SYLLABICS THOO
-1566 CANADIAN SYLLABICS THA
-1567 CANADIAN SYLLABICS THAA
-1568 CANADIAN SYLLABICS THWAA
-1569 CANADIAN SYLLABICS WEST-CREE THWAA
-156a CANADIAN SYLLABICS TH
-156b CANADIAN SYLLABICS TTHE
-156c CANADIAN SYLLABICS TTHI
-156d CANADIAN SYLLABICS TTHO
-156e CANADIAN SYLLABICS TTHA
-156f CANADIAN SYLLABICS TTH
-1570 CANADIAN SYLLABICS TYE
-1571 CANADIAN SYLLABICS TYI
-1572 CANADIAN SYLLABICS TYO
-1573 CANADIAN SYLLABICS TYA
-1574 CANADIAN SYLLABICS NUNAVIK HE
-1575 CANADIAN SYLLABICS NUNAVIK HI
-1576 CANADIAN SYLLABICS NUNAVIK HII
-1577 CANADIAN SYLLABICS NUNAVIK HO
-1578 CANADIAN SYLLABICS NUNAVIK HOO
-1579 CANADIAN SYLLABICS NUNAVIK HA
-157a CANADIAN SYLLABICS NUNAVIK HAA
-157b CANADIAN SYLLABICS NUNAVIK H
-157c CANADIAN SYLLABICS NUNAVUT H
-157d CANADIAN SYLLABICS HK
-157e CANADIAN SYLLABICS QAAI
-157f CANADIAN SYLLABICS QI
-1580 CANADIAN SYLLABICS QII
-1581 CANADIAN SYLLABICS QO
-1582 CANADIAN SYLLABICS QOO
-1583 CANADIAN SYLLABICS QA
-1584 CANADIAN SYLLABICS QAA
-1585 CANADIAN SYLLABICS Q
-1586 CANADIAN SYLLABICS TLHE
-1587 CANADIAN SYLLABICS TLHI
-1588 CANADIAN SYLLABICS TLHO
-1589 CANADIAN SYLLABICS TLHA
-158a CANADIAN SYLLABICS WEST-CREE RE
-158b CANADIAN SYLLABICS WEST-CREE RI
-158c CANADIAN SYLLABICS WEST-CREE RO
-158d CANADIAN SYLLABICS WEST-CREE RA
-158e CANADIAN SYLLABICS NGAAI
-158f CANADIAN SYLLABICS NGI
-1590 CANADIAN SYLLABICS NGII
-1591 CANADIAN SYLLABICS NGO
-1592 CANADIAN SYLLABICS NGOO
-1593 CANADIAN SYLLABICS NGA
-1594 CANADIAN SYLLABICS NGAA
-1595 CANADIAN SYLLABICS NG
-1596 CANADIAN SYLLABICS NNG
-1597 CANADIAN SYLLABICS SAYISI SHE
-1598 CANADIAN SYLLABICS SAYISI SHI
-1599 CANADIAN SYLLABICS SAYISI SHO
-159a CANADIAN SYLLABICS SAYISI SHA
-159b CANADIAN SYLLABICS WOODS-CREE THE
-159c CANADIAN SYLLABICS WOODS-CREE THI
-159d CANADIAN SYLLABICS WOODS-CREE THO
-159e CANADIAN SYLLABICS WOODS-CREE THA
-159f CANADIAN SYLLABICS WOODS-CREE TH
-15a0 CANADIAN SYLLABICS LHI
-15a1 CANADIAN SYLLABICS LHII
-15a2 CANADIAN SYLLABICS LHO
-15a3 CANADIAN SYLLABICS LHOO
-15a4 CANADIAN SYLLABICS LHA
-15a5 CANADIAN SYLLABICS LHAA
-15a6 CANADIAN SYLLABICS LH
-15a7 CANADIAN SYLLABICS TH-CREE THE
-15a8 CANADIAN SYLLABICS TH-CREE THI
-15a9 CANADIAN SYLLABICS TH-CREE THII
-15aa CANADIAN SYLLABICS TH-CREE THO
-15ab CANADIAN SYLLABICS TH-CREE THOO
-15ac CANADIAN SYLLABICS TH-CREE THA
-15ad CANADIAN SYLLABICS TH-CREE THAA
-15ae CANADIAN SYLLABICS TH-CREE TH
-15af CANADIAN SYLLABICS AIVILIK B
-15b0 CANADIAN SYLLABICS BLACKFOOT E
-15b1 CANADIAN SYLLABICS BLACKFOOT I
-15b2 CANADIAN SYLLABICS BLACKFOOT O
-15b3 CANADIAN SYLLABICS BLACKFOOT A
-15b4 CANADIAN SYLLABICS BLACKFOOT WE
-15b5 CANADIAN SYLLABICS BLACKFOOT WI
-15b6 CANADIAN SYLLABICS BLACKFOOT WO
-15b7 CANADIAN SYLLABICS BLACKFOOT WA
-15b8 CANADIAN SYLLABICS BLACKFOOT NE
-15b9 CANADIAN SYLLABICS BLACKFOOT NI
-15ba CANADIAN SYLLABICS BLACKFOOT NO
-15bb CANADIAN SYLLABICS BLACKFOOT NA
-15bc CANADIAN SYLLABICS BLACKFOOT KE
-15bd CANADIAN SYLLABICS BLACKFOOT KI
-15be CANADIAN SYLLABICS BLACKFOOT KO
-15bf CANADIAN SYLLABICS BLACKFOOT KA
-15c0 CANADIAN SYLLABICS SAYISI HE
-15c1 CANADIAN SYLLABICS SAYISI HI
-15c2 CANADIAN SYLLABICS SAYISI HO
-15c3 CANADIAN SYLLABICS SAYISI HA
-15c4 CANADIAN SYLLABICS CARRIER GHU
-15c5 CANADIAN SYLLABICS CARRIER GHO
-15c6 CANADIAN SYLLABICS CARRIER GHE
-15c7 CANADIAN SYLLABICS CARRIER GHEE
-15c8 CANADIAN SYLLABICS CARRIER GHI
-15c9 CANADIAN SYLLABICS CARRIER GHA
-15ca CANADIAN SYLLABICS CARRIER RU
-15cb CANADIAN SYLLABICS CARRIER RO
-15cc CANADIAN SYLLABICS CARRIER RE
-15cd CANADIAN SYLLABICS CARRIER REE
-15ce CANADIAN SYLLABICS CARRIER RI
-15cf CANADIAN SYLLABICS CARRIER RA
-15d0 CANADIAN SYLLABICS CARRIER WU
-15d1 CANADIAN SYLLABICS CARRIER WO
-15d2 CANADIAN SYLLABICS CARRIER WE
-15d3 CANADIAN SYLLABICS CARRIER WEE
-15d4 CANADIAN SYLLABICS CARRIER WI
-15d5 CANADIAN SYLLABICS CARRIER WA
-15d6 CANADIAN SYLLABICS CARRIER HWU
-15d7 CANADIAN SYLLABICS CARRIER HWO
-15d8 CANADIAN SYLLABICS CARRIER HWE
-15d9 CANADIAN SYLLABICS CARRIER HWEE
-15da CANADIAN SYLLABICS CARRIER HWI
-15db CANADIAN SYLLABICS CARRIER HWA
-15dc CANADIAN SYLLABICS CARRIER THU
-15dd CANADIAN SYLLABICS CARRIER THO
-15de CANADIAN SYLLABICS CARRIER THE
-15df CANADIAN SYLLABICS CARRIER THEE
-15e0 CANADIAN SYLLABICS CARRIER THI
-15e1 CANADIAN SYLLABICS CARRIER THA
-15e2 CANADIAN SYLLABICS CARRIER TTU
-15e3 CANADIAN SYLLABICS CARRIER TTO
-15e4 CANADIAN SYLLABICS CARRIER TTE
-15e5 CANADIAN SYLLABICS CARRIER TTEE
-15e6 CANADIAN SYLLABICS CARRIER TTI
-15e7 CANADIAN SYLLABICS CARRIER TTA
-15e8 CANADIAN SYLLABICS CARRIER PU
-15e9 CANADIAN SYLLABICS CARRIER PO
-15ea CANADIAN SYLLABICS CARRIER PE
-15eb CANADIAN SYLLABICS CARRIER PEE
-15ec CANADIAN SYLLABICS CARRIER PI
-15ed CANADIAN SYLLABICS CARRIER PA
-15ee CANADIAN SYLLABICS CARRIER P
-15ef CANADIAN SYLLABICS CARRIER GU
-15f0 CANADIAN SYLLABICS CARRIER GO
-15f1 CANADIAN SYLLABICS CARRIER GE
-15f2 CANADIAN SYLLABICS CARRIER GEE
-15f3 CANADIAN SYLLABICS CARRIER GI
-15f4 CANADIAN SYLLABICS CARRIER GA
-15f5 CANADIAN SYLLABICS CARRIER KHU
-15f6 CANADIAN SYLLABICS CARRIER KHO
-15f7 CANADIAN SYLLABICS CARRIER KHE
-15f8 CANADIAN SYLLABICS CARRIER KHEE
-15f9 CANADIAN SYLLABICS CARRIER KHI
-15fa CANADIAN SYLLABICS CARRIER KHA
-15fb CANADIAN SYLLABICS CARRIER KKU
-15fc CANADIAN SYLLABICS CARRIER KKO
-15fd CANADIAN SYLLABICS CARRIER KKE
-15fe CANADIAN SYLLABICS CARRIER KKEE
-15ff CANADIAN SYLLABICS CARRIER KKI
-1600 CANADIAN SYLLABICS CARRIER KKA
-1601 CANADIAN SYLLABICS CARRIER KK
-1602 CANADIAN SYLLABICS CARRIER NU
-1603 CANADIAN SYLLABICS CARRIER NO
-1604 CANADIAN SYLLABICS CARRIER NE
-1605 CANADIAN SYLLABICS CARRIER NEE
-1606 CANADIAN SYLLABICS CARRIER NI
-1607 CANADIAN SYLLABICS CARRIER NA
-1608 CANADIAN SYLLABICS CARRIER MU
-1609 CANADIAN SYLLABICS CARRIER MO
-160a CANADIAN SYLLABICS CARRIER ME
-160b CANADIAN SYLLABICS CARRIER MEE
-160c CANADIAN SYLLABICS CARRIER MI
-160d CANADIAN SYLLABICS CARRIER MA
-160e CANADIAN SYLLABICS CARRIER YU
-160f CANADIAN SYLLABICS CARRIER YO
-1610 CANADIAN SYLLABICS CARRIER YE
-1611 CANADIAN SYLLABICS CARRIER YEE
-1612 CANADIAN SYLLABICS CARRIER YI
-1613 CANADIAN SYLLABICS CARRIER YA
-1614 CANADIAN SYLLABICS CARRIER JU
-1615 CANADIAN SYLLABICS SAYISI JU
-1616 CANADIAN SYLLABICS CARRIER JO
-1617 CANADIAN SYLLABICS CARRIER JE
-1618 CANADIAN SYLLABICS CARRIER JEE
-1619 CANADIAN SYLLABICS CARRIER JI
-161a CANADIAN SYLLABICS SAYISI JI
-161b CANADIAN SYLLABICS CARRIER JA
-161c CANADIAN SYLLABICS CARRIER JJU
-161d CANADIAN SYLLABICS CARRIER JJO
-161e CANADIAN SYLLABICS CARRIER JJE
-161f CANADIAN SYLLABICS CARRIER JJEE
-1620 CANADIAN SYLLABICS CARRIER JJI
-1621 CANADIAN SYLLABICS CARRIER JJA
-1622 CANADIAN SYLLABICS CARRIER LU
-1623 CANADIAN SYLLABICS CARRIER LO
-1624 CANADIAN SYLLABICS CARRIER LE
-1625 CANADIAN SYLLABICS CARRIER LEE
-1626 CANADIAN SYLLABICS CARRIER LI
-1627 CANADIAN SYLLABICS CARRIER LA
-1628 CANADIAN SYLLABICS CARRIER DLU
-1629 CANADIAN SYLLABICS CARRIER DLO
-162a CANADIAN SYLLABICS CARRIER DLE
-162b CANADIAN SYLLABICS CARRIER DLEE
-162c CANADIAN SYLLABICS CARRIER DLI
-162d CANADIAN SYLLABICS CARRIER DLA
-162e CANADIAN SYLLABICS CARRIER LHU
-162f CANADIAN SYLLABICS CARRIER LHO
-1630 CANADIAN SYLLABICS CARRIER LHE
-1631 CANADIAN SYLLABICS CARRIER LHEE
-1632 CANADIAN SYLLABICS CARRIER LHI
-1633 CANADIAN SYLLABICS CARRIER LHA
-1634 CANADIAN SYLLABICS CARRIER TLHU
-1635 CANADIAN SYLLABICS CARRIER TLHO
-1636 CANADIAN SYLLABICS CARRIER TLHE
-1637 CANADIAN SYLLABICS CARRIER TLHEE
-1638 CANADIAN SYLLABICS CARRIER TLHI
-1639 CANADIAN SYLLABICS CARRIER TLHA
-163a CANADIAN SYLLABICS CARRIER TLU
-163b CANADIAN SYLLABICS CARRIER TLO
-163c CANADIAN SYLLABICS CARRIER TLE
-163d CANADIAN SYLLABICS CARRIER TLEE
-163e CANADIAN SYLLABICS CARRIER TLI
-163f CANADIAN SYLLABICS CARRIER TLA
-1640 CANADIAN SYLLABICS CARRIER ZU
-1641 CANADIAN SYLLABICS CARRIER ZO
-1642 CANADIAN SYLLABICS CARRIER ZE
-1643 CANADIAN SYLLABICS CARRIER ZEE
-1644 CANADIAN SYLLABICS CARRIER ZI
-1645 CANADIAN SYLLABICS CARRIER ZA
-1646 CANADIAN SYLLABICS CARRIER Z
-1647 CANADIAN SYLLABICS CARRIER INITIAL Z
-1648 CANADIAN SYLLABICS CARRIER DZU
-1649 CANADIAN SYLLABICS CARRIER DZO
-164a CANADIAN SYLLABICS CARRIER DZE
-164b CANADIAN SYLLABICS CARRIER DZEE
-164c CANADIAN SYLLABICS CARRIER DZI
-164d CANADIAN SYLLABICS CARRIER DZA
-164e CANADIAN SYLLABICS CARRIER SU
-164f CANADIAN SYLLABICS CARRIER SO
-1650 CANADIAN SYLLABICS CARRIER SE
-1651 CANADIAN SYLLABICS CARRIER SEE
-1652 CANADIAN SYLLABICS CARRIER SI
-1653 CANADIAN SYLLABICS CARRIER SA
-1654 CANADIAN SYLLABICS CARRIER SHU
-1655 CANADIAN SYLLABICS CARRIER SHO
-1656 CANADIAN SYLLABICS CARRIER SHE
-1657 CANADIAN SYLLABICS CARRIER SHEE
-1658 CANADIAN SYLLABICS CARRIER SHI
-1659 CANADIAN SYLLABICS CARRIER SHA
-165a CANADIAN SYLLABICS CARRIER SH
-165b CANADIAN SYLLABICS CARRIER TSU
-165c CANADIAN SYLLABICS CARRIER TSO
-165d CANADIAN SYLLABICS CARRIER TSE
-165e CANADIAN SYLLABICS CARRIER TSEE
-165f CANADIAN SYLLABICS CARRIER TSI
-1660 CANADIAN SYLLABICS CARRIER TSA
-1661 CANADIAN SYLLABICS CARRIER CHU
-1662 CANADIAN SYLLABICS CARRIER CHO
-1663 CANADIAN SYLLABICS CARRIER CHE
-1664 CANADIAN SYLLABICS CARRIER CHEE
-1665 CANADIAN SYLLABICS CARRIER CHI
-1666 CANADIAN SYLLABICS CARRIER CHA
-1667 CANADIAN SYLLABICS CARRIER TTSU
-1668 CANADIAN SYLLABICS CARRIER TTSO
-1669 CANADIAN SYLLABICS CARRIER TTSE
-166a CANADIAN SYLLABICS CARRIER TTSEE
-166b CANADIAN SYLLABICS CARRIER TTSI
-166c CANADIAN SYLLABICS CARRIER TTSA
-166d CANADIAN SYLLABICS CHI SIGN
-166e CANADIAN SYLLABICS FULL STOP
-166f CANADIAN SYLLABICS QAI
-1670 CANADIAN SYLLABICS NGAI
-1671 CANADIAN SYLLABICS NNGI
-1672 CANADIAN SYLLABICS NNGII
-1673 CANADIAN SYLLABICS NNGO
-1674 CANADIAN SYLLABICS NNGOO
-1675 CANADIAN SYLLABICS NNGA
-1676 CANADIAN SYLLABICS NNGAA
-1680 OGHAM SPACE MARK
-1681 OGHAM LETTER BEITH
-1682 OGHAM LETTER LUIS
-1683 OGHAM LETTER FEARN
-1684 OGHAM LETTER SAIL
-1685 OGHAM LETTER NION
-1686 OGHAM LETTER UATH
-1687 OGHAM LETTER DAIR
-1688 OGHAM LETTER TINNE
-1689 OGHAM LETTER COLL
-168a OGHAM LETTER CEIRT
-168b OGHAM LETTER MUIN
-168c OGHAM LETTER GORT
-168d OGHAM LETTER NGEADAL
-168e OGHAM LETTER STRAIF
-168f OGHAM LETTER RUIS
-1690 OGHAM LETTER AILM
-1691 OGHAM LETTER ONN
-1692 OGHAM LETTER UR
-1693 OGHAM LETTER EADHADH
-1694 OGHAM LETTER IODHADH
-1695 OGHAM LETTER EABHADH
-1696 OGHAM LETTER OR
-1697 OGHAM LETTER UILLEANN
-1698 OGHAM LETTER IFIN
-1699 OGHAM LETTER EAMHANCHOLL
-169a OGHAM LETTER PEITH
-169b OGHAM FEATHER MARK
-169c OGHAM REVERSED FEATHER MARK
-16a0 RUNIC LETTER FEHU FEOH FE F
-16a1 RUNIC LETTER V
-16a2 RUNIC LETTER URUZ UR U
-16a3 RUNIC LETTER YR
-16a4 RUNIC LETTER Y
-16a5 RUNIC LETTER W
-16a6 RUNIC LETTER THURISAZ THURS THORN
-16a7 RUNIC LETTER ETH
-16a8 RUNIC LETTER ANSUZ A
-16a9 RUNIC LETTER OS O
-16aa RUNIC LETTER AC A
-16ab RUNIC LETTER AESC
-16ac RUNIC LETTER LONG-BRANCH-OSS O
-16ad RUNIC LETTER SHORT-TWIG-OSS O
-16ae RUNIC LETTER O
-16af RUNIC LETTER OE
-16b0 RUNIC LETTER ON
-16b1 RUNIC LETTER RAIDO RAD REID R
-16b2 RUNIC LETTER KAUNA
-16b3 RUNIC LETTER CEN
-16b4 RUNIC LETTER KAUN K
-16b5 RUNIC LETTER G
-16b6 RUNIC LETTER ENG
-16b7 RUNIC LETTER GEBO GYFU G
-16b8 RUNIC LETTER GAR
-16b9 RUNIC LETTER WUNJO WYNN W
-16ba RUNIC LETTER HAGLAZ H
-16bb RUNIC LETTER HAEGL H
-16bc RUNIC LETTER LONG-BRANCH-HAGALL H
-16bd RUNIC LETTER SHORT-TWIG-HAGALL H
-16be RUNIC LETTER NAUDIZ NYD NAUD N
-16bf RUNIC LETTER SHORT-TWIG-NAUD N
-16c0 RUNIC LETTER DOTTED-N
-16c1 RUNIC LETTER ISAZ IS ISS I
-16c2 RUNIC LETTER E
-16c3 RUNIC LETTER JERAN J
-16c4 RUNIC LETTER GER
-16c5 RUNIC LETTER LONG-BRANCH-AR AE
-16c6 RUNIC LETTER SHORT-TWIG-AR A
-16c7 RUNIC LETTER IWAZ EOH
-16c8 RUNIC LETTER PERTHO PEORTH P
-16c9 RUNIC LETTER ALGIZ EOLHX
-16ca RUNIC LETTER SOWILO S
-16cb RUNIC LETTER SIGEL LONG-BRANCH-SOL S
-16cc RUNIC LETTER SHORT-TWIG-SOL S
-16cd RUNIC LETTER C
-16ce RUNIC LETTER Z
-16cf RUNIC LETTER TIWAZ TIR TYR T
-16d0 RUNIC LETTER SHORT-TWIG-TYR T
-16d1 RUNIC LETTER D
-16d2 RUNIC LETTER BERKANAN BEORC BJARKAN B
-16d3 RUNIC LETTER SHORT-TWIG-BJARKAN B
-16d4 RUNIC LETTER DOTTED-P
-16d5 RUNIC LETTER OPEN-P
-16d6 RUNIC LETTER EHWAZ EH E
-16d7 RUNIC LETTER MANNAZ MAN M
-16d8 RUNIC LETTER LONG-BRANCH-MADR M
-16d9 RUNIC LETTER SHORT-TWIG-MADR M
-16da RUNIC LETTER LAUKAZ LAGU LOGR L
-16db RUNIC LETTER DOTTED-L
-16dc RUNIC LETTER INGWAZ
-16dd RUNIC LETTER ING
-16de RUNIC LETTER DAGAZ DAEG D
-16df RUNIC LETTER OTHALAN ETHEL O
-16e0 RUNIC LETTER EAR
-16e1 RUNIC LETTER IOR
-16e2 RUNIC LETTER CWEORTH
-16e3 RUNIC LETTER CALC
-16e4 RUNIC LETTER CEALC
-16e5 RUNIC LETTER STAN
-16e6 RUNIC LETTER LONG-BRANCH-YR
-16e7 RUNIC LETTER SHORT-TWIG-YR
-16e8 RUNIC LETTER ICELANDIC-YR
-16e9 RUNIC LETTER Q
-16ea RUNIC LETTER X
-16eb RUNIC SINGLE PUNCTUATION
-16ec RUNIC MULTIPLE PUNCTUATION
-16ed RUNIC CROSS PUNCTUATION
-16ee RUNIC ARLAUG SYMBOL
-16ef RUNIC TVIMADUR SYMBOL
-16f0 RUNIC BELGTHOR SYMBOL
-1780 KHMER LETTER KA
-1781 KHMER LETTER KHA
-1782 KHMER LETTER KO
-1783 KHMER LETTER KHO
-1784 KHMER LETTER NGO
-1785 KHMER LETTER CA
-1786 KHMER LETTER CHA
-1787 KHMER LETTER CO
-1788 KHMER LETTER CHO
-1789 KHMER LETTER NYO
-178a KHMER LETTER DA
-178b KHMER LETTER TTHA
-178c KHMER LETTER DO
-178d KHMER LETTER TTHO
-178e KHMER LETTER NNO
-178f KHMER LETTER TA
-1790 KHMER LETTER THA
-1791 KHMER LETTER TO
-1792 KHMER LETTER THO
-1793 KHMER LETTER NO
-1794 KHMER LETTER BA
-1795 KHMER LETTER PHA
-1796 KHMER LETTER PO
-1797 KHMER LETTER PHO
-1798 KHMER LETTER MO
-1799 KHMER LETTER YO
-179a KHMER LETTER RO
-179b KHMER LETTER LO
-179c KHMER LETTER VO
-179d KHMER LETTER SHA
-179e KHMER LETTER SSO
-179f KHMER LETTER SA
-17a0 KHMER LETTER HA
-17a1 KHMER LETTER LA
-17a2 KHMER LETTER QA
-17a3 KHMER INDEPENDENT VOWEL QAQ
-17a4 KHMER INDEPENDENT VOWEL QAA
-17a5 KHMER INDEPENDENT VOWEL QI
-17a6 KHMER INDEPENDENT VOWEL QII
-17a7 KHMER INDEPENDENT VOWEL QU
-17a8 KHMER INDEPENDENT VOWEL QUK
-17a9 KHMER INDEPENDENT VOWEL QUU
-17aa KHMER INDEPENDENT VOWEL QUUV
-17ab KHMER INDEPENDENT VOWEL RY
-17ac KHMER INDEPENDENT VOWEL RYY
-17ad KHMER INDEPENDENT VOWEL LY
-17ae KHMER INDEPENDENT VOWEL LYY
-17af KHMER INDEPENDENT VOWEL QE
-17b0 KHMER INDEPENDENT VOWEL QAI
-17b1 KHMER INDEPENDENT VOWEL QOO TYPE ONE
-17b2 KHMER INDEPENDENT VOWEL QOO TYPE TWO
-17b3 KHMER INDEPENDENT VOWEL QAU
-17b4 KHMER VOWEL INHERENT AQ
-17b5 KHMER VOWEL INHERENT AA
-17b6 KHMER VOWEL SIGN AA
-17b7 KHMER VOWEL SIGN I
-17b8 KHMER VOWEL SIGN II
-17b9 KHMER VOWEL SIGN Y
-17ba KHMER VOWEL SIGN YY
-17bb KHMER VOWEL SIGN U
-17bc KHMER VOWEL SIGN UU
-17bd KHMER VOWEL SIGN UA
-17be KHMER VOWEL SIGN OE
-17bf KHMER VOWEL SIGN YA
-17c0 KHMER VOWEL SIGN IE
-17c1 KHMER VOWEL SIGN E
-17c2 KHMER VOWEL SIGN AE
-17c3 KHMER VOWEL SIGN AI
-17c4 KHMER VOWEL SIGN OO
-17c5 KHMER VOWEL SIGN AU
-17c6 KHMER SIGN NIKAHIT
-17c7 KHMER SIGN REAHMUK
-17c8 KHMER SIGN YUUKALEAPINTU
-17c9 KHMER SIGN MUUSIKATOAN
-17ca KHMER SIGN TRIISAP
-17cb KHMER SIGN BANTOC
-17cc KHMER SIGN ROBAT
-17cd KHMER SIGN TOANDAKHIAT
-17ce KHMER SIGN KAKABAT
-17cf KHMER SIGN AHSDA
-17d0 KHMER SIGN SAMYOK SANNYA
-17d1 KHMER SIGN VIRIAM
-17d2 KHMER SIGN COENG
-17d3 KHMER SIGN BATHAMASAT
-17d4 KHMER SIGN KHAN
-17d5 KHMER SIGN BARIYOOSAN
-17d6 KHMER SIGN CAMNUC PII KUUH
-17d7 KHMER SIGN LEK TOO
-17d8 KHMER SIGN BEYYAL
-17d9 KHMER SIGN PHNAEK MUAN
-17da KHMER SIGN KOOMUUT
-17db KHMER CURRENCY SYMBOL RIEL
-17dc KHMER SIGN AVAKRAHASANYA
-17e0 KHMER DIGIT ZERO
-17e1 KHMER DIGIT ONE
-17e2 KHMER DIGIT TWO
-17e3 KHMER DIGIT THREE
-17e4 KHMER DIGIT FOUR
-17e5 KHMER DIGIT FIVE
-17e6 KHMER DIGIT SIX
-17e7 KHMER DIGIT SEVEN
-17e8 KHMER DIGIT EIGHT
-17e9 KHMER DIGIT NINE
-1800 MONGOLIAN BIRGA
-1801 MONGOLIAN ELLIPSIS
-1802 MONGOLIAN COMMA
-1803 MONGOLIAN FULL STOP
-1804 MONGOLIAN COLON
-1805 MONGOLIAN FOUR DOTS
-1806 MONGOLIAN TODO SOFT HYPHEN
-1807 MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
-1808 MONGOLIAN MANCHU COMMA
-1809 MONGOLIAN MANCHU FULL STOP
-180a MONGOLIAN NIRUGU
-180b MONGOLIAN FREE VARIATION SELECTOR ONE
-180c MONGOLIAN FREE VARIATION SELECTOR TWO
-180d MONGOLIAN FREE VARIATION SELECTOR THREE
-180e MONGOLIAN VOWEL SEPARATOR
-1810 MONGOLIAN DIGIT ZERO
-1811 MONGOLIAN DIGIT ONE
-1812 MONGOLIAN DIGIT TWO
-1813 MONGOLIAN DIGIT THREE
-1814 MONGOLIAN DIGIT FOUR
-1815 MONGOLIAN DIGIT FIVE
-1816 MONGOLIAN DIGIT SIX
-1817 MONGOLIAN DIGIT SEVEN
-1818 MONGOLIAN DIGIT EIGHT
-1819 MONGOLIAN DIGIT NINE
-1820 MONGOLIAN LETTER A
-1821 MONGOLIAN LETTER E
-1822 MONGOLIAN LETTER I
-1823 MONGOLIAN LETTER O
-1824 MONGOLIAN LETTER U
-1825 MONGOLIAN LETTER OE
-1826 MONGOLIAN LETTER UE
-1827 MONGOLIAN LETTER EE
-1828 MONGOLIAN LETTER NA
-1829 MONGOLIAN LETTER ANG
-182a MONGOLIAN LETTER BA
-182b MONGOLIAN LETTER PA
-182c MONGOLIAN LETTER QA
-182d MONGOLIAN LETTER GA
-182e MONGOLIAN LETTER MA
-182f MONGOLIAN LETTER LA
-1830 MONGOLIAN LETTER SA
-1831 MONGOLIAN LETTER SHA
-1832 MONGOLIAN LETTER TA
-1833 MONGOLIAN LETTER DA
-1834 MONGOLIAN LETTER CHA
-1835 MONGOLIAN LETTER JA
-1836 MONGOLIAN LETTER YA
-1837 MONGOLIAN LETTER RA
-1838 MONGOLIAN LETTER WA
-1839 MONGOLIAN LETTER FA
-183a MONGOLIAN LETTER KA
-183b MONGOLIAN LETTER KHA
-183c MONGOLIAN LETTER TSA
-183d MONGOLIAN LETTER ZA
-183e MONGOLIAN LETTER HAA
-183f MONGOLIAN LETTER ZRA
-1840 MONGOLIAN LETTER LHA
-1841 MONGOLIAN LETTER ZHI
-1842 MONGOLIAN LETTER CHI
-1843 MONGOLIAN LETTER TODO LONG VOWEL SIGN
-1844 MONGOLIAN LETTER TODO E
-1845 MONGOLIAN LETTER TODO I
-1846 MONGOLIAN LETTER TODO O
-1847 MONGOLIAN LETTER TODO U
-1848 MONGOLIAN LETTER TODO OE
-1849 MONGOLIAN LETTER TODO UE
-184a MONGOLIAN LETTER TODO ANG
-184b MONGOLIAN LETTER TODO BA
-184c MONGOLIAN LETTER TODO PA
-184d MONGOLIAN LETTER TODO QA
-184e MONGOLIAN LETTER TODO GA
-184f MONGOLIAN LETTER TODO MA
-1850 MONGOLIAN LETTER TODO TA
-1851 MONGOLIAN LETTER TODO DA
-1852 MONGOLIAN LETTER TODO CHA
-1853 MONGOLIAN LETTER TODO JA
-1854 MONGOLIAN LETTER TODO TSA
-1855 MONGOLIAN LETTER TODO YA
-1856 MONGOLIAN LETTER TODO WA
-1857 MONGOLIAN LETTER TODO KA
-1858 MONGOLIAN LETTER TODO GAA
-1859 MONGOLIAN LETTER TODO HAA
-185a MONGOLIAN LETTER TODO JIA
-185b MONGOLIAN LETTER TODO NIA
-185c MONGOLIAN LETTER TODO DZA
-185d MONGOLIAN LETTER SIBE E
-185e MONGOLIAN LETTER SIBE I
-185f MONGOLIAN LETTER SIBE IY
-1860 MONGOLIAN LETTER SIBE UE
-1861 MONGOLIAN LETTER SIBE U
-1862 MONGOLIAN LETTER SIBE ANG
-1863 MONGOLIAN LETTER SIBE KA
-1864 MONGOLIAN LETTER SIBE GA
-1865 MONGOLIAN LETTER SIBE HA
-1866 MONGOLIAN LETTER SIBE PA
-1867 MONGOLIAN LETTER SIBE SHA
-1868 MONGOLIAN LETTER SIBE TA
-1869 MONGOLIAN LETTER SIBE DA
-186a MONGOLIAN LETTER SIBE JA
-186b MONGOLIAN LETTER SIBE FA
-186c MONGOLIAN LETTER SIBE GAA
-186d MONGOLIAN LETTER SIBE HAA
-186e MONGOLIAN LETTER SIBE TSA
-186f MONGOLIAN LETTER SIBE ZA
-1870 MONGOLIAN LETTER SIBE RAA
-1871 MONGOLIAN LETTER SIBE CHA
-1872 MONGOLIAN LETTER SIBE ZHA
-1873 MONGOLIAN LETTER MANCHU I
-1874 MONGOLIAN LETTER MANCHU KA
-1875 MONGOLIAN LETTER MANCHU RA
-1876 MONGOLIAN LETTER MANCHU FA
-1877 MONGOLIAN LETTER MANCHU ZHA
-1880 MONGOLIAN LETTER ALI GALI ANUSVARA ONE
-1881 MONGOLIAN LETTER ALI GALI VISARGA ONE
-1882 MONGOLIAN LETTER ALI GALI DAMARU
-1883 MONGOLIAN LETTER ALI GALI UBADAMA
-1884 MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
-1885 MONGOLIAN LETTER ALI GALI BALUDA
-1886 MONGOLIAN LETTER ALI GALI THREE BALUDA
-1887 MONGOLIAN LETTER ALI GALI A
-1888 MONGOLIAN LETTER ALI GALI I
-1889 MONGOLIAN LETTER ALI GALI KA
-188a MONGOLIAN LETTER ALI GALI NGA
-188b MONGOLIAN LETTER ALI GALI CA
-188c MONGOLIAN LETTER ALI GALI TTA
-188d MONGOLIAN LETTER ALI GALI TTHA
-188e MONGOLIAN LETTER ALI GALI DDA
-188f MONGOLIAN LETTER ALI GALI NNA
-1890 MONGOLIAN LETTER ALI GALI TA
-1891 MONGOLIAN LETTER ALI GALI DA
-1892 MONGOLIAN LETTER ALI GALI PA
-1893 MONGOLIAN LETTER ALI GALI PHA
-1894 MONGOLIAN LETTER ALI GALI SSA
-1895 MONGOLIAN LETTER ALI GALI ZHA
-1896 MONGOLIAN LETTER ALI GALI ZA
-1897 MONGOLIAN LETTER ALI GALI AH
-1898 MONGOLIAN LETTER TODO ALI GALI TA
-1899 MONGOLIAN LETTER TODO ALI GALI ZHA
-189a MONGOLIAN LETTER MANCHU ALI GALI GHA
-189b MONGOLIAN LETTER MANCHU ALI GALI NGA
-189c MONGOLIAN LETTER MANCHU ALI GALI CA
-189d MONGOLIAN LETTER MANCHU ALI GALI JHA
-189e MONGOLIAN LETTER MANCHU ALI GALI TTA
-189f MONGOLIAN LETTER MANCHU ALI GALI DDHA
-18a0 MONGOLIAN LETTER MANCHU ALI GALI TA
-18a1 MONGOLIAN LETTER MANCHU ALI GALI DHA
-18a2 MONGOLIAN LETTER MANCHU ALI GALI SSA
-18a3 MONGOLIAN LETTER MANCHU ALI GALI CYA
-18a4 MONGOLIAN LETTER MANCHU ALI GALI ZHA
-18a5 MONGOLIAN LETTER MANCHU ALI GALI ZA
-18a6 MONGOLIAN LETTER ALI GALI HALF U
-18a7 MONGOLIAN LETTER ALI GALI HALF YA
-18a8 MONGOLIAN LETTER MANCHU ALI GALI BHA
-18a9 MONGOLIAN LETTER ALI GALI DAGALGA
-1e00 LATIN CAPITAL LETTER A WITH RING BELOW
-1e01 LATIN SMALL LETTER A WITH RING BELOW
-1e02 LATIN CAPITAL LETTER B WITH DOT ABOVE
-1e03 LATIN SMALL LETTER B WITH DOT ABOVE
-1e04 LATIN CAPITAL LETTER B WITH DOT BELOW
-1e05 LATIN SMALL LETTER B WITH DOT BELOW
-1e06 LATIN CAPITAL LETTER B WITH LINE BELOW
-1e07 LATIN SMALL LETTER B WITH LINE BELOW
-1e08 LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
-1e09 LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
-1e0a LATIN CAPITAL LETTER D WITH DOT ABOVE
-1e0b LATIN SMALL LETTER D WITH DOT ABOVE
-1e0c LATIN CAPITAL LETTER D WITH DOT BELOW
-1e0d LATIN SMALL LETTER D WITH DOT BELOW
-1e0e LATIN CAPITAL LETTER D WITH LINE BELOW
-1e0f LATIN SMALL LETTER D WITH LINE BELOW
-1e10 LATIN CAPITAL LETTER D WITH CEDILLA
-1e11 LATIN SMALL LETTER D WITH CEDILLA
-1e12 LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
-1e13 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
-1e14 LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
-1e15 LATIN SMALL LETTER E WITH MACRON AND GRAVE
-1e16 LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
-1e17 LATIN SMALL LETTER E WITH MACRON AND ACUTE
-1e18 LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
-1e19 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
-1e1a LATIN CAPITAL LETTER E WITH TILDE BELOW
-1e1b LATIN SMALL LETTER E WITH TILDE BELOW
-1e1c LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
-1e1d LATIN SMALL LETTER E WITH CEDILLA AND BREVE
-1e1e LATIN CAPITAL LETTER F WITH DOT ABOVE
-1e1f LATIN SMALL LETTER F WITH DOT ABOVE
-1e20 LATIN CAPITAL LETTER G WITH MACRON
-1e21 LATIN SMALL LETTER G WITH MACRON
-1e22 LATIN CAPITAL LETTER H WITH DOT ABOVE
-1e23 LATIN SMALL LETTER H WITH DOT ABOVE
-1e24 LATIN CAPITAL LETTER H WITH DOT BELOW
-1e25 LATIN SMALL LETTER H WITH DOT BELOW
-1e26 LATIN CAPITAL LETTER H WITH DIAERESIS
-1e27 LATIN SMALL LETTER H WITH DIAERESIS
-1e28 LATIN CAPITAL LETTER H WITH CEDILLA
-1e29 LATIN SMALL LETTER H WITH CEDILLA
-1e2a LATIN CAPITAL LETTER H WITH BREVE BELOW
-1e2b LATIN SMALL LETTER H WITH BREVE BELOW
-1e2c LATIN CAPITAL LETTER I WITH TILDE BELOW
-1e2d LATIN SMALL LETTER I WITH TILDE BELOW
-1e2e LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
-1e2f LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
-1e30 LATIN CAPITAL LETTER K WITH ACUTE
-1e31 LATIN SMALL LETTER K WITH ACUTE
-1e32 LATIN CAPITAL LETTER K WITH DOT BELOW
-1e33 LATIN SMALL LETTER K WITH DOT BELOW
-1e34 LATIN CAPITAL LETTER K WITH LINE BELOW
-1e35 LATIN SMALL LETTER K WITH LINE BELOW
-1e36 LATIN CAPITAL LETTER L WITH DOT BELOW
-1e37 LATIN SMALL LETTER L WITH DOT BELOW
-1e38 LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
-1e39 LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
-1e3a LATIN CAPITAL LETTER L WITH LINE BELOW
-1e3b LATIN SMALL LETTER L WITH LINE BELOW
-1e3c LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
-1e3d LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
-1e3e LATIN CAPITAL LETTER M WITH ACUTE
-1e3f LATIN SMALL LETTER M WITH ACUTE
-1e40 LATIN CAPITAL LETTER M WITH DOT ABOVE
-1e41 LATIN SMALL LETTER M WITH DOT ABOVE
-1e42 LATIN CAPITAL LETTER M WITH DOT BELOW
-1e43 LATIN SMALL LETTER M WITH DOT BELOW
-1e44 LATIN CAPITAL LETTER N WITH DOT ABOVE
-1e45 LATIN SMALL LETTER N WITH DOT ABOVE
-1e46 LATIN CAPITAL LETTER N WITH DOT BELOW
-1e47 LATIN SMALL LETTER N WITH DOT BELOW
-1e48 LATIN CAPITAL LETTER N WITH LINE BELOW
-1e49 LATIN SMALL LETTER N WITH LINE BELOW
-1e4a LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
-1e4b LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
-1e4c LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-1e4d LATIN SMALL LETTER O WITH TILDE AND ACUTE
-1e4e LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-1e4f LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
-1e50 LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
-1e51 LATIN SMALL LETTER O WITH MACRON AND GRAVE
-1e52 LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
-1e53 LATIN SMALL LETTER O WITH MACRON AND ACUTE
-1e54 LATIN CAPITAL LETTER P WITH ACUTE
-1e55 LATIN SMALL LETTER P WITH ACUTE
-1e56 LATIN CAPITAL LETTER P WITH DOT ABOVE
-1e57 LATIN SMALL LETTER P WITH DOT ABOVE
-1e58 LATIN CAPITAL LETTER R WITH DOT ABOVE
-1e59 LATIN SMALL LETTER R WITH DOT ABOVE
-1e5a LATIN CAPITAL LETTER R WITH DOT BELOW
-1e5b LATIN SMALL LETTER R WITH DOT BELOW
-1e5c LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
-1e5d LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
-1e5e LATIN CAPITAL LETTER R WITH LINE BELOW
-1e5f LATIN SMALL LETTER R WITH LINE BELOW
-1e60 LATIN CAPITAL LETTER S WITH DOT ABOVE
-1e61 LATIN SMALL LETTER S WITH DOT ABOVE
-1e62 LATIN CAPITAL LETTER S WITH DOT BELOW
-1e63 LATIN SMALL LETTER S WITH DOT BELOW
-1e64 LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
-1e65 LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
-1e66 LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
-1e67 LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
-1e68 LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
-1e69 LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
-1e6a LATIN CAPITAL LETTER T WITH DOT ABOVE
-1e6b LATIN SMALL LETTER T WITH DOT ABOVE
-1e6c LATIN CAPITAL LETTER T WITH DOT BELOW
-1e6d LATIN SMALL LETTER T WITH DOT BELOW
-1e6e LATIN CAPITAL LETTER T WITH LINE BELOW
-1e6f LATIN SMALL LETTER T WITH LINE BELOW
-1e70 LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
-1e71 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
-1e72 LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
-1e73 LATIN SMALL LETTER U WITH DIAERESIS BELOW
-1e74 LATIN CAPITAL LETTER U WITH TILDE BELOW
-1e75 LATIN SMALL LETTER U WITH TILDE BELOW
-1e76 LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
-1e77 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
-1e78 LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
-1e79 LATIN SMALL LETTER U WITH TILDE AND ACUTE
-1e7a LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
-1e7b LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
-1e7c LATIN CAPITAL LETTER V WITH TILDE
-1e7d LATIN SMALL LETTER V WITH TILDE
-1e7e LATIN CAPITAL LETTER V WITH DOT BELOW
-1e7f LATIN SMALL LETTER V WITH DOT BELOW
-1e80 LATIN CAPITAL LETTER W WITH GRAVE
-1e81 LATIN SMALL LETTER W WITH GRAVE
-1e82 LATIN CAPITAL LETTER W WITH ACUTE
-1e83 LATIN SMALL LETTER W WITH ACUTE
-1e84 LATIN CAPITAL LETTER W WITH DIAERESIS
-1e85 LATIN SMALL LETTER W WITH DIAERESIS
-1e86 LATIN CAPITAL LETTER W WITH DOT ABOVE
-1e87 LATIN SMALL LETTER W WITH DOT ABOVE
-1e88 LATIN CAPITAL LETTER W WITH DOT BELOW
-1e89 LATIN SMALL LETTER W WITH DOT BELOW
-1e8a LATIN CAPITAL LETTER X WITH DOT ABOVE
-1e8b LATIN SMALL LETTER X WITH DOT ABOVE
-1e8c LATIN CAPITAL LETTER X WITH DIAERESIS
-1e8d LATIN SMALL LETTER X WITH DIAERESIS
-1e8e LATIN CAPITAL LETTER Y WITH DOT ABOVE
-1e8f LATIN SMALL LETTER Y WITH DOT ABOVE
-1e90 LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
-1e91 LATIN SMALL LETTER Z WITH CIRCUMFLEX
-1e92 LATIN CAPITAL LETTER Z WITH DOT BELOW
-1e93 LATIN SMALL LETTER Z WITH DOT BELOW
-1e94 LATIN CAPITAL LETTER Z WITH LINE BELOW
-1e95 LATIN SMALL LETTER Z WITH LINE BELOW
-1e96 LATIN SMALL LETTER H WITH LINE BELOW
-1e97 LATIN SMALL LETTER T WITH DIAERESIS
-1e98 LATIN SMALL LETTER W WITH RING ABOVE
-1e99 LATIN SMALL LETTER Y WITH RING ABOVE
-1e9a LATIN SMALL LETTER A WITH RIGHT HALF RING
-1e9b LATIN SMALL LETTER LONG S WITH DOT ABOVE
-1ea0 LATIN CAPITAL LETTER A WITH DOT BELOW
-1ea1 LATIN SMALL LETTER A WITH DOT BELOW
-1ea2 LATIN CAPITAL LETTER A WITH HOOK ABOVE
-1ea3 LATIN SMALL LETTER A WITH HOOK ABOVE
-1ea4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1ea5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
-1ea6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1ea7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
-1ea8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1ea9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1eaa LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1eab LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
-1eac LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1ead LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1eae LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1eaf LATIN SMALL LETTER A WITH BREVE AND ACUTE
-1eb0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1eb1 LATIN SMALL LETTER A WITH BREVE AND GRAVE
-1eb2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-1eb3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
-1eb4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1eb5 LATIN SMALL LETTER A WITH BREVE AND TILDE
-1eb6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-1eb7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
-1eb8 LATIN CAPITAL LETTER E WITH DOT BELOW
-1eb9 LATIN SMALL LETTER E WITH DOT BELOW
-1eba LATIN CAPITAL LETTER E WITH HOOK ABOVE
-1ebb LATIN SMALL LETTER E WITH HOOK ABOVE
-1ebc LATIN CAPITAL LETTER E WITH TILDE
-1ebd LATIN SMALL LETTER E WITH TILDE
-1ebe LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1ebf LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1ec0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1ec1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1ec2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1ec3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1ec4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1ec5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1ec6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1ec7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1ec8 LATIN CAPITAL LETTER I WITH HOOK ABOVE
-1ec9 LATIN SMALL LETTER I WITH HOOK ABOVE
-1eca LATIN CAPITAL LETTER I WITH DOT BELOW
-1ecb LATIN SMALL LETTER I WITH DOT BELOW
-1ecc LATIN CAPITAL LETTER O WITH DOT BELOW
-1ecd LATIN SMALL LETTER O WITH DOT BELOW
-1ece LATIN CAPITAL LETTER O WITH HOOK ABOVE
-1ecf LATIN SMALL LETTER O WITH HOOK ABOVE
-1ed0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ed1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ed2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ed3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ed4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ed5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ed6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ed7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ed8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ed9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1eda LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-1edb LATIN SMALL LETTER O WITH HORN AND ACUTE
-1edc LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-1edd LATIN SMALL LETTER O WITH HORN AND GRAVE
-1ede LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-1edf LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
-1ee0 LATIN CAPITAL LETTER O WITH HORN AND TILDE
-1ee1 LATIN SMALL LETTER O WITH HORN AND TILDE
-1ee2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-1ee3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW
-1ee4 LATIN CAPITAL LETTER U WITH DOT BELOW
-1ee5 LATIN SMALL LETTER U WITH DOT BELOW
-1ee6 LATIN CAPITAL LETTER U WITH HOOK ABOVE
-1ee7 LATIN SMALL LETTER U WITH HOOK ABOVE
-1ee8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-1ee9 LATIN SMALL LETTER U WITH HORN AND ACUTE
-1eea LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-1eeb LATIN SMALL LETTER U WITH HORN AND GRAVE
-1eec LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-1eed LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
-1eee LATIN CAPITAL LETTER U WITH HORN AND TILDE
-1eef LATIN SMALL LETTER U WITH HORN AND TILDE
-1ef0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-1ef1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW
-1ef2 LATIN CAPITAL LETTER Y WITH GRAVE
-1ef3 LATIN SMALL LETTER Y WITH GRAVE
-1ef4 LATIN CAPITAL LETTER Y WITH DOT BELOW
-1ef5 LATIN SMALL LETTER Y WITH DOT BELOW
-1ef6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE
-1ef7 LATIN SMALL LETTER Y WITH HOOK ABOVE
-1ef8 LATIN CAPITAL LETTER Y WITH TILDE
-1ef9 LATIN SMALL LETTER Y WITH TILDE
-1f00 GREEK SMALL LETTER ALPHA WITH PSILI
-1f01 GREEK SMALL LETTER ALPHA WITH DASIA
-1f02 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
-1f03 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
-1f04 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
-1f05 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
-1f06 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1f07 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1f08 GREEK CAPITAL LETTER ALPHA WITH PSILI
-1f09 GREEK CAPITAL LETTER ALPHA WITH DASIA
-1f0a GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
-1f0b GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
-1f0c GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
-1f0d GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
-1f0e GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1f0f GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1f10 GREEK SMALL LETTER EPSILON WITH PSILI
-1f11 GREEK SMALL LETTER EPSILON WITH DASIA
-1f12 GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
-1f13 GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
-1f14 GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
-1f15 GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
-1f18 GREEK CAPITAL LETTER EPSILON WITH PSILI
-1f19 GREEK CAPITAL LETTER EPSILON WITH DASIA
-1f1a GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
-1f1b GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
-1f1c GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
-1f1d GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
-1f20 GREEK SMALL LETTER ETA WITH PSILI
-1f21 GREEK SMALL LETTER ETA WITH DASIA
-1f22 GREEK SMALL LETTER ETA WITH PSILI AND VARIA
-1f23 GREEK SMALL LETTER ETA WITH DASIA AND VARIA
-1f24 GREEK SMALL LETTER ETA WITH PSILI AND OXIA
-1f25 GREEK SMALL LETTER ETA WITH DASIA AND OXIA
-1f26 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
-1f27 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
-1f28 GREEK CAPITAL LETTER ETA WITH PSILI
-1f29 GREEK CAPITAL LETTER ETA WITH DASIA
-1f2a GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
-1f2b GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
-1f2c GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
-1f2d GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
-1f2e GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
-1f2f GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
-1f30 GREEK SMALL LETTER IOTA WITH PSILI
-1f31 GREEK SMALL LETTER IOTA WITH DASIA
-1f32 GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
-1f33 GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
-1f34 GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
-1f35 GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
-1f36 GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
-1f37 GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
-1f38 GREEK CAPITAL LETTER IOTA WITH PSILI
-1f39 GREEK CAPITAL LETTER IOTA WITH DASIA
-1f3a GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
-1f3b GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
-1f3c GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
-1f3d GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
-1f3e GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
-1f3f GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
-1f40 GREEK SMALL LETTER OMICRON WITH PSILI
-1f41 GREEK SMALL LETTER OMICRON WITH DASIA
-1f42 GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
-1f43 GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
-1f44 GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
-1f45 GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
-1f48 GREEK CAPITAL LETTER OMICRON WITH PSILI
-1f49 GREEK CAPITAL LETTER OMICRON WITH DASIA
-1f4a GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
-1f4b GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
-1f4c GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
-1f4d GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
-1f50 GREEK SMALL LETTER UPSILON WITH PSILI
-1f51 GREEK SMALL LETTER UPSILON WITH DASIA
-1f52 GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-1f53 GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
-1f54 GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-1f55 GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
-1f56 GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-1f57 GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1f59 GREEK CAPITAL LETTER UPSILON WITH DASIA
-1f5b GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
-1f5d GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
-1f5f GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1f60 GREEK SMALL LETTER OMEGA WITH PSILI
-1f61 GREEK SMALL LETTER OMEGA WITH DASIA
-1f62 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
-1f63 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
-1f64 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
-1f65 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
-1f66 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1f67 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1f68 GREEK CAPITAL LETTER OMEGA WITH PSILI
-1f69 GREEK CAPITAL LETTER OMEGA WITH DASIA
-1f6a GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
-1f6b GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
-1f6c GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
-1f6d GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
-1f6e GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1f6f GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1f70 GREEK SMALL LETTER ALPHA WITH VARIA
-1f71 GREEK SMALL LETTER ALPHA WITH OXIA
-1f72 GREEK SMALL LETTER EPSILON WITH VARIA
-1f73 GREEK SMALL LETTER EPSILON WITH OXIA
-1f74 GREEK SMALL LETTER ETA WITH VARIA
-1f75 GREEK SMALL LETTER ETA WITH OXIA
-1f76 GREEK SMALL LETTER IOTA WITH VARIA
-1f77 GREEK SMALL LETTER IOTA WITH OXIA
-1f78 GREEK SMALL LETTER OMICRON WITH VARIA
-1f79 GREEK SMALL LETTER OMICRON WITH OXIA
-1f7a GREEK SMALL LETTER UPSILON WITH VARIA
-1f7b GREEK SMALL LETTER UPSILON WITH OXIA
-1f7c GREEK SMALL LETTER OMEGA WITH VARIA
-1f7d GREEK SMALL LETTER OMEGA WITH OXIA
-1f80 GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-1f81 GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-1f82 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1f83 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1f84 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1f85 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1f86 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1f87 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1f88 GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1f89 GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-1f8a GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1f8b GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1f8c GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1f8d GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1f8e GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1f8f GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1f90 GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-1f91 GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-1f92 GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1f93 GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1f94 GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1f95 GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1f96 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1f97 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1f98 GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1f99 GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-1f9a GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1f9b GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1f9c GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1f9d GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1f9e GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1f9f GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1fa0 GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-1fa1 GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-1fa2 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1fa3 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1fa4 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1fa5 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1fa6 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1fa7 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1fa8 GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1fa9 GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-1faa GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1fab GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1fac GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1fad GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1fae GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1faf GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1fb0 GREEK SMALL LETTER ALPHA WITH VRACHY
-1fb1 GREEK SMALL LETTER ALPHA WITH MACRON
-1fb2 GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-1fb3 GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-1fb4 GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1fb6 GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-1fb7 GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1fb8 GREEK CAPITAL LETTER ALPHA WITH VRACHY
-1fb9 GREEK CAPITAL LETTER ALPHA WITH MACRON
-1fba GREEK CAPITAL LETTER ALPHA WITH VARIA
-1fbb GREEK CAPITAL LETTER ALPHA WITH OXIA
-1fbc GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1fbd GREEK KORONIS
-1fbe GREEK PROSGEGRAMMENI
-1fbf GREEK PSILI
-1fc0 GREEK PERISPOMENI
-1fc1 GREEK DIALYTIKA AND PERISPOMENI
-1fc2 GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-1fc3 GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-1fc4 GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1fc6 GREEK SMALL LETTER ETA WITH PERISPOMENI
-1fc7 GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1fc8 GREEK CAPITAL LETTER EPSILON WITH VARIA
-1fc9 GREEK CAPITAL LETTER EPSILON WITH OXIA
-1fca GREEK CAPITAL LETTER ETA WITH VARIA
-1fcb GREEK CAPITAL LETTER ETA WITH OXIA
-1fcc GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1fcd GREEK PSILI AND VARIA
-1fce GREEK PSILI AND OXIA
-1fcf GREEK PSILI AND PERISPOMENI
-1fd0 GREEK SMALL LETTER IOTA WITH VRACHY
-1fd1 GREEK SMALL LETTER IOTA WITH MACRON
-1fd2 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-1fd3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1fd6 GREEK SMALL LETTER IOTA WITH PERISPOMENI
-1fd7 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1fd8 GREEK CAPITAL LETTER IOTA WITH VRACHY
-1fd9 GREEK CAPITAL LETTER IOTA WITH MACRON
-1fda GREEK CAPITAL LETTER IOTA WITH VARIA
-1fdb GREEK CAPITAL LETTER IOTA WITH OXIA
-1fdd GREEK DASIA AND VARIA
-1fde GREEK DASIA AND OXIA
-1fdf GREEK DASIA AND PERISPOMENI
-1fe0 GREEK SMALL LETTER UPSILON WITH VRACHY
-1fe1 GREEK SMALL LETTER UPSILON WITH MACRON
-1fe2 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-1fe3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-1fe4 GREEK SMALL LETTER RHO WITH PSILI
-1fe5 GREEK SMALL LETTER RHO WITH DASIA
-1fe6 GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-1fe7 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1fe8 GREEK CAPITAL LETTER UPSILON WITH VRACHY
-1fe9 GREEK CAPITAL LETTER UPSILON WITH MACRON
-1fea GREEK CAPITAL LETTER UPSILON WITH VARIA
-1feb GREEK CAPITAL LETTER UPSILON WITH OXIA
-1fec GREEK CAPITAL LETTER RHO WITH DASIA
-1fed GREEK DIALYTIKA AND VARIA
-1fee GREEK DIALYTIKA AND OXIA
-1fef GREEK VARIA
-1ff2 GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-1ff3 GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-1ff4 GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-1ff6 GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-1ff7 GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-1ff8 GREEK CAPITAL LETTER OMICRON WITH VARIA
-1ff9 GREEK CAPITAL LETTER OMICRON WITH OXIA
-1ffa GREEK CAPITAL LETTER OMEGA WITH VARIA
-1ffb GREEK CAPITAL LETTER OMEGA WITH OXIA
-1ffc GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-1ffd GREEK OXIA
-1ffe GREEK DASIA
-2000 EN QUAD
-2001 EM QUAD
-2002 EN SPACE
-2003 EM SPACE
-2004 THREE-PER-EM SPACE
-2005 FOUR-PER-EM SPACE
-2006 SIX-PER-EM SPACE
-2007 FIGURE SPACE
-2008 PUNCTUATION SPACE
-2009 THIN SPACE
-200a HAIR SPACE
-200b ZERO WIDTH SPACE
-200c ZERO WIDTH NON-JOINER
-200d ZERO WIDTH JOINER
-200e LEFT-TO-RIGHT MARK
-200f RIGHT-TO-LEFT MARK
-2010 HYPHEN
-2011 NON-BREAKING HYPHEN
-2012 FIGURE DASH
-2013 EN DASH
-2014 EM DASH
-2015 HORIZONTAL BAR
-2016 DOUBLE VERTICAL LINE
-2017 DOUBLE LOW LINE
-2018 LEFT SINGLE QUOTATION MARK
-2019 RIGHT SINGLE QUOTATION MARK
-201a SINGLE LOW-9 QUOTATION MARK
-201b SINGLE HIGH-REVERSED-9 QUOTATION MARK
-201c LEFT DOUBLE QUOTATION MARK
-201d RIGHT DOUBLE QUOTATION MARK
-201e DOUBLE LOW-9 QUOTATION MARK
-201f DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-2020 DAGGER
-2021 DOUBLE DAGGER
-2022 BULLET
-2023 TRIANGULAR BULLET
-2024 ONE DOT LEADER
-2025 TWO DOT LEADER
-2026 HORIZONTAL ELLIPSIS
-2027 HYPHENATION POINT
-2028 LINE SEPARATOR
-2029 PARAGRAPH SEPARATOR
-202a LEFT-TO-RIGHT EMBEDDING
-202b RIGHT-TO-LEFT EMBEDDING
-202c POP DIRECTIONAL FORMATTING
-202d LEFT-TO-RIGHT OVERRIDE
-202e RIGHT-TO-LEFT OVERRIDE
-202f NARROW NO-BREAK SPACE
-2030 PER MILLE SIGN
-2031 PER TEN THOUSAND SIGN
-2032 PRIME
-2033 DOUBLE PRIME
-2034 TRIPLE PRIME
-2035 REVERSED PRIME
-2036 REVERSED DOUBLE PRIME
-2037 REVERSED TRIPLE PRIME
-2038 CARET
-2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203a SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-203b REFERENCE MARK
-203c DOUBLE EXCLAMATION MARK
-203d INTERROBANG
-203e OVERLINE
-203f UNDERTIE
-2040 CHARACTER TIE
-2041 CARET INSERTION POINT
-2042 ASTERISM
-2043 HYPHEN BULLET
-2044 FRACTION SLASH
-2045 LEFT SQUARE BRACKET WITH QUILL
-2046 RIGHT SQUARE BRACKET WITH QUILL
-2048 QUESTION EXCLAMATION MARK
-2049 EXCLAMATION QUESTION MARK
-204a TIRONIAN SIGN ET
-204b REVERSED PILCROW SIGN
-204c BLACK LEFTWARDS BULLET
-204d BLACK RIGHTWARDS BULLET
-206a INHIBIT SYMMETRIC SWAPPING
-206b ACTIVATE SYMMETRIC SWAPPING
-206c INHIBIT ARABIC FORM SHAPING
-206d ACTIVATE ARABIC FORM SHAPING
-206e NATIONAL DIGIT SHAPES
-206f NOMINAL DIGIT SHAPES
-2070 SUPERSCRIPT ZERO
-2074 SUPERSCRIPT FOUR
-2075 SUPERSCRIPT FIVE
-2076 SUPERSCRIPT SIX
-2077 SUPERSCRIPT SEVEN
-2078 SUPERSCRIPT EIGHT
-2079 SUPERSCRIPT NINE
-207a SUPERSCRIPT PLUS SIGN
-207b SUPERSCRIPT MINUS
-207c SUPERSCRIPT EQUALS SIGN
-207d SUPERSCRIPT LEFT PARENTHESIS
-207e SUPERSCRIPT RIGHT PARENTHESIS
-207f SUPERSCRIPT LATIN SMALL LETTER N
-2080 SUBSCRIPT ZERO
-2081 SUBSCRIPT ONE
-2082 SUBSCRIPT TWO
-2083 SUBSCRIPT THREE
-2084 SUBSCRIPT FOUR
-2085 SUBSCRIPT FIVE
-2086 SUBSCRIPT SIX
-2087 SUBSCRIPT SEVEN
-2088 SUBSCRIPT EIGHT
-2089 SUBSCRIPT NINE
-208a SUBSCRIPT PLUS SIGN
-208b SUBSCRIPT MINUS
-208c SUBSCRIPT EQUALS SIGN
-208d SUBSCRIPT LEFT PARENTHESIS
-208e SUBSCRIPT RIGHT PARENTHESIS
-20a0 EURO-CURRENCY SIGN
-20a1 COLON SIGN
-20a2 CRUZEIRO SIGN
-20a3 FRENCH FRANC SIGN
-20a4 LIRA SIGN
-20a5 MILL SIGN
-20a6 NAIRA SIGN
-20a7 PESETA SIGN
-20a8 RUPEE SIGN
-20a9 WON SIGN
-20aa NEW SHEQEL SIGN
-20ab DONG SIGN
-20ac EURO SIGN
-20ad KIP SIGN
-20ae TUGRIK SIGN
-20af DRACHMA SIGN
-20d0 COMBINING LEFT HARPOON ABOVE
-20d1 COMBINING RIGHT HARPOON ABOVE
-20d2 COMBINING LONG VERTICAL LINE OVERLAY
-20d3 COMBINING SHORT VERTICAL LINE OVERLAY
-20d4 COMBINING ANTICLOCKWISE ARROW ABOVE
-20d5 COMBINING CLOCKWISE ARROW ABOVE
-20d6 COMBINING LEFT ARROW ABOVE
-20d7 COMBINING RIGHT ARROW ABOVE
-20d8 COMBINING RING OVERLAY
-20d9 COMBINING CLOCKWISE RING OVERLAY
-20da COMBINING ANTICLOCKWISE RING OVERLAY
-20db COMBINING THREE DOTS ABOVE
-20dc COMBINING FOUR DOTS ABOVE
-20dd COMBINING ENCLOSING CIRCLE
-20de COMBINING ENCLOSING SQUARE
-20df COMBINING ENCLOSING DIAMOND
-20e0 COMBINING ENCLOSING CIRCLE BACKSLASH
-20e1 COMBINING LEFT RIGHT ARROW ABOVE
-20e2 COMBINING ENCLOSING SCREEN
-20e3 COMBINING ENCLOSING KEYCAP
-2100 ACCOUNT OF
-2101 ADDRESSED TO THE SUBJECT
-2102 DOUBLE-STRUCK CAPITAL C
-2103 DEGREE CELSIUS
-2104 CENTRE LINE SYMBOL
-2105 CARE OF
-2106 CADA UNA
-2107 EULER CONSTANT
-2108 SCRUPLE
-2109 DEGREE FAHRENHEIT
-210a SCRIPT SMALL G
-210b SCRIPT CAPITAL H
-210c BLACK-LETTER CAPITAL H
-210d DOUBLE-STRUCK CAPITAL H
-210e PLANCK CONSTANT
-210f PLANCK CONSTANT OVER TWO PI
-2110 SCRIPT CAPITAL I
-2111 BLACK-LETTER CAPITAL I
-2112 SCRIPT CAPITAL L
-2113 SCRIPT SMALL L
-2114 L B BAR SYMBOL
-2115 DOUBLE-STRUCK CAPITAL N
-2116 NUMERO SIGN
-2117 SOUND RECORDING COPYRIGHT
-2118 SCRIPT CAPITAL P
-2119 DOUBLE-STRUCK CAPITAL P
-211a DOUBLE-STRUCK CAPITAL Q
-211b SCRIPT CAPITAL R
-211c BLACK-LETTER CAPITAL R
-211d DOUBLE-STRUCK CAPITAL R
-211e PRESCRIPTION TAKE
-211f RESPONSE
-2120 SERVICE MARK
-2121 TELEPHONE SIGN
-2122 TRADE MARK SIGN
-2123 VERSICLE
-2124 DOUBLE-STRUCK CAPITAL Z
-2125 OUNCE SIGN
-2126 OHM SIGN
-2127 INVERTED OHM SIGN
-2128 BLACK-LETTER CAPITAL Z
-2129 TURNED GREEK SMALL LETTER IOTA
-212a KELVIN SIGN
-212b ANGSTROM SIGN
-212c SCRIPT CAPITAL B
-212d BLACK-LETTER CAPITAL C
-212e ESTIMATED SYMBOL
-212f SCRIPT SMALL E
-2130 SCRIPT CAPITAL E
-2131 SCRIPT CAPITAL F
-2132 TURNED CAPITAL F
-2133 SCRIPT CAPITAL M
-2134 SCRIPT SMALL O
-2135 ALEF SYMBOL
-2136 BET SYMBOL
-2137 GIMEL SYMBOL
-2138 DALET SYMBOL
-2139 INFORMATION SOURCE
-213a ROTATED CAPITAL Q
-2153 VULGAR FRACTION ONE THIRD
-2154 VULGAR FRACTION TWO THIRDS
-2155 VULGAR FRACTION ONE FIFTH
-2156 VULGAR FRACTION TWO FIFTHS
-2157 VULGAR FRACTION THREE FIFTHS
-2158 VULGAR FRACTION FOUR FIFTHS
-2159 VULGAR FRACTION ONE SIXTH
-215a VULGAR FRACTION FIVE SIXTHS
-215b VULGAR FRACTION ONE EIGHTH
-215c VULGAR FRACTION THREE EIGHTHS
-215d VULGAR FRACTION FIVE EIGHTHS
-215e VULGAR FRACTION SEVEN EIGHTHS
-215f FRACTION NUMERATOR ONE
-2160 ROMAN NUMERAL ONE
-2161 ROMAN NUMERAL TWO
-2162 ROMAN NUMERAL THREE
-2163 ROMAN NUMERAL FOUR
-2164 ROMAN NUMERAL FIVE
-2165 ROMAN NUMERAL SIX
-2166 ROMAN NUMERAL SEVEN
-2167 ROMAN NUMERAL EIGHT
-2168 ROMAN NUMERAL NINE
-2169 ROMAN NUMERAL TEN
-216a ROMAN NUMERAL ELEVEN
-216b ROMAN NUMERAL TWELVE
-216c ROMAN NUMERAL FIFTY
-216d ROMAN NUMERAL ONE HUNDRED
-216e ROMAN NUMERAL FIVE HUNDRED
-216f ROMAN NUMERAL ONE THOUSAND
-2170 SMALL ROMAN NUMERAL ONE
-2171 SMALL ROMAN NUMERAL TWO
-2172 SMALL ROMAN NUMERAL THREE
-2173 SMALL ROMAN NUMERAL FOUR
-2174 SMALL ROMAN NUMERAL FIVE
-2175 SMALL ROMAN NUMERAL SIX
-2176 SMALL ROMAN NUMERAL SEVEN
-2177 SMALL ROMAN NUMERAL EIGHT
-2178 SMALL ROMAN NUMERAL NINE
-2179 SMALL ROMAN NUMERAL TEN
-217a SMALL ROMAN NUMERAL ELEVEN
-217b SMALL ROMAN NUMERAL TWELVE
-217c SMALL ROMAN NUMERAL FIFTY
-217d SMALL ROMAN NUMERAL ONE HUNDRED
-217e SMALL ROMAN NUMERAL FIVE HUNDRED
-217f SMALL ROMAN NUMERAL ONE THOUSAND
-2180 ROMAN NUMERAL ONE THOUSAND C D
-2181 ROMAN NUMERAL FIVE THOUSAND
-2182 ROMAN NUMERAL TEN THOUSAND
-2183 ROMAN NUMERAL REVERSED ONE HUNDRED
-2190 LEFTWARDS ARROW
-2191 UPWARDS ARROW
-2192 RIGHTWARDS ARROW
-2193 DOWNWARDS ARROW
-2194 LEFT RIGHT ARROW
-2195 UP DOWN ARROW
-2196 NORTH WEST ARROW
-2197 NORTH EAST ARROW
-2198 SOUTH EAST ARROW
-2199 SOUTH WEST ARROW
-219a LEFTWARDS ARROW WITH STROKE
-219b RIGHTWARDS ARROW WITH STROKE
-219c LEFTWARDS WAVE ARROW
-219d RIGHTWARDS WAVE ARROW
-219e LEFTWARDS TWO HEADED ARROW
-219f UPWARDS TWO HEADED ARROW
-21a0 RIGHTWARDS TWO HEADED ARROW
-21a1 DOWNWARDS TWO HEADED ARROW
-21a2 LEFTWARDS ARROW WITH TAIL
-21a3 RIGHTWARDS ARROW WITH TAIL
-21a4 LEFTWARDS ARROW FROM BAR
-21a5 UPWARDS ARROW FROM BAR
-21a6 RIGHTWARDS ARROW FROM BAR
-21a7 DOWNWARDS ARROW FROM BAR
-21a8 UP DOWN ARROW WITH BASE
-21a9 LEFTWARDS ARROW WITH HOOK
-21aa RIGHTWARDS ARROW WITH HOOK
-21ab LEFTWARDS ARROW WITH LOOP
-21ac RIGHTWARDS ARROW WITH LOOP
-21ad LEFT RIGHT WAVE ARROW
-21ae LEFT RIGHT ARROW WITH STROKE
-21af DOWNWARDS ZIGZAG ARROW
-21b0 UPWARDS ARROW WITH TIP LEFTWARDS
-21b1 UPWARDS ARROW WITH TIP RIGHTWARDS
-21b2 DOWNWARDS ARROW WITH TIP LEFTWARDS
-21b3 DOWNWARDS ARROW WITH TIP RIGHTWARDS
-21b4 RIGHTWARDS ARROW WITH CORNER DOWNWARDS
-21b5 DOWNWARDS ARROW WITH CORNER LEFTWARDS
-21b6 ANTICLOCKWISE TOP SEMICIRCLE ARROW
-21b7 CLOCKWISE TOP SEMICIRCLE ARROW
-21b8 NORTH WEST ARROW TO LONG BAR
-21b9 LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
-21ba ANTICLOCKWISE OPEN CIRCLE ARROW
-21bb CLOCKWISE OPEN CIRCLE ARROW
-21bc LEFTWARDS HARPOON WITH BARB UPWARDS
-21bd LEFTWARDS HARPOON WITH BARB DOWNWARDS
-21be UPWARDS HARPOON WITH BARB RIGHTWARDS
-21bf UPWARDS HARPOON WITH BARB LEFTWARDS
-21c0 RIGHTWARDS HARPOON WITH BARB UPWARDS
-21c1 RIGHTWARDS HARPOON WITH BARB DOWNWARDS
-21c2 DOWNWARDS HARPOON WITH BARB RIGHTWARDS
-21c3 DOWNWARDS HARPOON WITH BARB LEFTWARDS
-21c4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW
-21c5 UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
-21c6 LEFTWARDS ARROW OVER RIGHTWARDS ARROW
-21c7 LEFTWARDS PAIRED ARROWS
-21c8 UPWARDS PAIRED ARROWS
-21c9 RIGHTWARDS PAIRED ARROWS
-21ca DOWNWARDS PAIRED ARROWS
-21cb LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
-21cc RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
-21cd LEFTWARDS DOUBLE ARROW WITH STROKE
-21ce LEFT RIGHT DOUBLE ARROW WITH STROKE
-21cf RIGHTWARDS DOUBLE ARROW WITH STROKE
-21d0 LEFTWARDS DOUBLE ARROW
-21d1 UPWARDS DOUBLE ARROW
-21d2 RIGHTWARDS DOUBLE ARROW
-21d3 DOWNWARDS DOUBLE ARROW
-21d4 LEFT RIGHT DOUBLE ARROW
-21d5 UP DOWN DOUBLE ARROW
-21d6 NORTH WEST DOUBLE ARROW
-21d7 NORTH EAST DOUBLE ARROW
-21d8 SOUTH EAST DOUBLE ARROW
-21d9 SOUTH WEST DOUBLE ARROW
-21da LEFTWARDS TRIPLE ARROW
-21db RIGHTWARDS TRIPLE ARROW
-21dc LEFTWARDS SQUIGGLE ARROW
-21dd RIGHTWARDS SQUIGGLE ARROW
-21de UPWARDS ARROW WITH DOUBLE STROKE
-21df DOWNWARDS ARROW WITH DOUBLE STROKE
-21e0 LEFTWARDS DASHED ARROW
-21e1 UPWARDS DASHED ARROW
-21e2 RIGHTWARDS DASHED ARROW
-21e3 DOWNWARDS DASHED ARROW
-21e4 LEFTWARDS ARROW TO BAR
-21e5 RIGHTWARDS ARROW TO BAR
-21e6 LEFTWARDS WHITE ARROW
-21e7 UPWARDS WHITE ARROW
-21e8 RIGHTWARDS WHITE ARROW
-21e9 DOWNWARDS WHITE ARROW
-21ea UPWARDS WHITE ARROW FROM BAR
-21eb UPWARDS WHITE ARROW ON PEDESTAL
-21ec UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
-21ed UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
-21ee UPWARDS WHITE DOUBLE ARROW
-21ef UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
-21f0 RIGHTWARDS WHITE ARROW FROM WALL
-21f1 NORTH WEST ARROW TO CORNER
-21f2 SOUTH EAST ARROW TO CORNER
-21f3 UP DOWN WHITE ARROW
-2200 FOR ALL
-2201 COMPLEMENT
-2202 PARTIAL DIFFERENTIAL
-2203 THERE EXISTS
-2204 THERE DOES NOT EXIST
-2205 EMPTY SET
-2206 INCREMENT
-2207 NABLA
-2208 ELEMENT OF
-2209 NOT AN ELEMENT OF
-220a SMALL ELEMENT OF
-220b CONTAINS AS MEMBER
-220c DOES NOT CONTAIN AS MEMBER
-220d SMALL CONTAINS AS MEMBER
-220e END OF PROOF
-220f N-ARY PRODUCT
-2210 N-ARY COPRODUCT
-2211 N-ARY SUMMATION
-2212 MINUS SIGN
-2213 MINUS-OR-PLUS SIGN
-2214 DOT PLUS
-2215 DIVISION SLASH
-2216 SET MINUS
-2217 ASTERISK OPERATOR
-2218 RING OPERATOR
-2219 BULLET OPERATOR
-221a SQUARE ROOT
-221b CUBE ROOT
-221c FOURTH ROOT
-221d PROPORTIONAL TO
-221e INFINITY
-221f RIGHT ANGLE
-2220 ANGLE
-2221 MEASURED ANGLE
-2222 SPHERICAL ANGLE
-2223 DIVIDES
-2224 DOES NOT DIVIDE
-2225 PARALLEL TO
-2226 NOT PARALLEL TO
-2227 LOGICAL AND
-2228 LOGICAL OR
-2229 INTERSECTION
-222a UNION
-222b INTEGRAL
-222c DOUBLE INTEGRAL
-222d TRIPLE INTEGRAL
-222e CONTOUR INTEGRAL
-222f SURFACE INTEGRAL
-2230 VOLUME INTEGRAL
-2231 CLOCKWISE INTEGRAL
-2232 CLOCKWISE CONTOUR INTEGRAL
-2233 ANTICLOCKWISE CONTOUR INTEGRAL
-2234 THEREFORE
-2235 BECAUSE
-2236 RATIO
-2237 PROPORTION
-2238 DOT MINUS
-2239 EXCESS
-223a GEOMETRIC PROPORTION
-223b HOMOTHETIC
-223c TILDE OPERATOR
-223d REVERSED TILDE
-223e INVERTED LAZY S
-223f SINE WAVE
-2240 WREATH PRODUCT
-2241 NOT TILDE
-2242 MINUS TILDE
-2243 ASYMPTOTICALLY EQUAL TO
-2244 NOT ASYMPTOTICALLY EQUAL TO
-2245 APPROXIMATELY EQUAL TO
-2246 APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
-2247 NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
-2248 ALMOST EQUAL TO
-2249 NOT ALMOST EQUAL TO
-224a ALMOST EQUAL OR EQUAL TO
-224b TRIPLE TILDE
-224c ALL EQUAL TO
-224d EQUIVALENT TO
-224e GEOMETRICALLY EQUIVALENT TO
-224f DIFFERENCE BETWEEN
-2250 APPROACHES THE LIMIT
-2251 GEOMETRICALLY EQUAL TO
-2252 APPROXIMATELY EQUAL TO OR THE IMAGE OF
-2253 IMAGE OF OR APPROXIMATELY EQUAL TO
-2254 COLON EQUALS
-2255 EQUALS COLON
-2256 RING IN EQUAL TO
-2257 RING EQUAL TO
-2258 CORRESPONDS TO
-2259 ESTIMATES
-225a EQUIANGULAR TO
-225b STAR EQUALS
-225c DELTA EQUAL TO
-225d EQUAL TO BY DEFINITION
-225e MEASURED BY
-225f QUESTIONED EQUAL TO
-2260 NOT EQUAL TO
-2261 IDENTICAL TO
-2262 NOT IDENTICAL TO
-2263 STRICTLY EQUIVALENT TO
-2264 LESS-THAN OR EQUAL TO
-2265 GREATER-THAN OR EQUAL TO
-2266 LESS-THAN OVER EQUAL TO
-2267 GREATER-THAN OVER EQUAL TO
-2268 LESS-THAN BUT NOT EQUAL TO
-2269 GREATER-THAN BUT NOT EQUAL TO
-226a MUCH LESS-THAN
-226b MUCH GREATER-THAN
-226c BETWEEN
-226d NOT EQUIVALENT TO
-226e NOT LESS-THAN
-226f NOT GREATER-THAN
-2270 NEITHER LESS-THAN NOR EQUAL TO
-2271 NEITHER GREATER-THAN NOR EQUAL TO
-2272 LESS-THAN OR EQUIVALENT TO
-2273 GREATER-THAN OR EQUIVALENT TO
-2274 NEITHER LESS-THAN NOR EQUIVALENT TO
-2275 NEITHER GREATER-THAN NOR EQUIVALENT TO
-2276 LESS-THAN OR GREATER-THAN
-2277 GREATER-THAN OR LESS-THAN
-2278 NEITHER LESS-THAN NOR GREATER-THAN
-2279 NEITHER GREATER-THAN NOR LESS-THAN
-227a PRECEDES
-227b SUCCEEDS
-227c PRECEDES OR EQUAL TO
-227d SUCCEEDS OR EQUAL TO
-227e PRECEDES OR EQUIVALENT TO
-227f SUCCEEDS OR EQUIVALENT TO
-2280 DOES NOT PRECEDE
-2281 DOES NOT SUCCEED
-2282 SUBSET OF
-2283 SUPERSET OF
-2284 NOT A SUBSET OF
-2285 NOT A SUPERSET OF
-2286 SUBSET OF OR EQUAL TO
-2287 SUPERSET OF OR EQUAL TO
-2288 NEITHER A SUBSET OF NOR EQUAL TO
-2289 NEITHER A SUPERSET OF NOR EQUAL TO
-228a SUBSET OF WITH NOT EQUAL TO
-228b SUPERSET OF WITH NOT EQUAL TO
-228c MULTISET
-228d MULTISET MULTIPLICATION
-228e MULTISET UNION
-228f SQUARE IMAGE OF
-2290 SQUARE ORIGINAL OF
-2291 SQUARE IMAGE OF OR EQUAL TO
-2292 SQUARE ORIGINAL OF OR EQUAL TO
-2293 SQUARE CAP
-2294 SQUARE CUP
-2295 CIRCLED PLUS
-2296 CIRCLED MINUS
-2297 CIRCLED TIMES
-2298 CIRCLED DIVISION SLASH
-2299 CIRCLED DOT OPERATOR
-229a CIRCLED RING OPERATOR
-229b CIRCLED ASTERISK OPERATOR
-229c CIRCLED EQUALS
-229d CIRCLED DASH
-229e SQUARED PLUS
-229f SQUARED MINUS
-22a0 SQUARED TIMES
-22a1 SQUARED DOT OPERATOR
-22a2 RIGHT TACK
-22a3 LEFT TACK
-22a4 DOWN TACK
-22a5 UP TACK
-22a6 ASSERTION
-22a7 MODELS
-22a8 TRUE
-22a9 FORCES
-22aa TRIPLE VERTICAL BAR RIGHT TURNSTILE
-22ab DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-22ac DOES NOT PROVE
-22ad NOT TRUE
-22ae DOES NOT FORCE
-22af NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-22b0 PRECEDES UNDER RELATION
-22b1 SUCCEEDS UNDER RELATION
-22b2 NORMAL SUBGROUP OF
-22b3 CONTAINS AS NORMAL SUBGROUP
-22b4 NORMAL SUBGROUP OF OR EQUAL TO
-22b5 CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
-22b6 ORIGINAL OF
-22b7 IMAGE OF
-22b8 MULTIMAP
-22b9 HERMITIAN CONJUGATE MATRIX
-22ba INTERCALATE
-22bb XOR
-22bc NAND
-22bd NOR
-22be RIGHT ANGLE WITH ARC
-22bf RIGHT TRIANGLE
-22c0 N-ARY LOGICAL AND
-22c1 N-ARY LOGICAL OR
-22c2 N-ARY INTERSECTION
-22c3 N-ARY UNION
-22c4 DIAMOND OPERATOR
-22c5 DOT OPERATOR
-22c6 STAR OPERATOR
-22c7 DIVISION TIMES
-22c8 BOWTIE
-22c9 LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
-22ca RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
-22cb LEFT SEMIDIRECT PRODUCT
-22cc RIGHT SEMIDIRECT PRODUCT
-22cd REVERSED TILDE EQUALS
-22ce CURLY LOGICAL OR
-22cf CURLY LOGICAL AND
-22d0 DOUBLE SUBSET
-22d1 DOUBLE SUPERSET
-22d2 DOUBLE INTERSECTION
-22d3 DOUBLE UNION
-22d4 PITCHFORK
-22d5 EQUAL AND PARALLEL TO
-22d6 LESS-THAN WITH DOT
-22d7 GREATER-THAN WITH DOT
-22d8 VERY MUCH LESS-THAN
-22d9 VERY MUCH GREATER-THAN
-22da LESS-THAN EQUAL TO OR GREATER-THAN
-22db GREATER-THAN EQUAL TO OR LESS-THAN
-22dc EQUAL TO OR LESS-THAN
-22dd EQUAL TO OR GREATER-THAN
-22de EQUAL TO OR PRECEDES
-22df EQUAL TO OR SUCCEEDS
-22e0 DOES NOT PRECEDE OR EQUAL
-22e1 DOES NOT SUCCEED OR EQUAL
-22e2 NOT SQUARE IMAGE OF OR EQUAL TO
-22e3 NOT SQUARE ORIGINAL OF OR EQUAL TO
-22e4 SQUARE IMAGE OF OR NOT EQUAL TO
-22e5 SQUARE ORIGINAL OF OR NOT EQUAL TO
-22e6 LESS-THAN BUT NOT EQUIVALENT TO
-22e7 GREATER-THAN BUT NOT EQUIVALENT TO
-22e8 PRECEDES BUT NOT EQUIVALENT TO
-22e9 SUCCEEDS BUT NOT EQUIVALENT TO
-22ea NOT NORMAL SUBGROUP OF
-22eb DOES NOT CONTAIN AS NORMAL SUBGROUP
-22ec NOT NORMAL SUBGROUP OF OR EQUAL TO
-22ed DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
-22ee VERTICAL ELLIPSIS
-22ef MIDLINE HORIZONTAL ELLIPSIS
-22f0 UP RIGHT DIAGONAL ELLIPSIS
-22f1 DOWN RIGHT DIAGONAL ELLIPSIS
-2300 DIAMETER SIGN
-2301 ELECTRIC ARROW
-2302 HOUSE
-2303 UP ARROWHEAD
-2304 DOWN ARROWHEAD
-2305 PROJECTIVE
-2306 PERSPECTIVE
-2307 WAVY LINE
-2308 LEFT CEILING
-2309 RIGHT CEILING
-230a LEFT FLOOR
-230b RIGHT FLOOR
-230c BOTTOM RIGHT CROP
-230d BOTTOM LEFT CROP
-230e TOP RIGHT CROP
-230f TOP LEFT CROP
-2310 REVERSED NOT SIGN
-2311 SQUARE LOZENGE
-2312 ARC
-2313 SEGMENT
-2314 SECTOR
-2315 TELEPHONE RECORDER
-2316 POSITION INDICATOR
-2317 VIEWDATA SQUARE
-2318 PLACE OF INTEREST SIGN
-2319 TURNED NOT SIGN
-231a WATCH
-231b HOURGLASS
-231c TOP LEFT CORNER
-231d TOP RIGHT CORNER
-231e BOTTOM LEFT CORNER
-231f BOTTOM RIGHT CORNER
-2320 TOP HALF INTEGRAL
-2321 BOTTOM HALF INTEGRAL
-2322 FROWN
-2323 SMILE
-2324 UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
-2325 OPTION KEY
-2326 ERASE TO THE RIGHT
-2327 X IN A RECTANGLE BOX
-2328 KEYBOARD
-2329 LEFT-POINTING ANGLE BRACKET
-232a RIGHT-POINTING ANGLE BRACKET
-232b ERASE TO THE LEFT
-232c BENZENE RING
-232d CYLINDRICITY
-232e ALL AROUND-PROFILE
-232f SYMMETRY
-2330 TOTAL RUNOUT
-2331 DIMENSION ORIGIN
-2332 CONICAL TAPER
-2333 SLOPE
-2334 COUNTERBORE
-2335 COUNTERSINK
-2336 APL FUNCTIONAL SYMBOL I-BEAM
-2337 APL FUNCTIONAL SYMBOL SQUISH QUAD
-2338 APL FUNCTIONAL SYMBOL QUAD EQUAL
-2339 APL FUNCTIONAL SYMBOL QUAD DIVIDE
-233a APL FUNCTIONAL SYMBOL QUAD DIAMOND
-233b APL FUNCTIONAL SYMBOL QUAD JOT
-233c APL FUNCTIONAL SYMBOL QUAD CIRCLE
-233d APL FUNCTIONAL SYMBOL CIRCLE STILE
-233e APL FUNCTIONAL SYMBOL CIRCLE JOT
-233f APL FUNCTIONAL SYMBOL SLASH BAR
-2340 APL FUNCTIONAL SYMBOL BACKSLASH BAR
-2341 APL FUNCTIONAL SYMBOL QUAD SLASH
-2342 APL FUNCTIONAL SYMBOL QUAD BACKSLASH
-2343 APL FUNCTIONAL SYMBOL QUAD LESS-THAN
-2344 APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
-2345 APL FUNCTIONAL SYMBOL LEFTWARDS VANE
-2346 APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
-2347 APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
-2348 APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
-2349 APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
-234a APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
-234b APL FUNCTIONAL SYMBOL DELTA STILE
-234c APL FUNCTIONAL SYMBOL QUAD DOWN CARET
-234d APL FUNCTIONAL SYMBOL QUAD DELTA
-234e APL FUNCTIONAL SYMBOL DOWN TACK JOT
-234f APL FUNCTIONAL SYMBOL UPWARDS VANE
-2350 APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
-2351 APL FUNCTIONAL SYMBOL UP TACK OVERBAR
-2352 APL FUNCTIONAL SYMBOL DEL STILE
-2353 APL FUNCTIONAL SYMBOL QUAD UP CARET
-2354 APL FUNCTIONAL SYMBOL QUAD DEL
-2355 APL FUNCTIONAL SYMBOL UP TACK JOT
-2356 APL FUNCTIONAL SYMBOL DOWNWARDS VANE
-2357 APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
-2358 APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
-2359 APL FUNCTIONAL SYMBOL DELTA UNDERBAR
-235a APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
-235b APL FUNCTIONAL SYMBOL JOT UNDERBAR
-235c APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
-235d APL FUNCTIONAL SYMBOL UP SHOE JOT
-235e APL FUNCTIONAL SYMBOL QUOTE QUAD
-235f APL FUNCTIONAL SYMBOL CIRCLE STAR
-2360 APL FUNCTIONAL SYMBOL QUAD COLON
-2361 APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
-2362 APL FUNCTIONAL SYMBOL DEL DIAERESIS
-2363 APL FUNCTIONAL SYMBOL STAR DIAERESIS
-2364 APL FUNCTIONAL SYMBOL JOT DIAERESIS
-2365 APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
-2366 APL FUNCTIONAL SYMBOL DOWN SHOE STILE
-2367 APL FUNCTIONAL SYMBOL LEFT SHOE STILE
-2368 APL FUNCTIONAL SYMBOL TILDE DIAERESIS
-2369 APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
-236a APL FUNCTIONAL SYMBOL COMMA BAR
-236b APL FUNCTIONAL SYMBOL DEL TILDE
-236c APL FUNCTIONAL SYMBOL ZILDE
-236d APL FUNCTIONAL SYMBOL STILE TILDE
-236e APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
-236f APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
-2370 APL FUNCTIONAL SYMBOL QUAD QUESTION
-2371 APL FUNCTIONAL SYMBOL DOWN CARET TILDE
-2372 APL FUNCTIONAL SYMBOL UP CARET TILDE
-2373 APL FUNCTIONAL SYMBOL IOTA
-2374 APL FUNCTIONAL SYMBOL RHO
-2375 APL FUNCTIONAL SYMBOL OMEGA
-2376 APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
-2377 APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
-2378 APL FUNCTIONAL SYMBOL IOTA UNDERBAR
-2379 APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
-237a APL FUNCTIONAL SYMBOL ALPHA
-237b NOT CHECK MARK
-237d SHOULDERED OPEN BOX
-237e BELL SYMBOL
-237f VERTICAL LINE WITH MIDDLE DOT
-2380 INSERTION SYMBOL
-2381 CONTINUOUS UNDERLINE SYMBOL
-2382 DISCONTINUOUS UNDERLINE SYMBOL
-2383 EMPHASIS SYMBOL
-2384 COMPOSITION SYMBOL
-2385 WHITE SQUARE WITH CENTRE VERTICAL LINE
-2386 ENTER SYMBOL
-2387 ALTERNATIVE KEY SYMBOL
-2388 HELM SYMBOL
-2389 CIRCLED HORIZONTAL BAR WITH NOTCH
-238a CIRCLED TRIANGLE DOWN
-238b BROKEN CIRCLE WITH NORTHWEST ARROW
-238c UNDO SYMBOL
-238d MONOSTABLE SYMBOL
-238e HYSTERESIS SYMBOL
-238f OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
-2390 OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
-2391 PASSIVE-PULL-DOWN-OUTPUT SYMBOL
-2392 PASSIVE-PULL-UP-OUTPUT SYMBOL
-2393 DIRECT CURRENT SYMBOL FORM TWO
-2394 SOFTWARE-FUNCTION SYMBOL
-2395 APL FUNCTIONAL SYMBOL QUAD
-2396 DECIMAL SEPARATOR KEY SYMBOL
-2397 PREVIOUS PAGE
-2398 NEXT PAGE
-2399 PRINT SCREEN SYMBOL
-239a CLEAR SCREEN SYMBOL
-2400 SYMBOL FOR NULL
-2401 SYMBOL FOR START OF HEADING
-2402 SYMBOL FOR START OF TEXT
-2403 SYMBOL FOR END OF TEXT
-2404 SYMBOL FOR END OF TRANSMISSION
-2405 SYMBOL FOR ENQUIRY
-2406 SYMBOL FOR ACKNOWLEDGE
-2407 SYMBOL FOR BELL
-2408 SYMBOL FOR BACKSPACE
-2409 SYMBOL FOR HORIZONTAL TABULATION
-240a SYMBOL FOR LINE FEED
-240b SYMBOL FOR VERTICAL TABULATION
-240c SYMBOL FOR FORM FEED
-240d SYMBOL FOR CARRIAGE RETURN
-240e SYMBOL FOR SHIFT OUT
-240f SYMBOL FOR SHIFT IN
-2410 SYMBOL FOR DATA LINK ESCAPE
-2411 SYMBOL FOR DEVICE CONTROL ONE
-2412 SYMBOL FOR DEVICE CONTROL TWO
-2413 SYMBOL FOR DEVICE CONTROL THREE
-2414 SYMBOL FOR DEVICE CONTROL FOUR
-2415 SYMBOL FOR NEGATIVE ACKNOWLEDGE
-2416 SYMBOL FOR SYNCHRONOUS IDLE
-2417 SYMBOL FOR END OF TRANSMISSION BLOCK
-2418 SYMBOL FOR CANCEL
-2419 SYMBOL FOR END OF MEDIUM
-241a SYMBOL FOR SUBSTITUTE
-241b SYMBOL FOR ESCAPE
-241c SYMBOL FOR FILE SEPARATOR
-241d SYMBOL FOR GROUP SEPARATOR
-241e SYMBOL FOR RECORD SEPARATOR
-241f SYMBOL FOR UNIT SEPARATOR
-2420 SYMBOL FOR SPACE
-2421 SYMBOL FOR DELETE
-2422 BLANK SYMBOL
-2423 OPEN BOX
-2424 SYMBOL FOR NEWLINE
-2425 SYMBOL FOR DELETE FORM TWO
-2426 SYMBOL FOR SUBSTITUTE FORM TWO
-2440 OCR HOOK
-2441 OCR CHAIR
-2442 OCR FORK
-2443 OCR INVERTED FORK
-2444 OCR BELT BUCKLE
-2445 OCR BOW TIE
-2446 OCR BRANCH BANK IDENTIFICATION
-2447 OCR AMOUNT OF CHECK
-2448 OCR DASH
-2449 OCR CUSTOMER ACCOUNT NUMBER
-244a OCR DOUBLE BACKSLASH
-2460 CIRCLED DIGIT ONE
-2461 CIRCLED DIGIT TWO
-2462 CIRCLED DIGIT THREE
-2463 CIRCLED DIGIT FOUR
-2464 CIRCLED DIGIT FIVE
-2465 CIRCLED DIGIT SIX
-2466 CIRCLED DIGIT SEVEN
-2467 CIRCLED DIGIT EIGHT
-2468 CIRCLED DIGIT NINE
-2469 CIRCLED NUMBER TEN
-246a CIRCLED NUMBER ELEVEN
-246b CIRCLED NUMBER TWELVE
-246c CIRCLED NUMBER THIRTEEN
-246d CIRCLED NUMBER FOURTEEN
-246e CIRCLED NUMBER FIFTEEN
-246f CIRCLED NUMBER SIXTEEN
-2470 CIRCLED NUMBER SEVENTEEN
-2471 CIRCLED NUMBER EIGHTEEN
-2472 CIRCLED NUMBER NINETEEN
-2473 CIRCLED NUMBER TWENTY
-2474 PARENTHESIZED DIGIT ONE
-2475 PARENTHESIZED DIGIT TWO
-2476 PARENTHESIZED DIGIT THREE
-2477 PARENTHESIZED DIGIT FOUR
-2478 PARENTHESIZED DIGIT FIVE
-2479 PARENTHESIZED DIGIT SIX
-247a PARENTHESIZED DIGIT SEVEN
-247b PARENTHESIZED DIGIT EIGHT
-247c PARENTHESIZED DIGIT NINE
-247d PARENTHESIZED NUMBER TEN
-247e PARENTHESIZED NUMBER ELEVEN
-247f PARENTHESIZED NUMBER TWELVE
-2480 PARENTHESIZED NUMBER THIRTEEN
-2481 PARENTHESIZED NUMBER FOURTEEN
-2482 PARENTHESIZED NUMBER FIFTEEN
-2483 PARENTHESIZED NUMBER SIXTEEN
-2484 PARENTHESIZED NUMBER SEVENTEEN
-2485 PARENTHESIZED NUMBER EIGHTEEN
-2486 PARENTHESIZED NUMBER NINETEEN
-2487 PARENTHESIZED NUMBER TWENTY
-2488 DIGIT ONE FULL STOP
-2489 DIGIT TWO FULL STOP
-248a DIGIT THREE FULL STOP
-248b DIGIT FOUR FULL STOP
-248c DIGIT FIVE FULL STOP
-248d DIGIT SIX FULL STOP
-248e DIGIT SEVEN FULL STOP
-248f DIGIT EIGHT FULL STOP
-2490 DIGIT NINE FULL STOP
-2491 NUMBER TEN FULL STOP
-2492 NUMBER ELEVEN FULL STOP
-2493 NUMBER TWELVE FULL STOP
-2494 NUMBER THIRTEEN FULL STOP
-2495 NUMBER FOURTEEN FULL STOP
-2496 NUMBER FIFTEEN FULL STOP
-2497 NUMBER SIXTEEN FULL STOP
-2498 NUMBER SEVENTEEN FULL STOP
-2499 NUMBER EIGHTEEN FULL STOP
-249a NUMBER NINETEEN FULL STOP
-249b NUMBER TWENTY FULL STOP
-249c PARENTHESIZED LATIN SMALL LETTER A
-249d PARENTHESIZED LATIN SMALL LETTER B
-249e PARENTHESIZED LATIN SMALL LETTER C
-249f PARENTHESIZED LATIN SMALL LETTER D
-24a0 PARENTHESIZED LATIN SMALL LETTER E
-24a1 PARENTHESIZED LATIN SMALL LETTER F
-24a2 PARENTHESIZED LATIN SMALL LETTER G
-24a3 PARENTHESIZED LATIN SMALL LETTER H
-24a4 PARENTHESIZED LATIN SMALL LETTER I
-24a5 PARENTHESIZED LATIN SMALL LETTER J
-24a6 PARENTHESIZED LATIN SMALL LETTER K
-24a7 PARENTHESIZED LATIN SMALL LETTER L
-24a8 PARENTHESIZED LATIN SMALL LETTER M
-24a9 PARENTHESIZED LATIN SMALL LETTER N
-24aa PARENTHESIZED LATIN SMALL LETTER O
-24ab PARENTHESIZED LATIN SMALL LETTER P
-24ac PARENTHESIZED LATIN SMALL LETTER Q
-24ad PARENTHESIZED LATIN SMALL LETTER R
-24ae PARENTHESIZED LATIN SMALL LETTER S
-24af PARENTHESIZED LATIN SMALL LETTER T
-24b0 PARENTHESIZED LATIN SMALL LETTER U
-24b1 PARENTHESIZED LATIN SMALL LETTER V
-24b2 PARENTHESIZED LATIN SMALL LETTER W
-24b3 PARENTHESIZED LATIN SMALL LETTER X
-24b4 PARENTHESIZED LATIN SMALL LETTER Y
-24b5 PARENTHESIZED LATIN SMALL LETTER Z
-24b6 CIRCLED LATIN CAPITAL LETTER A
-24b7 CIRCLED LATIN CAPITAL LETTER B
-24b8 CIRCLED LATIN CAPITAL LETTER C
-24b9 CIRCLED LATIN CAPITAL LETTER D
-24ba CIRCLED LATIN CAPITAL LETTER E
-24bb CIRCLED LATIN CAPITAL LETTER F
-24bc CIRCLED LATIN CAPITAL LETTER G
-24bd CIRCLED LATIN CAPITAL LETTER H
-24be CIRCLED LATIN CAPITAL LETTER I
-24bf CIRCLED LATIN CAPITAL LETTER J
-24c0 CIRCLED LATIN CAPITAL LETTER K
-24c1 CIRCLED LATIN CAPITAL LETTER L
-24c2 CIRCLED LATIN CAPITAL LETTER M
-24c3 CIRCLED LATIN CAPITAL LETTER N
-24c4 CIRCLED LATIN CAPITAL LETTER O
-24c5 CIRCLED LATIN CAPITAL LETTER P
-24c6 CIRCLED LATIN CAPITAL LETTER Q
-24c7 CIRCLED LATIN CAPITAL LETTER R
-24c8 CIRCLED LATIN CAPITAL LETTER S
-24c9 CIRCLED LATIN CAPITAL LETTER T
-24ca CIRCLED LATIN CAPITAL LETTER U
-24cb CIRCLED LATIN CAPITAL LETTER V
-24cc CIRCLED LATIN CAPITAL LETTER W
-24cd CIRCLED LATIN CAPITAL LETTER X
-24ce CIRCLED LATIN CAPITAL LETTER Y
-24cf CIRCLED LATIN CAPITAL LETTER Z
-24d0 CIRCLED LATIN SMALL LETTER A
-24d1 CIRCLED LATIN SMALL LETTER B
-24d2 CIRCLED LATIN SMALL LETTER C
-24d3 CIRCLED LATIN SMALL LETTER D
-24d4 CIRCLED LATIN SMALL LETTER E
-24d5 CIRCLED LATIN SMALL LETTER F
-24d6 CIRCLED LATIN SMALL LETTER G
-24d7 CIRCLED LATIN SMALL LETTER H
-24d8 CIRCLED LATIN SMALL LETTER I
-24d9 CIRCLED LATIN SMALL LETTER J
-24da CIRCLED LATIN SMALL LETTER K
-24db CIRCLED LATIN SMALL LETTER L
-24dc CIRCLED LATIN SMALL LETTER M
-24dd CIRCLED LATIN SMALL LETTER N
-24de CIRCLED LATIN SMALL LETTER O
-24df CIRCLED LATIN SMALL LETTER P
-24e0 CIRCLED LATIN SMALL LETTER Q
-24e1 CIRCLED LATIN SMALL LETTER R
-24e2 CIRCLED LATIN SMALL LETTER S
-24e3 CIRCLED LATIN SMALL LETTER T
-24e4 CIRCLED LATIN SMALL LETTER U
-24e5 CIRCLED LATIN SMALL LETTER V
-24e6 CIRCLED LATIN SMALL LETTER W
-24e7 CIRCLED LATIN SMALL LETTER X
-24e8 CIRCLED LATIN SMALL LETTER Y
-24e9 CIRCLED LATIN SMALL LETTER Z
-24ea CIRCLED DIGIT ZERO
-2500 BOX DRAWINGS LIGHT HORIZONTAL
-2501 BOX DRAWINGS HEAVY HORIZONTAL
-2502 BOX DRAWINGS LIGHT VERTICAL
-2503 BOX DRAWINGS HEAVY VERTICAL
-2504 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
-2505 BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
-2506 BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
-2507 BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
-2508 BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
-2509 BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
-250a BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
-250b BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
-250c BOX DRAWINGS LIGHT DOWN AND RIGHT
-250d BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
-250e BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
-250f BOX DRAWINGS HEAVY DOWN AND RIGHT
-2510 BOX DRAWINGS LIGHT DOWN AND LEFT
-2511 BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
-2512 BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
-2513 BOX DRAWINGS HEAVY DOWN AND LEFT
-2514 BOX DRAWINGS LIGHT UP AND RIGHT
-2515 BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
-2516 BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
-2517 BOX DRAWINGS HEAVY UP AND RIGHT
-2518 BOX DRAWINGS LIGHT UP AND LEFT
-2519 BOX DRAWINGS UP LIGHT AND LEFT HEAVY
-251a BOX DRAWINGS UP HEAVY AND LEFT LIGHT
-251b BOX DRAWINGS HEAVY UP AND LEFT
-251c BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-251d BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
-251e BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
-251f BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
-2520 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
-2521 BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
-2522 BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
-2523 BOX DRAWINGS HEAVY VERTICAL AND RIGHT
-2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT
-2525 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
-2526 BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
-2527 BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
-2528 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
-2529 BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
-252a BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
-252b BOX DRAWINGS HEAVY VERTICAL AND LEFT
-252c BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-252d BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
-252e BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
-252f BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
-2530 BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
-2531 BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
-2532 BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
-2533 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
-2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL
-2535 BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
-2536 BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
-2537 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
-2538 BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
-2539 BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
-253a BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
-253b BOX DRAWINGS HEAVY UP AND HORIZONTAL
-253c BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-253d BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
-253e BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
-253f BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
-2540 BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
-2541 BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
-2542 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
-2543 BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
-2544 BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
-2545 BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
-2546 BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
-2547 BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
-2548 BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
-2549 BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
-254a BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
-254b BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
-254c BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
-254d BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
-254e BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
-254f BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
-2550 BOX DRAWINGS DOUBLE HORIZONTAL
-2551 BOX DRAWINGS DOUBLE VERTICAL
-2552 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-2553 BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-2554 BOX DRAWINGS DOUBLE DOWN AND RIGHT
-2555 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-2556 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-2557 BOX DRAWINGS DOUBLE DOWN AND LEFT
-2558 BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-2559 BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-255a BOX DRAWINGS DOUBLE UP AND RIGHT
-255b BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-255c BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-255d BOX DRAWINGS DOUBLE UP AND LEFT
-255e BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-255f BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-2560 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-2561 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-2562 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-2563 BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-2564 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-2565 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-2566 BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-2567 BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-2568 BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-256a BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-256b BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-256c BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-256d BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
-256e BOX DRAWINGS LIGHT ARC DOWN AND LEFT
-256f BOX DRAWINGS LIGHT ARC UP AND LEFT
-2570 BOX DRAWINGS LIGHT ARC UP AND RIGHT
-2571 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
-2572 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
-2573 BOX DRAWINGS LIGHT DIAGONAL CROSS
-2574 BOX DRAWINGS LIGHT LEFT
-2575 BOX DRAWINGS LIGHT UP
-2576 BOX DRAWINGS LIGHT RIGHT
-2577 BOX DRAWINGS LIGHT DOWN
-2578 BOX DRAWINGS HEAVY LEFT
-2579 BOX DRAWINGS HEAVY UP
-257a BOX DRAWINGS HEAVY RIGHT
-257b BOX DRAWINGS HEAVY DOWN
-257c BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
-257d BOX DRAWINGS LIGHT UP AND HEAVY DOWN
-257e BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
-257f BOX DRAWINGS HEAVY UP AND LIGHT DOWN
-2580 UPPER HALF BLOCK
-2581 LOWER ONE EIGHTH BLOCK
-2582 LOWER ONE QUARTER BLOCK
-2583 LOWER THREE EIGHTHS BLOCK
-2584 LOWER HALF BLOCK
-2585 LOWER FIVE EIGHTHS BLOCK
-2586 LOWER THREE QUARTERS BLOCK
-2587 LOWER SEVEN EIGHTHS BLOCK
-2588 FULL BLOCK
-2589 LEFT SEVEN EIGHTHS BLOCK
-258a LEFT THREE QUARTERS BLOCK
-258b LEFT FIVE EIGHTHS BLOCK
-258c LEFT HALF BLOCK
-258d LEFT THREE EIGHTHS BLOCK
-258e LEFT ONE QUARTER BLOCK
-258f LEFT ONE EIGHTH BLOCK
-2590 RIGHT HALF BLOCK
-2591 LIGHT SHADE
-2592 MEDIUM SHADE
-2593 DARK SHADE
-2594 UPPER ONE EIGHTH BLOCK
-2595 RIGHT ONE EIGHTH BLOCK
-25a0 BLACK SQUARE
-25a1 WHITE SQUARE
-25a2 WHITE SQUARE WITH ROUNDED CORNERS
-25a3 WHITE SQUARE CONTAINING BLACK SMALL SQUARE
-25a4 SQUARE WITH HORIZONTAL FILL
-25a5 SQUARE WITH VERTICAL FILL
-25a6 SQUARE WITH ORTHOGONAL CROSSHATCH FILL
-25a7 SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
-25a8 SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
-25a9 SQUARE WITH DIAGONAL CROSSHATCH FILL
-25aa BLACK SMALL SQUARE
-25ab WHITE SMALL SQUARE
-25ac BLACK RECTANGLE
-25ad WHITE RECTANGLE
-25ae BLACK VERTICAL RECTANGLE
-25af WHITE VERTICAL RECTANGLE
-25b0 BLACK PARALLELOGRAM
-25b1 WHITE PARALLELOGRAM
-25b2 BLACK UP-POINTING TRIANGLE
-25b3 WHITE UP-POINTING TRIANGLE
-25b4 BLACK UP-POINTING SMALL TRIANGLE
-25b5 WHITE UP-POINTING SMALL TRIANGLE
-25b6 BLACK RIGHT-POINTING TRIANGLE
-25b7 WHITE RIGHT-POINTING TRIANGLE
-25b8 BLACK RIGHT-POINTING SMALL TRIANGLE
-25b9 WHITE RIGHT-POINTING SMALL TRIANGLE
-25ba BLACK RIGHT-POINTING POINTER
-25bb WHITE RIGHT-POINTING POINTER
-25bc BLACK DOWN-POINTING TRIANGLE
-25bd WHITE DOWN-POINTING TRIANGLE
-25be BLACK DOWN-POINTING SMALL TRIANGLE
-25bf WHITE DOWN-POINTING SMALL TRIANGLE
-25c0 BLACK LEFT-POINTING TRIANGLE
-25c1 WHITE LEFT-POINTING TRIANGLE
-25c2 BLACK LEFT-POINTING SMALL TRIANGLE
-25c3 WHITE LEFT-POINTING SMALL TRIANGLE
-25c4 BLACK LEFT-POINTING POINTER
-25c5 WHITE LEFT-POINTING POINTER
-25c6 BLACK DIAMOND
-25c7 WHITE DIAMOND
-25c8 WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
-25c9 FISHEYE
-25ca LOZENGE
-25cb WHITE CIRCLE
-25cc DOTTED CIRCLE
-25cd CIRCLE WITH VERTICAL FILL
-25ce BULLSEYE
-25cf BLACK CIRCLE
-25d0 CIRCLE WITH LEFT HALF BLACK
-25d1 CIRCLE WITH RIGHT HALF BLACK
-25d2 CIRCLE WITH LOWER HALF BLACK
-25d3 CIRCLE WITH UPPER HALF BLACK
-25d4 CIRCLE WITH UPPER RIGHT QUADRANT BLACK
-25d5 CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
-25d6 LEFT HALF BLACK CIRCLE
-25d7 RIGHT HALF BLACK CIRCLE
-25d8 INVERSE BULLET
-25d9 INVERSE WHITE CIRCLE
-25da UPPER HALF INVERSE WHITE CIRCLE
-25db LOWER HALF INVERSE WHITE CIRCLE
-25dc UPPER LEFT QUADRANT CIRCULAR ARC
-25dd UPPER RIGHT QUADRANT CIRCULAR ARC
-25de LOWER RIGHT QUADRANT CIRCULAR ARC
-25df LOWER LEFT QUADRANT CIRCULAR ARC
-25e0 UPPER HALF CIRCLE
-25e1 LOWER HALF CIRCLE
-25e2 BLACK LOWER RIGHT TRIANGLE
-25e3 BLACK LOWER LEFT TRIANGLE
-25e4 BLACK UPPER LEFT TRIANGLE
-25e5 BLACK UPPER RIGHT TRIANGLE
-25e6 WHITE BULLET
-25e7 SQUARE WITH LEFT HALF BLACK
-25e8 SQUARE WITH RIGHT HALF BLACK
-25e9 SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
-25ea SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
-25eb WHITE SQUARE WITH VERTICAL BISECTING LINE
-25ec WHITE UP-POINTING TRIANGLE WITH DOT
-25ed UP-POINTING TRIANGLE WITH LEFT HALF BLACK
-25ee UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
-25ef LARGE CIRCLE
-25f0 WHITE SQUARE WITH UPPER LEFT QUADRANT
-25f1 WHITE SQUARE WITH LOWER LEFT QUADRANT
-25f2 WHITE SQUARE WITH LOWER RIGHT QUADRANT
-25f3 WHITE SQUARE WITH UPPER RIGHT QUADRANT
-25f4 WHITE CIRCLE WITH UPPER LEFT QUADRANT
-25f5 WHITE CIRCLE WITH LOWER LEFT QUADRANT
-25f6 WHITE CIRCLE WITH LOWER RIGHT QUADRANT
-25f7 WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-2600 BLACK SUN WITH RAYS
-2601 CLOUD
-2602 UMBRELLA
-2603 SNOWMAN
-2604 COMET
-2605 BLACK STAR
-2606 WHITE STAR
-2607 LIGHTNING
-2608 THUNDERSTORM
-2609 SUN
-260a ASCENDING NODE
-260b DESCENDING NODE
-260c CONJUNCTION
-260d OPPOSITION
-260e BLACK TELEPHONE
-260f WHITE TELEPHONE
-2610 BALLOT BOX
-2611 BALLOT BOX WITH CHECK
-2612 BALLOT BOX WITH X
-2613 SALTIRE
-2619 REVERSED ROTATED FLORAL HEART BULLET
-261a BLACK LEFT POINTING INDEX
-261b BLACK RIGHT POINTING INDEX
-261c WHITE LEFT POINTING INDEX
-261d WHITE UP POINTING INDEX
-261e WHITE RIGHT POINTING INDEX
-261f WHITE DOWN POINTING INDEX
-2620 SKULL AND CROSSBONES
-2621 CAUTION SIGN
-2622 RADIOACTIVE SIGN
-2623 BIOHAZARD SIGN
-2624 CADUCEUS
-2625 ANKH
-2626 ORTHODOX CROSS
-2627 CHI RHO
-2628 CROSS OF LORRAINE
-2629 CROSS OF JERUSALEM
-262a STAR AND CRESCENT
-262b FARSI SYMBOL
-262c ADI SHAKTI
-262d HAMMER AND SICKLE
-262e PEACE SYMBOL
-262f YIN YANG
-2630 TRIGRAM FOR HEAVEN
-2631 TRIGRAM FOR LAKE
-2632 TRIGRAM FOR FIRE
-2633 TRIGRAM FOR THUNDER
-2634 TRIGRAM FOR WIND
-2635 TRIGRAM FOR WATER
-2636 TRIGRAM FOR MOUNTAIN
-2637 TRIGRAM FOR EARTH
-2638 WHEEL OF DHARMA
-2639 WHITE FROWNING FACE
-263a WHITE SMILING FACE
-263b BLACK SMILING FACE
-263c WHITE SUN WITH RAYS
-263d FIRST QUARTER MOON
-263e LAST QUARTER MOON
-263f MERCURY
-2640 FEMALE SIGN
-2641 EARTH
-2642 MALE SIGN
-2643 JUPITER
-2644 SATURN
-2645 URANUS
-2646 NEPTUNE
-2647 PLUTO
-2648 ARIES
-2649 TAURUS
-264a GEMINI
-264b CANCER
-264c LEO
-264d VIRGO
-264e LIBRA
-264f SCORPIUS
-2650 SAGITTARIUS
-2651 CAPRICORN
-2652 AQUARIUS
-2653 PISCES
-2654 WHITE CHESS KING
-2655 WHITE CHESS QUEEN
-2656 WHITE CHESS ROOK
-2657 WHITE CHESS BISHOP
-2658 WHITE CHESS KNIGHT
-2659 WHITE CHESS PAWN
-265a BLACK CHESS KING
-265b BLACK CHESS QUEEN
-265c BLACK CHESS ROOK
-265d BLACK CHESS BISHOP
-265e BLACK CHESS KNIGHT
-265f BLACK CHESS PAWN
-2660 BLACK SPADE SUIT
-2661 WHITE HEART SUIT
-2662 WHITE DIAMOND SUIT
-2663 BLACK CLUB SUIT
-2664 WHITE SPADE SUIT
-2665 BLACK HEART SUIT
-2666 BLACK DIAMOND SUIT
-2667 WHITE CLUB SUIT
-2668 HOT SPRINGS
-2669 QUARTER NOTE
-266a EIGHTH NOTE
-266b BEAMED EIGHTH NOTES
-266c BEAMED SIXTEENTH NOTES
-266d MUSIC FLAT SIGN
-266e MUSIC NATURAL SIGN
-266f MUSIC SHARP SIGN
-2670 WEST SYRIAC CROSS
-2671 EAST SYRIAC CROSS
-2701 UPPER BLADE SCISSORS
-2702 BLACK SCISSORS
-2703 LOWER BLADE SCISSORS
-2704 WHITE SCISSORS
-2706 TELEPHONE LOCATION SIGN
-2707 TAPE DRIVE
-2708 AIRPLANE
-2709 ENVELOPE
-270c VICTORY HAND
-270d WRITING HAND
-270e LOWER RIGHT PENCIL
-270f PENCIL
-2710 UPPER RIGHT PENCIL
-2711 WHITE NIB
-2712 BLACK NIB
-2713 CHECK MARK
-2714 HEAVY CHECK MARK
-2715 MULTIPLICATION X
-2716 HEAVY MULTIPLICATION X
-2717 BALLOT X
-2718 HEAVY BALLOT X
-2719 OUTLINED GREEK CROSS
-271a HEAVY GREEK CROSS
-271b OPEN CENTRE CROSS
-271c HEAVY OPEN CENTRE CROSS
-271d LATIN CROSS
-271e SHADOWED WHITE LATIN CROSS
-271f OUTLINED LATIN CROSS
-2720 MALTESE CROSS
-2721 STAR OF DAVID
-2722 FOUR TEARDROP-SPOKED ASTERISK
-2723 FOUR BALLOON-SPOKED ASTERISK
-2724 HEAVY FOUR BALLOON-SPOKED ASTERISK
-2725 FOUR CLUB-SPOKED ASTERISK
-2726 BLACK FOUR POINTED STAR
-2727 WHITE FOUR POINTED STAR
-2729 STRESS OUTLINED WHITE STAR
-272a CIRCLED WHITE STAR
-272b OPEN CENTRE BLACK STAR
-272c BLACK CENTRE WHITE STAR
-272d OUTLINED BLACK STAR
-272e HEAVY OUTLINED BLACK STAR
-272f PINWHEEL STAR
-2730 SHADOWED WHITE STAR
-2731 HEAVY ASTERISK
-2732 OPEN CENTRE ASTERISK
-2733 EIGHT SPOKED ASTERISK
-2734 EIGHT POINTED BLACK STAR
-2735 EIGHT POINTED PINWHEEL STAR
-2736 SIX POINTED BLACK STAR
-2737 EIGHT POINTED RECTILINEAR BLACK STAR
-2738 HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
-2739 TWELVE POINTED BLACK STAR
-273a SIXTEEN POINTED ASTERISK
-273b TEARDROP-SPOKED ASTERISK
-273c OPEN CENTRE TEARDROP-SPOKED ASTERISK
-273d HEAVY TEARDROP-SPOKED ASTERISK
-273e SIX PETALLED BLACK AND WHITE FLORETTE
-273f BLACK FLORETTE
-2740 WHITE FLORETTE
-2741 EIGHT PETALLED OUTLINED BLACK FLORETTE
-2742 CIRCLED OPEN CENTRE EIGHT POINTED STAR
-2743 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
-2744 SNOWFLAKE
-2745 TIGHT TRIFOLIATE SNOWFLAKE
-2746 HEAVY CHEVRON SNOWFLAKE
-2747 SPARKLE
-2748 HEAVY SPARKLE
-2749 BALLOON-SPOKED ASTERISK
-274a EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274b HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274d SHADOWED WHITE CIRCLE
-274f LOWER RIGHT DROP-SHADOWED WHITE SQUARE
-2750 UPPER RIGHT DROP-SHADOWED WHITE SQUARE
-2751 LOWER RIGHT SHADOWED WHITE SQUARE
-2752 UPPER RIGHT SHADOWED WHITE SQUARE
-2756 BLACK DIAMOND MINUS WHITE X
-2758 LIGHT VERTICAL BAR
-2759 MEDIUM VERTICAL BAR
-275a HEAVY VERTICAL BAR
-275b HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
-275c HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
-275d HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
-275e HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-2761 CURVED STEM PARAGRAPH SIGN ORNAMENT
-2762 HEAVY EXCLAMATION MARK ORNAMENT
-2763 HEAVY HEART EXCLAMATION MARK ORNAMENT
-2764 HEAVY BLACK HEART
-2765 ROTATED HEAVY BLACK HEART BULLET
-2766 FLORAL HEART
-2767 ROTATED FLORAL HEART BULLET
-2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE
-2777 DINGBAT NEGATIVE CIRCLED DIGIT TWO
-2778 DINGBAT NEGATIVE CIRCLED DIGIT THREE
-2779 DINGBAT NEGATIVE CIRCLED DIGIT FOUR
-277a DINGBAT NEGATIVE CIRCLED DIGIT FIVE
-277b DINGBAT NEGATIVE CIRCLED DIGIT SIX
-277c DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
-277d DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
-277e DINGBAT NEGATIVE CIRCLED DIGIT NINE
-277f DINGBAT NEGATIVE CIRCLED NUMBER TEN
-2780 DINGBAT CIRCLED SANS-SERIF DIGIT ONE
-2781 DINGBAT CIRCLED SANS-SERIF DIGIT TWO
-2782 DINGBAT CIRCLED SANS-SERIF DIGIT THREE
-2783 DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
-2784 DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
-2785 DINGBAT CIRCLED SANS-SERIF DIGIT SIX
-2786 DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
-2787 DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
-2788 DINGBAT CIRCLED SANS-SERIF DIGIT NINE
-2789 DINGBAT CIRCLED SANS-SERIF NUMBER TEN
-278a DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
-278b DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
-278c DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
-278d DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
-278e DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
-278f DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
-2790 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
-2791 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
-2792 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
-2793 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
-2794 HEAVY WIDE-HEADED RIGHTWARDS ARROW
-2798 HEAVY SOUTH EAST ARROW
-2799 HEAVY RIGHTWARDS ARROW
-279a HEAVY NORTH EAST ARROW
-279b DRAFTING POINT RIGHTWARDS ARROW
-279c HEAVY ROUND-TIPPED RIGHTWARDS ARROW
-279d TRIANGLE-HEADED RIGHTWARDS ARROW
-279e HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
-279f DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-27a0 HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-27a1 BLACK RIGHTWARDS ARROW
-27a2 THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
-27a3 THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
-27a4 BLACK RIGHTWARDS ARROWHEAD
-27a5 HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
-27a6 HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
-27a7 SQUAT BLACK RIGHTWARDS ARROW
-27a8 HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
-27a9 RIGHT-SHADED WHITE RIGHTWARDS ARROW
-27aa LEFT-SHADED WHITE RIGHTWARDS ARROW
-27ab BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-27ac FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-27ad HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27ae HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27af NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27b1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27b2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW
-27b3 WHITE-FEATHERED RIGHTWARDS ARROW
-27b4 BLACK-FEATHERED SOUTH EAST ARROW
-27b5 BLACK-FEATHERED RIGHTWARDS ARROW
-27b6 BLACK-FEATHERED NORTH EAST ARROW
-27b7 HEAVY BLACK-FEATHERED SOUTH EAST ARROW
-27b8 HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
-27b9 HEAVY BLACK-FEATHERED NORTH EAST ARROW
-27ba TEARDROP-BARBED RIGHTWARDS ARROW
-27bb HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
-27bc WEDGE-TAILED RIGHTWARDS ARROW
-27bd HEAVY WEDGE-TAILED RIGHTWARDS ARROW
-27be OPEN-OUTLINED RIGHTWARDS ARROW
-2800 BRAILLE PATTERN BLANK
-2801 BRAILLE PATTERN DOTS-1
-2802 BRAILLE PATTERN DOTS-2
-2803 BRAILLE PATTERN DOTS-12
-2804 BRAILLE PATTERN DOTS-3
-2805 BRAILLE PATTERN DOTS-13
-2806 BRAILLE PATTERN DOTS-23
-2807 BRAILLE PATTERN DOTS-123
-2808 BRAILLE PATTERN DOTS-4
-2809 BRAILLE PATTERN DOTS-14
-280a BRAILLE PATTERN DOTS-24
-280b BRAILLE PATTERN DOTS-124
-280c BRAILLE PATTERN DOTS-34
-280d BRAILLE PATTERN DOTS-134
-280e BRAILLE PATTERN DOTS-234
-280f BRAILLE PATTERN DOTS-1234
-2810 BRAILLE PATTERN DOTS-5
-2811 BRAILLE PATTERN DOTS-15
-2812 BRAILLE PATTERN DOTS-25
-2813 BRAILLE PATTERN DOTS-125
-2814 BRAILLE PATTERN DOTS-35
-2815 BRAILLE PATTERN DOTS-135
-2816 BRAILLE PATTERN DOTS-235
-2817 BRAILLE PATTERN DOTS-1235
-2818 BRAILLE PATTERN DOTS-45
-2819 BRAILLE PATTERN DOTS-145
-281a BRAILLE PATTERN DOTS-245
-281b BRAILLE PATTERN DOTS-1245
-281c BRAILLE PATTERN DOTS-345
-281d BRAILLE PATTERN DOTS-1345
-281e BRAILLE PATTERN DOTS-2345
-281f BRAILLE PATTERN DOTS-12345
-2820 BRAILLE PATTERN DOTS-6
-2821 BRAILLE PATTERN DOTS-16
-2822 BRAILLE PATTERN DOTS-26
-2823 BRAILLE PATTERN DOTS-126
-2824 BRAILLE PATTERN DOTS-36
-2825 BRAILLE PATTERN DOTS-136
-2826 BRAILLE PATTERN DOTS-236
-2827 BRAILLE PATTERN DOTS-1236
-2828 BRAILLE PATTERN DOTS-46
-2829 BRAILLE PATTERN DOTS-146
-282a BRAILLE PATTERN DOTS-246
-282b BRAILLE PATTERN DOTS-1246
-282c BRAILLE PATTERN DOTS-346
-282d BRAILLE PATTERN DOTS-1346
-282e BRAILLE PATTERN DOTS-2346
-282f BRAILLE PATTERN DOTS-12346
-2830 BRAILLE PATTERN DOTS-56
-2831 BRAILLE PATTERN DOTS-156
-2832 BRAILLE PATTERN DOTS-256
-2833 BRAILLE PATTERN DOTS-1256
-2834 BRAILLE PATTERN DOTS-356
-2835 BRAILLE PATTERN DOTS-1356
-2836 BRAILLE PATTERN DOTS-2356
-2837 BRAILLE PATTERN DOTS-12356
-2838 BRAILLE PATTERN DOTS-456
-2839 BRAILLE PATTERN DOTS-1456
-283a BRAILLE PATTERN DOTS-2456
-283b BRAILLE PATTERN DOTS-12456
-283c BRAILLE PATTERN DOTS-3456
-283d BRAILLE PATTERN DOTS-13456
-283e BRAILLE PATTERN DOTS-23456
-283f BRAILLE PATTERN DOTS-123456
-2840 BRAILLE PATTERN DOTS-7
-2841 BRAILLE PATTERN DOTS-17
-2842 BRAILLE PATTERN DOTS-27
-2843 BRAILLE PATTERN DOTS-127
-2844 BRAILLE PATTERN DOTS-37
-2845 BRAILLE PATTERN DOTS-137
-2846 BRAILLE PATTERN DOTS-237
-2847 BRAILLE PATTERN DOTS-1237
-2848 BRAILLE PATTERN DOTS-47
-2849 BRAILLE PATTERN DOTS-147
-284a BRAILLE PATTERN DOTS-247
-284b BRAILLE PATTERN DOTS-1247
-284c BRAILLE PATTERN DOTS-347
-284d BRAILLE PATTERN DOTS-1347
-284e BRAILLE PATTERN DOTS-2347
-284f BRAILLE PATTERN DOTS-12347
-2850 BRAILLE PATTERN DOTS-57
-2851 BRAILLE PATTERN DOTS-157
-2852 BRAILLE PATTERN DOTS-257
-2853 BRAILLE PATTERN DOTS-1257
-2854 BRAILLE PATTERN DOTS-357
-2855 BRAILLE PATTERN DOTS-1357
-2856 BRAILLE PATTERN DOTS-2357
-2857 BRAILLE PATTERN DOTS-12357
-2858 BRAILLE PATTERN DOTS-457
-2859 BRAILLE PATTERN DOTS-1457
-285a BRAILLE PATTERN DOTS-2457
-285b BRAILLE PATTERN DOTS-12457
-285c BRAILLE PATTERN DOTS-3457
-285d BRAILLE PATTERN DOTS-13457
-285e BRAILLE PATTERN DOTS-23457
-285f BRAILLE PATTERN DOTS-123457
-2860 BRAILLE PATTERN DOTS-67
-2861 BRAILLE PATTERN DOTS-167
-2862 BRAILLE PATTERN DOTS-267
-2863 BRAILLE PATTERN DOTS-1267
-2864 BRAILLE PATTERN DOTS-367
-2865 BRAILLE PATTERN DOTS-1367
-2866 BRAILLE PATTERN DOTS-2367
-2867 BRAILLE PATTERN DOTS-12367
-2868 BRAILLE PATTERN DOTS-467
-2869 BRAILLE PATTERN DOTS-1467
-286a BRAILLE PATTERN DOTS-2467
-286b BRAILLE PATTERN DOTS-12467
-286c BRAILLE PATTERN DOTS-3467
-286d BRAILLE PATTERN DOTS-13467
-286e BRAILLE PATTERN DOTS-23467
-286f BRAILLE PATTERN DOTS-123467
-2870 BRAILLE PATTERN DOTS-567
-2871 BRAILLE PATTERN DOTS-1567
-2872 BRAILLE PATTERN DOTS-2567
-2873 BRAILLE PATTERN DOTS-12567
-2874 BRAILLE PATTERN DOTS-3567
-2875 BRAILLE PATTERN DOTS-13567
-2876 BRAILLE PATTERN DOTS-23567
-2877 BRAILLE PATTERN DOTS-123567
-2878 BRAILLE PATTERN DOTS-4567
-2879 BRAILLE PATTERN DOTS-14567
-287a BRAILLE PATTERN DOTS-24567
-287b BRAILLE PATTERN DOTS-124567
-287c BRAILLE PATTERN DOTS-34567
-287d BRAILLE PATTERN DOTS-134567
-287e BRAILLE PATTERN DOTS-234567
-287f BRAILLE PATTERN DOTS-1234567
-2880 BRAILLE PATTERN DOTS-8
-2881 BRAILLE PATTERN DOTS-18
-2882 BRAILLE PATTERN DOTS-28
-2883 BRAILLE PATTERN DOTS-128
-2884 BRAILLE PATTERN DOTS-38
-2885 BRAILLE PATTERN DOTS-138
-2886 BRAILLE PATTERN DOTS-238
-2887 BRAILLE PATTERN DOTS-1238
-2888 BRAILLE PATTERN DOTS-48
-2889 BRAILLE PATTERN DOTS-148
-288a BRAILLE PATTERN DOTS-248
-288b BRAILLE PATTERN DOTS-1248
-288c BRAILLE PATTERN DOTS-348
-288d BRAILLE PATTERN DOTS-1348
-288e BRAILLE PATTERN DOTS-2348
-288f BRAILLE PATTERN DOTS-12348
-2890 BRAILLE PATTERN DOTS-58
-2891 BRAILLE PATTERN DOTS-158
-2892 BRAILLE PATTERN DOTS-258
-2893 BRAILLE PATTERN DOTS-1258
-2894 BRAILLE PATTERN DOTS-358
-2895 BRAILLE PATTERN DOTS-1358
-2896 BRAILLE PATTERN DOTS-2358
-2897 BRAILLE PATTERN DOTS-12358
-2898 BRAILLE PATTERN DOTS-458
-2899 BRAILLE PATTERN DOTS-1458
-289a BRAILLE PATTERN DOTS-2458
-289b BRAILLE PATTERN DOTS-12458
-289c BRAILLE PATTERN DOTS-3458
-289d BRAILLE PATTERN DOTS-13458
-289e BRAILLE PATTERN DOTS-23458
-289f BRAILLE PATTERN DOTS-123458
-28a0 BRAILLE PATTERN DOTS-68
-28a1 BRAILLE PATTERN DOTS-168
-28a2 BRAILLE PATTERN DOTS-268
-28a3 BRAILLE PATTERN DOTS-1268
-28a4 BRAILLE PATTERN DOTS-368
-28a5 BRAILLE PATTERN DOTS-1368
-28a6 BRAILLE PATTERN DOTS-2368
-28a7 BRAILLE PATTERN DOTS-12368
-28a8 BRAILLE PATTERN DOTS-468
-28a9 BRAILLE PATTERN DOTS-1468
-28aa BRAILLE PATTERN DOTS-2468
-28ab BRAILLE PATTERN DOTS-12468
-28ac BRAILLE PATTERN DOTS-3468
-28ad BRAILLE PATTERN DOTS-13468
-28ae BRAILLE PATTERN DOTS-23468
-28af BRAILLE PATTERN DOTS-123468
-28b0 BRAILLE PATTERN DOTS-568
-28b1 BRAILLE PATTERN DOTS-1568
-28b2 BRAILLE PATTERN DOTS-2568
-28b3 BRAILLE PATTERN DOTS-12568
-28b4 BRAILLE PATTERN DOTS-3568
-28b5 BRAILLE PATTERN DOTS-13568
-28b6 BRAILLE PATTERN DOTS-23568
-28b7 BRAILLE PATTERN DOTS-123568
-28b8 BRAILLE PATTERN DOTS-4568
-28b9 BRAILLE PATTERN DOTS-14568
-28ba BRAILLE PATTERN DOTS-24568
-28bb BRAILLE PATTERN DOTS-124568
-28bc BRAILLE PATTERN DOTS-34568
-28bd BRAILLE PATTERN DOTS-134568
-28be BRAILLE PATTERN DOTS-234568
-28bf BRAILLE PATTERN DOTS-1234568
-28c0 BRAILLE PATTERN DOTS-78
-28c1 BRAILLE PATTERN DOTS-178
-28c2 BRAILLE PATTERN DOTS-278
-28c3 BRAILLE PATTERN DOTS-1278
-28c4 BRAILLE PATTERN DOTS-378
-28c5 BRAILLE PATTERN DOTS-1378
-28c6 BRAILLE PATTERN DOTS-2378
-28c7 BRAILLE PATTERN DOTS-12378
-28c8 BRAILLE PATTERN DOTS-478
-28c9 BRAILLE PATTERN DOTS-1478
-28ca BRAILLE PATTERN DOTS-2478
-28cb BRAILLE PATTERN DOTS-12478
-28cc BRAILLE PATTERN DOTS-3478
-28cd BRAILLE PATTERN DOTS-13478
-28ce BRAILLE PATTERN DOTS-23478
-28cf BRAILLE PATTERN DOTS-123478
-28d0 BRAILLE PATTERN DOTS-578
-28d1 BRAILLE PATTERN DOTS-1578
-28d2 BRAILLE PATTERN DOTS-2578
-28d3 BRAILLE PATTERN DOTS-12578
-28d4 BRAILLE PATTERN DOTS-3578
-28d5 BRAILLE PATTERN DOTS-13578
-28d6 BRAILLE PATTERN DOTS-23578
-28d7 BRAILLE PATTERN DOTS-123578
-28d8 BRAILLE PATTERN DOTS-4578
-28d9 BRAILLE PATTERN DOTS-14578
-28da BRAILLE PATTERN DOTS-24578
-28db BRAILLE PATTERN DOTS-124578
-28dc BRAILLE PATTERN DOTS-34578
-28dd BRAILLE PATTERN DOTS-134578
-28de BRAILLE PATTERN DOTS-234578
-28df BRAILLE PATTERN DOTS-1234578
-28e0 BRAILLE PATTERN DOTS-678
-28e1 BRAILLE PATTERN DOTS-1678
-28e2 BRAILLE PATTERN DOTS-2678
-28e3 BRAILLE PATTERN DOTS-12678
-28e4 BRAILLE PATTERN DOTS-3678
-28e5 BRAILLE PATTERN DOTS-13678
-28e6 BRAILLE PATTERN DOTS-23678
-28e7 BRAILLE PATTERN DOTS-123678
-28e8 BRAILLE PATTERN DOTS-4678
-28e9 BRAILLE PATTERN DOTS-14678
-28ea BRAILLE PATTERN DOTS-24678
-28eb BRAILLE PATTERN DOTS-124678
-28ec BRAILLE PATTERN DOTS-34678
-28ed BRAILLE PATTERN DOTS-134678
-28ee BRAILLE PATTERN DOTS-234678
-28ef BRAILLE PATTERN DOTS-1234678
-28f0 BRAILLE PATTERN DOTS-5678
-28f1 BRAILLE PATTERN DOTS-15678
-28f2 BRAILLE PATTERN DOTS-25678
-28f3 BRAILLE PATTERN DOTS-125678
-28f4 BRAILLE PATTERN DOTS-35678
-28f5 BRAILLE PATTERN DOTS-135678
-28f6 BRAILLE PATTERN DOTS-235678
-28f7 BRAILLE PATTERN DOTS-1235678
-28f8 BRAILLE PATTERN DOTS-45678
-28f9 BRAILLE PATTERN DOTS-145678
-28fa BRAILLE PATTERN DOTS-245678
-28fb BRAILLE PATTERN DOTS-1245678
-28fc BRAILLE PATTERN DOTS-345678
-28fd BRAILLE PATTERN DOTS-1345678
-28fe BRAILLE PATTERN DOTS-2345678
-28ff BRAILLE PATTERN DOTS-12345678
-2e80 CJK RADICAL REPEAT
-2e81 CJK RADICAL CLIFF
-2e82 CJK RADICAL SECOND ONE
-2e83 CJK RADICAL SECOND TWO
-2e84 CJK RADICAL SECOND THREE
-2e85 CJK RADICAL PERSON
-2e86 CJK RADICAL BOX
-2e87 CJK RADICAL TABLE
-2e88 CJK RADICAL KNIFE ONE
-2e89 CJK RADICAL KNIFE TWO
-2e8a CJK RADICAL DIVINATION
-2e8b CJK RADICAL SEAL
-2e8c CJK RADICAL SMALL ONE
-2e8d CJK RADICAL SMALL TWO
-2e8e CJK RADICAL LAME ONE
-2e8f CJK RADICAL LAME TWO
-2e90 CJK RADICAL LAME THREE
-2e91 CJK RADICAL LAME FOUR
-2e92 CJK RADICAL SNAKE
-2e93 CJK RADICAL THREAD
-2e94 CJK RADICAL SNOUT ONE
-2e95 CJK RADICAL SNOUT TWO
-2e96 CJK RADICAL HEART ONE
-2e97 CJK RADICAL HEART TWO
-2e98 CJK RADICAL HAND
-2e99 CJK RADICAL RAP
-2e9b CJK RADICAL CHOKE
-2e9c CJK RADICAL SUN
-2e9d CJK RADICAL MOON
-2e9e CJK RADICAL DEATH
-2e9f CJK RADICAL MOTHER
-2ea0 CJK RADICAL CIVILIAN
-2ea1 CJK RADICAL WATER ONE
-2ea2 CJK RADICAL WATER TWO
-2ea3 CJK RADICAL FIRE
-2ea4 CJK RADICAL PAW ONE
-2ea5 CJK RADICAL PAW TWO
-2ea6 CJK RADICAL SIMPLIFIED HALF TREE TRUNK
-2ea7 CJK RADICAL COW
-2ea8 CJK RADICAL DOG
-2ea9 CJK RADICAL JADE
-2eaa CJK RADICAL BOLT OF CLOTH
-2eab CJK RADICAL EYE
-2eac CJK RADICAL SPIRIT ONE
-2ead CJK RADICAL SPIRIT TWO
-2eae CJK RADICAL BAMBOO
-2eaf CJK RADICAL SILK
-2eb0 CJK RADICAL C-SIMPLIFIED SILK
-2eb1 CJK RADICAL NET ONE
-2eb2 CJK RADICAL NET TWO
-2eb3 CJK RADICAL NET THREE
-2eb4 CJK RADICAL NET FOUR
-2eb5 CJK RADICAL MESH
-2eb6 CJK RADICAL SHEEP
-2eb7 CJK RADICAL RAM
-2eb8 CJK RADICAL EWE
-2eb9 CJK RADICAL OLD
-2eba CJK RADICAL BRUSH ONE
-2ebb CJK RADICAL BRUSH TWO
-2ebc CJK RADICAL MEAT
-2ebd CJK RADICAL MORTAR
-2ebe CJK RADICAL GRASS ONE
-2ebf CJK RADICAL GRASS TWO
-2ec0 CJK RADICAL GRASS THREE
-2ec1 CJK RADICAL TIGER
-2ec2 CJK RADICAL CLOTHES
-2ec3 CJK RADICAL WEST ONE
-2ec4 CJK RADICAL WEST TWO
-2ec5 CJK RADICAL C-SIMPLIFIED SEE
-2ec6 CJK RADICAL SIMPLIFIED HORN
-2ec7 CJK RADICAL HORN
-2ec8 CJK RADICAL C-SIMPLIFIED SPEECH
-2ec9 CJK RADICAL C-SIMPLIFIED SHELL
-2eca CJK RADICAL FOOT
-2ecb CJK RADICAL C-SIMPLIFIED CART
-2ecc CJK RADICAL SIMPLIFIED WALK
-2ecd CJK RADICAL WALK ONE
-2ece CJK RADICAL WALK TWO
-2ecf CJK RADICAL CITY
-2ed0 CJK RADICAL C-SIMPLIFIED GOLD
-2ed1 CJK RADICAL LONG ONE
-2ed2 CJK RADICAL LONG TWO
-2ed3 CJK RADICAL C-SIMPLIFIED LONG
-2ed4 CJK RADICAL C-SIMPLIFIED GATE
-2ed5 CJK RADICAL MOUND ONE
-2ed6 CJK RADICAL MOUND TWO
-2ed7 CJK RADICAL RAIN
-2ed8 CJK RADICAL BLUE
-2ed9 CJK RADICAL C-SIMPLIFIED TANNED LEATHER
-2eda CJK RADICAL C-SIMPLIFIED LEAF
-2edb CJK RADICAL C-SIMPLIFIED WIND
-2edc CJK RADICAL C-SIMPLIFIED FLY
-2edd CJK RADICAL EAT ONE
-2ede CJK RADICAL EAT TWO
-2edf CJK RADICAL EAT THREE
-2ee0 CJK RADICAL C-SIMPLIFIED EAT
-2ee1 CJK RADICAL HEAD
-2ee2 CJK RADICAL C-SIMPLIFIED HORSE
-2ee3 CJK RADICAL BONE
-2ee4 CJK RADICAL GHOST
-2ee5 CJK RADICAL C-SIMPLIFIED FISH
-2ee6 CJK RADICAL C-SIMPLIFIED BIRD
-2ee7 CJK RADICAL C-SIMPLIFIED SALT
-2ee8 CJK RADICAL SIMPLIFIED WHEAT
-2ee9 CJK RADICAL SIMPLIFIED YELLOW
-2eea CJK RADICAL C-SIMPLIFIED FROG
-2eeb CJK RADICAL J-SIMPLIFIED EVEN
-2eec CJK RADICAL C-SIMPLIFIED EVEN
-2eed CJK RADICAL J-SIMPLIFIED TOOTH
-2eee CJK RADICAL C-SIMPLIFIED TOOTH
-2eef CJK RADICAL J-SIMPLIFIED DRAGON
-2ef0 CJK RADICAL C-SIMPLIFIED DRAGON
-2ef1 CJK RADICAL TURTLE
-2ef2 CJK RADICAL J-SIMPLIFIED TURTLE
-2ef3 CJK RADICAL C-SIMPLIFIED TURTLE
-2f00 KANGXI RADICAL ONE
-2f01 KANGXI RADICAL LINE
-2f02 KANGXI RADICAL DOT
-2f03 KANGXI RADICAL SLASH
-2f04 KANGXI RADICAL SECOND
-2f05 KANGXI RADICAL HOOK
-2f06 KANGXI RADICAL TWO
-2f07 KANGXI RADICAL LID
-2f08 KANGXI RADICAL MAN
-2f09 KANGXI RADICAL LEGS
-2f0a KANGXI RADICAL ENTER
-2f0b KANGXI RADICAL EIGHT
-2f0c KANGXI RADICAL DOWN BOX
-2f0d KANGXI RADICAL COVER
-2f0e KANGXI RADICAL ICE
-2f0f KANGXI RADICAL TABLE
-2f10 KANGXI RADICAL OPEN BOX
-2f11 KANGXI RADICAL KNIFE
-2f12 KANGXI RADICAL POWER
-2f13 KANGXI RADICAL WRAP
-2f14 KANGXI RADICAL SPOON
-2f15 KANGXI RADICAL RIGHT OPEN BOX
-2f16 KANGXI RADICAL HIDING ENCLOSURE
-2f17 KANGXI RADICAL TEN
-2f18 KANGXI RADICAL DIVINATION
-2f19 KANGXI RADICAL SEAL
-2f1a KANGXI RADICAL CLIFF
-2f1b KANGXI RADICAL PRIVATE
-2f1c KANGXI RADICAL AGAIN
-2f1d KANGXI RADICAL MOUTH
-2f1e KANGXI RADICAL ENCLOSURE
-2f1f KANGXI RADICAL EARTH
-2f20 KANGXI RADICAL SCHOLAR
-2f21 KANGXI RADICAL GO
-2f22 KANGXI RADICAL GO SLOWLY
-2f23 KANGXI RADICAL EVENING
-2f24 KANGXI RADICAL BIG
-2f25 KANGXI RADICAL WOMAN
-2f26 KANGXI RADICAL CHILD
-2f27 KANGXI RADICAL ROOF
-2f28 KANGXI RADICAL INCH
-2f29 KANGXI RADICAL SMALL
-2f2a KANGXI RADICAL LAME
-2f2b KANGXI RADICAL CORPSE
-2f2c KANGXI RADICAL SPROUT
-2f2d KANGXI RADICAL MOUNTAIN
-2f2e KANGXI RADICAL RIVER
-2f2f KANGXI RADICAL WORK
-2f30 KANGXI RADICAL ONESELF
-2f31 KANGXI RADICAL TURBAN
-2f32 KANGXI RADICAL DRY
-2f33 KANGXI RADICAL SHORT THREAD
-2f34 KANGXI RADICAL DOTTED CLIFF
-2f35 KANGXI RADICAL LONG STRIDE
-2f36 KANGXI RADICAL TWO HANDS
-2f37 KANGXI RADICAL SHOOT
-2f38 KANGXI RADICAL BOW
-2f39 KANGXI RADICAL SNOUT
-2f3a KANGXI RADICAL BRISTLE
-2f3b KANGXI RADICAL STEP
-2f3c KANGXI RADICAL HEART
-2f3d KANGXI RADICAL HALBERD
-2f3e KANGXI RADICAL DOOR
-2f3f KANGXI RADICAL HAND
-2f40 KANGXI RADICAL BRANCH
-2f41 KANGXI RADICAL RAP
-2f42 KANGXI RADICAL SCRIPT
-2f43 KANGXI RADICAL DIPPER
-2f44 KANGXI RADICAL AXE
-2f45 KANGXI RADICAL SQUARE
-2f46 KANGXI RADICAL NOT
-2f47 KANGXI RADICAL SUN
-2f48 KANGXI RADICAL SAY
-2f49 KANGXI RADICAL MOON
-2f4a KANGXI RADICAL TREE
-2f4b KANGXI RADICAL LACK
-2f4c KANGXI RADICAL STOP
-2f4d KANGXI RADICAL DEATH
-2f4e KANGXI RADICAL WEAPON
-2f4f KANGXI RADICAL DO NOT
-2f50 KANGXI RADICAL COMPARE
-2f51 KANGXI RADICAL FUR
-2f52 KANGXI RADICAL CLAN
-2f53 KANGXI RADICAL STEAM
-2f54 KANGXI RADICAL WATER
-2f55 KANGXI RADICAL FIRE
-2f56 KANGXI RADICAL CLAW
-2f57 KANGXI RADICAL FATHER
-2f58 KANGXI RADICAL DOUBLE X
-2f59 KANGXI RADICAL HALF TREE TRUNK
-2f5a KANGXI RADICAL SLICE
-2f5b KANGXI RADICAL FANG
-2f5c KANGXI RADICAL COW
-2f5d KANGXI RADICAL DOG
-2f5e KANGXI RADICAL PROFOUND
-2f5f KANGXI RADICAL JADE
-2f60 KANGXI RADICAL MELON
-2f61 KANGXI RADICAL TILE
-2f62 KANGXI RADICAL SWEET
-2f63 KANGXI RADICAL LIFE
-2f64 KANGXI RADICAL USE
-2f65 KANGXI RADICAL FIELD
-2f66 KANGXI RADICAL BOLT OF CLOTH
-2f67 KANGXI RADICAL SICKNESS
-2f68 KANGXI RADICAL DOTTED TENT
-2f69 KANGXI RADICAL WHITE
-2f6a KANGXI RADICAL SKIN
-2f6b KANGXI RADICAL DISH
-2f6c KANGXI RADICAL EYE
-2f6d KANGXI RADICAL SPEAR
-2f6e KANGXI RADICAL ARROW
-2f6f KANGXI RADICAL STONE
-2f70 KANGXI RADICAL SPIRIT
-2f71 KANGXI RADICAL TRACK
-2f72 KANGXI RADICAL GRAIN
-2f73 KANGXI RADICAL CAVE
-2f74 KANGXI RADICAL STAND
-2f75 KANGXI RADICAL BAMBOO
-2f76 KANGXI RADICAL RICE
-2f77 KANGXI RADICAL SILK
-2f78 KANGXI RADICAL JAR
-2f79 KANGXI RADICAL NET
-2f7a KANGXI RADICAL SHEEP
-2f7b KANGXI RADICAL FEATHER
-2f7c KANGXI RADICAL OLD
-2f7d KANGXI RADICAL AND
-2f7e KANGXI RADICAL PLOW
-2f7f KANGXI RADICAL EAR
-2f80 KANGXI RADICAL BRUSH
-2f81 KANGXI RADICAL MEAT
-2f82 KANGXI RADICAL MINISTER
-2f83 KANGXI RADICAL SELF
-2f84 KANGXI RADICAL ARRIVE
-2f85 KANGXI RADICAL MORTAR
-2f86 KANGXI RADICAL TONGUE
-2f87 KANGXI RADICAL OPPOSE
-2f88 KANGXI RADICAL BOAT
-2f89 KANGXI RADICAL STOPPING
-2f8a KANGXI RADICAL COLOR
-2f8b KANGXI RADICAL GRASS
-2f8c KANGXI RADICAL TIGER
-2f8d KANGXI RADICAL INSECT
-2f8e KANGXI RADICAL BLOOD
-2f8f KANGXI RADICAL WALK ENCLOSURE
-2f90 KANGXI RADICAL CLOTHES
-2f91 KANGXI RADICAL WEST
-2f92 KANGXI RADICAL SEE
-2f93 KANGXI RADICAL HORN
-2f94 KANGXI RADICAL SPEECH
-2f95 KANGXI RADICAL VALLEY
-2f96 KANGXI RADICAL BEAN
-2f97 KANGXI RADICAL PIG
-2f98 KANGXI RADICAL BADGER
-2f99 KANGXI RADICAL SHELL
-2f9a KANGXI RADICAL RED
-2f9b KANGXI RADICAL RUN
-2f9c KANGXI RADICAL FOOT
-2f9d KANGXI RADICAL BODY
-2f9e KANGXI RADICAL CART
-2f9f KANGXI RADICAL BITTER
-2fa0 KANGXI RADICAL MORNING
-2fa1 KANGXI RADICAL WALK
-2fa2 KANGXI RADICAL CITY
-2fa3 KANGXI RADICAL WINE
-2fa4 KANGXI RADICAL DISTINGUISH
-2fa5 KANGXI RADICAL VILLAGE
-2fa6 KANGXI RADICAL GOLD
-2fa7 KANGXI RADICAL LONG
-2fa8 KANGXI RADICAL GATE
-2fa9 KANGXI RADICAL MOUND
-2faa KANGXI RADICAL SLAVE
-2fab KANGXI RADICAL SHORT TAILED BIRD
-2fac KANGXI RADICAL RAIN
-2fad KANGXI RADICAL BLUE
-2fae KANGXI RADICAL WRONG
-2faf KANGXI RADICAL FACE
-2fb0 KANGXI RADICAL LEATHER
-2fb1 KANGXI RADICAL TANNED LEATHER
-2fb2 KANGXI RADICAL LEEK
-2fb3 KANGXI RADICAL SOUND
-2fb4 KANGXI RADICAL LEAF
-2fb5 KANGXI RADICAL WIND
-2fb6 KANGXI RADICAL FLY
-2fb7 KANGXI RADICAL EAT
-2fb8 KANGXI RADICAL HEAD
-2fb9 KANGXI RADICAL FRAGRANT
-2fba KANGXI RADICAL HORSE
-2fbb KANGXI RADICAL BONE
-2fbc KANGXI RADICAL TALL
-2fbd KANGXI RADICAL HAIR
-2fbe KANGXI RADICAL FIGHT
-2fbf KANGXI RADICAL SACRIFICIAL WINE
-2fc0 KANGXI RADICAL CAULDRON
-2fc1 KANGXI RADICAL GHOST
-2fc2 KANGXI RADICAL FISH
-2fc3 KANGXI RADICAL BIRD
-2fc4 KANGXI RADICAL SALT
-2fc5 KANGXI RADICAL DEER
-2fc6 KANGXI RADICAL WHEAT
-2fc7 KANGXI RADICAL HEMP
-2fc8 KANGXI RADICAL YELLOW
-2fc9 KANGXI RADICAL MILLET
-2fca KANGXI RADICAL BLACK
-2fcb KANGXI RADICAL EMBROIDERY
-2fcc KANGXI RADICAL FROG
-2fcd KANGXI RADICAL TRIPOD
-2fce KANGXI RADICAL DRUM
-2fcf KANGXI RADICAL RAT
-2fd0 KANGXI RADICAL NOSE
-2fd1 KANGXI RADICAL EVEN
-2fd2 KANGXI RADICAL TOOTH
-2fd3 KANGXI RADICAL DRAGON
-2fd4 KANGXI RADICAL TURTLE
-2fd5 KANGXI RADICAL FLUTE
-2ff0 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
-2ff1 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
-2ff2 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
-2ff3 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
-2ff4 IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
-2ff5 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
-2ff6 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
-2ff7 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
-2ff8 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
-2ff9 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
-2ffa IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
-2ffb IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-3000 IDEOGRAPHIC SPACE
-3001 IDEOGRAPHIC COMMA
-3002 IDEOGRAPHIC FULL STOP
-3003 DITTO MARK
-3004 JAPANESE INDUSTRIAL STANDARD SYMBOL
-3005 IDEOGRAPHIC ITERATION MARK
-3006 IDEOGRAPHIC CLOSING MARK
-3007 IDEOGRAPHIC NUMBER ZERO
-3008 LEFT ANGLE BRACKET
-3009 RIGHT ANGLE BRACKET
-300a LEFT DOUBLE ANGLE BRACKET
-300b RIGHT DOUBLE ANGLE BRACKET
-300c LEFT CORNER BRACKET
-300d RIGHT CORNER BRACKET
-300e LEFT WHITE CORNER BRACKET
-300f RIGHT WHITE CORNER BRACKET
-3010 LEFT BLACK LENTICULAR BRACKET
-3011 RIGHT BLACK LENTICULAR BRACKET
-3012 POSTAL MARK
-3013 GETA MARK
-3014 LEFT TORTOISE SHELL BRACKET
-3015 RIGHT TORTOISE SHELL BRACKET
-3016 LEFT WHITE LENTICULAR BRACKET
-3017 RIGHT WHITE LENTICULAR BRACKET
-3018 LEFT WHITE TORTOISE SHELL BRACKET
-3019 RIGHT WHITE TORTOISE SHELL BRACKET
-301a LEFT WHITE SQUARE BRACKET
-301b RIGHT WHITE SQUARE BRACKET
-301c WAVE DASH
-301d REVERSED DOUBLE PRIME QUOTATION MARK
-301e DOUBLE PRIME QUOTATION MARK
-301f LOW DOUBLE PRIME QUOTATION MARK
-3020 POSTAL MARK FACE
-3021 HANGZHOU NUMERAL ONE
-3022 HANGZHOU NUMERAL TWO
-3023 HANGZHOU NUMERAL THREE
-3024 HANGZHOU NUMERAL FOUR
-3025 HANGZHOU NUMERAL FIVE
-3026 HANGZHOU NUMERAL SIX
-3027 HANGZHOU NUMERAL SEVEN
-3028 HANGZHOU NUMERAL EIGHT
-3029 HANGZHOU NUMERAL NINE
-302a IDEOGRAPHIC LEVEL TONE MARK
-302b IDEOGRAPHIC RISING TONE MARK
-302c IDEOGRAPHIC DEPARTING TONE MARK
-302d IDEOGRAPHIC ENTERING TONE MARK
-302e HANGUL SINGLE DOT TONE MARK
-302f HANGUL DOUBLE DOT TONE MARK
-3030 WAVY DASH
-3031 VERTICAL KANA REPEAT MARK
-3032 VERTICAL KANA REPEAT WITH VOICED SOUND MARK
-3033 VERTICAL KANA REPEAT MARK UPPER HALF
-3034 VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
-3035 VERTICAL KANA REPEAT MARK LOWER HALF
-3036 CIRCLED POSTAL MARK
-3037 IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
-3038 HANGZHOU NUMERAL TEN
-3039 HANGZHOU NUMERAL TWENTY
-303a HANGZHOU NUMERAL THIRTY
-303e IDEOGRAPHIC VARIATION INDICATOR
-303f IDEOGRAPHIC HALF FILL SPACE
-3041 HIRAGANA LETTER SMALL A
-3042 HIRAGANA LETTER A
-3043 HIRAGANA LETTER SMALL I
-3044 HIRAGANA LETTER I
-3045 HIRAGANA LETTER SMALL U
-3046 HIRAGANA LETTER U
-3047 HIRAGANA LETTER SMALL E
-3048 HIRAGANA LETTER E
-3049 HIRAGANA LETTER SMALL O
-304a HIRAGANA LETTER O
-304b HIRAGANA LETTER KA
-304c HIRAGANA LETTER GA
-304d HIRAGANA LETTER KI
-304e HIRAGANA LETTER GI
-304f HIRAGANA LETTER KU
-3050 HIRAGANA LETTER GU
-3051 HIRAGANA LETTER KE
-3052 HIRAGANA LETTER GE
-3053 HIRAGANA LETTER KO
-3054 HIRAGANA LETTER GO
-3055 HIRAGANA LETTER SA
-3056 HIRAGANA LETTER ZA
-3057 HIRAGANA LETTER SI
-3058 HIRAGANA LETTER ZI
-3059 HIRAGANA LETTER SU
-305a HIRAGANA LETTER ZU
-305b HIRAGANA LETTER SE
-305c HIRAGANA LETTER ZE
-305d HIRAGANA LETTER SO
-305e HIRAGANA LETTER ZO
-305f HIRAGANA LETTER TA
-3060 HIRAGANA LETTER DA
-3061 HIRAGANA LETTER TI
-3062 HIRAGANA LETTER DI
-3063 HIRAGANA LETTER SMALL TU
-3064 HIRAGANA LETTER TU
-3065 HIRAGANA LETTER DU
-3066 HIRAGANA LETTER TE
-3067 HIRAGANA LETTER DE
-3068 HIRAGANA LETTER TO
-3069 HIRAGANA LETTER DO
-306a HIRAGANA LETTER NA
-306b HIRAGANA LETTER NI
-306c HIRAGANA LETTER NU
-306d HIRAGANA LETTER NE
-306e HIRAGANA LETTER NO
-306f HIRAGANA LETTER HA
-3070 HIRAGANA LETTER BA
-3071 HIRAGANA LETTER PA
-3072 HIRAGANA LETTER HI
-3073 HIRAGANA LETTER BI
-3074 HIRAGANA LETTER PI
-3075 HIRAGANA LETTER HU
-3076 HIRAGANA LETTER BU
-3077 HIRAGANA LETTER PU
-3078 HIRAGANA LETTER HE
-3079 HIRAGANA LETTER BE
-307a HIRAGANA LETTER PE
-307b HIRAGANA LETTER HO
-307c HIRAGANA LETTER BO
-307d HIRAGANA LETTER PO
-307e HIRAGANA LETTER MA
-307f HIRAGANA LETTER MI
-3080 HIRAGANA LETTER MU
-3081 HIRAGANA LETTER ME
-3082 HIRAGANA LETTER MO
-3083 HIRAGANA LETTER SMALL YA
-3084 HIRAGANA LETTER YA
-3085 HIRAGANA LETTER SMALL YU
-3086 HIRAGANA LETTER YU
-3087 HIRAGANA LETTER SMALL YO
-3088 HIRAGANA LETTER YO
-3089 HIRAGANA LETTER RA
-308a HIRAGANA LETTER RI
-308b HIRAGANA LETTER RU
-308c HIRAGANA LETTER RE
-308d HIRAGANA LETTER RO
-308e HIRAGANA LETTER SMALL WA
-308f HIRAGANA LETTER WA
-3090 HIRAGANA LETTER WI
-3091 HIRAGANA LETTER WE
-3092 HIRAGANA LETTER WO
-3093 HIRAGANA LETTER N
-3094 HIRAGANA LETTER VU
-3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
-309a COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309b KATAKANA-HIRAGANA VOICED SOUND MARK
-309c KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309d HIRAGANA ITERATION MARK
-309e HIRAGANA VOICED ITERATION MARK
-30a1 KATAKANA LETTER SMALL A
-30a2 KATAKANA LETTER A
-30a3 KATAKANA LETTER SMALL I
-30a4 KATAKANA LETTER I
-30a5 KATAKANA LETTER SMALL U
-30a6 KATAKANA LETTER U
-30a7 KATAKANA LETTER SMALL E
-30a8 KATAKANA LETTER E
-30a9 KATAKANA LETTER SMALL O
-30aa KATAKANA LETTER O
-30ab KATAKANA LETTER KA
-30ac KATAKANA LETTER GA
-30ad KATAKANA LETTER KI
-30ae KATAKANA LETTER GI
-30af KATAKANA LETTER KU
-30b0 KATAKANA LETTER GU
-30b1 KATAKANA LETTER KE
-30b2 KATAKANA LETTER GE
-30b3 KATAKANA LETTER KO
-30b4 KATAKANA LETTER GO
-30b5 KATAKANA LETTER SA
-30b6 KATAKANA LETTER ZA
-30b7 KATAKANA LETTER SI
-30b8 KATAKANA LETTER ZI
-30b9 KATAKANA LETTER SU
-30ba KATAKANA LETTER ZU
-30bb KATAKANA LETTER SE
-30bc KATAKANA LETTER ZE
-30bd KATAKANA LETTER SO
-30be KATAKANA LETTER ZO
-30bf KATAKANA LETTER TA
-30c0 KATAKANA LETTER DA
-30c1 KATAKANA LETTER TI
-30c2 KATAKANA LETTER DI
-30c3 KATAKANA LETTER SMALL TU
-30c4 KATAKANA LETTER TU
-30c5 KATAKANA LETTER DU
-30c6 KATAKANA LETTER TE
-30c7 KATAKANA LETTER DE
-30c8 KATAKANA LETTER TO
-30c9 KATAKANA LETTER DO
-30ca KATAKANA LETTER NA
-30cb KATAKANA LETTER NI
-30cc KATAKANA LETTER NU
-30cd KATAKANA LETTER NE
-30ce KATAKANA LETTER NO
-30cf KATAKANA LETTER HA
-30d0 KATAKANA LETTER BA
-30d1 KATAKANA LETTER PA
-30d2 KATAKANA LETTER HI
-30d3 KATAKANA LETTER BI
-30d4 KATAKANA LETTER PI
-30d5 KATAKANA LETTER HU
-30d6 KATAKANA LETTER BU
-30d7 KATAKANA LETTER PU
-30d8 KATAKANA LETTER HE
-30d9 KATAKANA LETTER BE
-30da KATAKANA LETTER PE
-30db KATAKANA LETTER HO
-30dc KATAKANA LETTER BO
-30dd KATAKANA LETTER PO
-30de KATAKANA LETTER MA
-30df KATAKANA LETTER MI
-30e0 KATAKANA LETTER MU
-30e1 KATAKANA LETTER ME
-30e2 KATAKANA LETTER MO
-30e3 KATAKANA LETTER SMALL YA
-30e4 KATAKANA LETTER YA
-30e5 KATAKANA LETTER SMALL YU
-30e6 KATAKANA LETTER YU
-30e7 KATAKANA LETTER SMALL YO
-30e8 KATAKANA LETTER YO
-30e9 KATAKANA LETTER RA
-30ea KATAKANA LETTER RI
-30eb KATAKANA LETTER RU
-30ec KATAKANA LETTER RE
-30ed KATAKANA LETTER RO
-30ee KATAKANA LETTER SMALL WA
-30ef KATAKANA LETTER WA
-30f0 KATAKANA LETTER WI
-30f1 KATAKANA LETTER WE
-30f2 KATAKANA LETTER WO
-30f3 KATAKANA LETTER N
-30f4 KATAKANA LETTER VU
-30f5 KATAKANA LETTER SMALL KA
-30f6 KATAKANA LETTER SMALL KE
-30f7 KATAKANA LETTER VA
-30f8 KATAKANA LETTER VI
-30f9 KATAKANA LETTER VE
-30fa KATAKANA LETTER VO
-30fb KATAKANA MIDDLE DOT
-30fc KATAKANA-HIRAGANA PROLONGED SOUND MARK
-30fd KATAKANA ITERATION MARK
-30fe KATAKANA VOICED ITERATION MARK
-3105 BOPOMOFO LETTER B
-3106 BOPOMOFO LETTER P
-3107 BOPOMOFO LETTER M
-3108 BOPOMOFO LETTER F
-3109 BOPOMOFO LETTER D
-310a BOPOMOFO LETTER T
-310b BOPOMOFO LETTER N
-310c BOPOMOFO LETTER L
-310d BOPOMOFO LETTER G
-310e BOPOMOFO LETTER K
-310f BOPOMOFO LETTER H
-3110 BOPOMOFO LETTER J
-3111 BOPOMOFO LETTER Q
-3112 BOPOMOFO LETTER X
-3113 BOPOMOFO LETTER ZH
-3114 BOPOMOFO LETTER CH
-3115 BOPOMOFO LETTER SH
-3116 BOPOMOFO LETTER R
-3117 BOPOMOFO LETTER Z
-3118 BOPOMOFO LETTER C
-3119 BOPOMOFO LETTER S
-311a BOPOMOFO LETTER A
-311b BOPOMOFO LETTER O
-311c BOPOMOFO LETTER E
-311d BOPOMOFO LETTER EH
-311e BOPOMOFO LETTER AI
-311f BOPOMOFO LETTER EI
-3120 BOPOMOFO LETTER AU
-3121 BOPOMOFO LETTER OU
-3122 BOPOMOFO LETTER AN
-3123 BOPOMOFO LETTER EN
-3124 BOPOMOFO LETTER ANG
-3125 BOPOMOFO LETTER ENG
-3126 BOPOMOFO LETTER ER
-3127 BOPOMOFO LETTER I
-3128 BOPOMOFO LETTER U
-3129 BOPOMOFO LETTER IU
-312a BOPOMOFO LETTER V
-312b BOPOMOFO LETTER NG
-312c BOPOMOFO LETTER GN
-3131 HANGUL LETTER KIYEOK
-3132 HANGUL LETTER SSANGKIYEOK
-3133 HANGUL LETTER KIYEOK-SIOS
-3134 HANGUL LETTER NIEUN
-3135 HANGUL LETTER NIEUN-CIEUC
-3136 HANGUL LETTER NIEUN-HIEUH
-3137 HANGUL LETTER TIKEUT
-3138 HANGUL LETTER SSANGTIKEUT
-3139 HANGUL LETTER RIEUL
-313a HANGUL LETTER RIEUL-KIYEOK
-313b HANGUL LETTER RIEUL-MIEUM
-313c HANGUL LETTER RIEUL-PIEUP
-313d HANGUL LETTER RIEUL-SIOS
-313e HANGUL LETTER RIEUL-THIEUTH
-313f HANGUL LETTER RIEUL-PHIEUPH
-3140 HANGUL LETTER RIEUL-HIEUH
-3141 HANGUL LETTER MIEUM
-3142 HANGUL LETTER PIEUP
-3143 HANGUL LETTER SSANGPIEUP
-3144 HANGUL LETTER PIEUP-SIOS
-3145 HANGUL LETTER SIOS
-3146 HANGUL LETTER SSANGSIOS
-3147 HANGUL LETTER IEUNG
-3148 HANGUL LETTER CIEUC
-3149 HANGUL LETTER SSANGCIEUC
-314a HANGUL LETTER CHIEUCH
-314b HANGUL LETTER KHIEUKH
-314c HANGUL LETTER THIEUTH
-314d HANGUL LETTER PHIEUPH
-314e HANGUL LETTER HIEUH
-314f HANGUL LETTER A
-3150 HANGUL LETTER AE
-3151 HANGUL LETTER YA
-3152 HANGUL LETTER YAE
-3153 HANGUL LETTER EO
-3154 HANGUL LETTER E
-3155 HANGUL LETTER YEO
-3156 HANGUL LETTER YE
-3157 HANGUL LETTER O
-3158 HANGUL LETTER WA
-3159 HANGUL LETTER WAE
-315a HANGUL LETTER OE
-315b HANGUL LETTER YO
-315c HANGUL LETTER U
-315d HANGUL LETTER WEO
-315e HANGUL LETTER WE
-315f HANGUL LETTER WI
-3160 HANGUL LETTER YU
-3161 HANGUL LETTER EU
-3162 HANGUL LETTER YI
-3163 HANGUL LETTER I
-3164 HANGUL FILLER
-3165 HANGUL LETTER SSANGNIEUN
-3166 HANGUL LETTER NIEUN-TIKEUT
-3167 HANGUL LETTER NIEUN-SIOS
-3168 HANGUL LETTER NIEUN-PANSIOS
-3169 HANGUL LETTER RIEUL-KIYEOK-SIOS
-316a HANGUL LETTER RIEUL-TIKEUT
-316b HANGUL LETTER RIEUL-PIEUP-SIOS
-316c HANGUL LETTER RIEUL-PANSIOS
-316d HANGUL LETTER RIEUL-YEORINHIEUH
-316e HANGUL LETTER MIEUM-PIEUP
-316f HANGUL LETTER MIEUM-SIOS
-3170 HANGUL LETTER MIEUM-PANSIOS
-3171 HANGUL LETTER KAPYEOUNMIEUM
-3172 HANGUL LETTER PIEUP-KIYEOK
-3173 HANGUL LETTER PIEUP-TIKEUT
-3174 HANGUL LETTER PIEUP-SIOS-KIYEOK
-3175 HANGUL LETTER PIEUP-SIOS-TIKEUT
-3176 HANGUL LETTER PIEUP-CIEUC
-3177 HANGUL LETTER PIEUP-THIEUTH
-3178 HANGUL LETTER KAPYEOUNPIEUP
-3179 HANGUL LETTER KAPYEOUNSSANGPIEUP
-317a HANGUL LETTER SIOS-KIYEOK
-317b HANGUL LETTER SIOS-NIEUN
-317c HANGUL LETTER SIOS-TIKEUT
-317d HANGUL LETTER SIOS-PIEUP
-317e HANGUL LETTER SIOS-CIEUC
-317f HANGUL LETTER PANSIOS
-3180 HANGUL LETTER SSANGIEUNG
-3181 HANGUL LETTER YESIEUNG
-3182 HANGUL LETTER YESIEUNG-SIOS
-3183 HANGUL LETTER YESIEUNG-PANSIOS
-3184 HANGUL LETTER KAPYEOUNPHIEUPH
-3185 HANGUL LETTER SSANGHIEUH
-3186 HANGUL LETTER YEORINHIEUH
-3187 HANGUL LETTER YO-YA
-3188 HANGUL LETTER YO-YAE
-3189 HANGUL LETTER YO-I
-318a HANGUL LETTER YU-YEO
-318b HANGUL LETTER YU-YE
-318c HANGUL LETTER YU-I
-318d HANGUL LETTER ARAEA
-318e HANGUL LETTER ARAEAE
-3190 IDEOGRAPHIC ANNOTATION LINKING MARK
-3191 IDEOGRAPHIC ANNOTATION REVERSE MARK
-3192 IDEOGRAPHIC ANNOTATION ONE MARK
-3193 IDEOGRAPHIC ANNOTATION TWO MARK
-3194 IDEOGRAPHIC ANNOTATION THREE MARK
-3195 IDEOGRAPHIC ANNOTATION FOUR MARK
-3196 IDEOGRAPHIC ANNOTATION TOP MARK
-3197 IDEOGRAPHIC ANNOTATION MIDDLE MARK
-3198 IDEOGRAPHIC ANNOTATION BOTTOM MARK
-3199 IDEOGRAPHIC ANNOTATION FIRST MARK
-319a IDEOGRAPHIC ANNOTATION SECOND MARK
-319b IDEOGRAPHIC ANNOTATION THIRD MARK
-319c IDEOGRAPHIC ANNOTATION FOURTH MARK
-319d IDEOGRAPHIC ANNOTATION HEAVEN MARK
-319e IDEOGRAPHIC ANNOTATION EARTH MARK
-319f IDEOGRAPHIC ANNOTATION MAN MARK
-31a0 BOPOMOFO LETTER BU
-31a1 BOPOMOFO LETTER ZI
-31a2 BOPOMOFO LETTER JI
-31a3 BOPOMOFO LETTER GU
-31a4 BOPOMOFO LETTER EE
-31a5 BOPOMOFO LETTER ENN
-31a6 BOPOMOFO LETTER OO
-31a7 BOPOMOFO LETTER ONN
-31a8 BOPOMOFO LETTER IR
-31a9 BOPOMOFO LETTER ANN
-31aa BOPOMOFO LETTER INN
-31ab BOPOMOFO LETTER UNN
-31ac BOPOMOFO LETTER IM
-31ad BOPOMOFO LETTER NGG
-31ae BOPOMOFO LETTER AINN
-31af BOPOMOFO LETTER AUNN
-31b0 BOPOMOFO LETTER AM
-31b1 BOPOMOFO LETTER OM
-31b2 BOPOMOFO LETTER ONG
-31b3 BOPOMOFO LETTER INNN
-31b4 BOPOMOFO FINAL LETTER P
-31b5 BOPOMOFO FINAL LETTER T
-31b6 BOPOMOFO FINAL LETTER K
-31b7 BOPOMOFO FINAL LETTER H
-3200 PARENTHESIZED HANGUL KIYEOK
-3201 PARENTHESIZED HANGUL NIEUN
-3202 PARENTHESIZED HANGUL TIKEUT
-3203 PARENTHESIZED HANGUL RIEUL
-3204 PARENTHESIZED HANGUL MIEUM
-3205 PARENTHESIZED HANGUL PIEUP
-3206 PARENTHESIZED HANGUL SIOS
-3207 PARENTHESIZED HANGUL IEUNG
-3208 PARENTHESIZED HANGUL CIEUC
-3209 PARENTHESIZED HANGUL CHIEUCH
-320a PARENTHESIZED HANGUL KHIEUKH
-320b PARENTHESIZED HANGUL THIEUTH
-320c PARENTHESIZED HANGUL PHIEUPH
-320d PARENTHESIZED HANGUL HIEUH
-320e PARENTHESIZED HANGUL KIYEOK A
-320f PARENTHESIZED HANGUL NIEUN A
-3210 PARENTHESIZED HANGUL TIKEUT A
-3211 PARENTHESIZED HANGUL RIEUL A
-3212 PARENTHESIZED HANGUL MIEUM A
-3213 PARENTHESIZED HANGUL PIEUP A
-3214 PARENTHESIZED HANGUL SIOS A
-3215 PARENTHESIZED HANGUL IEUNG A
-3216 PARENTHESIZED HANGUL CIEUC A
-3217 PARENTHESIZED HANGUL CHIEUCH A
-3218 PARENTHESIZED HANGUL KHIEUKH A
-3219 PARENTHESIZED HANGUL THIEUTH A
-321a PARENTHESIZED HANGUL PHIEUPH A
-321b PARENTHESIZED HANGUL HIEUH A
-321c PARENTHESIZED HANGUL CIEUC U
-3220 PARENTHESIZED IDEOGRAPH ONE
-3221 PARENTHESIZED IDEOGRAPH TWO
-3222 PARENTHESIZED IDEOGRAPH THREE
-3223 PARENTHESIZED IDEOGRAPH FOUR
-3224 PARENTHESIZED IDEOGRAPH FIVE
-3225 PARENTHESIZED IDEOGRAPH SIX
-3226 PARENTHESIZED IDEOGRAPH SEVEN
-3227 PARENTHESIZED IDEOGRAPH EIGHT
-3228 PARENTHESIZED IDEOGRAPH NINE
-3229 PARENTHESIZED IDEOGRAPH TEN
-322a PARENTHESIZED IDEOGRAPH MOON
-322b PARENTHESIZED IDEOGRAPH FIRE
-322c PARENTHESIZED IDEOGRAPH WATER
-322d PARENTHESIZED IDEOGRAPH WOOD
-322e PARENTHESIZED IDEOGRAPH METAL
-322f PARENTHESIZED IDEOGRAPH EARTH
-3230 PARENTHESIZED IDEOGRAPH SUN
-3231 PARENTHESIZED IDEOGRAPH STOCK
-3232 PARENTHESIZED IDEOGRAPH HAVE
-3233 PARENTHESIZED IDEOGRAPH SOCIETY
-3234 PARENTHESIZED IDEOGRAPH NAME
-3235 PARENTHESIZED IDEOGRAPH SPECIAL
-3236 PARENTHESIZED IDEOGRAPH FINANCIAL
-3237 PARENTHESIZED IDEOGRAPH CONGRATULATION
-3238 PARENTHESIZED IDEOGRAPH LABOR
-3239 PARENTHESIZED IDEOGRAPH REPRESENT
-323a PARENTHESIZED IDEOGRAPH CALL
-323b PARENTHESIZED IDEOGRAPH STUDY
-323c PARENTHESIZED IDEOGRAPH SUPERVISE
-323d PARENTHESIZED IDEOGRAPH ENTERPRISE
-323e PARENTHESIZED IDEOGRAPH RESOURCE
-323f PARENTHESIZED IDEOGRAPH ALLIANCE
-3240 PARENTHESIZED IDEOGRAPH FESTIVAL
-3241 PARENTHESIZED IDEOGRAPH REST
-3242 PARENTHESIZED IDEOGRAPH SELF
-3243 PARENTHESIZED IDEOGRAPH REACH
-3260 CIRCLED HANGUL KIYEOK
-3261 CIRCLED HANGUL NIEUN
-3262 CIRCLED HANGUL TIKEUT
-3263 CIRCLED HANGUL RIEUL
-3264 CIRCLED HANGUL MIEUM
-3265 CIRCLED HANGUL PIEUP
-3266 CIRCLED HANGUL SIOS
-3267 CIRCLED HANGUL IEUNG
-3268 CIRCLED HANGUL CIEUC
-3269 CIRCLED HANGUL CHIEUCH
-326a CIRCLED HANGUL KHIEUKH
-326b CIRCLED HANGUL THIEUTH
-326c CIRCLED HANGUL PHIEUPH
-326d CIRCLED HANGUL HIEUH
-326e CIRCLED HANGUL KIYEOK A
-326f CIRCLED HANGUL NIEUN A
-3270 CIRCLED HANGUL TIKEUT A
-3271 CIRCLED HANGUL RIEUL A
-3272 CIRCLED HANGUL MIEUM A
-3273 CIRCLED HANGUL PIEUP A
-3274 CIRCLED HANGUL SIOS A
-3275 CIRCLED HANGUL IEUNG A
-3276 CIRCLED HANGUL CIEUC A
-3277 CIRCLED HANGUL CHIEUCH A
-3278 CIRCLED HANGUL KHIEUKH A
-3279 CIRCLED HANGUL THIEUTH A
-327a CIRCLED HANGUL PHIEUPH A
-327b CIRCLED HANGUL HIEUH A
-327f KOREAN STANDARD SYMBOL
-3280 CIRCLED IDEOGRAPH ONE
-3281 CIRCLED IDEOGRAPH TWO
-3282 CIRCLED IDEOGRAPH THREE
-3283 CIRCLED IDEOGRAPH FOUR
-3284 CIRCLED IDEOGRAPH FIVE
-3285 CIRCLED IDEOGRAPH SIX
-3286 CIRCLED IDEOGRAPH SEVEN
-3287 CIRCLED IDEOGRAPH EIGHT
-3288 CIRCLED IDEOGRAPH NINE
-3289 CIRCLED IDEOGRAPH TEN
-328a CIRCLED IDEOGRAPH MOON
-328b CIRCLED IDEOGRAPH FIRE
-328c CIRCLED IDEOGRAPH WATER
-328d CIRCLED IDEOGRAPH WOOD
-328e CIRCLED IDEOGRAPH METAL
-328f CIRCLED IDEOGRAPH EARTH
-3290 CIRCLED IDEOGRAPH SUN
-3291 CIRCLED IDEOGRAPH STOCK
-3292 CIRCLED IDEOGRAPH HAVE
-3293 CIRCLED IDEOGRAPH SOCIETY
-3294 CIRCLED IDEOGRAPH NAME
-3295 CIRCLED IDEOGRAPH SPECIAL
-3296 CIRCLED IDEOGRAPH FINANCIAL
-3297 CIRCLED IDEOGRAPH CONGRATULATION
-3298 CIRCLED IDEOGRAPH LABOR
-3299 CIRCLED IDEOGRAPH SECRET
-329a CIRCLED IDEOGRAPH MALE
-329b CIRCLED IDEOGRAPH FEMALE
-329c CIRCLED IDEOGRAPH SUITABLE
-329d CIRCLED IDEOGRAPH EXCELLENT
-329e CIRCLED IDEOGRAPH PRINT
-329f CIRCLED IDEOGRAPH ATTENTION
-32a0 CIRCLED IDEOGRAPH ITEM
-32a1 CIRCLED IDEOGRAPH REST
-32a2 CIRCLED IDEOGRAPH COPY
-32a3 CIRCLED IDEOGRAPH CORRECT
-32a4 CIRCLED IDEOGRAPH HIGH
-32a5 CIRCLED IDEOGRAPH CENTRE
-32a6 CIRCLED IDEOGRAPH LOW
-32a7 CIRCLED IDEOGRAPH LEFT
-32a8 CIRCLED IDEOGRAPH RIGHT
-32a9 CIRCLED IDEOGRAPH MEDICINE
-32aa CIRCLED IDEOGRAPH RELIGION
-32ab CIRCLED IDEOGRAPH STUDY
-32ac CIRCLED IDEOGRAPH SUPERVISE
-32ad CIRCLED IDEOGRAPH ENTERPRISE
-32ae CIRCLED IDEOGRAPH RESOURCE
-32af CIRCLED IDEOGRAPH ALLIANCE
-32b0 CIRCLED IDEOGRAPH NIGHT
-32c0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
-32c1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
-32c2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
-32c3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
-32c4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
-32c5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
-32c6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
-32c7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
-32c8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
-32c9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
-32ca IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
-32cb IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
-32d0 CIRCLED KATAKANA A
-32d1 CIRCLED KATAKANA I
-32d2 CIRCLED KATAKANA U
-32d3 CIRCLED KATAKANA E
-32d4 CIRCLED KATAKANA O
-32d5 CIRCLED KATAKANA KA
-32d6 CIRCLED KATAKANA KI
-32d7 CIRCLED KATAKANA KU
-32d8 CIRCLED KATAKANA KE
-32d9 CIRCLED KATAKANA KO
-32da CIRCLED KATAKANA SA
-32db CIRCLED KATAKANA SI
-32dc CIRCLED KATAKANA SU
-32dd CIRCLED KATAKANA SE
-32de CIRCLED KATAKANA SO
-32df CIRCLED KATAKANA TA
-32e0 CIRCLED KATAKANA TI
-32e1 CIRCLED KATAKANA TU
-32e2 CIRCLED KATAKANA TE
-32e3 CIRCLED KATAKANA TO
-32e4 CIRCLED KATAKANA NA
-32e5 CIRCLED KATAKANA NI
-32e6 CIRCLED KATAKANA NU
-32e7 CIRCLED KATAKANA NE
-32e8 CIRCLED KATAKANA NO
-32e9 CIRCLED KATAKANA HA
-32ea CIRCLED KATAKANA HI
-32eb CIRCLED KATAKANA HU
-32ec CIRCLED KATAKANA HE
-32ed CIRCLED KATAKANA HO
-32ee CIRCLED KATAKANA MA
-32ef CIRCLED KATAKANA MI
-32f0 CIRCLED KATAKANA MU
-32f1 CIRCLED KATAKANA ME
-32f2 CIRCLED KATAKANA MO
-32f3 CIRCLED KATAKANA YA
-32f4 CIRCLED KATAKANA YU
-32f5 CIRCLED KATAKANA YO
-32f6 CIRCLED KATAKANA RA
-32f7 CIRCLED KATAKANA RI
-32f8 CIRCLED KATAKANA RU
-32f9 CIRCLED KATAKANA RE
-32fa CIRCLED KATAKANA RO
-32fb CIRCLED KATAKANA WA
-32fc CIRCLED KATAKANA WI
-32fd CIRCLED KATAKANA WE
-32fe CIRCLED KATAKANA WO
-3300 SQUARE APAATO
-3301 SQUARE ARUHUA
-3302 SQUARE ANPEA
-3303 SQUARE AARU
-3304 SQUARE ININGU
-3305 SQUARE INTI
-3306 SQUARE UON
-3307 SQUARE ESUKUUDO
-3308 SQUARE EEKAA
-3309 SQUARE ONSU
-330a SQUARE OOMU
-330b SQUARE KAIRI
-330c SQUARE KARATTO
-330d SQUARE KARORII
-330e SQUARE GARON
-330f SQUARE GANMA
-3310 SQUARE GIGA
-3311 SQUARE GINII
-3312 SQUARE KYURII
-3313 SQUARE GIRUDAA
-3314 SQUARE KIRO
-3315 SQUARE KIROGURAMU
-3316 SQUARE KIROMEETORU
-3317 SQUARE KIROWATTO
-3318 SQUARE GURAMU
-3319 SQUARE GURAMUTON
-331a SQUARE KURUZEIRO
-331b SQUARE KUROONE
-331c SQUARE KEESU
-331d SQUARE KORUNA
-331e SQUARE KOOPO
-331f SQUARE SAIKURU
-3320 SQUARE SANTIIMU
-3321 SQUARE SIRINGU
-3322 SQUARE SENTI
-3323 SQUARE SENTO
-3324 SQUARE DAASU
-3325 SQUARE DESI
-3326 SQUARE DORU
-3327 SQUARE TON
-3328 SQUARE NANO
-3329 SQUARE NOTTO
-332a SQUARE HAITU
-332b SQUARE PAASENTO
-332c SQUARE PAATU
-332d SQUARE BAARERU
-332e SQUARE PIASUTORU
-332f SQUARE PIKURU
-3330 SQUARE PIKO
-3331 SQUARE BIRU
-3332 SQUARE HUARADDO
-3333 SQUARE HUIITO
-3334 SQUARE BUSSYERU
-3335 SQUARE HURAN
-3336 SQUARE HEKUTAARU
-3337 SQUARE PESO
-3338 SQUARE PENIHI
-3339 SQUARE HERUTU
-333a SQUARE PENSU
-333b SQUARE PEEZI
-333c SQUARE BEETA
-333d SQUARE POINTO
-333e SQUARE BORUTO
-333f SQUARE HON
-3340 SQUARE PONDO
-3341 SQUARE HOORU
-3342 SQUARE HOON
-3343 SQUARE MAIKURO
-3344 SQUARE MAIRU
-3345 SQUARE MAHHA
-3346 SQUARE MARUKU
-3347 SQUARE MANSYON
-3348 SQUARE MIKURON
-3349 SQUARE MIRI
-334a SQUARE MIRIBAARU
-334b SQUARE MEGA
-334c SQUARE MEGATON
-334d SQUARE MEETORU
-334e SQUARE YAADO
-334f SQUARE YAARU
-3350 SQUARE YUAN
-3351 SQUARE RITTORU
-3352 SQUARE RIRA
-3353 SQUARE RUPII
-3354 SQUARE RUUBURU
-3355 SQUARE REMU
-3356 SQUARE RENTOGEN
-3357 SQUARE WATTO
-3358 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
-3359 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
-335a IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
-335b IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
-335c IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
-335d IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
-335e IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
-335f IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
-3360 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
-3361 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
-3362 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
-3363 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
-3364 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
-3365 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
-3366 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
-3367 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
-3368 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
-3369 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
-336a IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
-336b IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
-336c IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
-336d IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
-336e IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
-336f IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
-3370 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
-3371 SQUARE HPA
-3372 SQUARE DA
-3373 SQUARE AU
-3374 SQUARE BAR
-3375 SQUARE OV
-3376 SQUARE PC
-337b SQUARE ERA NAME HEISEI
-337c SQUARE ERA NAME SYOUWA
-337d SQUARE ERA NAME TAISYOU
-337e SQUARE ERA NAME MEIZI
-337f SQUARE CORPORATION
-3380 SQUARE PA AMPS
-3381 SQUARE NA
-3382 SQUARE MU A
-3383 SQUARE MA
-3384 SQUARE KA
-3385 SQUARE KB
-3386 SQUARE MB
-3387 SQUARE GB
-3388 SQUARE CAL
-3389 SQUARE KCAL
-338a SQUARE PF
-338b SQUARE NF
-338c SQUARE MU F
-338d SQUARE MU G
-338e SQUARE MG
-338f SQUARE KG
-3390 SQUARE HZ
-3391 SQUARE KHZ
-3392 SQUARE MHZ
-3393 SQUARE GHZ
-3394 SQUARE THZ
-3395 SQUARE MU L
-3396 SQUARE ML
-3397 SQUARE DL
-3398 SQUARE KL
-3399 SQUARE FM
-339a SQUARE NM
-339b SQUARE MU M
-339c SQUARE MM
-339d SQUARE CM
-339e SQUARE KM
-339f SQUARE MM SQUARED
-33a0 SQUARE CM SQUARED
-33a1 SQUARE M SQUARED
-33a2 SQUARE KM SQUARED
-33a3 SQUARE MM CUBED
-33a4 SQUARE CM CUBED
-33a5 SQUARE M CUBED
-33a6 SQUARE KM CUBED
-33a7 SQUARE M OVER S
-33a8 SQUARE M OVER S SQUARED
-33a9 SQUARE PA
-33aa SQUARE KPA
-33ab SQUARE MPA
-33ac SQUARE GPA
-33ad SQUARE RAD
-33ae SQUARE RAD OVER S
-33af SQUARE RAD OVER S SQUARED
-33b0 SQUARE PS
-33b1 SQUARE NS
-33b2 SQUARE MU S
-33b3 SQUARE MS
-33b4 SQUARE PV
-33b5 SQUARE NV
-33b6 SQUARE MU V
-33b7 SQUARE MV
-33b8 SQUARE KV
-33b9 SQUARE MV MEGA
-33ba SQUARE PW
-33bb SQUARE NW
-33bc SQUARE MU W
-33bd SQUARE MW
-33be SQUARE KW
-33bf SQUARE MW MEGA
-33c0 SQUARE K OHM
-33c1 SQUARE M OHM
-33c2 SQUARE AM
-33c3 SQUARE BQ
-33c4 SQUARE CC
-33c5 SQUARE CD
-33c6 SQUARE C OVER KG
-33c7 SQUARE CO
-33c8 SQUARE DB
-33c9 SQUARE GY
-33ca SQUARE HA
-33cb SQUARE HP
-33cc SQUARE IN
-33cd SQUARE KK
-33ce SQUARE KM CAPITAL
-33cf SQUARE KT
-33d0 SQUARE LM
-33d1 SQUARE LN
-33d2 SQUARE LOG
-33d3 SQUARE LX
-33d4 SQUARE MB SMALL
-33d5 SQUARE MIL
-33d6 SQUARE MOL
-33d7 SQUARE PH
-33d8 SQUARE PM
-33d9 SQUARE PPM
-33da SQUARE PR
-33db SQUARE SR
-33dc SQUARE SV
-33dd SQUARE WB
-33e0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
-33e1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
-33e2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
-33e3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
-33e4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
-33e5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
-33e6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
-33e7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
-33e8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
-33e9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
-33ea IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
-33eb IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
-33ec IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
-33ed IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
-33ee IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
-33ef IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
-33f0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
-33f1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
-33f2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
-33f3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
-33f4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
-33f5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
-33f6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
-33f7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
-33f8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
-33f9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
-33fa IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
-33fb IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
-33fc IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
-33fd IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
-33fe IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
-3400 4db5 <CJK Ideograph Extension A, First>
-4e00 9fa5 <CJK Ideograph, First>
-a000 YI SYLLABLE IT
-a001 YI SYLLABLE IX
-a002 YI SYLLABLE I
-a003 YI SYLLABLE IP
-a004 YI SYLLABLE IET
-a005 YI SYLLABLE IEX
-a006 YI SYLLABLE IE
-a007 YI SYLLABLE IEP
-a008 YI SYLLABLE AT
-a009 YI SYLLABLE AX
-a00a YI SYLLABLE A
-a00b YI SYLLABLE AP
-a00c YI SYLLABLE UOX
-a00d YI SYLLABLE UO
-a00e YI SYLLABLE UOP
-a00f YI SYLLABLE OT
-a010 YI SYLLABLE OX
-a011 YI SYLLABLE O
-a012 YI SYLLABLE OP
-a013 YI SYLLABLE EX
-a014 YI SYLLABLE E
-a015 YI SYLLABLE WU
-a016 YI SYLLABLE BIT
-a017 YI SYLLABLE BIX
-a018 YI SYLLABLE BI
-a019 YI SYLLABLE BIP
-a01a YI SYLLABLE BIET
-a01b YI SYLLABLE BIEX
-a01c YI SYLLABLE BIE
-a01d YI SYLLABLE BIEP
-a01e YI SYLLABLE BAT
-a01f YI SYLLABLE BAX
-a020 YI SYLLABLE BA
-a021 YI SYLLABLE BAP
-a022 YI SYLLABLE BUOX
-a023 YI SYLLABLE BUO
-a024 YI SYLLABLE BUOP
-a025 YI SYLLABLE BOT
-a026 YI SYLLABLE BOX
-a027 YI SYLLABLE BO
-a028 YI SYLLABLE BOP
-a029 YI SYLLABLE BEX
-a02a YI SYLLABLE BE
-a02b YI SYLLABLE BEP
-a02c YI SYLLABLE BUT
-a02d YI SYLLABLE BUX
-a02e YI SYLLABLE BU
-a02f YI SYLLABLE BUP
-a030 YI SYLLABLE BURX
-a031 YI SYLLABLE BUR
-a032 YI SYLLABLE BYT
-a033 YI SYLLABLE BYX
-a034 YI SYLLABLE BY
-a035 YI SYLLABLE BYP
-a036 YI SYLLABLE BYRX
-a037 YI SYLLABLE BYR
-a038 YI SYLLABLE PIT
-a039 YI SYLLABLE PIX
-a03a YI SYLLABLE PI
-a03b YI SYLLABLE PIP
-a03c YI SYLLABLE PIEX
-a03d YI SYLLABLE PIE
-a03e YI SYLLABLE PIEP
-a03f YI SYLLABLE PAT
-a040 YI SYLLABLE PAX
-a041 YI SYLLABLE PA
-a042 YI SYLLABLE PAP
-a043 YI SYLLABLE PUOX
-a044 YI SYLLABLE PUO
-a045 YI SYLLABLE PUOP
-a046 YI SYLLABLE POT
-a047 YI SYLLABLE POX
-a048 YI SYLLABLE PO
-a049 YI SYLLABLE POP
-a04a YI SYLLABLE PUT
-a04b YI SYLLABLE PUX
-a04c YI SYLLABLE PU
-a04d YI SYLLABLE PUP
-a04e YI SYLLABLE PURX
-a04f YI SYLLABLE PUR
-a050 YI SYLLABLE PYT
-a051 YI SYLLABLE PYX
-a052 YI SYLLABLE PY
-a053 YI SYLLABLE PYP
-a054 YI SYLLABLE PYRX
-a055 YI SYLLABLE PYR
-a056 YI SYLLABLE BBIT
-a057 YI SYLLABLE BBIX
-a058 YI SYLLABLE BBI
-a059 YI SYLLABLE BBIP
-a05a YI SYLLABLE BBIET
-a05b YI SYLLABLE BBIEX
-a05c YI SYLLABLE BBIE
-a05d YI SYLLABLE BBIEP
-a05e YI SYLLABLE BBAT
-a05f YI SYLLABLE BBAX
-a060 YI SYLLABLE BBA
-a061 YI SYLLABLE BBAP
-a062 YI SYLLABLE BBUOX
-a063 YI SYLLABLE BBUO
-a064 YI SYLLABLE BBUOP
-a065 YI SYLLABLE BBOT
-a066 YI SYLLABLE BBOX
-a067 YI SYLLABLE BBO
-a068 YI SYLLABLE BBOP
-a069 YI SYLLABLE BBEX
-a06a YI SYLLABLE BBE
-a06b YI SYLLABLE BBEP
-a06c YI SYLLABLE BBUT
-a06d YI SYLLABLE BBUX
-a06e YI SYLLABLE BBU
-a06f YI SYLLABLE BBUP
-a070 YI SYLLABLE BBURX
-a071 YI SYLLABLE BBUR
-a072 YI SYLLABLE BBYT
-a073 YI SYLLABLE BBYX
-a074 YI SYLLABLE BBY
-a075 YI SYLLABLE BBYP
-a076 YI SYLLABLE NBIT
-a077 YI SYLLABLE NBIX
-a078 YI SYLLABLE NBI
-a079 YI SYLLABLE NBIP
-a07a YI SYLLABLE NBIEX
-a07b YI SYLLABLE NBIE
-a07c YI SYLLABLE NBIEP
-a07d YI SYLLABLE NBAT
-a07e YI SYLLABLE NBAX
-a07f YI SYLLABLE NBA
-a080 YI SYLLABLE NBAP
-a081 YI SYLLABLE NBOT
-a082 YI SYLLABLE NBOX
-a083 YI SYLLABLE NBO
-a084 YI SYLLABLE NBOP
-a085 YI SYLLABLE NBUT
-a086 YI SYLLABLE NBUX
-a087 YI SYLLABLE NBU
-a088 YI SYLLABLE NBUP
-a089 YI SYLLABLE NBURX
-a08a YI SYLLABLE NBUR
-a08b YI SYLLABLE NBYT
-a08c YI SYLLABLE NBYX
-a08d YI SYLLABLE NBY
-a08e YI SYLLABLE NBYP
-a08f YI SYLLABLE NBYRX
-a090 YI SYLLABLE NBYR
-a091 YI SYLLABLE HMIT
-a092 YI SYLLABLE HMIX
-a093 YI SYLLABLE HMI
-a094 YI SYLLABLE HMIP
-a095 YI SYLLABLE HMIEX
-a096 YI SYLLABLE HMIE
-a097 YI SYLLABLE HMIEP
-a098 YI SYLLABLE HMAT
-a099 YI SYLLABLE HMAX
-a09a YI SYLLABLE HMA
-a09b YI SYLLABLE HMAP
-a09c YI SYLLABLE HMUOX
-a09d YI SYLLABLE HMUO
-a09e YI SYLLABLE HMUOP
-a09f YI SYLLABLE HMOT
-a0a0 YI SYLLABLE HMOX
-a0a1 YI SYLLABLE HMO
-a0a2 YI SYLLABLE HMOP
-a0a3 YI SYLLABLE HMUT
-a0a4 YI SYLLABLE HMUX
-a0a5 YI SYLLABLE HMU
-a0a6 YI SYLLABLE HMUP
-a0a7 YI SYLLABLE HMURX
-a0a8 YI SYLLABLE HMUR
-a0a9 YI SYLLABLE HMYX
-a0aa YI SYLLABLE HMY
-a0ab YI SYLLABLE HMYP
-a0ac YI SYLLABLE HMYRX
-a0ad YI SYLLABLE HMYR
-a0ae YI SYLLABLE MIT
-a0af YI SYLLABLE MIX
-a0b0 YI SYLLABLE MI
-a0b1 YI SYLLABLE MIP
-a0b2 YI SYLLABLE MIEX
-a0b3 YI SYLLABLE MIE
-a0b4 YI SYLLABLE MIEP
-a0b5 YI SYLLABLE MAT
-a0b6 YI SYLLABLE MAX
-a0b7 YI SYLLABLE MA
-a0b8 YI SYLLABLE MAP
-a0b9 YI SYLLABLE MUOT
-a0ba YI SYLLABLE MUOX
-a0bb YI SYLLABLE MUO
-a0bc YI SYLLABLE MUOP
-a0bd YI SYLLABLE MOT
-a0be YI SYLLABLE MOX
-a0bf YI SYLLABLE MO
-a0c0 YI SYLLABLE MOP
-a0c1 YI SYLLABLE MEX
-a0c2 YI SYLLABLE ME
-a0c3 YI SYLLABLE MUT
-a0c4 YI SYLLABLE MUX
-a0c5 YI SYLLABLE MU
-a0c6 YI SYLLABLE MUP
-a0c7 YI SYLLABLE MURX
-a0c8 YI SYLLABLE MUR
-a0c9 YI SYLLABLE MYT
-a0ca YI SYLLABLE MYX
-a0cb YI SYLLABLE MY
-a0cc YI SYLLABLE MYP
-a0cd YI SYLLABLE FIT
-a0ce YI SYLLABLE FIX
-a0cf YI SYLLABLE FI
-a0d0 YI SYLLABLE FIP
-a0d1 YI SYLLABLE FAT
-a0d2 YI SYLLABLE FAX
-a0d3 YI SYLLABLE FA
-a0d4 YI SYLLABLE FAP
-a0d5 YI SYLLABLE FOX
-a0d6 YI SYLLABLE FO
-a0d7 YI SYLLABLE FOP
-a0d8 YI SYLLABLE FUT
-a0d9 YI SYLLABLE FUX
-a0da YI SYLLABLE FU
-a0db YI SYLLABLE FUP
-a0dc YI SYLLABLE FURX
-a0dd YI SYLLABLE FUR
-a0de YI SYLLABLE FYT
-a0df YI SYLLABLE FYX
-a0e0 YI SYLLABLE FY
-a0e1 YI SYLLABLE FYP
-a0e2 YI SYLLABLE VIT
-a0e3 YI SYLLABLE VIX
-a0e4 YI SYLLABLE VI
-a0e5 YI SYLLABLE VIP
-a0e6 YI SYLLABLE VIET
-a0e7 YI SYLLABLE VIEX
-a0e8 YI SYLLABLE VIE
-a0e9 YI SYLLABLE VIEP
-a0ea YI SYLLABLE VAT
-a0eb YI SYLLABLE VAX
-a0ec YI SYLLABLE VA
-a0ed YI SYLLABLE VAP
-a0ee YI SYLLABLE VOT
-a0ef YI SYLLABLE VOX
-a0f0 YI SYLLABLE VO
-a0f1 YI SYLLABLE VOP
-a0f2 YI SYLLABLE VEX
-a0f3 YI SYLLABLE VEP
-a0f4 YI SYLLABLE VUT
-a0f5 YI SYLLABLE VUX
-a0f6 YI SYLLABLE VU
-a0f7 YI SYLLABLE VUP
-a0f8 YI SYLLABLE VURX
-a0f9 YI SYLLABLE VUR
-a0fa YI SYLLABLE VYT
-a0fb YI SYLLABLE VYX
-a0fc YI SYLLABLE VY
-a0fd YI SYLLABLE VYP
-a0fe YI SYLLABLE VYRX
-a0ff YI SYLLABLE VYR
-a100 YI SYLLABLE DIT
-a101 YI SYLLABLE DIX
-a102 YI SYLLABLE DI
-a103 YI SYLLABLE DIP
-a104 YI SYLLABLE DIEX
-a105 YI SYLLABLE DIE
-a106 YI SYLLABLE DIEP
-a107 YI SYLLABLE DAT
-a108 YI SYLLABLE DAX
-a109 YI SYLLABLE DA
-a10a YI SYLLABLE DAP
-a10b YI SYLLABLE DUOX
-a10c YI SYLLABLE DUO
-a10d YI SYLLABLE DOT
-a10e YI SYLLABLE DOX
-a10f YI SYLLABLE DO
-a110 YI SYLLABLE DOP
-a111 YI SYLLABLE DEX
-a112 YI SYLLABLE DE
-a113 YI SYLLABLE DEP
-a114 YI SYLLABLE DUT
-a115 YI SYLLABLE DUX
-a116 YI SYLLABLE DU
-a117 YI SYLLABLE DUP
-a118 YI SYLLABLE DURX
-a119 YI SYLLABLE DUR
-a11a YI SYLLABLE TIT
-a11b YI SYLLABLE TIX
-a11c YI SYLLABLE TI
-a11d YI SYLLABLE TIP
-a11e YI SYLLABLE TIEX
-a11f YI SYLLABLE TIE
-a120 YI SYLLABLE TIEP
-a121 YI SYLLABLE TAT
-a122 YI SYLLABLE TAX
-a123 YI SYLLABLE TA
-a124 YI SYLLABLE TAP
-a125 YI SYLLABLE TUOT
-a126 YI SYLLABLE TUOX
-a127 YI SYLLABLE TUO
-a128 YI SYLLABLE TUOP
-a129 YI SYLLABLE TOT
-a12a YI SYLLABLE TOX
-a12b YI SYLLABLE TO
-a12c YI SYLLABLE TOP
-a12d YI SYLLABLE TEX
-a12e YI SYLLABLE TE
-a12f YI SYLLABLE TEP
-a130 YI SYLLABLE TUT
-a131 YI SYLLABLE TUX
-a132 YI SYLLABLE TU
-a133 YI SYLLABLE TUP
-a134 YI SYLLABLE TURX
-a135 YI SYLLABLE TUR
-a136 YI SYLLABLE DDIT
-a137 YI SYLLABLE DDIX
-a138 YI SYLLABLE DDI
-a139 YI SYLLABLE DDIP
-a13a YI SYLLABLE DDIEX
-a13b YI SYLLABLE DDIE
-a13c YI SYLLABLE DDIEP
-a13d YI SYLLABLE DDAT
-a13e YI SYLLABLE DDAX
-a13f YI SYLLABLE DDA
-a140 YI SYLLABLE DDAP
-a141 YI SYLLABLE DDUOX
-a142 YI SYLLABLE DDUO
-a143 YI SYLLABLE DDUOP
-a144 YI SYLLABLE DDOT
-a145 YI SYLLABLE DDOX
-a146 YI SYLLABLE DDO
-a147 YI SYLLABLE DDOP
-a148 YI SYLLABLE DDEX
-a149 YI SYLLABLE DDE
-a14a YI SYLLABLE DDEP
-a14b YI SYLLABLE DDUT
-a14c YI SYLLABLE DDUX
-a14d YI SYLLABLE DDU
-a14e YI SYLLABLE DDUP
-a14f YI SYLLABLE DDURX
-a150 YI SYLLABLE DDUR
-a151 YI SYLLABLE NDIT
-a152 YI SYLLABLE NDIX
-a153 YI SYLLABLE NDI
-a154 YI SYLLABLE NDIP
-a155 YI SYLLABLE NDIEX
-a156 YI SYLLABLE NDIE
-a157 YI SYLLABLE NDAT
-a158 YI SYLLABLE NDAX
-a159 YI SYLLABLE NDA
-a15a YI SYLLABLE NDAP
-a15b YI SYLLABLE NDOT
-a15c YI SYLLABLE NDOX
-a15d YI SYLLABLE NDO
-a15e YI SYLLABLE NDOP
-a15f YI SYLLABLE NDEX
-a160 YI SYLLABLE NDE
-a161 YI SYLLABLE NDEP
-a162 YI SYLLABLE NDUT
-a163 YI SYLLABLE NDUX
-a164 YI SYLLABLE NDU
-a165 YI SYLLABLE NDUP
-a166 YI SYLLABLE NDURX
-a167 YI SYLLABLE NDUR
-a168 YI SYLLABLE HNIT
-a169 YI SYLLABLE HNIX
-a16a YI SYLLABLE HNI
-a16b YI SYLLABLE HNIP
-a16c YI SYLLABLE HNIET
-a16d YI SYLLABLE HNIEX
-a16e YI SYLLABLE HNIE
-a16f YI SYLLABLE HNIEP
-a170 YI SYLLABLE HNAT
-a171 YI SYLLABLE HNAX
-a172 YI SYLLABLE HNA
-a173 YI SYLLABLE HNAP
-a174 YI SYLLABLE HNUOX
-a175 YI SYLLABLE HNUO
-a176 YI SYLLABLE HNOT
-a177 YI SYLLABLE HNOX
-a178 YI SYLLABLE HNOP
-a179 YI SYLLABLE HNEX
-a17a YI SYLLABLE HNE
-a17b YI SYLLABLE HNEP
-a17c YI SYLLABLE HNUT
-a17d YI SYLLABLE NIT
-a17e YI SYLLABLE NIX
-a17f YI SYLLABLE NI
-a180 YI SYLLABLE NIP
-a181 YI SYLLABLE NIEX
-a182 YI SYLLABLE NIE
-a183 YI SYLLABLE NIEP
-a184 YI SYLLABLE NAX
-a185 YI SYLLABLE NA
-a186 YI SYLLABLE NAP
-a187 YI SYLLABLE NUOX
-a188 YI SYLLABLE NUO
-a189 YI SYLLABLE NUOP
-a18a YI SYLLABLE NOT
-a18b YI SYLLABLE NOX
-a18c YI SYLLABLE NO
-a18d YI SYLLABLE NOP
-a18e YI SYLLABLE NEX
-a18f YI SYLLABLE NE
-a190 YI SYLLABLE NEP
-a191 YI SYLLABLE NUT
-a192 YI SYLLABLE NUX
-a193 YI SYLLABLE NU
-a194 YI SYLLABLE NUP
-a195 YI SYLLABLE NURX
-a196 YI SYLLABLE NUR
-a197 YI SYLLABLE HLIT
-a198 YI SYLLABLE HLIX
-a199 YI SYLLABLE HLI
-a19a YI SYLLABLE HLIP
-a19b YI SYLLABLE HLIEX
-a19c YI SYLLABLE HLIE
-a19d YI SYLLABLE HLIEP
-a19e YI SYLLABLE HLAT
-a19f YI SYLLABLE HLAX
-a1a0 YI SYLLABLE HLA
-a1a1 YI SYLLABLE HLAP
-a1a2 YI SYLLABLE HLUOX
-a1a3 YI SYLLABLE HLUO
-a1a4 YI SYLLABLE HLUOP
-a1a5 YI SYLLABLE HLOX
-a1a6 YI SYLLABLE HLO
-a1a7 YI SYLLABLE HLOP
-a1a8 YI SYLLABLE HLEX
-a1a9 YI SYLLABLE HLE
-a1aa YI SYLLABLE HLEP
-a1ab YI SYLLABLE HLUT
-a1ac YI SYLLABLE HLUX
-a1ad YI SYLLABLE HLU
-a1ae YI SYLLABLE HLUP
-a1af YI SYLLABLE HLURX
-a1b0 YI SYLLABLE HLUR
-a1b1 YI SYLLABLE HLYT
-a1b2 YI SYLLABLE HLYX
-a1b3 YI SYLLABLE HLY
-a1b4 YI SYLLABLE HLYP
-a1b5 YI SYLLABLE HLYRX
-a1b6 YI SYLLABLE HLYR
-a1b7 YI SYLLABLE LIT
-a1b8 YI SYLLABLE LIX
-a1b9 YI SYLLABLE LI
-a1ba YI SYLLABLE LIP
-a1bb YI SYLLABLE LIET
-a1bc YI SYLLABLE LIEX
-a1bd YI SYLLABLE LIE
-a1be YI SYLLABLE LIEP
-a1bf YI SYLLABLE LAT
-a1c0 YI SYLLABLE LAX
-a1c1 YI SYLLABLE LA
-a1c2 YI SYLLABLE LAP
-a1c3 YI SYLLABLE LUOT
-a1c4 YI SYLLABLE LUOX
-a1c5 YI SYLLABLE LUO
-a1c6 YI SYLLABLE LUOP
-a1c7 YI SYLLABLE LOT
-a1c8 YI SYLLABLE LOX
-a1c9 YI SYLLABLE LO
-a1ca YI SYLLABLE LOP
-a1cb YI SYLLABLE LEX
-a1cc YI SYLLABLE LE
-a1cd YI SYLLABLE LEP
-a1ce YI SYLLABLE LUT
-a1cf YI SYLLABLE LUX
-a1d0 YI SYLLABLE LU
-a1d1 YI SYLLABLE LUP
-a1d2 YI SYLLABLE LURX
-a1d3 YI SYLLABLE LUR
-a1d4 YI SYLLABLE LYT
-a1d5 YI SYLLABLE LYX
-a1d6 YI SYLLABLE LY
-a1d7 YI SYLLABLE LYP
-a1d8 YI SYLLABLE LYRX
-a1d9 YI SYLLABLE LYR
-a1da YI SYLLABLE GIT
-a1db YI SYLLABLE GIX
-a1dc YI SYLLABLE GI
-a1dd YI SYLLABLE GIP
-a1de YI SYLLABLE GIET
-a1df YI SYLLABLE GIEX
-a1e0 YI SYLLABLE GIE
-a1e1 YI SYLLABLE GIEP
-a1e2 YI SYLLABLE GAT
-a1e3 YI SYLLABLE GAX
-a1e4 YI SYLLABLE GA
-a1e5 YI SYLLABLE GAP
-a1e6 YI SYLLABLE GUOT
-a1e7 YI SYLLABLE GUOX
-a1e8 YI SYLLABLE GUO
-a1e9 YI SYLLABLE GUOP
-a1ea YI SYLLABLE GOT
-a1eb YI SYLLABLE GOX
-a1ec YI SYLLABLE GO
-a1ed YI SYLLABLE GOP
-a1ee YI SYLLABLE GET
-a1ef YI SYLLABLE GEX
-a1f0 YI SYLLABLE GE
-a1f1 YI SYLLABLE GEP
-a1f2 YI SYLLABLE GUT
-a1f3 YI SYLLABLE GUX
-a1f4 YI SYLLABLE GU
-a1f5 YI SYLLABLE GUP
-a1f6 YI SYLLABLE GURX
-a1f7 YI SYLLABLE GUR
-a1f8 YI SYLLABLE KIT
-a1f9 YI SYLLABLE KIX
-a1fa YI SYLLABLE KI
-a1fb YI SYLLABLE KIP
-a1fc YI SYLLABLE KIEX
-a1fd YI SYLLABLE KIE
-a1fe YI SYLLABLE KIEP
-a1ff YI SYLLABLE KAT
-a200 YI SYLLABLE KAX
-a201 YI SYLLABLE KA
-a202 YI SYLLABLE KAP
-a203 YI SYLLABLE KUOX
-a204 YI SYLLABLE KUO
-a205 YI SYLLABLE KUOP
-a206 YI SYLLABLE KOT
-a207 YI SYLLABLE KOX
-a208 YI SYLLABLE KO
-a209 YI SYLLABLE KOP
-a20a YI SYLLABLE KET
-a20b YI SYLLABLE KEX
-a20c YI SYLLABLE KE
-a20d YI SYLLABLE KEP
-a20e YI SYLLABLE KUT
-a20f YI SYLLABLE KUX
-a210 YI SYLLABLE KU
-a211 YI SYLLABLE KUP
-a212 YI SYLLABLE KURX
-a213 YI SYLLABLE KUR
-a214 YI SYLLABLE GGIT
-a215 YI SYLLABLE GGIX
-a216 YI SYLLABLE GGI
-a217 YI SYLLABLE GGIEX
-a218 YI SYLLABLE GGIE
-a219 YI SYLLABLE GGIEP
-a21a YI SYLLABLE GGAT
-a21b YI SYLLABLE GGAX
-a21c YI SYLLABLE GGA
-a21d YI SYLLABLE GGAP
-a21e YI SYLLABLE GGUOT
-a21f YI SYLLABLE GGUOX
-a220 YI SYLLABLE GGUO
-a221 YI SYLLABLE GGUOP
-a222 YI SYLLABLE GGOT
-a223 YI SYLLABLE GGOX
-a224 YI SYLLABLE GGO
-a225 YI SYLLABLE GGOP
-a226 YI SYLLABLE GGET
-a227 YI SYLLABLE GGEX
-a228 YI SYLLABLE GGE
-a229 YI SYLLABLE GGEP
-a22a YI SYLLABLE GGUT
-a22b YI SYLLABLE GGUX
-a22c YI SYLLABLE GGU
-a22d YI SYLLABLE GGUP
-a22e YI SYLLABLE GGURX
-a22f YI SYLLABLE GGUR
-a230 YI SYLLABLE MGIEX
-a231 YI SYLLABLE MGIE
-a232 YI SYLLABLE MGAT
-a233 YI SYLLABLE MGAX
-a234 YI SYLLABLE MGA
-a235 YI SYLLABLE MGAP
-a236 YI SYLLABLE MGUOX
-a237 YI SYLLABLE MGUO
-a238 YI SYLLABLE MGUOP
-a239 YI SYLLABLE MGOT
-a23a YI SYLLABLE MGOX
-a23b YI SYLLABLE MGO
-a23c YI SYLLABLE MGOP
-a23d YI SYLLABLE MGEX
-a23e YI SYLLABLE MGE
-a23f YI SYLLABLE MGEP
-a240 YI SYLLABLE MGUT
-a241 YI SYLLABLE MGUX
-a242 YI SYLLABLE MGU
-a243 YI SYLLABLE MGUP
-a244 YI SYLLABLE MGURX
-a245 YI SYLLABLE MGUR
-a246 YI SYLLABLE HXIT
-a247 YI SYLLABLE HXIX
-a248 YI SYLLABLE HXI
-a249 YI SYLLABLE HXIP
-a24a YI SYLLABLE HXIET
-a24b YI SYLLABLE HXIEX
-a24c YI SYLLABLE HXIE
-a24d YI SYLLABLE HXIEP
-a24e YI SYLLABLE HXAT
-a24f YI SYLLABLE HXAX
-a250 YI SYLLABLE HXA
-a251 YI SYLLABLE HXAP
-a252 YI SYLLABLE HXUOT
-a253 YI SYLLABLE HXUOX
-a254 YI SYLLABLE HXUO
-a255 YI SYLLABLE HXUOP
-a256 YI SYLLABLE HXOT
-a257 YI SYLLABLE HXOX
-a258 YI SYLLABLE HXO
-a259 YI SYLLABLE HXOP
-a25a YI SYLLABLE HXEX
-a25b YI SYLLABLE HXE
-a25c YI SYLLABLE HXEP
-a25d YI SYLLABLE NGIEX
-a25e YI SYLLABLE NGIE
-a25f YI SYLLABLE NGIEP
-a260 YI SYLLABLE NGAT
-a261 YI SYLLABLE NGAX
-a262 YI SYLLABLE NGA
-a263 YI SYLLABLE NGAP
-a264 YI SYLLABLE NGUOT
-a265 YI SYLLABLE NGUOX
-a266 YI SYLLABLE NGUO
-a267 YI SYLLABLE NGOT
-a268 YI SYLLABLE NGOX
-a269 YI SYLLABLE NGO
-a26a YI SYLLABLE NGOP
-a26b YI SYLLABLE NGEX
-a26c YI SYLLABLE NGE
-a26d YI SYLLABLE NGEP
-a26e YI SYLLABLE HIT
-a26f YI SYLLABLE HIEX
-a270 YI SYLLABLE HIE
-a271 YI SYLLABLE HAT
-a272 YI SYLLABLE HAX
-a273 YI SYLLABLE HA
-a274 YI SYLLABLE HAP
-a275 YI SYLLABLE HUOT
-a276 YI SYLLABLE HUOX
-a277 YI SYLLABLE HUO
-a278 YI SYLLABLE HUOP
-a279 YI SYLLABLE HOT
-a27a YI SYLLABLE HOX
-a27b YI SYLLABLE HO
-a27c YI SYLLABLE HOP
-a27d YI SYLLABLE HEX
-a27e YI SYLLABLE HE
-a27f YI SYLLABLE HEP
-a280 YI SYLLABLE WAT
-a281 YI SYLLABLE WAX
-a282 YI SYLLABLE WA
-a283 YI SYLLABLE WAP
-a284 YI SYLLABLE WUOX
-a285 YI SYLLABLE WUO
-a286 YI SYLLABLE WUOP
-a287 YI SYLLABLE WOX
-a288 YI SYLLABLE WO
-a289 YI SYLLABLE WOP
-a28a YI SYLLABLE WEX
-a28b YI SYLLABLE WE
-a28c YI SYLLABLE WEP
-a28d YI SYLLABLE ZIT
-a28e YI SYLLABLE ZIX
-a28f YI SYLLABLE ZI
-a290 YI SYLLABLE ZIP
-a291 YI SYLLABLE ZIEX
-a292 YI SYLLABLE ZIE
-a293 YI SYLLABLE ZIEP
-a294 YI SYLLABLE ZAT
-a295 YI SYLLABLE ZAX
-a296 YI SYLLABLE ZA
-a297 YI SYLLABLE ZAP
-a298 YI SYLLABLE ZUOX
-a299 YI SYLLABLE ZUO
-a29a YI SYLLABLE ZUOP
-a29b YI SYLLABLE ZOT
-a29c YI SYLLABLE ZOX
-a29d YI SYLLABLE ZO
-a29e YI SYLLABLE ZOP
-a29f YI SYLLABLE ZEX
-a2a0 YI SYLLABLE ZE
-a2a1 YI SYLLABLE ZEP
-a2a2 YI SYLLABLE ZUT
-a2a3 YI SYLLABLE ZUX
-a2a4 YI SYLLABLE ZU
-a2a5 YI SYLLABLE ZUP
-a2a6 YI SYLLABLE ZURX
-a2a7 YI SYLLABLE ZUR
-a2a8 YI SYLLABLE ZYT
-a2a9 YI SYLLABLE ZYX
-a2aa YI SYLLABLE ZY
-a2ab YI SYLLABLE ZYP
-a2ac YI SYLLABLE ZYRX
-a2ad YI SYLLABLE ZYR
-a2ae YI SYLLABLE CIT
-a2af YI SYLLABLE CIX
-a2b0 YI SYLLABLE CI
-a2b1 YI SYLLABLE CIP
-a2b2 YI SYLLABLE CIET
-a2b3 YI SYLLABLE CIEX
-a2b4 YI SYLLABLE CIE
-a2b5 YI SYLLABLE CIEP
-a2b6 YI SYLLABLE CAT
-a2b7 YI SYLLABLE CAX
-a2b8 YI SYLLABLE CA
-a2b9 YI SYLLABLE CAP
-a2ba YI SYLLABLE CUOX
-a2bb YI SYLLABLE CUO
-a2bc YI SYLLABLE CUOP
-a2bd YI SYLLABLE COT
-a2be YI SYLLABLE COX
-a2bf YI SYLLABLE CO
-a2c0 YI SYLLABLE COP
-a2c1 YI SYLLABLE CEX
-a2c2 YI SYLLABLE CE
-a2c3 YI SYLLABLE CEP
-a2c4 YI SYLLABLE CUT
-a2c5 YI SYLLABLE CUX
-a2c6 YI SYLLABLE CU
-a2c7 YI SYLLABLE CUP
-a2c8 YI SYLLABLE CURX
-a2c9 YI SYLLABLE CUR
-a2ca YI SYLLABLE CYT
-a2cb YI SYLLABLE CYX
-a2cc YI SYLLABLE CY
-a2cd YI SYLLABLE CYP
-a2ce YI SYLLABLE CYRX
-a2cf YI SYLLABLE CYR
-a2d0 YI SYLLABLE ZZIT
-a2d1 YI SYLLABLE ZZIX
-a2d2 YI SYLLABLE ZZI
-a2d3 YI SYLLABLE ZZIP
-a2d4 YI SYLLABLE ZZIET
-a2d5 YI SYLLABLE ZZIEX
-a2d6 YI SYLLABLE ZZIE
-a2d7 YI SYLLABLE ZZIEP
-a2d8 YI SYLLABLE ZZAT
-a2d9 YI SYLLABLE ZZAX
-a2da YI SYLLABLE ZZA
-a2db YI SYLLABLE ZZAP
-a2dc YI SYLLABLE ZZOX
-a2dd YI SYLLABLE ZZO
-a2de YI SYLLABLE ZZOP
-a2df YI SYLLABLE ZZEX
-a2e0 YI SYLLABLE ZZE
-a2e1 YI SYLLABLE ZZEP
-a2e2 YI SYLLABLE ZZUX
-a2e3 YI SYLLABLE ZZU
-a2e4 YI SYLLABLE ZZUP
-a2e5 YI SYLLABLE ZZURX
-a2e6 YI SYLLABLE ZZUR
-a2e7 YI SYLLABLE ZZYT
-a2e8 YI SYLLABLE ZZYX
-a2e9 YI SYLLABLE ZZY
-a2ea YI SYLLABLE ZZYP
-a2eb YI SYLLABLE ZZYRX
-a2ec YI SYLLABLE ZZYR
-a2ed YI SYLLABLE NZIT
-a2ee YI SYLLABLE NZIX
-a2ef YI SYLLABLE NZI
-a2f0 YI SYLLABLE NZIP
-a2f1 YI SYLLABLE NZIEX
-a2f2 YI SYLLABLE NZIE
-a2f3 YI SYLLABLE NZIEP
-a2f4 YI SYLLABLE NZAT
-a2f5 YI SYLLABLE NZAX
-a2f6 YI SYLLABLE NZA
-a2f7 YI SYLLABLE NZAP
-a2f8 YI SYLLABLE NZUOX
-a2f9 YI SYLLABLE NZUO
-a2fa YI SYLLABLE NZOX
-a2fb YI SYLLABLE NZOP
-a2fc YI SYLLABLE NZEX
-a2fd YI SYLLABLE NZE
-a2fe YI SYLLABLE NZUX
-a2ff YI SYLLABLE NZU
-a300 YI SYLLABLE NZUP
-a301 YI SYLLABLE NZURX
-a302 YI SYLLABLE NZUR
-a303 YI SYLLABLE NZYT
-a304 YI SYLLABLE NZYX
-a305 YI SYLLABLE NZY
-a306 YI SYLLABLE NZYP
-a307 YI SYLLABLE NZYRX
-a308 YI SYLLABLE NZYR
-a309 YI SYLLABLE SIT
-a30a YI SYLLABLE SIX
-a30b YI SYLLABLE SI
-a30c YI SYLLABLE SIP
-a30d YI SYLLABLE SIEX
-a30e YI SYLLABLE SIE
-a30f YI SYLLABLE SIEP
-a310 YI SYLLABLE SAT
-a311 YI SYLLABLE SAX
-a312 YI SYLLABLE SA
-a313 YI SYLLABLE SAP
-a314 YI SYLLABLE SUOX
-a315 YI SYLLABLE SUO
-a316 YI SYLLABLE SUOP
-a317 YI SYLLABLE SOT
-a318 YI SYLLABLE SOX
-a319 YI SYLLABLE SO
-a31a YI SYLLABLE SOP
-a31b YI SYLLABLE SEX
-a31c YI SYLLABLE SE
-a31d YI SYLLABLE SEP
-a31e YI SYLLABLE SUT
-a31f YI SYLLABLE SUX
-a320 YI SYLLABLE SU
-a321 YI SYLLABLE SUP
-a322 YI SYLLABLE SURX
-a323 YI SYLLABLE SUR
-a324 YI SYLLABLE SYT
-a325 YI SYLLABLE SYX
-a326 YI SYLLABLE SY
-a327 YI SYLLABLE SYP
-a328 YI SYLLABLE SYRX
-a329 YI SYLLABLE SYR
-a32a YI SYLLABLE SSIT
-a32b YI SYLLABLE SSIX
-a32c YI SYLLABLE SSI
-a32d YI SYLLABLE SSIP
-a32e YI SYLLABLE SSIEX
-a32f YI SYLLABLE SSIE
-a330 YI SYLLABLE SSIEP
-a331 YI SYLLABLE SSAT
-a332 YI SYLLABLE SSAX
-a333 YI SYLLABLE SSA
-a334 YI SYLLABLE SSAP
-a335 YI SYLLABLE SSOT
-a336 YI SYLLABLE SSOX
-a337 YI SYLLABLE SSO
-a338 YI SYLLABLE SSOP
-a339 YI SYLLABLE SSEX
-a33a YI SYLLABLE SSE
-a33b YI SYLLABLE SSEP
-a33c YI SYLLABLE SSUT
-a33d YI SYLLABLE SSUX
-a33e YI SYLLABLE SSU
-a33f YI SYLLABLE SSUP
-a340 YI SYLLABLE SSYT
-a341 YI SYLLABLE SSYX
-a342 YI SYLLABLE SSY
-a343 YI SYLLABLE SSYP
-a344 YI SYLLABLE SSYRX
-a345 YI SYLLABLE SSYR
-a346 YI SYLLABLE ZHAT
-a347 YI SYLLABLE ZHAX
-a348 YI SYLLABLE ZHA
-a349 YI SYLLABLE ZHAP
-a34a YI SYLLABLE ZHUOX
-a34b YI SYLLABLE ZHUO
-a34c YI SYLLABLE ZHUOP
-a34d YI SYLLABLE ZHOT
-a34e YI SYLLABLE ZHOX
-a34f YI SYLLABLE ZHO
-a350 YI SYLLABLE ZHOP
-a351 YI SYLLABLE ZHET
-a352 YI SYLLABLE ZHEX
-a353 YI SYLLABLE ZHE
-a354 YI SYLLABLE ZHEP
-a355 YI SYLLABLE ZHUT
-a356 YI SYLLABLE ZHUX
-a357 YI SYLLABLE ZHU
-a358 YI SYLLABLE ZHUP
-a359 YI SYLLABLE ZHURX
-a35a YI SYLLABLE ZHUR
-a35b YI SYLLABLE ZHYT
-a35c YI SYLLABLE ZHYX
-a35d YI SYLLABLE ZHY
-a35e YI SYLLABLE ZHYP
-a35f YI SYLLABLE ZHYRX
-a360 YI SYLLABLE ZHYR
-a361 YI SYLLABLE CHAT
-a362 YI SYLLABLE CHAX
-a363 YI SYLLABLE CHA
-a364 YI SYLLABLE CHAP
-a365 YI SYLLABLE CHUOT
-a366 YI SYLLABLE CHUOX
-a367 YI SYLLABLE CHUO
-a368 YI SYLLABLE CHUOP
-a369 YI SYLLABLE CHOT
-a36a YI SYLLABLE CHOX
-a36b YI SYLLABLE CHO
-a36c YI SYLLABLE CHOP
-a36d YI SYLLABLE CHET
-a36e YI SYLLABLE CHEX
-a36f YI SYLLABLE CHE
-a370 YI SYLLABLE CHEP
-a371 YI SYLLABLE CHUX
-a372 YI SYLLABLE CHU
-a373 YI SYLLABLE CHUP
-a374 YI SYLLABLE CHURX
-a375 YI SYLLABLE CHUR
-a376 YI SYLLABLE CHYT
-a377 YI SYLLABLE CHYX
-a378 YI SYLLABLE CHY
-a379 YI SYLLABLE CHYP
-a37a YI SYLLABLE CHYRX
-a37b YI SYLLABLE CHYR
-a37c YI SYLLABLE RRAX
-a37d YI SYLLABLE RRA
-a37e YI SYLLABLE RRUOX
-a37f YI SYLLABLE RRUO
-a380 YI SYLLABLE RROT
-a381 YI SYLLABLE RROX
-a382 YI SYLLABLE RRO
-a383 YI SYLLABLE RROP
-a384 YI SYLLABLE RRET
-a385 YI SYLLABLE RREX
-a386 YI SYLLABLE RRE
-a387 YI SYLLABLE RREP
-a388 YI SYLLABLE RRUT
-a389 YI SYLLABLE RRUX
-a38a YI SYLLABLE RRU
-a38b YI SYLLABLE RRUP
-a38c YI SYLLABLE RRURX
-a38d YI SYLLABLE RRUR
-a38e YI SYLLABLE RRYT
-a38f YI SYLLABLE RRYX
-a390 YI SYLLABLE RRY
-a391 YI SYLLABLE RRYP
-a392 YI SYLLABLE RRYRX
-a393 YI SYLLABLE RRYR
-a394 YI SYLLABLE NRAT
-a395 YI SYLLABLE NRAX
-a396 YI SYLLABLE NRA
-a397 YI SYLLABLE NRAP
-a398 YI SYLLABLE NROX
-a399 YI SYLLABLE NRO
-a39a YI SYLLABLE NROP
-a39b YI SYLLABLE NRET
-a39c YI SYLLABLE NREX
-a39d YI SYLLABLE NRE
-a39e YI SYLLABLE NREP
-a39f YI SYLLABLE NRUT
-a3a0 YI SYLLABLE NRUX
-a3a1 YI SYLLABLE NRU
-a3a2 YI SYLLABLE NRUP
-a3a3 YI SYLLABLE NRURX
-a3a4 YI SYLLABLE NRUR
-a3a5 YI SYLLABLE NRYT
-a3a6 YI SYLLABLE NRYX
-a3a7 YI SYLLABLE NRY
-a3a8 YI SYLLABLE NRYP
-a3a9 YI SYLLABLE NRYRX
-a3aa YI SYLLABLE NRYR
-a3ab YI SYLLABLE SHAT
-a3ac YI SYLLABLE SHAX
-a3ad YI SYLLABLE SHA
-a3ae YI SYLLABLE SHAP
-a3af YI SYLLABLE SHUOX
-a3b0 YI SYLLABLE SHUO
-a3b1 YI SYLLABLE SHUOP
-a3b2 YI SYLLABLE SHOT
-a3b3 YI SYLLABLE SHOX
-a3b4 YI SYLLABLE SHO
-a3b5 YI SYLLABLE SHOP
-a3b6 YI SYLLABLE SHET
-a3b7 YI SYLLABLE SHEX
-a3b8 YI SYLLABLE SHE
-a3b9 YI SYLLABLE SHEP
-a3ba YI SYLLABLE SHUT
-a3bb YI SYLLABLE SHUX
-a3bc YI SYLLABLE SHU
-a3bd YI SYLLABLE SHUP
-a3be YI SYLLABLE SHURX
-a3bf YI SYLLABLE SHUR
-a3c0 YI SYLLABLE SHYT
-a3c1 YI SYLLABLE SHYX
-a3c2 YI SYLLABLE SHY
-a3c3 YI SYLLABLE SHYP
-a3c4 YI SYLLABLE SHYRX
-a3c5 YI SYLLABLE SHYR
-a3c6 YI SYLLABLE RAT
-a3c7 YI SYLLABLE RAX
-a3c8 YI SYLLABLE RA
-a3c9 YI SYLLABLE RAP
-a3ca YI SYLLABLE RUOX
-a3cb YI SYLLABLE RUO
-a3cc YI SYLLABLE RUOP
-a3cd YI SYLLABLE ROT
-a3ce YI SYLLABLE ROX
-a3cf YI SYLLABLE RO
-a3d0 YI SYLLABLE ROP
-a3d1 YI SYLLABLE REX
-a3d2 YI SYLLABLE RE
-a3d3 YI SYLLABLE REP
-a3d4 YI SYLLABLE RUT
-a3d5 YI SYLLABLE RUX
-a3d6 YI SYLLABLE RU
-a3d7 YI SYLLABLE RUP
-a3d8 YI SYLLABLE RURX
-a3d9 YI SYLLABLE RUR
-a3da YI SYLLABLE RYT
-a3db YI SYLLABLE RYX
-a3dc YI SYLLABLE RY
-a3dd YI SYLLABLE RYP
-a3de YI SYLLABLE RYRX
-a3df YI SYLLABLE RYR
-a3e0 YI SYLLABLE JIT
-a3e1 YI SYLLABLE JIX
-a3e2 YI SYLLABLE JI
-a3e3 YI SYLLABLE JIP
-a3e4 YI SYLLABLE JIET
-a3e5 YI SYLLABLE JIEX
-a3e6 YI SYLLABLE JIE
-a3e7 YI SYLLABLE JIEP
-a3e8 YI SYLLABLE JUOT
-a3e9 YI SYLLABLE JUOX
-a3ea YI SYLLABLE JUO
-a3eb YI SYLLABLE JUOP
-a3ec YI SYLLABLE JOT
-a3ed YI SYLLABLE JOX
-a3ee YI SYLLABLE JO
-a3ef YI SYLLABLE JOP
-a3f0 YI SYLLABLE JUT
-a3f1 YI SYLLABLE JUX
-a3f2 YI SYLLABLE JU
-a3f3 YI SYLLABLE JUP
-a3f4 YI SYLLABLE JURX
-a3f5 YI SYLLABLE JUR
-a3f6 YI SYLLABLE JYT
-a3f7 YI SYLLABLE JYX
-a3f8 YI SYLLABLE JY
-a3f9 YI SYLLABLE JYP
-a3fa YI SYLLABLE JYRX
-a3fb YI SYLLABLE JYR
-a3fc YI SYLLABLE QIT
-a3fd YI SYLLABLE QIX
-a3fe YI SYLLABLE QI
-a3ff YI SYLLABLE QIP
-a400 YI SYLLABLE QIET
-a401 YI SYLLABLE QIEX
-a402 YI SYLLABLE QIE
-a403 YI SYLLABLE QIEP
-a404 YI SYLLABLE QUOT
-a405 YI SYLLABLE QUOX
-a406 YI SYLLABLE QUO
-a407 YI SYLLABLE QUOP
-a408 YI SYLLABLE QOT
-a409 YI SYLLABLE QOX
-a40a YI SYLLABLE QO
-a40b YI SYLLABLE QOP
-a40c YI SYLLABLE QUT
-a40d YI SYLLABLE QUX
-a40e YI SYLLABLE QU
-a40f YI SYLLABLE QUP
-a410 YI SYLLABLE QURX
-a411 YI SYLLABLE QUR
-a412 YI SYLLABLE QYT
-a413 YI SYLLABLE QYX
-a414 YI SYLLABLE QY
-a415 YI SYLLABLE QYP
-a416 YI SYLLABLE QYRX
-a417 YI SYLLABLE QYR
-a418 YI SYLLABLE JJIT
-a419 YI SYLLABLE JJIX
-a41a YI SYLLABLE JJI
-a41b YI SYLLABLE JJIP
-a41c YI SYLLABLE JJIET
-a41d YI SYLLABLE JJIEX
-a41e YI SYLLABLE JJIE
-a41f YI SYLLABLE JJIEP
-a420 YI SYLLABLE JJUOX
-a421 YI SYLLABLE JJUO
-a422 YI SYLLABLE JJUOP
-a423 YI SYLLABLE JJOT
-a424 YI SYLLABLE JJOX
-a425 YI SYLLABLE JJO
-a426 YI SYLLABLE JJOP
-a427 YI SYLLABLE JJUT
-a428 YI SYLLABLE JJUX
-a429 YI SYLLABLE JJU
-a42a YI SYLLABLE JJUP
-a42b YI SYLLABLE JJURX
-a42c YI SYLLABLE JJUR
-a42d YI SYLLABLE JJYT
-a42e YI SYLLABLE JJYX
-a42f YI SYLLABLE JJY
-a430 YI SYLLABLE JJYP
-a431 YI SYLLABLE NJIT
-a432 YI SYLLABLE NJIX
-a433 YI SYLLABLE NJI
-a434 YI SYLLABLE NJIP
-a435 YI SYLLABLE NJIET
-a436 YI SYLLABLE NJIEX
-a437 YI SYLLABLE NJIE
-a438 YI SYLLABLE NJIEP
-a439 YI SYLLABLE NJUOX
-a43a YI SYLLABLE NJUO
-a43b YI SYLLABLE NJOT
-a43c YI SYLLABLE NJOX
-a43d YI SYLLABLE NJO
-a43e YI SYLLABLE NJOP
-a43f YI SYLLABLE NJUX
-a440 YI SYLLABLE NJU
-a441 YI SYLLABLE NJUP
-a442 YI SYLLABLE NJURX
-a443 YI SYLLABLE NJUR
-a444 YI SYLLABLE NJYT
-a445 YI SYLLABLE NJYX
-a446 YI SYLLABLE NJY
-a447 YI SYLLABLE NJYP
-a448 YI SYLLABLE NJYRX
-a449 YI SYLLABLE NJYR
-a44a YI SYLLABLE NYIT
-a44b YI SYLLABLE NYIX
-a44c YI SYLLABLE NYI
-a44d YI SYLLABLE NYIP
-a44e YI SYLLABLE NYIET
-a44f YI SYLLABLE NYIEX
-a450 YI SYLLABLE NYIE
-a451 YI SYLLABLE NYIEP
-a452 YI SYLLABLE NYUOX
-a453 YI SYLLABLE NYUO
-a454 YI SYLLABLE NYUOP
-a455 YI SYLLABLE NYOT
-a456 YI SYLLABLE NYOX
-a457 YI SYLLABLE NYO
-a458 YI SYLLABLE NYOP
-a459 YI SYLLABLE NYUT
-a45a YI SYLLABLE NYUX
-a45b YI SYLLABLE NYU
-a45c YI SYLLABLE NYUP
-a45d YI SYLLABLE XIT
-a45e YI SYLLABLE XIX
-a45f YI SYLLABLE XI
-a460 YI SYLLABLE XIP
-a461 YI SYLLABLE XIET
-a462 YI SYLLABLE XIEX
-a463 YI SYLLABLE XIE
-a464 YI SYLLABLE XIEP
-a465 YI SYLLABLE XUOX
-a466 YI SYLLABLE XUO
-a467 YI SYLLABLE XOT
-a468 YI SYLLABLE XOX
-a469 YI SYLLABLE XO
-a46a YI SYLLABLE XOP
-a46b YI SYLLABLE XYT
-a46c YI SYLLABLE XYX
-a46d YI SYLLABLE XY
-a46e YI SYLLABLE XYP
-a46f YI SYLLABLE XYRX
-a470 YI SYLLABLE XYR
-a471 YI SYLLABLE YIT
-a472 YI SYLLABLE YIX
-a473 YI SYLLABLE YI
-a474 YI SYLLABLE YIP
-a475 YI SYLLABLE YIET
-a476 YI SYLLABLE YIEX
-a477 YI SYLLABLE YIE
-a478 YI SYLLABLE YIEP
-a479 YI SYLLABLE YUOT
-a47a YI SYLLABLE YUOX
-a47b YI SYLLABLE YUO
-a47c YI SYLLABLE YUOP
-a47d YI SYLLABLE YOT
-a47e YI SYLLABLE YOX
-a47f YI SYLLABLE YO
-a480 YI SYLLABLE YOP
-a481 YI SYLLABLE YUT
-a482 YI SYLLABLE YUX
-a483 YI SYLLABLE YU
-a484 YI SYLLABLE YUP
-a485 YI SYLLABLE YURX
-a486 YI SYLLABLE YUR
-a487 YI SYLLABLE YYT
-a488 YI SYLLABLE YYX
-a489 YI SYLLABLE YY
-a48a YI SYLLABLE YYP
-a48b YI SYLLABLE YYRX
-a48c YI SYLLABLE YYR
-a490 YI RADICAL QOT
-a491 YI RADICAL LI
-a492 YI RADICAL KIT
-a493 YI RADICAL NYIP
-a494 YI RADICAL CYP
-a495 YI RADICAL SSI
-a496 YI RADICAL GGOP
-a497 YI RADICAL GEP
-a498 YI RADICAL MI
-a499 YI RADICAL HXIT
-a49a YI RADICAL LYR
-a49b YI RADICAL BBUT
-a49c YI RADICAL MOP
-a49d YI RADICAL YO
-a49e YI RADICAL PUT
-a49f YI RADICAL HXUO
-a4a0 YI RADICAL TAT
-a4a1 YI RADICAL GA
-a4a4 YI RADICAL DDUR
-a4a5 YI RADICAL BUR
-a4a6 YI RADICAL GGUO
-a4a7 YI RADICAL NYOP
-a4a8 YI RADICAL TU
-a4a9 YI RADICAL OP
-a4aa YI RADICAL JJUT
-a4ab YI RADICAL ZOT
-a4ac YI RADICAL PYT
-a4ad YI RADICAL HMO
-a4ae YI RADICAL YIT
-a4af YI RADICAL VUR
-a4b0 YI RADICAL SHY
-a4b1 YI RADICAL VEP
-a4b2 YI RADICAL ZA
-a4b3 YI RADICAL JO
-a4b5 YI RADICAL JJY
-a4b6 YI RADICAL GOT
-a4b7 YI RADICAL JJIE
-a4b8 YI RADICAL WO
-a4b9 YI RADICAL DU
-a4ba YI RADICAL SHUR
-a4bb YI RADICAL LIE
-a4bc YI RADICAL CY
-a4bd YI RADICAL CUOP
-a4be YI RADICAL CIP
-a4bf YI RADICAL HXOP
-a4c0 YI RADICAL SHAT
-a4c2 YI RADICAL SHOP
-a4c3 YI RADICAL CHE
-a4c4 YI RADICAL ZZIET
-a4c6 YI RADICAL KE
-ac00 d7a3 <Hangul Syllable, First>
-d800 db7f <Non Private Use High Surrogate, First>
-db80 dbff <Private Use High Surrogate, First>
-dc00 dfff <Low Surrogate, First>
-e000 f8ff <Private Use, First>
-f900 CJK COMPATIBILITY IDEOGRAPH-F900
-f901 CJK COMPATIBILITY IDEOGRAPH-F901
-f902 CJK COMPATIBILITY IDEOGRAPH-F902
-f903 CJK COMPATIBILITY IDEOGRAPH-F903
-f904 CJK COMPATIBILITY IDEOGRAPH-F904
-f905 CJK COMPATIBILITY IDEOGRAPH-F905
-f906 CJK COMPATIBILITY IDEOGRAPH-F906
-f907 CJK COMPATIBILITY IDEOGRAPH-F907
-f908 CJK COMPATIBILITY IDEOGRAPH-F908
-f909 CJK COMPATIBILITY IDEOGRAPH-F909
-f90a CJK COMPATIBILITY IDEOGRAPH-F90A
-f90b CJK COMPATIBILITY IDEOGRAPH-F90B
-f90c CJK COMPATIBILITY IDEOGRAPH-F90C
-f90d CJK COMPATIBILITY IDEOGRAPH-F90D
-f90e CJK COMPATIBILITY IDEOGRAPH-F90E
-f90f CJK COMPATIBILITY IDEOGRAPH-F90F
-f910 CJK COMPATIBILITY IDEOGRAPH-F910
-f911 CJK COMPATIBILITY IDEOGRAPH-F911
-f912 CJK COMPATIBILITY IDEOGRAPH-F912
-f913 CJK COMPATIBILITY IDEOGRAPH-F913
-f914 CJK COMPATIBILITY IDEOGRAPH-F914
-f915 CJK COMPATIBILITY IDEOGRAPH-F915
-f916 CJK COMPATIBILITY IDEOGRAPH-F916
-f917 CJK COMPATIBILITY IDEOGRAPH-F917
-f918 CJK COMPATIBILITY IDEOGRAPH-F918
-f919 CJK COMPATIBILITY IDEOGRAPH-F919
-f91a CJK COMPATIBILITY IDEOGRAPH-F91A
-f91b CJK COMPATIBILITY IDEOGRAPH-F91B
-f91c CJK COMPATIBILITY IDEOGRAPH-F91C
-f91d CJK COMPATIBILITY IDEOGRAPH-F91D
-f91e CJK COMPATIBILITY IDEOGRAPH-F91E
-f91f CJK COMPATIBILITY IDEOGRAPH-F91F
-f920 CJK COMPATIBILITY IDEOGRAPH-F920
-f921 CJK COMPATIBILITY IDEOGRAPH-F921
-f922 CJK COMPATIBILITY IDEOGRAPH-F922
-f923 CJK COMPATIBILITY IDEOGRAPH-F923
-f924 CJK COMPATIBILITY IDEOGRAPH-F924
-f925 CJK COMPATIBILITY IDEOGRAPH-F925
-f926 CJK COMPATIBILITY IDEOGRAPH-F926
-f927 CJK COMPATIBILITY IDEOGRAPH-F927
-f928 CJK COMPATIBILITY IDEOGRAPH-F928
-f929 CJK COMPATIBILITY IDEOGRAPH-F929
-f92a CJK COMPATIBILITY IDEOGRAPH-F92A
-f92b CJK COMPATIBILITY IDEOGRAPH-F92B
-f92c CJK COMPATIBILITY IDEOGRAPH-F92C
-f92d CJK COMPATIBILITY IDEOGRAPH-F92D
-f92e CJK COMPATIBILITY IDEOGRAPH-F92E
-f92f CJK COMPATIBILITY IDEOGRAPH-F92F
-f930 CJK COMPATIBILITY IDEOGRAPH-F930
-f931 CJK COMPATIBILITY IDEOGRAPH-F931
-f932 CJK COMPATIBILITY IDEOGRAPH-F932
-f933 CJK COMPATIBILITY IDEOGRAPH-F933
-f934 CJK COMPATIBILITY IDEOGRAPH-F934
-f935 CJK COMPATIBILITY IDEOGRAPH-F935
-f936 CJK COMPATIBILITY IDEOGRAPH-F936
-f937 CJK COMPATIBILITY IDEOGRAPH-F937
-f938 CJK COMPATIBILITY IDEOGRAPH-F938
-f939 CJK COMPATIBILITY IDEOGRAPH-F939
-f93a CJK COMPATIBILITY IDEOGRAPH-F93A
-f93b CJK COMPATIBILITY IDEOGRAPH-F93B
-f93c CJK COMPATIBILITY IDEOGRAPH-F93C
-f93d CJK COMPATIBILITY IDEOGRAPH-F93D
-f93e CJK COMPATIBILITY IDEOGRAPH-F93E
-f93f CJK COMPATIBILITY IDEOGRAPH-F93F
-f940 CJK COMPATIBILITY IDEOGRAPH-F940
-f941 CJK COMPATIBILITY IDEOGRAPH-F941
-f942 CJK COMPATIBILITY IDEOGRAPH-F942
-f943 CJK COMPATIBILITY IDEOGRAPH-F943
-f944 CJK COMPATIBILITY IDEOGRAPH-F944
-f945 CJK COMPATIBILITY IDEOGRAPH-F945
-f946 CJK COMPATIBILITY IDEOGRAPH-F946
-f947 CJK COMPATIBILITY IDEOGRAPH-F947
-f948 CJK COMPATIBILITY IDEOGRAPH-F948
-f949 CJK COMPATIBILITY IDEOGRAPH-F949
-f94a CJK COMPATIBILITY IDEOGRAPH-F94A
-f94b CJK COMPATIBILITY IDEOGRAPH-F94B
-f94c CJK COMPATIBILITY IDEOGRAPH-F94C
-f94d CJK COMPATIBILITY IDEOGRAPH-F94D
-f94e CJK COMPATIBILITY IDEOGRAPH-F94E
-f94f CJK COMPATIBILITY IDEOGRAPH-F94F
-f950 CJK COMPATIBILITY IDEOGRAPH-F950
-f951 CJK COMPATIBILITY IDEOGRAPH-F951
-f952 CJK COMPATIBILITY IDEOGRAPH-F952
-f953 CJK COMPATIBILITY IDEOGRAPH-F953
-f954 CJK COMPATIBILITY IDEOGRAPH-F954
-f955 CJK COMPATIBILITY IDEOGRAPH-F955
-f956 CJK COMPATIBILITY IDEOGRAPH-F956
-f957 CJK COMPATIBILITY IDEOGRAPH-F957
-f958 CJK COMPATIBILITY IDEOGRAPH-F958
-f959 CJK COMPATIBILITY IDEOGRAPH-F959
-f95a CJK COMPATIBILITY IDEOGRAPH-F95A
-f95b CJK COMPATIBILITY IDEOGRAPH-F95B
-f95c CJK COMPATIBILITY IDEOGRAPH-F95C
-f95d CJK COMPATIBILITY IDEOGRAPH-F95D
-f95e CJK COMPATIBILITY IDEOGRAPH-F95E
-f95f CJK COMPATIBILITY IDEOGRAPH-F95F
-f960 CJK COMPATIBILITY IDEOGRAPH-F960
-f961 CJK COMPATIBILITY IDEOGRAPH-F961
-f962 CJK COMPATIBILITY IDEOGRAPH-F962
-f963 CJK COMPATIBILITY IDEOGRAPH-F963
-f964 CJK COMPATIBILITY IDEOGRAPH-F964
-f965 CJK COMPATIBILITY IDEOGRAPH-F965
-f966 CJK COMPATIBILITY IDEOGRAPH-F966
-f967 CJK COMPATIBILITY IDEOGRAPH-F967
-f968 CJK COMPATIBILITY IDEOGRAPH-F968
-f969 CJK COMPATIBILITY IDEOGRAPH-F969
-f96a CJK COMPATIBILITY IDEOGRAPH-F96A
-f96b CJK COMPATIBILITY IDEOGRAPH-F96B
-f96c CJK COMPATIBILITY IDEOGRAPH-F96C
-f96d CJK COMPATIBILITY IDEOGRAPH-F96D
-f96e CJK COMPATIBILITY IDEOGRAPH-F96E
-f96f CJK COMPATIBILITY IDEOGRAPH-F96F
-f970 CJK COMPATIBILITY IDEOGRAPH-F970
-f971 CJK COMPATIBILITY IDEOGRAPH-F971
-f972 CJK COMPATIBILITY IDEOGRAPH-F972
-f973 CJK COMPATIBILITY IDEOGRAPH-F973
-f974 CJK COMPATIBILITY IDEOGRAPH-F974
-f975 CJK COMPATIBILITY IDEOGRAPH-F975
-f976 CJK COMPATIBILITY IDEOGRAPH-F976
-f977 CJK COMPATIBILITY IDEOGRAPH-F977
-f978 CJK COMPATIBILITY IDEOGRAPH-F978
-f979 CJK COMPATIBILITY IDEOGRAPH-F979
-f97a CJK COMPATIBILITY IDEOGRAPH-F97A
-f97b CJK COMPATIBILITY IDEOGRAPH-F97B
-f97c CJK COMPATIBILITY IDEOGRAPH-F97C
-f97d CJK COMPATIBILITY IDEOGRAPH-F97D
-f97e CJK COMPATIBILITY IDEOGRAPH-F97E
-f97f CJK COMPATIBILITY IDEOGRAPH-F97F
-f980 CJK COMPATIBILITY IDEOGRAPH-F980
-f981 CJK COMPATIBILITY IDEOGRAPH-F981
-f982 CJK COMPATIBILITY IDEOGRAPH-F982
-f983 CJK COMPATIBILITY IDEOGRAPH-F983
-f984 CJK COMPATIBILITY IDEOGRAPH-F984
-f985 CJK COMPATIBILITY IDEOGRAPH-F985
-f986 CJK COMPATIBILITY IDEOGRAPH-F986
-f987 CJK COMPATIBILITY IDEOGRAPH-F987
-f988 CJK COMPATIBILITY IDEOGRAPH-F988
-f989 CJK COMPATIBILITY IDEOGRAPH-F989
-f98a CJK COMPATIBILITY IDEOGRAPH-F98A
-f98b CJK COMPATIBILITY IDEOGRAPH-F98B
-f98c CJK COMPATIBILITY IDEOGRAPH-F98C
-f98d CJK COMPATIBILITY IDEOGRAPH-F98D
-f98e CJK COMPATIBILITY IDEOGRAPH-F98E
-f98f CJK COMPATIBILITY IDEOGRAPH-F98F
-f990 CJK COMPATIBILITY IDEOGRAPH-F990
-f991 CJK COMPATIBILITY IDEOGRAPH-F991
-f992 CJK COMPATIBILITY IDEOGRAPH-F992
-f993 CJK COMPATIBILITY IDEOGRAPH-F993
-f994 CJK COMPATIBILITY IDEOGRAPH-F994
-f995 CJK COMPATIBILITY IDEOGRAPH-F995
-f996 CJK COMPATIBILITY IDEOGRAPH-F996
-f997 CJK COMPATIBILITY IDEOGRAPH-F997
-f998 CJK COMPATIBILITY IDEOGRAPH-F998
-f999 CJK COMPATIBILITY IDEOGRAPH-F999
-f99a CJK COMPATIBILITY IDEOGRAPH-F99A
-f99b CJK COMPATIBILITY IDEOGRAPH-F99B
-f99c CJK COMPATIBILITY IDEOGRAPH-F99C
-f99d CJK COMPATIBILITY IDEOGRAPH-F99D
-f99e CJK COMPATIBILITY IDEOGRAPH-F99E
-f99f CJK COMPATIBILITY IDEOGRAPH-F99F
-f9a0 CJK COMPATIBILITY IDEOGRAPH-F9A0
-f9a1 CJK COMPATIBILITY IDEOGRAPH-F9A1
-f9a2 CJK COMPATIBILITY IDEOGRAPH-F9A2
-f9a3 CJK COMPATIBILITY IDEOGRAPH-F9A3
-f9a4 CJK COMPATIBILITY IDEOGRAPH-F9A4
-f9a5 CJK COMPATIBILITY IDEOGRAPH-F9A5
-f9a6 CJK COMPATIBILITY IDEOGRAPH-F9A6
-f9a7 CJK COMPATIBILITY IDEOGRAPH-F9A7
-f9a8 CJK COMPATIBILITY IDEOGRAPH-F9A8
-f9a9 CJK COMPATIBILITY IDEOGRAPH-F9A9
-f9aa CJK COMPATIBILITY IDEOGRAPH-F9AA
-f9ab CJK COMPATIBILITY IDEOGRAPH-F9AB
-f9ac CJK COMPATIBILITY IDEOGRAPH-F9AC
-f9ad CJK COMPATIBILITY IDEOGRAPH-F9AD
-f9ae CJK COMPATIBILITY IDEOGRAPH-F9AE
-f9af CJK COMPATIBILITY IDEOGRAPH-F9AF
-f9b0 CJK COMPATIBILITY IDEOGRAPH-F9B0
-f9b1 CJK COMPATIBILITY IDEOGRAPH-F9B1
-f9b2 CJK COMPATIBILITY IDEOGRAPH-F9B2
-f9b3 CJK COMPATIBILITY IDEOGRAPH-F9B3
-f9b4 CJK COMPATIBILITY IDEOGRAPH-F9B4
-f9b5 CJK COMPATIBILITY IDEOGRAPH-F9B5
-f9b6 CJK COMPATIBILITY IDEOGRAPH-F9B6
-f9b7 CJK COMPATIBILITY IDEOGRAPH-F9B7
-f9b8 CJK COMPATIBILITY IDEOGRAPH-F9B8
-f9b9 CJK COMPATIBILITY IDEOGRAPH-F9B9
-f9ba CJK COMPATIBILITY IDEOGRAPH-F9BA
-f9bb CJK COMPATIBILITY IDEOGRAPH-F9BB
-f9bc CJK COMPATIBILITY IDEOGRAPH-F9BC
-f9bd CJK COMPATIBILITY IDEOGRAPH-F9BD
-f9be CJK COMPATIBILITY IDEOGRAPH-F9BE
-f9bf CJK COMPATIBILITY IDEOGRAPH-F9BF
-f9c0 CJK COMPATIBILITY IDEOGRAPH-F9C0
-f9c1 CJK COMPATIBILITY IDEOGRAPH-F9C1
-f9c2 CJK COMPATIBILITY IDEOGRAPH-F9C2
-f9c3 CJK COMPATIBILITY IDEOGRAPH-F9C3
-f9c4 CJK COMPATIBILITY IDEOGRAPH-F9C4
-f9c5 CJK COMPATIBILITY IDEOGRAPH-F9C5
-f9c6 CJK COMPATIBILITY IDEOGRAPH-F9C6
-f9c7 CJK COMPATIBILITY IDEOGRAPH-F9C7
-f9c8 CJK COMPATIBILITY IDEOGRAPH-F9C8
-f9c9 CJK COMPATIBILITY IDEOGRAPH-F9C9
-f9ca CJK COMPATIBILITY IDEOGRAPH-F9CA
-f9cb CJK COMPATIBILITY IDEOGRAPH-F9CB
-f9cc CJK COMPATIBILITY IDEOGRAPH-F9CC
-f9cd CJK COMPATIBILITY IDEOGRAPH-F9CD
-f9ce CJK COMPATIBILITY IDEOGRAPH-F9CE
-f9cf CJK COMPATIBILITY IDEOGRAPH-F9CF
-f9d0 CJK COMPATIBILITY IDEOGRAPH-F9D0
-f9d1 CJK COMPATIBILITY IDEOGRAPH-F9D1
-f9d2 CJK COMPATIBILITY IDEOGRAPH-F9D2
-f9d3 CJK COMPATIBILITY IDEOGRAPH-F9D3
-f9d4 CJK COMPATIBILITY IDEOGRAPH-F9D4
-f9d5 CJK COMPATIBILITY IDEOGRAPH-F9D5
-f9d6 CJK COMPATIBILITY IDEOGRAPH-F9D6
-f9d7 CJK COMPATIBILITY IDEOGRAPH-F9D7
-f9d8 CJK COMPATIBILITY IDEOGRAPH-F9D8
-f9d9 CJK COMPATIBILITY IDEOGRAPH-F9D9
-f9da CJK COMPATIBILITY IDEOGRAPH-F9DA
-f9db CJK COMPATIBILITY IDEOGRAPH-F9DB
-f9dc CJK COMPATIBILITY IDEOGRAPH-F9DC
-f9dd CJK COMPATIBILITY IDEOGRAPH-F9DD
-f9de CJK COMPATIBILITY IDEOGRAPH-F9DE
-f9df CJK COMPATIBILITY IDEOGRAPH-F9DF
-f9e0 CJK COMPATIBILITY IDEOGRAPH-F9E0
-f9e1 CJK COMPATIBILITY IDEOGRAPH-F9E1
-f9e2 CJK COMPATIBILITY IDEOGRAPH-F9E2
-f9e3 CJK COMPATIBILITY IDEOGRAPH-F9E3
-f9e4 CJK COMPATIBILITY IDEOGRAPH-F9E4
-f9e5 CJK COMPATIBILITY IDEOGRAPH-F9E5
-f9e6 CJK COMPATIBILITY IDEOGRAPH-F9E6
-f9e7 CJK COMPATIBILITY IDEOGRAPH-F9E7
-f9e8 CJK COMPATIBILITY IDEOGRAPH-F9E8
-f9e9 CJK COMPATIBILITY IDEOGRAPH-F9E9
-f9ea CJK COMPATIBILITY IDEOGRAPH-F9EA
-f9eb CJK COMPATIBILITY IDEOGRAPH-F9EB
-f9ec CJK COMPATIBILITY IDEOGRAPH-F9EC
-f9ed CJK COMPATIBILITY IDEOGRAPH-F9ED
-f9ee CJK COMPATIBILITY IDEOGRAPH-F9EE
-f9ef CJK COMPATIBILITY IDEOGRAPH-F9EF
-f9f0 CJK COMPATIBILITY IDEOGRAPH-F9F0
-f9f1 CJK COMPATIBILITY IDEOGRAPH-F9F1
-f9f2 CJK COMPATIBILITY IDEOGRAPH-F9F2
-f9f3 CJK COMPATIBILITY IDEOGRAPH-F9F3
-f9f4 CJK COMPATIBILITY IDEOGRAPH-F9F4
-f9f5 CJK COMPATIBILITY IDEOGRAPH-F9F5
-f9f6 CJK COMPATIBILITY IDEOGRAPH-F9F6
-f9f7 CJK COMPATIBILITY IDEOGRAPH-F9F7
-f9f8 CJK COMPATIBILITY IDEOGRAPH-F9F8
-f9f9 CJK COMPATIBILITY IDEOGRAPH-F9F9
-f9fa CJK COMPATIBILITY IDEOGRAPH-F9FA
-f9fb CJK COMPATIBILITY IDEOGRAPH-F9FB
-f9fc CJK COMPATIBILITY IDEOGRAPH-F9FC
-f9fd CJK COMPATIBILITY IDEOGRAPH-F9FD
-f9fe CJK COMPATIBILITY IDEOGRAPH-F9FE
-f9ff CJK COMPATIBILITY IDEOGRAPH-F9FF
-fa00 CJK COMPATIBILITY IDEOGRAPH-FA00
-fa01 CJK COMPATIBILITY IDEOGRAPH-FA01
-fa02 CJK COMPATIBILITY IDEOGRAPH-FA02
-fa03 CJK COMPATIBILITY IDEOGRAPH-FA03
-fa04 CJK COMPATIBILITY IDEOGRAPH-FA04
-fa05 CJK COMPATIBILITY IDEOGRAPH-FA05
-fa06 CJK COMPATIBILITY IDEOGRAPH-FA06
-fa07 CJK COMPATIBILITY IDEOGRAPH-FA07
-fa08 CJK COMPATIBILITY IDEOGRAPH-FA08
-fa09 CJK COMPATIBILITY IDEOGRAPH-FA09
-fa0a CJK COMPATIBILITY IDEOGRAPH-FA0A
-fa0b CJK COMPATIBILITY IDEOGRAPH-FA0B
-fa0c CJK COMPATIBILITY IDEOGRAPH-FA0C
-fa0d CJK COMPATIBILITY IDEOGRAPH-FA0D
-fa0e CJK COMPATIBILITY IDEOGRAPH-FA0E
-fa0f CJK COMPATIBILITY IDEOGRAPH-FA0F
-fa10 CJK COMPATIBILITY IDEOGRAPH-FA10
-fa11 CJK COMPATIBILITY IDEOGRAPH-FA11
-fa12 CJK COMPATIBILITY IDEOGRAPH-FA12
-fa13 CJK COMPATIBILITY IDEOGRAPH-FA13
-fa14 CJK COMPATIBILITY IDEOGRAPH-FA14
-fa15 CJK COMPATIBILITY IDEOGRAPH-FA15
-fa16 CJK COMPATIBILITY IDEOGRAPH-FA16
-fa17 CJK COMPATIBILITY IDEOGRAPH-FA17
-fa18 CJK COMPATIBILITY IDEOGRAPH-FA18
-fa19 CJK COMPATIBILITY IDEOGRAPH-FA19
-fa1a CJK COMPATIBILITY IDEOGRAPH-FA1A
-fa1b CJK COMPATIBILITY IDEOGRAPH-FA1B
-fa1c CJK COMPATIBILITY IDEOGRAPH-FA1C
-fa1d CJK COMPATIBILITY IDEOGRAPH-FA1D
-fa1e CJK COMPATIBILITY IDEOGRAPH-FA1E
-fa1f CJK COMPATIBILITY IDEOGRAPH-FA1F
-fa20 CJK COMPATIBILITY IDEOGRAPH-FA20
-fa21 CJK COMPATIBILITY IDEOGRAPH-FA21
-fa22 CJK COMPATIBILITY IDEOGRAPH-FA22
-fa23 CJK COMPATIBILITY IDEOGRAPH-FA23
-fa24 CJK COMPATIBILITY IDEOGRAPH-FA24
-fa25 CJK COMPATIBILITY IDEOGRAPH-FA25
-fa26 CJK COMPATIBILITY IDEOGRAPH-FA26
-fa27 CJK COMPATIBILITY IDEOGRAPH-FA27
-fa28 CJK COMPATIBILITY IDEOGRAPH-FA28
-fa29 CJK COMPATIBILITY IDEOGRAPH-FA29
-fa2a CJK COMPATIBILITY IDEOGRAPH-FA2A
-fa2b CJK COMPATIBILITY IDEOGRAPH-FA2B
-fa2c CJK COMPATIBILITY IDEOGRAPH-FA2C
-fa2d CJK COMPATIBILITY IDEOGRAPH-FA2D
-fb00 LATIN SMALL LIGATURE FF
-fb01 LATIN SMALL LIGATURE FI
-fb02 LATIN SMALL LIGATURE FL
-fb03 LATIN SMALL LIGATURE FFI
-fb04 LATIN SMALL LIGATURE FFL
-fb05 LATIN SMALL LIGATURE LONG S T
-fb06 LATIN SMALL LIGATURE ST
-fb13 ARMENIAN SMALL LIGATURE MEN NOW
-fb14 ARMENIAN SMALL LIGATURE MEN ECH
-fb15 ARMENIAN SMALL LIGATURE MEN INI
-fb16 ARMENIAN SMALL LIGATURE VEW NOW
-fb17 ARMENIAN SMALL LIGATURE MEN XEH
-fb1d HEBREW LETTER YOD WITH HIRIQ
-fb1e HEBREW POINT JUDEO-SPANISH VARIKA
-fb1f HEBREW LIGATURE YIDDISH YOD YOD PATAH
-fb20 HEBREW LETTER ALTERNATIVE AYIN
-fb21 HEBREW LETTER WIDE ALEF
-fb22 HEBREW LETTER WIDE DALET
-fb23 HEBREW LETTER WIDE HE
-fb24 HEBREW LETTER WIDE KAF
-fb25 HEBREW LETTER WIDE LAMED
-fb26 HEBREW LETTER WIDE FINAL MEM
-fb27 HEBREW LETTER WIDE RESH
-fb28 HEBREW LETTER WIDE TAV
-fb29 HEBREW LETTER ALTERNATIVE PLUS SIGN
-fb2a HEBREW LETTER SHIN WITH SHIN DOT
-fb2b HEBREW LETTER SHIN WITH SIN DOT
-fb2c HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
-fb2d HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
-fb2e HEBREW LETTER ALEF WITH PATAH
-fb2f HEBREW LETTER ALEF WITH QAMATS
-fb30 HEBREW LETTER ALEF WITH MAPIQ
-fb31 HEBREW LETTER BET WITH DAGESH
-fb32 HEBREW LETTER GIMEL WITH DAGESH
-fb33 HEBREW LETTER DALET WITH DAGESH
-fb34 HEBREW LETTER HE WITH MAPIQ
-fb35 HEBREW LETTER VAV WITH DAGESH
-fb36 HEBREW LETTER ZAYIN WITH DAGESH
-fb38 HEBREW LETTER TET WITH DAGESH
-fb39 HEBREW LETTER YOD WITH DAGESH
-fb3a HEBREW LETTER FINAL KAF WITH DAGESH
-fb3b HEBREW LETTER KAF WITH DAGESH
-fb3c HEBREW LETTER LAMED WITH DAGESH
-fb3e HEBREW LETTER MEM WITH DAGESH
-fb40 HEBREW LETTER NUN WITH DAGESH
-fb41 HEBREW LETTER SAMEKH WITH DAGESH
-fb43 HEBREW LETTER FINAL PE WITH DAGESH
-fb44 HEBREW LETTER PE WITH DAGESH
-fb46 HEBREW LETTER TSADI WITH DAGESH
-fb47 HEBREW LETTER QOF WITH DAGESH
-fb48 HEBREW LETTER RESH WITH DAGESH
-fb49 HEBREW LETTER SHIN WITH DAGESH
-fb4a HEBREW LETTER TAV WITH DAGESH
-fb4b HEBREW LETTER VAV WITH HOLAM
-fb4c HEBREW LETTER BET WITH RAFE
-fb4d HEBREW LETTER KAF WITH RAFE
-fb4e HEBREW LETTER PE WITH RAFE
-fb4f HEBREW LIGATURE ALEF LAMED
-fb50 ARABIC LETTER ALEF WASLA ISOLATED FORM
-fb51 ARABIC LETTER ALEF WASLA FINAL FORM
-fb52 ARABIC LETTER BEEH ISOLATED FORM
-fb53 ARABIC LETTER BEEH FINAL FORM
-fb54 ARABIC LETTER BEEH INITIAL FORM
-fb55 ARABIC LETTER BEEH MEDIAL FORM
-fb56 ARABIC LETTER PEH ISOLATED FORM
-fb57 ARABIC LETTER PEH FINAL FORM
-fb58 ARABIC LETTER PEH INITIAL FORM
-fb59 ARABIC LETTER PEH MEDIAL FORM
-fb5a ARABIC LETTER BEHEH ISOLATED FORM
-fb5b ARABIC LETTER BEHEH FINAL FORM
-fb5c ARABIC LETTER BEHEH INITIAL FORM
-fb5d ARABIC LETTER BEHEH MEDIAL FORM
-fb5e ARABIC LETTER TTEHEH ISOLATED FORM
-fb5f ARABIC LETTER TTEHEH FINAL FORM
-fb60 ARABIC LETTER TTEHEH INITIAL FORM
-fb61 ARABIC LETTER TTEHEH MEDIAL FORM
-fb62 ARABIC LETTER TEHEH ISOLATED FORM
-fb63 ARABIC LETTER TEHEH FINAL FORM
-fb64 ARABIC LETTER TEHEH INITIAL FORM
-fb65 ARABIC LETTER TEHEH MEDIAL FORM
-fb66 ARABIC LETTER TTEH ISOLATED FORM
-fb67 ARABIC LETTER TTEH FINAL FORM
-fb68 ARABIC LETTER TTEH INITIAL FORM
-fb69 ARABIC LETTER TTEH MEDIAL FORM
-fb6a ARABIC LETTER VEH ISOLATED FORM
-fb6b ARABIC LETTER VEH FINAL FORM
-fb6c ARABIC LETTER VEH INITIAL FORM
-fb6d ARABIC LETTER VEH MEDIAL FORM
-fb6e ARABIC LETTER PEHEH ISOLATED FORM
-fb6f ARABIC LETTER PEHEH FINAL FORM
-fb70 ARABIC LETTER PEHEH INITIAL FORM
-fb71 ARABIC LETTER PEHEH MEDIAL FORM
-fb72 ARABIC LETTER DYEH ISOLATED FORM
-fb73 ARABIC LETTER DYEH FINAL FORM
-fb74 ARABIC LETTER DYEH INITIAL FORM
-fb75 ARABIC LETTER DYEH MEDIAL FORM
-fb76 ARABIC LETTER NYEH ISOLATED FORM
-fb77 ARABIC LETTER NYEH FINAL FORM
-fb78 ARABIC LETTER NYEH INITIAL FORM
-fb79 ARABIC LETTER NYEH MEDIAL FORM
-fb7a ARABIC LETTER TCHEH ISOLATED FORM
-fb7b ARABIC LETTER TCHEH FINAL FORM
-fb7c ARABIC LETTER TCHEH INITIAL FORM
-fb7d ARABIC LETTER TCHEH MEDIAL FORM
-fb7e ARABIC LETTER TCHEHEH ISOLATED FORM
-fb7f ARABIC LETTER TCHEHEH FINAL FORM
-fb80 ARABIC LETTER TCHEHEH INITIAL FORM
-fb81 ARABIC LETTER TCHEHEH MEDIAL FORM
-fb82 ARABIC LETTER DDAHAL ISOLATED FORM
-fb83 ARABIC LETTER DDAHAL FINAL FORM
-fb84 ARABIC LETTER DAHAL ISOLATED FORM
-fb85 ARABIC LETTER DAHAL FINAL FORM
-fb86 ARABIC LETTER DUL ISOLATED FORM
-fb87 ARABIC LETTER DUL FINAL FORM
-fb88 ARABIC LETTER DDAL ISOLATED FORM
-fb89 ARABIC LETTER DDAL FINAL FORM
-fb8a ARABIC LETTER JEH ISOLATED FORM
-fb8b ARABIC LETTER JEH FINAL FORM
-fb8c ARABIC LETTER RREH ISOLATED FORM
-fb8d ARABIC LETTER RREH FINAL FORM
-fb8e ARABIC LETTER KEHEH ISOLATED FORM
-fb8f ARABIC LETTER KEHEH FINAL FORM
-fb90 ARABIC LETTER KEHEH INITIAL FORM
-fb91 ARABIC LETTER KEHEH MEDIAL FORM
-fb92 ARABIC LETTER GAF ISOLATED FORM
-fb93 ARABIC LETTER GAF FINAL FORM
-fb94 ARABIC LETTER GAF INITIAL FORM
-fb95 ARABIC LETTER GAF MEDIAL FORM
-fb96 ARABIC LETTER GUEH ISOLATED FORM
-fb97 ARABIC LETTER GUEH FINAL FORM
-fb98 ARABIC LETTER GUEH INITIAL FORM
-fb99 ARABIC LETTER GUEH MEDIAL FORM
-fb9a ARABIC LETTER NGOEH ISOLATED FORM
-fb9b ARABIC LETTER NGOEH FINAL FORM
-fb9c ARABIC LETTER NGOEH INITIAL FORM
-fb9d ARABIC LETTER NGOEH MEDIAL FORM
-fb9e ARABIC LETTER NOON GHUNNA ISOLATED FORM
-fb9f ARABIC LETTER NOON GHUNNA FINAL FORM
-fba0 ARABIC LETTER RNOON ISOLATED FORM
-fba1 ARABIC LETTER RNOON FINAL FORM
-fba2 ARABIC LETTER RNOON INITIAL FORM
-fba3 ARABIC LETTER RNOON MEDIAL FORM
-fba4 ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
-fba5 ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
-fba6 ARABIC LETTER HEH GOAL ISOLATED FORM
-fba7 ARABIC LETTER HEH GOAL FINAL FORM
-fba8 ARABIC LETTER HEH GOAL INITIAL FORM
-fba9 ARABIC LETTER HEH GOAL MEDIAL FORM
-fbaa ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
-fbab ARABIC LETTER HEH DOACHASHMEE FINAL FORM
-fbac ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
-fbad ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
-fbae ARABIC LETTER YEH BARREE ISOLATED FORM
-fbaf ARABIC LETTER YEH BARREE FINAL FORM
-fbb0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
-fbb1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
-fbd3 ARABIC LETTER NG ISOLATED FORM
-fbd4 ARABIC LETTER NG FINAL FORM
-fbd5 ARABIC LETTER NG INITIAL FORM
-fbd6 ARABIC LETTER NG MEDIAL FORM
-fbd7 ARABIC LETTER U ISOLATED FORM
-fbd8 ARABIC LETTER U FINAL FORM
-fbd9 ARABIC LETTER OE ISOLATED FORM
-fbda ARABIC LETTER OE FINAL FORM
-fbdb ARABIC LETTER YU ISOLATED FORM
-fbdc ARABIC LETTER YU FINAL FORM
-fbdd ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
-fbde ARABIC LETTER VE ISOLATED FORM
-fbdf ARABIC LETTER VE FINAL FORM
-fbe0 ARABIC LETTER KIRGHIZ OE ISOLATED FORM
-fbe1 ARABIC LETTER KIRGHIZ OE FINAL FORM
-fbe2 ARABIC LETTER KIRGHIZ YU ISOLATED FORM
-fbe3 ARABIC LETTER KIRGHIZ YU FINAL FORM
-fbe4 ARABIC LETTER E ISOLATED FORM
-fbe5 ARABIC LETTER E FINAL FORM
-fbe6 ARABIC LETTER E INITIAL FORM
-fbe7 ARABIC LETTER E MEDIAL FORM
-fbe8 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
-fbe9 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
-fbea ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
-fbeb ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
-fbec ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
-fbed ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
-fbee ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
-fbef ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
-fbf0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
-fbf1 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
-fbf2 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
-fbf3 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
-fbf4 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
-fbf5 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
-fbf6 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
-fbf7 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
-fbf8 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
-fbf9 ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-fbfa ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-fbfb ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
-fbfc ARABIC LETTER FARSI YEH ISOLATED FORM
-fbfd ARABIC LETTER FARSI YEH FINAL FORM
-fbfe ARABIC LETTER FARSI YEH INITIAL FORM
-fbff ARABIC LETTER FARSI YEH MEDIAL FORM
-fc00 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
-fc01 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
-fc02 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
-fc03 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-fc04 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
-fc05 ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
-fc06 ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
-fc07 ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
-fc08 ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
-fc09 ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
-fc0a ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
-fc0b ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
-fc0c ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
-fc0d ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
-fc0e ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
-fc0f ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
-fc10 ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
-fc11 ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
-fc12 ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
-fc13 ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
-fc14 ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
-fc15 ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
-fc16 ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
-fc17 ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
-fc18 ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
-fc19 ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
-fc1a ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
-fc1b ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
-fc1c ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
-fc1d ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
-fc1e ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
-fc1f ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
-fc20 ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
-fc21 ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
-fc22 ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
-fc23 ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
-fc24 ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
-fc25 ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
-fc26 ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
-fc27 ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
-fc28 ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
-fc29 ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
-fc2a ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
-fc2b ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
-fc2c ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
-fc2d ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
-fc2e ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
-fc2f ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
-fc30 ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
-fc31 ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
-fc32 ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
-fc33 ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
-fc34 ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
-fc35 ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
-fc36 ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
-fc37 ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
-fc38 ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
-fc39 ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
-fc3a ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
-fc3b ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
-fc3c ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
-fc3d ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
-fc3e ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
-fc3f ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
-fc40 ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
-fc41 ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
-fc42 ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
-fc43 ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
-fc44 ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
-fc45 ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
-fc46 ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
-fc47 ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
-fc48 ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
-fc49 ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
-fc4a ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
-fc4b ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
-fc4c ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
-fc4d ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
-fc4e ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
-fc4f ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
-fc50 ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
-fc51 ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
-fc52 ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
-fc53 ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
-fc54 ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
-fc55 ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
-fc56 ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
-fc57 ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
-fc58 ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
-fc59 ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
-fc5a ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
-fc5b ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
-fc5c ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
-fc5d ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
-fc5e ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
-fc5f ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
-fc60 ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
-fc61 ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
-fc62 ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
-fc63 ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
-fc64 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
-fc65 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
-fc66 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
-fc67 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
-fc68 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-fc69 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
-fc6a ARABIC LIGATURE BEH WITH REH FINAL FORM
-fc6b ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
-fc6c ARABIC LIGATURE BEH WITH MEEM FINAL FORM
-fc6d ARABIC LIGATURE BEH WITH NOON FINAL FORM
-fc6e ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
-fc6f ARABIC LIGATURE BEH WITH YEH FINAL FORM
-fc70 ARABIC LIGATURE TEH WITH REH FINAL FORM
-fc71 ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
-fc72 ARABIC LIGATURE TEH WITH MEEM FINAL FORM
-fc73 ARABIC LIGATURE TEH WITH NOON FINAL FORM
-fc74 ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
-fc75 ARABIC LIGATURE TEH WITH YEH FINAL FORM
-fc76 ARABIC LIGATURE THEH WITH REH FINAL FORM
-fc77 ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
-fc78 ARABIC LIGATURE THEH WITH MEEM FINAL FORM
-fc79 ARABIC LIGATURE THEH WITH NOON FINAL FORM
-fc7a ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
-fc7b ARABIC LIGATURE THEH WITH YEH FINAL FORM
-fc7c ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
-fc7d ARABIC LIGATURE FEH WITH YEH FINAL FORM
-fc7e ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
-fc7f ARABIC LIGATURE QAF WITH YEH FINAL FORM
-fc80 ARABIC LIGATURE KAF WITH ALEF FINAL FORM
-fc81 ARABIC LIGATURE KAF WITH LAM FINAL FORM
-fc82 ARABIC LIGATURE KAF WITH MEEM FINAL FORM
-fc83 ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
-fc84 ARABIC LIGATURE KAF WITH YEH FINAL FORM
-fc85 ARABIC LIGATURE LAM WITH MEEM FINAL FORM
-fc86 ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
-fc87 ARABIC LIGATURE LAM WITH YEH FINAL FORM
-fc88 ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
-fc89 ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
-fc8a ARABIC LIGATURE NOON WITH REH FINAL FORM
-fc8b ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
-fc8c ARABIC LIGATURE NOON WITH MEEM FINAL FORM
-fc8d ARABIC LIGATURE NOON WITH NOON FINAL FORM
-fc8e ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
-fc8f ARABIC LIGATURE NOON WITH YEH FINAL FORM
-fc90 ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
-fc91 ARABIC LIGATURE YEH WITH REH FINAL FORM
-fc92 ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
-fc93 ARABIC LIGATURE YEH WITH MEEM FINAL FORM
-fc94 ARABIC LIGATURE YEH WITH NOON FINAL FORM
-fc95 ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
-fc96 ARABIC LIGATURE YEH WITH YEH FINAL FORM
-fc97 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
-fc98 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
-fc99 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
-fc9a ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
-fc9b ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
-fc9c ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
-fc9d ARABIC LIGATURE BEH WITH HAH INITIAL FORM
-fc9e ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
-fc9f ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
-fca0 ARABIC LIGATURE BEH WITH HEH INITIAL FORM
-fca1 ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
-fca2 ARABIC LIGATURE TEH WITH HAH INITIAL FORM
-fca3 ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
-fca4 ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
-fca5 ARABIC LIGATURE TEH WITH HEH INITIAL FORM
-fca6 ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
-fca7 ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
-fca8 ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
-fca9 ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
-fcaa ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
-fcab ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
-fcac ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
-fcad ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
-fcae ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
-fcaf ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
-fcb0 ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
-fcb1 ARABIC LIGATURE SAD WITH HAH INITIAL FORM
-fcb2 ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
-fcb3 ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
-fcb4 ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
-fcb5 ARABIC LIGATURE DAD WITH HAH INITIAL FORM
-fcb6 ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
-fcb7 ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
-fcb8 ARABIC LIGATURE TAH WITH HAH INITIAL FORM
-fcb9 ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
-fcba ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
-fcbb ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
-fcbc ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
-fcbd ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
-fcbe ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
-fcbf ARABIC LIGATURE FEH WITH HAH INITIAL FORM
-fcc0 ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
-fcc1 ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
-fcc2 ARABIC LIGATURE QAF WITH HAH INITIAL FORM
-fcc3 ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
-fcc4 ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
-fcc5 ARABIC LIGATURE KAF WITH HAH INITIAL FORM
-fcc6 ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
-fcc7 ARABIC LIGATURE KAF WITH LAM INITIAL FORM
-fcc8 ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
-fcc9 ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
-fcca ARABIC LIGATURE LAM WITH HAH INITIAL FORM
-fccb ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
-fccc ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
-fccd ARABIC LIGATURE LAM WITH HEH INITIAL FORM
-fcce ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
-fccf ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
-fcd0 ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
-fcd1 ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
-fcd2 ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
-fcd3 ARABIC LIGATURE NOON WITH HAH INITIAL FORM
-fcd4 ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
-fcd5 ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
-fcd6 ARABIC LIGATURE NOON WITH HEH INITIAL FORM
-fcd7 ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
-fcd8 ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
-fcd9 ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
-fcda ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
-fcdb ARABIC LIGATURE YEH WITH HAH INITIAL FORM
-fcdc ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
-fcdd ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
-fcde ARABIC LIGATURE YEH WITH HEH INITIAL FORM
-fcdf ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
-fce0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
-fce1 ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
-fce2 ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
-fce3 ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
-fce4 ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
-fce5 ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
-fce6 ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
-fce7 ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
-fce8 ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
-fce9 ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
-fcea ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
-fceb ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
-fcec ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
-fced ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
-fcee ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
-fcef ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
-fcf0 ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
-fcf1 ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
-fcf2 ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
-fcf3 ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
-fcf4 ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
-fcf5 ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
-fcf6 ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
-fcf7 ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
-fcf8 ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
-fcf9 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
-fcfa ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
-fcfb ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
-fcfc ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
-fcfd ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
-fcfe ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
-fcff ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
-fd00 ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
-fd01 ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
-fd02 ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
-fd03 ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
-fd04 ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
-fd05 ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
-fd06 ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
-fd07 ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
-fd08 ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
-fd09 ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
-fd0a ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
-fd0b ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
-fd0c ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
-fd0d ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
-fd0e ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
-fd0f ARABIC LIGATURE SAD WITH REH ISOLATED FORM
-fd10 ARABIC LIGATURE DAD WITH REH ISOLATED FORM
-fd11 ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
-fd12 ARABIC LIGATURE TAH WITH YEH FINAL FORM
-fd13 ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
-fd14 ARABIC LIGATURE AIN WITH YEH FINAL FORM
-fd15 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
-fd16 ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
-fd17 ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
-fd18 ARABIC LIGATURE SEEN WITH YEH FINAL FORM
-fd19 ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
-fd1a ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
-fd1b ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
-fd1c ARABIC LIGATURE HAH WITH YEH FINAL FORM
-fd1d ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
-fd1e ARABIC LIGATURE JEEM WITH YEH FINAL FORM
-fd1f ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
-fd20 ARABIC LIGATURE KHAH WITH YEH FINAL FORM
-fd21 ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
-fd22 ARABIC LIGATURE SAD WITH YEH FINAL FORM
-fd23 ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
-fd24 ARABIC LIGATURE DAD WITH YEH FINAL FORM
-fd25 ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
-fd26 ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
-fd27 ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
-fd28 ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
-fd29 ARABIC LIGATURE SHEEN WITH REH FINAL FORM
-fd2a ARABIC LIGATURE SEEN WITH REH FINAL FORM
-fd2b ARABIC LIGATURE SAD WITH REH FINAL FORM
-fd2c ARABIC LIGATURE DAD WITH REH FINAL FORM
-fd2d ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
-fd2e ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
-fd2f ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
-fd30 ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
-fd31 ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
-fd32 ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
-fd33 ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
-fd34 ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
-fd35 ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
-fd36 ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
-fd37 ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
-fd38 ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
-fd39 ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
-fd3a ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
-fd3b ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
-fd3c ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
-fd3d ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
-fd3e ORNATE LEFT PARENTHESIS
-fd3f ORNATE RIGHT PARENTHESIS
-fd50 ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
-fd51 ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
-fd52 ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
-fd53 ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
-fd54 ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
-fd55 ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
-fd56 ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
-fd57 ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
-fd58 ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
-fd59 ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
-fd5a ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
-fd5b ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-fd5c ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
-fd5d ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
-fd5e ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
-fd5f ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
-fd60 ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
-fd61 ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
-fd62 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
-fd63 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
-fd64 ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
-fd65 ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
-fd66 ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
-fd67 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
-fd68 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
-fd69 ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
-fd6a ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
-fd6b ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
-fd6c ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
-fd6d ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
-fd6e ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
-fd6f ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
-fd70 ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
-fd71 ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
-fd72 ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
-fd73 ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
-fd74 ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
-fd75 ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
-fd76 ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
-fd77 ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
-fd78 ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-fd79 ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
-fd7a ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
-fd7b ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-fd7c ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
-fd7d ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
-fd7e ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
-fd7f ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
-fd80 ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
-fd81 ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
-fd82 ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
-fd83 ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
-fd84 ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
-fd85 ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
-fd86 ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
-fd87 ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
-fd88 ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
-fd89 ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
-fd8a ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
-fd8b ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
-fd8c ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
-fd8d ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
-fd8e ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
-fd8f ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
-fd92 ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
-fd93 ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
-fd94 ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
-fd95 ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
-fd96 ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
-fd97 ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
-fd98 ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
-fd99 ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
-fd9a ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
-fd9b ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
-fd9c ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
-fd9d ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
-fd9e ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
-fd9f ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
-fda0 ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
-fda1 ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
-fda2 ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
-fda3 ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
-fda4 ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-fda5 ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
-fda6 ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
-fda7 ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
-fda8 ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
-fda9 ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
-fdaa ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
-fdab ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
-fdac ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
-fdad ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
-fdae ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
-fdaf ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
-fdb0 ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
-fdb1 ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
-fdb2 ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
-fdb3 ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
-fdb4 ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
-fdb5 ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
-fdb6 ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
-fdb7 ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
-fdb8 ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
-fdb9 ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
-fdba ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
-fdbb ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
-fdbc ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
-fdbd ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
-fdbe ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
-fdbf ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
-fdc0 ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
-fdc1 ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
-fdc2 ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
-fdc3 ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
-fdc4 ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
-fdc5 ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
-fdc6 ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
-fdc7 ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
-fdf0 ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
-fdf1 ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
-fdf2 ARABIC LIGATURE ALLAH ISOLATED FORM
-fdf3 ARABIC LIGATURE AKBAR ISOLATED FORM
-fdf4 ARABIC LIGATURE MOHAMMAD ISOLATED FORM
-fdf5 ARABIC LIGATURE SALAM ISOLATED FORM
-fdf6 ARABIC LIGATURE RASOUL ISOLATED FORM
-fdf7 ARABIC LIGATURE ALAYHE ISOLATED FORM
-fdf8 ARABIC LIGATURE WASALLAM ISOLATED FORM
-fdf9 ARABIC LIGATURE SALLA ISOLATED FORM
-fdfa ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
-fdfb ARABIC LIGATURE JALLAJALALOUHOU
-fe20 COMBINING LIGATURE LEFT HALF
-fe21 COMBINING LIGATURE RIGHT HALF
-fe22 COMBINING DOUBLE TILDE LEFT HALF
-fe23 COMBINING DOUBLE TILDE RIGHT HALF
-fe30 PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
-fe31 PRESENTATION FORM FOR VERTICAL EM DASH
-fe32 PRESENTATION FORM FOR VERTICAL EN DASH
-fe33 PRESENTATION FORM FOR VERTICAL LOW LINE
-fe34 PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
-fe35 PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
-fe36 PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
-fe37 PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
-fe38 PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
-fe39 PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
-fe3a PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
-fe3b PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
-fe3c PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
-fe3d PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
-fe3e PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
-fe3f PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
-fe40 PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
-fe41 PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
-fe42 PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
-fe43 PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
-fe44 PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
-fe49 DASHED OVERLINE
-fe4a CENTRELINE OVERLINE
-fe4b WAVY OVERLINE
-fe4c DOUBLE WAVY OVERLINE
-fe4d DASHED LOW LINE
-fe4e CENTRELINE LOW LINE
-fe4f WAVY LOW LINE
-fe50 SMALL COMMA
-fe51 SMALL IDEOGRAPHIC COMMA
-fe52 SMALL FULL STOP
-fe54 SMALL SEMICOLON
-fe55 SMALL COLON
-fe56 SMALL QUESTION MARK
-fe57 SMALL EXCLAMATION MARK
-fe58 SMALL EM DASH
-fe59 SMALL LEFT PARENTHESIS
-fe5a SMALL RIGHT PARENTHESIS
-fe5b SMALL LEFT CURLY BRACKET
-fe5c SMALL RIGHT CURLY BRACKET
-fe5d SMALL LEFT TORTOISE SHELL BRACKET
-fe5e SMALL RIGHT TORTOISE SHELL BRACKET
-fe5f SMALL NUMBER SIGN
-fe60 SMALL AMPERSAND
-fe61 SMALL ASTERISK
-fe62 SMALL PLUS SIGN
-fe63 SMALL HYPHEN-MINUS
-fe64 SMALL LESS-THAN SIGN
-fe65 SMALL GREATER-THAN SIGN
-fe66 SMALL EQUALS SIGN
-fe68 SMALL REVERSE SOLIDUS
-fe69 SMALL DOLLAR SIGN
-fe6a SMALL PERCENT SIGN
-fe6b SMALL COMMERCIAL AT
-fe70 ARABIC FATHATAN ISOLATED FORM
-fe71 ARABIC TATWEEL WITH FATHATAN ABOVE
-fe72 ARABIC DAMMATAN ISOLATED FORM
-fe74 ARABIC KASRATAN ISOLATED FORM
-fe76 ARABIC FATHA ISOLATED FORM
-fe77 ARABIC FATHA MEDIAL FORM
-fe78 ARABIC DAMMA ISOLATED FORM
-fe79 ARABIC DAMMA MEDIAL FORM
-fe7a ARABIC KASRA ISOLATED FORM
-fe7b ARABIC KASRA MEDIAL FORM
-fe7c ARABIC SHADDA ISOLATED FORM
-fe7d ARABIC SHADDA MEDIAL FORM
-fe7e ARABIC SUKUN ISOLATED FORM
-fe7f ARABIC SUKUN MEDIAL FORM
-fe80 ARABIC LETTER HAMZA ISOLATED FORM
-fe81 ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-fe82 ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-fe83 ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-fe84 ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-fe85 ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-fe86 ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
-fe87 ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
-fe88 ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
-fe89 ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
-fe8a ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
-fe8b ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-fe8c ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
-fe8d ARABIC LETTER ALEF ISOLATED FORM
-fe8e ARABIC LETTER ALEF FINAL FORM
-fe8f ARABIC LETTER BEH ISOLATED FORM
-fe90 ARABIC LETTER BEH FINAL FORM
-fe91 ARABIC LETTER BEH INITIAL FORM
-fe92 ARABIC LETTER BEH MEDIAL FORM
-fe93 ARABIC LETTER TEH MARBUTA ISOLATED FORM
-fe94 ARABIC LETTER TEH MARBUTA FINAL FORM
-fe95 ARABIC LETTER TEH ISOLATED FORM
-fe96 ARABIC LETTER TEH FINAL FORM
-fe97 ARABIC LETTER TEH INITIAL FORM
-fe98 ARABIC LETTER TEH MEDIAL FORM
-fe99 ARABIC LETTER THEH ISOLATED FORM
-fe9a ARABIC LETTER THEH FINAL FORM
-fe9b ARABIC LETTER THEH INITIAL FORM
-fe9c ARABIC LETTER THEH MEDIAL FORM
-fe9d ARABIC LETTER JEEM ISOLATED FORM
-fe9e ARABIC LETTER JEEM FINAL FORM
-fe9f ARABIC LETTER JEEM INITIAL FORM
-fea0 ARABIC LETTER JEEM MEDIAL FORM
-fea1 ARABIC LETTER HAH ISOLATED FORM
-fea2 ARABIC LETTER HAH FINAL FORM
-fea3 ARABIC LETTER HAH INITIAL FORM
-fea4 ARABIC LETTER HAH MEDIAL FORM
-fea5 ARABIC LETTER KHAH ISOLATED FORM
-fea6 ARABIC LETTER KHAH FINAL FORM
-fea7 ARABIC LETTER KHAH INITIAL FORM
-fea8 ARABIC LETTER KHAH MEDIAL FORM
-fea9 ARABIC LETTER DAL ISOLATED FORM
-feaa ARABIC LETTER DAL FINAL FORM
-feab ARABIC LETTER THAL ISOLATED FORM
-feac ARABIC LETTER THAL FINAL FORM
-fead ARABIC LETTER REH ISOLATED FORM
-feae ARABIC LETTER REH FINAL FORM
-feaf ARABIC LETTER ZAIN ISOLATED FORM
-feb0 ARABIC LETTER ZAIN FINAL FORM
-feb1 ARABIC LETTER SEEN ISOLATED FORM
-feb2 ARABIC LETTER SEEN FINAL FORM
-feb3 ARABIC LETTER SEEN INITIAL FORM
-feb4 ARABIC LETTER SEEN MEDIAL FORM
-feb5 ARABIC LETTER SHEEN ISOLATED FORM
-feb6 ARABIC LETTER SHEEN FINAL FORM
-feb7 ARABIC LETTER SHEEN INITIAL FORM
-feb8 ARABIC LETTER SHEEN MEDIAL FORM
-feb9 ARABIC LETTER SAD ISOLATED FORM
-feba ARABIC LETTER SAD FINAL FORM
-febb ARABIC LETTER SAD INITIAL FORM
-febc ARABIC LETTER SAD MEDIAL FORM
-febd ARABIC LETTER DAD ISOLATED FORM
-febe ARABIC LETTER DAD FINAL FORM
-febf ARABIC LETTER DAD INITIAL FORM
-fec0 ARABIC LETTER DAD MEDIAL FORM
-fec1 ARABIC LETTER TAH ISOLATED FORM
-fec2 ARABIC LETTER TAH FINAL FORM
-fec3 ARABIC LETTER TAH INITIAL FORM
-fec4 ARABIC LETTER TAH MEDIAL FORM
-fec5 ARABIC LETTER ZAH ISOLATED FORM
-fec6 ARABIC LETTER ZAH FINAL FORM
-fec7 ARABIC LETTER ZAH INITIAL FORM
-fec8 ARABIC LETTER ZAH MEDIAL FORM
-fec9 ARABIC LETTER AIN ISOLATED FORM
-feca ARABIC LETTER AIN FINAL FORM
-fecb ARABIC LETTER AIN INITIAL FORM
-fecc ARABIC LETTER AIN MEDIAL FORM
-fecd ARABIC LETTER GHAIN ISOLATED FORM
-fece ARABIC LETTER GHAIN FINAL FORM
-fecf ARABIC LETTER GHAIN INITIAL FORM
-fed0 ARABIC LETTER GHAIN MEDIAL FORM
-fed1 ARABIC LETTER FEH ISOLATED FORM
-fed2 ARABIC LETTER FEH FINAL FORM
-fed3 ARABIC LETTER FEH INITIAL FORM
-fed4 ARABIC LETTER FEH MEDIAL FORM
-fed5 ARABIC LETTER QAF ISOLATED FORM
-fed6 ARABIC LETTER QAF FINAL FORM
-fed7 ARABIC LETTER QAF INITIAL FORM
-fed8 ARABIC LETTER QAF MEDIAL FORM
-fed9 ARABIC LETTER KAF ISOLATED FORM
-feda ARABIC LETTER KAF FINAL FORM
-fedb ARABIC LETTER KAF INITIAL FORM
-fedc ARABIC LETTER KAF MEDIAL FORM
-fedd ARABIC LETTER LAM ISOLATED FORM
-fede ARABIC LETTER LAM FINAL FORM
-fedf ARABIC LETTER LAM INITIAL FORM
-fee0 ARABIC LETTER LAM MEDIAL FORM
-fee1 ARABIC LETTER MEEM ISOLATED FORM
-fee2 ARABIC LETTER MEEM FINAL FORM
-fee3 ARABIC LETTER MEEM INITIAL FORM
-fee4 ARABIC LETTER MEEM MEDIAL FORM
-fee5 ARABIC LETTER NOON ISOLATED FORM
-fee6 ARABIC LETTER NOON FINAL FORM
-fee7 ARABIC LETTER NOON INITIAL FORM
-fee8 ARABIC LETTER NOON MEDIAL FORM
-fee9 ARABIC LETTER HEH ISOLATED FORM
-feea ARABIC LETTER HEH FINAL FORM
-feeb ARABIC LETTER HEH INITIAL FORM
-feec ARABIC LETTER HEH MEDIAL FORM
-feed ARABIC LETTER WAW ISOLATED FORM
-feee ARABIC LETTER WAW FINAL FORM
-feef ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-fef0 ARABIC LETTER ALEF MAKSURA FINAL FORM
-fef1 ARABIC LETTER YEH ISOLATED FORM
-fef2 ARABIC LETTER YEH FINAL FORM
-fef3 ARABIC LETTER YEH INITIAL FORM
-fef4 ARABIC LETTER YEH MEDIAL FORM
-fef5 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-fef6 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-fef7 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-fef8 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-fef9 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
-fefa ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
-fefb ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-fefc ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-feff ZERO WIDTH NO-BREAK SPACE
-ff01 FULLWIDTH EXCLAMATION MARK
-ff02 FULLWIDTH QUOTATION MARK
-ff03 FULLWIDTH NUMBER SIGN
-ff04 FULLWIDTH DOLLAR SIGN
-ff05 FULLWIDTH PERCENT SIGN
-ff06 FULLWIDTH AMPERSAND
-ff07 FULLWIDTH APOSTROPHE
-ff08 FULLWIDTH LEFT PARENTHESIS
-ff09 FULLWIDTH RIGHT PARENTHESIS
-ff0a FULLWIDTH ASTERISK
-ff0b FULLWIDTH PLUS SIGN
-ff0c FULLWIDTH COMMA
-ff0d FULLWIDTH HYPHEN-MINUS
-ff0e FULLWIDTH FULL STOP
-ff0f FULLWIDTH SOLIDUS
-ff10 FULLWIDTH DIGIT ZERO
-ff11 FULLWIDTH DIGIT ONE
-ff12 FULLWIDTH DIGIT TWO
-ff13 FULLWIDTH DIGIT THREE
-ff14 FULLWIDTH DIGIT FOUR
-ff15 FULLWIDTH DIGIT FIVE
-ff16 FULLWIDTH DIGIT SIX
-ff17 FULLWIDTH DIGIT SEVEN
-ff18 FULLWIDTH DIGIT EIGHT
-ff19 FULLWIDTH DIGIT NINE
-ff1a FULLWIDTH COLON
-ff1b FULLWIDTH SEMICOLON
-ff1c FULLWIDTH LESS-THAN SIGN
-ff1d FULLWIDTH EQUALS SIGN
-ff1e FULLWIDTH GREATER-THAN SIGN
-ff1f FULLWIDTH QUESTION MARK
-ff20 FULLWIDTH COMMERCIAL AT
-ff21 FULLWIDTH LATIN CAPITAL LETTER A
-ff22 FULLWIDTH LATIN CAPITAL LETTER B
-ff23 FULLWIDTH LATIN CAPITAL LETTER C
-ff24 FULLWIDTH LATIN CAPITAL LETTER D
-ff25 FULLWIDTH LATIN CAPITAL LETTER E
-ff26 FULLWIDTH LATIN CAPITAL LETTER F
-ff27 FULLWIDTH LATIN CAPITAL LETTER G
-ff28 FULLWIDTH LATIN CAPITAL LETTER H
-ff29 FULLWIDTH LATIN CAPITAL LETTER I
-ff2a FULLWIDTH LATIN CAPITAL LETTER J
-ff2b FULLWIDTH LATIN CAPITAL LETTER K
-ff2c FULLWIDTH LATIN CAPITAL LETTER L
-ff2d FULLWIDTH LATIN CAPITAL LETTER M
-ff2e FULLWIDTH LATIN CAPITAL LETTER N
-ff2f FULLWIDTH LATIN CAPITAL LETTER O
-ff30 FULLWIDTH LATIN CAPITAL LETTER P
-ff31 FULLWIDTH LATIN CAPITAL LETTER Q
-ff32 FULLWIDTH LATIN CAPITAL LETTER R
-ff33 FULLWIDTH LATIN CAPITAL LETTER S
-ff34 FULLWIDTH LATIN CAPITAL LETTER T
-ff35 FULLWIDTH LATIN CAPITAL LETTER U
-ff36 FULLWIDTH LATIN CAPITAL LETTER V
-ff37 FULLWIDTH LATIN CAPITAL LETTER W
-ff38 FULLWIDTH LATIN CAPITAL LETTER X
-ff39 FULLWIDTH LATIN CAPITAL LETTER Y
-ff3a FULLWIDTH LATIN CAPITAL LETTER Z
-ff3b FULLWIDTH LEFT SQUARE BRACKET
-ff3c FULLWIDTH REVERSE SOLIDUS
-ff3d FULLWIDTH RIGHT SQUARE BRACKET
-ff3e FULLWIDTH CIRCUMFLEX ACCENT
-ff3f FULLWIDTH LOW LINE
-ff40 FULLWIDTH GRAVE ACCENT
-ff41 FULLWIDTH LATIN SMALL LETTER A
-ff42 FULLWIDTH LATIN SMALL LETTER B
-ff43 FULLWIDTH LATIN SMALL LETTER C
-ff44 FULLWIDTH LATIN SMALL LETTER D
-ff45 FULLWIDTH LATIN SMALL LETTER E
-ff46 FULLWIDTH LATIN SMALL LETTER F
-ff47 FULLWIDTH LATIN SMALL LETTER G
-ff48 FULLWIDTH LATIN SMALL LETTER H
-ff49 FULLWIDTH LATIN SMALL LETTER I
-ff4a FULLWIDTH LATIN SMALL LETTER J
-ff4b FULLWIDTH LATIN SMALL LETTER K
-ff4c FULLWIDTH LATIN SMALL LETTER L
-ff4d FULLWIDTH LATIN SMALL LETTER M
-ff4e FULLWIDTH LATIN SMALL LETTER N
-ff4f FULLWIDTH LATIN SMALL LETTER O
-ff50 FULLWIDTH LATIN SMALL LETTER P
-ff51 FULLWIDTH LATIN SMALL LETTER Q
-ff52 FULLWIDTH LATIN SMALL LETTER R
-ff53 FULLWIDTH LATIN SMALL LETTER S
-ff54 FULLWIDTH LATIN SMALL LETTER T
-ff55 FULLWIDTH LATIN SMALL LETTER U
-ff56 FULLWIDTH LATIN SMALL LETTER V
-ff57 FULLWIDTH LATIN SMALL LETTER W
-ff58 FULLWIDTH LATIN SMALL LETTER X
-ff59 FULLWIDTH LATIN SMALL LETTER Y
-ff5a FULLWIDTH LATIN SMALL LETTER Z
-ff5b FULLWIDTH LEFT CURLY BRACKET
-ff5c FULLWIDTH VERTICAL LINE
-ff5d FULLWIDTH RIGHT CURLY BRACKET
-ff5e FULLWIDTH TILDE
-ff61 HALFWIDTH IDEOGRAPHIC FULL STOP
-ff62 HALFWIDTH LEFT CORNER BRACKET
-ff63 HALFWIDTH RIGHT CORNER BRACKET
-ff64 HALFWIDTH IDEOGRAPHIC COMMA
-ff65 HALFWIDTH KATAKANA MIDDLE DOT
-ff66 HALFWIDTH KATAKANA LETTER WO
-ff67 HALFWIDTH KATAKANA LETTER SMALL A
-ff68 HALFWIDTH KATAKANA LETTER SMALL I
-ff69 HALFWIDTH KATAKANA LETTER SMALL U
-ff6a HALFWIDTH KATAKANA LETTER SMALL E
-ff6b HALFWIDTH KATAKANA LETTER SMALL O
-ff6c HALFWIDTH KATAKANA LETTER SMALL YA
-ff6d HALFWIDTH KATAKANA LETTER SMALL YU
-ff6e HALFWIDTH KATAKANA LETTER SMALL YO
-ff6f HALFWIDTH KATAKANA LETTER SMALL TU
-ff70 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-ff71 HALFWIDTH KATAKANA LETTER A
-ff72 HALFWIDTH KATAKANA LETTER I
-ff73 HALFWIDTH KATAKANA LETTER U
-ff74 HALFWIDTH KATAKANA LETTER E
-ff75 HALFWIDTH KATAKANA LETTER O
-ff76 HALFWIDTH KATAKANA LETTER KA
-ff77 HALFWIDTH KATAKANA LETTER KI
-ff78 HALFWIDTH KATAKANA LETTER KU
-ff79 HALFWIDTH KATAKANA LETTER KE
-ff7a HALFWIDTH KATAKANA LETTER KO
-ff7b HALFWIDTH KATAKANA LETTER SA
-ff7c HALFWIDTH KATAKANA LETTER SI
-ff7d HALFWIDTH KATAKANA LETTER SU
-ff7e HALFWIDTH KATAKANA LETTER SE
-ff7f HALFWIDTH KATAKANA LETTER SO
-ff80 HALFWIDTH KATAKANA LETTER TA
-ff81 HALFWIDTH KATAKANA LETTER TI
-ff82 HALFWIDTH KATAKANA LETTER TU
-ff83 HALFWIDTH KATAKANA LETTER TE
-ff84 HALFWIDTH KATAKANA LETTER TO
-ff85 HALFWIDTH KATAKANA LETTER NA
-ff86 HALFWIDTH KATAKANA LETTER NI
-ff87 HALFWIDTH KATAKANA LETTER NU
-ff88 HALFWIDTH KATAKANA LETTER NE
-ff89 HALFWIDTH KATAKANA LETTER NO
-ff8a HALFWIDTH KATAKANA LETTER HA
-ff8b HALFWIDTH KATAKANA LETTER HI
-ff8c HALFWIDTH KATAKANA LETTER HU
-ff8d HALFWIDTH KATAKANA LETTER HE
-ff8e HALFWIDTH KATAKANA LETTER HO
-ff8f HALFWIDTH KATAKANA LETTER MA
-ff90 HALFWIDTH KATAKANA LETTER MI
-ff91 HALFWIDTH KATAKANA LETTER MU
-ff92 HALFWIDTH KATAKANA LETTER ME
-ff93 HALFWIDTH KATAKANA LETTER MO
-ff94 HALFWIDTH KATAKANA LETTER YA
-ff95 HALFWIDTH KATAKANA LETTER YU
-ff96 HALFWIDTH KATAKANA LETTER YO
-ff97 HALFWIDTH KATAKANA LETTER RA
-ff98 HALFWIDTH KATAKANA LETTER RI
-ff99 HALFWIDTH KATAKANA LETTER RU
-ff9a HALFWIDTH KATAKANA LETTER RE
-ff9b HALFWIDTH KATAKANA LETTER RO
-ff9c HALFWIDTH KATAKANA LETTER WA
-ff9d HALFWIDTH KATAKANA LETTER N
-ff9e HALFWIDTH KATAKANA VOICED SOUND MARK
-ff9f HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-ffa0 HALFWIDTH HANGUL FILLER
-ffa1 HALFWIDTH HANGUL LETTER KIYEOK
-ffa2 HALFWIDTH HANGUL LETTER SSANGKIYEOK
-ffa3 HALFWIDTH HANGUL LETTER KIYEOK-SIOS
-ffa4 HALFWIDTH HANGUL LETTER NIEUN
-ffa5 HALFWIDTH HANGUL LETTER NIEUN-CIEUC
-ffa6 HALFWIDTH HANGUL LETTER NIEUN-HIEUH
-ffa7 HALFWIDTH HANGUL LETTER TIKEUT
-ffa8 HALFWIDTH HANGUL LETTER SSANGTIKEUT
-ffa9 HALFWIDTH HANGUL LETTER RIEUL
-ffaa HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
-ffab HALFWIDTH HANGUL LETTER RIEUL-MIEUM
-ffac HALFWIDTH HANGUL LETTER RIEUL-PIEUP
-ffad HALFWIDTH HANGUL LETTER RIEUL-SIOS
-ffae HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
-ffaf HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
-ffb0 HALFWIDTH HANGUL LETTER RIEUL-HIEUH
-ffb1 HALFWIDTH HANGUL LETTER MIEUM
-ffb2 HALFWIDTH HANGUL LETTER PIEUP
-ffb3 HALFWIDTH HANGUL LETTER SSANGPIEUP
-ffb4 HALFWIDTH HANGUL LETTER PIEUP-SIOS
-ffb5 HALFWIDTH HANGUL LETTER SIOS
-ffb6 HALFWIDTH HANGUL LETTER SSANGSIOS
-ffb7 HALFWIDTH HANGUL LETTER IEUNG
-ffb8 HALFWIDTH HANGUL LETTER CIEUC
-ffb9 HALFWIDTH HANGUL LETTER SSANGCIEUC
-ffba HALFWIDTH HANGUL LETTER CHIEUCH
-ffbb HALFWIDTH HANGUL LETTER KHIEUKH
-ffbc HALFWIDTH HANGUL LETTER THIEUTH
-ffbd HALFWIDTH HANGUL LETTER PHIEUPH
-ffbe HALFWIDTH HANGUL LETTER HIEUH
-ffc2 HALFWIDTH HANGUL LETTER A
-ffc3 HALFWIDTH HANGUL LETTER AE
-ffc4 HALFWIDTH HANGUL LETTER YA
-ffc5 HALFWIDTH HANGUL LETTER YAE
-ffc6 HALFWIDTH HANGUL LETTER EO
-ffc7 HALFWIDTH HANGUL LETTER E
-ffca HALFWIDTH HANGUL LETTER YEO
-ffcb HALFWIDTH HANGUL LETTER YE
-ffcc HALFWIDTH HANGUL LETTER O
-ffcd HALFWIDTH HANGUL LETTER WA
-ffce HALFWIDTH HANGUL LETTER WAE
-ffcf HALFWIDTH HANGUL LETTER OE
-ffd2 HALFWIDTH HANGUL LETTER YO
-ffd3 HALFWIDTH HANGUL LETTER U
-ffd4 HALFWIDTH HANGUL LETTER WEO
-ffd5 HALFWIDTH HANGUL LETTER WE
-ffd6 HALFWIDTH HANGUL LETTER WI
-ffd7 HALFWIDTH HANGUL LETTER YU
-ffda HALFWIDTH HANGUL LETTER EU
-ffdb HALFWIDTH HANGUL LETTER YI
-ffdc HALFWIDTH HANGUL LETTER I
-ffe0 FULLWIDTH CENT SIGN
-ffe1 FULLWIDTH POUND SIGN
-ffe2 FULLWIDTH NOT SIGN
-ffe3 FULLWIDTH MACRON
-ffe4 FULLWIDTH BROKEN BAR
-ffe5 FULLWIDTH YEN SIGN
-ffe6 FULLWIDTH WON SIGN
-ffe8 HALFWIDTH FORMS LIGHT VERTICAL
-ffe9 HALFWIDTH LEFTWARDS ARROW
-ffea HALFWIDTH UPWARDS ARROW
-ffeb HALFWIDTH RIGHTWARDS ARROW
-ffec HALFWIDTH DOWNWARDS ARROW
-ffed HALFWIDTH BLACK SQUARE
-ffee HALFWIDTH WHITE CIRCLE
-fff9 INTERLINEAR ANNOTATION ANCHOR
-fffa INTERLINEAR ANNOTATION SEPARATOR
-fffb INTERLINEAR ANNOTATION TERMINATOR
-fffc OBJECT REPLACEMENT CHARACTER
-fffd REPLACEMENT CHARACTER
-f0000 ffffd <Plane 15 Private Use, First>
-100000 10fffd <Plane 16 Private Use, First>
-END
diff --git a/contrib/perl5/lib/unicode/Names.txt b/contrib/perl5/lib/unicode/Names.txt
deleted file mode 100644
index aa3dce0..0000000
--- a/contrib/perl5/lib/unicode/Names.txt
+++ /dev/null
@@ -1,17271 +0,0 @@
-@@@ The Unicode Standard 3.0
-@@@+ Final Draft UC3M990825.lst
- More annotation fixes for Tibetan.
- Annotation added for 2231..2233.
-@@ 0000 C0 Controls and Basic Latin (Basic Latin) 007F
-@ C0 controls
-@+ Alias names are those for ISO 6429.
-0000 <control>
- = NULL
-0001 <control>
- = START OF HEADING
-0002 <control>
- = START OF TEXT
-0003 <control>
- = END OF TEXT
-0004 <control>
- = END OF TRANSMISSION
-0005 <control>
- = ENQUIRY
-0006 <control>
- = ACKNOWLEDGE
-0007 <control>
- = BELL
-0008 <control>
- = BACKSPACE
-0009 <control>
- = HORIZONTAL TABULATION
-000A <control>
- = LINE FEED
-000B <control>
- = VERTICAL TABULATION
-000C <control>
- = FORM FEED
-000D <control>
- = CARRIAGE RETURN
-000E <control>
- = SHIFT OUT
-000F <control>
- = SHIFT IN
-0010 <control>
- = DATA LINK ESCAPE
-0011 <control>
- = DEVICE CONTROL ONE
-0012 <control>
- = DEVICE CONTROL TWO
-0013 <control>
- = DEVICE CONTROL THREE
-0014 <control>
- = DEVICE CONTROL FOUR
-0015 <control>
- = NEGATIVE ACKNOWLEDGE
-0016 <control>
- = SYNCHRONOUS IDLE
-0017 <control>
- = END OF TRANSMISSION BLOCK
-0018 <control>
- = CANCEL
-0019 <control>
- = END OF MEDIUM
-001A <control>
- = SUBSTITUTE
- x (replacement character - FFFD)
-001B <control>
- = ESCAPE
-001C <control>
- = FILE SEPARATOR
-001D <control>
- = GROUP SEPARATOR
-001E <control>
- = RECORD SEPARATOR
-001F <control>
- = UNIT SEPARATOR
-@ ASCII
-0020 SPACE
- * sometimes considered a control code
- * other space characters: 2000-200A
- x (no-break space - 00A0)
- x (zero width space - 200B)
- x (ideographic space - 3000)
- x (zero width no-break space - FEFF)
-0021 EXCLAMATION MARK
- = factorial
- = bang
- x (inverted exclamation mark - 00A1)
- x (latin letter retroflex click - 01C3)
- x (double exclamation mark - 203C)
- x (interrobang - 203D)
- x (heavy exclamation mark ornament - 2762)
-0022 QUOTATION MARK
- = APL quote
- * neutral (vertical), used as opening or closing quotation mark
- * preferred characters in English for paired quotation marks are 201C & 201D
- x (modifier letter double prime - 02BA)
- x (combining double acute accent - 030B)
- x (combining double vertical line above - 030E)
- x (double prime - 2033)
- x (ditto mark - 3003)
-0023 NUMBER SIGN
- = pound sign, hash, crosshatch, octothorpe
-0024 DOLLAR SIGN
- = milreis, escudo
- * glyph may have one or two vertical bars
- * other currency symbol characters: 20A0-20AF
- x (currency sign - 00A4)
-0025 PERCENT SIGN
- x (arabic percent sign - 066A)
- x (per mille sign - 2030)
- x (per ten thousand sign - 2031)
-0026 AMPERSAND
-0027 APOSTROPHE
- = APOSTROPHE-QUOTE
- * neutral (vertical) glyph having mixed usage
- * preferred character for apostrophe is 2019
- * preferred characters in English for paired quotation marks are 2018 & 2019
- x (modifier letter prime - 02B9)
- x (modifier letter apostrophe - 02BC)
- x (modifier letter vertical line - 02C8)
- x (combining acute accent - 0301)
- x (prime - 2032)
-0028 LEFT PARENTHESIS
- = OPENING PARENTHESIS
-0029 RIGHT PARENTHESIS
- = CLOSING PARENTHESIS
- * see discussion on semantics of paired bracketing characters
-002A ASTERISK
- = star (on phone keypads)
- x (arabic five pointed star - 066D)
- x (asterisk operator - 2217)
- x (heavy asterisk - 2731)
-002B PLUS SIGN
-002C COMMA
- = decimal separator
- x (arabic comma - 060C)
- x (single low-9 quotation mark - 201A)
- x (ideographic comma - 3001)
-002D HYPHEN-MINUS
- = hyphen or minus sign
- * used for either hyphen or minus sign
- x (hyphen - 2010)
- x (non-breaking hyphen - 2011)
- x (figure dash - 2012)
- x (en dash - 2013)
- x (minus sign - 2212)
-002E FULL STOP
- = PERIOD
- = dot, decimal point
- * may be rendered as a raised decimal point in old style numbers
- x (arabic full stop - 06D4)
- x (ideographic full stop - 3002)
-002F SOLIDUS
- = SLASH
- = virgule, shilling (British)
- x (latin letter dental click - 01C0)
- x (combining long solidus overlay - 0338)
- x (fraction slash - 2044)
- x (division slash - 2215)
-0030 DIGIT ZERO
-0031 DIGIT ONE
-0032 DIGIT TWO
-0033 DIGIT THREE
-0034 DIGIT FOUR
-0035 DIGIT FIVE
-0036 DIGIT SIX
-0037 DIGIT SEVEN
-0038 DIGIT EIGHT
-0039 DIGIT NINE
-003A COLON
- x (armenian full stop - 0589)
- x (ratio - 2236)
-003B SEMICOLON
- x (greek question mark - 037E)
- x (arabic semicolon - 061B)
-003C LESS-THAN SIGN
- x (single left-pointing angle quotation mark - 2039)
- x (left-pointing angle bracket - 2329)
- x (left angle bracket - 3008)
-003D EQUALS SIGN
- * other related characters: 2241-2263
- x (not equal to - 2260)
- x (identical to - 2261)
-003E GREATER-THAN SIGN
- x (single right-pointing angle quotation mark - 203A)
- x (right-pointing angle bracket - 232A)
- x (right angle bracket - 3009)
-003F QUESTION MARK
- x (inverted question mark - 00BF)
- x (greek question mark - 037E)
- x (arabic question mark - 061F)
- x (interrobang - 203D)
- x (question exclamation mark - 2048)
- x (exclamation question mark - 2049)
-0040 COMMERCIAL AT
-0041 LATIN CAPITAL LETTER A
-0042 LATIN CAPITAL LETTER B
- x (script capital b - 212C)
-0043 LATIN CAPITAL LETTER C
- x (double-struck capital c - 2102)
- x (black-letter capital c - 212D)
-0044 LATIN CAPITAL LETTER D
-0045 LATIN CAPITAL LETTER E
- x (euler constant - 2107)
- x (script capital e - 2130)
-0046 LATIN CAPITAL LETTER F
- x (script capital f - 2131)
- x (turned capital f - 2132)
-0047 LATIN CAPITAL LETTER G
-0048 LATIN CAPITAL LETTER H
- x (script capital h - 210B)
- x (black-letter capital h - 210C)
- x (double-struck capital h - 210D)
-0049 LATIN CAPITAL LETTER I
- * Turkish and Azerbaijani use 0131 for lowercase
- x (latin capital letter i with dot above - 0130)
- x (cyrillic capital letter byelorussian-ukrainian i - 0406)
- x (cyrillic letter palochka - 04C0)
- x (script capital i - 2110)
- x (black-letter capital i - 2111)
- x (roman numeral one - 2160)
-004A LATIN CAPITAL LETTER J
-004B LATIN CAPITAL LETTER K
- x (kelvin sign - 212A)
-004C LATIN CAPITAL LETTER L
- x (script capital l - 2112)
-004D LATIN CAPITAL LETTER M
- x (script capital m - 2133)
-004E LATIN CAPITAL LETTER N
- x (double-struck capital n - 2115)
-004F LATIN CAPITAL LETTER O
-0050 LATIN CAPITAL LETTER P
- x (double-struck capital p - 2119)
-0051 LATIN CAPITAL LETTER Q
- x (double-struck capital q - 211A)
-0052 LATIN CAPITAL LETTER R
- x (script capital r - 211B)
- x (black-letter capital r - 211C)
- x (double-struck capital r - 211D)
-0053 LATIN CAPITAL LETTER S
-0054 LATIN CAPITAL LETTER T
-0055 LATIN CAPITAL LETTER U
-0056 LATIN CAPITAL LETTER V
-0057 LATIN CAPITAL LETTER W
-0058 LATIN CAPITAL LETTER X
-0059 LATIN CAPITAL LETTER Y
-005A LATIN CAPITAL LETTER Z
- x (double-struck capital z - 2124)
- x (black-letter capital z - 2128)
-005B LEFT SQUARE BRACKET
- = OPENING SQUARE BRACKET
- * other bracket characters: 3008-301B
-005C REVERSE SOLIDUS
- = BACKSLASH
- x (set minus - 2216)
-005D RIGHT SQUARE BRACKET
- = CLOSING SQUARE BRACKET
-005E CIRCUMFLEX ACCENT
- * this is a spacing character
- x (modifier letter up arrowhead - 02C4)
- x (modifier letter circumflex accent - 02C6)
- x (combining circumflex accent - 0302)
- x (up arrowhead - 2303)
-005F LOW LINE
- = SPACING UNDERSCORE
- * this is a spacing character
- x (modifier letter low macron - 02CD)
- x (combining macron below - 0331)
- x (combining low line - 0332)
- x (double low line - 2017)
-0060 GRAVE ACCENT
- * this is a spacing character
- x (modifier letter grave accent - 02CB)
- x (combining grave accent - 0300)
- x (reversed prime - 2035)
-0061 LATIN SMALL LETTER A
-0062 LATIN SMALL LETTER B
-0063 LATIN SMALL LETTER C
-0064 LATIN SMALL LETTER D
-0065 LATIN SMALL LETTER E
- x (estimated symbol - 212E)
- x (script small e - 212F)
-0066 LATIN SMALL LETTER F
-0067 LATIN SMALL LETTER G
- x (latin small letter script g - 0261)
- x (script small g - 210A)
-0068 LATIN SMALL LETTER H
- x (cyrillic small letter shha - 04BB)
- x (planck constant - 210E)
-0069 LATIN SMALL LETTER I
- * Turkish and Azerbaijani use 0130 for uppercase
- x (latin small letter dotless i - 0131)
-006A LATIN SMALL LETTER J
-006B LATIN SMALL LETTER K
-006C LATIN SMALL LETTER L
- x (script small l - 2113)
-006D LATIN SMALL LETTER M
-006E LATIN SMALL LETTER N
- x (superscript latin small letter n - 207F)
-006F LATIN SMALL LETTER O
- x (script small o - 2134)
-0070 LATIN SMALL LETTER P
-0071 LATIN SMALL LETTER Q
-0072 LATIN SMALL LETTER R
-0073 LATIN SMALL LETTER S
-0074 LATIN SMALL LETTER T
-0075 LATIN SMALL LETTER U
-0076 LATIN SMALL LETTER V
-0077 LATIN SMALL LETTER W
-0078 LATIN SMALL LETTER X
-0079 LATIN SMALL LETTER Y
-007A LATIN SMALL LETTER Z
- x (latin small letter z with stroke - 01B6)
-007B LEFT CURLY BRACKET
- = OPENING CURLY BRACKET
- = opening brace
-007C VERTICAL LINE
- = VERTICAL BAR
- * used in pairs to indicate absolute value
- x (latin letter dental click - 01C0)
- x (divides - 2223)
- x (light vertical bar - 2758)
-007D RIGHT CURLY BRACKET
- = CLOSING CURLY BRACKET
- = closing brace
-007E TILDE
- * this is a spacing character
- x (small tilde - 02DC)
- x (combining tilde - 0303)
- x (tilde operator - 223C)
- x (fullwidth tilde - FF5E)
-007F <control>
- = DELETE
-@@ 0080 C1 Controls and Latin-1 Supplement (Latin-1 Supplement) 00FF
-@ C1 controls
-@+ Alias names are those for ISO 6429.
-0080 <control>
-0081 <control>
-0082 <control>
- = BREAK PERMITTED HERE
-0083 <control>
- = NO BREAK HERE
-0084 <control>
- = INDEX
-0085 <control>
- = NEXT LINE
-0086 <control>
- = START OF SELECTED AREA
-0087 <control>
- = END OF SELECTED AREA
-0088 <control>
- = CHARACTER TABULATION SET
-0089 <control>
- = CHARACTER TABULATION WITH JUSTIFICATION
-008A <control>
- = LINE TABULATION SET
-008B <control>
- = PARTIAL LINE DOWN
-008C <control>
- = PARTIAL LINE UP
-008D <control>
- = REVERSE LINE FEED
-008E <control>
- = SINGLE SHIFT TWO
-008F <control>
- = SINGLE SHIFT THREE
-0090 <control>
- = DEVICE CONTROL STRING
-0091 <control>
- = PRIVATE USE ONE
-0092 <control>
- = PRIVATE USE TWO
-0093 <control>
- = SET TRANSMIT STATE
-0094 <control>
- = CANCEL CHARACTER
-0095 <control>
- = MESSAGE WAITING
-0096 <control>
- = START OF GUARDED AREA
-0097 <control>
- = END OF GUARDED AREA
-0098 <control>
- = START OF STRING
-0099 <control>
-009A <control>
- = SINGLE CHARACTER INTRODUCER
-009B <control>
- = CONTROL SEQUENCE INTRODUCER
-009C <control>
- = STRING TERMINATOR
-009D <control>
- = OPERATING SYSTEM COMMAND
-009E <control>
- = PRIVACY MESSAGE
-009F <control>
- = APPLICATION PROGRAM COMMAND
-@ ISO 8859-1 (aka Latin-1)
-00A0 NO-BREAK SPACE
- x (space - 0020)
- x (figure space - 2007)
- x (narrow no-break space - 202F)
- x (zero width no-break space - FEFF)
- # <noBreak> 0020
-00A1 INVERTED EXCLAMATION MARK
- * Spanish, Asturian, Galician
- x (exclamation mark - 0021)
-00A2 CENT SIGN
-00A3 POUND SIGN
- = pound sterling, Irish punt
- x (lira sign - 20A4)
-00A4 CURRENCY SIGN
- * other currency symbol characters: 20A0-20AF
- x (dollar sign - 0024)
-00A5 YEN SIGN
- = yuan sign
- * glyph may have one or two crossbars
-00A6 BROKEN BAR
- = BROKEN VERTICAL BAR
- = parted rule (in typography)
-00A7 SECTION SIGN
- * paragraph sign in some European usage
-00A8 DIAERESIS
- * this is a spacing character
- x (combining diaeresis - 0308)
- # 0020 0308
-00A9 COPYRIGHT SIGN
- x (sound recording copyright - 2117)
-00AA FEMININE ORDINAL INDICATOR
- * Spanish
- # <super> 0061
-00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK *
- = LEFT POINTING GUILLEMET
- = chevrons (in typography)
- * usually opening, sometimes closing
- x (much less-than - 226A)
- x (left double angle bracket - 300A)
-00AC NOT SIGN
- = angled dash (in typography)
- x (reversed not sign - 2310)
-00AD SOFT HYPHEN
- = discretionary hyphen
- x (mongolian todo soft hyphen - 1806)
-00AE REGISTERED SIGN
- = REGISTERED TRADE MARK SIGN
-00AF MACRON
- = overline, APL overbar
- * this is a spacing character
- x (modifier letter macron - 02C9)
- x (combining macron - 0304)
- x (combining overline - 0305)
- # 0020 0304
-00B0 DEGREE SIGN
- * this is a spacing character
- x (ring above - 02DA)
- x (combining ring above - 030A)
- x (superscript zero - 2070)
- x (ring operator - 2218)
-00B1 PLUS-MINUS SIGN
- x (minus-or-plus sign - 2213)
-00B2 SUPERSCRIPT TWO
- = squared
- * other superscript digit characters: 2070-2079
- x (superscript one - 00B9)
- # <super> 0032
-00B3 SUPERSCRIPT THREE
- = cubed
- x (superscript one - 00B9)
- # <super> 0033
-00B4 ACUTE ACCENT
- * this is a spacing character
- x (modifier letter prime - 02B9)
- x (modifier letter acute accent - 02CA)
- x (combining acute accent - 0301)
- x (prime - 2032)
- # 0020 0301
-00B5 MICRO SIGN
- # 03BC greek small letter mu
-00B6 PILCROW SIGN
- = PARAGRAPH SIGN
- * section sign in some European usage
- x (reversed pilcrow sign - 204B)
- x (curved stem paragraph sign ornament - 2761)
-00B7 MIDDLE DOT
- = midpoint (in typography)
- = Georgian comma
- = Greek middle dot
- x (bullet - 2022)
- x (one dot leader - 2024)
- x (hyphenation point - 2027)
- x (bullet operator - 2219)
- x (dot operator - 22C5)
- x (katakana middle dot - 30FB)
-00B8 CEDILLA
- * this is a spacing character
- * other spacing accent characters: 02D8-02DB
- x (combining cedilla - 0327)
- # 0020 0327
-00B9 SUPERSCRIPT ONE
- x (superscript two - 00B2)
- x (superscript three - 00B3)
- # <super> 0031
-00BA MASCULINE ORDINAL INDICATOR
- * Spanish
- # <super> 006F
-00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK *
- = RIGHT POINTING GUILLEMET
- * usually closing, sometimes opening
- x (much greater-than - 226B)
- x (right double angle bracket - 300B)
-00BC VULGAR FRACTION ONE QUARTER
- * bar may be horizontal or slanted
- * other fraction characters: 2153-215E
- # 0031 2044 0034
-00BD VULGAR FRACTION ONE HALF
- * bar may be horizontal or slanted
- # 0031 2044 0032
-00BE VULGAR FRACTION THREE QUARTERS
- * bar may be horizontal or slanted
- # 0033 2044 0034
-00BF INVERTED QUESTION MARK
- = turned question mark
- * Spanish
- x (question mark - 003F)
-00C0 LATIN CAPITAL LETTER A WITH GRAVE
- : 0041 0300
-00C1 LATIN CAPITAL LETTER A WITH ACUTE
- : 0041 0301
-00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- : 0041 0302
-00C3 LATIN CAPITAL LETTER A WITH TILDE
- : 0041 0303
-00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
- : 0041 0308
-00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
- x (angstrom sign - 212B)
- : 0041 030A
-00C6 LATIN CAPITAL LETTER AE (ash) *
- = LATIN CAPITAL LIGATURE AE
-00C7 LATIN CAPITAL LETTER C WITH CEDILLA
- : 0043 0327
-00C8 LATIN CAPITAL LETTER E WITH GRAVE
- : 0045 0300
-00C9 LATIN CAPITAL LETTER E WITH ACUTE
- : 0045 0301
-00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- : 0045 0302
-00CB LATIN CAPITAL LETTER E WITH DIAERESIS
- : 0045 0308
-00CC LATIN CAPITAL LETTER I WITH GRAVE
- : 0049 0300
-00CD LATIN CAPITAL LETTER I WITH ACUTE
- : 0049 0301
-00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- : 0049 0302
-00CF LATIN CAPITAL LETTER I WITH DIAERESIS
- : 0049 0308
-00D0 LATIN CAPITAL LETTER ETH (Icelandic)
- x (latin small letter eth - 00F0)
- x (latin capital letter d with stroke - 0110)
- x (latin capital letter african d - 0189)
-00D1 LATIN CAPITAL LETTER N WITH TILDE
- : 004E 0303
-00D2 LATIN CAPITAL LETTER O WITH GRAVE
- : 004F 0300
-00D3 LATIN CAPITAL LETTER O WITH ACUTE
- : 004F 0301
-00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- : 004F 0302
-00D5 LATIN CAPITAL LETTER O WITH TILDE
- : 004F 0303
-00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
- : 004F 0308
-00D7 MULTIPLICATION SIGN
- = z notation Cartesian product
-00D8 LATIN CAPITAL LETTER O WITH STROKE
- = LATIN CAPITAL LETTER O SLASH
- x (empty set - 2205)
-00D9 LATIN CAPITAL LETTER U WITH GRAVE
- : 0055 0300
-00DA LATIN CAPITAL LETTER U WITH ACUTE
- : 0055 0301
-00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- : 0055 0302
-00DC LATIN CAPITAL LETTER U WITH DIAERESIS
- : 0055 0308
-00DD LATIN CAPITAL LETTER Y WITH ACUTE
- : 0059 0301
-00DE LATIN CAPITAL LETTER THORN (Icelandic)
-00DF LATIN SMALL LETTER SHARP S (German)
- = Eszett
- * German
- * uppercase is "SS"
- * in origin a ligature of 017F and 0073
- x (greek small letter beta - 03B2)
-00E0 LATIN SMALL LETTER A WITH GRAVE
- : 0061 0300
-00E1 LATIN SMALL LETTER A WITH ACUTE
- : 0061 0301
-00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
- : 0061 0302
-00E3 LATIN SMALL LETTER A WITH TILDE
- * Portuguese
- : 0061 0303
-00E4 LATIN SMALL LETTER A WITH DIAERESIS
- : 0061 0308
-00E5 LATIN SMALL LETTER A WITH RING ABOVE
- * Danish, Norwegian, Swedish, Walloon
- : 0061 030A
-00E6 LATIN SMALL LETTER AE (ash) *
- = LATIN SMALL LIGATURE AE
- = ash (from Old English æsc)
- * Danish, Norwegian, Icelandic, Faroese, Old English, French, IPA
- x (latin small ligature oe - 0153)
- x (cyrillic small ligature a ie - 04D5)
-00E7 LATIN SMALL LETTER C WITH CEDILLA
- : 0063 0327
-00E8 LATIN SMALL LETTER E WITH GRAVE
- : 0065 0300
-00E9 LATIN SMALL LETTER E WITH ACUTE
- : 0065 0301
-00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
- : 0065 0302
-00EB LATIN SMALL LETTER E WITH DIAERESIS
- : 0065 0308
-00EC LATIN SMALL LETTER I WITH GRAVE
- * Italian, Malagasy
- : 0069 0300
-00ED LATIN SMALL LETTER I WITH ACUTE
- : 0069 0301
-00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
- : 0069 0302
-00EF LATIN SMALL LETTER I WITH DIAERESIS
- : 0069 0308
-00F0 LATIN SMALL LETTER ETH (Icelandic)
- * Icelandic, Faroese, Old English, IPA
- x (latin capital letter eth - 00D0)
- x (greek small letter delta - 03B4)
- x (partial differential - 2202)
-00F1 LATIN SMALL LETTER N WITH TILDE
- : 006E 0303
-00F2 LATIN SMALL LETTER O WITH GRAVE
- : 006F 0300
-00F3 LATIN SMALL LETTER O WITH ACUTE
- : 006F 0301
-00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
- : 006F 0302
-00F5 LATIN SMALL LETTER O WITH TILDE
- * Portuguese, Estonian
- : 006F 0303
-00F6 LATIN SMALL LETTER O WITH DIAERESIS
- : 006F 0308
-00F7 DIVISION SIGN
-00F8 LATIN SMALL LETTER O WITH STROKE
- = LATIN SMALL LETTER O SLASH
- * Danish, Norwegian, Faroese, IPA
-00F9 LATIN SMALL LETTER U WITH GRAVE
- * French, Italian
- : 0075 0300
-00FA LATIN SMALL LETTER U WITH ACUTE
- : 0075 0301
-00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
- : 0075 0302
-00FC LATIN SMALL LETTER U WITH DIAERESIS
- : 0075 0308
-00FD LATIN SMALL LETTER Y WITH ACUTE
- * Czech, Slovak, Icelandic, Faroese, Welsh, Malagasy
- : 0079 0301
-00FE LATIN SMALL LETTER THORN (Icelandic)
- * Icelandic, Old English, phonetics
- * Runic letter borrowed into Latin script
- x (runic letter thurisaz thurs thorn - 16A6)
-00FF LATIN SMALL LETTER Y WITH DIAERESIS
- * French
- x (latin capital letter y with diaeresis - 0178)
- : 0079 0308
-@@ 0100 Latin Extended-A 017F
-@ European Latin
-0100 LATIN CAPITAL LETTER A WITH MACRON
- : 0041 0304
-0101 LATIN SMALL LETTER A WITH MACRON
- * Latvian, Latin, ...
- : 0061 0304
-0102 LATIN CAPITAL LETTER A WITH BREVE
- : 0041 0306
-0103 LATIN SMALL LETTER A WITH BREVE
- * Romanian, Vietnamese, Latin, ...
- : 0061 0306
-0104 LATIN CAPITAL LETTER A WITH OGONEK
- : 0041 0328
-0105 LATIN SMALL LETTER A WITH OGONEK
- * Polish, Lithuanian, ...
- : 0061 0328
-0106 LATIN CAPITAL LETTER C WITH ACUTE
- : 0043 0301
-0107 LATIN SMALL LETTER C WITH ACUTE
- * Polish, Croatian, ...
- x (cyrillic small letter tshe - 045B)
- : 0063 0301
-0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX
- : 0043 0302
-0109 LATIN SMALL LETTER C WITH CIRCUMFLEX
- * Esperanto
- : 0063 0302
-010A LATIN CAPITAL LETTER C WITH DOT ABOVE
- : 0043 0307
-010B LATIN SMALL LETTER C WITH DOT ABOVE
- * Maltese, Irish Gaelic (old orthography)
- : 0063 0307
-010C LATIN CAPITAL LETTER C WITH CARON
- : 0043 030C
-010D LATIN SMALL LETTER C WITH CARON
- * Czech, Slovak, Slovenian, and many other languages
- : 0063 030C
-010E LATIN CAPITAL LETTER D WITH CARON
- * the form using caron/hacek is preferred in all contexts
- : 0044 030C
-010F LATIN SMALL LETTER D WITH CARON
- * Czech, Slovak
- * the form using apostrophe is preferred in typesetting
- : 0064 030C
-0110 LATIN CAPITAL LETTER D WITH STROKE
- x (latin capital letter eth - 00D0)
- x (latin small letter d with stroke - 0111)
- x (latin capital letter african d - 0189)
-0111 LATIN SMALL LETTER D WITH STROKE
- * Croatian, Vietnamese, Sámi
- x (latin capital letter d with stroke - 0110)
- x (cyrillic small letter dje - 0452)
-0112 LATIN CAPITAL LETTER E WITH MACRON
- : 0045 0304
-0113 LATIN SMALL LETTER E WITH MACRON
- * Latvian, Latin, ...
- : 0065 0304
-0114 LATIN CAPITAL LETTER E WITH BREVE
- : 0045 0306
-0115 LATIN SMALL LETTER E WITH BREVE
- * Malay, Latin, ...
- : 0065 0306
-0116 LATIN CAPITAL LETTER E WITH DOT ABOVE
- : 0045 0307
-0117 LATIN SMALL LETTER E WITH DOT ABOVE
- * Lithuanian
- : 0065 0307
-0118 LATIN CAPITAL LETTER E WITH OGONEK
- : 0045 0328
-0119 LATIN SMALL LETTER E WITH OGONEK
- * Polish, Lithuanian, ...
- : 0065 0328
-011A LATIN CAPITAL LETTER E WITH CARON
- : 0045 030C
-011B LATIN SMALL LETTER E WITH CARON
- * Czech, ...
- : 0065 030C
-011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX
- : 0047 0302
-011D LATIN SMALL LETTER G WITH CIRCUMFLEX
- * Esperanto
- : 0067 0302
-011E LATIN CAPITAL LETTER G WITH BREVE
- : 0047 0306
-011F LATIN SMALL LETTER G WITH BREVE
- * Turkish, Azerbaijani
- x (latin small letter g with caron - 01E7)
- : 0067 0306
-0120 LATIN CAPITAL LETTER G WITH DOT ABOVE
- : 0047 0307
-0121 LATIN SMALL LETTER G WITH DOT ABOVE
- * Maltese, Irish Gaelic (old orthography)
- : 0067 0307
-0122 LATIN CAPITAL LETTER G WITH CEDILLA
- : 0047 0327
-0123 LATIN SMALL LETTER G WITH CEDILLA
- * Latvian
- * there are three major glyph variants
- : 0067 0327
-0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX
- : 0048 0302
-0125 LATIN SMALL LETTER H WITH CIRCUMFLEX
- * Esperanto
- : 0068 0302
-0126 LATIN CAPITAL LETTER H WITH STROKE
-0127 LATIN SMALL LETTER H WITH STROKE
- * Maltese, IPA, ...
- x (cyrillic small letter tshe - 045B)
- x (planck constant over two pi - 210F)
-0128 LATIN CAPITAL LETTER I WITH TILDE
- : 0049 0303
-0129 LATIN SMALL LETTER I WITH TILDE
- * Greenlandic (old orthography)
- : 0069 0303
-012A LATIN CAPITAL LETTER I WITH MACRON
- : 0049 0304
-012B LATIN SMALL LETTER I WITH MACRON
- * Latvian, Latin, ...
- : 0069 0304
-012C LATIN CAPITAL LETTER I WITH BREVE
- : 0049 0306
-012D LATIN SMALL LETTER I WITH BREVE
- * Latin, ...
- : 0069 0306
-012E LATIN CAPITAL LETTER I WITH OGONEK
- : 0049 0328
-012F LATIN SMALL LETTER I WITH OGONEK
- * Lithuanian, ...
- : 0069 0328
-0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
- = LATIN CAPITAL LETTER I DOT
- * Turkish, Azerbaijani
- * lowercase is 0069
- x (latin capital letter i - 0049)
- : 0049 0307
-0131 LATIN SMALL LETTER DOTLESS I
- * Turkish, Azerbaijani
- * uppercase is 0049
- x (latin small letter i - 0069)
-0132 LATIN CAPITAL LIGATURE IJ
- # 0049 004A
-0133 LATIN SMALL LIGATURE IJ
- * Dutch
- # 0069 006A
-0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX
- : 004A 0302
-0135 LATIN SMALL LETTER J WITH CIRCUMFLEX
- * Esperanto
- : 006A 0302
-0136 LATIN CAPITAL LETTER K WITH CEDILLA
- : 004B 0327
-0137 LATIN SMALL LETTER K WITH CEDILLA
- * Latvian
- : 006B 0327
-0138 LATIN SMALL LETTER KRA (Greenlandic)
- * Greenlandic (old orthography)
-0139 LATIN CAPITAL LETTER L WITH ACUTE
- : 004C 0301
-013A LATIN SMALL LETTER L WITH ACUTE
- * Slovak
- : 006C 0301
-013B LATIN CAPITAL LETTER L WITH CEDILLA
- : 004C 0327
-013C LATIN SMALL LETTER L WITH CEDILLA
- * Latvian
- : 006C 0327
-013D LATIN CAPITAL LETTER L WITH CARON
- : 004C 030C
-013E LATIN SMALL LETTER L WITH CARON
- * Slovak
- * the form using apostrophe is preferred in typesetting
- : 006C 030C
-013F LATIN CAPITAL LETTER L WITH MIDDLE DOT
- * some fonts show the middle dot inside the L, but the preferred form has the dot following the L
- # 004C 00B7
-0140 LATIN SMALL LETTER L WITH MIDDLE DOT
- * Catalan
- # 006C 00B7
-0141 LATIN CAPITAL LETTER L WITH STROKE
-0142 LATIN SMALL LETTER L WITH STROKE
- * Polish, ...
- x (latin small letter l with bar - 019A)
-0143 LATIN CAPITAL LETTER N WITH ACUTE
- : 004E 0301
-0144 LATIN SMALL LETTER N WITH ACUTE
- * Polish, ...
- : 006E 0301
-0145 LATIN CAPITAL LETTER N WITH CEDILLA
- : 004E 0327
-0146 LATIN SMALL LETTER N WITH CEDILLA
- * Latvian
- : 006E 0327
-0147 LATIN CAPITAL LETTER N WITH CARON
- : 004E 030C
-0148 LATIN SMALL LETTER N WITH CARON
- * Czech, Slovak
- : 006E 030C
-0149 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
- = LATIN SMALL LETTER APOSTROPHE N
- * Afrikaans
- * this is not actually a single letter
- # 02BC 006E
-014A LATIN CAPITAL LETTER ENG (Sami)
- * glyph may also have appearance of large form of the small letter
-014B LATIN SMALL LETTER ENG (Sami)
- * Sámi, Mende, IPA, ...
-014C LATIN CAPITAL LETTER O WITH MACRON
- : 004F 0304
-014D LATIN SMALL LETTER O WITH MACRON
- * Latvian, Latin, ...
- : 006F 0304
-014E LATIN CAPITAL LETTER O WITH BREVE
- : 004F 0306
-014F LATIN SMALL LETTER O WITH BREVE
- * Latin
- : 006F 0306
-0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
- : 004F 030B
-0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
- * Hungarian
- : 006F 030B
-0152 LATIN CAPITAL LIGATURE OE
-0153 LATIN SMALL LIGATURE OE
- = LATIN SMALL LETTER O E
- = ethel (from Old English eðel)
- * French, IPA, Old Icelandic, Old English, ...
- x (latin small letter ae - 00E6)
- x (latin letter small capital oe - 0276)
-0154 LATIN CAPITAL LETTER R WITH ACUTE
- : 0052 0301
-0155 LATIN SMALL LETTER R WITH ACUTE
- * Slovak, ...
- : 0072 0301
-0156 LATIN CAPITAL LETTER R WITH CEDILLA
- : 0052 0327
-0157 LATIN SMALL LETTER R WITH CEDILLA
- * Latvian
- : 0072 0327
-0158 LATIN CAPITAL LETTER R WITH CARON
- : 0052 030C
-0159 LATIN SMALL LETTER R WITH CARON
- * Czech, ...
- : 0072 030C
-015A LATIN CAPITAL LETTER S WITH ACUTE
- : 0053 0301
-015B LATIN SMALL LETTER S WITH ACUTE
- * Polish, Indic transliteration, ...
- : 0073 0301
-015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX
- : 0053 0302
-015D LATIN SMALL LETTER S WITH CIRCUMFLEX
- * Esperanto
- : 0073 0302
-015E LATIN CAPITAL LETTER S WITH CEDILLA *
- : 0053 0327
-015F LATIN SMALL LETTER S WITH CEDILLA *
- * Turkish, Azerbaijani, Romanian, ...
- * this character is used in both Turkish and Romanian data
- * a glyph variant with comma below is preferred for Romanian
- x (latin small letter s with comma below - 0219)
- : 0073 0327
-0160 LATIN CAPITAL LETTER S WITH CARON
- : 0053 030C
-0161 LATIN SMALL LETTER S WITH CARON
- * Czech, Estonian, Finnish, Slovak, and many other languages
- : 0073 030C
-0162 LATIN CAPITAL LETTER T WITH CEDILLA *
- : 0054 0327
-0163 LATIN SMALL LETTER T WITH CEDILLA *
- * Romanian, Semitic transliteration, ...
- * this character is used in Romanian data
- * a glyph variant with comma below is preferred for Romanian
- x (latin small letter t with comma below - 021B)
- : 0074 0327
-0164 LATIN CAPITAL LETTER T WITH CARON
- * the form using caron/hacek is preferred in all contexts
- : 0054 030C
-0165 LATIN SMALL LETTER T WITH CARON
- * Czech, Slovak
- * the form using apostrophe is preferred in typesetting
- : 0074 030C
-0166 LATIN CAPITAL LETTER T WITH STROKE
-0167 LATIN SMALL LETTER T WITH STROKE
- * Sámi
-0168 LATIN CAPITAL LETTER U WITH TILDE
- : 0055 0303
-0169 LATIN SMALL LETTER U WITH TILDE
- * Greenlandic (old orthography)
- : 0075 0303
-016A LATIN CAPITAL LETTER U WITH MACRON
- : 0055 0304
-016B LATIN SMALL LETTER U WITH MACRON
- * Latvian, Lithuanian, Latin, ...
- : 0075 0304
-016C LATIN CAPITAL LETTER U WITH BREVE
- : 0055 0306
-016D LATIN SMALL LETTER U WITH BREVE
- * Latin, Esperanto, ...
- : 0075 0306
-016E LATIN CAPITAL LETTER U WITH RING ABOVE
- : 0055 030A
-016F LATIN SMALL LETTER U WITH RING ABOVE
- * Czech, ...
- : 0075 030A
-0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
- : 0055 030B
-0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
- * Hungarian
- : 0075 030B
-0172 LATIN CAPITAL LETTER U WITH OGONEK
- : 0055 0328
-0173 LATIN SMALL LETTER U WITH OGONEK
- * Lithuanian
- : 0075 0328
-0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX
- : 0057 0302
-0175 LATIN SMALL LETTER W WITH CIRCUMFLEX
- * Welsh
- : 0077 0302
-0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
- : 0059 0302
-0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX
- * Welsh
- : 0079 0302
-0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
- * French, Igbo
- x (latin small letter y with diaeresis - 00FF)
- : 0059 0308
-0179 LATIN CAPITAL LETTER Z WITH ACUTE
- : 005A 0301
-017A LATIN SMALL LETTER Z WITH ACUTE
- * Polish, ...
- : 007A 0301
-017B LATIN CAPITAL LETTER Z WITH DOT ABOVE
- : 005A 0307
-017C LATIN SMALL LETTER Z WITH DOT ABOVE
- * Polish, ...
- : 007A 0307
-017D LATIN CAPITAL LETTER Z WITH CARON
- : 005A 030C
-017E LATIN SMALL LETTER Z WITH CARON
- * Czech, Estonian, Finnish, Slovak, Slovenian, and many other languages
- : 007A 030C
-017F LATIN SMALL LETTER LONG S
- * in common use in Roman types until the 18th century
- * in current use in Fraktur and Gaelic types
- # 0073 latin small letter s
-@@ 0180 Latin Extended-B 024F
-@ Latin extended-B
-0180 LATIN SMALL LETTER B WITH STROKE
- * Americanist and Indo-Europeanist usage for phonetic beta
- * Old Saxon
- x (greek small letter beta - 03B2)
- x (blank symbol - 2422)
-0181 LATIN CAPITAL LETTER B WITH HOOK
- * Zulu, Pan-Nigerian alphabet
- x (latin small letter b with hook - 0253)
-0182 LATIN CAPITAL LETTER B WITH TOPBAR
-0183 LATIN SMALL LETTER B WITH TOPBAR
- * Zhuang
- * former Soviet minority language scripts
- x (cyrillic capital letter be - 0411)
-0184 LATIN CAPITAL LETTER TONE SIX
-0185 LATIN SMALL LETTER TONE SIX
- * Zhuang
- * Zhuang tone three is Cyrillic ze
- * Zhuang tone four is Cyrillic che
- x (latin small letter tone two - 01A8)
- x (latin small letter tone five - 01BD)
- x (cyrillic small letter ze - 0437)
- x (cyrillic small letter che - 0447)
- x (cyrillic small letter soft sign - 044C)
-0186 LATIN CAPITAL LETTER OPEN O
- * typographically a turned C
- x (latin small letter open o - 0254)
-0187 LATIN CAPITAL LETTER C WITH HOOK
-0188 LATIN SMALL LETTER C WITH HOOK
- * African
-0189 LATIN CAPITAL LETTER AFRICAN D *
- * Ewe
- x (latin capital letter eth - 00D0)
- x (latin capital letter d with stroke - 0110)
- x (latin small letter d with tail - 0256)
-018A LATIN CAPITAL LETTER D WITH HOOK
- * Pan-Nigerian alphabet
- x (latin small letter d with hook - 0257)
-018B LATIN CAPITAL LETTER D WITH TOPBAR
-018C LATIN SMALL LETTER D WITH TOPBAR
- * former-Soviet minority language scripts
-018D LATIN SMALL LETTER TURNED DELTA
- * archaic phonetic for labialized dental fricative
- * recommended spellings 007A 02B7 or 007A 032B
-018E LATIN CAPITAL LETTER REVERSED E
- = LATIN CAPITAL LETTER TURNED E
- * Pan-Nigerian alphabet
- * lowercase is 01DD
-018F LATIN CAPITAL LETTER SCHWA
- * Azerbaijani, ...
- x (latin small letter schwa - 0259)
- x (cyrillic capital letter schwa - 04D8)
-0190 LATIN CAPITAL LETTER OPEN E
- = LATIN CAPITAL LETTER EPSILON
- * African
- x (latin small letter open e - 025B)
- x (euler constant - 2107)
-0191 LATIN CAPITAL LETTER F WITH HOOK
- * African
-0192 LATIN SMALL LETTER F WITH HOOK
- = LATIN SMALL LETTER SCRIPT F
- = Florin currency symbol (Netherlands)
- = function symbol
- = abbreviation convention for folder
-0193 LATIN CAPITAL LETTER G WITH HOOK
- * African
- x (latin small letter g with hook - 0260)
-0194 LATIN CAPITAL LETTER GAMMA
- * African
- x (latin small letter gamma - 0263)
-0195 LATIN SMALL LETTER HV (hwair)
- * Gothic transliteration
- * uppercase is 01F6
-0196 LATIN CAPITAL LETTER IOTA
- * African
- x (latin small letter iota - 0269)
-0197 LATIN CAPITAL LETTER I WITH STROKE
- = barred i, i bar
- * African
- * ISO 6438 gives lowercase as 026A, not 0268
- x (latin letter small capital i - 026A)
-0198 LATIN CAPITAL LETTER K WITH HOOK
-0199 LATIN SMALL LETTER K WITH HOOK
- * Hausa, Pan-Nigerian alphabet
-019A LATIN SMALL LETTER L WITH BAR
- = barred l
- * Americanist phonetic usage for 026C
- x (latin small letter l with stroke - 0142)
-019B LATIN SMALL LETTER LAMBDA WITH STROKE
- = barred lambda, lambda bar
- * Americanist phonetic usage
-019C LATIN CAPITAL LETTER TURNED M
- * Zhuang
- x (latin small letter turned m - 026F)
-019D LATIN CAPITAL LETTER N WITH LEFT HOOK
- * African
- x (latin small letter n with left hook - 0272)
-019E LATIN SMALL LETTER N WITH LONG RIGHT LEG
- * archaic phonetic for Japanese syllabic "n"
- * recommended spelling 006E 0329
-019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE *
- = barred o, o bar
- * lowercase is 0275
- * African
- x (cyrillic capital letter barred o - 04E8)
-01A0 LATIN CAPITAL LETTER O WITH HORN
- : 004F 031B
-01A1 LATIN SMALL LETTER O WITH HORN
- * Vietnamese
- : 006F 031B
-01A2 LATIN CAPITAL LETTER OI (gha)
-01A3 LATIN SMALL LETTER OI (gha)
- = gha
- * Pan-Turkic Latin alphabets
-01A4 LATIN CAPITAL LETTER P WITH HOOK
-01A5 LATIN SMALL LETTER P WITH HOOK
- * African
-01A6 LATIN LETTER YR
- * old Norse
- * from German Standard DIN 31624 and ISO 5246-2
- * lowercase is 0280
-01A7 LATIN CAPITAL LETTER TONE TWO
-01A8 LATIN SMALL LETTER TONE TWO
- * Zhuang
- * typographically a reversed S
- x (latin small letter tone six - 0185)
-01A9 LATIN CAPITAL LETTER ESH
- * African
- x (latin small letter esh - 0283)
- x (greek capital letter sigma - 03A3)
-01AA LATIN LETTER REVERSED ESH LOOP
- * archaic phonetic for labialized palatoalveolar or palatal fricative
- * Twi
- * recommended spellings 0283 02B7, 00E7 02B7, 0068 0265, etc.
-01AB LATIN SMALL LETTER T WITH PALATAL HOOK
- * archaic phonetic for palatalized alveolar or dental stop
- * recommended spelling 0074 02B2
-01AC LATIN CAPITAL LETTER T WITH HOOK
-01AD LATIN SMALL LETTER T WITH HOOK
- * African
-01AE LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
- * African
- x (latin small letter t with retroflex hook - 0288)
-01AF LATIN CAPITAL LETTER U WITH HORN
- : 0055 031B
-01B0 LATIN SMALL LETTER U WITH HORN
- * Vietnamese
- : 0075 031B
-01B1 LATIN CAPITAL LETTER UPSILON
- * African
- * typographically based on turned capital Greek omega
- x (latin small letter upsilon - 028A)
- x (inverted ohm sign - 2127)
-01B2 LATIN CAPITAL LETTER V WITH HOOK
- = LATIN CAPITAL LETTER SCRIPT V
- * African
- x (latin small letter v with hook - 028B)
-01B3 LATIN CAPITAL LETTER Y WITH HOOK
-01B4 LATIN SMALL LETTER Y WITH HOOK
- * Bini, Esoko, and other Edo languages in West Africa
-01B5 LATIN CAPITAL LETTER Z WITH STROKE
-01B6 LATIN SMALL LETTER Z WITH STROKE
- = barred z, z bar
- * Pan-Turkic Latin orthography
- * handwritten variant of Latin "z"
- x (latin small letter z - 007A)
-01B7 LATIN CAPITAL LETTER EZH
- * African, Skolt Sámi
- * lowercase is 0292
- x (latin capital letter yogh - 021C)
- x (cyrillic capital letter abkhasian dze - 04E0)
-01B8 LATIN CAPITAL LETTER EZH REVERSED
-01B9 LATIN SMALL LETTER EZH REVERSED
- * archaic phonetic for voiced pharyngeal fricative
- * sometimes typographically rendered with a turned digit 3
- * recommended spelling 0295
- x (latin letter pharyngeal voiced fricative - 0295)
- x (arabic letter ain - 0639)
-01BA LATIN SMALL LETTER EZH WITH TAIL
- * archaic phonetic for labialized voiced palatoalveolar or palatal fricative
- * Twi
- * recommended spellings 0292 02B7 or 006A 02B7
-01BB LATIN LETTER TWO WITH STROKE
- * archaic phonetic for [dz] affricate
- * recommended spellings 0292 or 0064 007A
-01BC LATIN CAPITAL LETTER TONE FIVE
-01BD LATIN SMALL LETTER TONE FIVE
- * Zhuang
- x (latin small letter tone six - 0185)
-01BE LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
- * archaic phonetic for [ts] affricate
- * recommended spelling 0074 0073
- * letter form is actually derived from ligation of ts, rather than inverted glottal stop
-01BF LATIN LETTER WYNN
- = wen
- * Runic letter borrowed into Latin script
- * replaced by "w" in modern transcriptions of Old English
- * uppercase is 01F7
- x (runic letter wunjo wynn w - 16B9)
-01C0 LATIN LETTER DENTAL CLICK
- = pipe
- * Khoisan tradition
- * "c" in Zulu orthography
- x (solidus - 002F)
- x (vertical line - 007C)
- x (latin small letter turned t - 0287)
- x (divides - 2223)
-01C1 LATIN LETTER LATERAL CLICK
- = double pipe
- * Khoisan tradition
- * "x" in Zulu orthography
- x (latin letter inverted glottal stop - 0296)
- x (parallel to - 2225)
-01C2 LATIN LETTER ALVEOLAR CLICK
- = double-barred pipe
- * Khoisan tradition
- x (not equal to - 2260)
-01C3 LATIN LETTER RETROFLEX CLICK
- = LATIN LETTER EXCLAMATION MARK
- * Khoisan tradition
- * "q" in Zulu orthography
- x (exclamation mark - 0021)
- x (latin letter stretched c - 0297)
-@ Croatian digraphs matching Serbian Cyrillic letters
-01C4 LATIN CAPITAL LETTER DZ WITH CARON
- # 0044 017D
-01C5 LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
- # 0044 017E
-01C6 LATIN SMALL LETTER DZ WITH CARON
- x (cyrillic small letter dzhe - 045F)
- # 0064 017E
-01C7 LATIN CAPITAL LETTER LJ
- # 004C 004A
-01C8 LATIN CAPITAL LETTER L WITH SMALL LETTER J
- # 004C 006A
-01C9 LATIN SMALL LETTER LJ
- x (cyrillic small letter lje - 0459)
- # 006C 006A
-01CA LATIN CAPITAL LETTER NJ
- # 004E 004A
-01CB LATIN CAPITAL LETTER N WITH SMALL LETTER J
- # 004E 006A
-01CC LATIN SMALL LETTER NJ
- x (cyrillic small letter nje - 045A)
- # 006E 006A
-@ Pinyin diacritic-vowel combinations
-01CD LATIN CAPITAL LETTER A WITH CARON
- : 0041 030C
-01CE LATIN SMALL LETTER A WITH CARON
- * Pinyin third tone
- : 0061 030C
-01CF LATIN CAPITAL LETTER I WITH CARON
- : 0049 030C
-01D0 LATIN SMALL LETTER I WITH CARON
- * Pinyin third tone
- : 0069 030C
-01D1 LATIN CAPITAL LETTER O WITH CARON
- : 004F 030C
-01D2 LATIN SMALL LETTER O WITH CARON
- * Pinyin third tone
- : 006F 030C
-01D3 LATIN CAPITAL LETTER U WITH CARON
- : 0055 030C
-01D4 LATIN SMALL LETTER U WITH CARON
- * Pinyin third tone
- : 0075 030C
-01D5 LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
- : 00DC 0304
-01D6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
- * Pinyin first tone
- : 00FC 0304
-01D7 LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
- : 00DC 0301
-01D8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
- * Pinyin second tone
- : 00FC 0301
-01D9 LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
- : 00DC 030C
-01DA LATIN SMALL LETTER U WITH DIAERESIS AND CARON
- * Pinyin third tone
- : 00FC 030C
-01DB LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
- : 00DC 0300
-01DC LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
- * Pinyin fourth tone
- : 00FC 0300
-@ Additions
-01DD LATIN SMALL LETTER TURNED E
- * Pan-Nigerian alphabet
- * all other usages of schwa are 0259
- * uppercase is 018E
- x (latin small letter schwa - 0259)
-01DE LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
- : 00C4 0304
-01DF LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
- * Livonian, Uralicist usage
- : 00E4 0304
-01E0 LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
- : 0226 0304
-01E1 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
- * Uralicist usage
- : 0227 0304
-01E2 LATIN CAPITAL LETTER AE WITH MACRON (ash) *
- : 00C6 0304
-01E3 LATIN SMALL LETTER AE WITH MACRON (ash) *
- * Old Norse, Old English
- : 00E6 0304
-01E4 LATIN CAPITAL LETTER G WITH STROKE
-01E5 LATIN SMALL LETTER G WITH STROKE
- * Skolt Sámi
-01E6 LATIN CAPITAL LETTER G WITH CARON
- : 0047 030C
-01E7 LATIN SMALL LETTER G WITH CARON
- * Skolt Sámi
- x (latin small letter g with breve - 011F)
- : 0067 030C
-01E8 LATIN CAPITAL LETTER K WITH CARON
- : 004B 030C
-01E9 LATIN SMALL LETTER K WITH CARON
- * Skolt Sámi
- : 006B 030C
-01EA LATIN CAPITAL LETTER O WITH OGONEK
- : 004F 0328
-01EB LATIN SMALL LETTER O WITH OGONEK
- * Sámi, Iroquoian, Old Icelandic
- : 006F 0328
-01EC LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
- : 01EA 0304
-01ED LATIN SMALL LETTER O WITH OGONEK AND MACRON
- * Old Icelandic
- : 01EB 0304
-01EE LATIN CAPITAL LETTER EZH WITH CARON
- : 01B7 030C
-01EF LATIN SMALL LETTER EZH WITH CARON
- * Skolt Sámi
- : 0292 030C
-01F0 LATIN SMALL LETTER J WITH CARON
- * IPA and many languages
- : 006A 030C
-01F1 LATIN CAPITAL LETTER DZ
- # 0044 005A
-01F2 LATIN CAPITAL LETTER D WITH SMALL LETTER Z
- # 0044 007A
-01F3 LATIN SMALL LETTER DZ
- # 0064 007A
-01F4 LATIN CAPITAL LETTER G WITH ACUTE
- : 0047 0301
-01F5 LATIN SMALL LETTER G WITH ACUTE
- : 0067 0301
-01F6 LATIN CAPITAL LETTER HWAIR
- * lowercase is 0195
-01F7 LATIN CAPITAL LETTER WYNN
- = wen
- * lowercase is 01BF
-01F8 LATIN CAPITAL LETTER N WITH GRAVE
- : 004E 0300
-01F9 LATIN SMALL LETTER N WITH GRAVE
- * Pinyin
- : 006E 0300
-01FA LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
- : 00C5 0301
-01FB LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
- : 00E5 0301
-01FC LATIN CAPITAL LETTER AE WITH ACUTE (ash) *
- : 00C6 0301
-01FD LATIN SMALL LETTER AE WITH ACUTE (ash) *
- : 00E6 0301
-01FE LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
- : 00D8 0301
-01FF LATIN SMALL LETTER O WITH STROKE AND ACUTE
- : 00F8 0301
-@ Additions for Slovenian and Croatian
-0200 LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
- : 0041 030F
-0201 LATIN SMALL LETTER A WITH DOUBLE GRAVE
- : 0061 030F
-0202 LATIN CAPITAL LETTER A WITH INVERTED BREVE
- : 0041 0311
-0203 LATIN SMALL LETTER A WITH INVERTED BREVE
- : 0061 0311
-0204 LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
- : 0045 030F
-0205 LATIN SMALL LETTER E WITH DOUBLE GRAVE
- : 0065 030F
-0206 LATIN CAPITAL LETTER E WITH INVERTED BREVE
- : 0045 0311
-0207 LATIN SMALL LETTER E WITH INVERTED BREVE
- : 0065 0311
-0208 LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
- : 0049 030F
-0209 LATIN SMALL LETTER I WITH DOUBLE GRAVE
- : 0069 030F
-020A LATIN CAPITAL LETTER I WITH INVERTED BREVE
- : 0049 0311
-020B LATIN SMALL LETTER I WITH INVERTED BREVE
- : 0069 0311
-020C LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
- : 004F 030F
-020D LATIN SMALL LETTER O WITH DOUBLE GRAVE
- : 006F 030F
-020E LATIN CAPITAL LETTER O WITH INVERTED BREVE
- : 004F 0311
-020F LATIN SMALL LETTER O WITH INVERTED BREVE
- : 006F 0311
-0210 LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
- : 0052 030F
-0211 LATIN SMALL LETTER R WITH DOUBLE GRAVE
- : 0072 030F
-0212 LATIN CAPITAL LETTER R WITH INVERTED BREVE
- : 0052 0311
-0213 LATIN SMALL LETTER R WITH INVERTED BREVE
- : 0072 0311
-0214 LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
- : 0055 030F
-0215 LATIN SMALL LETTER U WITH DOUBLE GRAVE
- : 0075 030F
-0216 LATIN CAPITAL LETTER U WITH INVERTED BREVE
- : 0055 0311
-0217 LATIN SMALL LETTER U WITH INVERTED BREVE
- : 0075 0311
-@ Additions for Romanian
-0218 LATIN CAPITAL LETTER S WITH COMMA BELOW *
- : 0053 0326
-0219 LATIN SMALL LETTER S WITH COMMA BELOW *
- * Romanian, when distinct comma below form is required
- x (latin small letter s with cedilla - 015F)
- : 0073 0326
-021A LATIN CAPITAL LETTER T WITH COMMA BELOW *
- : 0054 0326
-021B LATIN SMALL LETTER T WITH COMMA BELOW *
- * Romanian, when distinct comma below form is required
- x (latin small letter t with cedilla - 0163)
- : 0074 0326
-@ Miscellaneous additions
-021C LATIN CAPITAL LETTER YOGH
- x (latin capital letter ezh - 01B7)
-021D LATIN SMALL LETTER YOGH
- * Middle English, Scots
- x (latin small letter ezh - 0292)
- x (ounce sign - 2125)
-021E LATIN CAPITAL LETTER H WITH CARON
- : 0048 030C
-021F LATIN SMALL LETTER H WITH CARON
- * Finnish Romany
- : 0068 030C
-0222 LATIN CAPITAL LETTER OU
-0223 LATIN SMALL LETTER OU
- * Algonquin, Huron
- x (digit eight - 0038)
-0224 LATIN CAPITAL LETTER Z WITH HOOK
-0225 LATIN SMALL LETTER Z WITH HOOK
- * Middle High German
-0226 LATIN CAPITAL LETTER A WITH DOT ABOVE
- : 0041 0307
-0227 LATIN SMALL LETTER A WITH DOT ABOVE
- * Uralicist usage
- : 0061 0307
-0228 LATIN CAPITAL LETTER E WITH CEDILLA
- : 0045 0327
-0229 LATIN SMALL LETTER E WITH CEDILLA
- : 0065 0327
-@ Additions for Livonian
-022A LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
- : 00D6 0304
-022B LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
- * Livonian
- : 00F6 0304
-022C LATIN CAPITAL LETTER O WITH TILDE AND MACRON
- : 00D5 0304
-022D LATIN SMALL LETTER O WITH TILDE AND MACRON
- * Livonian
- : 00F5 0304
-022E LATIN CAPITAL LETTER O WITH DOT ABOVE
- : 004F 0307
-022F LATIN SMALL LETTER O WITH DOT ABOVE
- * Livonian
- : 006F 0307
-0230 LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
- : 022E 0304
-0231 LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
- * Livonian
- : 022F 0304
-0232 LATIN CAPITAL LETTER Y WITH MACRON
- : 0059 0304
-0233 LATIN SMALL LETTER Y WITH MACRON
- * Livonian, Cornish
- : 0079 0304
-@@ 0250 IPA Extensions 02AF
-@ IPA extensions
-@+ IPA includes basic Latin letters and a number of Latin letters from other blocks.
- x (latin small letter ae - 00E6)
- x (latin small letter c with cedilla - 00E7)
- x (latin small letter eth - 00F0)
- x (latin small letter o with stroke - 00F8)
- x (latin small letter h with stroke - 0127)
- x (latin small letter eng - 014B)
- x (latin small ligature oe - 0153)
- x (greek small letter beta - 03B2)
- x (greek small letter theta - 03B8)
- x (greek small letter lamda - 03BB)
- x (greek small letter chi - 03C7)
-0250 LATIN SMALL LETTER TURNED A
- * low central unrounded vowel
-0251 LATIN SMALL LETTER ALPHA
- = LATIN SMALL LETTER SCRIPT A
- * low back unrounded vowel
- x (greek small letter alpha - 03B1)
-0252 LATIN SMALL LETTER TURNED ALPHA
- * low back rounded vowel
-0253 LATIN SMALL LETTER B WITH HOOK
- * implosive bilabial stop
- * Pan-Nigerian alphabet
- x (latin capital letter b with hook - 0181)
-0254 LATIN SMALL LETTER OPEN O
- * typographically a turned c
- * lower-mid back rounded vowel
- x (latin capital letter open o - 0186)
-0255 LATIN SMALL LETTER C WITH CURL
- * voiceless alveolo-palatal laminal fricative
- * used in transcription of Mandarin Chinese
- * sound spelled with 015B in Polish
-0256 LATIN SMALL LETTER D WITH TAIL
- = LATIN SMALL LETTER D RETROFLEX HOOK
- * voiced retroflex stop
- x (latin capital letter african d - 0189)
-0257 LATIN SMALL LETTER D WITH HOOK
- * implosive dental or alveolar stop
- * Ewe, Pan-Nigerian alphabet
- x (latin capital letter d with hook - 018A)
-0258 LATIN SMALL LETTER REVERSED E
- * upper-mid central unrounded vowel
-0259 LATIN SMALL LETTER SCHWA
- * mid-central unrounded vowel
- * variant uppercase form 018E is associated with 01DD
- x (latin capital letter schwa - 018F)
- x (latin small letter turned e - 01DD)
- x (cyrillic small letter schwa - 04D9)
-025A LATIN SMALL LETTER SCHWA WITH HOOK
- * rhotacized schwa
-025B LATIN SMALL LETTER OPEN E
- = LATIN SMALL LETTER EPSILON
- * lower-mid front unrounded vowel
- x (latin capital letter open e - 0190)
- x (greek small letter epsilon - 03B5)
-025C LATIN SMALL LETTER REVERSED OPEN E
- * lower-mid central unrounded vowel
-025D LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
- * rhotacized lower-mid central vowel
-025E LATIN SMALL LETTER CLOSED REVERSED OPEN E
- = LATIN SMALL LETTER CLOSED REVERSED EPSILON
- * lower-mid central rounded vowel
-025F LATIN SMALL LETTER DOTLESS J WITH STROKE
- * voiced palatal stop
- * typographically a turned f, but better thought of as a form of j
- * "gy" in Hungarian orthography
- * also archaic phonetic for palatoalveolar affricate 02A4
-0260 LATIN SMALL LETTER G WITH HOOK
- * implosive velar stop
- x (latin capital letter g with hook - 0193)
-0261 LATIN SMALL LETTER SCRIPT G
- * voiced velar stop
- x (latin small letter g - 0067)
-0262 LATIN LETTER SMALL CAPITAL G
- * voiced uvular stop
-0263 LATIN SMALL LETTER GAMMA
- * voiced velar fricative
- x (latin capital letter gamma - 0194)
- x (greek small letter gamma - 03B3)
-0264 LATIN SMALL LETTER RAMS HORN
- = LATIN SMALL LETTER BABY GAMMA
- * upper-mid back unrounded vowel
-0265 LATIN SMALL LETTER TURNED H
- * voiced rounded palatal approximant
-0266 LATIN SMALL LETTER H WITH HOOK
- * breathy-voiced glottal fricative
- x (modifier letter small h with hook - 02B1)
-0267 LATIN SMALL LETTER HENG WITH HOOK
- * voiceless coarticulated velar and palatoalveolar fricative
- * "tj" or "kj" or "sj" in some Swedish dialects
-0268 LATIN SMALL LETTER I WITH STROKE
- = barred i, i bar
- * high central unrounded vowel
- * ISO 6438 gives lowercase of 0197 as 026A, not 0268
-0269 LATIN SMALL LETTER IOTA
- * semi-high front unrounded vowel
-@+ * obsoleted by IPA in 1989
- * preferred use is 026A LATIN LETTER SMALL CAPITAL I
- x (latin capital letter iota - 0196)
- x (greek small letter iota - 03B9)
-026A LATIN LETTER SMALL CAPITAL I
- * semi-high front unrounded vowel
- * preferred IPA alternate for 0269
- x (latin capital letter i with stroke - 0197)
-026B LATIN SMALL LETTER L WITH MIDDLE TILDE
- * velarized voiced alveolar lateral approximant
-026C LATIN SMALL LETTER L WITH BELT
- * voiceless alveolar lateral fricative
-026D LATIN SMALL LETTER L WITH RETROFLEX HOOK
- * voiced retroflex lateral
-026E LATIN SMALL LETTER LEZH
- * voiced lateral fricative
- * "dhl" in Zulu orthography
-026F LATIN SMALL LETTER TURNED M
- * high back unrounded vowel
- x (latin capital letter turned m - 019C)
-0270 LATIN SMALL LETTER TURNED M WITH LONG LEG
- * voiced velar approximant
-0271 LATIN SMALL LETTER M WITH HOOK
- * voiced labiodental nasal
-0272 LATIN SMALL LETTER N WITH LEFT HOOK
- * voiced palatal nasal
- x (latin capital letter n with left hook - 019D)
-0273 LATIN SMALL LETTER N WITH RETROFLEX HOOK
- * voiced retroflex nasal
-0274 LATIN LETTER SMALL CAPITAL N
- * voiced uvular nasal
-0275 LATIN SMALL LETTER BARRED O
- = o bar
- * rounded mid-central vowel, i.e. rounded schwa
- * uppercase is 019F
- x (greek small letter theta - 03B8)
- x (cyrillic small letter fita - 0473)
- x (cyrillic small letter barred o - 04E9)
-0276 LATIN LETTER SMALL CAPITAL OE
- * low front rounded vowel
- x (latin small ligature oe - 0153)
-0277 LATIN SMALL LETTER CLOSED OMEGA
- * semi-high back rounded vowel
-@+ * obsoleted by IPA in 1989
- * preferred use is 028A latin small letter upsilon
-0278 LATIN SMALL LETTER PHI
- * voiceless bilabial fricative
- x (greek small letter phi - 03C6)
-0279 LATIN SMALL LETTER TURNED R
- * voiced alveolar approximant
- x (modifier letter small turned r - 02B4)
-027A LATIN SMALL LETTER TURNED R WITH LONG LEG
- * voiced lateral flap
-027B LATIN SMALL LETTER TURNED R WITH HOOK
- * voiced retroflex approximant
- x (modifier letter small turned r with hook - 02B5)
-027C LATIN SMALL LETTER R WITH LONG LEG
- * voiced strident apico-alveolar trill
-@+ * obsoleted by IPA in 1989
- * sound spelled with 0159 in Czech
- * preferred phonetic representation for Czech is 0072 031D
- * in current use in Gaelic types (as glyph variant of 0072)
-027D LATIN SMALL LETTER R WITH TAIL
- * voiced retroflex flap
-027E LATIN SMALL LETTER R WITH FISHHOOK
- * voiced alveolar flap or tap
-027F LATIN SMALL LETTER REVERSED R WITH FISHHOOK
- * apical dental vowel
- * used in Sinological tradition
- * IPA spelling - 007A 0329
-0280 LATIN LETTER SMALL CAPITAL R
- * voiced uvular trill
- * Germanic, Old Norse
- * uppercase is 01A6
-0281 LATIN LETTER SMALL CAPITAL INVERTED R
- * voiced uvular fricative or approximant
- x (modifier letter small capital inverted r - 02B6)
-0282 LATIN SMALL LETTER S WITH HOOK
- * voiceless retroflex fricative
-0283 LATIN SMALL LETTER ESH
- * voiceless postalveolar fricative
- x (latin capital letter esh - 01A9)
- x (integral - 222B)
-0284 LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
- * implosive palatal stop
- * typographically based on 025F, not on 0283
-0285 LATIN SMALL LETTER SQUAT REVERSED ESH
- * apical retroflex vowel
- * used in Sinological tradition
- * IPA spelling - 0290 0329
-0286 LATIN SMALL LETTER ESH WITH CURL
- * palatalized voiceless postalveolar fricative
- * suggested spelling - 0283 02B2
-0287 LATIN SMALL LETTER TURNED T
- * dental click (sound of "tsk tsk")
- x (latin letter dental click - 01C0)
-0288 LATIN SMALL LETTER T WITH RETROFLEX HOOK
- * voiceless retroflex stop
- x (latin capital letter t with retroflex hook - 01AE)
-0289 LATIN SMALL LETTER U BAR
- * high central rounded vowel
-028A LATIN SMALL LETTER UPSILON
- * semi-high back rounded vowel
- * preferred IPA alternate to 0277
- x (latin capital letter upsilon - 01B1)
- x (greek small letter upsilon - 03C5)
-028B LATIN SMALL LETTER V WITH HOOK
- = LATIN SMALL LETTER SCRIPT V
- * voiced labiodental approximant
- x (latin capital letter v with hook - 01B2)
- x (greek small letter upsilon - 03C5)
-028C LATIN SMALL LETTER TURNED V
- = caret, wedge
- * lower-mid back unrounded vowel
- x (greek capital letter lamda - 039B)
- x (caret - 2038)
- x (logical and - 2227)
-028D LATIN SMALL LETTER TURNED W
- * voiceless rounded labiovelar approximant
-028E LATIN SMALL LETTER TURNED Y
- * voiced lateral approximant
-028F LATIN LETTER SMALL CAPITAL Y
- * semi-high front rounded vowel
-0290 LATIN SMALL LETTER Z WITH RETROFLEX HOOK
- * voiced retroflex fricative
-0291 LATIN SMALL LETTER Z WITH CURL
- * voiced alveolo-palatal laminal fricative
- * sound spelled with 017A in Polish
-0292 LATIN SMALL LETTER EZH
- = LATIN SMALL LETTER YOGH
- = dram
- * voiced postalveolar fricative
- * uppercase is 01B7
- * Skolt Sámi
- x (latin small letter yogh - 021D)
- x (cyrillic small letter abkhasian dze - 04E1)
- x (ounce sign - 2125)
-0293 LATIN SMALL LETTER EZH WITH CURL
- * palatalized voiced postalveolar fricative
-0294 LATIN LETTER GLOTTAL STOP
- x (modifier letter glottal stop - 02C0)
-0295 LATIN LETTER PHARYNGEAL VOICED FRICATIVE
- = LATIN LETTER REVERSED GLOTTAL STOP
- * voiced pharyngeal fricative
- * ain
- x (latin small letter ezh reversed - 01B9)
- x (modifier letter reversed glottal stop - 02C1)
-0296 LATIN LETTER INVERTED GLOTTAL STOP
- * lateral click
- x (latin letter lateral click - 01C1)
-0297 LATIN LETTER STRETCHED C
- * palatal (or alveolar) click
- x (latin letter retroflex click - 01C3)
- x (complement - 2201)
-0298 LATIN LETTER BILABIAL CLICK
- = LATIN LETTER BULLSEYE
- x (circled dot operator - 2299)
-0299 LATIN LETTER SMALL CAPITAL B
- * bilabial trill
-029A LATIN SMALL LETTER CLOSED OPEN E
- = LATIN SMALL LETTER CLOSED EPSILON
- * lower-mid front rounded vowel
- * non-IPA alternate for the preferred 0153
-029B LATIN LETTER SMALL CAPITAL G WITH HOOK
- * voiced uvular implosive
-029C LATIN LETTER SMALL CAPITAL H
- * voiceless epiglottal fricative
-029D LATIN SMALL LETTER J WITH CROSSED-TAIL
- * voiced palatal fricative
-029E LATIN SMALL LETTER TURNED K
- * proposed for velar click
-@+ * withdrawn by IPA in 1970
-029F LATIN LETTER SMALL CAPITAL L
- * velar lateral approximant
-02A0 LATIN SMALL LETTER Q WITH HOOK
- * voiceless uvular implosive
-02A1 LATIN LETTER GLOTTAL STOP WITH STROKE
- * voiced epiglottal stop
-02A2 LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
- * voiced epiglottal fricative
-02A3 LATIN SMALL LETTER DZ DIGRAPH
- * voiced dental affricate
-02A4 LATIN SMALL LETTER DEZH DIGRAPH
- * voiced postalveolar affricate
-02A5 LATIN SMALL LETTER DZ DIGRAPH WITH CURL
- * voiced alveolo-palatal affricate
-02A6 LATIN SMALL LETTER TS DIGRAPH
- * voiceless dental affricate
-02A7 LATIN SMALL LETTER TESH DIGRAPH
- * voiceless postalveolar affricate
-02A8 LATIN SMALL LETTER TC DIGRAPH WITH CURL
- * voiceless alveolo-palatal affricate
-@ IPA characters for disordered speech
-02A9 LATIN SMALL LETTER FENG DIGRAPH
- * velopharyngeal fricative
-02AA LATIN SMALL LETTER LS DIGRAPH
- * lateral alveolar fricative (lisp)
-02AB LATIN SMALL LETTER LZ DIGRAPH
- * voiced lateral alveolar fricative
-02AC LATIN LETTER BILABIAL PERCUSSIVE
- * audible lip smack
-02AD LATIN LETTER BIDENTAL PERCUSSIVE
- * audible teeth gnashing
-@@ 02B0 Spacing Modifier Letters 02FF
-@ Phonetic modifiers derived from Latin letters
-02B0 MODIFIER LETTER SMALL H
- * aspiration
- # <super> 0068
-02B1 MODIFIER LETTER SMALL H WITH HOOK
- * breathy voiced, murmured
- x (latin small letter h with hook - 0266)
- x (combining diaeresis below - 0324)
- # <super> 0266
-02B2 MODIFIER LETTER SMALL J
- * palatalization
- x (combining palatalized hook below - 0321)
- # <super> 006A
-02B3 MODIFIER LETTER SMALL R
- # <super> 0072
-02B4 MODIFIER LETTER SMALL TURNED R
- x (latin small letter turned r - 0279)
- # <super> 0279
-02B5 MODIFIER LETTER SMALL TURNED R WITH HOOK
- x (latin small letter turned r with hook - 027B)
- # <super> 027B
-02B6 MODIFIER LETTER SMALL CAPITAL INVERTED R
- * preceding four used for r-coloring or r-offglides
- x (latin letter small capital inverted r - 0281)
- # <super> 0281
-02B7 MODIFIER LETTER SMALL W
- * labialization
- x (combining inverted double arch below - 032B)
- # <super> 0077
-02B8 MODIFIER LETTER SMALL Y
- * palatalization
- * common Americanist substitution for 02B2
- # <super> 0079
-@ Miscellaneous phonetic modifiers
-02B9 MODIFIER LETTER PRIME
- * primary stress, emphasis
- * transliteration of mjagkij znak (Cyrillic soft sign: palatalization)
- x (apostrophe - 0027)
- x (acute accent - 00B4)
- x (modifier letter acute accent - 02CA)
- x (combining acute accent - 0301)
- x (greek numeral sign - 0374)
- x (prime - 2032)
-02BA MODIFIER LETTER DOUBLE PRIME
- * exaggerated stress, contrastive stress
- * transliteration of tverdyj znak (Cyrillic hard sign: no palatalization)
- x (quotation mark - 0022)
- x (combining double acute accent - 030B)
- x (double prime - 2033)
-02BB MODIFIER LETTER TURNED COMMA
- * typographical alternate for 02BD or 02BF
- x (combining turned comma above - 0312)
- x (left single quotation mark - 2018)
-02BC MODIFIER LETTER APOSTROPHE
- = apostrophe
- * glottal stop, glottalization, ejective
- * spacing clone of Greek smooth breathing mark
- * many languages use this as a letter of their alphabets
- x (apostrophe - 0027)
- x (combining comma above - 0313)
- x (combining comma above right - 0315)
- x (armenian apostrophe - 055A)
- x (right single quotation mark - 2019)
-02BD MODIFIER LETTER REVERSED COMMA
- * weak aspiration
- * spacing clone of Greek rough breathing mark
- x (combining reversed comma above - 0314)
- x (armenian modifier letter left half ring - 0559)
- x (single high-reversed-9 quotation mark - 201B)
-02BE MODIFIER LETTER RIGHT HALF RING
- * transliteration of Arabic hamza (glottal stop)
- x (armenian apostrophe - 055A)
- x (arabic letter hamza - 0621)
-02BF MODIFIER LETTER LEFT HALF RING
- * transliteration of Arabic ain (voiced pharyngeal fricative)
- x (armenian modifier letter left half ring - 0559)
- x (arabic letter ain - 0639)
-02C0 MODIFIER LETTER GLOTTAL STOP
- * ejective or glottalized
- * typographical alternate for 02BC or 02BE
- x (latin letter glottal stop - 0294)
- x (combining hook above - 0309)
-02C1 MODIFIER LETTER REVERSED GLOTTAL STOP
- * typographical alternate for 02BF
- x (latin letter pharyngeal voiced fricative - 0295)
-02C2 MODIFIER LETTER LEFT ARROWHEAD
- * fronted articulation
-02C3 MODIFIER LETTER RIGHT ARROWHEAD
- * backed articulation
-02C4 MODIFIER LETTER UP ARROWHEAD
- * raised articulation
- x (circumflex accent - 005E)
- x (up arrowhead - 2303)
-02C5 MODIFIER LETTER DOWN ARROWHEAD
- * lowered articulation
-02C6 MODIFIER LETTER CIRCUMFLEX ACCENT
- * rising-falling tone, falling tone, secondary stress, etc.
- x (circumflex accent - 005E)
- x (combining circumflex accent - 0302)
-02C7 CARON (Mandarin Chinese third tone)
- = hacek
- * falling-rising tone
- * Mandarin Chinese third tone
- x (combining caron - 030C)
-02C8 MODIFIER LETTER VERTICAL LINE
- * primary stress, downstep
- * precedes letter or syllable modified
- x (apostrophe - 0027)
- x (combining vertical line above - 030D)
-02C9 MODIFIER LETTER MACRON (Mandarin Chinese first tone)
- * high level tone
- * precedes or follows letter or syllable modified
- * Mandarin Chinese first tone
- x (macron - 00AF)
- x (combining macron - 0304)
-02CA MODIFIER LETTER ACUTE ACCENT (Mandarin Chinese second tone)
- * high-rising tone (IPA), high tone, primary stress
- * Mandarin Chinese second tone
- x (acute accent - 00B4)
- x (modifier letter prime - 02B9)
- x (combining acute accent - 0301)
- x (greek numeral sign - 0374)
- x (armenian emphasis mark - 055B)
-02CB MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone)
- * high-falling tone (IPA), low tone, secondary or tertiary stress
- * Mandarin Chinese fourth tone
- x (grave accent - 0060)
- x (combining grave accent - 0300)
- x (armenian comma - 055D)
-02CC MODIFIER LETTER LOW VERTICAL LINE
- * secondary stress
- * precedes letter or syllable modified
- x (combining vertical line below - 0329)
-02CD MODIFIER LETTER LOW MACRON
- * low level tone
- x (low line - 005F)
- x (combining macron below - 0331)
-02CE MODIFIER LETTER LOW GRAVE ACCENT
- * low-falling tone
-02CF MODIFIER LETTER LOW ACUTE ACCENT
- * low-rising tone
- x (greek lower numeral sign - 0375)
-02D0 MODIFIER LETTER TRIANGULAR COLON
- * length mark
- x (colon - 003A)
-02D1 MODIFIER LETTER HALF TRIANGULAR COLON
- * half-length mark
- x (middle dot - 00B7)
-02D2 MODIFIER LETTER CENTRED RIGHT HALF RING
- * more rounded articulation
-02D3 MODIFIER LETTER CENTRED LEFT HALF RING
- * less rounded articulation
-02D4 MODIFIER LETTER UP TACK
- * vowel raising or closing
- x (combining up tack below - 031D)
- x (combining dot below - 0323)
-02D5 MODIFIER LETTER DOWN TACK
- * vowel lowering or opening
- x (combining left half ring below - 031C)
- x (combining down tack below - 031E)
-02D6 MODIFIER LETTER PLUS SIGN
- * advanced or fronted articulation
- x (combining plus sign below - 031F)
-02D7 MODIFIER LETTER MINUS SIGN
- * retracted or backed articulation
- * glyph may have small end-serifs
- x (combining minus sign below - 0320)
-@ Spacing clones of diacritics
-02D8 BREVE
- x (combining breve - 0306)
- # 0020 0306
-02D9 DOT ABOVE (Mandarin Chinese light tone)
- * Mandarin Chinese fifth tone (light or neutral)
- x (combining dot above - 0307)
- # 0020 0307
-02DA RING ABOVE
- x (degree sign - 00B0)
- x (combining ring above - 030A)
- # 0020 030A
-02DB OGONEK
- x (combining ogonek - 0328)
- # 0020 0328
-02DC SMALL TILDE
- x (tilde - 007E)
- x (combining tilde - 0303)
- x (tilde operator - 223C)
- # 0020 0303
-02DD DOUBLE ACUTE ACCENT
- x (combining double acute accent - 030B)
- # 0020 030B
-@ Additions based on 1989 IPA
-02DE MODIFIER LETTER RHOTIC HOOK
- * rhotacization in vowel
- * often ligated: 025A = 0259 + 02DE; 025D = 025C + 02DE
-02DF MODIFIER LETTER CROSS ACCENT
- * Swedish grave accent
-02E0 MODIFIER LETTER SMALL GAMMA
- * these modifier letters are occasionally used in transcription of affricates
- # <super> 0263
-02E1 MODIFIER LETTER SMALL L
- # <super> 006C
-02E2 MODIFIER LETTER SMALL S
- # <super> 0073
-02E3 MODIFIER LETTER SMALL X
- # <super> 0078
-02E4 MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
- # <super> 0295
-@ Tone letters
-02E5 MODIFIER LETTER EXTRA-HIGH TONE BAR
-02E6 MODIFIER LETTER HIGH TONE BAR
-02E7 MODIFIER LETTER MID TONE BAR
-02E8 MODIFIER LETTER LOW TONE BAR
-02E9 MODIFIER LETTER EXTRA-LOW TONE BAR
-02EA MODIFIER LETTER YIN DEPARTING TONE MARK
-02EB MODIFIER LETTER YANG DEPARTING TONE MARK
-@ IPA modifiers
-02EC MODIFIER LETTER VOICING
-02ED MODIFIER LETTER UNASPIRATED
-@ Other modifier letters
-02EE MODIFIER LETTER DOUBLE APOSTROPHE
- * Nenets
-@@ 0300 Combining Diacritical Marks 036F
-@ Ordinary diacritics
-0300 COMBINING GRAVE ACCENT (Varia)
- = Greek varia
- x (grave accent - 0060)
- x (modifier letter grave accent - 02CB)
-0301 COMBINING ACUTE ACCENT (Oxia)
- = stress mark
- = Greek oxia, tonos
- x (apostrophe - 0027)
- x (acute accent - 00B4)
- x (modifier letter prime - 02B9)
- x (modifier letter acute accent - 02CA)
- x (greek tonos - 0384)
-0302 COMBINING CIRCUMFLEX ACCENT
- = hat
- x (circumflex accent - 005E)
- x (modifier letter circumflex accent - 02C6)
-0303 COMBINING TILDE
- * IPA: nasalization
- * Vietnamese tone mark
- x (tilde - 007E)
- x (small tilde - 02DC)
-0304 COMBINING MACRON
- = long
- * distinguish from the following
- x (macron - 00AF)
- x (modifier letter macron - 02C9)
-0305 COMBINING OVERLINE
- = overscore, vinculum
- * connects on left and right
- x (macron - 00AF)
-0306 COMBINING BREVE (Vrachy)
- = short
- = Greek vrachy
- x (breve - 02D8)
-0307 COMBINING DOT ABOVE
- = derivative (Newtonian notation)
-@+ * IPA (withdrawn in 1976): palatalization
- x (dot above - 02D9)
-0308 COMBINING DIAERESIS (Dialytika)
- = double dot above, umlaut
- = Greek dialytika
- = double derivative
- x (diaeresis - 00A8)
-0309 COMBINING HOOK ABOVE
- = hoi
- * kerns left or right of circumflex over vowels
- * Vietnamese tone mark
- x (modifier letter glottal stop - 02C0)
-030A COMBINING RING ABOVE
- x (degree sign - 00B0)
- x (ring above - 02DA)
-030B COMBINING DOUBLE ACUTE ACCENT
- * Hungarian, Chuvash
- x (quotation mark - 0022)
- x (modifier letter double prime - 02BA)
- x (double acute accent - 02DD)
-030C COMBINING CARON
- = hacek, V above
- x (caron - 02C7)
-030D COMBINING VERTICAL LINE ABOVE (Tonos)
- * Marshallese
- x (modifier letter vertical line - 02C8)
-030E COMBINING DOUBLE VERTICAL LINE ABOVE
- * Marshallese
- x (quotation mark - 0022)
-030F COMBINING DOUBLE GRAVE ACCENT
- * Serbian and Croatian poetics
-0310 COMBINING CANDRABINDU
- x (devanagari sign candrabindu - 0901)
-0311 COMBINING INVERTED BREVE
-0312 COMBINING TURNED COMMA ABOVE
- = cedilla above
- * Latvian (but not used in decomposition)
- x (modifier letter turned comma - 02BB)
-0313 COMBINING COMMA ABOVE (Psili)
- = Greek psili, smooth breathing mark
- * Americanist: ejective or glottalization
- x (modifier letter apostrophe - 02BC)
- x (combining cyrillic psili pneumata - 0486)
- x (armenian apostrophe - 055A)
-0314 COMBINING REVERSED COMMA ABOVE (Dasia)
- = Greek dasia, rough breathing mark
- x (modifier letter reversed comma - 02BD)
- x (combining cyrillic dasia pneumata - 0485)
- x (armenian modifier letter left half ring - 0559)
-0315 COMBINING COMMA ABOVE RIGHT
- x (modifier letter apostrophe - 02BC)
-0316 COMBINING GRAVE ACCENT BELOW
-0317 COMBINING ACUTE ACCENT BELOW
-0318 COMBINING LEFT TACK BELOW
-0319 COMBINING RIGHT TACK BELOW
-031A COMBINING LEFT ANGLE ABOVE
- * IPA: unreleased stop
-031B COMBINING HORN
- * Vietnamese
-031C COMBINING LEFT HALF RING BELOW
- * IPA: open variety of vowel
- x (modifier letter down tack - 02D5)
-031D COMBINING UP TACK BELOW
- * IPA: vowel raising or closing
- x (modifier letter up tack - 02D4)
-031E COMBINING DOWN TACK BELOW
- * IPA: vowel lowering or opening
- x (modifier letter down tack - 02D5)
-031F COMBINING PLUS SIGN BELOW
- * IPA: advanced or fronted articulation
- x (modifier letter plus sign - 02D6)
-0320 COMBINING MINUS SIGN BELOW
- * IPA: retracted or backed articulation
- * glyph may have small end-serifs
- x (modifier letter minus sign - 02D7)
-0321 COMBINING PALATALIZED HOOK BELOW
- * IPA: palatalization
- x (modifier letter small j - 02B2)
-0322 COMBINING RETROFLEX HOOK BELOW
- * IPA: retroflexion
-0323 COMBINING DOT BELOW
- = nang
- * IPA: closer variety of vowel
- * Americanist and Indo-Europeanist: retraction or retroflexion
- * Semiticist: velarization or pharyngealization
- * Vietnamese tone mark
- x (modifier letter up tack - 02D4)
-0324 COMBINING DIAERESIS BELOW
- * IPA: breathy-voice or murmur
- x (modifier letter small h with hook - 02B1)
-0325 COMBINING RING BELOW
- * IPA: voiceless
- * Madurese
-0326 COMBINING COMMA BELOW
- * Romanian, Latvian, Livonian
-0327 COMBINING CEDILLA
- * French, Turkish, Azerbaijani
- x (cedilla - 00B8)
-0328 COMBINING OGONEK
- = nasal hook
- * Americanist: nasalization
- * Polish, Lithuanian
- x (ogonek - 02DB)
-0329 COMBINING VERTICAL LINE BELOW
- * IPA: syllabic
- * Yoruba
- x (modifier letter low vertical line - 02CC)
-032A COMBINING BRIDGE BELOW
- * IPA: dental
-032B COMBINING INVERTED DOUBLE ARCH BELOW
- * IPA: labialization
- x (modifier letter small w - 02B7)
-032C COMBINING CARON BELOW
- * IPA: voiced
- * Hittite transcription
-032D COMBINING CIRCUMFLEX ACCENT BELOW
- * Americanist: fronted articulation
-032E COMBINING BREVE BELOW
-032F COMBINING INVERTED BREVE BELOW
- * Americanist: fronted articulation (variant of 032D)
- * Indo-Europeanist: semivowel
-0330 COMBINING TILDE BELOW
- * IPA: creaky voice
-0331 COMBINING MACRON BELOW
- x (low line - 005F)
- x (modifier letter low macron - 02CD)
-0332 COMBINING LOW LINE
- = underline, underscore
- * connects on left and right
- x (low line - 005F)
-0333 COMBINING DOUBLE LOW LINE
- = double underline, double underscore
- * connects on left and right
- x (combining equals sign below - 0347)
- x (double low line - 2017)
-@ Overstruck diacritics
-0334 COMBINING TILDE OVERLAY
- * IPA: velarization or pharyngealization
-0335 COMBINING SHORT STROKE OVERLAY
-0336 COMBINING LONG STROKE OVERLAY
-0337 COMBINING SHORT SOLIDUS OVERLAY
- = short slash overlay
-0338 COMBINING LONG SOLIDUS OVERLAY
- = long slash overlay
-@ Additions
-0339 COMBINING RIGHT HALF RING BELOW
-033A COMBINING INVERTED BRIDGE BELOW
-033B COMBINING SQUARE BELOW
-033C COMBINING SEAGULL BELOW
-033D COMBINING X ABOVE
-033E COMBINING VERTICAL TILDE
- * Cyrillic palatalization
- x (combining cyrillic palatalization - 0484)
-033F COMBINING DOUBLE OVERLINE
-@ Vietnamese tone marks (deprecated)
-0340 COMBINING GRAVE TONE MARK (Vietnamese)
- * kerns left or right of circumflex over vowels
- : 0300 combining grave accent
-0341 COMBINING ACUTE TONE MARK (Vietnamese)
- * kerns right of circumflex over vowels
- : 0301 combining acute accent
-@ Additions for Greek
-0342 COMBINING GREEK PERISPOMENI
-0343 COMBINING GREEK KORONIS
- : 0313 combining comma above
-0344 COMBINING GREEK DIALYTIKA TONOS
- * use of this character is discouraged
- : 0308 0301
-0345 COMBINING GREEK YPOGEGRAMMENI
- = GREEK NON-SPACING IOTA BELOW
- = iota subscript
- * note special casing issues
- x (greek ypogegrammeni - 037A)
- x (greek capital letter iota - 0399)
-@ Additions for IPA
-0346 COMBINING BRIDGE ABOVE
- * IPA: dentolabial
-0347 COMBINING EQUALS SIGN BELOW
- * IPA: alveolar
-0348 COMBINING DOUBLE VERTICAL LINE BELOW
- * IPA: strong articulation
-0349 COMBINING LEFT ANGLE BELOW
- * IPA: weak articulation
-034A COMBINING NOT TILDE ABOVE
- * IPA: denasal
-@ IPA diacritics for disordered speech
-034B COMBINING HOMOTHETIC ABOVE
- * IPA: nasal escape
-034C COMBINING ALMOST EQUAL TO ABOVE
- * IPA: velopharyngeal friction
-034D COMBINING LEFT RIGHT ARROW BELOW
- * IPA: labial spreading
-034E COMBINING UPWARDS ARROW BELOW
- * IPA: whistled articulation
-@ Double diacritics
-0360 COMBINING DOUBLE TILDE
-0361 COMBINING DOUBLE INVERTED BREVE
-0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW
- * IPA: sliding articulation
-@@ 0370 Greek and Coptic 03FF
-@ Based on ISO 8859-7
-0374 GREEK NUMERAL SIGN (Dexia keraia)
- = dexia keraia
- * indicates numeric use of letters
- x (modifier letter acute accent - 02CA)
- : 02B9 modifier letter prime
-0375 GREEK LOWER NUMERAL SIGN (Aristeri keraia)
- = aristeri keraia
- * indicates numeric use of letters
- x (modifier letter low acute accent - 02CF)
-037A GREEK YPOGEGRAMMENI
- = iota subscript
- x (combining greek ypogegrammeni - 0345)
- # 0020 0345
-037E GREEK QUESTION MARK (Erotimatiko)
- = erotimatiko
- * sentence-final punctuation
- x (question mark - 003F)
- : 003B semicolon
-0384 GREEK TONOS
- x (acute accent - 00B4)
- x (combining vertical line above - 030D)
- # 0020 0301
-0385 GREEK DIALYTIKA TONOS
- : 00A8 0301
-0386 GREEK CAPITAL LETTER ALPHA WITH TONOS
- : 0391 0301
-0387 GREEK ANO TELEIA
- * functions in Greek like a semicolon
- : 00B7 middle dot
-0388 GREEK CAPITAL LETTER EPSILON WITH TONOS
- : 0395 0301
-0389 GREEK CAPITAL LETTER ETA WITH TONOS
- : 0397 0301
-038A GREEK CAPITAL LETTER IOTA WITH TONOS
- : 0399 0301
-038C GREEK CAPITAL LETTER OMICRON WITH TONOS
- : 039F 0301
-038E GREEK CAPITAL LETTER UPSILON WITH TONOS
- : 03A5 0301
-038F GREEK CAPITAL LETTER OMEGA WITH TONOS
- : 03A9 0301
-0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
- : 03CA 0301
-0391 GREEK CAPITAL LETTER ALPHA
-0392 GREEK CAPITAL LETTER BETA
-0393 GREEK CAPITAL LETTER GAMMA
- = gamma function
-0394 GREEK CAPITAL LETTER DELTA
- x (increment - 2206)
-0395 GREEK CAPITAL LETTER EPSILON
-0396 GREEK CAPITAL LETTER ZETA
-0397 GREEK CAPITAL LETTER ETA
-0398 GREEK CAPITAL LETTER THETA
-0399 GREEK CAPITAL LETTER IOTA
- = iota adscript
-039A GREEK CAPITAL LETTER KAPPA
-039B GREEK CAPITAL LETTER LAMDA
-039C GREEK CAPITAL LETTER MU
-039D GREEK CAPITAL LETTER NU
-039E GREEK CAPITAL LETTER XI
-039F GREEK CAPITAL LETTER OMICRON
-03A0 GREEK CAPITAL LETTER PI
- x (n-ary product - 220F)
-03A1 GREEK CAPITAL LETTER RHO
-03A3 GREEK CAPITAL LETTER SIGMA
- x (latin capital letter esh - 01A9)
- x (n-ary summation - 2211)
-03A4 GREEK CAPITAL LETTER TAU
-03A5 GREEK CAPITAL LETTER UPSILON
-03A6 GREEK CAPITAL LETTER PHI
-03A7 GREEK CAPITAL LETTER CHI
-03A8 GREEK CAPITAL LETTER PSI
-03A9 GREEK CAPITAL LETTER OMEGA
- x (ohm sign - 2126)
- x (inverted ohm sign - 2127)
-03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
- : 0399 0308
-03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
- : 03A5 0308
-03AC GREEK SMALL LETTER ALPHA WITH TONOS
- : 03B1 0301
-03AD GREEK SMALL LETTER EPSILON WITH TONOS
- : 03B5 0301
-03AE GREEK SMALL LETTER ETA WITH TONOS
- : 03B7 0301
-03AF GREEK SMALL LETTER IOTA WITH TONOS
- : 03B9 0301
-03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
- : 03CB 0301
-03B1 GREEK SMALL LETTER ALPHA
- x (latin small letter alpha - 0251)
- x (proportional to - 221D)
-03B2 GREEK SMALL LETTER BETA
- x (latin small letter sharp s - 00DF)
- x (latin small letter b with stroke - 0180)
-03B3 GREEK SMALL LETTER GAMMA
- x (latin small letter gamma - 0263)
-03B4 GREEK SMALL LETTER DELTA
-03B5 GREEK SMALL LETTER EPSILON
- x (latin small letter open e - 025B)
-03B6 GREEK SMALL LETTER ZETA
-03B7 GREEK SMALL LETTER ETA
-03B8 GREEK SMALL LETTER THETA
- x (latin small letter barred o - 0275)
- x (cyrillic small letter fita - 0473)
-03B9 GREEK SMALL LETTER IOTA
- x (latin small letter iota - 0269)
- x (turned greek small letter iota - 2129)
-03BA GREEK SMALL LETTER KAPPA
-03BB GREEK SMALL LETTER LAMDA
- = lambda
-03BC GREEK SMALL LETTER MU
- x (micro sign - 00B5)
-03BD GREEK SMALL LETTER NU
-03BE GREEK SMALL LETTER XI
-03BF GREEK SMALL LETTER OMICRON
-03C0 GREEK SMALL LETTER PI
- * math constant 3.141592...
-03C1 GREEK SMALL LETTER RHO
-03C2 GREEK SMALL LETTER FINAL SIGMA
-03C3 GREEK SMALL LETTER SIGMA
-03C4 GREEK SMALL LETTER TAU
-03C5 GREEK SMALL LETTER UPSILON
- x (latin small letter upsilon - 028A)
- x (latin small letter v with hook - 028B)
-03C6 GREEK SMALL LETTER PHI
- x (latin small letter phi - 0278)
-03C7 GREEK SMALL LETTER CHI
-03C8 GREEK SMALL LETTER PSI
-03C9 GREEK SMALL LETTER OMEGA
-03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA
- : 03B9 0308
-03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA
- : 03C5 0308
-03CC GREEK SMALL LETTER OMICRON WITH TONOS
- : 03BF 0301
-03CD GREEK SMALL LETTER UPSILON WITH TONOS
- : 03C5 0301
-03CE GREEK SMALL LETTER OMEGA WITH TONOS
- : 03C9 0301
-@ Variant letterforms
-03D0 GREEK BETA SYMBOL
- = GREEK SMALL LETTER CURLED BETA
- # 03B2 greek small letter beta
-03D1 GREEK THETA SYMBOL
- = GREEK SMALL LETTER SCRIPT THETA
- * used as technical symbol
- # 03B8 greek small letter theta
-03D2 GREEK UPSILON WITH HOOK SYMBOL
- = GREEK CAPITAL LETTER UPSILON HOOK
- # 03A5 greek capital letter upsilon
-03D3 GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
- = GREEK CAPITAL LETTER UPSILON HOOK TONOS
- : 03D2 0301
-03D4 GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
- = GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS
- : 03D2 0308
-03D5 GREEK PHI SYMBOL
- = GREEK SMALL LETTER SCRIPT PHI
- * used as technical symbol
- # 03C6 greek small letter phi
-03D6 GREEK PI SYMBOL
- = GREEK SMALL LETTER OMEGA PI
- * used as technical symbol
- * a variant of pi, looking like omega
- # 03C0 greek small letter pi
-03D7 GREEK KAI SYMBOL
- * used as an ampersand
-@ Archaic letters
-03DA GREEK LETTER STIGMA
-03DB GREEK SMALL LETTER STIGMA
-03DC GREEK LETTER DIGAMMA
-03DD GREEK SMALL LETTER DIGAMMA
-03DE GREEK LETTER KOPPA
-03DF GREEK SMALL LETTER KOPPA
-03E0 GREEK LETTER SAMPI
-03E1 GREEK SMALL LETTER SAMPI
-@ Coptic-unique letters
-03E2 COPTIC CAPITAL LETTER SHEI
-03E3 COPTIC SMALL LETTER SHEI
-03E4 COPTIC CAPITAL LETTER FEI
-03E5 COPTIC SMALL LETTER FEI
-03E6 COPTIC CAPITAL LETTER KHEI
-03E7 COPTIC SMALL LETTER KHEI
-03E8 COPTIC CAPITAL LETTER HORI
-03E9 COPTIC SMALL LETTER HORI
-03EA COPTIC CAPITAL LETTER GANGIA
-03EB COPTIC SMALL LETTER GANGIA
-03EC COPTIC CAPITAL LETTER SHIMA
-03ED COPTIC SMALL LETTER SHIMA
-03EE COPTIC CAPITAL LETTER DEI
-03EF COPTIC SMALL LETTER DEI
-@ Additions
-03F0 GREEK KAPPA SYMBOL
- = GREEK SMALL LETTER SCRIPT KAPPA
- * used as technical symbol
- # 03BA greek small letter kappa
-03F1 GREEK RHO SYMBOL
- = GREEK SMALL LETTER TAILED RHO
- * used as technical symbol
- # 03C1 greek small letter rho
-03F2 GREEK LUNATE SIGMA SYMBOL
- = GREEK SMALL LETTER LUNATE SIGMA
- # 03C2 greek small letter final sigma
-03F3 GREEK LETTER YOT
-@@ 0400 Cyrillic 04FF
-@ Cyrillic extensions
-0400 CYRILLIC CAPITAL LETTER IE WITH GRAVE
- : 0415 0300
-0401 CYRILLIC CAPITAL LETTER IO
- : 0415 0308
-0402 CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
-0403 CYRILLIC CAPITAL LETTER GJE
- : 0413 0301
-0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0405 CYRILLIC CAPITAL LETTER DZE
-0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
- x (latin capital letter i - 0049)
- x (cyrillic letter palochka - 04C0)
-0407 CYRILLIC CAPITAL LETTER YI (Ukrainian)
- : 0406 0308
-0408 CYRILLIC CAPITAL LETTER JE
-0409 CYRILLIC CAPITAL LETTER LJE
-040A CYRILLIC CAPITAL LETTER NJE
-040B CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
-040C CYRILLIC CAPITAL LETTER KJE
- : 041A 0301
-040D CYRILLIC CAPITAL LETTER I WITH GRAVE
- : 0418 0300
-040E CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)
- : 0423 0306
-040F CYRILLIC CAPITAL LETTER DZHE
-@ Basic Russian alphabet
-0410 CYRILLIC CAPITAL LETTER A
-0411 CYRILLIC CAPITAL LETTER BE
- x (latin small letter b with topbar - 0183)
-0412 CYRILLIC CAPITAL LETTER VE
-0413 CYRILLIC CAPITAL LETTER GHE
-0414 CYRILLIC CAPITAL LETTER DE
-0415 CYRILLIC CAPITAL LETTER IE
-0416 CYRILLIC CAPITAL LETTER ZHE
-0417 CYRILLIC CAPITAL LETTER ZE
-0418 CYRILLIC CAPITAL LETTER I
-0419 CYRILLIC CAPITAL LETTER SHORT I
- : 0418 0306
-041A CYRILLIC CAPITAL LETTER KA
-041B CYRILLIC CAPITAL LETTER EL
-041C CYRILLIC CAPITAL LETTER EM
-041D CYRILLIC CAPITAL LETTER EN
-041E CYRILLIC CAPITAL LETTER O
-041F CYRILLIC CAPITAL LETTER PE
-0420 CYRILLIC CAPITAL LETTER ER
-0421 CYRILLIC CAPITAL LETTER ES
-0422 CYRILLIC CAPITAL LETTER TE
-0423 CYRILLIC CAPITAL LETTER U
- x (cyrillic capital letter uk - 0478)
- x (cyrillic small letter straight u - 04AF)
-0424 CYRILLIC CAPITAL LETTER EF
-0425 CYRILLIC CAPITAL LETTER HA
-0426 CYRILLIC CAPITAL LETTER TSE
-0427 CYRILLIC CAPITAL LETTER CHE
-0428 CYRILLIC CAPITAL LETTER SHA
-0429 CYRILLIC CAPITAL LETTER SHCHA
-042A CYRILLIC CAPITAL LETTER HARD SIGN
-042B CYRILLIC CAPITAL LETTER YERU
-042C CYRILLIC CAPITAL LETTER SOFT SIGN
-042D CYRILLIC CAPITAL LETTER E
-042E CYRILLIC CAPITAL LETTER YU
-042F CYRILLIC CAPITAL LETTER YA
-0430 CYRILLIC SMALL LETTER A
-0431 CYRILLIC SMALL LETTER BE
-0432 CYRILLIC SMALL LETTER VE
-0433 CYRILLIC SMALL LETTER GHE
-0434 CYRILLIC SMALL LETTER DE
-0435 CYRILLIC SMALL LETTER IE
-0436 CYRILLIC SMALL LETTER ZHE
-0437 CYRILLIC SMALL LETTER ZE
-0438 CYRILLIC SMALL LETTER I
-0439 CYRILLIC SMALL LETTER SHORT I
- : 0438 0306
-043A CYRILLIC SMALL LETTER KA
-043B CYRILLIC SMALL LETTER EL
-043C CYRILLIC SMALL LETTER EM
-043D CYRILLIC SMALL LETTER EN
-043E CYRILLIC SMALL LETTER O
-043F CYRILLIC SMALL LETTER PE
-0440 CYRILLIC SMALL LETTER ER
-0441 CYRILLIC SMALL LETTER ES
-0442 CYRILLIC SMALL LETTER TE
-0443 CYRILLIC SMALL LETTER U
-0444 CYRILLIC SMALL LETTER EF
-0445 CYRILLIC SMALL LETTER HA
-0446 CYRILLIC SMALL LETTER TSE
-0447 CYRILLIC SMALL LETTER CHE
-0448 CYRILLIC SMALL LETTER SHA
-0449 CYRILLIC SMALL LETTER SHCHA
-044A CYRILLIC SMALL LETTER HARD SIGN
-044B CYRILLIC SMALL LETTER YERU
-044C CYRILLIC SMALL LETTER SOFT SIGN
- x (latin small letter tone six - 0185)
-044D CYRILLIC SMALL LETTER E
-044E CYRILLIC SMALL LETTER YU
-044F CYRILLIC SMALL LETTER YA
-@ Cyrillic extensions
-0450 CYRILLIC SMALL LETTER IE WITH GRAVE
- * Macedonian
- : 0435 0300
-0451 CYRILLIC SMALL LETTER IO
- * Russian, ...
- : 0435 0308
-0452 CYRILLIC SMALL LETTER DJE (Serbocroatian)
- * Serbian
- x (latin small letter d with stroke - 0111)
-0453 CYRILLIC SMALL LETTER GJE
- * Macedonian
- : 0433 0301
-0454 CYRILLIC SMALL LETTER UKRAINIAN IE
- = Old Cyrillic yest
-0455 CYRILLIC SMALL LETTER DZE
- = Old Cyrillic zelo
- * Macedonian
-0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
- = Old Cyrillic i
-0457 CYRILLIC SMALL LETTER YI (Ukrainian)
- * Ukrainian
- : 0456 0308
-0458 CYRILLIC SMALL LETTER JE
- * Serbian, Azerbaijani, Altay
-0459 CYRILLIC SMALL LETTER LJE
- * Serbian, Macedonian
- x (latin small letter lj - 01C9)
-045A CYRILLIC SMALL LETTER NJE
- * Serbian, Macedonian
- x (latin small letter nj - 01CC)
-045B CYRILLIC SMALL LETTER TSHE (Serbocroatian)
- = Old Cyrillic derv
- * Serbian
- x (latin small letter c with acute - 0107)
- x (latin small letter h with stroke - 0127)
- x (cyrillic capital letter tshe - 040B)
- x (planck constant over two pi - 210F)
-045C CYRILLIC SMALL LETTER KJE
- * Macedonian
- : 043A 0301
-045D CYRILLIC SMALL LETTER I WITH GRAVE
- * Macedonian
- : 0438 0300
-045E CYRILLIC SMALL LETTER SHORT U (Byelorussian)
- * Byelorussian, Uzbek
- : 0443 0306
-045F CYRILLIC SMALL LETTER DZHE
- * Serbian, Macedonian, Abkhasian
- x (latin small letter dz with caron - 01C6)
-@ Historic letters
-0460 CYRILLIC CAPITAL LETTER OMEGA
-0461 CYRILLIC SMALL LETTER OMEGA
-0462 CYRILLIC CAPITAL LETTER YAT
-0463 CYRILLIC SMALL LETTER YAT
- * Old Russian
-0464 CYRILLIC CAPITAL LETTER IOTIFIED E
-0465 CYRILLIC SMALL LETTER IOTIFIED E
-0466 CYRILLIC CAPITAL LETTER LITTLE YUS
-0467 CYRILLIC SMALL LETTER LITTLE YUS
-0468 CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-0469 CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
-046A CYRILLIC CAPITAL LETTER BIG YUS
-046B CYRILLIC SMALL LETTER BIG YUS
-046C CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-046D CYRILLIC SMALL LETTER IOTIFIED BIG YUS
-046E CYRILLIC CAPITAL LETTER KSI
-046F CYRILLIC SMALL LETTER KSI
-0470 CYRILLIC CAPITAL LETTER PSI
-0471 CYRILLIC SMALL LETTER PSI
-0472 CYRILLIC CAPITAL LETTER FITA
-0473 CYRILLIC SMALL LETTER FITA
- x (latin small letter barred o - 0275)
- x (greek small letter theta - 03B8)
-0474 CYRILLIC CAPITAL LETTER IZHITSA
-0475 CYRILLIC SMALL LETTER IZHITSA
-0476 CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
- : 0474 030F
-0477 CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
- : 0475 030F
-0478 CYRILLIC CAPITAL LETTER UK
- * basic Old Cyrillic uk is unified with CYRILLIC LETTER U
- x (cyrillic capital letter u - 0423)
-0479 CYRILLIC SMALL LETTER UK
-047A CYRILLIC CAPITAL LETTER ROUND OMEGA
-047B CYRILLIC SMALL LETTER ROUND OMEGA
-047C CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
-047D CYRILLIC SMALL LETTER OMEGA WITH TITLO
-047E CYRILLIC CAPITAL LETTER OT
-047F CYRILLIC SMALL LETTER OT
-0480 CYRILLIC CAPITAL LETTER KOPPA
-0481 CYRILLIC SMALL LETTER KOPPA
-@ Historic miscellaneous
-0482 CYRILLIC THOUSANDS SIGN
-0483 COMBINING CYRILLIC TITLO
-0484 COMBINING CYRILLIC PALATALIZATION
- x (combining vertical tilde - 033E)
-0485 COMBINING CYRILLIC DASIA PNEUMATA
- x (combining reversed comma above - 0314)
-0486 COMBINING CYRILLIC PSILI PNEUMATA
- x (combining comma above - 0313)
-0488 COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
-0489 COMBINING CYRILLIC MILLIONS SIGN
-@ Extended Cyrillic
-048C CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-048D CYRILLIC SMALL LETTER SEMISOFT SIGN
- * Kildin Sámi
-048E CYRILLIC CAPITAL LETTER ER WITH TICK
-048F CYRILLIC SMALL LETTER ER WITH TICK
- * Kildin Sámi
-0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
- * Old Ukrainian
-0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE
-0493 CYRILLIC SMALL LETTER GHE WITH STROKE
- * Azerbaijani, Bashkir, ...
- * full bar form preferred over half-barred "F"-type
-0494 CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
-0495 CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
- * Abkhasian, Yakut
-0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER
- * Tatar, ...
-0498 CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-0499 CYRILLIC SMALL LETTER ZE WITH DESCENDER
- * Bashkir
- * reversed ogonek form of the descender is preferred
-049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-049B CYRILLIC SMALL LETTER KA WITH DESCENDER
- * Abkhasian, Tajik, ...
-049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
- * Azerbaijani
-049E CYRILLIC CAPITAL LETTER KA WITH STROKE
-049F CYRILLIC SMALL LETTER KA WITH STROKE
- * Abkhasian
-04A0 CYRILLIC CAPITAL LETTER BASHKIR KA
-04A1 CYRILLIC SMALL LETTER BASHKIR KA
-04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER
- * Bashkir, ...
-04A4 CYRILLIC CAPITAL LIGATURE EN GHE
-04A5 CYRILLIC SMALL LIGATURE EN GHE
- * Altay, Mari, Yakut
- * this is not a decomposable ligature
-04A6 CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK (Abkhasian)
-04A7 CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK (Abkhasian)
- * Abkhasian
-04A8 CYRILLIC CAPITAL LETTER ABKHASIAN HA
-04A9 CYRILLIC SMALL LETTER ABKHASIAN HA
-04AA CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-04AB CYRILLIC SMALL LETTER ES WITH DESCENDER
- * Bashkir, Chuvash
- * reversed ogonek form of the descender is preferred
-04AC CYRILLIC CAPITAL LETTER TE WITH DESCENDER
-04AD CYRILLIC SMALL LETTER TE WITH DESCENDER
- * Abkhasian
-04AE CYRILLIC CAPITAL LETTER STRAIGHT U
-04AF CYRILLIC SMALL LETTER STRAIGHT U
- * stem is straight, unlike LETTER U
- * Azerbaijani, Bashkir, ...
- x (cyrillic capital letter u - 0423)
-04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
- * Kazakh
-04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER
- * Abkhasian, Tajik, Uzbek
-04B4 CYRILLIC CAPITAL LIGATURE TE TSE (Abkhasian)
-04B5 CYRILLIC SMALL LIGATURE TE TSE (Abkhasian)
- * Abkhasian
- * this is not a decomposable ligature
-04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER
- * Abkhasian, Tajik
-04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
- * Azerbaijani
-04BA CYRILLIC CAPITAL LETTER SHHA
-04BB CYRILLIC SMALL LETTER SHHA
- * originally derived from Latin "h", but uppercase form 04BA is closer to an inverted che (0427)
- * Azerbaijani, Bashkir, ...
- x (latin small letter h - 0068)
-04BC CYRILLIC CAPITAL LETTER ABKHASIAN CHE
-04BD CYRILLIC SMALL LETTER ABKHASIAN CHE
-04BE CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
-04BF CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
- * ogonek form preferred
-04C0 CYRILLIC LETTER PALOCHKA
- * aspiration sign in many Caucasian languages
- * has no "lowercase form", i.e. is case-invariant
- x (latin capital letter i - 0049)
- x (cyrillic capital letter byelorussian-ukrainian i - 0406)
-04C1 CYRILLIC CAPITAL LETTER ZHE WITH BREVE
- : 0416 0306
-04C2 CYRILLIC SMALL LETTER ZHE WITH BREVE
- * Moldavian
- : 0436 0306
-04C3 CYRILLIC CAPITAL LETTER KA WITH HOOK
-04C4 CYRILLIC SMALL LETTER KA WITH HOOK
- * Khanty, Chukchi
-04C7 CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C8 CYRILLIC SMALL LETTER EN WITH HOOK
- * Khanty, Chukchi, Nenets
-04CB CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CC CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04D0 CYRILLIC CAPITAL LETTER A WITH BREVE
- : 0410 0306
-04D1 CYRILLIC SMALL LETTER A WITH BREVE
- : 0430 0306
-04D2 CYRILLIC CAPITAL LETTER A WITH DIAERESIS
- : 0410 0308
-04D3 CYRILLIC SMALL LETTER A WITH DIAERESIS
- : 0430 0308
-04D4 CYRILLIC CAPITAL LIGATURE A IE
-04D5 CYRILLIC SMALL LIGATURE A IE
- * this is not a decomposable ligature
- x (latin small letter ae - 00E6)
-04D6 CYRILLIC CAPITAL LETTER IE WITH BREVE
- : 0415 0306
-04D7 CYRILLIC SMALL LETTER IE WITH BREVE
- : 0435 0306
-04D8 CYRILLIC CAPITAL LETTER SCHWA
-04D9 CYRILLIC SMALL LETTER SCHWA
- x (latin small letter schwa - 0259)
-04DA CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
- : 04D8 0308
-04DB CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
- : 04D9 0308
-04DC CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
- : 0416 0308
-04DD CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
- : 0436 0308
-04DE CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
- : 0417 0308
-04DF CYRILLIC SMALL LETTER ZE WITH DIAERESIS
- : 0437 0308
-04E0 CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-04E1 CYRILLIC SMALL LETTER ABKHASIAN DZE
- x (latin small letter ezh - 0292)
-04E2 CYRILLIC CAPITAL LETTER I WITH MACRON
- : 0418 0304
-04E3 CYRILLIC SMALL LETTER I WITH MACRON
- : 0438 0304
-04E4 CYRILLIC CAPITAL LETTER I WITH DIAERESIS
- : 0418 0308
-04E5 CYRILLIC SMALL LETTER I WITH DIAERESIS
- : 0438 0308
-04E6 CYRILLIC CAPITAL LETTER O WITH DIAERESIS
- : 041E 0308
-04E7 CYRILLIC SMALL LETTER O WITH DIAERESIS
- : 043E 0308
-04E8 CYRILLIC CAPITAL LETTER BARRED O
-04E9 CYRILLIC SMALL LETTER BARRED O
- x (latin small letter barred o - 0275)
-04EA CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
- : 04E8 0308
-04EB CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
- : 04E9 0308
-04EC CYRILLIC CAPITAL LETTER E WITH DIAERESIS
- : 042D 0308
-04ED CYRILLIC SMALL LETTER E WITH DIAERESIS
- * Kildin Sámi
- : 044D 0308
-04EE CYRILLIC CAPITAL LETTER U WITH MACRON
- : 0423 0304
-04EF CYRILLIC SMALL LETTER U WITH MACRON
- : 0443 0304
-04F0 CYRILLIC CAPITAL LETTER U WITH DIAERESIS
- : 0423 0308
-04F1 CYRILLIC SMALL LETTER U WITH DIAERESIS
- : 0443 0308
-04F2 CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
- : 0423 030B
-04F3 CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
- : 0443 030B
-04F4 CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
- : 0427 0308
-04F5 CYRILLIC SMALL LETTER CHE WITH DIAERESIS
- : 0447 0308
-04F8 CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
- : 042B 0308
-04F9 CYRILLIC SMALL LETTER YERU WITH DIAERESIS
- : 044B 0308
-@@ 0530 Armenian 058F
-@ Uppercase letters
-0531 ARMENIAN CAPITAL LETTER AYB
-0532 ARMENIAN CAPITAL LETTER BEN
-0533 ARMENIAN CAPITAL LETTER GIM
-0534 ARMENIAN CAPITAL LETTER DA
-0535 ARMENIAN CAPITAL LETTER ECH
-0536 ARMENIAN CAPITAL LETTER ZA
-0537 ARMENIAN CAPITAL LETTER EH
-0538 ARMENIAN CAPITAL LETTER ET
-0539 ARMENIAN CAPITAL LETTER TO
-053A ARMENIAN CAPITAL LETTER ZHE
-053B ARMENIAN CAPITAL LETTER INI
-053C ARMENIAN CAPITAL LETTER LIWN
-053D ARMENIAN CAPITAL LETTER XEH
-053E ARMENIAN CAPITAL LETTER CA
-053F ARMENIAN CAPITAL LETTER KEN
-0540 ARMENIAN CAPITAL LETTER HO
-0541 ARMENIAN CAPITAL LETTER JA
-0542 ARMENIAN CAPITAL LETTER GHAD
-0543 ARMENIAN CAPITAL LETTER CHEH
-0544 ARMENIAN CAPITAL LETTER MEN
-0545 ARMENIAN CAPITAL LETTER YI
-0546 ARMENIAN CAPITAL LETTER NOW
-0547 ARMENIAN CAPITAL LETTER SHA
-0548 ARMENIAN CAPITAL LETTER VO
-0549 ARMENIAN CAPITAL LETTER CHA
-054A ARMENIAN CAPITAL LETTER PEH
-054B ARMENIAN CAPITAL LETTER JHEH
-054C ARMENIAN CAPITAL LETTER RA
-054D ARMENIAN CAPITAL LETTER SEH
-054E ARMENIAN CAPITAL LETTER VEW
-054F ARMENIAN CAPITAL LETTER TIWN
-0550 ARMENIAN CAPITAL LETTER REH
-0551 ARMENIAN CAPITAL LETTER CO
-0552 ARMENIAN CAPITAL LETTER YIWN
-0553 ARMENIAN CAPITAL LETTER PIWR
-0554 ARMENIAN CAPITAL LETTER KEH
-0555 ARMENIAN CAPITAL LETTER OH
-0556 ARMENIAN CAPITAL LETTER FEH
-@ Modifier letters
-0559 ARMENIAN MODIFIER LETTER LEFT HALF RING
- x (modifier letter reversed comma - 02BD)
- x (modifier letter left half ring - 02BF)
- x (combining reversed comma above - 0314)
-055A ARMENIAN APOSTROPHE
- = ARMENIAN MODIFIER LETTER RIGHT HALF RING
- x (modifier letter apostrophe - 02BC)
- x (modifier letter right half ring - 02BE)
- x (combining comma above - 0313)
-055B ARMENIAN EMPHASIS MARK
- = shesht
- x (modifier letter acute accent - 02CA)
-055C ARMENIAN EXCLAMATION MARK
- = batsaganchakan nshan
-055D ARMENIAN COMMA
- = bowt
- x (modifier letter grave accent - 02CB)
-055E ARMENIAN QUESTION MARK
- = hartsakan nshan
-055F ARMENIAN ABBREVIATION MARK
- = patiw
-@ Lowercase letters
-0561 ARMENIAN SMALL LETTER AYB
-0562 ARMENIAN SMALL LETTER BEN
-0563 ARMENIAN SMALL LETTER GIM
-0564 ARMENIAN SMALL LETTER DA
-0565 ARMENIAN SMALL LETTER ECH
-0566 ARMENIAN SMALL LETTER ZA
-0567 ARMENIAN SMALL LETTER EH
-0568 ARMENIAN SMALL LETTER ET
-0569 ARMENIAN SMALL LETTER TO
-056A ARMENIAN SMALL LETTER ZHE
-056B ARMENIAN SMALL LETTER INI
-056C ARMENIAN SMALL LETTER LIWN
-056D ARMENIAN SMALL LETTER XEH
-056E ARMENIAN SMALL LETTER CA
-056F ARMENIAN SMALL LETTER KEN
-0570 ARMENIAN SMALL LETTER HO
-0571 ARMENIAN SMALL LETTER JA
-0572 ARMENIAN SMALL LETTER GHAD
-0573 ARMENIAN SMALL LETTER CHEH
-0574 ARMENIAN SMALL LETTER MEN
-0575 ARMENIAN SMALL LETTER YI
-0576 ARMENIAN SMALL LETTER NOW
-0577 ARMENIAN SMALL LETTER SHA
-0578 ARMENIAN SMALL LETTER VO
-0579 ARMENIAN SMALL LETTER CHA
-057A ARMENIAN SMALL LETTER PEH
-057B ARMENIAN SMALL LETTER JHEH
-057C ARMENIAN SMALL LETTER RA
-057D ARMENIAN SMALL LETTER SEH
-057E ARMENIAN SMALL LETTER VEW
-057F ARMENIAN SMALL LETTER TIWN
-0580 ARMENIAN SMALL LETTER REH
-0581 ARMENIAN SMALL LETTER CO
-0582 ARMENIAN SMALL LETTER YIWN
-0583 ARMENIAN SMALL LETTER PIWR
-0584 ARMENIAN SMALL LETTER KEH
-0585 ARMENIAN SMALL LETTER OH
-0586 ARMENIAN SMALL LETTER FEH
-0587 ARMENIAN SMALL LIGATURE ECH YIWN
- # 0565 0582
-@ Punctuation
-0589 ARMENIAN FULL STOP
- = vertsaket
- * may also be used for Georgian
- x (colon - 003A)
-058A ARMENIAN HYPHEN
- = yentamna
-@@ 0590 Hebrew 05FF
-@ Cantillation marks
-0591 HEBREW ACCENT ETNAHTA
-0592 HEBREW ACCENT SEGOL
-0593 HEBREW ACCENT SHALSHELET
-0594 HEBREW ACCENT ZAQEF QATAN
-0595 HEBREW ACCENT ZAQEF GADOL
-0596 HEBREW ACCENT TIPEHA *
- = tarha
-0597 HEBREW ACCENT REVIA
-0598 HEBREW ACCENT ZARQA *
- = zinorit
-0599 HEBREW ACCENT PASHTA
-059A HEBREW ACCENT YETIV
-059B HEBREW ACCENT TEVIR
-059C HEBREW ACCENT GERESH
-059D HEBREW ACCENT GERESH MUQDAM
-059E HEBREW ACCENT GERSHAYIM
-059F HEBREW ACCENT QARNEY PARA
-05A0 HEBREW ACCENT TELISHA GEDOLA
-05A1 HEBREW ACCENT PAZER
-05A3 HEBREW ACCENT MUNAH
-05A4 HEBREW ACCENT MAHAPAKH
-05A5 HEBREW ACCENT MERKHA *
- = yored
-05A6 HEBREW ACCENT MERKHA KEFULA
-05A7 HEBREW ACCENT DARGA
-05A8 HEBREW ACCENT QADMA *
- = azla
-05A9 HEBREW ACCENT TELISHA QETANA
-05AA HEBREW ACCENT YERAH BEN YOMO *
- = galgal
-05AB HEBREW ACCENT OLE
-05AC HEBREW ACCENT ILUY
-05AD HEBREW ACCENT DEHI
-05AE HEBREW ACCENT ZINOR
-05AF HEBREW MARK MASORA CIRCLE
-@ Points and punctuation
-05B0 HEBREW POINT SHEVA
-05B1 HEBREW POINT HATAF SEGOL
-05B2 HEBREW POINT HATAF PATAH
-05B3 HEBREW POINT HATAF QAMATS
-05B4 HEBREW POINT HIRIQ
-05B5 HEBREW POINT TSERE
-05B6 HEBREW POINT SEGOL
-05B7 HEBREW POINT PATAH
- * furtive patah is not a distinct character
-05B8 HEBREW POINT QAMATS
-05B9 HEBREW POINT HOLAM
-05BB HEBREW POINT QUBUTS
-05BC HEBREW POINT DAGESH OR MAPIQ (or shuruq)
- = shuruq
- * falls within the base letter
-05BD HEBREW POINT METEG *
- = siluq
- * may be used as a Hebrew accent sof pasuq
-05BE HEBREW PUNCTUATION MAQAF
-05BF HEBREW POINT RAFE
-05C0 HEBREW PUNCTUATION PASEQ *
- = legarmeh
- * may be treated as spacing punctuation, not as a point
-05C1 HEBREW POINT SHIN DOT
-05C2 HEBREW POINT SIN DOT
-05C3 HEBREW PUNCTUATION SOF PASUQ *
- * may be used as a Hebrew punctuation colon
-05C4 HEBREW MARK UPPER DOT
-@ Based on ISO 8859-8
-05D0 HEBREW LETTER ALEF
- = aleph
- x (alef symbol - 2135)
-05D1 HEBREW LETTER BET
- x (bet symbol - 2136)
-05D2 HEBREW LETTER GIMEL
- x (gimel symbol - 2137)
-05D3 HEBREW LETTER DALET
- x (dalet symbol - 2138)
-05D4 HEBREW LETTER HE
-05D5 HEBREW LETTER VAV
-05D6 HEBREW LETTER ZAYIN
-05D7 HEBREW LETTER HET
-05D8 HEBREW LETTER TET
-05D9 HEBREW LETTER YOD
-05DA HEBREW LETTER FINAL KAF
-05DB HEBREW LETTER KAF
-05DC HEBREW LETTER LAMED
-05DD HEBREW LETTER FINAL MEM
-05DE HEBREW LETTER MEM
-05DF HEBREW LETTER FINAL NUN
-05E0 HEBREW LETTER NUN
-05E1 HEBREW LETTER SAMEKH
-05E2 HEBREW LETTER AYIN
-05E3 HEBREW LETTER FINAL PE
-05E4 HEBREW LETTER PE
-05E5 HEBREW LETTER FINAL TSADI
-05E6 HEBREW LETTER TSADI
- = zade
-05E7 HEBREW LETTER QOF
-05E8 HEBREW LETTER RESH
-05E9 HEBREW LETTER SHIN
-05EA HEBREW LETTER TAV
-@ Yiddish digraphs
-05F0 HEBREW LIGATURE YIDDISH DOUBLE VAV
- = tsvey vovn
-05F1 HEBREW LIGATURE YIDDISH VAV YOD
-05F2 HEBREW LIGATURE YIDDISH DOUBLE YOD
- = tsvey yudn
-@ Additional punctuation
-05F3 HEBREW PUNCTUATION GERESH
-05F4 HEBREW PUNCTUATION GERSHAYIM
-@@ 0600 Arabic 06FF
-@ Based on ISO 8859-6
-060C ARABIC COMMA
- * also used with Thaana and Syriac in modern text
- x (comma - 002C)
-061B ARABIC SEMICOLON
- * also used with Thaana and Syriac in modern text
- x (semicolon - 003B)
-061F ARABIC QUESTION MARK
- * also used with Thaana and Syriac in modern text
- x (question mark - 003F)
-0621 ARABIC LETTER HAMZA
- x (modifier letter right half ring - 02BE)
-0622 ARABIC LETTER ALEF WITH MADDA ABOVE
- : 0627 0653
-0623 ARABIC LETTER ALEF WITH HAMZA ABOVE
- : 0627 0654
-0624 ARABIC LETTER WAW WITH HAMZA ABOVE
- : 0648 0654
-0625 ARABIC LETTER ALEF WITH HAMZA BELOW
- : 0627 0655
-0626 ARABIC LETTER YEH WITH HAMZA ABOVE
- : 064A 0654
-0627 ARABIC LETTER ALEF
-0628 ARABIC LETTER BEH
-0629 ARABIC LETTER TEH MARBUTA
-062A ARABIC LETTER TEH
-062B ARABIC LETTER THEH
-062C ARABIC LETTER JEEM
-062D ARABIC LETTER HAH
-062E ARABIC LETTER KHAH
-062F ARABIC LETTER DAL
-0630 ARABIC LETTER THAL
-0631 ARABIC LETTER REH
-0632 ARABIC LETTER ZAIN
-0633 ARABIC LETTER SEEN
-0634 ARABIC LETTER SHEEN
-0635 ARABIC LETTER SAD
-0636 ARABIC LETTER DAD
-0637 ARABIC LETTER TAH
-0638 ARABIC LETTER ZAH
-0639 ARABIC LETTER AIN
- x (latin small letter ezh reversed - 01B9)
- x (modifier letter left half ring - 02BF)
-063A ARABIC LETTER GHAIN
-0640 ARABIC TATWEEL
- = kashida
- * inserted to stretch characters
- * also used with Syriac
-0641 ARABIC LETTER FEH
-0642 ARABIC LETTER QAF
-0643 ARABIC LETTER KAF
-0644 ARABIC LETTER LAM
-0645 ARABIC LETTER MEEM
-0646 ARABIC LETTER NOON
-0647 ARABIC LETTER HEH
-0648 ARABIC LETTER WAW
-0649 ARABIC LETTER ALEF MAKSURA
- * represents YEH-shaped letter with no dots in any positional form
-064A ARABIC LETTER YEH
-@ Points from ISO 8859-6
-064B ARABIC FATHATAN
-064C ARABIC DAMMATAN
-064D ARABIC KASRATAN
-064E ARABIC FATHA
-064F ARABIC DAMMA
-0650 ARABIC KASRA
-0651 ARABIC SHADDA
-0652 ARABIC SUKUN
-@ Combining maddah and hamza
-0653 ARABIC MADDAH ABOVE
-0654 ARABIC HAMZA ABOVE
-0655 ARABIC HAMZA BELOW
-@ Arabic-Indic digits
-0660 ARABIC-INDIC DIGIT ZERO
-0661 ARABIC-INDIC DIGIT ONE
-0662 ARABIC-INDIC DIGIT TWO
-0663 ARABIC-INDIC DIGIT THREE
-0664 ARABIC-INDIC DIGIT FOUR
-0665 ARABIC-INDIC DIGIT FIVE
-0666 ARABIC-INDIC DIGIT SIX
-0667 ARABIC-INDIC DIGIT SEVEN
-0668 ARABIC-INDIC DIGIT EIGHT
-0669 ARABIC-INDIC DIGIT NINE
-@ Punctuation
-066A ARABIC PERCENT SIGN
- x (percent sign - 0025)
-066B ARABIC DECIMAL SEPARATOR
-066C ARABIC THOUSANDS SEPARATOR
-066D ARABIC FIVE POINTED STAR
- x (asterisk - 002A)
-@ Point
-0670 ARABIC LETTER SUPERSCRIPT ALEF
-@ Extended Arabic letters
-0671 ARABIC LETTER ALEF WASLA
- * Arabic
-0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
- * Baluchi, Kashmiri
-0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
- * Baluchi, Kashmiri
-0674 ARABIC LETTER HIGH HAMZA
- * Kazakh
- * forms digraphs
-0675 ARABIC LETTER HIGH HAMZA ALEF
- * Kazakh
- # 0627 0674
-0676 ARABIC LETTER HIGH HAMZA WAW
- * Kazakh
- # 0648 0674
-0677 ARABIC LETTER U WITH HAMZA ABOVE
- * Kazakh
- # 06C7 0674
-0678 ARABIC LETTER HIGH HAMZA YEH
- * Kazakh
- # 064A 0674
-0679 ARABIC LETTER TTEH
- * Urdu
-067A ARABIC LETTER TTEHEH
- * Sindhi
-067B ARABIC LETTER BEEH
- * Sindhi
-067C ARABIC LETTER TEH WITH RING
- * Pashto
-067D ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
- * Sindhi
-067E ARABIC LETTER PEH
- * Persian, Urdu, ...
-067F ARABIC LETTER TEHEH
- * Sindhi
-0680 ARABIC LETTER BEHEH
- * Sindhi
-0681 ARABIC LETTER HAH WITH HAMZA ABOVE
- * Pashto
-0682 ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
- * Pashto
-0683 ARABIC LETTER NYEH
- * Sindhi
-0684 ARABIC LETTER DYEH
- * Sindhi
-0685 ARABIC LETTER HAH WITH THREE DOTS ABOVE
- * Pashto
-0686 ARABIC LETTER TCHEH
- * Persian, Urdu, ...
-0687 ARABIC LETTER TCHEHEH
- * Sindhi
-0688 ARABIC LETTER DDAL
- * Urdu
-0689 ARABIC LETTER DAL WITH RING
- * Pashto
-068A ARABIC LETTER DAL WITH DOT BELOW
- * Sindhi
-068B ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
- * Lahnda
-068C ARABIC LETTER DAHAL
- * Sindhi
-068D ARABIC LETTER DDAHAL
- * Sindhi
-068E ARABIC LETTER DUL
- * Sindhi
-068F ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
- * Sindhi
-0690 ARABIC LETTER DAL WITH FOUR DOTS ABOVE
- * Urdu
-0691 ARABIC LETTER RREH
- * Urdu
-0692 ARABIC LETTER REH WITH SMALL V
- * Kurdish
-0693 ARABIC LETTER REH WITH RING
- * Pashto
-0694 ARABIC LETTER REH WITH DOT BELOW
- * Kurdish
-0695 ARABIC LETTER REH WITH SMALL V BELOW
- * Kurdish
-0696 ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
- * Pashto
-0697 ARABIC LETTER REH WITH TWO DOTS ABOVE
- * Dargwa
-0698 ARABIC LETTER JEH
- * Persian, Urdu, ...
-0699 ARABIC LETTER REH WITH FOUR DOTS ABOVE
- * Sindhi
-069A ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
- * Pashto
-069B ARABIC LETTER SEEN WITH THREE DOTS BELOW
- * Uighur
-069C ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
- * Moroccan Arabic
-069D ARABIC LETTER SAD WITH TWO DOTS BELOW
- * Turkic
-069E ARABIC LETTER SAD WITH THREE DOTS ABOVE
- * Berber
-069F ARABIC LETTER TAH WITH THREE DOTS ABOVE
- * old Hausa
-06A0 ARABIC LETTER AIN WITH THREE DOTS ABOVE
- * old Malay
-06A1 ARABIC LETTER DOTLESS FEH
- * Adighe
-06A2 ARABIC LETTER FEH WITH DOT MOVED BELOW
- * Maghrib Arabic
-06A3 ARABIC LETTER FEH WITH DOT BELOW
- * Ingush
-06A4 ARABIC LETTER VEH
- * Arabic for foreign words
-06A5 ARABIC LETTER FEH WITH THREE DOTS BELOW
- * Arabic for foreign words
-06A6 ARABIC LETTER PEHEH
- * Sindhi
-06A7 ARABIC LETTER QAF WITH DOT ABOVE
- * Maghrib Arabic
-06A8 ARABIC LETTER QAF WITH THREE DOTS ABOVE
- * Tunisian Arabic
-06A9 ARABIC LETTER KEHEH
- * Persian, Urdu, ...
-06AA ARABIC LETTER SWASH KAF
-06AB ARABIC LETTER KAF WITH RING
- * Pashto
-06AC ARABIC LETTER KAF WITH DOT ABOVE
- * old Malay
-06AD ARABIC LETTER NG
- * Uighur, Kazakh, old Malay, ...
-06AE ARABIC LETTER KAF WITH THREE DOTS BELOW
- * Berber
-06AF ARABIC LETTER GAF *
- * Persian, Urdu, ...
-06B0 ARABIC LETTER GAF WITH RING
- * Lahnda
-06B1 ARABIC LETTER NGOEH
- * Sindhi
-06B2 ARABIC LETTER GAF WITH TWO DOTS BELOW
- * Sindhi
-06B3 ARABIC LETTER GUEH
- * Sindhi
-06B4 ARABIC LETTER GAF WITH THREE DOTS ABOVE
- * Sindhi
-06B5 ARABIC LETTER LAM WITH SMALL V
- * Kurdish
-06B6 ARABIC LETTER LAM WITH DOT ABOVE
- * Kurdish
-06B7 ARABIC LETTER LAM WITH THREE DOTS ABOVE
- * Kurdish
-06B8 ARABIC LETTER LAM WITH THREE DOTS BELOW
-06B9 ARABIC LETTER NOON WITH DOT BELOW
-06BA ARABIC LETTER NOON GHUNNA
- * Urdu
-06BB ARABIC LETTER RNOON
- * Sindhi
-06BC ARABIC LETTER NOON WITH RING
- * Pashto
-06BD ARABIC LETTER NOON WITH THREE DOTS ABOVE
- * old Malay
-06BE ARABIC LETTER HEH DOACHASHMEE
- * Urdu
- * forms aspirate digraphs
-06BF ARABIC LETTER TCHEH WITH DOT ABOVE
-06C0 ARABIC LETTER HEH WITH YEH ABOVE
- = ARABIC LETTER HAMZAH ON HA
- = izafet
- * Persian, Urdu
- * actually a ligature, and not an independent letter
- : 06D5 0654
-06C1 ARABIC LETTER HEH GOAL
- * Urdu
-06C2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
- * Urdu
- * actually a ligature, and not an independent letter
- : 06C1 0654
-06C3 ARABIC LETTER TEH MARBUTA GOAL
- * Urdu
-06C4 ARABIC LETTER WAW WITH RING
- * Kashmiri
-06C5 ARABIC LETTER KIRGHIZ OE
- * Kirghiz
-06C6 ARABIC LETTER OE
- * Uighur, Kurdish, Kazakh
-06C7 ARABIC LETTER U
- * Kirghiz
-06C8 ARABIC LETTER YU
- * Uighur
-06C9 ARABIC LETTER KIRGHIZ YU
- * Kazakh, Kirghiz
-06CA ARABIC LETTER WAW WITH TWO DOTS ABOVE
- * Kurdish
-06CB ARABIC LETTER VE
- * Uighur, Kazakh
-06CC ARABIC LETTER FARSI YEH
- * Arabic, Persian, Urdu, ...
-06CD ARABIC LETTER YEH WITH TAIL
- * Pashto, Sindhi
-06CE ARABIC LETTER YEH WITH SMALL V
- * Kurdish
-06CF ARABIC LETTER WAW WITH DOT ABOVE
-06D0 ARABIC LETTER E *
- * Pashto, Uighur
- * used as the letter bbeh in Sindhi
-06D1 ARABIC LETTER YEH WITH THREE DOTS BELOW
- * old Malay
-06D2 ARABIC LETTER YEH BARREE
- * Urdu
-06D3 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
- * Urdu
- * actually a ligature, and not an independent letter
- : 06D2 0654
-@ Punctuation
-06D4 ARABIC FULL STOP
- * Urdu
-@ Extended Arabic letter
-06D5 ARABIC LETTER AE
- * Uighur, Kazakh, Kirghiz
-@ Koranic annotation signs
-06D6 ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
-06D7 ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
-06D8 ARABIC SMALL HIGH MEEM INITIAL FORM
-06D9 ARABIC SMALL HIGH LAM ALEF
-06DA ARABIC SMALL HIGH JEEM
-06DB ARABIC SMALL HIGH THREE DOTS
-06DC ARABIC SMALL HIGH SEEN
-06DD ARABIC END OF AYAH
-06DE ARABIC START OF RUB EL HIZB
-06DF ARABIC SMALL HIGH ROUNDED ZERO
-06E0 ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
-06E1 ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
-06E2 ARABIC SMALL HIGH MEEM ISOLATED FORM
-06E3 ARABIC SMALL LOW SEEN
-06E4 ARABIC SMALL HIGH MADDA
-06E5 ARABIC SMALL WAW
-06E6 ARABIC SMALL YEH
-06E7 ARABIC SMALL HIGH YEH
-06E8 ARABIC SMALL HIGH NOON
-06E9 ARABIC PLACE OF SAJDAH
-06EA ARABIC EMPTY CENTRE LOW STOP
-06EB ARABIC EMPTY CENTRE HIGH STOP
-06EC ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
-06ED ARABIC SMALL LOW MEEM
-@ Eastern Arabic-Indic digits (Persian and Urdu)
-06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
-06F1 EXTENDED ARABIC-INDIC DIGIT ONE
-06F2 EXTENDED ARABIC-INDIC DIGIT TWO
-06F3 EXTENDED ARABIC-INDIC DIGIT THREE
-06F4 EXTENDED ARABIC-INDIC DIGIT FOUR
- * different glyphs in Persian and Urdu
-06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
- * Persian and Urdu share glyph different from Arabic
-06F6 EXTENDED ARABIC-INDIC DIGIT SIX
- * Persian glyph different from Arabic
-06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
- * Urdu glyph different from Arabic
-06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
-06F9 EXTENDED ARABIC-INDIC DIGIT NINE
-@ Extended Arabic letters
-06FA ARABIC LETTER SHEEN WITH DOT BELOW
-06FB ARABIC LETTER DAD WITH DOT BELOW
-06FC ARABIC LETTER GHAIN WITH DOT BELOW
-@ Signs for Sindhi
-06FD ARABIC SIGN SINDHI AMPERSAND
-06FE ARABIC SIGN SINDHI POSTPOSITION MEN
-@@ 0700 Syriac 074F
-@ Syriac punctuation and signs
-0700 SYRIAC END OF PARAGRAPH
- * marks the end of a paragraph
-0701 SYRIAC SUPRALINEAR FULL STOP
- * marks interrogations, imperatives, and pauses, especially in Biblical texts
-0702 SYRIAC SUBLINEAR FULL STOP
- * marks subordinate clauses and minor pauses, especially in Biblical texts
-0703 SYRIAC SUPRALINEAR COLON
- * marks expressions of wonder and has a distinct pausal value in Biblical texts
-0704 SYRIAC SUBLINEAR COLON
- * used at the end of verses of supplications
-0705 SYRIAC HORIZONTAL COLON
- * joins two words closely together in a context to which a rising tone is suitable
-0706 SYRIAC COLON SKEWED LEFT
- * marks a dependent clause
-0707 SYRIAC COLON SKEWED RIGHT
- * marks the end of a subdivision of the apodosis, or latter part of a Biblical verse
-0708 SYRIAC SUPRALINEAR COLON SKEWED LEFT
- * marks a minor phrase division
-0709 SYRIAC SUBLINEAR COLON SKEWED RIGHT
- * marks the end of a real or rhetorical question
-070A SYRIAC CONTRACTION
- * a contraction mark, mostly used in East Syriac
- * placed at the end of an incomplete word
-070B SYRIAC HARKLEAN OBELUS
- * marks the beginning of a phrase, word, or morpheme that has a marginal note
-070C SYRIAC HARKLEAN METOBELUS
- * marks the end of a section with a marginal note
-070D SYRIAC HARKLEAN ASTERISCUS
- * marks the beginning of a phrase, word, or morpheme that has a marginal note
-@ Syriac format control character
-070F SYRIAC ABBREVIATION MARK
- * marks the beginning of a Syriac abbreviation
-@ Syriac letters
-0710 SYRIAC LETTER ALAPH
-0711 SYRIAC LETTER SUPERSCRIPT ALAPH
- * used in East Syriac texts to indicate an etymological Alaph
-0712 SYRIAC LETTER BETH
-0713 SYRIAC LETTER GAMAL
-0714 SYRIAC LETTER GAMAL GARSHUNI
- * used in Garshuni documents
-0715 SYRIAC LETTER DALATH
-0716 SYRIAC LETTER DOTLESS DALATH RISH
- * ambiguous form for undifferentiated early dalath/rish
-0717 SYRIAC LETTER HE
-0718 SYRIAC LETTER WAW
-0719 SYRIAC LETTER ZAIN
-071A SYRIAC LETTER HETH
-071B SYRIAC LETTER TETH
-071C SYRIAC LETTER TETH GARSHUNI
- * used in Garshuni documents
-071D SYRIAC LETTER YUDH
-071E SYRIAC LETTER YUDH HE
- * mostly used in East Syriac texts
-071F SYRIAC LETTER KAPH
-0720 SYRIAC LETTER LAMADH
-0721 SYRIAC LETTER MIM
-0722 SYRIAC LETTER NUN
-0723 SYRIAC LETTER SEMKATH
-0724 SYRIAC LETTER FINAL SEMKATH
-0725 SYRIAC LETTER E
-0726 SYRIAC LETTER PE
-0727 SYRIAC LETTER REVERSED PE
- * used in Christian Palestinian Aramaic
-0728 SYRIAC LETTER SADHE
-0729 SYRIAC LETTER QAPH
-072A SYRIAC LETTER RISH
-072B SYRIAC LETTER SHIN
-072C SYRIAC LETTER TAW
-@ Syriac points (vowels)
-0730 SYRIAC PTHAHA ABOVE
-0731 SYRIAC PTHAHA BELOW
-0732 SYRIAC PTHAHA DOTTED
-0733 SYRIAC ZQAPHA ABOVE
-0734 SYRIAC ZQAPHA BELOW
-0735 SYRIAC ZQAPHA DOTTED
-0736 SYRIAC RBASA ABOVE
-0737 SYRIAC RBASA BELOW
-0738 SYRIAC DOTTED ZLAMA HORIZONTAL
-0739 SYRIAC DOTTED ZLAMA ANGULAR
-073A SYRIAC HBASA ABOVE
-073B SYRIAC HBASA BELOW
-073C SYRIAC HBASA-ESASA DOTTED
-073D SYRIAC ESASA ABOVE
-073E SYRIAC ESASA BELOW
-073F SYRIAC RWAHA
-@ Syriac marks
-0740 SYRIAC FEMININE DOT
- * feminine marker used with the Taw feminine suffix
-0741 SYRIAC QUSHSHAYA
- * indicates a plosive pronunciation
-0742 SYRIAC RUKKAKHA
- * indicates an aspirated (spirantized) pronunciation
-0743 SYRIAC TWO VERTICAL DOTS ABOVE
- * accent mark used in ancient manuscripts
-0744 SYRIAC TWO VERTICAL DOTS BELOW
- * accent mark used in ancient manuscripts
-0745 SYRIAC THREE DOTS ABOVE
- * diacritic used in Turoyo for letters not found in Syriac
-0746 SYRIAC THREE DOTS BELOW
- * diacritic used in Turoyo for letters not found in Syriac
-0747 SYRIAC OBLIQUE LINE ABOVE
- * indication of a silent letter
-0748 SYRIAC OBLIQUE LINE BELOW
- * indication of a silent letter
- * also used to indicate numbers multiplied by a certain constant
-0749 SYRIAC MUSIC
- * a music mark
- * also used in the Syrian Orthodox Anaphora book to mark the breaking of the Eucharist bread
-074A SYRIAC BARREKH
- * a diacritic cross used in liturgical texts
-@@ 0780 Thaana 07BF
-@ Basic consonants
-0780 THAANA LETTER HAA
-0781 THAANA LETTER SHAVIYANI
-0782 THAANA LETTER NOONU
-0783 THAANA LETTER RAA
-0784 THAANA LETTER BAA
-0785 THAANA LETTER LHAVIYANI
-0786 THAANA LETTER KAAFU
-0787 THAANA LETTER ALIFU
-0788 THAANA LETTER VAAVU
-0789 THAANA LETTER MEEMU
-078A THAANA LETTER FAAFU
-078B THAANA LETTER DHAALU
-078C THAANA LETTER THAA
-078D THAANA LETTER LAAMU
-078E THAANA LETTER GAAFU
-078F THAANA LETTER GNAVIYANI
-0790 THAANA LETTER SEENU
-0791 THAANA LETTER DAVIYANI
-0792 THAANA LETTER ZAVIYANI
-0793 THAANA LETTER TAVIYANI
-0794 THAANA LETTER YAA
-0795 THAANA LETTER PAVIYANI
-0796 THAANA LETTER JAVIYANI
-0797 THAANA LETTER CHAVIYANI
-@ Extensions for Arabic
-0798 THAANA LETTER TTAA
-0799 THAANA LETTER HHAA
-079A THAANA LETTER KHAA
-079B THAANA LETTER THAALU
-079C THAANA LETTER ZAA
-079D THAANA LETTER SHEENU
-079E THAANA LETTER SAADHU
-079F THAANA LETTER DAADHU
-07A0 THAANA LETTER TO
-07A1 THAANA LETTER ZO
-07A2 THAANA LETTER AINU
-07A3 THAANA LETTER GHAINU
-07A4 THAANA LETTER QAAFU
-07A5 THAANA LETTER WAAVU
-@ Vowels
-07A6 THAANA ABAFILI
-07A7 THAANA AABAAFILI
-07A8 THAANA IBIFILI
-07A9 THAANA EEBEEFILI
-07AA THAANA UBUFILI
-07AB THAANA OOBOOFILI
-07AC THAANA EBEFILI
-07AD THAANA EYBEYFILI
-07AE THAANA OBOFILI
-07AF THAANA OABOAFILI
-07B0 THAANA SUKUN
-@@ 0900 Devanagari 097F
-@ Based on ISCII 1988
-@ Various signs
-0901 DEVANAGARI SIGN CANDRABINDU
- = anunasika
- x (combining candrabindu - 0310)
-0902 DEVANAGARI SIGN ANUSVARA
- = bindu
-0903 DEVANAGARI SIGN VISARGA
-@ Independent vowels
-0905 DEVANAGARI LETTER A
-0906 DEVANAGARI LETTER AA
-0907 DEVANAGARI LETTER I
-0908 DEVANAGARI LETTER II
-0909 DEVANAGARI LETTER U
-090A DEVANAGARI LETTER UU
-090B DEVANAGARI LETTER VOCALIC R
-090C DEVANAGARI LETTER VOCALIC L
-090D DEVANAGARI LETTER CANDRA E
-090E DEVANAGARI LETTER SHORT E
- * for transcribing Dravidian short e
-090F DEVANAGARI LETTER E
-0910 DEVANAGARI LETTER AI
-0911 DEVANAGARI LETTER CANDRA O
-0912 DEVANAGARI LETTER SHORT O
- * for transcribing Dravidian short o
-0913 DEVANAGARI LETTER O
-0914 DEVANAGARI LETTER AU
-@ Consonants
-0915 DEVANAGARI LETTER KA
-0916 DEVANAGARI LETTER KHA
-0917 DEVANAGARI LETTER GA
-0918 DEVANAGARI LETTER GHA
-0919 DEVANAGARI LETTER NGA
-091A DEVANAGARI LETTER CA
-091B DEVANAGARI LETTER CHA
-091C DEVANAGARI LETTER JA
-091D DEVANAGARI LETTER JHA
-091E DEVANAGARI LETTER NYA
-091F DEVANAGARI LETTER TTA
-0920 DEVANAGARI LETTER TTHA
-0921 DEVANAGARI LETTER DDA
-0922 DEVANAGARI LETTER DDHA
-0923 DEVANAGARI LETTER NNA
-0924 DEVANAGARI LETTER TA
-0925 DEVANAGARI LETTER THA
-0926 DEVANAGARI LETTER DA
-0927 DEVANAGARI LETTER DHA
-0928 DEVANAGARI LETTER NA
-0929 DEVANAGARI LETTER NNNA
- * for transcribing Dravidian alveolar n
- : 0928 093C
-092A DEVANAGARI LETTER PA
-092B DEVANAGARI LETTER PHA
-092C DEVANAGARI LETTER BA
-092D DEVANAGARI LETTER BHA
-092E DEVANAGARI LETTER MA
-092F DEVANAGARI LETTER YA
-0930 DEVANAGARI LETTER RA
-0931 DEVANAGARI LETTER RRA
- * for transcribing Dravidian alveolar r
- * half form is represented as "Eyelash RA"
- : 0930 093C
-0932 DEVANAGARI LETTER LA
-0933 DEVANAGARI LETTER LLA
-0934 DEVANAGARI LETTER LLLA
- * for transcribing Dravidian l
- : 0933 093C
-0935 DEVANAGARI LETTER VA
-0936 DEVANAGARI LETTER SHA
-0937 DEVANAGARI LETTER SSA
-0938 DEVANAGARI LETTER SA
-0939 DEVANAGARI LETTER HA
-@ Various signs
-093C DEVANAGARI SIGN NUKTA
- * for extending the alphabet to new letters
-093D DEVANAGARI SIGN AVAGRAHA
-093E DEVANAGARI VOWEL SIGN AA
-@ Dependent vowel signs
-093F DEVANAGARI VOWEL SIGN I
- * stands to the left of the consonant
-0940 DEVANAGARI VOWEL SIGN II
-0941 DEVANAGARI VOWEL SIGN U
-0942 DEVANAGARI VOWEL SIGN UU
-0943 DEVANAGARI VOWEL SIGN VOCALIC R
-0944 DEVANAGARI VOWEL SIGN VOCALIC RR
-0945 DEVANAGARI VOWEL SIGN CANDRA E
- = candra
-0946 DEVANAGARI VOWEL SIGN SHORT E
- * for transcribing Dravidian vowels
-0947 DEVANAGARI VOWEL SIGN E
-0948 DEVANAGARI VOWEL SIGN AI
-0949 DEVANAGARI VOWEL SIGN CANDRA O
-094A DEVANAGARI VOWEL SIGN SHORT O
- * for transcribing Dravidian vowels
-094B DEVANAGARI VOWEL SIGN O
-094C DEVANAGARI VOWEL SIGN AU
-@ Various signs
-094D DEVANAGARI SIGN VIRAMA
- = halant
- * suppresses inherent vowel
-0950 DEVANAGARI OM
-0951 DEVANAGARI STRESS SIGN UDATTA
-0952 DEVANAGARI STRESS SIGN ANUDATTA
-0953 DEVANAGARI GRAVE ACCENT
-0954 DEVANAGARI ACUTE ACCENT
-@ Additional consonants
-0958 DEVANAGARI LETTER QA
- : 0915 093C
-0959 DEVANAGARI LETTER KHHA
- : 0916 093C
-095A DEVANAGARI LETTER GHHA
- : 0917 093C
-095B DEVANAGARI LETTER ZA
- : 091C 093C
-095C DEVANAGARI LETTER DDDHA
- : 0921 093C
-095D DEVANAGARI LETTER RHA
- : 0922 093C
-095E DEVANAGARI LETTER FA
- : 092B 093C
-095F DEVANAGARI LETTER YYA
- : 092F 093C
-@ Generic additions
-0960 DEVANAGARI LETTER VOCALIC RR
-0961 DEVANAGARI LETTER VOCALIC LL
-0962 DEVANAGARI VOWEL SIGN VOCALIC L
-0963 DEVANAGARI VOWEL SIGN VOCALIC LL
-0964 DEVANAGARI DANDA
- = phrase separator
-0965 DEVANAGARI DOUBLE DANDA
-@ Digits
-0966 DEVANAGARI DIGIT ZERO
-0967 DEVANAGARI DIGIT ONE
-0968 DEVANAGARI DIGIT TWO
-0969 DEVANAGARI DIGIT THREE
-096A DEVANAGARI DIGIT FOUR
-096B DEVANAGARI DIGIT FIVE
-096C DEVANAGARI DIGIT SIX
-096D DEVANAGARI DIGIT SEVEN
-096E DEVANAGARI DIGIT EIGHT
-096F DEVANAGARI DIGIT NINE
-@ Devanagari-specific additions
-0970 DEVANAGARI ABBREVIATION SIGN
-@@ 0980 Bengali 09FF
-@ Based on ISCII 1988
-@ Various signs
-0981 BENGALI SIGN CANDRABINDU
-0982 BENGALI SIGN ANUSVARA
-0983 BENGALI SIGN VISARGA
-@ Independent vowels
-0985 BENGALI LETTER A
-0986 BENGALI LETTER AA
-0987 BENGALI LETTER I
-0988 BENGALI LETTER II
-0989 BENGALI LETTER U
-098A BENGALI LETTER UU
-098B BENGALI LETTER VOCALIC R
-098C BENGALI LETTER VOCALIC L
-098F BENGALI LETTER E
-0990 BENGALI LETTER AI
-0993 BENGALI LETTER O
-0994 BENGALI LETTER AU
-@ Consonants
-0995 BENGALI LETTER KA
-0996 BENGALI LETTER KHA
-0997 BENGALI LETTER GA
-0998 BENGALI LETTER GHA
-0999 BENGALI LETTER NGA
-099A BENGALI LETTER CA
-099B BENGALI LETTER CHA
-099C BENGALI LETTER JA
-099D BENGALI LETTER JHA
-099E BENGALI LETTER NYA
-099F BENGALI LETTER TTA
-09A0 BENGALI LETTER TTHA
-09A1 BENGALI LETTER DDA
-09A2 BENGALI LETTER DDHA
-09A3 BENGALI LETTER NNA
-09A4 BENGALI LETTER TA
-09A5 BENGALI LETTER THA
-09A6 BENGALI LETTER DA
-09A7 BENGALI LETTER DHA
-09A8 BENGALI LETTER NA
-09AA BENGALI LETTER PA
-09AB BENGALI LETTER PHA
-09AC BENGALI LETTER BA
- = Bengali va, wa
-09AD BENGALI LETTER BHA
-09AE BENGALI LETTER MA
-09AF BENGALI LETTER YA
-09B0 BENGALI LETTER RA
-09B2 BENGALI LETTER LA
-09B6 BENGALI LETTER SHA
-09B7 BENGALI LETTER SSA
-09B8 BENGALI LETTER SA
-09B9 BENGALI LETTER HA
-@ Various signs
-09BC BENGALI SIGN NUKTA
- * for extending the alphabet to new letters
-@ Dependent vowel signs
-09BE BENGALI VOWEL SIGN AA
-09BF BENGALI VOWEL SIGN I
- * stands to the left of the consonant
-09C0 BENGALI VOWEL SIGN II
-09C1 BENGALI VOWEL SIGN U
-09C2 BENGALI VOWEL SIGN UU
-09C3 BENGALI VOWEL SIGN VOCALIC R
-09C4 BENGALI VOWEL SIGN VOCALIC RR
-09C7 BENGALI VOWEL SIGN E
- * stands to the left of the consonant
-09C8 BENGALI VOWEL SIGN AI
- * stands to the left of the consonant
-09CB BENGALI VOWEL SIGN O
- * pieces on both sides of the consonant
- : 09C7 09BE
-09CC BENGALI VOWEL SIGN AU
- * pieces on both sides of the consonant
- : 09C7 09D7
-@ Various signs
-09CD BENGALI SIGN VIRAMA
- = halant
-09D7 BENGALI AU LENGTH MARK
-@ Additional consonants
-09DC BENGALI LETTER RRA
- : 09A1 09BC
-09DD BENGALI LETTER RHA
- : 09A2 09BC
-09DF BENGALI LETTER YYA
- : 09AF 09BC
-@ Generic additions
-09E0 BENGALI LETTER VOCALIC RR
-09E1 BENGALI LETTER VOCALIC LL
-09E2 BENGALI VOWEL SIGN VOCALIC L
-09E3 BENGALI VOWEL SIGN VOCALIC LL
-@ Digits
-09E6 BENGALI DIGIT ZERO
-09E7 BENGALI DIGIT ONE
-09E8 BENGALI DIGIT TWO
-09E9 BENGALI DIGIT THREE
-09EA BENGALI DIGIT FOUR
-09EB BENGALI DIGIT FIVE
-09EC BENGALI DIGIT SIX
-09ED BENGALI DIGIT SEVEN
-09EE BENGALI DIGIT EIGHT
-09EF BENGALI DIGIT NINE
-@ Bengali-specific additions
-09F0 BENGALI LETTER RA WITH MIDDLE DIAGONAL (Assamese)
- * Assamese
-09F1 BENGALI LETTER RA WITH LOWER DIAGONAL (Assamese)
- = BENGALI LETTER VA WITH LOWER DIAGONAL
- * Assamese
-09F2 BENGALI RUPEE MARK
-09F3 BENGALI RUPEE SIGN
-09F4 BENGALI CURRENCY NUMERATOR ONE
-09F5 BENGALI CURRENCY NUMERATOR TWO
-09F6 BENGALI CURRENCY NUMERATOR THREE
-09F7 BENGALI CURRENCY NUMERATOR FOUR
-09F8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
-09F9 BENGALI CURRENCY DENOMINATOR SIXTEEN
-09FA BENGALI ISSHAR
-@@ 0A00 Gurmukhi 0A7F
-@ Based on ISCII 1988
-@ Various signs
-0A02 GURMUKHI SIGN BINDI
-@ Independent vowels
-0A05 GURMUKHI LETTER A
-0A06 GURMUKHI LETTER AA
-0A07 GURMUKHI LETTER I
-0A08 GURMUKHI LETTER II
-0A09 GURMUKHI LETTER U
-0A0A GURMUKHI LETTER UU
-0A0F GURMUKHI LETTER EE
-0A10 GURMUKHI LETTER AI
-0A13 GURMUKHI LETTER OO
-0A14 GURMUKHI LETTER AU
-@ Consonants
-0A15 GURMUKHI LETTER KA
-0A16 GURMUKHI LETTER KHA
-0A17 GURMUKHI LETTER GA
-0A18 GURMUKHI LETTER GHA
-0A19 GURMUKHI LETTER NGA
-0A1A GURMUKHI LETTER CA
-0A1B GURMUKHI LETTER CHA
-0A1C GURMUKHI LETTER JA
-0A1D GURMUKHI LETTER JHA
-0A1E GURMUKHI LETTER NYA
-0A1F GURMUKHI LETTER TTA
-0A20 GURMUKHI LETTER TTHA
-0A21 GURMUKHI LETTER DDA
-0A22 GURMUKHI LETTER DDHA
-0A23 GURMUKHI LETTER NNA
-0A24 GURMUKHI LETTER TA
-0A25 GURMUKHI LETTER THA
-0A26 GURMUKHI LETTER DA
-0A27 GURMUKHI LETTER DHA
-0A28 GURMUKHI LETTER NA
-0A2A GURMUKHI LETTER PA
-0A2B GURMUKHI LETTER PHA
-0A2C GURMUKHI LETTER BA
-0A2D GURMUKHI LETTER BHA
-0A2E GURMUKHI LETTER MA
-0A2F GURMUKHI LETTER YA
-0A30 GURMUKHI LETTER RA
-0A32 GURMUKHI LETTER LA
-0A33 GURMUKHI LETTER LLA
- : 0A32 0A3C
-0A35 GURMUKHI LETTER VA
-0A36 GURMUKHI LETTER SHA
- : 0A38 0A3C
-0A38 GURMUKHI LETTER SA
-0A39 GURMUKHI LETTER HA
-@ Various signs
-0A3C GURMUKHI SIGN NUKTA
- * for extending the alphabet to new letters
-@ Dependent vowel signs
-0A3E GURMUKHI VOWEL SIGN AA
-0A3F GURMUKHI VOWEL SIGN I
- * stands to the left of the consonant
-0A40 GURMUKHI VOWEL SIGN II
-0A41 GURMUKHI VOWEL SIGN U
-0A42 GURMUKHI VOWEL SIGN UU
-0A47 GURMUKHI VOWEL SIGN EE
-0A48 GURMUKHI VOWEL SIGN AI
-0A4B GURMUKHI VOWEL SIGN OO
-0A4C GURMUKHI VOWEL SIGN AU
-0A4D GURMUKHI SIGN VIRAMA
-@ Additional consonants
-0A59 GURMUKHI LETTER KHHA
- : 0A16 0A3C
-0A5A GURMUKHI LETTER GHHA
- : 0A17 0A3C
-0A5B GURMUKHI LETTER ZA
- : 0A1C 0A3C
-0A5C GURMUKHI LETTER RRA
-0A5E GURMUKHI LETTER FA
- : 0A2B 0A3C
-@ Digits
-0A66 GURMUKHI DIGIT ZERO
-0A67 GURMUKHI DIGIT ONE
-0A68 GURMUKHI DIGIT TWO
-0A69 GURMUKHI DIGIT THREE
-0A6A GURMUKHI DIGIT FOUR
-0A6B GURMUKHI DIGIT FIVE
-0A6C GURMUKHI DIGIT SIX
-0A6D GURMUKHI DIGIT SEVEN
-0A6E GURMUKHI DIGIT EIGHT
-0A6F GURMUKHI DIGIT NINE
-@ Gurmukhi-specific additions
-0A70 GURMUKHI TIPPI
- * nasalization
-0A71 GURMUKHI ADDAK
- * doubles following consonant
-0A72 GURMUKHI IRI
- * base for vowels
-0A73 GURMUKHI URA
- * base for vowels
-0A74 GURMUKHI EK ONKAR
- * God is One
-@@ 0A80 Gujarati 0AFF
-@ Based on ISCII 1988
-@ Various signs
-0A81 GUJARATI SIGN CANDRABINDU
-0A82 GUJARATI SIGN ANUSVARA
-0A83 GUJARATI SIGN VISARGA
-@ Independent vowels
-0A85 GUJARATI LETTER A
-0A86 GUJARATI LETTER AA
-0A87 GUJARATI LETTER I
-0A88 GUJARATI LETTER II
-0A89 GUJARATI LETTER U
-0A8A GUJARATI LETTER UU
-0A8B GUJARATI LETTER VOCALIC R
-0A8D GUJARATI VOWEL CANDRA E
-0A8F GUJARATI LETTER E
-0A90 GUJARATI LETTER AI
-0A91 GUJARATI VOWEL CANDRA O
-0A93 GUJARATI LETTER O
-0A94 GUJARATI LETTER AU
-@ Consonants
-0A95 GUJARATI LETTER KA
-0A96 GUJARATI LETTER KHA
-0A97 GUJARATI LETTER GA
-0A98 GUJARATI LETTER GHA
-0A99 GUJARATI LETTER NGA
-0A9A GUJARATI LETTER CA
-0A9B GUJARATI LETTER CHA
-0A9C GUJARATI LETTER JA
-0A9D GUJARATI LETTER JHA
-0A9E GUJARATI LETTER NYA
-0A9F GUJARATI LETTER TTA
-0AA0 GUJARATI LETTER TTHA
-0AA1 GUJARATI LETTER DDA
-0AA2 GUJARATI LETTER DDHA
-0AA3 GUJARATI LETTER NNA
-0AA4 GUJARATI LETTER TA
-0AA5 GUJARATI LETTER THA
-0AA6 GUJARATI LETTER DA
-0AA7 GUJARATI LETTER DHA
-0AA8 GUJARATI LETTER NA
-0AAA GUJARATI LETTER PA
-0AAB GUJARATI LETTER PHA
-0AAC GUJARATI LETTER BA
-0AAD GUJARATI LETTER BHA
-0AAE GUJARATI LETTER MA
-0AAF GUJARATI LETTER YA
-0AB0 GUJARATI LETTER RA
-0AB2 GUJARATI LETTER LA
-0AB3 GUJARATI LETTER LLA
-0AB5 GUJARATI LETTER VA
-0AB6 GUJARATI LETTER SHA
-0AB7 GUJARATI LETTER SSA
-0AB8 GUJARATI LETTER SA
-0AB9 GUJARATI LETTER HA
-@ Various signs
-0ABC GUJARATI SIGN NUKTA
- * for extending the alphabet to new letters
-0ABD GUJARATI SIGN AVAGRAHA
-@ Dependent vowel signs
-0ABE GUJARATI VOWEL SIGN AA
-0ABF GUJARATI VOWEL SIGN I
- * stands to the left of the consonant
-0AC0 GUJARATI VOWEL SIGN II
-0AC1 GUJARATI VOWEL SIGN U
-0AC2 GUJARATI VOWEL SIGN UU
-0AC3 GUJARATI VOWEL SIGN VOCALIC R
-0AC4 GUJARATI VOWEL SIGN VOCALIC RR
-0AC5 GUJARATI VOWEL SIGN CANDRA E
-0AC7 GUJARATI VOWEL SIGN E
-0AC8 GUJARATI VOWEL SIGN AI
-0AC9 GUJARATI VOWEL SIGN CANDRA O
-0ACB GUJARATI VOWEL SIGN O
-0ACC GUJARATI VOWEL SIGN AU
-@ Various signs
-0ACD GUJARATI SIGN VIRAMA
-0AD0 GUJARATI OM
-@ Generic additions
-0AE0 GUJARATI LETTER VOCALIC RR
-@ Digits
-0AE6 GUJARATI DIGIT ZERO
-0AE7 GUJARATI DIGIT ONE
-0AE8 GUJARATI DIGIT TWO
-0AE9 GUJARATI DIGIT THREE
-0AEA GUJARATI DIGIT FOUR
-0AEB GUJARATI DIGIT FIVE
-0AEC GUJARATI DIGIT SIX
-0AED GUJARATI DIGIT SEVEN
-0AEE GUJARATI DIGIT EIGHT
-0AEF GUJARATI DIGIT NINE
-@@ 0B00 Oriya 0B7F
-@ Based on ISCII 1988
-@ Various signs
-0B01 ORIYA SIGN CANDRABINDU
-0B02 ORIYA SIGN ANUSVARA
-0B03 ORIYA SIGN VISARGA
-@ Independent vowels
-0B05 ORIYA LETTER A
-0B06 ORIYA LETTER AA
-0B07 ORIYA LETTER I
-0B08 ORIYA LETTER II
-0B09 ORIYA LETTER U
-0B0A ORIYA LETTER UU
-0B0B ORIYA LETTER VOCALIC R
-0B0C ORIYA LETTER VOCALIC L
-0B0F ORIYA LETTER E
-0B10 ORIYA LETTER AI
-0B13 ORIYA LETTER O
-0B14 ORIYA LETTER AU
-@ Consonants
-0B15 ORIYA LETTER KA
-0B16 ORIYA LETTER KHA
-0B17 ORIYA LETTER GA
-0B18 ORIYA LETTER GHA
-0B19 ORIYA LETTER NGA
-0B1A ORIYA LETTER CA
-0B1B ORIYA LETTER CHA
-0B1C ORIYA LETTER JA
-0B1D ORIYA LETTER JHA
-0B1E ORIYA LETTER NYA
-0B1F ORIYA LETTER TTA
-0B20 ORIYA LETTER TTHA
-0B21 ORIYA LETTER DDA
-0B22 ORIYA LETTER DDHA
-0B23 ORIYA LETTER NNA
-0B24 ORIYA LETTER TA
-0B25 ORIYA LETTER THA
-0B26 ORIYA LETTER DA
-0B27 ORIYA LETTER DHA
-0B28 ORIYA LETTER NA
-0B2A ORIYA LETTER PA
-0B2B ORIYA LETTER PHA
-0B2C ORIYA LETTER BA
- = Oriya va, wa
-0B2D ORIYA LETTER BHA
-0B2E ORIYA LETTER MA
-0B2F ORIYA LETTER YA
-0B30 ORIYA LETTER RA
-0B32 ORIYA LETTER LA
-0B33 ORIYA LETTER LLA
-0B35 <reserved>
- x (oriya letter ba - 0B2C)
-0B36 ORIYA LETTER SHA
-0B37 ORIYA LETTER SSA
-0B38 ORIYA LETTER SA
-0B39 ORIYA LETTER HA
-@ Various signs
-0B3C ORIYA SIGN NUKTA
- * for extending the alphabet to new letters
-0B3D ORIYA SIGN AVAGRAHA
-@ Dependent vowel signs
-0B3E ORIYA VOWEL SIGN AA
-0B3F ORIYA VOWEL SIGN I
-0B40 ORIYA VOWEL SIGN II
-0B41 ORIYA VOWEL SIGN U
-0B42 ORIYA VOWEL SIGN UU
-0B43 ORIYA VOWEL SIGN VOCALIC R
-0B47 ORIYA VOWEL SIGN E
- * stands to the left of the consonant
-0B48 ORIYA VOWEL SIGN AI
- * pieces left of and above the consonant
- : 0B47 0B56
-0B4B ORIYA VOWEL SIGN O
- * pieces on both sides of the consonant
- : 0B47 0B3E
-0B4C ORIYA VOWEL SIGN AU
- * pieces on both sides of the consonant
- : 0B47 0B57
-@ Various signs
-0B4D ORIYA SIGN VIRAMA
-0B56 ORIYA AI LENGTH MARK
-0B57 ORIYA AU LENGTH MARK
-@ Additional consonants
-0B5C ORIYA LETTER RRA
- : 0B21 0B3C
-0B5D ORIYA LETTER RHA
- : 0B22 0B3C
-0B5F ORIYA LETTER YYA
-@ Generic additions
-0B60 ORIYA LETTER VOCALIC RR
-0B61 ORIYA LETTER VOCALIC LL
-@ Digits
-0B66 ORIYA DIGIT ZERO
-0B67 ORIYA DIGIT ONE
-0B68 ORIYA DIGIT TWO
-0B69 ORIYA DIGIT THREE
-0B6A ORIYA DIGIT FOUR
-0B6B ORIYA DIGIT FIVE
-0B6C ORIYA DIGIT SIX
-0B6D ORIYA DIGIT SEVEN
-0B6E ORIYA DIGIT EIGHT
-0B6F ORIYA DIGIT NINE
-@ Oriya-specific addition
-0B70 ORIYA ISSHAR
-@@ 0B80 Tamil 0BFF
-@ Based on ISCII 1988
-@ Various signs
-0B82 TAMIL SIGN ANUSVARA
-0B83 TAMIL SIGN VISARGA
- = aytham
-@ Independent vowels
-0B85 TAMIL LETTER A
-0B86 TAMIL LETTER AA
-0B87 TAMIL LETTER I
-0B88 TAMIL LETTER II
-0B89 TAMIL LETTER U
-0B8A TAMIL LETTER UU
-0B8E TAMIL LETTER E
-0B8F TAMIL LETTER EE
-0B90 TAMIL LETTER AI
-0B92 TAMIL LETTER O
-0B93 TAMIL LETTER OO
-0B94 TAMIL LETTER AU
- : 0B92 0BD7
-@ Consonants
-0B95 TAMIL LETTER KA
-0B99 TAMIL LETTER NGA
-0B9A TAMIL LETTER CA
-0B9C TAMIL LETTER JA
-0B9E TAMIL LETTER NYA
-0B9F TAMIL LETTER TTA
-0BA3 TAMIL LETTER NNA
-0BA4 TAMIL LETTER TA
-0BA8 TAMIL LETTER NA
-0BA9 TAMIL LETTER NNNA
-0BAA TAMIL LETTER PA
-0BAE TAMIL LETTER MA
-0BAF TAMIL LETTER YA
-0BB0 TAMIL LETTER RA
-0BB1 TAMIL LETTER RRA
-0BB2 TAMIL LETTER LA
-0BB3 TAMIL LETTER LLA
-0BB4 TAMIL LETTER LLLA
-0BB5 TAMIL LETTER VA
-0BB7 TAMIL LETTER SSA
-0BB8 TAMIL LETTER SA
-0BB9 TAMIL LETTER HA
-@ Dependent vowel signs
-0BBE TAMIL VOWEL SIGN AA
-0BBF TAMIL VOWEL SIGN I
-0BC0 TAMIL VOWEL SIGN II
-0BC1 TAMIL VOWEL SIGN U
-0BC2 TAMIL VOWEL SIGN UU
-0BC6 TAMIL VOWEL SIGN E
- * stands to the left of the consonant
-0BC7 TAMIL VOWEL SIGN EE
- * stands to the left of the consonant
-0BC8 TAMIL VOWEL SIGN AI
- * stands to the left of the consonant
-0BCA TAMIL VOWEL SIGN O
- * pieces on both sides of the consonant
- : 0BC6 0BBE
-0BCB TAMIL VOWEL SIGN OO
- * pieces on both sides of the consonant
- : 0BC7 0BBE
-0BCC TAMIL VOWEL SIGN AU
- * pieces on both sides of the consonant
- : 0BC6 0BD7
-@ Various signs
-0BCD TAMIL SIGN VIRAMA
-0BD7 TAMIL AU LENGTH MARK
-@ Digits
-0BE6 <reserved>
- x (digit zero - 0030)
-0BE7 TAMIL DIGIT ONE
-0BE8 TAMIL DIGIT TWO
-0BE9 TAMIL DIGIT THREE
-0BEA TAMIL DIGIT FOUR
-0BEB TAMIL DIGIT FIVE
-0BEC TAMIL DIGIT SIX
-0BED TAMIL DIGIT SEVEN
-0BEE TAMIL DIGIT EIGHT
-0BEF TAMIL DIGIT NINE
-@ Tamil-specific additions
-0BF0 TAMIL NUMBER TEN
-0BF1 TAMIL NUMBER ONE HUNDRED
-0BF2 TAMIL NUMBER ONE THOUSAND
-@@ 0C00 Telugu 0C7F
-@ Based on ISCII 1988
-@ Various signs
-0C01 TELUGU SIGN CANDRABINDU
-0C02 TELUGU SIGN ANUSVARA
-0C03 TELUGU SIGN VISARGA
-@ Independent vowels
-0C05 TELUGU LETTER A
-0C06 TELUGU LETTER AA
-0C07 TELUGU LETTER I
-0C08 TELUGU LETTER II
-0C09 TELUGU LETTER U
-0C0A TELUGU LETTER UU
-0C0B TELUGU LETTER VOCALIC R
-0C0C TELUGU LETTER VOCALIC L
-0C0E TELUGU LETTER E
-0C0F TELUGU LETTER EE
-0C10 TELUGU LETTER AI
-0C12 TELUGU LETTER O
-0C13 TELUGU LETTER OO
-0C14 TELUGU LETTER AU
-@ Consonants
-0C15 TELUGU LETTER KA
-0C16 TELUGU LETTER KHA
-0C17 TELUGU LETTER GA
-0C18 TELUGU LETTER GHA
-0C19 TELUGU LETTER NGA
-0C1A TELUGU LETTER CA
-0C1B TELUGU LETTER CHA
-0C1C TELUGU LETTER JA
-0C1D TELUGU LETTER JHA
-0C1E TELUGU LETTER NYA
-0C1F TELUGU LETTER TTA
-0C20 TELUGU LETTER TTHA
-0C21 TELUGU LETTER DDA
-0C22 TELUGU LETTER DDHA
-0C23 TELUGU LETTER NNA
-0C24 TELUGU LETTER TA
-0C25 TELUGU LETTER THA
-0C26 TELUGU LETTER DA
-0C27 TELUGU LETTER DHA
-0C28 TELUGU LETTER NA
-0C2A TELUGU LETTER PA
-0C2B TELUGU LETTER PHA
-0C2C TELUGU LETTER BA
-0C2D TELUGU LETTER BHA
-0C2E TELUGU LETTER MA
-0C2F TELUGU LETTER YA
-0C30 TELUGU LETTER RA
-0C31 TELUGU LETTER RRA
-0C32 TELUGU LETTER LA
-0C33 TELUGU LETTER LLA
-0C35 TELUGU LETTER VA
-0C36 TELUGU LETTER SHA
-0C37 TELUGU LETTER SSA
-0C38 TELUGU LETTER SA
-0C39 TELUGU LETTER HA
-@ Dependent vowel signs
-0C3E TELUGU VOWEL SIGN AA
-0C3F TELUGU VOWEL SIGN I
-0C40 TELUGU VOWEL SIGN II
-0C41 TELUGU VOWEL SIGN U
-0C42 TELUGU VOWEL SIGN UU
-0C43 TELUGU VOWEL SIGN VOCALIC R
-0C44 TELUGU VOWEL SIGN VOCALIC RR
-0C46 TELUGU VOWEL SIGN E
-0C47 TELUGU VOWEL SIGN EE
-0C48 TELUGU VOWEL SIGN AI
- : 0C46 0C56
-0C4A TELUGU VOWEL SIGN O
-0C4B TELUGU VOWEL SIGN OO
-0C4C TELUGU VOWEL SIGN AU
-@ Various signs
-0C4D TELUGU SIGN VIRAMA
-0C55 TELUGU LENGTH MARK
-0C56 TELUGU AI LENGTH MARK
-@ Generic additions
-0C60 TELUGU LETTER VOCALIC RR
-0C61 TELUGU LETTER VOCALIC LL
-@ Digits
-0C66 TELUGU DIGIT ZERO
-0C67 TELUGU DIGIT ONE
-0C68 TELUGU DIGIT TWO
-0C69 TELUGU DIGIT THREE
-0C6A TELUGU DIGIT FOUR
-0C6B TELUGU DIGIT FIVE
-0C6C TELUGU DIGIT SIX
-0C6D TELUGU DIGIT SEVEN
-0C6E TELUGU DIGIT EIGHT
-0C6F TELUGU DIGIT NINE
-@@ 0C80 Kannada 0CFF
-@ Based on ISCII 1988
-@ Various signs
-0C82 KANNADA SIGN ANUSVARA
-0C83 KANNADA SIGN VISARGA
-@ Independent vowels
-0C85 KANNADA LETTER A
-0C86 KANNADA LETTER AA
-0C87 KANNADA LETTER I
-0C88 KANNADA LETTER II
-0C89 KANNADA LETTER U
-0C8A KANNADA LETTER UU
-0C8B KANNADA LETTER VOCALIC R
-0C8C KANNADA LETTER VOCALIC L
-0C8E KANNADA LETTER E
-0C8F KANNADA LETTER EE
-0C90 KANNADA LETTER AI
-0C92 KANNADA LETTER O
-0C93 KANNADA LETTER OO
-0C94 KANNADA LETTER AU
-@ Consonants
-0C95 KANNADA LETTER KA
-0C96 KANNADA LETTER KHA
-0C97 KANNADA LETTER GA
-0C98 KANNADA LETTER GHA
-0C99 KANNADA LETTER NGA
-0C9A KANNADA LETTER CA
-0C9B KANNADA LETTER CHA
-0C9C KANNADA LETTER JA
-0C9D KANNADA LETTER JHA
-0C9E KANNADA LETTER NYA
-0C9F KANNADA LETTER TTA
-0CA0 KANNADA LETTER TTHA
-0CA1 KANNADA LETTER DDA
-0CA2 KANNADA LETTER DDHA
-0CA3 KANNADA LETTER NNA
-0CA4 KANNADA LETTER TA
-0CA5 KANNADA LETTER THA
-0CA6 KANNADA LETTER DA
-0CA7 KANNADA LETTER DHA
-0CA8 KANNADA LETTER NA
-0CAA KANNADA LETTER PA
-0CAB KANNADA LETTER PHA
-0CAC KANNADA LETTER BA
-0CAD KANNADA LETTER BHA
-0CAE KANNADA LETTER MA
-0CAF KANNADA LETTER YA
-0CB0 KANNADA LETTER RA
-0CB1 KANNADA LETTER RRA
-0CB2 KANNADA LETTER LA
-0CB3 KANNADA LETTER LLA
-0CB5 KANNADA LETTER VA
-0CB6 KANNADA LETTER SHA
-0CB7 KANNADA LETTER SSA
-0CB8 KANNADA LETTER SA
-0CB9 KANNADA LETTER HA
-@ Dependent vowel signs
-0CBE KANNADA VOWEL SIGN AA
-0CBF KANNADA VOWEL SIGN I
-0CC0 KANNADA VOWEL SIGN II
- : 0CBF 0CD5
-0CC1 KANNADA VOWEL SIGN U
-0CC2 KANNADA VOWEL SIGN UU
-0CC3 KANNADA VOWEL SIGN VOCALIC R
-0CC4 KANNADA VOWEL SIGN VOCALIC RR
-0CC6 KANNADA VOWEL SIGN E
-0CC7 KANNADA VOWEL SIGN EE
- : 0CC6 0CD5
-0CC8 KANNADA VOWEL SIGN AI
- : 0CC6 0CD6
-0CCA KANNADA VOWEL SIGN O
- : 0CC6 0CC2
-0CCB KANNADA VOWEL SIGN OO
- : 0CCA 0CD5
-0CCC KANNADA VOWEL SIGN AU
-@ Various signs
-0CCD KANNADA SIGN VIRAMA
-0CD5 KANNADA LENGTH MARK
-0CD6 KANNADA AI LENGTH MARK
-@ Additional consonants
-0CDE KANNADA LETTER FA
- * obsolete historic letter
- * name is a mistake for LLLA
-@ Generic additions
-0CE0 KANNADA LETTER VOCALIC RR
-0CE1 KANNADA LETTER VOCALIC LL
-@ Digits
-0CE6 KANNADA DIGIT ZERO
-0CE7 KANNADA DIGIT ONE
-0CE8 KANNADA DIGIT TWO
-0CE9 KANNADA DIGIT THREE
-0CEA KANNADA DIGIT FOUR
-0CEB KANNADA DIGIT FIVE
-0CEC KANNADA DIGIT SIX
-0CED KANNADA DIGIT SEVEN
-0CEE KANNADA DIGIT EIGHT
-0CEF KANNADA DIGIT NINE
-@@ 0D00 Malayalam 0D7F
-@ Based on ISCII 1988
-@ Various signs
-0D02 MALAYALAM SIGN ANUSVARA
-0D03 MALAYALAM SIGN VISARGA
-@ Independent vowels
-0D05 MALAYALAM LETTER A
-0D06 MALAYALAM LETTER AA
-0D07 MALAYALAM LETTER I
-0D08 MALAYALAM LETTER II
-0D09 MALAYALAM LETTER U
-0D0A MALAYALAM LETTER UU
-0D0B MALAYALAM LETTER VOCALIC R
-0D0C MALAYALAM LETTER VOCALIC L
-0D0E MALAYALAM LETTER E
-0D0F MALAYALAM LETTER EE
-0D10 MALAYALAM LETTER AI
-0D12 MALAYALAM LETTER O
-0D13 MALAYALAM LETTER OO
-0D14 MALAYALAM LETTER AU
-@ Consonants
-0D15 MALAYALAM LETTER KA
-0D16 MALAYALAM LETTER KHA
-0D17 MALAYALAM LETTER GA
-0D18 MALAYALAM LETTER GHA
-0D19 MALAYALAM LETTER NGA
-0D1A MALAYALAM LETTER CA
-0D1B MALAYALAM LETTER CHA
-0D1C MALAYALAM LETTER JA
-0D1D MALAYALAM LETTER JHA
-0D1E MALAYALAM LETTER NYA
-0D1F MALAYALAM LETTER TTA
-0D20 MALAYALAM LETTER TTHA
-0D21 MALAYALAM LETTER DDA
-0D22 MALAYALAM LETTER DDHA
-0D23 MALAYALAM LETTER NNA
-0D24 MALAYALAM LETTER TA
-0D25 MALAYALAM LETTER THA
-0D26 MALAYALAM LETTER DA
-0D27 MALAYALAM LETTER DHA
-0D28 MALAYALAM LETTER NA
-0D2A MALAYALAM LETTER PA
-0D2B MALAYALAM LETTER PHA
-0D2C MALAYALAM LETTER BA
-0D2D MALAYALAM LETTER BHA
-0D2E MALAYALAM LETTER MA
-0D2F MALAYALAM LETTER YA
-0D30 MALAYALAM LETTER RA
-0D31 MALAYALAM LETTER RRA
-0D32 MALAYALAM LETTER LA
-0D33 MALAYALAM LETTER LLA
-0D34 MALAYALAM LETTER LLLA
-0D35 MALAYALAM LETTER VA
-0D36 MALAYALAM LETTER SHA
-0D37 MALAYALAM LETTER SSA
-0D38 MALAYALAM LETTER SA
-0D39 MALAYALAM LETTER HA
-@ Dependent vowel signs
-0D3E MALAYALAM VOWEL SIGN AA
-0D3F MALAYALAM VOWEL SIGN I
-0D40 MALAYALAM VOWEL SIGN II
-0D41 MALAYALAM VOWEL SIGN U
-0D42 MALAYALAM VOWEL SIGN UU
-0D43 MALAYALAM VOWEL SIGN VOCALIC R
-0D46 MALAYALAM VOWEL SIGN E
- * stands to the left of the consonant
-0D47 MALAYALAM VOWEL SIGN EE
- * stands to the left of the consonant
-0D48 MALAYALAM VOWEL SIGN AI
- * stands to the left of the consonant
-0D49 <reserved>
-0D4A MALAYALAM VOWEL SIGN O
- * pieces on both sides of the consonant
- : 0D46 0D3E
-0D4B MALAYALAM VOWEL SIGN OO
- * pieces on both sides of the consonant
- : 0D47 0D3E
-0D4C MALAYALAM VOWEL SIGN AU
- * pieces on both sides of the consonant
- : 0D46 0D57
-@ Various signs
-0D4D MALAYALAM SIGN VIRAMA
- = vowel half-u
-0D57 MALAYALAM AU LENGTH MARK
-@ Generic additions
-0D60 MALAYALAM LETTER VOCALIC RR
-0D61 MALAYALAM LETTER VOCALIC LL
-@ Digits
-0D66 MALAYALAM DIGIT ZERO
-0D67 MALAYALAM DIGIT ONE
-0D68 MALAYALAM DIGIT TWO
-0D69 MALAYALAM DIGIT THREE
-0D6A MALAYALAM DIGIT FOUR
-0D6B MALAYALAM DIGIT FIVE
-0D6C MALAYALAM DIGIT SIX
-0D6D MALAYALAM DIGIT SEVEN
-0D6E MALAYALAM DIGIT EIGHT
-0D6F MALAYALAM DIGIT NINE
-@@ 0D80 Sinhala 0DFF
-@ Various signs
-0D82 SINHALA SIGN ANUSVARAYA
- = anusvara
-0D83 SINHALA SIGN VISARGAYA
- = visarga
-@ Independent vowels
-0D85 SINHALA LETTER AYANNA
- = sinhala letter a
-0D86 SINHALA LETTER AAYANNA
- = sinhala letter aa
-0D87 SINHALA LETTER AEYANNA
- = sinhala letter ae
-0D88 SINHALA LETTER AEEYANNA
- = sinhala letter aae
-0D89 SINHALA LETTER IYANNA
- = sinhala letter i
-0D8A SINHALA LETTER IIYANNA
- = sinhala letter ii
-0D8B SINHALA LETTER UYANNA
- = sinhala letter u
-0D8C SINHALA LETTER UUYANNA
- = sinhala letter uu
-0D8D SINHALA LETTER IRUYANNA
- = sinhala letter vocalic r
-0D8E SINHALA LETTER IRUUYANNA
- = sinhala letter vocalic rr
-0D8F SINHALA LETTER ILUYANNA
- = sinhala letter vocalic l
-0D90 SINHALA LETTER ILUUYANNA
- = sinhala letter vocalic ll
-0D91 SINHALA LETTER EYANNA
- = sinhala letter e
-0D92 SINHALA LETTER EEYANNA
- = sinhala letter ee
-0D93 SINHALA LETTER AIYANNA
- = sinhala letter ai
-0D94 SINHALA LETTER OYANNA
- = sinhala letter o
-0D95 SINHALA LETTER OOYANNA
- = sinhala letter oo
-0D96 SINHALA LETTER AUYANNA
- = sinhala letter au
-@ Consonants
-0D9A SINHALA LETTER ALPAPRAANA KAYANNA
- = sinhala letter ka
-0D9B SINHALA LETTER MAHAAPRAANA KAYANNA
- = sinhala letter kha
-0D9C SINHALA LETTER ALPAPRAANA GAYANNA
- = sinhala letter ga
-0D9D SINHALA LETTER MAHAAPRAANA GAYANNA
- = sinhala letter gha
-0D9E SINHALA LETTER KANTAJA NAASIKYAYA
- = sinhala letter nga
-0D9F SINHALA LETTER SANYAKA GAYANNA
- = sinhala letter nnga
-0DA0 SINHALA LETTER ALPAPRAANA CAYANNA
- = sinhala letter ca
-0DA1 SINHALA LETTER MAHAAPRAANA CAYANNA
- = sinhala letter cha
-0DA2 SINHALA LETTER ALPAPRAANA JAYANNA
- = sinhala letter ja
-0DA3 SINHALA LETTER MAHAAPRAANA JAYANNA
- = sinhala letter jha
-0DA4 SINHALA LETTER TAALUJA NAASIKYAYA
- = sinhala letter nya
-0DA5 SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
- = sinhala letter jnya
-0DA6 SINHALA LETTER SANYAKA JAYANNA
- = sinhala letter nyja
-0DA7 SINHALA LETTER ALPAPRAANA TTAYANNA
- = sinhala letter tta
-0DA8 SINHALA LETTER MAHAAPRAANA TTAYANNA
- = sinhala letter ttha
-0DA9 SINHALA LETTER ALPAPRAANA DDAYANNA
- = sinhala letter dda
-0DAA SINHALA LETTER MAHAAPRAANA DDAYANNA
- = sinhala letter ddha
-0DAB SINHALA LETTER MUURDHAJA NAYANNA
- = sinhala letter nna
-0DAC SINHALA LETTER SANYAKA DDAYANNA
- = sinhala letter nndda
-0DAD SINHALA LETTER ALPAPRAANA TAYANNA
- = sinhala letter ta
-0DAE SINHALA LETTER MAHAAPRAANA TAYANNA
- = sinhala letter tha
-0DAF SINHALA LETTER ALPAPRAANA DAYANNA
- = sinhala letter da
-0DB0 SINHALA LETTER MAHAAPRAANA DAYANNA
- = sinhala letter dha
-0DB1 SINHALA LETTER DANTAJA NAYANNA
- = sinhala letter na
-0DB3 SINHALA LETTER SANYAKA DAYANNA
- = sinhala letter nda
-0DB4 SINHALA LETTER ALPAPRAANA PAYANNA
- = sinhala letter pa
-0DB5 SINHALA LETTER MAHAAPRAANA PAYANNA
- = sinhala letter pha
-0DB6 SINHALA LETTER ALPAPRAANA BAYANNA
- = sinhala letter ba
-0DB7 SINHALA LETTER MAHAAPRAANA BAYANNA
- = sinhala letter bha
-0DB8 SINHALA LETTER MAYANNA
- = sinhala letter ma
-0DB9 SINHALA LETTER AMBA BAYANNA
- = sinhala letter mba
-0DBA SINHALA LETTER YAYANNA
- = sinhala letter ya
-0DBB SINHALA LETTER RAYANNA
- = sinhala letter ra
-0DBD SINHALA LETTER DANTAJA LAYANNA
- = sinhala letter la
- * dental
-0DC0 SINHALA LETTER VAYANNA
- = sinhala letter va
-0DC1 SINHALA LETTER TAALUJA SAYANNA
- = sinhala letter sha
-0DC2 SINHALA LETTER MUURDHAJA SAYANNA
- = sinhala letter ssa
- * retroflex
-0DC3 SINHALA LETTER DANTAJA SAYANNA
- = sinhala letter sa
- * dental
-0DC4 SINHALA LETTER HAYANNA
- = sinhala letter ha
-0DC5 SINHALA LETTER MUURDHAJA LAYANNA
- = sinhala letter lla
- * retroflex
-0DC6 SINHALA LETTER FAYANNA
- = sinhala letter fa
-@ Sign
-0DCA SINHALA SIGN AL-LAKUNA
- = virama
-@ Dependent vowel signs
-0DCF SINHALA VOWEL SIGN AELA-PILLA
- = sinhala vowel sign aa
-0DD0 SINHALA VOWEL SIGN KETTI AEDA-PILLA
- = sinhala vowel sign ae
-0DD1 SINHALA VOWEL SIGN DIGA AEDA-PILLA
- = sinhala vowel sign aae
-0DD2 SINHALA VOWEL SIGN KETTI IS-PILLA
- = sinhala vowel sign i
-0DD3 SINHALA VOWEL SIGN DIGA IS-PILLA
- = sinhala vowel sign ii
-0DD4 SINHALA VOWEL SIGN KETTI PAA-PILLA
- = sinhala vowel sign u
-0DD6 SINHALA VOWEL SIGN DIGA PAA-PILLA
- = sinhala vowel sign uu
-0DD8 SINHALA VOWEL SIGN GAETTA-PILLA
- = sinhala vowel sign vocalic r
-0DD9 SINHALA VOWEL SIGN KOMBUVA
- = sinhala vowel sign e
-0DDA SINHALA VOWEL SIGN DIGA KOMBUVA
- = sinhala vowel sign ee
- : 0DD9 0DCA
-0DDB SINHALA VOWEL SIGN KOMBU DEKA
- = sinhala vowel sign ai
-0DDC SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
- = sinhala vowel sign o
- : 0DD9 0DCF
-0DDD SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
- = sinhala vowel sign oo
- : 0DDC 0DCA
-0DDE SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
- = sinhala vowel sign au
- : 0DD9 0DDF
-0DDF SINHALA VOWEL SIGN GAYANUKITTA
- = sinhala vowel sign vocalic l
-@ Additional dependent vowel signs
-0DF2 SINHALA VOWEL SIGN DIGA GAETTA-PILLA
- = sinhala vowel sign vocalic rr
-0DF3 SINHALA VOWEL SIGN DIGA GAYANUKITTA
- = sinhala vowel sign vocalic ll
-@ Punctuation
-0DF4 SINHALA PUNCTUATION KUNDDALIYA
-@@ 0E00 Thai 0E7F
-@ Based on TIS 620-2533
-@ Consonants
-0E01 THAI CHARACTER KO KAI
-0E02 THAI CHARACTER KHO KHAI
-0E03 THAI CHARACTER KHO KHUAT
-0E04 THAI CHARACTER KHO KHWAI
-0E05 THAI CHARACTER KHO KHON
-0E06 THAI CHARACTER KHO RAKHANG
-0E07 THAI CHARACTER NGO NGU
-0E08 THAI CHARACTER CHO CHAN
-0E09 THAI CHARACTER CHO CHING
-0E0A THAI CHARACTER CHO CHANG
-0E0B THAI CHARACTER SO SO
-0E0C THAI CHARACTER CHO CHOE
-0E0D THAI CHARACTER YO YING
-0E0E THAI CHARACTER DO CHADA
-0E0F THAI CHARACTER TO PATAK
-0E10 THAI CHARACTER THO THAN
-0E11 THAI CHARACTER THO NANGMONTHO
-0E12 THAI CHARACTER THO PHUTHAO
-0E13 THAI CHARACTER NO NEN
-0E14 THAI CHARACTER DO DEK
-0E15 THAI CHARACTER TO TAO
-0E16 THAI CHARACTER THO THUNG
-0E17 THAI CHARACTER THO THAHAN
-0E18 THAI CHARACTER THO THONG
-0E19 THAI CHARACTER NO NU
-0E1A THAI CHARACTER BO BAIMAI
-0E1B THAI CHARACTER PO PLA
-0E1C THAI CHARACTER PHO PHUNG
-0E1D THAI CHARACTER FO FA
-0E1E THAI CHARACTER PHO PHAN
-0E1F THAI CHARACTER FO FAN
-0E20 THAI CHARACTER PHO SAMPHAO
-0E21 THAI CHARACTER MO MA
-0E22 THAI CHARACTER YO YAK
-0E23 THAI CHARACTER RO RUA
-0E24 THAI CHARACTER RU
- * independent vowel letter used to write Sanskrit
-0E25 THAI CHARACTER LO LING
-0E26 THAI CHARACTER LU
- * independent vowel letter used to write Sanskrit
-0E27 THAI CHARACTER WO WAEN
-0E28 THAI CHARACTER SO SALA
-0E29 THAI CHARACTER SO RUSI
-0E2A THAI CHARACTER SO SUA
-0E2B THAI CHARACTER HO HIP
-0E2C THAI CHARACTER LO CHULA
-0E2D THAI CHARACTER O ANG
-0E2E THAI CHARACTER HO NOKHUK
-@ Sign
-0E2F THAI CHARACTER PAIYANNOI (paiyan noi)
- * ellipsis, abbreviation
-@ Vowels
-0E30 THAI CHARACTER SARA A
-0E31 THAI CHARACTER MAI HAN-AKAT
-0E32 THAI CHARACTER SARA AA
-0E33 THAI CHARACTER SARA AM
- # 0E4D 0E32
-0E34 THAI CHARACTER SARA I
-0E35 THAI CHARACTER SARA II
-0E36 THAI CHARACTER SARA UE
-0E37 THAI CHARACTER SARA UEE (sara uue)
- = sara uue
-0E38 THAI CHARACTER SARA U
-0E39 THAI CHARACTER SARA UU
-0E3A THAI CHARACTER PHINTHU
- * Pali virama
-@ Currency symbol
-0E3F THAI CURRENCY SYMBOL BAHT
-@ Vowels
-0E40 THAI CHARACTER SARA E
-0E41 THAI CHARACTER SARA AE
-0E42 THAI CHARACTER SARA O
-0E43 THAI CHARACTER SARA AI MAIMUAN (sara ai mai muan)
-0E44 THAI CHARACTER SARA AI MAIMALAI (sara ai mai malai)
-@ Signs
-0E45 THAI CHARACTER LAKKHANGYAO (lakkhang yao)
-0E46 THAI CHARACTER MAIYAMOK (mai yamok)
- * repetition
-@ Vowel
-0E47 THAI CHARACTER MAITAIKHU (mai taikhu)
-@ Tone marks
-0E48 THAI CHARACTER MAI EK
-0E49 THAI CHARACTER MAI THO
-0E4A THAI CHARACTER MAI TRI
-0E4B THAI CHARACTER MAI CHATTAWA
-@ Signs
-0E4C THAI CHARACTER THANTHAKHAT
- * cancellation mark
-0E4D THAI CHARACTER NIKHAHIT (nikkhahit)
- = nikkhahit
- * final nasal
-0E4E THAI CHARACTER YAMAKKAN
-0E4F THAI CHARACTER FONGMAN
- * used as a bullet
- x (khmer sign phnaek muan - 17D9)
-@ Digits
-0E50 THAI DIGIT ZERO
-0E51 THAI DIGIT ONE
-0E52 THAI DIGIT TWO
-0E53 THAI DIGIT THREE
-0E54 THAI DIGIT FOUR
-0E55 THAI DIGIT FIVE
-0E56 THAI DIGIT SIX
-0E57 THAI DIGIT SEVEN
-0E58 THAI DIGIT EIGHT
-0E59 THAI DIGIT NINE
-@ Signs
-0E5A THAI CHARACTER ANGKHANKHU
- * used to mark end of long sections
- * used in combination with 0E30 to mark end of a verse
-0E5B THAI CHARACTER KHOMUT
- * used to mark end of chapter or document
- x (khmer sign koomuut - 17DA)
-@@ 0E80 Lao 0EFF
-@ Based on TIS 620-2529
-@ Consonants
-0E81 LAO LETTER KO
-0E82 LAO LETTER KHO SUNG
-0E84 LAO LETTER KHO TAM
-0E87 LAO LETTER NGO
-0E88 LAO LETTER CO
-0E8A LAO LETTER SO TAM
-0E8D LAO LETTER NYO
-0E94 LAO LETTER DO
-0E95 LAO LETTER TO
-0E96 LAO LETTER THO SUNG
-0E97 LAO LETTER THO TAM
-0E99 LAO LETTER NO
-0E9A LAO LETTER BO
-0E9B LAO LETTER PO
-0E9C LAO LETTER PHO SUNG
-0E9D LAO LETTER FO TAM
-0E9E LAO LETTER PHO TAM
-0E9F LAO LETTER FO SUNG
-0EA1 LAO LETTER MO
-0EA2 LAO LETTER YO
-0EA3 LAO LETTER LO LING
-0EA5 LAO LETTER LO LOOT
-0EA7 LAO LETTER WO
-0EAA LAO LETTER SO SUNG
-0EAB LAO LETTER HO SUNG
-0EAD LAO LETTER O
-0EAE LAO LETTER HO TAM
-@ Sign
-0EAF LAO ELLIPSIS
-@ Vowels
-0EB0 LAO VOWEL SIGN A
-0EB1 LAO VOWEL SIGN MAI KAN
- * vowel shortener
-0EB2 LAO VOWEL SIGN AA
-0EB3 LAO VOWEL SIGN AM
- # 0ECD 0EB2
-0EB4 LAO VOWEL SIGN I
-0EB5 LAO VOWEL SIGN II
-0EB6 LAO VOWEL SIGN Y
-0EB7 LAO VOWEL SIGN YY
-0EB8 LAO VOWEL SIGN U
-0EB9 LAO VOWEL SIGN UU
-0EBB LAO VOWEL SIGN MAI KON
-@ Signs
-0EBC LAO SEMIVOWEL SIGN LO
-0EBD LAO SEMIVOWEL SIGN NYO
-@ Vowels
-0EC0 LAO VOWEL SIGN E
-0EC1 LAO VOWEL SIGN EI
-0EC2 LAO VOWEL SIGN O
-0EC3 LAO VOWEL SIGN AY
-0EC4 LAO VOWEL SIGN AI
-@ Sign
-0EC6 LAO KO LA
- * repetition
-@ Tone marks
-0EC8 LAO TONE MAI EK
-0EC9 LAO TONE MAI THO
-0ECA LAO TONE MAI TI
-0ECB LAO TONE MAI CATAWA
-@ Signs
-0ECC LAO CANCELLATION MARK
-0ECD LAO NIGGAHITA
- * final nasal
-@ Digits
-0ED0 LAO DIGIT ZERO
-0ED1 LAO DIGIT ONE
-0ED2 LAO DIGIT TWO
-0ED3 LAO DIGIT THREE
-0ED4 LAO DIGIT FOUR
-0ED5 LAO DIGIT FIVE
-0ED6 LAO DIGIT SIX
-0ED7 LAO DIGIT SEVEN
-0ED8 LAO DIGIT EIGHT
-0ED9 LAO DIGIT NINE
-@ Digraphs
-0EDC LAO HO NO
- # 0EAB 0E99
-0EDD LAO HO MO
- # 0EAB 0EA1
-@@ 0F00 Tibetan 0FFF
-@ Syllable
-0F00 TIBETAN SYLLABLE OM
-@ Head marks
-0F01 TIBETAN MARK GTER YIG MGO TRUNCATED A (ter yik go a thung)
-0F02 TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA (ter yik go wum nam chey ma)
-0F03 TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA (ter yik go wum ter tsek ma)
-0F04 TIBETAN MARK INITIAL YIG MGO MDUN MA (yik go dun ma)
- * honorific; marks beginning of text or start of new folio
- x (mongolian birga - 1800)
-0F05 TIBETAN MARK CLOSING YIG MGO SGAB MA (yik go kab ma)
- * follows and ligates with initial yig-mgo
-0F06 TIBETAN MARK CARET YIG MGO PHUR SHAD MA (yik go pur shey ma)
-0F07 TIBETAN MARK YIG MGO TSHEG SHAD MA (yik go tsek shey ma)
-@ Marks and signs
-0F08 TIBETAN MARK SBRUL SHAD (drul shey)
- * separates sections of meaning equivalent to topics and sub-topics
-0F09 TIBETAN MARK BSKUR YIG MGO (kur yik go)
- * list enumerator, used in Bhutan
-0F0A TIBETAN MARK BKA- SHOG YIG MGO (ka sho yik go)
- * petition honorific, used in Bhutan
-0F0B TIBETAN MARK INTERSYLLABIC TSHEG (tsek)
- * morpheme delimiter (approximate meaning)
- * the normal tsheg; provides a break opportunity
- * character name is a misnomer
-0F0C TIBETAN MARK DELIMITER TSHEG BSTAR (tsek tar)
- * a non-breaking tsheg; inhibits line breaking
- * character name is a misnomer
- # <noBreak> 0F0B
-0F0D TIBETAN MARK SHAD (shey)
- * marks end of a section of text (tshig-grub)
- x (devanagari danda - 0964)
-0F0E TIBETAN MARK NYIS SHAD (nyi shey)
- * marks end of a whole topic (don-tshan)
- x (devanagari double danda - 0965)
-0F0F TIBETAN MARK TSHEG SHAD (tsek shey)
-0F10 TIBETAN MARK NYIS TSHEG SHAD (nyi tsek shey)
-0F11 TIBETAN MARK RIN CHEN SPUNGS SHAD (rinchen pung shey)
- * shad which follows a tsheg-bar that starts a new line
-0F12 TIBETAN MARK RGYA GRAM SHAD (gya tram shey)
-0F13 TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN (dzu ta me long chen)
-0F14 TIBETAN MARK GTER TSHEG (ter tsek)
- * used as a comma-like text delimiter
- x (khmer sign camnuc pii kuuh - 17D6)
-@ Astrological signs
-0F15 TIBETAN LOGOTYPE SIGN CHAD RTAGS (che ta)
-0F16 TIBETAN LOGOTYPE SIGN LHAG RTAGS (hlak ta)
-0F17 TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS (trachen char ta)
-0F18 TIBETAN ASTROLOGICAL SIGN -KHYUD PA (kyu pa)
- * combines with digits
-0F19 TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS (dong tsu)
- * combines with digits
-0F1A TIBETAN SIGN RDEL DKAR GCIG (deka chig)
-0F1B TIBETAN SIGN RDEL DKAR GNYIS (deka nyi)
-0F1C TIBETAN SIGN RDEL DKAR GSUM (deka sum)
-0F1D TIBETAN SIGN RDEL NAG GCIG (dena chig)
-0F1E TIBETAN SIGN RDEL NAG GNYIS (dena nyi)
-0F1F TIBETAN SIGN RDEL DKAR RDEL NAG (deka dena)
-@ Digits
-0F20 TIBETAN DIGIT ZERO
-0F21 TIBETAN DIGIT ONE
-0F22 TIBETAN DIGIT TWO
-0F23 TIBETAN DIGIT THREE
-0F24 TIBETAN DIGIT FOUR
-0F25 TIBETAN DIGIT FIVE
-0F26 TIBETAN DIGIT SIX
-0F27 TIBETAN DIGIT SEVEN
-0F28 TIBETAN DIGIT EIGHT
-0F29 TIBETAN DIGIT NINE
-@ Digits minus half
-0F2A TIBETAN DIGIT HALF ONE
-0F2B TIBETAN DIGIT HALF TWO
-0F2C TIBETAN DIGIT HALF THREE
-0F2D TIBETAN DIGIT HALF FOUR
-0F2E TIBETAN DIGIT HALF FIVE
-0F2F TIBETAN DIGIT HALF SIX
-0F30 TIBETAN DIGIT HALF SEVEN
-0F31 TIBETAN DIGIT HALF EIGHT
-0F32 TIBETAN DIGIT HALF NINE
-0F33 TIBETAN DIGIT HALF ZERO
-@ Marks and signs
-0F34 TIBETAN MARK BSDUS RTAGS (du ta)
- * repetition
-0F35 TIBETAN MARK NGAS BZUNG NYI ZLA (nge zung nyi da)
- * honorific, emphasis; used like underlining
-0F36 TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN (dzu ta shi mig chen)
- * marks point of text insertion or annotation
-0F37 TIBETAN MARK NGAS BZUNG SGOR RTAGS (nge zung gor ta)
- * emphasis; used like underlining
-0F38 TIBETAN MARK CHE MGO (che go)
-0F39 TIBETAN MARK TSA -PHRU (tsa tru)
- * a lenition mark
-@ Paired punctuation
-0F3A TIBETAN MARK GUG RTAGS GYON (gug ta yun)
-0F3B TIBETAN MARK GUG RTAGS GYAS (gug ta ye)
- * brackets
-0F3C TIBETAN MARK ANG KHANG GYON (ang kang yun)
-0F3D TIBETAN MARK ANG KHANG GYAS (ang kang ye)
- * used for bracketing with a roof over
-@ Astrological signs
-0F3E TIBETAN SIGN YAR TSHES (yar tse)
-0F3F TIBETAN SIGN MAR TSHES (mar tse)
- * marks which combine with digits
-@ Consonants
-0F40 TIBETAN LETTER KA
-0F41 TIBETAN LETTER KHA
-0F42 TIBETAN LETTER GA
-0F43 TIBETAN LETTER GHA
- : 0F42 0FB7
-0F44 TIBETAN LETTER NGA
-0F45 TIBETAN LETTER CA
-0F46 TIBETAN LETTER CHA
-0F47 TIBETAN LETTER JA
-0F49 TIBETAN LETTER NYA
-0F4A TIBETAN LETTER TTA
-0F4B TIBETAN LETTER TTHA
-0F4C TIBETAN LETTER DDA
-0F4D TIBETAN LETTER DDHA
- : 0F4C 0FB7
-0F4E TIBETAN LETTER NNA
-0F4F TIBETAN LETTER TA
-0F50 TIBETAN LETTER THA
-0F51 TIBETAN LETTER DA
-0F52 TIBETAN LETTER DHA
- : 0F51 0FB7
-0F53 TIBETAN LETTER NA
-0F54 TIBETAN LETTER PA
-0F55 TIBETAN LETTER PHA
-0F56 TIBETAN LETTER BA
-0F57 TIBETAN LETTER BHA
- : 0F56 0FB7
-0F58 TIBETAN LETTER MA
-0F59 TIBETAN LETTER TSA
-0F5A TIBETAN LETTER TSHA
-0F5B TIBETAN LETTER DZA
-0F5C TIBETAN LETTER DZHA
- : 0F5B 0FB7
-0F5D TIBETAN LETTER WA
-0F5E TIBETAN LETTER ZHA
-0F5F TIBETAN LETTER ZA
-0F60 TIBETAN LETTER -A
-0F61 TIBETAN LETTER YA
-0F62 TIBETAN LETTER RA *
- * when followed by a subjoined letter = ra mgo
-0F63 TIBETAN LETTER LA
-0F64 TIBETAN LETTER SHA
-0F65 TIBETAN LETTER SSA
- = reversed sha
-0F66 TIBETAN LETTER SA
-0F67 TIBETAN LETTER HA
-0F68 TIBETAN LETTER A
- * base for dependent vowels
-0F69 TIBETAN LETTER KSSA
- : 0F40 0FB5
-0F6A TIBETAN LETTER FIXED-FORM RA *
- * used only in transliteration and transcription
-@ Dependent vowel signs
-0F71 TIBETAN VOWEL SIGN AA
- = a-chung
- * common, vowel-lengthening mark
-0F72 TIBETAN VOWEL SIGN I
-0F73 TIBETAN VOWEL SIGN II
- * use of this character is discouraged
- : 0F71 0F72
-0F74 TIBETAN VOWEL SIGN U
-0F75 TIBETAN VOWEL SIGN UU
- * use of this character is discouraged
- : 0F71 0F74
-0F76 TIBETAN VOWEL SIGN VOCALIC R
- : 0FB2 0F80
-0F77 TIBETAN VOWEL SIGN VOCALIC RR
- * use of this character is strongly discouraged
- # 0FB2 0F81
-0F78 TIBETAN VOWEL SIGN VOCALIC L
- : 0FB3 0F80
-0F79 TIBETAN VOWEL SIGN VOCALIC LL
- * use of this character is strongly discouraged
- # 0FB3 0F81
-0F7A TIBETAN VOWEL SIGN E
-0F7B TIBETAN VOWEL SIGN EE
-0F7C TIBETAN VOWEL SIGN O
-0F7D TIBETAN VOWEL SIGN OO
-@ Vocalic modification
-0F7E TIBETAN SIGN RJES SU NGA RO (je su nga ro)
- = anusvara
-0F7F TIBETAN SIGN RNAM BCAD (nam chey)
- = visarga
-@ Dependent vowel signs
-0F80 TIBETAN VOWEL SIGN REVERSED I
-0F81 TIBETAN VOWEL SIGN REVERSED II
- * use of this character is discouraged
- : 0F71 0F80
-@ Marks and signs
-0F82 TIBETAN SIGN NYI ZLA NAA DA (nyi da na da)
-0F83 TIBETAN SIGN SNA LDAN (nan de)
- x (devanagari sign candrabindu - 0901)
-0F84 TIBETAN MARK HALANTA
- = srog med
- x (devanagari sign virama - 094D)
-0F85 TIBETAN MARK PALUTA
-0F86 TIBETAN SIGN LCI RTAGS (ji ta)
-0F87 TIBETAN SIGN YANG RTAGS (yang ta)
-@ Transliteration head letters
-0F88 TIBETAN SIGN LCE TSA CAN (che tsa chen)
-0F89 TIBETAN SIGN MCHU CAN (chu chen)
-0F8A TIBETAN SIGN GRU CAN RGYINGS (tru chen ging)
- * always followed by 0F82
-0F8B TIBETAN SIGN GRU MED RGYINGS (tru me ging)
-@ Subjoined consonants
-0F90 TIBETAN SUBJOINED LETTER KA
-0F91 TIBETAN SUBJOINED LETTER KHA
-0F92 TIBETAN SUBJOINED LETTER GA
-0F93 TIBETAN SUBJOINED LETTER GHA
- : 0F92 0FB7
-0F94 TIBETAN SUBJOINED LETTER NGA
-0F95 TIBETAN SUBJOINED LETTER CA
-0F96 TIBETAN SUBJOINED LETTER CHA
-0F97 TIBETAN SUBJOINED LETTER JA
-0F99 TIBETAN SUBJOINED LETTER NYA
-0F9A TIBETAN SUBJOINED LETTER TTA
-0F9B TIBETAN SUBJOINED LETTER TTHA
-0F9C TIBETAN SUBJOINED LETTER DDA
-0F9D TIBETAN SUBJOINED LETTER DDHA
- : 0F9C 0FB7
-0F9E TIBETAN SUBJOINED LETTER NNA
-0F9F TIBETAN SUBJOINED LETTER TA
-0FA0 TIBETAN SUBJOINED LETTER THA
-0FA1 TIBETAN SUBJOINED LETTER DA
-0FA2 TIBETAN SUBJOINED LETTER DHA
- : 0FA1 0FB7
-0FA3 TIBETAN SUBJOINED LETTER NA
-0FA4 TIBETAN SUBJOINED LETTER PA
-0FA5 TIBETAN SUBJOINED LETTER PHA
-0FA6 TIBETAN SUBJOINED LETTER BA
-0FA7 TIBETAN SUBJOINED LETTER BHA
- : 0FA6 0FB7
-0FA8 TIBETAN SUBJOINED LETTER MA
-0FA9 TIBETAN SUBJOINED LETTER TSA
-0FAA TIBETAN SUBJOINED LETTER TSHA
-0FAB TIBETAN SUBJOINED LETTER DZA
-0FAC TIBETAN SUBJOINED LETTER DZHA
- : 0FAB 0FB7
-0FAD TIBETAN SUBJOINED LETTER WA *
- = wa-zur, wa-btags
-0FAE TIBETAN SUBJOINED LETTER ZHA
-0FAF TIBETAN SUBJOINED LETTER ZA
-0FB0 TIBETAN SUBJOINED LETTER -A
- = a-chung
- * rare, only used for full-sized subjoined letter
- x (tibetan vowel sign aa - 0F71)
-0FB1 TIBETAN SUBJOINED LETTER YA *
- = ya-btags
-0FB2 TIBETAN SUBJOINED LETTER RA *
- = ra-btags
-0FB3 TIBETAN SUBJOINED LETTER LA
-0FB4 TIBETAN SUBJOINED LETTER SHA
-0FB5 TIBETAN SUBJOINED LETTER SSA
- = reversed subjoined sha
-0FB6 TIBETAN SUBJOINED LETTER SA
-0FB7 TIBETAN SUBJOINED LETTER HA
-0FB8 TIBETAN SUBJOINED LETTER A
-0FB9 TIBETAN SUBJOINED LETTER KSSA
- : 0F90 0FB5
-@ Fixed-form subjoined consonants
-@+ These characters are used only for transliteration and transcription.
-0FBA TIBETAN SUBJOINED LETTER FIXED-FORM WA *
-0FBB TIBETAN SUBJOINED LETTER FIXED-FORM YA *
-0FBC TIBETAN SUBJOINED LETTER FIXED-FORM RA *
-@ Signs
-0FBE TIBETAN KU RU KHA (kuruka)
- * often repeated three times; indicates a refrain
-0FBF TIBETAN KU RU KHA BZHI MIG CAN (kuruka shi mik chen)
- * marks point of text insertion or annotation
- x (reference mark - 203B)
-@ Cantillation signs
-0FC0 TIBETAN CANTILLATION SIGN HEAVY BEAT
- * marks a heavy drum beat
-0FC1 TIBETAN CANTILLATION SIGN LIGHT BEAT
- * marks a light drum beat
-0FC2 TIBETAN CANTILLATION SIGN CANG TE-U (chang tyu)
- * symbol of a small Tibetan hand drum
-0FC3 TIBETAN CANTILLATION SIGN SBUB -CHAL (bub chey)
- * symbol of a Tibetan cymbal
-@ Symbols
-0FC4 TIBETAN SYMBOL DRIL BU (drilbu)
- * symbol of a Tibetan hand bell
-0FC5 TIBETAN SYMBOL RDO RJE (dorje)
-0FC6 TIBETAN SYMBOL PADMA GDAN (pema den)
-0FC7 TIBETAN SYMBOL RDO RJE RGYA GRAM (dorje gya dram)
-0FC8 TIBETAN SYMBOL PHUR PA (phurba)
-0FC9 TIBETAN SYMBOL NOR BU (norbu)
-0FCA TIBETAN SYMBOL NOR BU NYIS -KHYIL (norbu nyi khyi)
- * the double body symbol
- x (yin yang - 262F)
-0FCB TIBETAN SYMBOL NOR BU GSUM -KHYIL (norbu sum khyi)
- * the tri-kaya or triple body symbol
-0FCC TIBETAN SYMBOL NOR BU BZHI -KHYIL (norbu shi khyi)
- * the quadruple body symbol, a form of the swastika
- x (cjk unified ideograph-534D - 534D)
-@ Astrological sign
-0FCF TIBETAN SIGN RDEL NAG GSUM
-@@ 1000 Myanmar 109F
-@ Consonants
-1000 MYANMAR LETTER KA
-1001 MYANMAR LETTER KHA
-1002 MYANMAR LETTER GA
-1003 MYANMAR LETTER GHA
-1004 MYANMAR LETTER NGA
-1005 MYANMAR LETTER CA
-1006 MYANMAR LETTER CHA
-1007 MYANMAR LETTER JA
-1008 MYANMAR LETTER JHA
-1009 MYANMAR LETTER NYA
-100A MYANMAR LETTER NNYA
-100B MYANMAR LETTER TTA
-100C MYANMAR LETTER TTHA
-100D MYANMAR LETTER DDA
-100E MYANMAR LETTER DDHA
-100F MYANMAR LETTER NNA
-1010 MYANMAR LETTER TA
-1011 MYANMAR LETTER THA
-1012 MYANMAR LETTER DA
-1013 MYANMAR LETTER DHA
-1014 MYANMAR LETTER NA
-1015 MYANMAR LETTER PA
-1016 MYANMAR LETTER PHA
-1017 MYANMAR LETTER BA
-1018 MYANMAR LETTER BHA
-1019 MYANMAR LETTER MA
-101A MYANMAR LETTER YA
-101B MYANMAR LETTER RA
-101C MYANMAR LETTER LA
-101D MYANMAR LETTER WA
-101E MYANMAR LETTER SA
-101F MYANMAR LETTER HA
-1020 MYANMAR LETTER LLA
-@ Independent vowels
-1021 MYANMAR LETTER A
-1023 MYANMAR LETTER I
-1024 MYANMAR LETTER II
-1025 MYANMAR LETTER U
-1026 MYANMAR LETTER UU
- : 1025 102E
-1027 MYANMAR LETTER E
-1029 MYANMAR LETTER O
-102A MYANMAR LETTER AU
-@ Dependent vowel signs
-102C MYANMAR VOWEL SIGN AA
-102D MYANMAR VOWEL SIGN I
-102E MYANMAR VOWEL SIGN II
-102F MYANMAR VOWEL SIGN U
-1030 MYANMAR VOWEL SIGN UU
-1031 MYANMAR VOWEL SIGN E
- * stands to the left of the consonant
-1032 MYANMAR VOWEL SIGN AI
-@ Various signs
-1036 MYANMAR SIGN ANUSVARA
-1037 MYANMAR SIGN DOT BELOW
- = aukmyit
- * a tone mark
-1038 MYANMAR SIGN VISARGA
-1039 MYANMAR SIGN VIRAMA
- = killer (when rendered visibly)
-@ Digits
-1040 MYANMAR DIGIT ZERO
-1041 MYANMAR DIGIT ONE
-1042 MYANMAR DIGIT TWO
-1043 MYANMAR DIGIT THREE
-1044 MYANMAR DIGIT FOUR
-1045 MYANMAR DIGIT FIVE
-1046 MYANMAR DIGIT SIX
-1047 MYANMAR DIGIT SEVEN
-1048 MYANMAR DIGIT EIGHT
-1049 MYANMAR DIGIT NINE
-@ Punctuation
-104A MYANMAR SIGN LITTLE SECTION
- x (devanagari danda - 0964)
-104B MYANMAR SIGN SECTION
- x (devanagari double danda - 0965)
-@ Various signs
-104C MYANMAR SYMBOL LOCATIVE
-104D MYANMAR SYMBOL COMPLETED
-104E MYANMAR SYMBOL AFOREMENTIONED
-104F MYANMAR SYMBOL GENITIVE
-@ Pali and Sanskrit extensions
-1050 MYANMAR LETTER SHA
-1051 MYANMAR LETTER SSA
-1052 MYANMAR LETTER VOCALIC R
-1053 MYANMAR LETTER VOCALIC RR
-1054 MYANMAR LETTER VOCALIC L
-1055 MYANMAR LETTER VOCALIC LL
-1056 MYANMAR VOWEL SIGN VOCALIC R
-1057 MYANMAR VOWEL SIGN VOCALIC RR
-1058 MYANMAR VOWEL SIGN VOCALIC L
-1059 MYANMAR VOWEL SIGN VOCALIC LL
-@@ 10A0 Georgian 10FF
-@ Khutsuri
-@+ This is the uppercase of the old ecclesiastical alphabet. The style shown in the code charts is known as Asomtavruli.
-10A0 GEORGIAN CAPITAL LETTER AN (Khutsuri)
-10A1 GEORGIAN CAPITAL LETTER BAN (Khutsuri)
-10A2 GEORGIAN CAPITAL LETTER GAN (Khutsuri)
-10A3 GEORGIAN CAPITAL LETTER DON (Khutsuri)
-10A4 GEORGIAN CAPITAL LETTER EN (Khutsuri)
-10A5 GEORGIAN CAPITAL LETTER VIN (Khutsuri)
-10A6 GEORGIAN CAPITAL LETTER ZEN (Khutsuri)
-10A7 GEORGIAN CAPITAL LETTER TAN (Khutsuri)
-10A8 GEORGIAN CAPITAL LETTER IN (Khutsuri)
-10A9 GEORGIAN CAPITAL LETTER KAN (Khutsuri)
-10AA GEORGIAN CAPITAL LETTER LAS (Khutsuri)
-10AB GEORGIAN CAPITAL LETTER MAN (Khutsuri)
-10AC GEORGIAN CAPITAL LETTER NAR (Khutsuri)
-10AD GEORGIAN CAPITAL LETTER ON (Khutsuri)
-10AE GEORGIAN CAPITAL LETTER PAR (Khutsuri)
-10AF GEORGIAN CAPITAL LETTER ZHAR (Khutsuri)
-10B0 GEORGIAN CAPITAL LETTER RAE (Khutsuri)
-10B1 GEORGIAN CAPITAL LETTER SAN (Khutsuri)
-10B2 GEORGIAN CAPITAL LETTER TAR (Khutsuri)
-10B3 GEORGIAN CAPITAL LETTER UN (Khutsuri)
-10B4 GEORGIAN CAPITAL LETTER PHAR (Khutsuri)
-10B5 GEORGIAN CAPITAL LETTER KHAR (Khutsuri)
-10B6 GEORGIAN CAPITAL LETTER GHAN (Khutsuri)
-10B7 GEORGIAN CAPITAL LETTER QAR (Khutsuri)
-10B8 GEORGIAN CAPITAL LETTER SHIN (Khutsuri)
-10B9 GEORGIAN CAPITAL LETTER CHIN (Khutsuri)
-10BA GEORGIAN CAPITAL LETTER CAN (Khutsuri)
-10BB GEORGIAN CAPITAL LETTER JIL (Khutsuri)
-10BC GEORGIAN CAPITAL LETTER CIL (Khutsuri)
-10BD GEORGIAN CAPITAL LETTER CHAR (Khutsuri)
-10BE GEORGIAN CAPITAL LETTER XAN (Khutsuri)
-10BF GEORGIAN CAPITAL LETTER JHAN (Khutsuri)
-10C0 GEORGIAN CAPITAL LETTER HAE (Khutsuri)
-10C1 GEORGIAN CAPITAL LETTER HE (Khutsuri)
-10C2 GEORGIAN CAPITAL LETTER HIE (Khutsuri)
-10C3 GEORGIAN CAPITAL LETTER WE (Khutsuri)
-10C4 GEORGIAN CAPITAL LETTER HAR (Khutsuri)
-10C5 GEORGIAN CAPITAL LETTER HOE (Khutsuri)
-@ Mkhedruli
-@+ This is the modern secular alphabet, which is caseless.
-10D0 GEORGIAN LETTER AN
-10D1 GEORGIAN LETTER BAN
-10D2 GEORGIAN LETTER GAN
-10D3 GEORGIAN LETTER DON
-10D4 GEORGIAN LETTER EN
-10D5 GEORGIAN LETTER VIN
-10D6 GEORGIAN LETTER ZEN
-10D7 GEORGIAN LETTER TAN
-10D8 GEORGIAN LETTER IN
-10D9 GEORGIAN LETTER KAN
-10DA GEORGIAN LETTER LAS
-10DB GEORGIAN LETTER MAN
-10DC GEORGIAN LETTER NAR
-10DD GEORGIAN LETTER ON
-10DE GEORGIAN LETTER PAR
-10DF GEORGIAN LETTER ZHAR
-10E0 GEORGIAN LETTER RAE
-10E1 GEORGIAN LETTER SAN
-10E2 GEORGIAN LETTER TAR
-10E3 GEORGIAN LETTER UN
-10E4 GEORGIAN LETTER PHAR
-10E5 GEORGIAN LETTER KHAR
-10E6 GEORGIAN LETTER GHAN
-10E7 GEORGIAN LETTER QAR
-10E8 GEORGIAN LETTER SHIN
-10E9 GEORGIAN LETTER CHIN
-10EA GEORGIAN LETTER CAN
-10EB GEORGIAN LETTER JIL
-10EC GEORGIAN LETTER CIL
-10ED GEORGIAN LETTER CHAR
-10EE GEORGIAN LETTER XAN
-10EF GEORGIAN LETTER JHAN
-10F0 GEORGIAN LETTER HAE
-@ Archaic letters
-10F1 GEORGIAN LETTER HE
-10F2 GEORGIAN LETTER HIE
-10F3 GEORGIAN LETTER WE
-10F4 GEORGIAN LETTER HAR
-10F5 GEORGIAN LETTER HOE
-10F6 GEORGIAN LETTER FI
-@ Punctuation
-10FB GEORGIAN PARAGRAPH SEPARATOR
-@@ 1100 Hangul Jamo 11FF
-@ Korean combining alphabet
-@ Initial consonants
-1100 HANGUL CHOSEONG KIYEOK (g) *
-1101 HANGUL CHOSEONG SSANGKIYEOK (gg) *
-1102 HANGUL CHOSEONG NIEUN (n) *
-1103 HANGUL CHOSEONG TIKEUT (d) *
-1104 HANGUL CHOSEONG SSANGTIKEUT (dd) *
-1105 HANGUL CHOSEONG RIEUL (r) *
-1106 HANGUL CHOSEONG MIEUM (m) *
-1107 HANGUL CHOSEONG PIEUP (b) *
-1108 HANGUL CHOSEONG SSANGPIEUP (bb) *
-1109 HANGUL CHOSEONG SIOS (s) *
-110A HANGUL CHOSEONG SSANGSIOS (ss) *
-110B HANGUL CHOSEONG IEUNG
-110C HANGUL CHOSEONG CIEUC (j) *
-110D HANGUL CHOSEONG SSANGCIEUC (jj) *
-110E HANGUL CHOSEONG CHIEUCH (c) *
-110F HANGUL CHOSEONG KHIEUKH (k) *
-1110 HANGUL CHOSEONG THIEUTH (t) *
-1111 HANGUL CHOSEONG PHIEUPH (p) *
-1112 HANGUL CHOSEONG HIEUH (h) *
-1113 HANGUL CHOSEONG NIEUN-KIYEOK
-1114 HANGUL CHOSEONG SSANGNIEUN
-1115 HANGUL CHOSEONG NIEUN-TIKEUT
-1116 HANGUL CHOSEONG NIEUN-PIEUP
-1117 HANGUL CHOSEONG TIKEUT-KIYEOK
-1118 HANGUL CHOSEONG RIEUL-NIEUN
-1119 HANGUL CHOSEONG SSANGRIEUL
-111A HANGUL CHOSEONG RIEUL-HIEUH
-111B HANGUL CHOSEONG KAPYEOUNRIEUL
-111C HANGUL CHOSEONG MIEUM-PIEUP
-111D HANGUL CHOSEONG KAPYEOUNMIEUM
-111E HANGUL CHOSEONG PIEUP-KIYEOK
-111F HANGUL CHOSEONG PIEUP-NIEUN
-1120 HANGUL CHOSEONG PIEUP-TIKEUT
-1121 HANGUL CHOSEONG PIEUP-SIOS
-1122 HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
-1123 HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
-1124 HANGUL CHOSEONG PIEUP-SIOS-PIEUP
-1125 HANGUL CHOSEONG PIEUP-SSANGSIOS
-1126 HANGUL CHOSEONG PIEUP-SIOS-CIEUC
-1127 HANGUL CHOSEONG PIEUP-CIEUC
-1128 HANGUL CHOSEONG PIEUP-CHIEUCH
-1129 HANGUL CHOSEONG PIEUP-THIEUTH
-112A HANGUL CHOSEONG PIEUP-PHIEUPH
-112B HANGUL CHOSEONG KAPYEOUNPIEUP
-112C HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
-112D HANGUL CHOSEONG SIOS-KIYEOK
-112E HANGUL CHOSEONG SIOS-NIEUN
-112F HANGUL CHOSEONG SIOS-TIKEUT
-1130 HANGUL CHOSEONG SIOS-RIEUL
-1131 HANGUL CHOSEONG SIOS-MIEUM
-1132 HANGUL CHOSEONG SIOS-PIEUP
-1133 HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
-1134 HANGUL CHOSEONG SIOS-SSANGSIOS
-1135 HANGUL CHOSEONG SIOS-IEUNG
-1136 HANGUL CHOSEONG SIOS-CIEUC
-1137 HANGUL CHOSEONG SIOS-CHIEUCH
-1138 HANGUL CHOSEONG SIOS-KHIEUKH
-1139 HANGUL CHOSEONG SIOS-THIEUTH
-113A HANGUL CHOSEONG SIOS-PHIEUPH
-113B HANGUL CHOSEONG SIOS-HIEUH
-113C HANGUL CHOSEONG CHITUEUMSIOS
-113D HANGUL CHOSEONG CHITUEUMSSANGSIOS
-113E HANGUL CHOSEONG CEONGCHIEUMSIOS
-113F HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
-1140 HANGUL CHOSEONG PANSIOS
-1141 HANGUL CHOSEONG IEUNG-KIYEOK
-1142 HANGUL CHOSEONG IEUNG-TIKEUT
-1143 HANGUL CHOSEONG IEUNG-MIEUM
-1144 HANGUL CHOSEONG IEUNG-PIEUP
-1145 HANGUL CHOSEONG IEUNG-SIOS
-1146 HANGUL CHOSEONG IEUNG-PANSIOS
-1147 HANGUL CHOSEONG SSANGIEUNG
-1148 HANGUL CHOSEONG IEUNG-CIEUC
-1149 HANGUL CHOSEONG IEUNG-CHIEUCH
-114A HANGUL CHOSEONG IEUNG-THIEUTH
-114B HANGUL CHOSEONG IEUNG-PHIEUPH
-114C HANGUL CHOSEONG YESIEUNG
-114D HANGUL CHOSEONG CIEUC-IEUNG
-114E HANGUL CHOSEONG CHITUEUMCIEUC
-114F HANGUL CHOSEONG CHITUEUMSSANGCIEUC
-1150 HANGUL CHOSEONG CEONGCHIEUMCIEUC
-1151 HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
-1152 HANGUL CHOSEONG CHIEUCH-KHIEUKH
-1153 HANGUL CHOSEONG CHIEUCH-HIEUH
-1154 HANGUL CHOSEONG CHITUEUMCHIEUCH
-1155 HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
-1156 HANGUL CHOSEONG PHIEUPH-PIEUP
-1157 HANGUL CHOSEONG KAPYEOUNPHIEUPH
-1158 HANGUL CHOSEONG SSANGHIEUH
-1159 HANGUL CHOSEONG YEORINHIEUH
-115F HANGUL CHOSEONG FILLER
-@ Medial vowels
-1160 HANGUL JUNGSEONG FILLER
-1161 HANGUL JUNGSEONG A
-1162 HANGUL JUNGSEONG AE
-1163 HANGUL JUNGSEONG YA
-1164 HANGUL JUNGSEONG YAE
-1165 HANGUL JUNGSEONG EO
-1166 HANGUL JUNGSEONG E
-1167 HANGUL JUNGSEONG YEO
-1168 HANGUL JUNGSEONG YE
-1169 HANGUL JUNGSEONG O
-116A HANGUL JUNGSEONG WA
-116B HANGUL JUNGSEONG WAE
-116C HANGUL JUNGSEONG OE
-116D HANGUL JUNGSEONG YO
-116E HANGUL JUNGSEONG U
-116F HANGUL JUNGSEONG WEO
-1170 HANGUL JUNGSEONG WE
-1171 HANGUL JUNGSEONG WI
-1172 HANGUL JUNGSEONG YU
-1173 HANGUL JUNGSEONG EU
-1174 HANGUL JUNGSEONG YI
-1175 HANGUL JUNGSEONG I
-1176 HANGUL JUNGSEONG A-O
-1177 HANGUL JUNGSEONG A-U
-1178 HANGUL JUNGSEONG YA-O
-1179 HANGUL JUNGSEONG YA-YO
-117A HANGUL JUNGSEONG EO-O
-117B HANGUL JUNGSEONG EO-U
-117C HANGUL JUNGSEONG EO-EU
-117D HANGUL JUNGSEONG YEO-O
-117E HANGUL JUNGSEONG YEO-U
-117F HANGUL JUNGSEONG O-EO
-1180 HANGUL JUNGSEONG O-E
-1181 HANGUL JUNGSEONG O-YE
-1182 HANGUL JUNGSEONG O-O
-1183 HANGUL JUNGSEONG O-U
-1184 HANGUL JUNGSEONG YO-YA
-1185 HANGUL JUNGSEONG YO-YAE
-1186 HANGUL JUNGSEONG YO-YEO
-1187 HANGUL JUNGSEONG YO-O
-1188 HANGUL JUNGSEONG YO-I
-1189 HANGUL JUNGSEONG U-A
-118A HANGUL JUNGSEONG U-AE
-118B HANGUL JUNGSEONG U-EO-EU
-118C HANGUL JUNGSEONG U-YE
-118D HANGUL JUNGSEONG U-U
-118E HANGUL JUNGSEONG YU-A
-118F HANGUL JUNGSEONG YU-EO
-1190 HANGUL JUNGSEONG YU-E
-1191 HANGUL JUNGSEONG YU-YEO
-1192 HANGUL JUNGSEONG YU-YE
-1193 HANGUL JUNGSEONG YU-U
-1194 HANGUL JUNGSEONG YU-I
-1195 HANGUL JUNGSEONG EU-U
-1196 HANGUL JUNGSEONG EU-EU
-1197 HANGUL JUNGSEONG YI-U
-1198 HANGUL JUNGSEONG I-A
-1199 HANGUL JUNGSEONG I-YA
-119A HANGUL JUNGSEONG I-O
-119B HANGUL JUNGSEONG I-U
-119C HANGUL JUNGSEONG I-EU
-119D HANGUL JUNGSEONG I-ARAEA
-119E HANGUL JUNGSEONG ARAEA
-119F HANGUL JUNGSEONG ARAEA-EO
-11A0 HANGUL JUNGSEONG ARAEA-U
-11A1 HANGUL JUNGSEONG ARAEA-I
-11A2 HANGUL JUNGSEONG SSANGARAEA
-@ Final consonants
-11A8 HANGUL JONGSEONG KIYEOK (g) *
-11A9 HANGUL JONGSEONG SSANGKIYEOK (gg) *
-11AA HANGUL JONGSEONG KIYEOK-SIOS (gs) *
-11AB HANGUL JONGSEONG NIEUN (n) *
-11AC HANGUL JONGSEONG NIEUN-CIEUC (nj) *
-11AD HANGUL JONGSEONG NIEUN-HIEUH (nh) *
-11AE HANGUL JONGSEONG TIKEUT (d) *
-11AF HANGUL JONGSEONG RIEUL (l) *
-11B0 HANGUL JONGSEONG RIEUL-KIYEOK (lg) *
-11B1 HANGUL JONGSEONG RIEUL-MIEUM (lm) *
-11B2 HANGUL JONGSEONG RIEUL-PIEUP (lb) *
-11B3 HANGUL JONGSEONG RIEUL-SIOS (ls) *
-11B4 HANGUL JONGSEONG RIEUL-THIEUTH (lt) *
-11B5 HANGUL JONGSEONG RIEUL-PHIEUPH (lp) *
-11B6 HANGUL JONGSEONG RIEUL-HIEUH (lh) *
-11B7 HANGUL JONGSEONG MIEUM (m) *
-11B8 HANGUL JONGSEONG PIEUP (b) *
-11B9 HANGUL JONGSEONG PIEUP-SIOS (bs) *
-11BA HANGUL JONGSEONG SIOS (s) *
-11BB HANGUL JONGSEONG SSANGSIOS (ss) *
-11BC HANGUL JONGSEONG IEUNG (ng) *
-11BD HANGUL JONGSEONG CIEUC (j) *
-11BE HANGUL JONGSEONG CHIEUCH (c) *
-11BF HANGUL JONGSEONG KHIEUKH (k) *
-11C0 HANGUL JONGSEONG THIEUTH (t) *
-11C1 HANGUL JONGSEONG PHIEUPH (p) *
-11C2 HANGUL JONGSEONG HIEUH (h) *
-11C3 HANGUL JONGSEONG KIYEOK-RIEUL
-11C4 HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
-11C5 HANGUL JONGSEONG NIEUN-KIYEOK
-11C6 HANGUL JONGSEONG NIEUN-TIKEUT
-11C7 HANGUL JONGSEONG NIEUN-SIOS
-11C8 HANGUL JONGSEONG NIEUN-PANSIOS
-11C9 HANGUL JONGSEONG NIEUN-THIEUTH
-11CA HANGUL JONGSEONG TIKEUT-KIYEOK
-11CB HANGUL JONGSEONG TIKEUT-RIEUL
-11CC HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
-11CD HANGUL JONGSEONG RIEUL-NIEUN
-11CE HANGUL JONGSEONG RIEUL-TIKEUT
-11CF HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
-11D0 HANGUL JONGSEONG SSANGRIEUL
-11D1 HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
-11D2 HANGUL JONGSEONG RIEUL-MIEUM-SIOS
-11D3 HANGUL JONGSEONG RIEUL-PIEUP-SIOS
-11D4 HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
-11D5 HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
-11D6 HANGUL JONGSEONG RIEUL-SSANGSIOS
-11D7 HANGUL JONGSEONG RIEUL-PANSIOS
-11D8 HANGUL JONGSEONG RIEUL-KHIEUKH
-11D9 HANGUL JONGSEONG RIEUL-YEORINHIEUH
-11DA HANGUL JONGSEONG MIEUM-KIYEOK
-11DB HANGUL JONGSEONG MIEUM-RIEUL
-11DC HANGUL JONGSEONG MIEUM-PIEUP
-11DD HANGUL JONGSEONG MIEUM-SIOS
-11DE HANGUL JONGSEONG MIEUM-SSANGSIOS
-11DF HANGUL JONGSEONG MIEUM-PANSIOS
-11E0 HANGUL JONGSEONG MIEUM-CHIEUCH
-11E1 HANGUL JONGSEONG MIEUM-HIEUH
-11E2 HANGUL JONGSEONG KAPYEOUNMIEUM
-11E3 HANGUL JONGSEONG PIEUP-RIEUL
-11E4 HANGUL JONGSEONG PIEUP-PHIEUPH
-11E5 HANGUL JONGSEONG PIEUP-HIEUH
-11E6 HANGUL JONGSEONG KAPYEOUNPIEUP
-11E7 HANGUL JONGSEONG SIOS-KIYEOK
-11E8 HANGUL JONGSEONG SIOS-TIKEUT
-11E9 HANGUL JONGSEONG SIOS-RIEUL
-11EA HANGUL JONGSEONG SIOS-PIEUP
-11EB HANGUL JONGSEONG PANSIOS
-11EC HANGUL JONGSEONG IEUNG-KIYEOK
-11ED HANGUL JONGSEONG IEUNG-SSANGKIYEOK
-11EE HANGUL JONGSEONG SSANGIEUNG
-11EF HANGUL JONGSEONG IEUNG-KHIEUKH
-11F0 HANGUL JONGSEONG YESIEUNG
-11F1 HANGUL JONGSEONG YESIEUNG-SIOS
-11F2 HANGUL JONGSEONG YESIEUNG-PANSIOS
-11F3 HANGUL JONGSEONG PHIEUPH-PIEUP
-11F4 HANGUL JONGSEONG KAPYEOUNPHIEUPH
-11F5 HANGUL JONGSEONG HIEUH-NIEUN
-11F6 HANGUL JONGSEONG HIEUH-RIEUL
-11F7 HANGUL JONGSEONG HIEUH-MIEUM
-11F8 HANGUL JONGSEONG HIEUH-PIEUP
-11F9 HANGUL JONGSEONG YEORINHIEUH
-@@ 1200 Ethiopic 137F
-@ Syllables
-1200 ETHIOPIC SYLLABLE HA
-1201 ETHIOPIC SYLLABLE HU
-1202 ETHIOPIC SYLLABLE HI
-1203 ETHIOPIC SYLLABLE HAA
-1204 ETHIOPIC SYLLABLE HEE
-1205 ETHIOPIC SYLLABLE HE
-1206 ETHIOPIC SYLLABLE HO
-1208 ETHIOPIC SYLLABLE LA
-1209 ETHIOPIC SYLLABLE LU
-120A ETHIOPIC SYLLABLE LI
-120B ETHIOPIC SYLLABLE LAA
-120C ETHIOPIC SYLLABLE LEE
-120D ETHIOPIC SYLLABLE LE
-120E ETHIOPIC SYLLABLE LO
-120F ETHIOPIC SYLLABLE LWA
-1210 ETHIOPIC SYLLABLE HHA
-1211 ETHIOPIC SYLLABLE HHU
-1212 ETHIOPIC SYLLABLE HHI
-1213 ETHIOPIC SYLLABLE HHAA
-1214 ETHIOPIC SYLLABLE HHEE
-1215 ETHIOPIC SYLLABLE HHE
-1216 ETHIOPIC SYLLABLE HHO
-1217 ETHIOPIC SYLLABLE HHWA
-1218 ETHIOPIC SYLLABLE MA
-1219 ETHIOPIC SYLLABLE MU
-121A ETHIOPIC SYLLABLE MI
-121B ETHIOPIC SYLLABLE MAA
-121C ETHIOPIC SYLLABLE MEE
-121D ETHIOPIC SYLLABLE ME
-121E ETHIOPIC SYLLABLE MO
-121F ETHIOPIC SYLLABLE MWA
-1220 ETHIOPIC SYLLABLE SZA
-1221 ETHIOPIC SYLLABLE SZU
-1222 ETHIOPIC SYLLABLE SZI
-1223 ETHIOPIC SYLLABLE SZAA
-1224 ETHIOPIC SYLLABLE SZEE
-1225 ETHIOPIC SYLLABLE SZE
-1226 ETHIOPIC SYLLABLE SZO
-1227 ETHIOPIC SYLLABLE SZWA
-1228 ETHIOPIC SYLLABLE RA
-1229 ETHIOPIC SYLLABLE RU
-122A ETHIOPIC SYLLABLE RI
-122B ETHIOPIC SYLLABLE RAA
-122C ETHIOPIC SYLLABLE REE
-122D ETHIOPIC SYLLABLE RE
-122E ETHIOPIC SYLLABLE RO
-122F ETHIOPIC SYLLABLE RWA
-1230 ETHIOPIC SYLLABLE SA
-1231 ETHIOPIC SYLLABLE SU
-1232 ETHIOPIC SYLLABLE SI
-1233 ETHIOPIC SYLLABLE SAA
-1234 ETHIOPIC SYLLABLE SEE
-1235 ETHIOPIC SYLLABLE SE
-1236 ETHIOPIC SYLLABLE SO
-1237 ETHIOPIC SYLLABLE SWA
-1238 ETHIOPIC SYLLABLE SHA
-1239 ETHIOPIC SYLLABLE SHU
-123A ETHIOPIC SYLLABLE SHI
-123B ETHIOPIC SYLLABLE SHAA
-123C ETHIOPIC SYLLABLE SHEE
-123D ETHIOPIC SYLLABLE SHE
-123E ETHIOPIC SYLLABLE SHO
-123F ETHIOPIC SYLLABLE SHWA
-1240 ETHIOPIC SYLLABLE QA
-1241 ETHIOPIC SYLLABLE QU
-1242 ETHIOPIC SYLLABLE QI
-1243 ETHIOPIC SYLLABLE QAA
-1244 ETHIOPIC SYLLABLE QEE
-1245 ETHIOPIC SYLLABLE QE
-1246 ETHIOPIC SYLLABLE QO
-1248 ETHIOPIC SYLLABLE QWA
-124A ETHIOPIC SYLLABLE QWI
-124B ETHIOPIC SYLLABLE QWAA
-124C ETHIOPIC SYLLABLE QWEE
-124D ETHIOPIC SYLLABLE QWE
-1250 ETHIOPIC SYLLABLE QHA
-1251 ETHIOPIC SYLLABLE QHU
-1252 ETHIOPIC SYLLABLE QHI
-1253 ETHIOPIC SYLLABLE QHAA
-1254 ETHIOPIC SYLLABLE QHEE
-1255 ETHIOPIC SYLLABLE QHE
-1256 ETHIOPIC SYLLABLE QHO
-1258 ETHIOPIC SYLLABLE QHWA
-125A ETHIOPIC SYLLABLE QHWI
-125B ETHIOPIC SYLLABLE QHWAA
-125C ETHIOPIC SYLLABLE QHWEE
-125D ETHIOPIC SYLLABLE QHWE
-1260 ETHIOPIC SYLLABLE BA
-1261 ETHIOPIC SYLLABLE BU
-1262 ETHIOPIC SYLLABLE BI
-1263 ETHIOPIC SYLLABLE BAA
-1264 ETHIOPIC SYLLABLE BEE
-1265 ETHIOPIC SYLLABLE BE
-1266 ETHIOPIC SYLLABLE BO
-1267 ETHIOPIC SYLLABLE BWA
-1268 ETHIOPIC SYLLABLE VA
-1269 ETHIOPIC SYLLABLE VU
-126A ETHIOPIC SYLLABLE VI
-126B ETHIOPIC SYLLABLE VAA
-126C ETHIOPIC SYLLABLE VEE
-126D ETHIOPIC SYLLABLE VE
-126E ETHIOPIC SYLLABLE VO
-126F ETHIOPIC SYLLABLE VWA
-1270 ETHIOPIC SYLLABLE TA
-1271 ETHIOPIC SYLLABLE TU
-1272 ETHIOPIC SYLLABLE TI
-1273 ETHIOPIC SYLLABLE TAA
-1274 ETHIOPIC SYLLABLE TEE
-1275 ETHIOPIC SYLLABLE TE
-1276 ETHIOPIC SYLLABLE TO
-1277 ETHIOPIC SYLLABLE TWA
-1278 ETHIOPIC SYLLABLE CA
-1279 ETHIOPIC SYLLABLE CU
-127A ETHIOPIC SYLLABLE CI
-127B ETHIOPIC SYLLABLE CAA
-127C ETHIOPIC SYLLABLE CEE
-127D ETHIOPIC SYLLABLE CE
-127E ETHIOPIC SYLLABLE CO
-127F ETHIOPIC SYLLABLE CWA
-1280 ETHIOPIC SYLLABLE XA
-1281 ETHIOPIC SYLLABLE XU
-1282 ETHIOPIC SYLLABLE XI
-1283 ETHIOPIC SYLLABLE XAA
-1284 ETHIOPIC SYLLABLE XEE
-1285 ETHIOPIC SYLLABLE XE
-1286 ETHIOPIC SYLLABLE XO
-1288 ETHIOPIC SYLLABLE XWA
-128A ETHIOPIC SYLLABLE XWI
-128B ETHIOPIC SYLLABLE XWAA
-128C ETHIOPIC SYLLABLE XWEE
-128D ETHIOPIC SYLLABLE XWE
-1290 ETHIOPIC SYLLABLE NA
-1291 ETHIOPIC SYLLABLE NU
-1292 ETHIOPIC SYLLABLE NI
-1293 ETHIOPIC SYLLABLE NAA
-1294 ETHIOPIC SYLLABLE NEE
-1295 ETHIOPIC SYLLABLE NE
-1296 ETHIOPIC SYLLABLE NO
-1297 ETHIOPIC SYLLABLE NWA
-1298 ETHIOPIC SYLLABLE NYA
-1299 ETHIOPIC SYLLABLE NYU
-129A ETHIOPIC SYLLABLE NYI
-129B ETHIOPIC SYLLABLE NYAA
-129C ETHIOPIC SYLLABLE NYEE
-129D ETHIOPIC SYLLABLE NYE
-129E ETHIOPIC SYLLABLE NYO
-129F ETHIOPIC SYLLABLE NYWA
-12A0 ETHIOPIC SYLLABLE GLOTTAL A
-12A1 ETHIOPIC SYLLABLE GLOTTAL U
-12A2 ETHIOPIC SYLLABLE GLOTTAL I
-12A3 ETHIOPIC SYLLABLE GLOTTAL AA
-12A4 ETHIOPIC SYLLABLE GLOTTAL EE
-12A5 ETHIOPIC SYLLABLE GLOTTAL E
-12A6 ETHIOPIC SYLLABLE GLOTTAL O
-12A7 ETHIOPIC SYLLABLE GLOTTAL WA
-12A8 ETHIOPIC SYLLABLE KA
-12A9 ETHIOPIC SYLLABLE KU
-12AA ETHIOPIC SYLLABLE KI
-12AB ETHIOPIC SYLLABLE KAA
-12AC ETHIOPIC SYLLABLE KEE
-12AD ETHIOPIC SYLLABLE KE
-12AE ETHIOPIC SYLLABLE KO
-12B0 ETHIOPIC SYLLABLE KWA
-12B2 ETHIOPIC SYLLABLE KWI
-12B3 ETHIOPIC SYLLABLE KWAA
-12B4 ETHIOPIC SYLLABLE KWEE
-12B5 ETHIOPIC SYLLABLE KWE
-12B8 ETHIOPIC SYLLABLE KXA
-12B9 ETHIOPIC SYLLABLE KXU
-12BA ETHIOPIC SYLLABLE KXI
-12BB ETHIOPIC SYLLABLE KXAA
-12BC ETHIOPIC SYLLABLE KXEE
-12BD ETHIOPIC SYLLABLE KXE
-12BE ETHIOPIC SYLLABLE KXO
-12C0 ETHIOPIC SYLLABLE KXWA
-12C2 ETHIOPIC SYLLABLE KXWI
-12C3 ETHIOPIC SYLLABLE KXWAA
-12C4 ETHIOPIC SYLLABLE KXWEE
-12C5 ETHIOPIC SYLLABLE KXWE
-12C8 ETHIOPIC SYLLABLE WA
-12C9 ETHIOPIC SYLLABLE WU
-12CA ETHIOPIC SYLLABLE WI
-12CB ETHIOPIC SYLLABLE WAA
-12CC ETHIOPIC SYLLABLE WEE
-12CD ETHIOPIC SYLLABLE WE
-12CE ETHIOPIC SYLLABLE WO
-12D0 ETHIOPIC SYLLABLE PHARYNGEAL A
-12D1 ETHIOPIC SYLLABLE PHARYNGEAL U
-12D2 ETHIOPIC SYLLABLE PHARYNGEAL I
-12D3 ETHIOPIC SYLLABLE PHARYNGEAL AA
-12D4 ETHIOPIC SYLLABLE PHARYNGEAL EE
-12D5 ETHIOPIC SYLLABLE PHARYNGEAL E
-12D6 ETHIOPIC SYLLABLE PHARYNGEAL O
-12D8 ETHIOPIC SYLLABLE ZA
-12D9 ETHIOPIC SYLLABLE ZU
-12DA ETHIOPIC SYLLABLE ZI
-12DB ETHIOPIC SYLLABLE ZAA
-12DC ETHIOPIC SYLLABLE ZEE
-12DD ETHIOPIC SYLLABLE ZE
-12DE ETHIOPIC SYLLABLE ZO
-12DF ETHIOPIC SYLLABLE ZWA
-12E0 ETHIOPIC SYLLABLE ZHA
-12E1 ETHIOPIC SYLLABLE ZHU
-12E2 ETHIOPIC SYLLABLE ZHI
-12E3 ETHIOPIC SYLLABLE ZHAA
-12E4 ETHIOPIC SYLLABLE ZHEE
-12E5 ETHIOPIC SYLLABLE ZHE
-12E6 ETHIOPIC SYLLABLE ZHO
-12E7 ETHIOPIC SYLLABLE ZHWA
-12E8 ETHIOPIC SYLLABLE YA
-12E9 ETHIOPIC SYLLABLE YU
-12EA ETHIOPIC SYLLABLE YI
-12EB ETHIOPIC SYLLABLE YAA
-12EC ETHIOPIC SYLLABLE YEE
-12ED ETHIOPIC SYLLABLE YE
-12EE ETHIOPIC SYLLABLE YO
-12F0 ETHIOPIC SYLLABLE DA
-12F1 ETHIOPIC SYLLABLE DU
-12F2 ETHIOPIC SYLLABLE DI
-12F3 ETHIOPIC SYLLABLE DAA
-12F4 ETHIOPIC SYLLABLE DEE
-12F5 ETHIOPIC SYLLABLE DE
-12F6 ETHIOPIC SYLLABLE DO
-12F7 ETHIOPIC SYLLABLE DWA
-12F8 ETHIOPIC SYLLABLE DDA
-12F9 ETHIOPIC SYLLABLE DDU
-12FA ETHIOPIC SYLLABLE DDI
-12FB ETHIOPIC SYLLABLE DDAA
-12FC ETHIOPIC SYLLABLE DDEE
-12FD ETHIOPIC SYLLABLE DDE
-12FE ETHIOPIC SYLLABLE DDO
-12FF ETHIOPIC SYLLABLE DDWA
-1300 ETHIOPIC SYLLABLE JA
-1301 ETHIOPIC SYLLABLE JU
-1302 ETHIOPIC SYLLABLE JI
-1303 ETHIOPIC SYLLABLE JAA
-1304 ETHIOPIC SYLLABLE JEE
-1305 ETHIOPIC SYLLABLE JE
-1306 ETHIOPIC SYLLABLE JO
-1307 ETHIOPIC SYLLABLE JWA
-1308 ETHIOPIC SYLLABLE GA
-1309 ETHIOPIC SYLLABLE GU
-130A ETHIOPIC SYLLABLE GI
-130B ETHIOPIC SYLLABLE GAA
-130C ETHIOPIC SYLLABLE GEE
-130D ETHIOPIC SYLLABLE GE
-130E ETHIOPIC SYLLABLE GO
-1310 ETHIOPIC SYLLABLE GWA
-1312 ETHIOPIC SYLLABLE GWI
-1313 ETHIOPIC SYLLABLE GWAA
-1314 ETHIOPIC SYLLABLE GWEE
-1315 ETHIOPIC SYLLABLE GWE
-1318 ETHIOPIC SYLLABLE GGA
-1319 ETHIOPIC SYLLABLE GGU
-131A ETHIOPIC SYLLABLE GGI
-131B ETHIOPIC SYLLABLE GGAA
-131C ETHIOPIC SYLLABLE GGEE
-131D ETHIOPIC SYLLABLE GGE
-131E ETHIOPIC SYLLABLE GGO
-1320 ETHIOPIC SYLLABLE THA
-1321 ETHIOPIC SYLLABLE THU
-1322 ETHIOPIC SYLLABLE THI
-1323 ETHIOPIC SYLLABLE THAA
-1324 ETHIOPIC SYLLABLE THEE
-1325 ETHIOPIC SYLLABLE THE
-1326 ETHIOPIC SYLLABLE THO
-1327 ETHIOPIC SYLLABLE THWA
-1328 ETHIOPIC SYLLABLE CHA
-1329 ETHIOPIC SYLLABLE CHU
-132A ETHIOPIC SYLLABLE CHI
-132B ETHIOPIC SYLLABLE CHAA
-132C ETHIOPIC SYLLABLE CHEE
-132D ETHIOPIC SYLLABLE CHE
-132E ETHIOPIC SYLLABLE CHO
-132F ETHIOPIC SYLLABLE CHWA
-1330 ETHIOPIC SYLLABLE PHA
-1331 ETHIOPIC SYLLABLE PHU
-1332 ETHIOPIC SYLLABLE PHI
-1333 ETHIOPIC SYLLABLE PHAA
-1334 ETHIOPIC SYLLABLE PHEE
-1335 ETHIOPIC SYLLABLE PHE
-1336 ETHIOPIC SYLLABLE PHO
-1337 ETHIOPIC SYLLABLE PHWA
-1338 ETHIOPIC SYLLABLE TSA
-1339 ETHIOPIC SYLLABLE TSU
-133A ETHIOPIC SYLLABLE TSI
-133B ETHIOPIC SYLLABLE TSAA
-133C ETHIOPIC SYLLABLE TSEE
-133D ETHIOPIC SYLLABLE TSE
-133E ETHIOPIC SYLLABLE TSO
-133F ETHIOPIC SYLLABLE TSWA
-1340 ETHIOPIC SYLLABLE TZA
-1341 ETHIOPIC SYLLABLE TZU
-1342 ETHIOPIC SYLLABLE TZI
-1343 ETHIOPIC SYLLABLE TZAA
-1344 ETHIOPIC SYLLABLE TZEE
-1345 ETHIOPIC SYLLABLE TZE
-1346 ETHIOPIC SYLLABLE TZO
-1348 ETHIOPIC SYLLABLE FA
-1349 ETHIOPIC SYLLABLE FU
-134A ETHIOPIC SYLLABLE FI
-134B ETHIOPIC SYLLABLE FAA
-134C ETHIOPIC SYLLABLE FEE
-134D ETHIOPIC SYLLABLE FE
-134E ETHIOPIC SYLLABLE FO
-134F ETHIOPIC SYLLABLE FWA
-1350 ETHIOPIC SYLLABLE PA
-1351 ETHIOPIC SYLLABLE PU
-1352 ETHIOPIC SYLLABLE PI
-1353 ETHIOPIC SYLLABLE PAA
-1354 ETHIOPIC SYLLABLE PEE
-1355 ETHIOPIC SYLLABLE PE
-1356 ETHIOPIC SYLLABLE PO
-1357 ETHIOPIC SYLLABLE PWA
-1358 ETHIOPIC SYLLABLE RYA
-1359 ETHIOPIC SYLLABLE MYA
-135A ETHIOPIC SYLLABLE FYA
-@ Punctuation
-1361 ETHIOPIC WORDSPACE
-1362 ETHIOPIC FULL STOP
-1363 ETHIOPIC COMMA
-1364 ETHIOPIC SEMICOLON
-1365 ETHIOPIC COLON
-1366 ETHIOPIC PREFACE COLON
-1367 ETHIOPIC QUESTION MARK
-1368 ETHIOPIC PARAGRAPH SEPARATOR
-@ Digits
-1369 ETHIOPIC DIGIT ONE
-136A ETHIOPIC DIGIT TWO
-136B ETHIOPIC DIGIT THREE
-136C ETHIOPIC DIGIT FOUR
-136D ETHIOPIC DIGIT FIVE
-136E ETHIOPIC DIGIT SIX
-136F ETHIOPIC DIGIT SEVEN
-1370 ETHIOPIC DIGIT EIGHT
-1371 ETHIOPIC DIGIT NINE
-@ Numbers
-1372 ETHIOPIC NUMBER TEN
-1373 ETHIOPIC NUMBER TWENTY
-1374 ETHIOPIC NUMBER THIRTY
-1375 ETHIOPIC NUMBER FORTY
-1376 ETHIOPIC NUMBER FIFTY
-1377 ETHIOPIC NUMBER SIXTY
-1378 ETHIOPIC NUMBER SEVENTY
-1379 ETHIOPIC NUMBER EIGHTY
-137A ETHIOPIC NUMBER NINETY
-137B ETHIOPIC NUMBER HUNDRED
-137C ETHIOPIC NUMBER TEN THOUSAND
-@@ 13A0 Cherokee 13FF
-@ Syllables
-13A0 CHEROKEE LETTER A
-13A1 CHEROKEE LETTER E
-13A2 CHEROKEE LETTER I
-13A3 CHEROKEE LETTER O
-13A4 CHEROKEE LETTER U
-13A5 CHEROKEE LETTER V
-13A6 CHEROKEE LETTER GA
-13A7 CHEROKEE LETTER KA
-13A8 CHEROKEE LETTER GE
-13A9 CHEROKEE LETTER GI
-13AA CHEROKEE LETTER GO
-13AB CHEROKEE LETTER GU
-13AC CHEROKEE LETTER GV
-13AD CHEROKEE LETTER HA
-13AE CHEROKEE LETTER HE
-13AF CHEROKEE LETTER HI
-13B0 CHEROKEE LETTER HO
-13B1 CHEROKEE LETTER HU
-13B2 CHEROKEE LETTER HV
-13B3 CHEROKEE LETTER LA
-13B4 CHEROKEE LETTER LE
-13B5 CHEROKEE LETTER LI
-13B6 CHEROKEE LETTER LO
-13B7 CHEROKEE LETTER LU
-13B8 CHEROKEE LETTER LV
-13B9 CHEROKEE LETTER MA
-13BA CHEROKEE LETTER ME
-13BB CHEROKEE LETTER MI
-13BC CHEROKEE LETTER MO
-13BD CHEROKEE LETTER MU
-13BE CHEROKEE LETTER NA
-13BF CHEROKEE LETTER HNA
-13C0 CHEROKEE LETTER NAH
-13C1 CHEROKEE LETTER NE
-13C2 CHEROKEE LETTER NI
-13C3 CHEROKEE LETTER NO
-13C4 CHEROKEE LETTER NU
-13C5 CHEROKEE LETTER NV
-13C6 CHEROKEE LETTER QUA
-13C7 CHEROKEE LETTER QUE
-13C8 CHEROKEE LETTER QUI
-13C9 CHEROKEE LETTER QUO
-13CA CHEROKEE LETTER QUU
-13CB CHEROKEE LETTER QUV
-13CC CHEROKEE LETTER SA
-13CD CHEROKEE LETTER S
-13CE CHEROKEE LETTER SE
-13CF CHEROKEE LETTER SI
-13D0 CHEROKEE LETTER SO
-13D1 CHEROKEE LETTER SU
-13D2 CHEROKEE LETTER SV
-13D3 CHEROKEE LETTER DA
-13D4 CHEROKEE LETTER TA
-13D5 CHEROKEE LETTER DE
-13D6 CHEROKEE LETTER TE
-13D7 CHEROKEE LETTER DI
-13D8 CHEROKEE LETTER TI
-13D9 CHEROKEE LETTER DO
-13DA CHEROKEE LETTER DU
-13DB CHEROKEE LETTER DV
-13DC CHEROKEE LETTER DLA
-13DD CHEROKEE LETTER TLA
-13DE CHEROKEE LETTER TLE
-13DF CHEROKEE LETTER TLI
-13E0 CHEROKEE LETTER TLO
-13E1 CHEROKEE LETTER TLU
-13E2 CHEROKEE LETTER TLV
-13E3 CHEROKEE LETTER TSA
-13E4 CHEROKEE LETTER TSE
-13E5 CHEROKEE LETTER TSI
-13E6 CHEROKEE LETTER TSO
-13E7 CHEROKEE LETTER TSU
-13E8 CHEROKEE LETTER TSV
-13E9 CHEROKEE LETTER WA
-13EA CHEROKEE LETTER WE
-13EB CHEROKEE LETTER WI
-13EC CHEROKEE LETTER WO
-13ED CHEROKEE LETTER WU
-13EE CHEROKEE LETTER WV
-13EF CHEROKEE LETTER YA
-13F0 CHEROKEE LETTER YE
-13F1 CHEROKEE LETTER YI
-13F2 CHEROKEE LETTER YO
-13F3 CHEROKEE LETTER YU
-13F4 CHEROKEE LETTER YV
-@@ 1400 Unified Canadian Aboriginal Syllabics 167F
-@ Syllables
-1401 CANADIAN SYLLABICS E
-1402 CANADIAN SYLLABICS AAI
-1403 CANADIAN SYLLABICS I
-1404 CANADIAN SYLLABICS II
-1405 CANADIAN SYLLABICS O
-1406 CANADIAN SYLLABICS OO
-1407 CANADIAN SYLLABICS Y-CREE OO
-1408 CANADIAN SYLLABICS CARRIER EE
-1409 CANADIAN SYLLABICS CARRIER I
-140A CANADIAN SYLLABICS A
-140B CANADIAN SYLLABICS AA
-140C CANADIAN SYLLABICS WE
-140D CANADIAN SYLLABICS WEST-CREE WE
-140E CANADIAN SYLLABICS WI
-140F CANADIAN SYLLABICS WEST-CREE WI
-1410 CANADIAN SYLLABICS WII
-1411 CANADIAN SYLLABICS WEST-CREE WII
-1412 CANADIAN SYLLABICS WO
-1413 CANADIAN SYLLABICS WEST-CREE WO
-1414 CANADIAN SYLLABICS WOO
-1415 CANADIAN SYLLABICS WEST-CREE WOO
-1416 CANADIAN SYLLABICS NASKAPI WOO
-1417 CANADIAN SYLLABICS WA
-1418 CANADIAN SYLLABICS WEST-CREE WA
-1419 CANADIAN SYLLABICS WAA
-141A CANADIAN SYLLABICS WEST-CREE WAA
-141B CANADIAN SYLLABICS NASKAPI WAA
-141C CANADIAN SYLLABICS AI
-141D CANADIAN SYLLABICS Y-CREE W
-141E CANADIAN SYLLABICS GLOTTAL STOP
-141F CANADIAN SYLLABICS FINAL ACUTE
-1420 CANADIAN SYLLABICS FINAL GRAVE
-1421 CANADIAN SYLLABICS FINAL BOTTOM HALF RING
-1422 CANADIAN SYLLABICS FINAL TOP HALF RING
-1423 CANADIAN SYLLABICS FINAL RIGHT HALF RING
-1424 CANADIAN SYLLABICS FINAL RING
-1425 CANADIAN SYLLABICS FINAL DOUBLE ACUTE
-1426 CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
-1427 CANADIAN SYLLABICS FINAL MIDDLE DOT
-1428 CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
-1429 CANADIAN SYLLABICS FINAL PLUS
-142A CANADIAN SYLLABICS FINAL DOWN TACK
-142B CANADIAN SYLLABICS EN
-142C CANADIAN SYLLABICS IN
-142D CANADIAN SYLLABICS ON
-142E CANADIAN SYLLABICS AN
-142F CANADIAN SYLLABICS PE
-1430 CANADIAN SYLLABICS PAAI
-1431 CANADIAN SYLLABICS PI
-1432 CANADIAN SYLLABICS PII
-1433 CANADIAN SYLLABICS PO
-1434 CANADIAN SYLLABICS POO
-1435 CANADIAN SYLLABICS Y-CREE POO
-1436 CANADIAN SYLLABICS CARRIER HEE
-1437 CANADIAN SYLLABICS CARRIER HI
-1438 CANADIAN SYLLABICS PA
-1439 CANADIAN SYLLABICS PAA
-143A CANADIAN SYLLABICS PWE
-143B CANADIAN SYLLABICS WEST-CREE PWE
-143C CANADIAN SYLLABICS PWI
-143D CANADIAN SYLLABICS WEST-CREE PWI
-143E CANADIAN SYLLABICS PWII
-143F CANADIAN SYLLABICS WEST-CREE PWII
-1440 CANADIAN SYLLABICS PWO
-1441 CANADIAN SYLLABICS WEST-CREE PWO
-1442 CANADIAN SYLLABICS PWOO
-1443 CANADIAN SYLLABICS WEST-CREE PWOO
-1444 CANADIAN SYLLABICS PWA
-1445 CANADIAN SYLLABICS WEST-CREE PWA
-1446 CANADIAN SYLLABICS PWAA
-1447 CANADIAN SYLLABICS WEST-CREE PWAA
-1448 CANADIAN SYLLABICS Y-CREE PWAA
-1449 CANADIAN SYLLABICS P
-144A CANADIAN SYLLABICS WEST-CREE P
-144B CANADIAN SYLLABICS CARRIER H
-144C CANADIAN SYLLABICS TE
-144D CANADIAN SYLLABICS TAAI
-144E CANADIAN SYLLABICS TI
-144F CANADIAN SYLLABICS TII
-1450 CANADIAN SYLLABICS TO
-1451 CANADIAN SYLLABICS TOO
-1452 CANADIAN SYLLABICS Y-CREE TOO
-1453 CANADIAN SYLLABICS CARRIER DEE
-1454 CANADIAN SYLLABICS CARRIER DI
-1455 CANADIAN SYLLABICS TA
-1456 CANADIAN SYLLABICS TAA
-1457 CANADIAN SYLLABICS TWE
-1458 CANADIAN SYLLABICS WEST-CREE TWE
-1459 CANADIAN SYLLABICS TWI
-145A CANADIAN SYLLABICS WEST-CREE TWI
-145B CANADIAN SYLLABICS TWII
-145C CANADIAN SYLLABICS WEST-CREE TWII
-145D CANADIAN SYLLABICS TWO
-145E CANADIAN SYLLABICS WEST-CREE TWO
-145F CANADIAN SYLLABICS TWOO
-1460 CANADIAN SYLLABICS WEST-CREE TWOO
-1461 CANADIAN SYLLABICS TWA
-1462 CANADIAN SYLLABICS WEST-CREE TWA
-1463 CANADIAN SYLLABICS TWAA
-1464 CANADIAN SYLLABICS WEST-CREE TWAA
-1465 CANADIAN SYLLABICS NASKAPI TWAA
-1466 CANADIAN SYLLABICS T
-1467 CANADIAN SYLLABICS TTE
-1468 CANADIAN SYLLABICS TTI
-1469 CANADIAN SYLLABICS TTO
-146A CANADIAN SYLLABICS TTA
-146B CANADIAN SYLLABICS KE
-146C CANADIAN SYLLABICS KAAI
-146D CANADIAN SYLLABICS KI
-146E CANADIAN SYLLABICS KII
-146F CANADIAN SYLLABICS KO
-1470 CANADIAN SYLLABICS KOO
-1471 CANADIAN SYLLABICS Y-CREE KOO
-1472 CANADIAN SYLLABICS KA
-1473 CANADIAN SYLLABICS KAA
-1474 CANADIAN SYLLABICS KWE
-1475 CANADIAN SYLLABICS WEST-CREE KWE
-1476 CANADIAN SYLLABICS KWI
-1477 CANADIAN SYLLABICS WEST-CREE KWI
-1478 CANADIAN SYLLABICS KWII
-1479 CANADIAN SYLLABICS WEST-CREE KWII
-147A CANADIAN SYLLABICS KWO
-147B CANADIAN SYLLABICS WEST-CREE KWO
-147C CANADIAN SYLLABICS KWOO
-147D CANADIAN SYLLABICS WEST-CREE KWOO
-147E CANADIAN SYLLABICS KWA
-147F CANADIAN SYLLABICS WEST-CREE KWA
-1480 CANADIAN SYLLABICS KWAA
-1481 CANADIAN SYLLABICS WEST-CREE KWAA
-1482 CANADIAN SYLLABICS NASKAPI KWAA
-1483 CANADIAN SYLLABICS K
-1484 CANADIAN SYLLABICS KW
-1485 CANADIAN SYLLABICS SOUTH-SLAVEY KEH
-1486 CANADIAN SYLLABICS SOUTH-SLAVEY KIH
-1487 CANADIAN SYLLABICS SOUTH-SLAVEY KOH
-1488 CANADIAN SYLLABICS SOUTH-SLAVEY KAH
-1489 CANADIAN SYLLABICS CE
-148A CANADIAN SYLLABICS CAAI
-148B CANADIAN SYLLABICS CI
-148C CANADIAN SYLLABICS CII
-148D CANADIAN SYLLABICS CO
-148E CANADIAN SYLLABICS COO
-148F CANADIAN SYLLABICS Y-CREE COO
-1490 CANADIAN SYLLABICS CA
-1491 CANADIAN SYLLABICS CAA
-1492 CANADIAN SYLLABICS CWE
-1493 CANADIAN SYLLABICS WEST-CREE CWE
-1494 CANADIAN SYLLABICS CWI
-1495 CANADIAN SYLLABICS WEST-CREE CWI
-1496 CANADIAN SYLLABICS CWII
-1497 CANADIAN SYLLABICS WEST-CREE CWII
-1498 CANADIAN SYLLABICS CWO
-1499 CANADIAN SYLLABICS WEST-CREE CWO
-149A CANADIAN SYLLABICS CWOO
-149B CANADIAN SYLLABICS WEST-CREE CWOO
-149C CANADIAN SYLLABICS CWA
-149D CANADIAN SYLLABICS WEST-CREE CWA
-149E CANADIAN SYLLABICS CWAA
-149F CANADIAN SYLLABICS WEST-CREE CWAA
-14A0 CANADIAN SYLLABICS NASKAPI CWAA
-14A1 CANADIAN SYLLABICS C
-14A2 CANADIAN SYLLABICS SAYISI TH
-14A3 CANADIAN SYLLABICS ME
-14A4 CANADIAN SYLLABICS MAAI
-14A5 CANADIAN SYLLABICS MI
-14A6 CANADIAN SYLLABICS MII
-14A7 CANADIAN SYLLABICS MO
-14A8 CANADIAN SYLLABICS MOO
-14A9 CANADIAN SYLLABICS Y-CREE MOO
-14AA CANADIAN SYLLABICS MA
-14AB CANADIAN SYLLABICS MAA
-14AC CANADIAN SYLLABICS MWE
-14AD CANADIAN SYLLABICS WEST-CREE MWE
-14AE CANADIAN SYLLABICS MWI
-14AF CANADIAN SYLLABICS WEST-CREE MWI
-14B0 CANADIAN SYLLABICS MWII
-14B1 CANADIAN SYLLABICS WEST-CREE MWII
-14B2 CANADIAN SYLLABICS MWO
-14B3 CANADIAN SYLLABICS WEST-CREE MWO
-14B4 CANADIAN SYLLABICS MWOO
-14B5 CANADIAN SYLLABICS WEST-CREE MWOO
-14B6 CANADIAN SYLLABICS MWA
-14B7 CANADIAN SYLLABICS WEST-CREE MWA
-14B8 CANADIAN SYLLABICS MWAA
-14B9 CANADIAN SYLLABICS WEST-CREE MWAA
-14BA CANADIAN SYLLABICS NASKAPI MWAA
-14BB CANADIAN SYLLABICS M
-14BC CANADIAN SYLLABICS WEST-CREE M
-14BD CANADIAN SYLLABICS MH
-14BE CANADIAN SYLLABICS ATHAPASCAN M
-14BF CANADIAN SYLLABICS SAYISI M
-14C0 CANADIAN SYLLABICS NE
-14C1 CANADIAN SYLLABICS NAAI
-14C2 CANADIAN SYLLABICS NI
-14C3 CANADIAN SYLLABICS NII
-14C4 CANADIAN SYLLABICS NO
-14C5 CANADIAN SYLLABICS NOO
-14C6 CANADIAN SYLLABICS Y-CREE NOO
-14C7 CANADIAN SYLLABICS NA
-14C8 CANADIAN SYLLABICS NAA
-14C9 CANADIAN SYLLABICS NWE
-14CA CANADIAN SYLLABICS WEST-CREE NWE
-14CB CANADIAN SYLLABICS NWA
-14CC CANADIAN SYLLABICS WEST-CREE NWA
-14CD CANADIAN SYLLABICS NWAA
-14CE CANADIAN SYLLABICS WEST-CREE NWAA
-14CF CANADIAN SYLLABICS NASKAPI NWAA
-14D0 CANADIAN SYLLABICS N
-14D1 CANADIAN SYLLABICS CARRIER NG
-14D2 CANADIAN SYLLABICS NH
-14D3 CANADIAN SYLLABICS LE
-14D4 CANADIAN SYLLABICS LAAI
-14D5 CANADIAN SYLLABICS LI
-14D6 CANADIAN SYLLABICS LII
-14D7 CANADIAN SYLLABICS LO
-14D8 CANADIAN SYLLABICS LOO
-14D9 CANADIAN SYLLABICS Y-CREE LOO
-14DA CANADIAN SYLLABICS LA
-14DB CANADIAN SYLLABICS LAA
-14DC CANADIAN SYLLABICS LWE
-14DD CANADIAN SYLLABICS WEST-CREE LWE
-14DE CANADIAN SYLLABICS LWI
-14DF CANADIAN SYLLABICS WEST-CREE LWI
-14E0 CANADIAN SYLLABICS LWII
-14E1 CANADIAN SYLLABICS WEST-CREE LWII
-14E2 CANADIAN SYLLABICS LWO
-14E3 CANADIAN SYLLABICS WEST-CREE LWO
-14E4 CANADIAN SYLLABICS LWOO
-14E5 CANADIAN SYLLABICS WEST-CREE LWOO
-14E6 CANADIAN SYLLABICS LWA
-14E7 CANADIAN SYLLABICS WEST-CREE LWA
-14E8 CANADIAN SYLLABICS LWAA
-14E9 CANADIAN SYLLABICS WEST-CREE LWAA
-14EA CANADIAN SYLLABICS L
-14EB CANADIAN SYLLABICS WEST-CREE L
-14EC CANADIAN SYLLABICS MEDIAL L
-14ED CANADIAN SYLLABICS SE
-14EE CANADIAN SYLLABICS SAAI
-14EF CANADIAN SYLLABICS SI
-14F0 CANADIAN SYLLABICS SII
-14F1 CANADIAN SYLLABICS SO
-14F2 CANADIAN SYLLABICS SOO
-14F3 CANADIAN SYLLABICS Y-CREE SOO
-14F4 CANADIAN SYLLABICS SA
-14F5 CANADIAN SYLLABICS SAA
-14F6 CANADIAN SYLLABICS SWE
-14F7 CANADIAN SYLLABICS WEST-CREE SWE
-14F8 CANADIAN SYLLABICS SWI
-14F9 CANADIAN SYLLABICS WEST-CREE SWI
-14FA CANADIAN SYLLABICS SWII
-14FB CANADIAN SYLLABICS WEST-CREE SWII
-14FC CANADIAN SYLLABICS SWO
-14FD CANADIAN SYLLABICS WEST-CREE SWO
-14FE CANADIAN SYLLABICS SWOO
-14FF CANADIAN SYLLABICS WEST-CREE SWOO
-1500 CANADIAN SYLLABICS SWA
-1501 CANADIAN SYLLABICS WEST-CREE SWA
-1502 CANADIAN SYLLABICS SWAA
-1503 CANADIAN SYLLABICS WEST-CREE SWAA
-1504 CANADIAN SYLLABICS NASKAPI SWAA
-1505 CANADIAN SYLLABICS S
-1506 CANADIAN SYLLABICS ATHAPASCAN S
-1507 CANADIAN SYLLABICS SW
-1508 CANADIAN SYLLABICS BLACKFOOT S
-1509 CANADIAN SYLLABICS MOOSE-CREE SK
-150A CANADIAN SYLLABICS NASKAPI SKW
-150B CANADIAN SYLLABICS NASKAPI S-W
-150C CANADIAN SYLLABICS NASKAPI SPWA
-150D CANADIAN SYLLABICS NASKAPI STWA
-150E CANADIAN SYLLABICS NASKAPI SKWA
-150F CANADIAN SYLLABICS NASKAPI SCWA
-1510 CANADIAN SYLLABICS SHE
-1511 CANADIAN SYLLABICS SHI
-1512 CANADIAN SYLLABICS SHII
-1513 CANADIAN SYLLABICS SHO
-1514 CANADIAN SYLLABICS SHOO
-1515 CANADIAN SYLLABICS SHA
-1516 CANADIAN SYLLABICS SHAA
-1517 CANADIAN SYLLABICS SHWE
-1518 CANADIAN SYLLABICS WEST-CREE SHWE
-1519 CANADIAN SYLLABICS SHWI
-151A CANADIAN SYLLABICS WEST-CREE SHWI
-151B CANADIAN SYLLABICS SHWII
-151C CANADIAN SYLLABICS WEST-CREE SHWII
-151D CANADIAN SYLLABICS SHWO
-151E CANADIAN SYLLABICS WEST-CREE SHWO
-151F CANADIAN SYLLABICS SHWOO
-1520 CANADIAN SYLLABICS WEST-CREE SHWOO
-1521 CANADIAN SYLLABICS SHWA
-1522 CANADIAN SYLLABICS WEST-CREE SHWA
-1523 CANADIAN SYLLABICS SHWAA
-1524 CANADIAN SYLLABICS WEST-CREE SHWAA
-1525 CANADIAN SYLLABICS SH
-1526 CANADIAN SYLLABICS YE
-1527 CANADIAN SYLLABICS YAAI
-1528 CANADIAN SYLLABICS YI
-1529 CANADIAN SYLLABICS YII
-152A CANADIAN SYLLABICS YO
-152B CANADIAN SYLLABICS YOO
-152C CANADIAN SYLLABICS Y-CREE YOO
-152D CANADIAN SYLLABICS YA
-152E CANADIAN SYLLABICS YAA
-152F CANADIAN SYLLABICS YWE
-1530 CANADIAN SYLLABICS WEST-CREE YWE
-1531 CANADIAN SYLLABICS YWI
-1532 CANADIAN SYLLABICS WEST-CREE YWI
-1533 CANADIAN SYLLABICS YWII
-1534 CANADIAN SYLLABICS WEST-CREE YWII
-1535 CANADIAN SYLLABICS YWO
-1536 CANADIAN SYLLABICS WEST-CREE YWO
-1537 CANADIAN SYLLABICS YWOO
-1538 CANADIAN SYLLABICS WEST-CREE YWOO
-1539 CANADIAN SYLLABICS YWA
-153A CANADIAN SYLLABICS WEST-CREE YWA
-153B CANADIAN SYLLABICS YWAA
-153C CANADIAN SYLLABICS WEST-CREE YWAA
-153D CANADIAN SYLLABICS NASKAPI YWAA
-153E CANADIAN SYLLABICS Y
-153F CANADIAN SYLLABICS BIBLE-CREE Y
-1540 CANADIAN SYLLABICS WEST-CREE Y
-1541 CANADIAN SYLLABICS SAYISI YI
-1542 CANADIAN SYLLABICS RE
-1543 CANADIAN SYLLABICS R-CREE RE
-1544 CANADIAN SYLLABICS WEST-CREE LE
-1545 CANADIAN SYLLABICS RAAI
-1546 CANADIAN SYLLABICS RI
-1547 CANADIAN SYLLABICS RII
-1548 CANADIAN SYLLABICS RO
-1549 CANADIAN SYLLABICS ROO
-154A CANADIAN SYLLABICS WEST-CREE LO
-154B CANADIAN SYLLABICS RA
-154C CANADIAN SYLLABICS RAA
-154D CANADIAN SYLLABICS WEST-CREE LA
-154E CANADIAN SYLLABICS RWAA
-154F CANADIAN SYLLABICS WEST-CREE RWAA
-1550 CANADIAN SYLLABICS R
-1551 CANADIAN SYLLABICS WEST-CREE R
-1552 CANADIAN SYLLABICS MEDIAL R
-1553 CANADIAN SYLLABICS FE
-1554 CANADIAN SYLLABICS FAAI
-1555 CANADIAN SYLLABICS FI
-1556 CANADIAN SYLLABICS FII
-1557 CANADIAN SYLLABICS FO
-1558 CANADIAN SYLLABICS FOO
-1559 CANADIAN SYLLABICS FA
-155A CANADIAN SYLLABICS FAA
-155B CANADIAN SYLLABICS FWAA
-155C CANADIAN SYLLABICS WEST-CREE FWAA
-155D CANADIAN SYLLABICS F
-155E CANADIAN SYLLABICS THE
-155F CANADIAN SYLLABICS N-CREE THE
-1560 CANADIAN SYLLABICS THI
-1561 CANADIAN SYLLABICS N-CREE THI
-1562 CANADIAN SYLLABICS THII
-1563 CANADIAN SYLLABICS N-CREE THII
-1564 CANADIAN SYLLABICS THO
-1565 CANADIAN SYLLABICS THOO
-1566 CANADIAN SYLLABICS THA
-1567 CANADIAN SYLLABICS THAA
-1568 CANADIAN SYLLABICS THWAA
-1569 CANADIAN SYLLABICS WEST-CREE THWAA
-156A CANADIAN SYLLABICS TH
-156B CANADIAN SYLLABICS TTHE
-156C CANADIAN SYLLABICS TTHI
-156D CANADIAN SYLLABICS TTHO
-156E CANADIAN SYLLABICS TTHA
-156F CANADIAN SYLLABICS TTH
-1570 CANADIAN SYLLABICS TYE
-1571 CANADIAN SYLLABICS TYI
-1572 CANADIAN SYLLABICS TYO
-1573 CANADIAN SYLLABICS TYA
-1574 CANADIAN SYLLABICS NUNAVIK HE
-1575 CANADIAN SYLLABICS NUNAVIK HI
-1576 CANADIAN SYLLABICS NUNAVIK HII
-1577 CANADIAN SYLLABICS NUNAVIK HO
-1578 CANADIAN SYLLABICS NUNAVIK HOO
-1579 CANADIAN SYLLABICS NUNAVIK HA
-157A CANADIAN SYLLABICS NUNAVIK HAA
-157B CANADIAN SYLLABICS NUNAVIK H
-157C CANADIAN SYLLABICS NUNAVUT H
-157D CANADIAN SYLLABICS HK
-157E CANADIAN SYLLABICS QAAI
-157F CANADIAN SYLLABICS QI
-1580 CANADIAN SYLLABICS QII
-1581 CANADIAN SYLLABICS QO
-1582 CANADIAN SYLLABICS QOO
-1583 CANADIAN SYLLABICS QA
-1584 CANADIAN SYLLABICS QAA
-1585 CANADIAN SYLLABICS Q
-1586 CANADIAN SYLLABICS TLHE
-1587 CANADIAN SYLLABICS TLHI
-1588 CANADIAN SYLLABICS TLHO
-1589 CANADIAN SYLLABICS TLHA
-158A CANADIAN SYLLABICS WEST-CREE RE
-158B CANADIAN SYLLABICS WEST-CREE RI
-158C CANADIAN SYLLABICS WEST-CREE RO
-158D CANADIAN SYLLABICS WEST-CREE RA
-158E CANADIAN SYLLABICS NGAAI
-158F CANADIAN SYLLABICS NGI
-1590 CANADIAN SYLLABICS NGII
-1591 CANADIAN SYLLABICS NGO
-1592 CANADIAN SYLLABICS NGOO
-1593 CANADIAN SYLLABICS NGA
-1594 CANADIAN SYLLABICS NGAA
-1595 CANADIAN SYLLABICS NG
-1596 CANADIAN SYLLABICS NNG
-1597 CANADIAN SYLLABICS SAYISI SHE
-1598 CANADIAN SYLLABICS SAYISI SHI
-1599 CANADIAN SYLLABICS SAYISI SHO
-159A CANADIAN SYLLABICS SAYISI SHA
-159B CANADIAN SYLLABICS WOODS-CREE THE
-159C CANADIAN SYLLABICS WOODS-CREE THI
-159D CANADIAN SYLLABICS WOODS-CREE THO
-159E CANADIAN SYLLABICS WOODS-CREE THA
-159F CANADIAN SYLLABICS WOODS-CREE TH
-15A0 CANADIAN SYLLABICS LHI
-15A1 CANADIAN SYLLABICS LHII
-15A2 CANADIAN SYLLABICS LHO
-15A3 CANADIAN SYLLABICS LHOO
-15A4 CANADIAN SYLLABICS LHA
-15A5 CANADIAN SYLLABICS LHAA
-15A6 CANADIAN SYLLABICS LH
-15A7 CANADIAN SYLLABICS TH-CREE THE
-15A8 CANADIAN SYLLABICS TH-CREE THI
-15A9 CANADIAN SYLLABICS TH-CREE THII
-15AA CANADIAN SYLLABICS TH-CREE THO
-15AB CANADIAN SYLLABICS TH-CREE THOO
-15AC CANADIAN SYLLABICS TH-CREE THA
-15AD CANADIAN SYLLABICS TH-CREE THAA
-15AE CANADIAN SYLLABICS TH-CREE TH
-15AF CANADIAN SYLLABICS AIVILIK B
-15B0 CANADIAN SYLLABICS BLACKFOOT E
-15B1 CANADIAN SYLLABICS BLACKFOOT I
-15B2 CANADIAN SYLLABICS BLACKFOOT O
-15B3 CANADIAN SYLLABICS BLACKFOOT A
-15B4 CANADIAN SYLLABICS BLACKFOOT WE
-15B5 CANADIAN SYLLABICS BLACKFOOT WI
-15B6 CANADIAN SYLLABICS BLACKFOOT WO
-15B7 CANADIAN SYLLABICS BLACKFOOT WA
-15B8 CANADIAN SYLLABICS BLACKFOOT NE
-15B9 CANADIAN SYLLABICS BLACKFOOT NI
-15BA CANADIAN SYLLABICS BLACKFOOT NO
-15BB CANADIAN SYLLABICS BLACKFOOT NA
-15BC CANADIAN SYLLABICS BLACKFOOT KE
-15BD CANADIAN SYLLABICS BLACKFOOT KI
-15BE CANADIAN SYLLABICS BLACKFOOT KO
-15BF CANADIAN SYLLABICS BLACKFOOT KA
-15C0 CANADIAN SYLLABICS SAYISI HE
-15C1 CANADIAN SYLLABICS SAYISI HI
-15C2 CANADIAN SYLLABICS SAYISI HO
-15C3 CANADIAN SYLLABICS SAYISI HA
-15C4 CANADIAN SYLLABICS CARRIER GHU
-15C5 CANADIAN SYLLABICS CARRIER GHO
-15C6 CANADIAN SYLLABICS CARRIER GHE
-15C7 CANADIAN SYLLABICS CARRIER GHEE
-15C8 CANADIAN SYLLABICS CARRIER GHI
-15C9 CANADIAN SYLLABICS CARRIER GHA
-15CA CANADIAN SYLLABICS CARRIER RU
-15CB CANADIAN SYLLABICS CARRIER RO
-15CC CANADIAN SYLLABICS CARRIER RE
-15CD CANADIAN SYLLABICS CARRIER REE
-15CE CANADIAN SYLLABICS CARRIER RI
-15CF CANADIAN SYLLABICS CARRIER RA
-15D0 CANADIAN SYLLABICS CARRIER WU
-15D1 CANADIAN SYLLABICS CARRIER WO
-15D2 CANADIAN SYLLABICS CARRIER WE
-15D3 CANADIAN SYLLABICS CARRIER WEE
-15D4 CANADIAN SYLLABICS CARRIER WI
-15D5 CANADIAN SYLLABICS CARRIER WA
-15D6 CANADIAN SYLLABICS CARRIER HWU
-15D7 CANADIAN SYLLABICS CARRIER HWO
-15D8 CANADIAN SYLLABICS CARRIER HWE
-15D9 CANADIAN SYLLABICS CARRIER HWEE
-15DA CANADIAN SYLLABICS CARRIER HWI
-15DB CANADIAN SYLLABICS CARRIER HWA
-15DC CANADIAN SYLLABICS CARRIER THU
-15DD CANADIAN SYLLABICS CARRIER THO
-15DE CANADIAN SYLLABICS CARRIER THE
-15DF CANADIAN SYLLABICS CARRIER THEE
-15E0 CANADIAN SYLLABICS CARRIER THI
-15E1 CANADIAN SYLLABICS CARRIER THA
-15E2 CANADIAN SYLLABICS CARRIER TTU
-15E3 CANADIAN SYLLABICS CARRIER TTO
-15E4 CANADIAN SYLLABICS CARRIER TTE
-15E5 CANADIAN SYLLABICS CARRIER TTEE
-15E6 CANADIAN SYLLABICS CARRIER TTI
-15E7 CANADIAN SYLLABICS CARRIER TTA
-15E8 CANADIAN SYLLABICS CARRIER PU
-15E9 CANADIAN SYLLABICS CARRIER PO
-15EA CANADIAN SYLLABICS CARRIER PE
-15EB CANADIAN SYLLABICS CARRIER PEE
-15EC CANADIAN SYLLABICS CARRIER PI
-15ED CANADIAN SYLLABICS CARRIER PA
-15EE CANADIAN SYLLABICS CARRIER P
-15EF CANADIAN SYLLABICS CARRIER GU
-15F0 CANADIAN SYLLABICS CARRIER GO
-15F1 CANADIAN SYLLABICS CARRIER GE
-15F2 CANADIAN SYLLABICS CARRIER GEE
-15F3 CANADIAN SYLLABICS CARRIER GI
-15F4 CANADIAN SYLLABICS CARRIER GA
-15F5 CANADIAN SYLLABICS CARRIER KHU
-15F6 CANADIAN SYLLABICS CARRIER KHO
-15F7 CANADIAN SYLLABICS CARRIER KHE
-15F8 CANADIAN SYLLABICS CARRIER KHEE
-15F9 CANADIAN SYLLABICS CARRIER KHI
-15FA CANADIAN SYLLABICS CARRIER KHA
-15FB CANADIAN SYLLABICS CARRIER KKU
-15FC CANADIAN SYLLABICS CARRIER KKO
-15FD CANADIAN SYLLABICS CARRIER KKE
-15FE CANADIAN SYLLABICS CARRIER KKEE
-15FF CANADIAN SYLLABICS CARRIER KKI
-1600 CANADIAN SYLLABICS CARRIER KKA
-1601 CANADIAN SYLLABICS CARRIER KK
-1602 CANADIAN SYLLABICS CARRIER NU
-1603 CANADIAN SYLLABICS CARRIER NO
-1604 CANADIAN SYLLABICS CARRIER NE
-1605 CANADIAN SYLLABICS CARRIER NEE
-1606 CANADIAN SYLLABICS CARRIER NI
-1607 CANADIAN SYLLABICS CARRIER NA
-1608 CANADIAN SYLLABICS CARRIER MU
-1609 CANADIAN SYLLABICS CARRIER MO
-160A CANADIAN SYLLABICS CARRIER ME
-160B CANADIAN SYLLABICS CARRIER MEE
-160C CANADIAN SYLLABICS CARRIER MI
-160D CANADIAN SYLLABICS CARRIER MA
-160E CANADIAN SYLLABICS CARRIER YU
-160F CANADIAN SYLLABICS CARRIER YO
-1610 CANADIAN SYLLABICS CARRIER YE
-1611 CANADIAN SYLLABICS CARRIER YEE
-1612 CANADIAN SYLLABICS CARRIER YI
-1613 CANADIAN SYLLABICS CARRIER YA
-1614 CANADIAN SYLLABICS CARRIER JU
-1615 CANADIAN SYLLABICS SAYISI JU
-1616 CANADIAN SYLLABICS CARRIER JO
-1617 CANADIAN SYLLABICS CARRIER JE
-1618 CANADIAN SYLLABICS CARRIER JEE
-1619 CANADIAN SYLLABICS CARRIER JI
-161A CANADIAN SYLLABICS SAYISI JI
-161B CANADIAN SYLLABICS CARRIER JA
-161C CANADIAN SYLLABICS CARRIER JJU
-161D CANADIAN SYLLABICS CARRIER JJO
-161E CANADIAN SYLLABICS CARRIER JJE
-161F CANADIAN SYLLABICS CARRIER JJEE
-1620 CANADIAN SYLLABICS CARRIER JJI
-1621 CANADIAN SYLLABICS CARRIER JJA
-1622 CANADIAN SYLLABICS CARRIER LU
-1623 CANADIAN SYLLABICS CARRIER LO
-1624 CANADIAN SYLLABICS CARRIER LE
-1625 CANADIAN SYLLABICS CARRIER LEE
-1626 CANADIAN SYLLABICS CARRIER LI
-1627 CANADIAN SYLLABICS CARRIER LA
-1628 CANADIAN SYLLABICS CARRIER DLU
-1629 CANADIAN SYLLABICS CARRIER DLO
-162A CANADIAN SYLLABICS CARRIER DLE
-162B CANADIAN SYLLABICS CARRIER DLEE
-162C CANADIAN SYLLABICS CARRIER DLI
-162D CANADIAN SYLLABICS CARRIER DLA
-162E CANADIAN SYLLABICS CARRIER LHU
-162F CANADIAN SYLLABICS CARRIER LHO
-1630 CANADIAN SYLLABICS CARRIER LHE
-1631 CANADIAN SYLLABICS CARRIER LHEE
-1632 CANADIAN SYLLABICS CARRIER LHI
-1633 CANADIAN SYLLABICS CARRIER LHA
-1634 CANADIAN SYLLABICS CARRIER TLHU
-1635 CANADIAN SYLLABICS CARRIER TLHO
-1636 CANADIAN SYLLABICS CARRIER TLHE
-1637 CANADIAN SYLLABICS CARRIER TLHEE
-1638 CANADIAN SYLLABICS CARRIER TLHI
-1639 CANADIAN SYLLABICS CARRIER TLHA
-163A CANADIAN SYLLABICS CARRIER TLU
-163B CANADIAN SYLLABICS CARRIER TLO
-163C CANADIAN SYLLABICS CARRIER TLE
-163D CANADIAN SYLLABICS CARRIER TLEE
-163E CANADIAN SYLLABICS CARRIER TLI
-163F CANADIAN SYLLABICS CARRIER TLA
-1640 CANADIAN SYLLABICS CARRIER ZU
-1641 CANADIAN SYLLABICS CARRIER ZO
-1642 CANADIAN SYLLABICS CARRIER ZE
-1643 CANADIAN SYLLABICS CARRIER ZEE
-1644 CANADIAN SYLLABICS CARRIER ZI
-1645 CANADIAN SYLLABICS CARRIER ZA
-1646 CANADIAN SYLLABICS CARRIER Z
-1647 CANADIAN SYLLABICS CARRIER INITIAL Z
-1648 CANADIAN SYLLABICS CARRIER DZU
-1649 CANADIAN SYLLABICS CARRIER DZO
-164A CANADIAN SYLLABICS CARRIER DZE
-164B CANADIAN SYLLABICS CARRIER DZEE
-164C CANADIAN SYLLABICS CARRIER DZI
-164D CANADIAN SYLLABICS CARRIER DZA
-164E CANADIAN SYLLABICS CARRIER SU
-164F CANADIAN SYLLABICS CARRIER SO
-1650 CANADIAN SYLLABICS CARRIER SE
-1651 CANADIAN SYLLABICS CARRIER SEE
-1652 CANADIAN SYLLABICS CARRIER SI
-1653 CANADIAN SYLLABICS CARRIER SA
-1654 CANADIAN SYLLABICS CARRIER SHU
-1655 CANADIAN SYLLABICS CARRIER SHO
-1656 CANADIAN SYLLABICS CARRIER SHE
-1657 CANADIAN SYLLABICS CARRIER SHEE
-1658 CANADIAN SYLLABICS CARRIER SHI
-1659 CANADIAN SYLLABICS CARRIER SHA
-165A CANADIAN SYLLABICS CARRIER SH
-165B CANADIAN SYLLABICS CARRIER TSU
-165C CANADIAN SYLLABICS CARRIER TSO
-165D CANADIAN SYLLABICS CARRIER TSE
-165E CANADIAN SYLLABICS CARRIER TSEE
-165F CANADIAN SYLLABICS CARRIER TSI
-1660 CANADIAN SYLLABICS CARRIER TSA
-1661 CANADIAN SYLLABICS CARRIER CHU
-1662 CANADIAN SYLLABICS CARRIER CHO
-1663 CANADIAN SYLLABICS CARRIER CHE
-1664 CANADIAN SYLLABICS CARRIER CHEE
-1665 CANADIAN SYLLABICS CARRIER CHI
-1666 CANADIAN SYLLABICS CARRIER CHA
-1667 CANADIAN SYLLABICS CARRIER TTSU
-1668 CANADIAN SYLLABICS CARRIER TTSO
-1669 CANADIAN SYLLABICS CARRIER TTSE
-166A CANADIAN SYLLABICS CARRIER TTSEE
-166B CANADIAN SYLLABICS CARRIER TTSI
-166C CANADIAN SYLLABICS CARRIER TTSA
-@ Punctuation
-166D CANADIAN SYLLABICS CHI SIGN
-166E CANADIAN SYLLABICS FULL STOP
-@ Syllables
-166F CANADIAN SYLLABICS QAI
-1670 CANADIAN SYLLABICS NGAI
-1671 CANADIAN SYLLABICS NNGI
-1672 CANADIAN SYLLABICS NNGII
-1673 CANADIAN SYLLABICS NNGO
-1674 CANADIAN SYLLABICS NNGOO
-1675 CANADIAN SYLLABICS NNGA
-1676 CANADIAN SYLLABICS NNGAA
-@@ 1680 Ogham 169F
-@ Punctuation
-1680 OGHAM SPACE MARK
- * glyph is blank in "stemless" style fonts
-@ Traditional letters
-1681 OGHAM LETTER BEITH
-1682 OGHAM LETTER LUIS
-1683 OGHAM LETTER FEARN
-1684 OGHAM LETTER SAIL
-1685 OGHAM LETTER NION
-1686 OGHAM LETTER UATH
-1687 OGHAM LETTER DAIR
-1688 OGHAM LETTER TINNE
-1689 OGHAM LETTER COLL
-168A OGHAM LETTER CEIRT
-168B OGHAM LETTER MUIN
-168C OGHAM LETTER GORT
-168D OGHAM LETTER NGEADAL
-168E OGHAM LETTER STRAIF
-168F OGHAM LETTER RUIS
-1690 OGHAM LETTER AILM
-1691 OGHAM LETTER ONN
-1692 OGHAM LETTER UR
-1693 OGHAM LETTER EADHADH
-1694 OGHAM LETTER IODHADH
-@ Forfeda (supplementary letters)
-1695 OGHAM LETTER EABHADH
-1696 OGHAM LETTER OR
-1697 OGHAM LETTER UILLEANN
-1698 OGHAM LETTER IFIN
-1699 OGHAM LETTER EAMHANCHOLL
-169A OGHAM LETTER PEITH
-@ Punctuation
-169B OGHAM FEATHER MARK
- * marks beginning of Ogham text
-169C OGHAM REVERSED FEATHER MARK
- * marks end of Ogham text
-@@ 16A0 Runic 16FF
-@ Letters
-16A0 RUNIC LETTER FEHU FEOH FE F
-16A1 RUNIC LETTER V
-16A2 RUNIC LETTER URUZ UR U
-16A3 RUNIC LETTER YR
-16A4 RUNIC LETTER Y
-16A5 RUNIC LETTER W
-16A6 RUNIC LETTER THURISAZ THURS THORN
- x (latin small letter thorn - 00FE)
-16A7 RUNIC LETTER ETH
-16A8 RUNIC LETTER ANSUZ A
-16A9 RUNIC LETTER OS O
-16AA RUNIC LETTER AC A
-16AB RUNIC LETTER AESC
-16AC RUNIC LETTER LONG-BRANCH-OSS O
-16AD RUNIC LETTER SHORT-TWIG-OSS O
-16AE RUNIC LETTER O
-16AF RUNIC LETTER OE
-16B0 RUNIC LETTER ON
-16B1 RUNIC LETTER RAIDO RAD REID R
-16B2 RUNIC LETTER KAUNA
-16B3 RUNIC LETTER CEN
-16B4 RUNIC LETTER KAUN K
-16B5 RUNIC LETTER G
-16B6 RUNIC LETTER ENG
-16B7 RUNIC LETTER GEBO GYFU G
-16B8 RUNIC LETTER GAR
-16B9 RUNIC LETTER WUNJO WYNN W
- x (latin letter wynn - 01BF)
-16BA RUNIC LETTER HAGLAZ H
-16BB RUNIC LETTER HAEGL H
-16BC RUNIC LETTER LONG-BRANCH-HAGALL H
-16BD RUNIC LETTER SHORT-TWIG-HAGALL H
-16BE RUNIC LETTER NAUDIZ NYD NAUD N
-16BF RUNIC LETTER SHORT-TWIG-NAUD N
-16C0 RUNIC LETTER DOTTED-N
-16C1 RUNIC LETTER ISAZ IS ISS I
-16C2 RUNIC LETTER E
-16C3 RUNIC LETTER JERAN J
-16C4 RUNIC LETTER GER
-16C5 RUNIC LETTER LONG-BRANCH-AR AE
-16C6 RUNIC LETTER SHORT-TWIG-AR A
-16C7 RUNIC LETTER IWAZ EOH
-16C8 RUNIC LETTER PERTHO PEORTH P
-16C9 RUNIC LETTER ALGIZ EOLHX
-16CA RUNIC LETTER SOWILO S
-16CB RUNIC LETTER SIGEL LONG-BRANCH-SOL S
-16CC RUNIC LETTER SHORT-TWIG-SOL S
-16CD RUNIC LETTER C
-16CE RUNIC LETTER Z
-16CF RUNIC LETTER TIWAZ TIR TYR T
-16D0 RUNIC LETTER SHORT-TWIG-TYR T
-16D1 RUNIC LETTER D
-16D2 RUNIC LETTER BERKANAN BEORC BJARKAN B
-16D3 RUNIC LETTER SHORT-TWIG-BJARKAN B
-16D4 RUNIC LETTER DOTTED-P
-16D5 RUNIC LETTER OPEN-P
-16D6 RUNIC LETTER EHWAZ EH E
-16D7 RUNIC LETTER MANNAZ MAN M
-16D8 RUNIC LETTER LONG-BRANCH-MADR M
-16D9 RUNIC LETTER SHORT-TWIG-MADR M
-16DA RUNIC LETTER LAUKAZ LAGU LOGR L
-16DB RUNIC LETTER DOTTED-L
-16DC RUNIC LETTER INGWAZ
-16DD RUNIC LETTER ING
-16DE RUNIC LETTER DAGAZ DAEG D
-16DF RUNIC LETTER OTHALAN ETHEL O
-16E0 RUNIC LETTER EAR
-16E1 RUNIC LETTER IOR
-16E2 RUNIC LETTER CWEORTH
-16E3 RUNIC LETTER CALC
-16E4 RUNIC LETTER CEALC
-16E5 RUNIC LETTER STAN
-16E6 RUNIC LETTER LONG-BRANCH-YR
-16E7 RUNIC LETTER SHORT-TWIG-YR
-16E8 RUNIC LETTER ICELANDIC-YR
-16E9 RUNIC LETTER Q
-16EA RUNIC LETTER X
-@ Punctuation
-16EB RUNIC SINGLE PUNCTUATION
-16EC RUNIC MULTIPLE PUNCTUATION
-16ED RUNIC CROSS PUNCTUATION
-@ Golden number runes
-16EE RUNIC ARLAUG SYMBOL (golden number 17)
- * golden number 17
-16EF RUNIC TVIMADUR SYMBOL (golden number 18)
- * golden number 18
-16F0 RUNIC BELGTHOR SYMBOL (golden number 19)
- * golden number 19
-@@ 1780 Khmer 17FF
-@ Consonants
-1780 KHMER LETTER KA
-1781 KHMER LETTER KHA
-1782 KHMER LETTER KO
-1783 KHMER LETTER KHO
-1784 KHMER LETTER NGO
-1785 KHMER LETTER CA
-1786 KHMER LETTER CHA
-1787 KHMER LETTER CO
-1788 KHMER LETTER CHO
-1789 KHMER LETTER NYO
-178A KHMER LETTER DA
-178B KHMER LETTER TTHA
-178C KHMER LETTER DO
-178D KHMER LETTER TTHO
-178E KHMER LETTER NNO
-178F KHMER LETTER TA
-1790 KHMER LETTER THA
-1791 KHMER LETTER TO
-1792 KHMER LETTER THO
-1793 KHMER LETTER NO
-1794 KHMER LETTER BA
-1795 KHMER LETTER PHA
-1796 KHMER LETTER PO
-1797 KHMER LETTER PHO
-1798 KHMER LETTER MO
-1799 KHMER LETTER YO
-179A KHMER LETTER RO
-179B KHMER LETTER LO
-179C KHMER LETTER VO
-179D KHMER LETTER SHA
- * used only for Pali/Sanskrit transliteration
-179E KHMER LETTER SSO
- * used only for Pali/Sanskrit transliteration
-179F KHMER LETTER SA
-17A0 KHMER LETTER HA
-17A1 KHMER LETTER LA
-17A2 KHMER LETTER QA
- * glottal stop
-@ Independent vowels
-17A3 KHMER INDEPENDENT VOWEL QAQ
- * used only for Pali/Sanskrit transliteration
-17A4 KHMER INDEPENDENT VOWEL QAA
- * used only for Pali/Sanskrit transliteration
-17A5 KHMER INDEPENDENT VOWEL QI
-17A6 KHMER INDEPENDENT VOWEL QII
-17A7 KHMER INDEPENDENT VOWEL QU
-17A8 KHMER INDEPENDENT VOWEL QUK
- * obsolete
-17A9 KHMER INDEPENDENT VOWEL QUU
-17AA KHMER INDEPENDENT VOWEL QUUV
-17AB KHMER INDEPENDENT VOWEL RY
-17AC KHMER INDEPENDENT VOWEL RYY
-17AD KHMER INDEPENDENT VOWEL LY
-17AE KHMER INDEPENDENT VOWEL LYY
-17AF KHMER INDEPENDENT VOWEL QE
-17B0 KHMER INDEPENDENT VOWEL QAI
-17B1 KHMER INDEPENDENT VOWEL QOO TYPE ONE
-17B2 KHMER INDEPENDENT VOWEL QOO TYPE TWO
-17B3 KHMER INDEPENDENT VOWEL QAU
-@ Inherent vowels
-@+ These are for phonetic transcription to distinguish Indic language inherent vowels from Khmer inherent vowels.
-17B4 KHMER VOWEL INHERENT AQ
-17B5 KHMER VOWEL INHERENT AA
-@ Dependent vowel signs
-17B6 KHMER VOWEL SIGN AA
-17B7 KHMER VOWEL SIGN I
-17B8 KHMER VOWEL SIGN II
-17B9 KHMER VOWEL SIGN Y
-17BA KHMER VOWEL SIGN YY
-17BB KHMER VOWEL SIGN U
-17BC KHMER VOWEL SIGN UU
-17BD KHMER VOWEL SIGN UA
-17BE KHMER VOWEL SIGN OE
-17BF KHMER VOWEL SIGN YA
-17C0 KHMER VOWEL SIGN IE
-17C1 KHMER VOWEL SIGN E
-17C2 KHMER VOWEL SIGN AE
-17C3 KHMER VOWEL SIGN AI
-17C4 KHMER VOWEL SIGN OO
-17C5 KHMER VOWEL SIGN AU
-@ Various signs
-17C6 KHMER SIGN NIKAHIT
- = anusvara
- * final nasalization
- x (thai character nikhahit - 0E4D)
- x (myanmar sign anusvara - 1036)
-17C7 KHMER SIGN REAHMUK
- = visarga
- x (myanmar sign visarga - 1038)
-17C8 KHMER SIGN YUUKALEAPINTU
- * inserts a short inherent vowel with abrupt glottal stop
-@ Consonant shifters
-@+ These signs shift the base consonant between registers.
-17C9 KHMER SIGN MUUSIKATOAN
- * change second register to first
-17CA KHMER SIGN TRIISAP
- * change first register to second
-@ Various signs
-17CB KHMER SIGN BANTOC
- * shortens preceding vowel
-17CC KHMER SIGN ROBAT
- * corresponds to initial r in Indian loan words, but treated as a diacritic
-17CD KHMER SIGN TOANDAKHIAT
- * marks character not to be pronounced
-17CE KHMER SIGN KAKABAT
- * sign used with some exclamations
-17CF KHMER SIGN AHSDA
- * conjoined sign used in spelling of two single-consonant words
-17D0 KHMER SIGN SAMYOK SANNYA
- * used with 17A4 to indicate shortened inherent vowel
-17D1 KHMER SIGN VIRIAM
- * mostly obsolete
- * indicates the base character is part of the previous word
-17D2 KHMER SIGN COENG
- * functions as virama
- * shape shown is arbitrary and not rendered
-17D3 KHMER SIGN BATHAMASAT
- * very rare sign used in historic lunar dates
-17D4 KHMER SIGN KHAN
- * functions as full stop, ellipsis, abbreviation
- x (thai character paiyannoi - 0E2F)
- x (thai character angkhankhu - 0E5A)
- x (myanmar sign little section - 104A)
-17D5 KHMER SIGN BARIYOOSAN
- * end of section
- x (myanmar sign section - 104B)
-17D6 KHMER SIGN CAMNUC PII KUUH
- * functions as colon or semicolon
- x (division sign - 00F7)
- x (tibetan mark gter tsheg - 0F14)
-17D7 KHMER SIGN LEK TOO
- * repetition sign
-17D8 KHMER SIGN BEYYAL
- * et cetera
-17D9 KHMER SIGN PHNAEK MUAN
- * a list bullet
- x (thai character fongman - 0E4F)
-17DA KHMER SIGN KOOMUUT
- * indicates end of book or treatise
- x (thai character khomut - 0E5B)
-@ Currency symbol
-17DB KHMER CURRENCY SYMBOL RIEL
-@ Sign
-17DC KHMER SIGN AVAKRAHASANYA
- * rare, shows a deleted Sanskrit vowel, like an apostrophe
-@ Digits
-17E0 KHMER DIGIT ZERO
-17E1 KHMER DIGIT ONE
-17E2 KHMER DIGIT TWO
-17E3 KHMER DIGIT THREE
-17E4 KHMER DIGIT FOUR
-17E5 KHMER DIGIT FIVE
-17E6 KHMER DIGIT SIX
-17E7 KHMER DIGIT SEVEN
-17E8 KHMER DIGIT EIGHT
-17E9 KHMER DIGIT NINE
-@@ 1800 Mongolian 18AF
-@ Punctuation
-1800 MONGOLIAN BIRGA
- x (tibetan mark initial yig mgo mdun ma - 0F04)
-1801 MONGOLIAN ELLIPSIS
-1802 MONGOLIAN COMMA
-1803 MONGOLIAN FULL STOP
-1804 MONGOLIAN COLON
-1805 MONGOLIAN FOUR DOTS
- * marks the end of a chapter
-1806 MONGOLIAN TODO SOFT HYPHEN
-1807 MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
-1808 MONGOLIAN MANCHU COMMA
-1809 MONGOLIAN MANCHU FULL STOP
-180A MONGOLIAN NIRUGU
-@ Format controls
-180B MONGOLIAN FREE VARIATION SELECTOR ONE
-180C MONGOLIAN FREE VARIATION SELECTOR TWO
-180D MONGOLIAN FREE VARIATION SELECTOR THREE
-180E MONGOLIAN VOWEL SEPARATOR
-@ Digits
-1810 MONGOLIAN DIGIT ZERO
-1811 MONGOLIAN DIGIT ONE
-1812 MONGOLIAN DIGIT TWO
-1813 MONGOLIAN DIGIT THREE
-1814 MONGOLIAN DIGIT FOUR
-1815 MONGOLIAN DIGIT FIVE
-1816 MONGOLIAN DIGIT SIX
-1817 MONGOLIAN DIGIT SEVEN
-1818 MONGOLIAN DIGIT EIGHT
-1819 MONGOLIAN DIGIT NINE
-@ Basic letters
-1820 MONGOLIAN LETTER A
- x (cyrillic small letter a - 0430)
-1821 MONGOLIAN LETTER E
- x (cyrillic small letter e - 044D)
-1822 MONGOLIAN LETTER I
- x (cyrillic small letter i - 0438)
-1823 MONGOLIAN LETTER O
- x (cyrillic small letter o - 043E)
-1824 MONGOLIAN LETTER U
- x (cyrillic small letter u - 0443)
-1825 MONGOLIAN LETTER OE
- x (cyrillic small letter barred o - 04E9)
-1826 MONGOLIAN LETTER UE
- x (cyrillic small letter straight u - 04AF)
-1827 MONGOLIAN LETTER EE
-1828 MONGOLIAN LETTER NA
- x (cyrillic small letter en - 043D)
-1829 MONGOLIAN LETTER ANG
-182A MONGOLIAN LETTER BA
- x (cyrillic small letter be - 0431)
-182B MONGOLIAN LETTER PA
- x (cyrillic small letter pe - 043F)
-182C MONGOLIAN LETTER QA
- x (cyrillic small letter ha - 0445)
-182D MONGOLIAN LETTER GA
- x (cyrillic small letter ghe - 0433)
-182E MONGOLIAN LETTER MA
- x (cyrillic small letter em - 043C)
-182F MONGOLIAN LETTER LA
- x (cyrillic small letter el - 043B)
-1830 MONGOLIAN LETTER SA
- x (cyrillic small letter es - 0441)
-1831 MONGOLIAN LETTER SHA
- x (cyrillic small letter sha - 0448)
-1832 MONGOLIAN LETTER TA
- x (cyrillic small letter te - 0442)
-1833 MONGOLIAN LETTER DA
- x (cyrillic small letter de - 0434)
-1834 MONGOLIAN LETTER CHA
- x (cyrillic small letter che - 0447)
-1835 MONGOLIAN LETTER JA
- x (cyrillic small letter zhe - 0436)
-1836 MONGOLIAN LETTER YA
- x (cyrillic small letter short i - 0439)
-1837 MONGOLIAN LETTER RA
- x (cyrillic small letter er - 0440)
-1838 MONGOLIAN LETTER WA
- x (cyrillic small letter ve - 0432)
-1839 MONGOLIAN LETTER FA
- x (cyrillic small letter ef - 0444)
-183A MONGOLIAN LETTER KA
- x (cyrillic small letter ha - 0445)
-183B MONGOLIAN LETTER KHA
- x (cyrillic small letter ka - 043A)
-183C MONGOLIAN LETTER TSA
- x (cyrillic small letter tse - 0446)
-183D MONGOLIAN LETTER ZA
- x (cyrillic small letter ze - 0437)
-183E MONGOLIAN LETTER HAA
- x (cyrillic small letter ha - 0445)
-183F MONGOLIAN LETTER ZRA
- x (cyrillic small letter zhe - 0436)
-1840 MONGOLIAN LETTER LHA
-1841 MONGOLIAN LETTER ZHI
-1842 MONGOLIAN LETTER CHI
-@ Todo letters
-1843 MONGOLIAN LETTER TODO LONG VOWEL SIGN
-1844 MONGOLIAN LETTER TODO E
-1845 MONGOLIAN LETTER TODO I
-1846 MONGOLIAN LETTER TODO O
-1847 MONGOLIAN LETTER TODO U
-1848 MONGOLIAN LETTER TODO OE
-1849 MONGOLIAN LETTER TODO UE
-184A MONGOLIAN LETTER TODO ANG
-184B MONGOLIAN LETTER TODO BA
-184C MONGOLIAN LETTER TODO PA
-184D MONGOLIAN LETTER TODO QA
-184E MONGOLIAN LETTER TODO GA
-184F MONGOLIAN LETTER TODO MA
-1850 MONGOLIAN LETTER TODO TA
-1851 MONGOLIAN LETTER TODO DA
-1852 MONGOLIAN LETTER TODO CHA
-1853 MONGOLIAN LETTER TODO JA
-1854 MONGOLIAN LETTER TODO TSA
-1855 MONGOLIAN LETTER TODO YA
-1856 MONGOLIAN LETTER TODO WA
-1857 MONGOLIAN LETTER TODO KA
-1858 MONGOLIAN LETTER TODO GAA
-1859 MONGOLIAN LETTER TODO HAA
-185A MONGOLIAN LETTER TODO JIA
-185B MONGOLIAN LETTER TODO NIA
-185C MONGOLIAN LETTER TODO DZA
-@ Sibe letters
-185D MONGOLIAN LETTER SIBE E
-185E MONGOLIAN LETTER SIBE I
-185F MONGOLIAN LETTER SIBE IY
-1860 MONGOLIAN LETTER SIBE UE
-1861 MONGOLIAN LETTER SIBE U
-1862 MONGOLIAN LETTER SIBE ANG
-1863 MONGOLIAN LETTER SIBE KA
-1864 MONGOLIAN LETTER SIBE GA
-1865 MONGOLIAN LETTER SIBE HA
-1866 MONGOLIAN LETTER SIBE PA
-1867 MONGOLIAN LETTER SIBE SHA
-1868 MONGOLIAN LETTER SIBE TA
-1869 MONGOLIAN LETTER SIBE DA
-186A MONGOLIAN LETTER SIBE JA
-186B MONGOLIAN LETTER SIBE FA
-186C MONGOLIAN LETTER SIBE GAA
-186D MONGOLIAN LETTER SIBE HAA
-186E MONGOLIAN LETTER SIBE TSA
-186F MONGOLIAN LETTER SIBE ZA
-1870 MONGOLIAN LETTER SIBE RAA
-1871 MONGOLIAN LETTER SIBE CHA
-1872 MONGOLIAN LETTER SIBE ZHA
-@ Manchu letters
-1873 MONGOLIAN LETTER MANCHU I
-1874 MONGOLIAN LETTER MANCHU KA
-1875 MONGOLIAN LETTER MANCHU RA
-1876 MONGOLIAN LETTER MANCHU FA
-1877 MONGOLIAN LETTER MANCHU ZHA
-@ Extensions for Sanskrit and Tibetan
-1880 MONGOLIAN LETTER ALI GALI ANUSVARA ONE
-1881 MONGOLIAN LETTER ALI GALI VISARGA ONE
-1882 MONGOLIAN LETTER ALI GALI DAMARU
-1883 MONGOLIAN LETTER ALI GALI UBADAMA
-1884 MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
-1885 MONGOLIAN LETTER ALI GALI BALUDA
-1886 MONGOLIAN LETTER ALI GALI THREE BALUDA
-1887 MONGOLIAN LETTER ALI GALI A
-1888 MONGOLIAN LETTER ALI GALI I
-1889 MONGOLIAN LETTER ALI GALI KA
-188A MONGOLIAN LETTER ALI GALI NGA
-188B MONGOLIAN LETTER ALI GALI CA
-188C MONGOLIAN LETTER ALI GALI TTA
-188D MONGOLIAN LETTER ALI GALI TTHA
-188E MONGOLIAN LETTER ALI GALI DDA
-188F MONGOLIAN LETTER ALI GALI NNA
-1890 MONGOLIAN LETTER ALI GALI TA
-1891 MONGOLIAN LETTER ALI GALI DA
-1892 MONGOLIAN LETTER ALI GALI PA
-1893 MONGOLIAN LETTER ALI GALI PHA
-1894 MONGOLIAN LETTER ALI GALI SSA
-1895 MONGOLIAN LETTER ALI GALI ZHA
-1896 MONGOLIAN LETTER ALI GALI ZA
-1897 MONGOLIAN LETTER ALI GALI AH
-1898 MONGOLIAN LETTER TODO ALI GALI TA
-1899 MONGOLIAN LETTER TODO ALI GALI ZHA
-189A MONGOLIAN LETTER MANCHU ALI GALI GHA
-189B MONGOLIAN LETTER MANCHU ALI GALI NGA
-189C MONGOLIAN LETTER MANCHU ALI GALI CA
-189D MONGOLIAN LETTER MANCHU ALI GALI JHA
-189E MONGOLIAN LETTER MANCHU ALI GALI TTA
-189F MONGOLIAN LETTER MANCHU ALI GALI DDHA
-18A0 MONGOLIAN LETTER MANCHU ALI GALI TA
-18A1 MONGOLIAN LETTER MANCHU ALI GALI DHA
-18A2 MONGOLIAN LETTER MANCHU ALI GALI SSA
-18A3 MONGOLIAN LETTER MANCHU ALI GALI CYA
-18A4 MONGOLIAN LETTER MANCHU ALI GALI ZHA
-18A5 MONGOLIAN LETTER MANCHU ALI GALI ZA
-18A6 MONGOLIAN LETTER ALI GALI HALF U
-18A7 MONGOLIAN LETTER ALI GALI HALF YA
-18A8 MONGOLIAN LETTER MANCHU ALI GALI BHA
-18A9 MONGOLIAN LETTER ALI GALI DAGALGA
-@@ 1E00 Latin Extended Additional 1EFF
-@ Latin general use extensions
-1E00 LATIN CAPITAL LETTER A WITH RING BELOW
- : 0041 0325
-1E01 LATIN SMALL LETTER A WITH RING BELOW
- : 0061 0325
-1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE
- : 0042 0307
-1E03 LATIN SMALL LETTER B WITH DOT ABOVE
- * Irish Gaelic (old orthography)
- : 0062 0307
-1E04 LATIN CAPITAL LETTER B WITH DOT BELOW
- : 0042 0323
-1E05 LATIN SMALL LETTER B WITH DOT BELOW
- : 0062 0323
-1E06 LATIN CAPITAL LETTER B WITH LINE BELOW
- : 0042 0331
-1E07 LATIN SMALL LETTER B WITH LINE BELOW
- : 0062 0331
-1E08 LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
- : 00C7 0301
-1E09 LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
- : 00E7 0301
-1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE
- : 0044 0307
-1E0B LATIN SMALL LETTER D WITH DOT ABOVE
- * Irish Gaelic (old orthography)
- : 0064 0307
-1E0C LATIN CAPITAL LETTER D WITH DOT BELOW
- : 0044 0323
-1E0D LATIN SMALL LETTER D WITH DOT BELOW
- * Indic transliteration
- : 0064 0323
-1E0E LATIN CAPITAL LETTER D WITH LINE BELOW
- : 0044 0331
-1E0F LATIN SMALL LETTER D WITH LINE BELOW
- : 0064 0331
-1E10 LATIN CAPITAL LETTER D WITH CEDILLA
- : 0044 0327
-1E11 LATIN SMALL LETTER D WITH CEDILLA
- * Livonian
- : 0064 0327
-1E12 LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
- : 0044 032D
-1E13 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
- : 0064 032D
-1E14 LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
- : 0112 0300
-1E15 LATIN SMALL LETTER E WITH MACRON AND GRAVE
- : 0113 0300
-1E16 LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
- : 0112 0301
-1E17 LATIN SMALL LETTER E WITH MACRON AND ACUTE
- : 0113 0301
-1E18 LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
- : 0045 032D
-1E19 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
- : 0065 032D
-1E1A LATIN CAPITAL LETTER E WITH TILDE BELOW
- : 0045 0330
-1E1B LATIN SMALL LETTER E WITH TILDE BELOW
- : 0065 0330
-1E1C LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
- : 0228 0306
-1E1D LATIN SMALL LETTER E WITH CEDILLA AND BREVE
- : 0229 0306
-1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE
- : 0046 0307
-1E1F LATIN SMALL LETTER F WITH DOT ABOVE
- * Irish Gaelic (old orthography)
- : 0066 0307
-1E20 LATIN CAPITAL LETTER G WITH MACRON
- : 0047 0304
-1E21 LATIN SMALL LETTER G WITH MACRON
- : 0067 0304
-1E22 LATIN CAPITAL LETTER H WITH DOT ABOVE
- : 0048 0307
-1E23 LATIN SMALL LETTER H WITH DOT ABOVE
- : 0068 0307
-1E24 LATIN CAPITAL LETTER H WITH DOT BELOW
- : 0048 0323
-1E25 LATIN SMALL LETTER H WITH DOT BELOW
- * Indic transliteration
- : 0068 0323
-1E26 LATIN CAPITAL LETTER H WITH DIAERESIS
- : 0048 0308
-1E27 LATIN SMALL LETTER H WITH DIAERESIS
- : 0068 0308
-1E28 LATIN CAPITAL LETTER H WITH CEDILLA
- : 0048 0327
-1E29 LATIN SMALL LETTER H WITH CEDILLA
- : 0068 0327
-1E2A LATIN CAPITAL LETTER H WITH BREVE BELOW
- : 0048 032E
-1E2B LATIN SMALL LETTER H WITH BREVE BELOW
- * Semitic transliteration
- : 0068 032E
-1E2C LATIN CAPITAL LETTER I WITH TILDE BELOW
- : 0049 0330
-1E2D LATIN SMALL LETTER I WITH TILDE BELOW
- : 0069 0330
-1E2E LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
- : 00CF 0301
-1E2F LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
- : 00EF 0301
-1E30 LATIN CAPITAL LETTER K WITH ACUTE
- : 004B 0301
-1E31 LATIN SMALL LETTER K WITH ACUTE
- : 006B 0301
-1E32 LATIN CAPITAL LETTER K WITH DOT BELOW
- : 004B 0323
-1E33 LATIN SMALL LETTER K WITH DOT BELOW
- : 006B 0323
-1E34 LATIN CAPITAL LETTER K WITH LINE BELOW
- : 004B 0331
-1E35 LATIN SMALL LETTER K WITH LINE BELOW
- : 006B 0331
-1E36 LATIN CAPITAL LETTER L WITH DOT BELOW
- : 004C 0323
-1E37 LATIN SMALL LETTER L WITH DOT BELOW
- * Indic transliteration
- : 006C 0323
-1E38 LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
- : 1E36 0304
-1E39 LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
- * Indic transliteration
- : 1E37 0304
-1E3A LATIN CAPITAL LETTER L WITH LINE BELOW
- : 004C 0331
-1E3B LATIN SMALL LETTER L WITH LINE BELOW
- * Indic transliteration
- : 006C 0331
-1E3C LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
- : 004C 032D
-1E3D LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
- : 006C 032D
-1E3E LATIN CAPITAL LETTER M WITH ACUTE
- : 004D 0301
-1E3F LATIN SMALL LETTER M WITH ACUTE
- : 006D 0301
-1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE
- : 004D 0307
-1E41 LATIN SMALL LETTER M WITH DOT ABOVE
- * Irish Gaelic (old orthography)
- : 006D 0307
-1E42 LATIN CAPITAL LETTER M WITH DOT BELOW
- : 004D 0323
-1E43 LATIN SMALL LETTER M WITH DOT BELOW
- * Indic transliteration
- : 006D 0323
-1E44 LATIN CAPITAL LETTER N WITH DOT ABOVE
- : 004E 0307
-1E45 LATIN SMALL LETTER N WITH DOT ABOVE
- * Indic transliteration
- : 006E 0307
-1E46 LATIN CAPITAL LETTER N WITH DOT BELOW
- : 004E 0323
-1E47 LATIN SMALL LETTER N WITH DOT BELOW
- * Indic transliteration
- : 006E 0323
-1E48 LATIN CAPITAL LETTER N WITH LINE BELOW
- : 004E 0331
-1E49 LATIN SMALL LETTER N WITH LINE BELOW
- * Indic transliteration
- : 006E 0331
-1E4A LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
- : 004E 032D
-1E4B LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
- : 006E 032D
-1E4C LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
- : 00D5 0301
-1E4D LATIN SMALL LETTER O WITH TILDE AND ACUTE
- : 00F5 0301
-1E4E LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
- : 00D5 0308
-1E4F LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
- : 00F5 0308
-1E50 LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
- : 014C 0300
-1E51 LATIN SMALL LETTER O WITH MACRON AND GRAVE
- : 014D 0300
-1E52 LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
- : 014C 0301
-1E53 LATIN SMALL LETTER O WITH MACRON AND ACUTE
- : 014D 0301
-1E54 LATIN CAPITAL LETTER P WITH ACUTE
- : 0050 0301
-1E55 LATIN SMALL LETTER P WITH ACUTE
- : 0070 0301
-1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE
- : 0050 0307
-1E57 LATIN SMALL LETTER P WITH DOT ABOVE
- * Irish Gaelic (old orthography)
- : 0070 0307
-1E58 LATIN CAPITAL LETTER R WITH DOT ABOVE
- : 0052 0307
-1E59 LATIN SMALL LETTER R WITH DOT ABOVE
- : 0072 0307
-1E5A LATIN CAPITAL LETTER R WITH DOT BELOW
- : 0052 0323
-1E5B LATIN SMALL LETTER R WITH DOT BELOW
- * Indic transliteration
- : 0072 0323
-1E5C LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
- : 1E5A 0304
-1E5D LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
- * Indic transliteration
- : 1E5B 0304
-1E5E LATIN CAPITAL LETTER R WITH LINE BELOW
- : 0052 0331
-1E5F LATIN SMALL LETTER R WITH LINE BELOW
- * Indic transliteration
- : 0072 0331
-1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE
- : 0053 0307
-1E61 LATIN SMALL LETTER S WITH DOT ABOVE
- * Irish Gaelic (old orthography)
- : 0073 0307
-1E62 LATIN CAPITAL LETTER S WITH DOT BELOW
- : 0053 0323
-1E63 LATIN SMALL LETTER S WITH DOT BELOW
- * Indic transliteration
- : 0073 0323
-1E64 LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
- : 015A 0307
-1E65 LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
- : 015B 0307
-1E66 LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
- : 0160 0307
-1E67 LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
- : 0161 0307
-1E68 LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
- : 1E62 0307
-1E69 LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
- : 1E63 0307
-1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE
- : 0054 0307
-1E6B LATIN SMALL LETTER T WITH DOT ABOVE
- * Irish Gaelic (old orthography)
- : 0074 0307
-1E6C LATIN CAPITAL LETTER T WITH DOT BELOW
- : 0054 0323
-1E6D LATIN SMALL LETTER T WITH DOT BELOW
- * Indic transliteration
- : 0074 0323
-1E6E LATIN CAPITAL LETTER T WITH LINE BELOW
- : 0054 0331
-1E6F LATIN SMALL LETTER T WITH LINE BELOW
- * Semitic transliteration
- : 0074 0331
-1E70 LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
- : 0054 032D
-1E71 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
- : 0074 032D
-1E72 LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
- : 0055 0324
-1E73 LATIN SMALL LETTER U WITH DIAERESIS BELOW
- : 0075 0324
-1E74 LATIN CAPITAL LETTER U WITH TILDE BELOW
- : 0055 0330
-1E75 LATIN SMALL LETTER U WITH TILDE BELOW
- : 0075 0330
-1E76 LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
- : 0055 032D
-1E77 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
- : 0075 032D
-1E78 LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
- : 0168 0301
-1E79 LATIN SMALL LETTER U WITH TILDE AND ACUTE
- : 0169 0301
-1E7A LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
- : 016A 0308
-1E7B LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
- : 016B 0308
-1E7C LATIN CAPITAL LETTER V WITH TILDE
- : 0056 0303
-1E7D LATIN SMALL LETTER V WITH TILDE
- : 0076 0303
-1E7E LATIN CAPITAL LETTER V WITH DOT BELOW
- : 0056 0323
-1E7F LATIN SMALL LETTER V WITH DOT BELOW
- : 0076 0323
-1E80 LATIN CAPITAL LETTER W WITH GRAVE
- : 0057 0300
-1E81 LATIN SMALL LETTER W WITH GRAVE
- * Welsh
- : 0077 0300
-1E82 LATIN CAPITAL LETTER W WITH ACUTE
- : 0057 0301
-1E83 LATIN SMALL LETTER W WITH ACUTE
- * Welsh
- : 0077 0301
-1E84 LATIN CAPITAL LETTER W WITH DIAERESIS
- : 0057 0308
-1E85 LATIN SMALL LETTER W WITH DIAERESIS
- * Welsh
- : 0077 0308
-1E86 LATIN CAPITAL LETTER W WITH DOT ABOVE
- : 0057 0307
-1E87 LATIN SMALL LETTER W WITH DOT ABOVE
- : 0077 0307
-1E88 LATIN CAPITAL LETTER W WITH DOT BELOW
- : 0057 0323
-1E89 LATIN SMALL LETTER W WITH DOT BELOW
- : 0077 0323
-1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE
- : 0058 0307
-1E8B LATIN SMALL LETTER X WITH DOT ABOVE
- : 0078 0307
-1E8C LATIN CAPITAL LETTER X WITH DIAERESIS
- : 0058 0308
-1E8D LATIN SMALL LETTER X WITH DIAERESIS
- : 0078 0308
-1E8E LATIN CAPITAL LETTER Y WITH DOT ABOVE
- : 0059 0307
-1E8F LATIN SMALL LETTER Y WITH DOT ABOVE
- : 0079 0307
-1E90 LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
- : 005A 0302
-1E91 LATIN SMALL LETTER Z WITH CIRCUMFLEX
- : 007A 0302
-1E92 LATIN CAPITAL LETTER Z WITH DOT BELOW
- : 005A 0323
-1E93 LATIN SMALL LETTER Z WITH DOT BELOW
- * Indic transliteration
- : 007A 0323
-1E94 LATIN CAPITAL LETTER Z WITH LINE BELOW
- : 005A 0331
-1E95 LATIN SMALL LETTER Z WITH LINE BELOW
- * Semitic transliteration
- : 007A 0331
-1E96 LATIN SMALL LETTER H WITH LINE BELOW
- * Semitic transliteration
- : 0068 0331
-1E97 LATIN SMALL LETTER T WITH DIAERESIS
- : 0074 0308
-1E98 LATIN SMALL LETTER W WITH RING ABOVE
- : 0077 030A
-1E99 LATIN SMALL LETTER Y WITH RING ABOVE
- : 0079 030A
-1E9A LATIN SMALL LETTER A WITH RIGHT HALF RING
- # 0061 02BE
-1E9B LATIN SMALL LETTER LONG S WITH DOT ABOVE
- * in current use in Gaelic types (as glyph variant of 1E61)
- : 017F 0307
-@ Latin extensions for Vietnamese
-1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW
- : 0041 0323
-1EA1 LATIN SMALL LETTER A WITH DOT BELOW
- : 0061 0323
-1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE
- : 0041 0309
-1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE
- : 0061 0309
-1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
- : 00C2 0301
-1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
- : 00E2 0301
-1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
- : 00C2 0300
-1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
- : 00E2 0300
-1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
- : 00C2 0309
-1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
- : 00E2 0309
-1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
- : 00C2 0303
-1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
- : 00E2 0303
-1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
- : 1EA0 0302
-1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
- : 1EA1 0302
-1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
- : 0102 0301
-1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE
- : 0103 0301
-1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
- : 0102 0300
-1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE
- : 0103 0300
-1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
- : 0102 0309
-1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
- : 0103 0309
-1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE
- : 0102 0303
-1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE
- : 0103 0303
-1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
- : 1EA0 0306
-1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
- : 1EA1 0306
-1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW
- : 0045 0323
-1EB9 LATIN SMALL LETTER E WITH DOT BELOW
- : 0065 0323
-1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE
- : 0045 0309
-1EBB LATIN SMALL LETTER E WITH HOOK ABOVE
- : 0065 0309
-1EBC LATIN CAPITAL LETTER E WITH TILDE
- : 0045 0303
-1EBD LATIN SMALL LETTER E WITH TILDE
- : 0065 0303
-1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
- : 00CA 0301
-1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
- : 00EA 0301
-1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
- : 00CA 0300
-1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
- : 00EA 0300
-1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
- : 00CA 0309
-1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
- : 00EA 0309
-1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
- : 00CA 0303
-1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
- : 00EA 0303
-1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
- : 1EB8 0302
-1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
- : 1EB9 0302
-1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE
- : 0049 0309
-1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE
- : 0069 0309
-1ECA LATIN CAPITAL LETTER I WITH DOT BELOW
- : 0049 0323
-1ECB LATIN SMALL LETTER I WITH DOT BELOW
- : 0069 0323
-1ECC LATIN CAPITAL LETTER O WITH DOT BELOW
- : 004F 0323
-1ECD LATIN SMALL LETTER O WITH DOT BELOW
- : 006F 0323
-1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE
- : 004F 0309
-1ECF LATIN SMALL LETTER O WITH HOOK ABOVE
- : 006F 0309
-1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
- : 00D4 0301
-1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
- : 00F4 0301
-1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
- : 00D4 0300
-1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
- : 00F4 0300
-1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
- : 00D4 0309
-1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
- : 00F4 0309
-1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
- : 00D4 0303
-1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
- : 00F4 0303
-1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
- : 1ECC 0302
-1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
- : 1ECD 0302
-1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE
- : 01A0 0301
-1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE
- : 01A1 0301
-1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE
- : 01A0 0300
-1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE
- : 01A1 0300
-1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
- : 01A0 0309
-1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
- : 01A1 0309
-1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE
- : 01A0 0303
-1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE
- : 01A1 0303
-1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
- : 01A0 0323
-1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW
- : 01A1 0323
-1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW
- : 0055 0323
-1EE5 LATIN SMALL LETTER U WITH DOT BELOW
- : 0075 0323
-1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE
- : 0055 0309
-1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE
- : 0075 0309
-1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE
- : 01AF 0301
-1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE
- : 01B0 0301
-1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE
- : 01AF 0300
-1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE
- : 01B0 0300
-1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
- : 01AF 0309
-1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
- : 01B0 0309
-1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE
- : 01AF 0303
-1EEF LATIN SMALL LETTER U WITH HORN AND TILDE
- : 01B0 0303
-1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
- : 01AF 0323
-1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW
- : 01B0 0323
-1EF2 LATIN CAPITAL LETTER Y WITH GRAVE
- : 0059 0300
-1EF3 LATIN SMALL LETTER Y WITH GRAVE
- * Welsh
- : 0079 0300
-1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW
- : 0059 0323
-1EF5 LATIN SMALL LETTER Y WITH DOT BELOW
- : 0079 0323
-1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE
- : 0059 0309
-1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE
- : 0079 0309
-1EF8 LATIN CAPITAL LETTER Y WITH TILDE
- : 0059 0303
-1EF9 LATIN SMALL LETTER Y WITH TILDE
- : 0079 0303
-@@ 1F00 Greek Extended 1FFF
-@ Precomposed polytonic Greek
-1F00 GREEK SMALL LETTER ALPHA WITH PSILI
- : 03B1 0313
-1F01 GREEK SMALL LETTER ALPHA WITH DASIA
- : 03B1 0314
-1F02 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
- : 1F00 0300
-1F03 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
- : 1F01 0300
-1F04 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
- : 1F00 0301
-1F05 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
- : 1F01 0301
-1F06 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
- : 1F00 0342
-1F07 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
- : 1F01 0342
-1F08 GREEK CAPITAL LETTER ALPHA WITH PSILI
- : 0391 0313
-1F09 GREEK CAPITAL LETTER ALPHA WITH DASIA
- : 0391 0314
-1F0A GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
- : 1F08 0300
-1F0B GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
- : 1F09 0300
-1F0C GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
- : 1F08 0301
-1F0D GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
- : 1F09 0301
-1F0E GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
- : 1F08 0342
-1F0F GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
- : 1F09 0342
-1F10 GREEK SMALL LETTER EPSILON WITH PSILI
- : 03B5 0313
-1F11 GREEK SMALL LETTER EPSILON WITH DASIA
- : 03B5 0314
-1F12 GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
- : 1F10 0300
-1F13 GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
- : 1F11 0300
-1F14 GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
- : 1F10 0301
-1F15 GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
- : 1F11 0301
-1F18 GREEK CAPITAL LETTER EPSILON WITH PSILI
- : 0395 0313
-1F19 GREEK CAPITAL LETTER EPSILON WITH DASIA
- : 0395 0314
-1F1A GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
- : 1F18 0300
-1F1B GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
- : 1F19 0300
-1F1C GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
- : 1F18 0301
-1F1D GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
- : 1F19 0301
-1F20 GREEK SMALL LETTER ETA WITH PSILI
- : 03B7 0313
-1F21 GREEK SMALL LETTER ETA WITH DASIA
- : 03B7 0314
-1F22 GREEK SMALL LETTER ETA WITH PSILI AND VARIA
- : 1F20 0300
-1F23 GREEK SMALL LETTER ETA WITH DASIA AND VARIA
- : 1F21 0300
-1F24 GREEK SMALL LETTER ETA WITH PSILI AND OXIA
- : 1F20 0301
-1F25 GREEK SMALL LETTER ETA WITH DASIA AND OXIA
- : 1F21 0301
-1F26 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
- : 1F20 0342
-1F27 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
- : 1F21 0342
-1F28 GREEK CAPITAL LETTER ETA WITH PSILI
- : 0397 0313
-1F29 GREEK CAPITAL LETTER ETA WITH DASIA
- : 0397 0314
-1F2A GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
- : 1F28 0300
-1F2B GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
- : 1F29 0300
-1F2C GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
- : 1F28 0301
-1F2D GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
- : 1F29 0301
-1F2E GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
- : 1F28 0342
-1F2F GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
- : 1F29 0342
-1F30 GREEK SMALL LETTER IOTA WITH PSILI
- : 03B9 0313
-1F31 GREEK SMALL LETTER IOTA WITH DASIA
- : 03B9 0314
-1F32 GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
- : 1F30 0300
-1F33 GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
- : 1F31 0300
-1F34 GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
- : 1F30 0301
-1F35 GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
- : 1F31 0301
-1F36 GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
- : 1F30 0342
-1F37 GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
- : 1F31 0342
-1F38 GREEK CAPITAL LETTER IOTA WITH PSILI
- : 0399 0313
-1F39 GREEK CAPITAL LETTER IOTA WITH DASIA
- : 0399 0314
-1F3A GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
- : 1F38 0300
-1F3B GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
- : 1F39 0300
-1F3C GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
- : 1F38 0301
-1F3D GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
- : 1F39 0301
-1F3E GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
- : 1F38 0342
-1F3F GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
- : 1F39 0342
-1F40 GREEK SMALL LETTER OMICRON WITH PSILI
- : 03BF 0313
-1F41 GREEK SMALL LETTER OMICRON WITH DASIA
- : 03BF 0314
-1F42 GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
- : 1F40 0300
-1F43 GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
- : 1F41 0300
-1F44 GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
- : 1F40 0301
-1F45 GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
- : 1F41 0301
-1F48 GREEK CAPITAL LETTER OMICRON WITH PSILI
- : 039F 0313
-1F49 GREEK CAPITAL LETTER OMICRON WITH DASIA
- : 039F 0314
-1F4A GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
- : 1F48 0300
-1F4B GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
- : 1F49 0300
-1F4C GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
- : 1F48 0301
-1F4D GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
- : 1F49 0301
-1F50 GREEK SMALL LETTER UPSILON WITH PSILI
- : 03C5 0313
-1F51 GREEK SMALL LETTER UPSILON WITH DASIA
- : 03C5 0314
-1F52 GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
- : 1F50 0300
-1F53 GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
- : 1F51 0300
-1F54 GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
- : 1F50 0301
-1F55 GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
- : 1F51 0301
-1F56 GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
- : 1F50 0342
-1F57 GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
- : 1F51 0342
-1F59 GREEK CAPITAL LETTER UPSILON WITH DASIA
- : 03A5 0314
-1F5B GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
- : 1F59 0300
-1F5D GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
- : 1F59 0301
-1F5F GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
- : 1F59 0342
-1F60 GREEK SMALL LETTER OMEGA WITH PSILI
- : 03C9 0313
-1F61 GREEK SMALL LETTER OMEGA WITH DASIA
- : 03C9 0314
-1F62 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
- : 1F60 0300
-1F63 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
- : 1F61 0300
-1F64 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
- : 1F60 0301
-1F65 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
- : 1F61 0301
-1F66 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
- : 1F60 0342
-1F67 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
- : 1F61 0342
-1F68 GREEK CAPITAL LETTER OMEGA WITH PSILI
- : 03A9 0313
-1F69 GREEK CAPITAL LETTER OMEGA WITH DASIA
- : 03A9 0314
-1F6A GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
- : 1F68 0300
-1F6B GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
- : 1F69 0300
-1F6C GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
- : 1F68 0301
-1F6D GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
- : 1F69 0301
-1F6E GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
- : 1F68 0342
-1F6F GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
- : 1F69 0342
-1F70 GREEK SMALL LETTER ALPHA WITH VARIA
- : 03B1 0300
-1F71 GREEK SMALL LETTER ALPHA WITH OXIA
- : 03AC greek small letter alpha with tonos
-1F72 GREEK SMALL LETTER EPSILON WITH VARIA
- : 03B5 0300
-1F73 GREEK SMALL LETTER EPSILON WITH OXIA
- : 03AD greek small letter epsilon with tonos
-1F74 GREEK SMALL LETTER ETA WITH VARIA
- : 03B7 0300
-1F75 GREEK SMALL LETTER ETA WITH OXIA
- : 03AE greek small letter eta with tonos
-1F76 GREEK SMALL LETTER IOTA WITH VARIA
- : 03B9 0300
-1F77 GREEK SMALL LETTER IOTA WITH OXIA
- : 03AF greek small letter iota with tonos
-1F78 GREEK SMALL LETTER OMICRON WITH VARIA
- : 03BF 0300
-1F79 GREEK SMALL LETTER OMICRON WITH OXIA
- : 03CC greek small letter omicron with tonos
-1F7A GREEK SMALL LETTER UPSILON WITH VARIA
- : 03C5 0300
-1F7B GREEK SMALL LETTER UPSILON WITH OXIA
- : 03CD greek small letter upsilon with tonos
-1F7C GREEK SMALL LETTER OMEGA WITH VARIA
- : 03C9 0300
-1F7D GREEK SMALL LETTER OMEGA WITH OXIA
- : 03CE greek small letter omega with tonos
-1F80 GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
- : 1F00 0345
-1F81 GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
- : 1F01 0345
-1F82 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
- : 1F02 0345
-1F83 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
- : 1F03 0345
-1F84 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
- : 1F04 0345
-1F85 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
- : 1F05 0345
-1F86 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
- : 1F06 0345
-1F87 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
- : 1F07 0345
-1F88 GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
- : 1F08 0345
-1F89 GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
- : 1F09 0345
-1F8A GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- : 1F0A 0345
-1F8B GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- : 1F0B 0345
-1F8C GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- : 1F0C 0345
-1F8D GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- : 1F0D 0345
-1F8E GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- : 1F0E 0345
-1F8F GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- : 1F0F 0345
-1F90 GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
- : 1F20 0345
-1F91 GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
- : 1F21 0345
-1F92 GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
- : 1F22 0345
-1F93 GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
- : 1F23 0345
-1F94 GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
- : 1F24 0345
-1F95 GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
- : 1F25 0345
-1F96 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
- : 1F26 0345
-1F97 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
- : 1F27 0345
-1F98 GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
- : 1F28 0345
-1F99 GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
- : 1F29 0345
-1F9A GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- : 1F2A 0345
-1F9B GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- : 1F2B 0345
-1F9C GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- : 1F2C 0345
-1F9D GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- : 1F2D 0345
-1F9E GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- : 1F2E 0345
-1F9F GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- : 1F2F 0345
-1FA0 GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
- : 1F60 0345
-1FA1 GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
- : 1F61 0345
-1FA2 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
- : 1F62 0345
-1FA3 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
- : 1F63 0345
-1FA4 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
- : 1F64 0345
-1FA5 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
- : 1F65 0345
-1FA6 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
- : 1F66 0345
-1FA7 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
- : 1F67 0345
-1FA8 GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
- : 1F68 0345
-1FA9 GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
- : 1F69 0345
-1FAA GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- : 1F6A 0345
-1FAB GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- : 1F6B 0345
-1FAC GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- : 1F6C 0345
-1FAD GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- : 1F6D 0345
-1FAE GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- : 1F6E 0345
-1FAF GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- : 1F6F 0345
-1FB0 GREEK SMALL LETTER ALPHA WITH VRACHY
- : 03B1 0306
-1FB1 GREEK SMALL LETTER ALPHA WITH MACRON
- : 03B1 0304
-1FB2 GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
- : 1F70 0345
-1FB3 GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
- : 03B1 0345
-1FB4 GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
- : 03AC 0345
-1FB6 GREEK SMALL LETTER ALPHA WITH PERISPOMENI
- : 03B1 0342
-1FB7 GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
- : 1FB6 0345
-1FB8 GREEK CAPITAL LETTER ALPHA WITH VRACHY
- : 0391 0306
-1FB9 GREEK CAPITAL LETTER ALPHA WITH MACRON
- : 0391 0304
-1FBA GREEK CAPITAL LETTER ALPHA WITH VARIA
- : 0391 0300
-1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
- : 0386 greek capital letter alpha with tonos
-1FBC GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
- : 0391 0345
-1FBD GREEK KORONIS
- # 0020 0313
-1FBE GREEK PROSGEGRAMMENI
- : 03B9 greek small letter iota
-1FBF GREEK PSILI
- # 0020 0313
-1FC0 GREEK PERISPOMENI
- # 0020 0342
-1FC1 GREEK DIALYTIKA AND PERISPOMENI
- : 00A8 0342
-1FC2 GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
- : 1F74 0345
-1FC3 GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
- : 03B7 0345
-1FC4 GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
- : 03AE 0345
-1FC6 GREEK SMALL LETTER ETA WITH PERISPOMENI
- : 03B7 0342
-1FC7 GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
- : 1FC6 0345
-1FC8 GREEK CAPITAL LETTER EPSILON WITH VARIA
- : 0395 0300
-1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
- : 0388 greek capital letter epsilon with tonos
-1FCA GREEK CAPITAL LETTER ETA WITH VARIA
- : 0397 0300
-1FCB GREEK CAPITAL LETTER ETA WITH OXIA
- : 0389 greek capital letter eta with tonos
-1FCC GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
- : 0397 0345
-1FCD GREEK PSILI AND VARIA
- : 1FBF 0300
-1FCE GREEK PSILI AND OXIA
- : 1FBF 0301
-1FCF GREEK PSILI AND PERISPOMENI
- : 1FBF 0342
-1FD0 GREEK SMALL LETTER IOTA WITH VRACHY
- : 03B9 0306
-1FD1 GREEK SMALL LETTER IOTA WITH MACRON
- : 03B9 0304
-1FD2 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
- : 03CA 0300
-1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
- : 0390 greek small letter iota with dialytika and tonos
-1FD6 GREEK SMALL LETTER IOTA WITH PERISPOMENI
- : 03B9 0342
-1FD7 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
- : 03CA 0342
-1FD8 GREEK CAPITAL LETTER IOTA WITH VRACHY
- : 0399 0306
-1FD9 GREEK CAPITAL LETTER IOTA WITH MACRON
- : 0399 0304
-1FDA GREEK CAPITAL LETTER IOTA WITH VARIA
- : 0399 0300
-1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
- : 038A greek capital letter iota with tonos
-1FDD GREEK DASIA AND VARIA
- : 1FFE 0300
-1FDE GREEK DASIA AND OXIA
- : 1FFE 0301
-1FDF GREEK DASIA AND PERISPOMENI
- : 1FFE 0342
-1FE0 GREEK SMALL LETTER UPSILON WITH VRACHY
- : 03C5 0306
-1FE1 GREEK SMALL LETTER UPSILON WITH MACRON
- : 03C5 0304
-1FE2 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
- : 03CB 0300
-1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
- : 03B0 greek small letter upsilon with dialytika and tonos
-1FE4 GREEK SMALL LETTER RHO WITH PSILI
- : 03C1 0313
-1FE5 GREEK SMALL LETTER RHO WITH DASIA
- : 03C1 0314
-1FE6 GREEK SMALL LETTER UPSILON WITH PERISPOMENI
- : 03C5 0342
-1FE7 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
- : 03CB 0342
-1FE8 GREEK CAPITAL LETTER UPSILON WITH VRACHY
- : 03A5 0306
-1FE9 GREEK CAPITAL LETTER UPSILON WITH MACRON
- : 03A5 0304
-1FEA GREEK CAPITAL LETTER UPSILON WITH VARIA
- : 03A5 0300
-1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
- : 038E greek capital letter upsilon with tonos
-1FEC GREEK CAPITAL LETTER RHO WITH DASIA
- : 03A1 0314
-1FED GREEK DIALYTIKA AND VARIA
- : 00A8 0300
-1FEE GREEK DIALYTIKA AND OXIA
- : 0385 greek dialytika tonos
-1FEF GREEK VARIA
- : 0060 grave accent
-1FF2 GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
- : 1F7C 0345
-1FF3 GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
- : 03C9 0345
-1FF4 GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
- : 03CE 0345
-1FF6 GREEK SMALL LETTER OMEGA WITH PERISPOMENI
- : 03C9 0342
-1FF7 GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
- : 1FF6 0345
-1FF8 GREEK CAPITAL LETTER OMICRON WITH VARIA
- : 039F 0300
-1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
- : 038C greek capital letter omicron with tonos
-1FFA GREEK CAPITAL LETTER OMEGA WITH VARIA
- : 03A9 0300
-1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
- : 038F greek capital letter omega with tonos
-1FFC GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
- : 03A9 0345
-1FFD GREEK OXIA
- : 00B4 acute accent
-1FFE GREEK DASIA
- # 0020 0314
-@@ 2000 General Punctuation 206F
-@ Spaces
-2000 EN QUAD
- : 2002 en space
-2001 EM QUAD
- = mutton quad
- : 2003 em space
-2002 EN SPACE
- = nut
- * half an em
- # 0020 space
-2003 EM SPACE
- = mutton
- * nominally, a space equal to the type size in points
- * may scale by the condensation factor of a font
- # 0020 space
-2004 THREE-PER-EM SPACE
- = thick space
- # 0020 space
-2005 FOUR-PER-EM SPACE
- = mid space
- # 0020 space
-2006 SIX-PER-EM SPACE
- * in computer typography sometimes equated to thin space
- # 0020 space
-2007 FIGURE SPACE
- * space equal to tabular width of a font
- * this is equivalent to the digit width of fonts with fixed-width digits
- # <noBreak> 0020
-2008 PUNCTUATION SPACE
- * space equal to narrow punctuation of a font
- # 0020 space
-2009 THIN SPACE
- * a fifth of an em (or sometimes a sixth)
- # 0020 space
-200A HAIR SPACE
- * thinner than a thin space
- * in traditional typography, the thinnest space available
- # 0020 space
-200B ZERO WIDTH SPACE
- * nominally zero width, but may expand in justification
-@ Formatting characters
-200C ZERO WIDTH NON-JOINER
- = ZWNJ
-200D ZERO WIDTH JOINER
- = ZWJ
-200E LEFT-TO-RIGHT MARK
- = LRM
-200F RIGHT-TO-LEFT MARK
- = RLM
-@ Dashes
-2010 HYPHEN
- x (hyphen-minus - 002D)
-2011 NON-BREAKING HYPHEN
- x (hyphen-minus - 002D)
- # <noBreak> 2010
-2012 FIGURE DASH
-2013 EN DASH
-2014 EM DASH
- * may be used in pairs to offset parenthetical text
- x (katakana-hiragana prolonged sound mark - 30FC)
-2015 HORIZONTAL BAR
- = QUOTATION DASH
- * long dash introducing quoted text
-@ General punctuation
-2016 DOUBLE VERTICAL LINE
- * used in pairs to indicate norm of a matrix
- x (parallel to - 2225)
-2017 DOUBLE LOW LINE
- * this is a spacing character
- x (low line - 005F)
- x (combining double low line - 0333)
- # 0020 0333
-2018 LEFT SINGLE QUOTATION MARK
- = SINGLE TURNED COMMA QUOTATION MARK
- * this is the preferred glyph (as opposed to 201B)
- x (apostrophe - 0027)
- x (modifier letter turned comma - 02BB)
- x (heavy single turned comma quotation mark ornament - 275B)
-2019 RIGHT SINGLE QUOTATION MARK
- = SINGLE COMMA QUOTATION MARK
- * this is the preferred character to use for apostrophe
- x (apostrophe - 0027)
- x (modifier letter apostrophe - 02BC)
- x (heavy single comma quotation mark ornament - 275C)
-201A SINGLE LOW-9 QUOTATION MARK
- = LOW SINGLE COMMA QUOTATION MARK
- * used as opening single quotation mark in some languages
-201B SINGLE HIGH-REVERSED-9 QUOTATION MARK
- = SINGLE REVERSED COMMA QUOTATION MARK
- * glyph variant of 2018
- x (modifier letter reversed comma - 02BD)
-201C LEFT DOUBLE QUOTATION MARK
- = DOUBLE TURNED COMMA QUOTATION MARK
- * this is the preferred glyph (as opposed to 201F)
- x (quotation mark - 0022)
- x (heavy double turned comma quotation mark ornament - 275D)
- x (reversed double prime quotation mark - 301D)
-201D RIGHT DOUBLE QUOTATION MARK
- = DOUBLE COMMA QUOTATION MARK
- x (quotation mark - 0022)
- x (double prime - 2033)
- x (heavy double comma quotation mark ornament - 275E)
- x (double prime quotation mark - 301E)
-201E DOUBLE LOW-9 QUOTATION MARK
- = LOW DOUBLE COMMA QUOTATION MARK
- * used as opening double quotation mark in some languages
- x (low double prime quotation mark - 301F)
-201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
- = DOUBLE REVERSED COMMA QUOTATION MARK
- * glyph variant of 201C
-2020 DAGGER
- = obelisk, obelus, long cross
-2021 DOUBLE DAGGER
- = diesis, double obelisk
-2022 BULLET
- = black small circle
- x (middle dot - 00B7)
- x (one dot leader - 2024)
- x (bullet operator - 2219)
- x (inverse bullet - 25D8)
- x (white bullet - 25E6)
-2023 TRIANGULAR BULLET
- x (end of proof - 220E)
- x (black right-pointing small triangle - 25B8)
-2024 ONE DOT LEADER
- x (middle dot - 00B7)
- x (bullet - 2022)
- x (bullet operator - 2219)
- # 002E full stop
-2025 TWO DOT LEADER
- # 002E 002E
-2026 HORIZONTAL ELLIPSIS
- = three dot leader
- x (vertical ellipsis - 22EE)
- # 002E 002E 002E
-2027 HYPHENATION POINT
-@ Formatting characters
-2028 LINE SEPARATOR
- * may be used to represent this semantic unambiguously
-2029 PARAGRAPH SEPARATOR
- * may be used to represent this semantic unambiguously
-202A LEFT-TO-RIGHT EMBEDDING
- = LRE
-202B RIGHT-TO-LEFT EMBEDDING
- = RLE
-202C POP DIRECTIONAL FORMATTING
- = PDF
-202D LEFT-TO-RIGHT OVERRIDE
- = LRO
-202E RIGHT-TO-LEFT OVERRIDE
- = RLO
-202F NARROW NO-BREAK SPACE
- x (no-break space - 00A0)
- # <noBreak> 0020
-@ General punctuation
-2030 PER MILLE SIGN
- x (percent sign - 0025)
-2031 PER TEN THOUSAND SIGN
- x (percent sign - 0025)
-2032 PRIME
- = minutes, feet
- x (apostrophe - 0027)
- x (acute accent - 00B4)
- x (modifier letter prime - 02B9)
-2033 DOUBLE PRIME
- = seconds, inches
- x (quotation mark - 0022)
- x (modifier letter double prime - 02BA)
- x (right double quotation mark - 201D)
- x (ditto mark - 3003)
- x (double prime quotation mark - 301E)
- # 2032 2032
-2034 TRIPLE PRIME
- # 2032 2032 2032
-2035 REVERSED PRIME
- x (grave accent - 0060)
-2036 REVERSED DOUBLE PRIME
- x (reversed double prime quotation mark - 301D)
- # 2035 2035
-2037 REVERSED TRIPLE PRIME
- # 2035 2035 2035
-2038 CARET
- x (up arrowhead - 2303)
-2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- = LEFT POINTING SINGLE GUILLEMET
- * usually opening, sometimes closing
- x (less-than sign - 003C)
- x (left-pointing angle bracket - 2329)
- x (left angle bracket - 3008)
-203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- = RIGHT POINTING SINGLE GUILLEMET
- * usually closing, sometimes opening
- x (greater-than sign - 003E)
- x (right-pointing angle bracket - 232A)
- x (right angle bracket - 3009)
-203B REFERENCE MARK
- = Japanese kome
- = Urdu paragraph separator
- x (tibetan ku ru kha bzhi mig can - 0FBF)
-203C DOUBLE EXCLAMATION MARK
- x (exclamation mark - 0021)
- # 0021 0021
-203D INTERROBANG
- x (exclamation mark - 0021)
- x (question mark - 003F)
-203E OVERLINE
- = SPACING OVERSCORE
- # 0020 0305
-203F UNDERTIE (Enotikon)
- = Greek enotikon
- x (smile - 2323)
-2040 CHARACTER TIE
- x (frown - 2322)
-2041 CARET INSERTION POINT
- * proofreader's mark: insert here
- x (right semidirect product - 22CC)
-2042 ASTERISM
-2043 HYPHEN BULLET
-2044 FRACTION SLASH
- = solidus (in typography)
- * for composing arbitrary fractions
- x (solidus - 002F)
- x (division slash - 2215)
-2045 LEFT SQUARE BRACKET WITH QUILL
-2046 RIGHT SQUARE BRACKET WITH QUILL
-2048 QUESTION EXCLAMATION MARK
- * designed for use in vertical text
- # 003F 0021
-2049 EXCLAMATION QUESTION MARK
- * designed for use in vertical text
- # 0021 003F
-204A TIRONIAN SIGN ET
- * Irish Gaelic, ...
-204B REVERSED PILCROW SIGN
- x (pilcrow sign - 00B6)
-204C BLACK LEFTWARDS BULLET
-204D BLACK RIGHTWARDS BULLET
-@ Deprecated
-206A INHIBIT SYMMETRIC SWAPPING
-206B ACTIVATE SYMMETRIC SWAPPING
-206C INHIBIT ARABIC FORM SHAPING
-206D ACTIVATE ARABIC FORM SHAPING
-206E NATIONAL DIGIT SHAPES
-206F NOMINAL DIGIT SHAPES
-@@ 2070 Superscripts and Subscripts 209F
-@ Superscripts
-2070 SUPERSCRIPT ZERO
- # <super> 0030
-2071 <reserved>
- x (superscript one - 00B9)
-2072 <reserved>
- x (superscript two - 00B2)
-2073 <reserved>
- x (superscript three - 00B3)
-2074 SUPERSCRIPT FOUR
- # <super> 0034
-2075 SUPERSCRIPT FIVE
- # <super> 0035
-2076 SUPERSCRIPT SIX
- # <super> 0036
-2077 SUPERSCRIPT SEVEN
- # <super> 0037
-2078 SUPERSCRIPT EIGHT
- # <super> 0038
-2079 SUPERSCRIPT NINE
- # <super> 0039
-207A SUPERSCRIPT PLUS SIGN
- # <super> 002B
-207B SUPERSCRIPT MINUS
- # <super> 2212
-207C SUPERSCRIPT EQUALS SIGN
- # <super> 003D
-207D SUPERSCRIPT LEFT PARENTHESIS
- # <super> 0028
-207E SUPERSCRIPT RIGHT PARENTHESIS
- # <super> 0029
-207F SUPERSCRIPT LATIN SMALL LETTER N
- # <super> 006E
-@ Subscripts
-2080 SUBSCRIPT ZERO
- # <sub> 0030
-2081 SUBSCRIPT ONE
- # <sub> 0031
-2082 SUBSCRIPT TWO
- # <sub> 0032
-2083 SUBSCRIPT THREE
- # <sub> 0033
-2084 SUBSCRIPT FOUR
- # <sub> 0034
-2085 SUBSCRIPT FIVE
- # <sub> 0035
-2086 SUBSCRIPT SIX
- # <sub> 0036
-2087 SUBSCRIPT SEVEN
- # <sub> 0037
-2088 SUBSCRIPT EIGHT
- # <sub> 0038
-2089 SUBSCRIPT NINE
- # <sub> 0039
-208A SUBSCRIPT PLUS SIGN
- # <sub> 002B
-208B SUBSCRIPT MINUS
- # <sub> 2212
-208C SUBSCRIPT EQUALS SIGN
- # <sub> 003D
-208D SUBSCRIPT LEFT PARENTHESIS
- # <sub> 0028
-208E SUBSCRIPT RIGHT PARENTHESIS
- # <sub> 0029
-@@ 20A0 Currency Symbols 20CF
-@ Currency symbols
-@+ A number of currency symbols are found in other blocks.
- x (dollar sign - 0024)
- x (cent sign - 00A2)
- x (pound sign - 00A3)
- x (currency sign - 00A4)
- x (yen sign - 00A5)
- x (bengali rupee mark - 09F2)
- x (bengali rupee sign - 09F3)
- x (thai currency symbol baht - 0E3F)
- x (khmer currency symbol riel - 17DB)
-20A0 EURO-CURRENCY SIGN
- * intended for ECU, but not widely used
- * historical character, this is NOT the euro!
- x (euro sign - 20AC)
-20A1 COLON SIGN
- * Costa Rica, El Salvador
-20A2 CRUZEIRO SIGN
- * Brazil
-20A3 FRENCH FRANC SIGN
- * France
-20A4 LIRA SIGN
- * Italy, Turkey
- x (pound sign - 00A3)
-20A5 MILL SIGN
- * USA (1/10 cent)
-20A6 NAIRA SIGN
- * Nigeria
-20A7 PESETA SIGN
- * Spain
-20A8 RUPEE SIGN
- * India
- # 0052 0073
-20A9 WON SIGN
- * Korea
-20AA NEW SHEQEL SIGN
- * Israel
-20AB DONG SIGN
- * Vietnam
-20AC EURO SIGN
- * currency sign for the European Monetary Union
- * euro, not ECU
- x (euro-currency sign - 20A0)
-20AD KIP SIGN
- * Laos
-20AE TUGRIK SIGN
- * Mongolia
- * also transliterated as tugrug, tugric, tugrog, togrog
-20AF DRACHMA SIGN
- * Greece
-@@ 20D0 Combining Diacritical Marks for Symbols 20FF
-@ Combining diacritical marks for symbols
-20D0 COMBINING LEFT HARPOON ABOVE
-20D1 COMBINING RIGHT HARPOON ABOVE
- * vector
-20D2 COMBINING LONG VERTICAL LINE OVERLAY
-20D3 COMBINING SHORT VERTICAL LINE OVERLAY
- * negation
-20D4 COMBINING ANTICLOCKWISE ARROW ABOVE
-20D5 COMBINING CLOCKWISE ARROW ABOVE
- * rotation
-20D6 COMBINING LEFT ARROW ABOVE
-20D7 COMBINING RIGHT ARROW ABOVE
- * vector
-20D8 COMBINING RING OVERLAY
-20D9 COMBINING CLOCKWISE RING OVERLAY
-20DA COMBINING ANTICLOCKWISE RING OVERLAY
-20DB COMBINING THREE DOTS ABOVE
- = third derivative
-20DC COMBINING FOUR DOTS ABOVE
- = fourth derivative
-@ Enclosing diacritics
-20DD COMBINING ENCLOSING CIRCLE
- = JIS composition circle
- x (white circle - 25CB)
- x (large circle - 25EF)
- x (ideographic number zero - 3007)
-20DE COMBINING ENCLOSING SQUARE
- x (white square - 25A1)
-20DF COMBINING ENCLOSING DIAMOND
- x (white diamond - 25C7)
-20E0 COMBINING ENCLOSING CIRCLE BACKSLASH
- * prohibition
-@ Additional diacritical mark for symbols
-20E1 COMBINING LEFT RIGHT ARROW ABOVE
- * tensor
-@ Additional enclosing diacritics
-20E2 COMBINING ENCLOSING SCREEN
- x (clear screen symbol - 239A)
-20E3 COMBINING ENCLOSING KEYCAP
-@@ 2100 Letterlike Symbols 214F
-@ Letterlike symbols
-2100 ACCOUNT OF
- # 0061 002F 0063
-2101 ADDRESSED TO THE SUBJECT
- # 0061 002F 0073
-2102 DOUBLE-STRUCK CAPITAL C
- = the set of complex numbers
- # <font> 0043 latin capital letter c
-2103 DEGREE CELSIUS
- = degrees Centigrade
- # 00B0 0043
-2104 CENTRE LINE SYMBOL
- = clone
-2105 CARE OF
- # 0063 002F 006F
-2106 CADA UNA
- # 0063 002F 0075
-2107 EULER CONSTANT
- x (latin capital letter e - 0045)
- # 0190 latin capital letter open e
-2108 SCRUPLE
-2109 DEGREE FAHRENHEIT
- # 00B0 0046
-210A SCRIPT SMALL G
- = real number symbol
- # <font> 0067 latin small letter g
-210B SCRIPT CAPITAL H
- = Hamiltonian function
- # <font> 0048 latin capital letter h
-210C BLACK-LETTER CAPITAL H
- = Hilbert space
- # <font> 0048 latin capital letter h
-210D DOUBLE-STRUCK CAPITAL H
- # <font> 0048 latin capital letter h
-210E PLANCK CONSTANT
- # <font> 0068 latin small letter h
-210F PLANCK CONSTANT OVER TWO PI
- x (cyrillic small letter tshe - 045B)
- # <font> 0127 latin small letter h with stroke
-2110 SCRIPT CAPITAL I
- # <font> 0049 latin capital letter i
-2111 BLACK-LETTER CAPITAL I
- = imaginary part
- # <font> 0049 latin capital letter i
-2112 SCRIPT CAPITAL L
- = Laplace symbol
- # <font> 004C latin capital letter l
-2113 SCRIPT SMALL L
- = liter (not an official SI recommendation)
- # <font> 006C latin small letter l
-2114 L B BAR SYMBOL
- = pounds
-2115 DOUBLE-STRUCK CAPITAL N
- = natural number
- # <font> 004E latin capital letter n
-2116 NUMERO SIGN
- # 004E 006F
-2117 SOUND RECORDING COPYRIGHT
- = published
- = phonorecord sign
- x (copyright sign - 00A9)
-2118 SCRIPT CAPITAL P
- = Weierstrass elliptic function
- * actually this has the form of a lowercase calligraphic p, despite its name
-2119 DOUBLE-STRUCK CAPITAL P
- # <font> 0050 latin capital letter p
-211A DOUBLE-STRUCK CAPITAL Q
- = the set of rational numbers
- # <font> 0051 latin capital letter q
-211B SCRIPT CAPITAL R
- = Riemann Integral
- # <font> 0052 latin capital letter r
-211C BLACK-LETTER CAPITAL R
- = real part
- # <font> 0052 latin capital letter r
-211D DOUBLE-STRUCK CAPITAL R
- = the set of real numbers
- # <font> 0052 latin capital letter r
-211E PRESCRIPTION TAKE
- = recipe
- = cross ratio
-211F RESPONSE
-2120 SERVICE MARK
- # <super> 0053 004D
-2121 TELEPHONE SIGN
- # 0054 0045 004C
-2122 TRADE MARK SIGN
- # <super> 0054 004D
-2123 VERSICLE
-2124 DOUBLE-STRUCK CAPITAL Z
- = the set of integers
- # <font> 005A latin capital letter z
-2125 OUNCE SIGN
- x (latin small letter yogh - 021D)
-2126 OHM SIGN
- = resistance
- : 03A9 greek capital letter omega
-2127 INVERTED OHM SIGN
- = MHO
- = conductance
- * typographically a turned greek capital letter omega
- x (latin capital letter upsilon - 01B1)
- x (greek capital letter omega - 03A9)
-2128 BLACK-LETTER CAPITAL Z
- # <font> 005A latin capital letter z
-2129 TURNED GREEK SMALL LETTER IOTA
- * unique element fulfilling a description (logic)
- x (greek small letter iota - 03B9)
-212A KELVIN SIGN
- : 004B latin capital letter k
-212B ANGSTROM SIGN
- : 00C5 latin capital letter a with ring above
-212C SCRIPT CAPITAL B
- = Bernoulli function
- # <font> 0042 latin capital letter b
-212D BLACK-LETTER CAPITAL C
- # <font> 0043 latin capital letter c
-212E ESTIMATED SYMBOL
- * used in European packaging
- x (latin small letter e - 0065)
-212F SCRIPT SMALL E
- = error
- # <font> 0065 latin small letter e
-2130 SCRIPT CAPITAL E
- = EMF (Electro-Magnetic Force)
- # <font> 0045 latin capital letter e
-2131 SCRIPT CAPITAL F
- = Fourier transform
- # <font> 0046 latin capital letter f
-2132 TURNED CAPITAL F
- x (latin capital letter f - 0046)
-2133 SCRIPT CAPITAL M
- = M-matrix (physics)
- = German Mark (not the current Deutsche Mark)
- # <font> 004D latin capital letter m
-2134 SCRIPT SMALL O
- = order, of inferior order to
- # <font> 006F latin small letter o
-@ Hebrew letterlike math symbols (left-to-right)
-2135 ALEF SYMBOL
- = first transfinite cardinal (countable)
- # 05D0 hebrew letter alef
-2136 BET SYMBOL
- = second transfinite cardinal (the continuum)
- # 05D1 hebrew letter bet
-2137 GIMEL SYMBOL
- = third transfinite cardinal (functions of a real variable)
- # 05D2 hebrew letter gimel
-2138 DALET SYMBOL
- = fourth transfinite cardinal
- # 05D3 hebrew letter dalet
-@ Additional letterlike symbols
-2139 INFORMATION SOURCE
- * intended for use with 20DD
- # <font> 0069 latin small letter i
-213A ROTATED CAPITAL Q
- * a binding signature mark
-@@ 2150 Number Forms 218F
-@ Fractions
-@+ Other fraction number forms are found in the Latin-1 Supplement block.
- x (vulgar fraction one quarter - 00BC)
- x (vulgar fraction one half - 00BD)
- x (vulgar fraction three quarters - 00BE)
-2153 VULGAR FRACTION ONE THIRD
- # 0031 2044 0033
-2154 VULGAR FRACTION TWO THIRDS
- # 0032 2044 0033
-2155 VULGAR FRACTION ONE FIFTH
- # 0031 2044 0035
-2156 VULGAR FRACTION TWO FIFTHS
- # 0032 2044 0035
-2157 VULGAR FRACTION THREE FIFTHS
- # 0033 2044 0035
-2158 VULGAR FRACTION FOUR FIFTHS
- # 0034 2044 0035
-2159 VULGAR FRACTION ONE SIXTH
- # 0031 2044 0036
-215A VULGAR FRACTION FIVE SIXTHS
- # 0035 2044 0036
-215B VULGAR FRACTION ONE EIGHTH
- # 0031 2044 0038
-215C VULGAR FRACTION THREE EIGHTHS
- # 0033 2044 0038
-215D VULGAR FRACTION FIVE EIGHTHS
- # 0035 2044 0038
-215E VULGAR FRACTION SEVEN EIGHTHS
- # 0037 2044 0038
-215F FRACTION NUMERATOR ONE
- # 0031 2044
-@ Roman numerals
-2160 ROMAN NUMERAL ONE
- # 0049 latin capital letter i
-2161 ROMAN NUMERAL TWO
- # 0049 0049
-2162 ROMAN NUMERAL THREE
- # 0049 0049 0049
-2163 ROMAN NUMERAL FOUR
- # 0049 0056
-2164 ROMAN NUMERAL FIVE
- # 0056 latin capital letter v
-2165 ROMAN NUMERAL SIX
- # 0056 0049
-2166 ROMAN NUMERAL SEVEN
- # 0056 0049 0049
-2167 ROMAN NUMERAL EIGHT
- # 0056 0049 0049 0049
-2168 ROMAN NUMERAL NINE
- # 0049 0058
-2169 ROMAN NUMERAL TEN
- # 0058 latin capital letter x
-216A ROMAN NUMERAL ELEVEN
- # 0058 0049
-216B ROMAN NUMERAL TWELVE
- # 0058 0049 0049
-216C ROMAN NUMERAL FIFTY
- # 004C latin capital letter l
-216D ROMAN NUMERAL ONE HUNDRED
- # 0043 latin capital letter c
-216E ROMAN NUMERAL FIVE HUNDRED
- # 0044 latin capital letter d
-216F ROMAN NUMERAL ONE THOUSAND
- # 004D latin capital letter m
-2170 SMALL ROMAN NUMERAL ONE
- # 0069 latin small letter i
-2171 SMALL ROMAN NUMERAL TWO
- # 0069 0069
-2172 SMALL ROMAN NUMERAL THREE
- # 0069 0069 0069
-2173 SMALL ROMAN NUMERAL FOUR
- # 0069 0076
-2174 SMALL ROMAN NUMERAL FIVE
- # 0076 latin small letter v
-2175 SMALL ROMAN NUMERAL SIX
- # 0076 0069
-2176 SMALL ROMAN NUMERAL SEVEN
- # 0076 0069 0069
-2177 SMALL ROMAN NUMERAL EIGHT
- # 0076 0069 0069 0069
-2178 SMALL ROMAN NUMERAL NINE
- # 0069 0078
-2179 SMALL ROMAN NUMERAL TEN
- # 0078 latin small letter x
-217A SMALL ROMAN NUMERAL ELEVEN
- # 0078 0069
-217B SMALL ROMAN NUMERAL TWELVE
- # 0078 0069 0069
-217C SMALL ROMAN NUMERAL FIFTY
- # 006C latin small letter l
-217D SMALL ROMAN NUMERAL ONE HUNDRED
- # 0063 latin small letter c
-217E SMALL ROMAN NUMERAL FIVE HUNDRED
- # 0064 latin small letter d
-217F SMALL ROMAN NUMERAL ONE THOUSAND
- # 006D latin small letter m
-2180 ROMAN NUMERAL ONE THOUSAND C D
-2181 ROMAN NUMERAL FIVE THOUSAND
-2182 ROMAN NUMERAL TEN THOUSAND
-2183 ROMAN NUMERAL REVERSED ONE HUNDRED
- * used in combination with C and I to form large numbers
-@@ 2190 Arrows 21FF
-@ Arrows
-2190 LEFTWARDS ARROW
-2191 UPWARDS ARROW
- * IPA: egressive airflow
-2192 RIGHTWARDS ARROW
- = z notation total function
-2193 DOWNWARDS ARROW
- * IPA: ingressive airflow
-2194 LEFT RIGHT ARROW
- = z notation relation
-2195 UP DOWN ARROW
-2196 NORTH WEST ARROW
-2197 NORTH EAST ARROW
-2198 SOUTH EAST ARROW
-2199 SOUTH WEST ARROW
-219A LEFTWARDS ARROW WITH STROKE
- * negation of 2190
- : 2190 0338
-219B RIGHTWARDS ARROW WITH STROKE
- * negation of 2192
- : 2192 0338
-219C LEFTWARDS WAVE ARROW
-219D RIGHTWARDS WAVE ARROW
-219E LEFTWARDS TWO HEADED ARROW
-219F UPWARDS TWO HEADED ARROW
-21A0 RIGHTWARDS TWO HEADED ARROW
- = z notation total surjection
-21A1 DOWNWARDS TWO HEADED ARROW
- = form feed
-21A2 LEFTWARDS ARROW WITH TAIL
-21A3 RIGHTWARDS ARROW WITH TAIL
- = z notation total injection
-21A4 LEFTWARDS ARROW FROM BAR
-21A5 UPWARDS ARROW FROM BAR
-21A6 RIGHTWARDS ARROW FROM BAR
- = z notation maplet
-21A7 DOWNWARDS ARROW FROM BAR
- = depth symbol
-21A8 UP DOWN ARROW WITH BASE
-21A9 LEFTWARDS ARROW WITH HOOK
-21AA RIGHTWARDS ARROW WITH HOOK
-21AB LEFTWARDS ARROW WITH LOOP
-21AC RIGHTWARDS ARROW WITH LOOP
-21AD LEFT RIGHT WAVE ARROW
-21AE LEFT RIGHT ARROW WITH STROKE
- * negation of 2194
- : 2194 0338
-21AF DOWNWARDS ZIGZAG ARROW
- = electrolysis
-21B0 UPWARDS ARROW WITH TIP LEFTWARDS
-21B1 UPWARDS ARROW WITH TIP RIGHTWARDS
-21B2 DOWNWARDS ARROW WITH TIP LEFTWARDS
-21B3 DOWNWARDS ARROW WITH TIP RIGHTWARDS
-21B4 RIGHTWARDS ARROW WITH CORNER DOWNWARDS
- = line feed
-21B5 DOWNWARDS ARROW WITH CORNER LEFTWARDS
- = carriage return, new line
-21B6 ANTICLOCKWISE TOP SEMICIRCLE ARROW
-21B7 CLOCKWISE TOP SEMICIRCLE ARROW
-21B8 NORTH WEST ARROW TO LONG BAR
- = home
-21B9 LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
- = tab with shift tab
-21BA ANTICLOCKWISE OPEN CIRCLE ARROW
-21BB CLOCKWISE OPEN CIRCLE ARROW
-21BC LEFTWARDS HARPOON WITH BARB UPWARDS
-21BD LEFTWARDS HARPOON WITH BARB DOWNWARDS
-21BE UPWARDS HARPOON WITH BARB RIGHTWARDS
-21BF UPWARDS HARPOON WITH BARB LEFTWARDS
-21C0 RIGHTWARDS HARPOON WITH BARB UPWARDS
-21C1 RIGHTWARDS HARPOON WITH BARB DOWNWARDS
-21C2 DOWNWARDS HARPOON WITH BARB RIGHTWARDS
-21C3 DOWNWARDS HARPOON WITH BARB LEFTWARDS
-21C4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW
-21C5 UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
-21C6 LEFTWARDS ARROW OVER RIGHTWARDS ARROW
-21C7 LEFTWARDS PAIRED ARROWS
-21C8 UPWARDS PAIRED ARROWS
-21C9 RIGHTWARDS PAIRED ARROWS
-21CA DOWNWARDS PAIRED ARROWS
-21CB LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
-21CC RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
-21CD LEFTWARDS DOUBLE ARROW WITH STROKE
- * negation of 21D0
- : 21D0 0338
-21CE LEFT RIGHT DOUBLE ARROW WITH STROKE
- * negation of 21D4
- : 21D4 0338
-21CF RIGHTWARDS DOUBLE ARROW WITH STROKE
- * negation of 21D2
- : 21D2 0338
-21D0 LEFTWARDS DOUBLE ARROW
-21D1 UPWARDS DOUBLE ARROW
-21D2 RIGHTWARDS DOUBLE ARROW
-21D3 DOWNWARDS DOUBLE ARROW
-21D4 LEFT RIGHT DOUBLE ARROW
-21D5 UP DOWN DOUBLE ARROW
-21D6 NORTH WEST DOUBLE ARROW
-21D7 NORTH EAST DOUBLE ARROW
-21D8 SOUTH EAST DOUBLE ARROW
-21D9 SOUTH WEST DOUBLE ARROW
-21DA LEFTWARDS TRIPLE ARROW
-21DB RIGHTWARDS TRIPLE ARROW
-21DC LEFTWARDS SQUIGGLE ARROW
-21DD RIGHTWARDS SQUIGGLE ARROW
-21DE UPWARDS ARROW WITH DOUBLE STROKE
- = page up
-21DF DOWNWARDS ARROW WITH DOUBLE STROKE
- = page down
-21E0 LEFTWARDS DASHED ARROW
-21E1 UPWARDS DASHED ARROW
-21E2 RIGHTWARDS DASHED ARROW
-21E3 DOWNWARDS DASHED ARROW
-21E4 LEFTWARDS ARROW TO BAR
- = leftward tab
-21E5 RIGHTWARDS ARROW TO BAR
- = rightward tab
-21E6 LEFTWARDS WHITE ARROW
-21E7 UPWARDS WHITE ARROW
- = shift
-21E8 RIGHTWARDS WHITE ARROW
-21E9 DOWNWARDS WHITE ARROW
-21EA UPWARDS WHITE ARROW FROM BAR
- = caps lock
-21EB UPWARDS WHITE ARROW ON PEDESTAL
- = level 2 lock
-21EC UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
- = caps lock
-21ED UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
- = numerics lock
-21EE UPWARDS WHITE DOUBLE ARROW
- = level 3 select
-21EF UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
- = level 3 lock
-21F0 RIGHTWARDS WHITE ARROW FROM WALL
- = group lock
-21F1 NORTH WEST ARROW TO CORNER
- = home
-21F2 SOUTH EAST ARROW TO CORNER
- = end
-21F3 UP DOWN WHITE ARROW
- = scrolling
-@@ 2200 Mathematical Operators 22FF
-@ Mathematical operators
-2200 FOR ALL
-2201 COMPLEMENT
- x (latin letter stretched c - 0297)
-2202 PARTIAL DIFFERENTIAL
-2203 THERE EXISTS
-2204 THERE DOES NOT EXIST
- : 2203 0338
-2205 EMPTY SET
- = null set
- x (latin capital letter o with stroke - 00D8)
- x (diameter sign - 2300)
-2206 INCREMENT
- = Laplace operator
- = forward difference
- x (greek capital letter delta - 0394)
- x (white up-pointing triangle - 25B3)
-2207 NABLA
- = Laplace operator (written with superscript 2)
- = backward difference
- = del
- x (white down-pointing triangle - 25BD)
-2208 ELEMENT OF
-2209 NOT AN ELEMENT OF
- : 2208 0338
-220A SMALL ELEMENT OF
- * originates in math pi fonts; not the straight epsilon
-220B CONTAINS AS MEMBER
- = such that
-220C DOES NOT CONTAIN AS MEMBER
- : 220B 0338
-220D SMALL CONTAINS AS MEMBER
-220E END OF PROOF
- = Q.E.D.
- x (triangular bullet - 2023)
- x (black vertical rectangle - 25AE)
-220F N-ARY PRODUCT
- = product sign
- x (greek capital letter pi - 03A0)
-2210 N-ARY COPRODUCT
- = coproduct sign
-2211 N-ARY SUMMATION
- = summation sign
- x (greek capital letter sigma - 03A3)
-2212 MINUS SIGN
- x (hyphen-minus - 002D)
-2213 MINUS-OR-PLUS SIGN
- x (plus-minus sign - 00B1)
-2214 DOT PLUS
-2215 DIVISION SLASH
- * generic division operator
- x (solidus - 002F)
- x (fraction slash - 2044)
-2216 SET MINUS
- x (reverse solidus - 005C)
-2217 ASTERISK OPERATOR
- x (asterisk - 002A)
-2218 RING OPERATOR
- = composite function
- = APL jot
- x (degree sign - 00B0)
- x (white bullet - 25E6)
-2219 BULLET OPERATOR
- x (middle dot - 00B7)
- x (bullet - 2022)
- x (one dot leader - 2024)
-221A SQUARE ROOT
- = radical sign
- x (check mark - 2713)
-221B CUBE ROOT
-221C FOURTH ROOT
-221D PROPORTIONAL TO
- x (greek small letter alpha - 03B1)
-221E INFINITY
-221F RIGHT ANGLE
-2220 ANGLE
-2221 MEASURED ANGLE
-2222 SPHERICAL ANGLE
- = angle arc
-2223 DIVIDES
- = such that
- = APL stile
- x (vertical line - 007C)
- x (latin letter dental click - 01C0)
-2224 DOES NOT DIVIDE
- : 2223 0338
-2225 PARALLEL TO
- x (latin letter lateral click - 01C1)
- x (double vertical line - 2016)
-2226 NOT PARALLEL TO
- : 2225 0338
-2227 LOGICAL AND
- = wedge, conjunction
- x (n-ary logical and - 22C0)
- x (up arrowhead - 2303)
-2228 LOGICAL OR
- = vee, disjunction
- x (n-ary logical or - 22C1)
- x (down arrowhead - 2304)
-2229 INTERSECTION
- = cap, hat
- x (n-ary intersection - 22C2)
-222A UNION
- = cup
- x (n-ary union - 22C3)
-222B INTEGRAL
- x (latin small letter esh - 0283)
-222C DOUBLE INTEGRAL
- # 222B 222B
-222D TRIPLE INTEGRAL
- # 222B 222B 222B
-222E CONTOUR INTEGRAL
-222F SURFACE INTEGRAL
- # 222E 222E
-2230 VOLUME INTEGRAL
- # 222E 222E 222E
-2231 CLOCKWISE INTEGRAL
-2232 CLOCKWISE CONTOUR INTEGRAL
-2233 ANTICLOCKWISE CONTOUR INTEGRAL
- * clockwise or anticlockwise arrows do not reverse during layout mirroring
-2234 THEREFORE
-2235 BECAUSE
-2236 RATIO
- x (colon - 003A)
-2237 PROPORTION
-2238 DOT MINUS
- = symmetric difference
-2239 EXCESS
-223A GEOMETRIC PROPORTION
-223B HOMOTHETIC
-223C TILDE OPERATOR
- = varies with (proportional to)
- = difference between
- = similar to
- = not
- = cycle
- = APL tilde
- x (tilde - 007E)
- x (not sign - 00AC)
- x (small tilde - 02DC)
-223D REVERSED TILDE (lazy S)
- = lazy S
- * reversed tilde and lazy S are glyph variants
-223E INVERTED LAZY S
- = most positive
-223F SINE WAVE
- = alternating current
-2240 WREATH PRODUCT
-2241 NOT TILDE
- : 223C 0338
-2242 MINUS TILDE
-2243 ASYMPTOTICALLY EQUAL TO
-2244 NOT ASYMPTOTICALLY EQUAL TO
- : 2243 0338
-2245 APPROXIMATELY EQUAL TO
-2246 APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
-2247 NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
- : 2245 0338
-2248 ALMOST EQUAL TO
- = asymptotic to
-2249 NOT ALMOST EQUAL TO
- : 2248 0338
-224A ALMOST EQUAL OR EQUAL TO
-224B TRIPLE TILDE
-224C ALL EQUAL TO
- * reversed tilde and lazy S are glyph variants
-224D EQUIVALENT TO
-224E GEOMETRICALLY EQUIVALENT TO
-224F DIFFERENCE BETWEEN
-2250 APPROACHES THE LIMIT
-2251 GEOMETRICALLY EQUAL TO
-2252 APPROXIMATELY EQUAL TO OR THE IMAGE OF
- = nearly equals
-2253 IMAGE OF OR APPROXIMATELY EQUAL TO
-2254 COLON EQUALS
-2255 EQUALS COLON
-2256 RING IN EQUAL TO
-2257 RING EQUAL TO
- = approximately equal to
-2258 CORRESPONDS TO
-2259 ESTIMATES
- = corresponds to
-225A EQUIANGULAR TO
-225B STAR EQUALS
-225C DELTA EQUAL TO
- = equiangular
- = equal to by definition
-225D EQUAL TO BY DEFINITION
-225E MEASURED BY
-225F QUESTIONED EQUAL TO
-2260 NOT EQUAL TO
- x (equals sign - 003D)
- x (latin letter alveolar click - 01C2)
- : 003D 0338
-2261 IDENTICAL TO
-2262 NOT IDENTICAL TO
- : 2261 0338
-2263 STRICTLY EQUIVALENT TO
-2264 LESS-THAN OR EQUAL TO
-2265 GREATER-THAN OR EQUAL TO
-2266 LESS-THAN OVER EQUAL TO
-2267 GREATER-THAN OVER EQUAL TO
-2268 LESS-THAN BUT NOT EQUAL TO
-2269 GREATER-THAN BUT NOT EQUAL TO
-226A MUCH LESS-THAN
- x (left-pointing double angle quotation mark - 00AB)
-226B MUCH GREATER-THAN
- x (right-pointing double angle quotation mark - 00BB)
-226C BETWEEN
- = plaintiff, quantic
-226D NOT EQUIVALENT TO
- : 224D 0338
-226E NOT LESS-THAN
- : 003C 0338
-226F NOT GREATER-THAN
- : 003E 0338
-2270 NEITHER LESS-THAN NOR EQUAL TO
- : 2264 0338
-2271 NEITHER GREATER-THAN NOR EQUAL TO
- : 2265 0338
-2272 LESS-THAN OR EQUIVALENT TO
-2273 GREATER-THAN OR EQUIVALENT TO
-2274 NEITHER LESS-THAN NOR EQUIVALENT TO
- : 2272 0338
-2275 NEITHER GREATER-THAN NOR EQUIVALENT TO
- : 2273 0338
-2276 LESS-THAN OR GREATER-THAN
-2277 GREATER-THAN OR LESS-THAN
-2278 NEITHER LESS-THAN NOR GREATER-THAN
- : 2276 0338
-2279 NEITHER GREATER-THAN NOR LESS-THAN
- : 2277 0338
-227A PRECEDES
- = lower rank than
- x (precedes under relation - 22B0)
-227B SUCCEEDS
- = higher rank than
- x (succeeds under relation - 22B1)
-227C PRECEDES OR EQUAL TO
-227D SUCCEEDS OR EQUAL TO
-227E PRECEDES OR EQUIVALENT TO
-227F SUCCEEDS OR EQUIVALENT TO
-2280 DOES NOT PRECEDE
- : 227A 0338
-2281 DOES NOT SUCCEED
- : 227B 0338
-2282 SUBSET OF
- = included in set
-2283 SUPERSET OF
- = includes in set
-2284 NOT A SUBSET OF
- : 2282 0338
-2285 NOT A SUPERSET OF
- : 2283 0338
-2286 SUBSET OF OR EQUAL TO
-2287 SUPERSET OF OR EQUAL TO
-2288 NEITHER A SUBSET OF NOR EQUAL TO
- : 2286 0338
-2289 NEITHER A SUPERSET OF NOR EQUAL TO
- : 2287 0338
-228A SUBSET OF WITH NOT EQUAL TO
-228B SUPERSET OF WITH NOT EQUAL TO
-228C MULTISET
-228D MULTISET MULTIPLICATION
-228E MULTISET UNION
- = z notation bag addition
-228F SQUARE IMAGE OF
-2290 SQUARE ORIGINAL OF
-2291 SQUARE IMAGE OF OR EQUAL TO
-2292 SQUARE ORIGINAL OF OR EQUAL TO
-2293 SQUARE CAP
-2294 SQUARE CUP
-2295 CIRCLED PLUS
- = direct sum
- = vector pointing into page
- x (earth - 2641)
-2296 CIRCLED MINUS
- = symmetric difference
-2297 CIRCLED TIMES
- = tensor product
- = vector pointing into page
-2298 CIRCLED DIVISION SLASH
-2299 CIRCLED DOT OPERATOR
- = direct product
- = vector pointing out of page
- x (latin letter bilabial click - 0298)
- x (sun - 2609)
-229A CIRCLED RING OPERATOR
- x (apl functional symbol circle jot - 233E)
- x (bullseye - 25CE)
-229B CIRCLED ASTERISK OPERATOR
-229C CIRCLED EQUALS
-229D CIRCLED DASH
-229E SQUARED PLUS
-229F SQUARED MINUS
-22A0 SQUARED TIMES
- x (ballot box with x - 2612)
-22A1 SQUARED DOT OPERATOR
-22A2 RIGHT TACK
- = turnstile
- = proves, implies, yields
- = reducible
-22A3 LEFT TACK
- = reverse turnstile
- = non-theorem, does not yield
-22A4 DOWN TACK
- = top
- * called up tack in APL
-22A5 UP TACK
- = orthogonal to
- = perpendicular
- = base
- * called down tack in APL
-22A6 ASSERTION
- = reduces to
-22A7 MODELS
-22A8 TRUE
- = statement is true, valid
- = is a tautology
- = satisfies
- = results in
-22A9 FORCES
-22AA TRIPLE VERTICAL BAR RIGHT TURNSTILE
-22AB DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
-22AC DOES NOT PROVE
- : 22A2 0338
-22AD NOT TRUE
- : 22A8 0338
-22AE DOES NOT FORCE
- : 22A9 0338
-22AF NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
- : 22AB 0338
-22B0 PRECEDES UNDER RELATION
- x (precedes - 227A)
-22B1 SUCCEEDS UNDER RELATION
- x (succeeds - 227B)
-22B2 NORMAL SUBGROUP OF
- x (white left-pointing pointer - 25C5)
-22B3 CONTAINS AS NORMAL SUBGROUP
- x (white right-pointing pointer - 25BB)
-22B4 NORMAL SUBGROUP OF OR EQUAL TO
-22B5 CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
-22B6 ORIGINAL OF
-22B7 IMAGE OF
-22B8 MULTIMAP
-22B9 HERMITIAN CONJUGATE MATRIX
-22BA INTERCALATE
-22BB XOR
-22BC NAND
- x (projective - 2305)
-22BD NOR
-22BE RIGHT ANGLE WITH ARC
-22BF RIGHT TRIANGLE
-22C0 N-ARY LOGICAL AND
- x (logical and - 2227)
-22C1 N-ARY LOGICAL OR
- x (logical or - 2228)
-22C2 N-ARY INTERSECTION
- = z notation generalised intersection
- x (intersection - 2229)
-22C3 N-ARY UNION
- = z notation generalised union
- x (union - 222A)
-22C4 DIAMOND OPERATOR
- x (white diamond - 25C7)
-22C5 DOT OPERATOR
- x (middle dot - 00B7)
-22C6 STAR OPERATOR
- * APL
- x (arabic five pointed star - 066D)
- x (black star - 2605)
-22C7 DIVISION TIMES
-22C8 BOWTIE
- x (ocr bow tie - 2445)
-22C9 LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CA RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
-22CB LEFT SEMIDIRECT PRODUCT
-22CC RIGHT SEMIDIRECT PRODUCT
- x (caret insertion point - 2041)
-22CD REVERSED TILDE EQUALS
-22CE CURLY LOGICAL OR
-22CF CURLY LOGICAL AND
-22D0 DOUBLE SUBSET
-22D1 DOUBLE SUPERSET
-22D2 DOUBLE INTERSECTION
-22D3 DOUBLE UNION
-22D4 PITCHFORK
- = proper intersection
-22D5 EQUAL AND PARALLEL TO
- x (viewdata square - 2317)
-22D6 LESS-THAN WITH DOT
-22D7 GREATER-THAN WITH DOT
-22D8 VERY MUCH LESS-THAN
-22D9 VERY MUCH GREATER-THAN
-22DA LESS-THAN EQUAL TO OR GREATER-THAN
-22DB GREATER-THAN EQUAL TO OR LESS-THAN
-22DC EQUAL TO OR LESS-THAN
-22DD EQUAL TO OR GREATER-THAN
-22DE EQUAL TO OR PRECEDES
-22DF EQUAL TO OR SUCCEEDS
-22E0 DOES NOT PRECEDE OR EQUAL
- : 227C 0338
-22E1 DOES NOT SUCCEED OR EQUAL
- : 227D 0338
-22E2 NOT SQUARE IMAGE OF OR EQUAL TO
- : 2291 0338
-22E3 NOT SQUARE ORIGINAL OF OR EQUAL TO
- : 2292 0338
-22E4 SQUARE IMAGE OF OR NOT EQUAL TO
-22E5 SQUARE ORIGINAL OF OR NOT EQUAL TO
-22E6 LESS-THAN BUT NOT EQUIVALENT TO
-22E7 GREATER-THAN BUT NOT EQUIVALENT TO
-22E8 PRECEDES BUT NOT EQUIVALENT TO
-22E9 SUCCEEDS BUT NOT EQUIVALENT TO
-22EA NOT NORMAL SUBGROUP OF
- : 22B2 0338
-22EB DOES NOT CONTAIN AS NORMAL SUBGROUP
- : 22B3 0338
-22EC NOT NORMAL SUBGROUP OF OR EQUAL TO
- : 22B4 0338
-22ED DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
- : 22B5 0338
-22EE VERTICAL ELLIPSIS
- * these four ellipses are used for matrix row/column elision
- x (horizontal ellipsis - 2026)
-22EF MIDLINE HORIZONTAL ELLIPSIS
-22F0 UP RIGHT DIAGONAL ELLIPSIS
-22F1 DOWN RIGHT DIAGONAL ELLIPSIS
-@@ 2300 Miscellaneous Technical 23FF
-@ Miscellaneous technical
-2300 DIAMETER SIGN
- x (empty set - 2205)
-2301 ELECTRIC ARROW
- * from ISO 2047
- * symbol for End of Transmission
-2302 HOUSE
-2303 UP ARROWHEAD
- x (circumflex accent - 005E)
- x (modifier letter up arrowhead - 02C4)
- x (caret - 2038)
- x (logical and - 2227)
-2304 DOWN ARROWHEAD
- x (modifier letter down arrowhead - 02C5)
- x (logical or - 2228)
- x (countersink - 2335)
-2305 PROJECTIVE
- x (nand - 22BC)
-2306 PERSPECTIVE
-2307 WAVY LINE
- x (wavy dash - 3030)
-2308 LEFT CEILING
- = APL upstile
- x (left corner bracket - 300C)
-2309 RIGHT CEILING
-230A LEFT FLOOR
- = APL downstile
-230B RIGHT FLOOR
- x (right corner bracket - 300D)
-230C BOTTOM RIGHT CROP
- * set of four "crop" corners, arranged facing outward
-230D BOTTOM LEFT CROP
-230E TOP RIGHT CROP
-230F TOP LEFT CROP
-2310 REVERSED NOT SIGN
- = beginning of line
- x (not sign - 00AC)
-2311 SQUARE LOZENGE
-2312 ARC
- x (upper half circle - 25E0)
-2313 SEGMENT
-2314 SECTOR
-2315 TELEPHONE RECORDER
-2316 POSITION INDICATOR
-2317 VIEWDATA SQUARE
- x (equal and parallel to - 22D5)
-2318 PLACE OF INTEREST SIGN
- = COMMAND KEY
-2319 TURNED NOT SIGN
- = line marker
-231A WATCH
-231B HOURGLASS
-231C TOP LEFT CORNER
- * set of four "quine" corners, for quincuncial arrangement
-231D TOP RIGHT CORNER
-231E BOTTOM LEFT CORNER
-231F BOTTOM RIGHT CORNER
-2320 TOP HALF INTEGRAL
-2321 BOTTOM HALF INTEGRAL
-2322 FROWN
- x (character tie - 2040)
-2323 SMILE
- x (undertie - 203F)
-2324 UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
- = ENTER KEY
-2325 OPTION KEY
-2326 ERASE TO THE RIGHT
- = DELETE TO THE RIGHT KEY
-2327 X IN A RECTANGLE BOX
- = CLEAR KEY
-2328 KEYBOARD
-2329 LEFT-POINTING ANGLE BRACKET
- = BRA
- = z notation left sequence bracket
- x (less-than sign - 003C)
- x (single left-pointing angle quotation mark - 2039)
- : 3008 left angle bracket
-232A RIGHT-POINTING ANGLE BRACKET
- = KET
- = z notation right sequence bracket
- x (greater-than sign - 003E)
- x (single right-pointing angle quotation mark - 203A)
- : 3009 right angle bracket
-232B ERASE TO THE LEFT
- = DELETE TO THE LEFT KEY
-232C BENZENE RING
-232D CYLINDRICITY
-232E ALL AROUND-PROFILE
-232F SYMMETRY
-2330 TOTAL RUNOUT
-2331 DIMENSION ORIGIN
-2332 CONICAL TAPER
-2333 SLOPE
-2334 COUNTERBORE
- x (open box - 2423)
-2335 COUNTERSINK
- x (down arrowhead - 2304)
-@ APL
-2336 APL FUNCTIONAL SYMBOL I-BEAM
-2337 APL FUNCTIONAL SYMBOL SQUISH QUAD
- x (apl functional symbol quad - 2395)
- x (white vertical rectangle - 25AF)
-2338 APL FUNCTIONAL SYMBOL QUAD EQUAL
-2339 APL FUNCTIONAL SYMBOL QUAD DIVIDE
-233A APL FUNCTIONAL SYMBOL QUAD DIAMOND
-233B APL FUNCTIONAL SYMBOL QUAD JOT
-233C APL FUNCTIONAL SYMBOL QUAD CIRCLE
-233D APL FUNCTIONAL SYMBOL CIRCLE STILE
-233E APL FUNCTIONAL SYMBOL CIRCLE JOT
- x (circled ring operator - 229A)
-233F APL FUNCTIONAL SYMBOL SLASH BAR
-2340 APL FUNCTIONAL SYMBOL BACKSLASH BAR
-2341 APL FUNCTIONAL SYMBOL QUAD SLASH
-2342 APL FUNCTIONAL SYMBOL QUAD BACKSLASH
-2343 APL FUNCTIONAL SYMBOL QUAD LESS-THAN
-2344 APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
-2345 APL FUNCTIONAL SYMBOL LEFTWARDS VANE
-2346 APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
-2347 APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
-2348 APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
-2349 APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
-234A APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR *
- x (up tack - 22A5)
-234B APL FUNCTIONAL SYMBOL DELTA STILE
-234C APL FUNCTIONAL SYMBOL QUAD DOWN CARET
-234D APL FUNCTIONAL SYMBOL QUAD DELTA
-234E APL FUNCTIONAL SYMBOL DOWN TACK JOT *
-234F APL FUNCTIONAL SYMBOL UPWARDS VANE
-2350 APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
-2351 APL FUNCTIONAL SYMBOL UP TACK OVERBAR *
- x (down tack - 22A4)
- x (postal mark - 3012)
-2352 APL FUNCTIONAL SYMBOL DEL STILE
-2353 APL FUNCTIONAL SYMBOL QUAD UP CARET
-2354 APL FUNCTIONAL SYMBOL QUAD DEL
-2355 APL FUNCTIONAL SYMBOL UP TACK JOT *
-2356 APL FUNCTIONAL SYMBOL DOWNWARDS VANE
-2357 APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
-2358 APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
-2359 APL FUNCTIONAL SYMBOL DELTA UNDERBAR
-235A APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
-235B APL FUNCTIONAL SYMBOL JOT UNDERBAR
-235C APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
-235D APL FUNCTIONAL SYMBOL UP SHOE JOT
-235E APL FUNCTIONAL SYMBOL QUOTE QUAD
-235F APL FUNCTIONAL SYMBOL CIRCLE STAR
-2360 APL FUNCTIONAL SYMBOL QUAD COLON
-2361 APL FUNCTIONAL SYMBOL UP TACK DIAERESIS *
-2362 APL FUNCTIONAL SYMBOL DEL DIAERESIS
-2363 APL FUNCTIONAL SYMBOL STAR DIAERESIS
-2364 APL FUNCTIONAL SYMBOL JOT DIAERESIS
-2365 APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
-2366 APL FUNCTIONAL SYMBOL DOWN SHOE STILE
-2367 APL FUNCTIONAL SYMBOL LEFT SHOE STILE
-2368 APL FUNCTIONAL SYMBOL TILDE DIAERESIS
-2369 APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
-236A APL FUNCTIONAL SYMBOL COMMA BAR
-236B APL FUNCTIONAL SYMBOL DEL TILDE
-236C APL FUNCTIONAL SYMBOL ZILDE
-236D APL FUNCTIONAL SYMBOL STILE TILDE
-236E APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
-236F APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
-2370 APL FUNCTIONAL SYMBOL QUAD QUESTION
-2371 APL FUNCTIONAL SYMBOL DOWN CARET TILDE
-2372 APL FUNCTIONAL SYMBOL UP CARET TILDE
-2373 APL FUNCTIONAL SYMBOL IOTA
-2374 APL FUNCTIONAL SYMBOL RHO
-2375 APL FUNCTIONAL SYMBOL OMEGA
-2376 APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
-2377 APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
-2378 APL FUNCTIONAL SYMBOL IOTA UNDERBAR
-2379 APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
-237A APL FUNCTIONAL SYMBOL ALPHA
-@ Graphics for control codes
-237B NOT CHECK MARK
- * from ISO 2047
- * symbol for Negative Acknowledge
-237D SHOULDERED OPEN BOX
- * from ISO 9995-7
- * keyboard symbol for No Break Space
-237E BELL SYMBOL
- * from ISO 2047
-237F VERTICAL LINE WITH MIDDLE DOT
- * from ISO 2047
- * symbol for End of Medium
-@ Keyboard symbols from ISO 9995-7
-2380 INSERTION SYMBOL
-2381 CONTINUOUS UNDERLINE SYMBOL
-2382 DISCONTINUOUS UNDERLINE SYMBOL
-2383 EMPHASIS SYMBOL
-2384 COMPOSITION SYMBOL
-2385 WHITE SQUARE WITH CENTRE VERTICAL LINE
-2386 ENTER SYMBOL
-2387 ALTERNATIVE KEY SYMBOL
-2388 HELM SYMBOL
- = control
- x (wheel of dharma - 2638)
-2389 CIRCLED HORIZONTAL BAR WITH NOTCH (pause)
-238A CIRCLED TRIANGLE DOWN (break)
-238B BROKEN CIRCLE WITH NORTHWEST ARROW (escape)
-238C UNDO SYMBOL
-@ Electrotechnical symbols from IR 181
-238D MONOSTABLE SYMBOL
-238E HYSTERESIS SYMBOL
-238F OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
-2390 OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
-2391 PASSIVE-PULL-DOWN-OUTPUT SYMBOL
-2392 PASSIVE-PULL-UP-OUTPUT SYMBOL
-2393 DIRECT CURRENT SYMBOL FORM TWO
-2394 SOFTWARE-FUNCTION SYMBOL
-@ APL
-2395 APL FUNCTIONAL SYMBOL QUAD
- x (apl functional symbol squish quad - 2337)
- x (white vertical rectangle - 25AF)
-@ Keyboard symbols from ISO 9995-7
-2396 DECIMAL SEPARATOR KEY SYMBOL
-2397 PREVIOUS PAGE
-2398 NEXT PAGE
-2399 PRINT SCREEN SYMBOL
-239A CLEAR SCREEN SYMBOL
- x (combining enclosing screen - 20E2)
-@@ 2400 Control Pictures 243F
-@ Graphic pictures for control codes
-2400 SYMBOL FOR NULL
-2401 SYMBOL FOR START OF HEADING
-2402 SYMBOL FOR START OF TEXT
-2403 SYMBOL FOR END OF TEXT
-2404 SYMBOL FOR END OF TRANSMISSION
-2405 SYMBOL FOR ENQUIRY
-2406 SYMBOL FOR ACKNOWLEDGE
-2407 SYMBOL FOR BELL
-2408 SYMBOL FOR BACKSPACE
-2409 SYMBOL FOR HORIZONTAL TABULATION
-240A SYMBOL FOR LINE FEED
-240B SYMBOL FOR VERTICAL TABULATION
-240C SYMBOL FOR FORM FEED
-240D SYMBOL FOR CARRIAGE RETURN
-240E SYMBOL FOR SHIFT OUT
-240F SYMBOL FOR SHIFT IN
-2410 SYMBOL FOR DATA LINK ESCAPE
-2411 SYMBOL FOR DEVICE CONTROL ONE
-2412 SYMBOL FOR DEVICE CONTROL TWO
-2413 SYMBOL FOR DEVICE CONTROL THREE
-2414 SYMBOL FOR DEVICE CONTROL FOUR
-2415 SYMBOL FOR NEGATIVE ACKNOWLEDGE
-2416 SYMBOL FOR SYNCHRONOUS IDLE
-2417 SYMBOL FOR END OF TRANSMISSION BLOCK
-2418 SYMBOL FOR CANCEL
-2419 SYMBOL FOR END OF MEDIUM
-241A SYMBOL FOR SUBSTITUTE
-241B SYMBOL FOR ESCAPE
-241C SYMBOL FOR FILE SEPARATOR
-241D SYMBOL FOR GROUP SEPARATOR
-241E SYMBOL FOR RECORD SEPARATOR
-241F SYMBOL FOR UNIT SEPARATOR
-2420 SYMBOL FOR SPACE
-2421 SYMBOL FOR DELETE
-2422 BLANK SYMBOL
- * graphic for space
- x (latin small letter b with stroke - 0180)
-2423 OPEN BOX
- * graphic for space
- x (counterbore - 2334)
-2424 SYMBOL FOR NEWLINE
-2425 SYMBOL FOR DELETE FORM TWO
- * from ISO 9995-7
- * keyboard symbol for undoable delete
-2426 SYMBOL FOR SUBSTITUTE FORM TWO
- * from ISO 2047
- x (arabic question mark - 061F)
-@@ 2440 Optical Character Recognition 245F
-@ OCR
-2440 OCR HOOK
-2441 OCR CHAIR
-2442 OCR FORK
-2443 OCR INVERTED FORK
-2444 OCR BELT BUCKLE
-2445 OCR BOW TIE
- x (bowtie - 22C8)
-2446 OCR BRANCH BANK IDENTIFICATION
- = transit
-2447 OCR AMOUNT OF CHECK
-2448 OCR DASH
- = on us
-2449 OCR CUSTOMER ACCOUNT NUMBER
- = dash
-244A OCR DOUBLE BACKSLASH
-@@ 2460 Enclosed Alphanumerics 24FF
-@ Circled numbers
-2460 CIRCLED DIGIT ONE
- # <circle> 0031
-2461 CIRCLED DIGIT TWO
- # <circle> 0032
-2462 CIRCLED DIGIT THREE
- # <circle> 0033
-2463 CIRCLED DIGIT FOUR
- # <circle> 0034
-2464 CIRCLED DIGIT FIVE
- # <circle> 0035
-2465 CIRCLED DIGIT SIX
- # <circle> 0036
-2466 CIRCLED DIGIT SEVEN
- # <circle> 0037
-2467 CIRCLED DIGIT EIGHT
- # <circle> 0038
-2468 CIRCLED DIGIT NINE
- # <circle> 0039
-2469 CIRCLED NUMBER TEN
- # <circle> 0031 0030
-246A CIRCLED NUMBER ELEVEN
- # <circle> 0031 0031
-246B CIRCLED NUMBER TWELVE
- # <circle> 0031 0032
-246C CIRCLED NUMBER THIRTEEN
- # <circle> 0031 0033
-246D CIRCLED NUMBER FOURTEEN
- # <circle> 0031 0034
-246E CIRCLED NUMBER FIFTEEN
- # <circle> 0031 0035
-246F CIRCLED NUMBER SIXTEEN
- # <circle> 0031 0036
-2470 CIRCLED NUMBER SEVENTEEN
- # <circle> 0031 0037
-2471 CIRCLED NUMBER EIGHTEEN
- # <circle> 0031 0038
-2472 CIRCLED NUMBER NINETEEN
- # <circle> 0031 0039
-2473 CIRCLED NUMBER TWENTY
- # <circle> 0032 0030
-@ Parenthesized numbers
-2474 PARENTHESIZED DIGIT ONE
- # 0028 0031 0029
-2475 PARENTHESIZED DIGIT TWO
- # 0028 0032 0029
-2476 PARENTHESIZED DIGIT THREE
- # 0028 0033 0029
-2477 PARENTHESIZED DIGIT FOUR
- # 0028 0034 0029
-2478 PARENTHESIZED DIGIT FIVE
- # 0028 0035 0029
-2479 PARENTHESIZED DIGIT SIX
- # 0028 0036 0029
-247A PARENTHESIZED DIGIT SEVEN
- # 0028 0037 0029
-247B PARENTHESIZED DIGIT EIGHT
- # 0028 0038 0029
-247C PARENTHESIZED DIGIT NINE
- # 0028 0039 0029
-247D PARENTHESIZED NUMBER TEN
- # 0028 0031 0030 0029
-247E PARENTHESIZED NUMBER ELEVEN
- # 0028 0031 0031 0029
-247F PARENTHESIZED NUMBER TWELVE
- # 0028 0031 0032 0029
-2480 PARENTHESIZED NUMBER THIRTEEN
- # 0028 0031 0033 0029
-2481 PARENTHESIZED NUMBER FOURTEEN
- # 0028 0031 0034 0029
-2482 PARENTHESIZED NUMBER FIFTEEN
- # 0028 0031 0035 0029
-2483 PARENTHESIZED NUMBER SIXTEEN
- # 0028 0031 0036 0029
-2484 PARENTHESIZED NUMBER SEVENTEEN
- # 0028 0031 0037 0029
-2485 PARENTHESIZED NUMBER EIGHTEEN
- # 0028 0031 0038 0029
-2486 PARENTHESIZED NUMBER NINETEEN
- # 0028 0031 0039 0029
-2487 PARENTHESIZED NUMBER TWENTY
- # 0028 0032 0030 0029
-@ Numbers period
-2488 DIGIT ONE FULL STOP
- # 0031 002E
-2489 DIGIT TWO FULL STOP
- # 0032 002E
-248A DIGIT THREE FULL STOP
- # 0033 002E
-248B DIGIT FOUR FULL STOP
- # 0034 002E
-248C DIGIT FIVE FULL STOP
- # 0035 002E
-248D DIGIT SIX FULL STOP
- # 0036 002E
-248E DIGIT SEVEN FULL STOP
- # 0037 002E
-248F DIGIT EIGHT FULL STOP
- # 0038 002E
-2490 DIGIT NINE FULL STOP
- # 0039 002E
-2491 NUMBER TEN FULL STOP
- # 0031 0030 002E
-2492 NUMBER ELEVEN FULL STOP
- # 0031 0031 002E
-2493 NUMBER TWELVE FULL STOP
- # 0031 0032 002E
-2494 NUMBER THIRTEEN FULL STOP
- # 0031 0033 002E
-2495 NUMBER FOURTEEN FULL STOP
- # 0031 0034 002E
-2496 NUMBER FIFTEEN FULL STOP
- # 0031 0035 002E
-2497 NUMBER SIXTEEN FULL STOP
- # 0031 0036 002E
-2498 NUMBER SEVENTEEN FULL STOP
- # 0031 0037 002E
-2499 NUMBER EIGHTEEN FULL STOP
- # 0031 0038 002E
-249A NUMBER NINETEEN FULL STOP
- # 0031 0039 002E
-249B NUMBER TWENTY FULL STOP
- # 0032 0030 002E
-@ Parenthesized Latin letters
-249C PARENTHESIZED LATIN SMALL LETTER A
- # 0028 0061 0029
-249D PARENTHESIZED LATIN SMALL LETTER B
- # 0028 0062 0029
-249E PARENTHESIZED LATIN SMALL LETTER C
- # 0028 0063 0029
-249F PARENTHESIZED LATIN SMALL LETTER D
- # 0028 0064 0029
-24A0 PARENTHESIZED LATIN SMALL LETTER E
- # 0028 0065 0029
-24A1 PARENTHESIZED LATIN SMALL LETTER F
- # 0028 0066 0029
-24A2 PARENTHESIZED LATIN SMALL LETTER G
- # 0028 0067 0029
-24A3 PARENTHESIZED LATIN SMALL LETTER H
- # 0028 0068 0029
-24A4 PARENTHESIZED LATIN SMALL LETTER I
- # 0028 0069 0029
-24A5 PARENTHESIZED LATIN SMALL LETTER J
- # 0028 006A 0029
-24A6 PARENTHESIZED LATIN SMALL LETTER K
- # 0028 006B 0029
-24A7 PARENTHESIZED LATIN SMALL LETTER L
- # 0028 006C 0029
-24A8 PARENTHESIZED LATIN SMALL LETTER M
- # 0028 006D 0029
-24A9 PARENTHESIZED LATIN SMALL LETTER N
- # 0028 006E 0029
-24AA PARENTHESIZED LATIN SMALL LETTER O
- # 0028 006F 0029
-24AB PARENTHESIZED LATIN SMALL LETTER P
- # 0028 0070 0029
-24AC PARENTHESIZED LATIN SMALL LETTER Q
- # 0028 0071 0029
-24AD PARENTHESIZED LATIN SMALL LETTER R
- # 0028 0072 0029
-24AE PARENTHESIZED LATIN SMALL LETTER S
- # 0028 0073 0029
-24AF PARENTHESIZED LATIN SMALL LETTER T
- # 0028 0074 0029
-24B0 PARENTHESIZED LATIN SMALL LETTER U
- # 0028 0075 0029
-24B1 PARENTHESIZED LATIN SMALL LETTER V
- # 0028 0076 0029
-24B2 PARENTHESIZED LATIN SMALL LETTER W
- # 0028 0077 0029
-24B3 PARENTHESIZED LATIN SMALL LETTER X
- # 0028 0078 0029
-24B4 PARENTHESIZED LATIN SMALL LETTER Y
- # 0028 0079 0029
-24B5 PARENTHESIZED LATIN SMALL LETTER Z
- # 0028 007A 0029
-@ Circled Latin letters
-24B6 CIRCLED LATIN CAPITAL LETTER A
- # <circle> 0041
-24B7 CIRCLED LATIN CAPITAL LETTER B
- # <circle> 0042
-24B8 CIRCLED LATIN CAPITAL LETTER C
- # <circle> 0043
-24B9 CIRCLED LATIN CAPITAL LETTER D
- # <circle> 0044
-24BA CIRCLED LATIN CAPITAL LETTER E
- # <circle> 0045
-24BB CIRCLED LATIN CAPITAL LETTER F
- # <circle> 0046
-24BC CIRCLED LATIN CAPITAL LETTER G
- # <circle> 0047
-24BD CIRCLED LATIN CAPITAL LETTER H
- # <circle> 0048
-24BE CIRCLED LATIN CAPITAL LETTER I
- # <circle> 0049
-24BF CIRCLED LATIN CAPITAL LETTER J
- # <circle> 004A
-24C0 CIRCLED LATIN CAPITAL LETTER K
- # <circle> 004B
-24C1 CIRCLED LATIN CAPITAL LETTER L
- # <circle> 004C
-24C2 CIRCLED LATIN CAPITAL LETTER M
- # <circle> 004D
-24C3 CIRCLED LATIN CAPITAL LETTER N
- # <circle> 004E
-24C4 CIRCLED LATIN CAPITAL LETTER O
- # <circle> 004F
-24C5 CIRCLED LATIN CAPITAL LETTER P
- # <circle> 0050
-24C6 CIRCLED LATIN CAPITAL LETTER Q
- # <circle> 0051
-24C7 CIRCLED LATIN CAPITAL LETTER R
- # <circle> 0052
-24C8 CIRCLED LATIN CAPITAL LETTER S
- # <circle> 0053
-24C9 CIRCLED LATIN CAPITAL LETTER T
- # <circle> 0054
-24CA CIRCLED LATIN CAPITAL LETTER U
- # <circle> 0055
-24CB CIRCLED LATIN CAPITAL LETTER V
- # <circle> 0056
-24CC CIRCLED LATIN CAPITAL LETTER W
- # <circle> 0057
-24CD CIRCLED LATIN CAPITAL LETTER X
- # <circle> 0058
-24CE CIRCLED LATIN CAPITAL LETTER Y
- # <circle> 0059
-24CF CIRCLED LATIN CAPITAL LETTER Z
- # <circle> 005A
-24D0 CIRCLED LATIN SMALL LETTER A
- # <circle> 0061
-24D1 CIRCLED LATIN SMALL LETTER B
- # <circle> 0062
-24D2 CIRCLED LATIN SMALL LETTER C
- # <circle> 0063
-24D3 CIRCLED LATIN SMALL LETTER D
- # <circle> 0064
-24D4 CIRCLED LATIN SMALL LETTER E
- # <circle> 0065
-24D5 CIRCLED LATIN SMALL LETTER F
- # <circle> 0066
-24D6 CIRCLED LATIN SMALL LETTER G
- # <circle> 0067
-24D7 CIRCLED LATIN SMALL LETTER H
- # <circle> 0068
-24D8 CIRCLED LATIN SMALL LETTER I
- # <circle> 0069
-24D9 CIRCLED LATIN SMALL LETTER J
- # <circle> 006A
-24DA CIRCLED LATIN SMALL LETTER K
- # <circle> 006B
-24DB CIRCLED LATIN SMALL LETTER L
- # <circle> 006C
-24DC CIRCLED LATIN SMALL LETTER M
- # <circle> 006D
-24DD CIRCLED LATIN SMALL LETTER N
- # <circle> 006E
-24DE CIRCLED LATIN SMALL LETTER O
- # <circle> 006F
-24DF CIRCLED LATIN SMALL LETTER P
- # <circle> 0070
-24E0 CIRCLED LATIN SMALL LETTER Q
- # <circle> 0071
-24E1 CIRCLED LATIN SMALL LETTER R
- # <circle> 0072
-24E2 CIRCLED LATIN SMALL LETTER S
- # <circle> 0073
-24E3 CIRCLED LATIN SMALL LETTER T
- # <circle> 0074
-24E4 CIRCLED LATIN SMALL LETTER U
- # <circle> 0075
-24E5 CIRCLED LATIN SMALL LETTER V
- # <circle> 0076
-24E6 CIRCLED LATIN SMALL LETTER W
- # <circle> 0077
-24E7 CIRCLED LATIN SMALL LETTER X
- # <circle> 0078
-24E8 CIRCLED LATIN SMALL LETTER Y
- # <circle> 0079
-24E9 CIRCLED LATIN SMALL LETTER Z
- # <circle> 007A
-@ Additional circled numbers
-24EA CIRCLED DIGIT ZERO
- # <circle> 0030
-@@ 2500 Box Drawing 257F
-@ Form and chart components
-2500 BOX DRAWINGS LIGHT HORIZONTAL
- = Videotex Mosaic DG 15
-2501 BOX DRAWINGS HEAVY HORIZONTAL
-2502 BOX DRAWINGS LIGHT VERTICAL
- = Videotex Mosaic DG 14
-2503 BOX DRAWINGS HEAVY VERTICAL
-2504 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
-2505 BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
-2506 BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
-2507 BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
-2508 BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
-2509 BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
-250A BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
-250B BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
-250C BOX DRAWINGS LIGHT DOWN AND RIGHT
- = Videotex Mosaic DG 16
-250D BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
-250E BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
-250F BOX DRAWINGS HEAVY DOWN AND RIGHT
-2510 BOX DRAWINGS LIGHT DOWN AND LEFT
- = Videotex Mosaic DG 17
-2511 BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
-2512 BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
-2513 BOX DRAWINGS HEAVY DOWN AND LEFT
-2514 BOX DRAWINGS LIGHT UP AND RIGHT
- = Videotex Mosaic DG 18
-2515 BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
-2516 BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
-2517 BOX DRAWINGS HEAVY UP AND RIGHT
-2518 BOX DRAWINGS LIGHT UP AND LEFT
- = Videotex Mosaic DG 19
-2519 BOX DRAWINGS UP LIGHT AND LEFT HEAVY
-251A BOX DRAWINGS UP HEAVY AND LEFT LIGHT
-251B BOX DRAWINGS HEAVY UP AND LEFT
-251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT
- = Videotex Mosaic DG 20
-251D BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
- = Videotex Mosaic DG 03
-251E BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
-251F BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
-2520 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
-2521 BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
-2522 BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
-2523 BOX DRAWINGS HEAVY VERTICAL AND RIGHT
-2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT
- = Videotex Mosaic DG 21
-2525 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
- = Videotex Mosaic DG 04
-2526 BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
-2527 BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
-2528 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
-2529 BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
-252A BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
-252B BOX DRAWINGS HEAVY VERTICAL AND LEFT
-252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
- = Videotex Mosaic DG 22
-252D BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
-252E BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
-252F BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
- = Videotex Mosaic DG 02
-2530 BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
-2531 BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
-2532 BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
-2533 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
-2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL
- = Videotex Mosaic DG 23
-2535 BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
-2536 BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
-2537 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
- = Videotex Mosaic DG 01
-2538 BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
-2539 BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
-253A BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
-253B BOX DRAWINGS HEAVY UP AND HORIZONTAL
-253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
- = Videotex Mosaic DG 24
-253D BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
-253E BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
-253F BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
- = Videotex Mosaic DG 13
-2540 BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
-2541 BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
-2542 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
-2543 BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
-2544 BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
-2545 BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
-2546 BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
-2547 BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
-2548 BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
-2549 BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
-254A BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
-254B BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
-254C BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
-254D BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
-254E BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
-254F BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
-2550 BOX DRAWINGS DOUBLE HORIZONTAL
-2551 BOX DRAWINGS DOUBLE VERTICAL
-2552 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-2553 BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-2554 BOX DRAWINGS DOUBLE DOWN AND RIGHT
-2555 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-2556 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-2557 BOX DRAWINGS DOUBLE DOWN AND LEFT
-2558 BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-2559 BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-255A BOX DRAWINGS DOUBLE UP AND RIGHT
-255B BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-255C BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-255D BOX DRAWINGS DOUBLE UP AND LEFT
-255E BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-255F BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-2560 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-2561 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-2562 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-2563 BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-2564 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-2565 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-2566 BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-2567 BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-2568 BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-256A BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-256B BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-256C BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-256D BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
-256E BOX DRAWINGS LIGHT ARC DOWN AND LEFT
-256F BOX DRAWINGS LIGHT ARC UP AND LEFT
-2570 BOX DRAWINGS LIGHT ARC UP AND RIGHT
-2571 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
-2572 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
-2573 BOX DRAWINGS LIGHT DIAGONAL CROSS
-2574 BOX DRAWINGS LIGHT LEFT
-2575 BOX DRAWINGS LIGHT UP
-2576 BOX DRAWINGS LIGHT RIGHT
-2577 BOX DRAWINGS LIGHT DOWN
-2578 BOX DRAWINGS HEAVY LEFT
-2579 BOX DRAWINGS HEAVY UP
-257A BOX DRAWINGS HEAVY RIGHT
-257B BOX DRAWINGS HEAVY DOWN
-257C BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
-257D BOX DRAWINGS LIGHT UP AND HEAVY DOWN
-257E BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
-257F BOX DRAWINGS HEAVY UP AND LIGHT DOWN
-@@ 2580 Block Elements 259F
-@ Block elements
-2580 UPPER HALF BLOCK
-2581 LOWER ONE EIGHTH BLOCK
-2582 LOWER ONE QUARTER BLOCK
-2583 LOWER THREE EIGHTHS BLOCK
-2584 LOWER HALF BLOCK
-2585 LOWER FIVE EIGHTHS BLOCK
-2586 LOWER THREE QUARTERS BLOCK
-2587 LOWER SEVEN EIGHTHS BLOCK
-2588 FULL BLOCK
- = solid
- x (black square - 25A0)
-2589 LEFT SEVEN EIGHTHS BLOCK
-258A LEFT THREE QUARTERS BLOCK
-258B LEFT FIVE EIGHTHS BLOCK
-258C LEFT HALF BLOCK
-258D LEFT THREE EIGHTHS BLOCK
-258E LEFT ONE QUARTER BLOCK
-258F LEFT ONE EIGHTH BLOCK
-2590 RIGHT HALF BLOCK
-@ Shade characters
-2591 LIGHT SHADE
- * 25%
-2592 MEDIUM SHADE
- * 50%
-2593 DARK SHADE
- * 75%
-@ Block elements
-2594 UPPER ONE EIGHTH BLOCK
-2595 RIGHT ONE EIGHTH BLOCK
-@@ 25A0 Geometric Shapes 25FF
-@ Geometric shapes
-25A0 BLACK SQUARE
- x (full block - 2588)
-25A1 WHITE SQUARE
- = quadrature
- x (combining enclosing square - 20DE)
- x (ballot box - 2610)
-25A2 WHITE SQUARE WITH ROUNDED CORNERS
-25A3 WHITE SQUARE CONTAINING BLACK SMALL SQUARE
-25A4 SQUARE WITH HORIZONTAL FILL
-25A5 SQUARE WITH VERTICAL FILL
-25A6 SQUARE WITH ORTHOGONAL CROSSHATCH FILL
-25A7 SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
-25A8 SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
-25A9 SQUARE WITH DIAGONAL CROSSHATCH FILL
-25AA BLACK SMALL SQUARE
-25AB WHITE SMALL SQUARE
-25AC BLACK RECTANGLE
-25AD WHITE RECTANGLE
-25AE BLACK VERTICAL RECTANGLE
- = histogram marker
- x (end of proof - 220E)
-25AF WHITE VERTICAL RECTANGLE
- x (apl functional symbol squish quad - 2337)
- x (apl functional symbol quad - 2395)
-25B0 BLACK PARALLELOGRAM
-25B1 WHITE PARALLELOGRAM
-25B2 BLACK UP-POINTING TRIANGLE
-25B3 WHITE UP-POINTING TRIANGLE
- = trine
- x (increment - 2206)
-25B4 BLACK UP-POINTING SMALL TRIANGLE
-25B5 WHITE UP-POINTING SMALL TRIANGLE
-25B6 BLACK RIGHT-POINTING TRIANGLE
-25B7 WHITE RIGHT-POINTING TRIANGLE
- = z notation range restriction
-25B8 BLACK RIGHT-POINTING SMALL TRIANGLE
- x (triangular bullet - 2023)
-25B9 WHITE RIGHT-POINTING SMALL TRIANGLE
-25BA BLACK RIGHT-POINTING POINTER
-25BB WHITE RIGHT-POINTING POINTER
- = forward arrow indicator
- x (contains as normal subgroup - 22B3)
-25BC BLACK DOWN-POINTING TRIANGLE
-25BD WHITE DOWN-POINTING TRIANGLE
- x (nabla - 2207)
-25BE BLACK DOWN-POINTING SMALL TRIANGLE
-25BF WHITE DOWN-POINTING SMALL TRIANGLE
-25C0 BLACK LEFT-POINTING TRIANGLE
-25C1 WHITE LEFT-POINTING TRIANGLE
- = z notation domain restriction
-25C2 BLACK LEFT-POINTING SMALL TRIANGLE
-25C3 WHITE LEFT-POINTING SMALL TRIANGLE
-25C4 BLACK LEFT-POINTING POINTER
-25C5 WHITE LEFT-POINTING POINTER
- = backward arrow indicator
- x (normal subgroup of - 22B2)
-25C6 BLACK DIAMOND
- x (black diamond suit - 2666)
-25C7 WHITE DIAMOND
- x (combining enclosing diamond - 20DF)
- x (diamond operator - 22C4)
- x (white diamond suit - 2662)
-25C8 WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
-25C9 FISHEYE
- = tainome (Japanese, a kind of bullet)
-25CA LOZENGE
- x (white diamond suit - 2662)
-25CB WHITE CIRCLE
- x (combining enclosing circle - 20DD)
- x (large circle - 25EF)
- x (ideographic number zero - 3007)
-25CC DOTTED CIRCLE
-25CD CIRCLE WITH VERTICAL FILL
-25CE BULLSEYE
- x (circled ring operator - 229A)
-25CF BLACK CIRCLE
-25D0 CIRCLE WITH LEFT HALF BLACK
-25D1 CIRCLE WITH RIGHT HALF BLACK
-25D2 CIRCLE WITH LOWER HALF BLACK
-25D3 CIRCLE WITH UPPER HALF BLACK
-25D4 CIRCLE WITH UPPER RIGHT QUADRANT BLACK
-25D5 CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
-25D6 LEFT HALF BLACK CIRCLE
-25D7 RIGHT HALF BLACK CIRCLE
-25D8 INVERSE BULLET
- x (bullet - 2022)
- x (white bullet - 25E6)
-25D9 INVERSE WHITE CIRCLE
-25DA UPPER HALF INVERSE WHITE CIRCLE
-25DB LOWER HALF INVERSE WHITE CIRCLE
-25DC UPPER LEFT QUADRANT CIRCULAR ARC
-25DD UPPER RIGHT QUADRANT CIRCULAR ARC
-25DE LOWER RIGHT QUADRANT CIRCULAR ARC
-25DF LOWER LEFT QUADRANT CIRCULAR ARC
-25E0 UPPER HALF CIRCLE
- x (arc - 2312)
-25E1 LOWER HALF CIRCLE
-25E2 BLACK LOWER RIGHT TRIANGLE
-25E3 BLACK LOWER LEFT TRIANGLE
-25E4 BLACK UPPER LEFT TRIANGLE
-25E5 BLACK UPPER RIGHT TRIANGLE
-25E6 WHITE BULLET
- x (bullet - 2022)
- x (ring operator - 2218)
- x (inverse bullet - 25D8)
-25E7 SQUARE WITH LEFT HALF BLACK
-25E8 SQUARE WITH RIGHT HALF BLACK
-25E9 SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
-25EA SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
-25EB WHITE SQUARE WITH VERTICAL BISECTING LINE
-25EC WHITE UP-POINTING TRIANGLE WITH DOT
-25ED UP-POINTING TRIANGLE WITH LEFT HALF BLACK
-25EE UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
-25EF LARGE CIRCLE
- x (combining enclosing circle - 20DD)
- x (white circle - 25CB)
- x (ideographic number zero - 3007)
-@ Control code graphics
-25F0 WHITE SQUARE WITH UPPER LEFT QUADRANT
-25F1 WHITE SQUARE WITH LOWER LEFT QUADRANT
-25F2 WHITE SQUARE WITH LOWER RIGHT QUADRANT
-25F3 WHITE SQUARE WITH UPPER RIGHT QUADRANT
-25F4 WHITE CIRCLE WITH UPPER LEFT QUADRANT
-25F5 WHITE CIRCLE WITH LOWER LEFT QUADRANT
-25F6 WHITE CIRCLE WITH LOWER RIGHT QUADRANT
-25F7 WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-@@ 2600 Miscellaneous Symbols 26FF
-@ Weather and astrological symbols
-2600 BLACK SUN WITH RAYS
- = clear weather
- x (sun - 2609)
-2601 CLOUD
- = cloudy weather
-2602 UMBRELLA
- = rainy weather
-2603 SNOWMAN
- = snowy weather
-2604 COMET
-2605 BLACK STAR
- x (star operator - 22C6)
-2606 WHITE STAR
- x (stress outlined white star - 2729)
-2607 LIGHTNING
-2608 THUNDERSTORM
-2609 SUN
- x (circled dot operator - 2299)
- x (black sun with rays - 2600)
- x (white sun with rays - 263C)
-260A ASCENDING NODE
-260B DESCENDING NODE
-260C CONJUNCTION
-260D OPPOSITION
-@ Miscellaneous symbols
-260E BLACK TELEPHONE
-260F WHITE TELEPHONE
-2610 BALLOT BOX
- x (white square - 25A1)
-2611 BALLOT BOX WITH CHECK
-2612 BALLOT BOX WITH X
- x (squared times - 22A0)
-2613 SALTIRE
- = St. Andrew's Cross
- x (ballot x - 2717)
-2619 REVERSED ROTATED FLORAL HEART BULLET
- * a binding signature mark
- x (rotated floral heart bullet - 2767)
-@ Pointing hand symbols
-261A BLACK LEFT POINTING INDEX
-261B BLACK RIGHT POINTING INDEX
-261C WHITE LEFT POINTING INDEX
-261D WHITE UP POINTING INDEX
-261E WHITE RIGHT POINTING INDEX
- = fist (typographic term)
-261F WHITE DOWN POINTING INDEX
-@ Warning signs
-2620 SKULL AND CROSSBONES
- = poison
-2621 CAUTION SIGN
-2622 RADIOACTIVE SIGN
-2623 BIOHAZARD SIGN
-@ Medical and healing symbols
-2624 CADUCEUS
-2625 ANKH
-@ Religious and political symbols
-2626 ORTHODOX CROSS
-2627 CHI RHO
-2628 CROSS OF LORRAINE
-2629 CROSS OF JERUSALEM
-262A STAR AND CRESCENT
-262B FARSI SYMBOL
- = SYMBOL OF IRAN
-262C ADI SHAKTI
-262D HAMMER AND SICKLE
-262E PEACE SYMBOL
-262F YIN YANG
- x (tibetan symbol nor bu nyis -khyil - 0FCA)
-@ Yijing trigram symbols
-2630 TRIGRAM FOR HEAVEN
- = qian2
-2631 TRIGRAM FOR LAKE
- = dui4
-2632 TRIGRAM FOR FIRE
- = li2
-2633 TRIGRAM FOR THUNDER
- = zhen4
-2634 TRIGRAM FOR WIND
- = xun4
-2635 TRIGRAM FOR WATER
- = kan3
-2636 TRIGRAM FOR MOUNTAIN
- = gen4
-2637 TRIGRAM FOR EARTH
- = kun1
-@ Miscellaneous symbols
-2638 WHEEL OF DHARMA
- x (helm symbol - 2388)
-2639 WHITE FROWNING FACE
-263A WHITE SMILING FACE
- = have a nice day!
-263B BLACK SMILING FACE
-263C WHITE SUN WITH RAYS
- = compass
- x (sun - 2609)
-@ Astrological symbols
-263D FIRST QUARTER MOON
-263E LAST QUARTER MOON
-263F MERCURY
-2640 FEMALE SIGN
- = Venus
-2641 EARTH
- x (circled plus - 2295)
-2642 MALE SIGN
- = Mars
-2643 JUPITER
-2644 SATURN
-2645 URANUS
-2646 NEPTUNE
-2647 PLUTO
-@ Zodiacal symbols
-2648 ARIES
-2649 TAURUS
-264A GEMINI
-264B CANCER
-264C LEO
-264D VIRGO
- = minim (alternate glyph)
-264E LIBRA
-264F SCORPIUS
- = minim, drop
-2650 SAGITTARIUS
-2651 CAPRICORN
-2652 AQUARIUS
-2653 PISCES
-@ Chess symbols
-2654 WHITE CHESS KING
-2655 WHITE CHESS QUEEN
-2656 WHITE CHESS ROOK
-2657 WHITE CHESS BISHOP
-2658 WHITE CHESS KNIGHT
-2659 WHITE CHESS PAWN
-265A BLACK CHESS KING
-265B BLACK CHESS QUEEN
-265C BLACK CHESS ROOK
-265D BLACK CHESS BISHOP
-265E BLACK CHESS KNIGHT
-265F BLACK CHESS PAWN
-@ Playing card symbols
-2660 BLACK SPADE SUIT
-2661 WHITE HEART SUIT
-2662 WHITE DIAMOND SUIT
- x (white diamond - 25C7)
- x (lozenge - 25CA)
-2663 BLACK CLUB SUIT
- = shamrock
-2664 WHITE SPADE SUIT
-2665 BLACK HEART SUIT
- = valentine
- x (heavy black heart - 2764)
-2666 BLACK DIAMOND SUIT
- x (black diamond - 25C6)
-2667 WHITE CLUB SUIT
-@ Miscellaneous symbol
-2668 HOT SPRINGS
-@ Musical symbols
-2669 QUARTER NOTE
-266A EIGHTH NOTE
-266B BEAMED EIGHTH NOTES
-266C BEAMED SIXTEENTH NOTES
-266D MUSIC FLAT SIGN
-266E MUSIC NATURAL SIGN
-266F MUSIC SHARP SIGN
- = z notation infix bag count
-@ Syriac cross symbols
-@+ These symbols are used in liturgical texts of Syriac-speaking churches.
-2670 WEST SYRIAC CROSS
-2671 EAST SYRIAC CROSS
-@@ 2700 Dingbats 27BF
-@+ ITC Zapf dingbats series 100
-@ Miscellaneous
-2701 UPPER BLADE SCISSORS
-2702 BLACK SCISSORS
-2703 LOWER BLADE SCISSORS
-2704 WHITE SCISSORS
-2705 <reserved>
- x (black telephone - 260E)
-2706 TELEPHONE LOCATION SIGN
-2707 TAPE DRIVE
-2708 AIRPLANE
-2709 ENVELOPE
-270A <reserved>
- x (black right pointing index - 261B)
-270B <reserved>
- x (white right pointing index - 261E)
-270C VICTORY HAND
-270D WRITING HAND
-270E LOWER RIGHT PENCIL
-270F PENCIL
-2710 UPPER RIGHT PENCIL
-2711 WHITE NIB
-2712 BLACK NIB
-2713 CHECK MARK
- x (square root - 221A)
-2714 HEAVY CHECK MARK
-2715 MULTIPLICATION X
- x (multiplication sign - 00D7)
- x (box drawings light diagonal cross - 2573)
-2716 HEAVY MULTIPLICATION X
-2717 BALLOT X
- x (saltire - 2613)
-2718 HEAVY BALLOT X
-@ Crosses
-2719 OUTLINED GREEK CROSS
-271A HEAVY GREEK CROSS
-271B OPEN CENTRE CROSS
-271C HEAVY OPEN CENTRE CROSS
-271D LATIN CROSS
-271E SHADOWED WHITE LATIN CROSS
-271F OUTLINED LATIN CROSS
-2720 MALTESE CROSS
-@ Stars, asterisks and snowflakes
-2721 STAR OF DAVID
-2722 FOUR TEARDROP-SPOKED ASTERISK
-2723 FOUR BALLOON-SPOKED ASTERISK
-2724 HEAVY FOUR BALLOON-SPOKED ASTERISK
-2725 FOUR CLUB-SPOKED ASTERISK
-2726 BLACK FOUR POINTED STAR
-2727 WHITE FOUR POINTED STAR
-2728 <reserved>
- x (black star - 2605)
-2729 STRESS OUTLINED WHITE STAR
- x (white star - 2606)
-272A CIRCLED WHITE STAR
-272B OPEN CENTRE BLACK STAR
-272C BLACK CENTRE WHITE STAR
-272D OUTLINED BLACK STAR
-272E HEAVY OUTLINED BLACK STAR
-272F PINWHEEL STAR
-2730 SHADOWED WHITE STAR
-2731 HEAVY ASTERISK
- x (asterisk - 002A)
-2732 OPEN CENTRE ASTERISK
-2733 EIGHT SPOKED ASTERISK
-2734 EIGHT POINTED BLACK STAR
-2735 EIGHT POINTED PINWHEEL STAR
-2736 SIX POINTED BLACK STAR
- = sextile
-2737 EIGHT POINTED RECTILINEAR BLACK STAR
-2738 HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
-2739 TWELVE POINTED BLACK STAR
-273A SIXTEEN POINTED ASTERISK
- = starburst
-273B TEARDROP-SPOKED ASTERISK
-273C OPEN CENTRE TEARDROP-SPOKED ASTERISK
-273D HEAVY TEARDROP-SPOKED ASTERISK
-273E SIX PETALLED BLACK AND WHITE FLORETTE
-273F BLACK FLORETTE
-2740 WHITE FLORETTE
-2741 EIGHT PETALLED OUTLINED BLACK FLORETTE
-2742 CIRCLED OPEN CENTRE EIGHT POINTED STAR
-2743 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
-2744 SNOWFLAKE
-2745 TIGHT TRIFOLIATE SNOWFLAKE
-2746 HEAVY CHEVRON SNOWFLAKE
-2747 SPARKLE
-2748 HEAVY SPARKLE
-2749 BALLOON-SPOKED ASTERISK
- = jack
-274A EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274B HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
- = turbofan
-@ Miscellaneous
-274C <reserved>
- x (black circle - 25CF)
-274D SHADOWED WHITE CIRCLE
-274E <reserved>
- x (black square - 25A0)
-274F LOWER RIGHT DROP-SHADOWED WHITE SQUARE
-2750 UPPER RIGHT DROP-SHADOWED WHITE SQUARE
-2751 LOWER RIGHT SHADOWED WHITE SQUARE
-2752 UPPER RIGHT SHADOWED WHITE SQUARE
-2753 <reserved>
- x (black up-pointing triangle - 25B2)
-2754 <reserved>
- x (black down-pointing triangle - 25BC)
-2755 <reserved>
- x (black diamond - 25C6)
-2756 BLACK DIAMOND MINUS WHITE X
-2757 <reserved>
- x (right half black circle - 25D7)
-2758 LIGHT VERTICAL BAR
- x (vertical line - 007C)
-2759 MEDIUM VERTICAL BAR
-275A HEAVY VERTICAL BAR
-@ Punctuation ornaments
-275B HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
- x (left single quotation mark - 2018)
-275C HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
- x (right single quotation mark - 2019)
-275D HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
- x (left double quotation mark - 201C)
-275E HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
- x (right double quotation mark - 201D)
-2761 CURVED STEM PARAGRAPH SIGN ORNAMENT
- x (pilcrow sign - 00B6)
-2762 HEAVY EXCLAMATION MARK ORNAMENT
- x (exclamation mark - 0021)
-2763 HEAVY HEART EXCLAMATION MARK ORNAMENT
-2764 HEAVY BLACK HEART
- x (black heart suit - 2665)
-2765 ROTATED HEAVY BLACK HEART BULLET
-2766 FLORAL HEART
- = Aldus leaf
-2767 ROTATED FLORAL HEART BULLET
- = hedera, ivy leaf
- x (reversed rotated floral heart bullet - 2619)
-2768 <reserved>
- x (black club suit - 2663)
-2769 <reserved>
- x (black diamond suit - 2666)
-276A <reserved>
- x (black heart suit - 2665)
-276B <reserved>
- x (black spade suit - 2660)
-@ Dingbat circled digits
-276C <reserved>
- x (circled digit one - 2460)
-276D <reserved>
- x (circled digit two - 2461)
-276E <reserved>
- x (circled digit three - 2462)
-276F <reserved>
- x (circled digit four - 2463)
-2770 <reserved>
- x (circled digit five - 2464)
-2771 <reserved>
- x (circled digit six - 2465)
-2772 <reserved>
- x (circled digit seven - 2466)
-2773 <reserved>
- x (circled digit eight - 2467)
-2774 <reserved>
- x (circled digit nine - 2468)
-2775 <reserved>
- x (circled number ten - 2469)
-2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE
-2777 DINGBAT NEGATIVE CIRCLED DIGIT TWO
-2778 DINGBAT NEGATIVE CIRCLED DIGIT THREE
-2779 DINGBAT NEGATIVE CIRCLED DIGIT FOUR
-277A DINGBAT NEGATIVE CIRCLED DIGIT FIVE
-277B DINGBAT NEGATIVE CIRCLED DIGIT SIX
-277C DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
-277D DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
-277E DINGBAT NEGATIVE CIRCLED DIGIT NINE
-277F DINGBAT NEGATIVE CIRCLED NUMBER TEN
-2780 DINGBAT CIRCLED SANS-SERIF DIGIT ONE
-2781 DINGBAT CIRCLED SANS-SERIF DIGIT TWO
-2782 DINGBAT CIRCLED SANS-SERIF DIGIT THREE
-2783 DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
-2784 DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
-2785 DINGBAT CIRCLED SANS-SERIF DIGIT SIX
-2786 DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
-2787 DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
-2788 DINGBAT CIRCLED SANS-SERIF DIGIT NINE
-2789 DINGBAT CIRCLED SANS-SERIF NUMBER TEN
-278A DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
-278B DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
-278C DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
-278D DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
-278E DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
-278F DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
-2790 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
-2791 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
-2792 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
-2793 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
-@ Dingbat arrows
-2794 HEAVY WIDE-HEADED RIGHTWARDS ARROW
-2795 <reserved>
- x (rightwards arrow - 2192)
-2796 <reserved>
- x (left right arrow - 2194)
-2797 <reserved>
- x (up down arrow - 2195)
-2798 HEAVY SOUTH EAST ARROW
-2799 HEAVY RIGHTWARDS ARROW
-279A HEAVY NORTH EAST ARROW
-279B DRAFTING POINT RIGHTWARDS ARROW
-279C HEAVY ROUND-TIPPED RIGHTWARDS ARROW
-279D TRIANGLE-HEADED RIGHTWARDS ARROW
-279E HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
-279F DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-27A0 HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-27A1 BLACK RIGHTWARDS ARROW
-27A2 THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
-27A3 THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
-27A4 BLACK RIGHTWARDS ARROWHEAD
-27A5 HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
-27A6 HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
-27A7 SQUAT BLACK RIGHTWARDS ARROW
-27A8 HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
-27A9 RIGHT-SHADED WHITE RIGHTWARDS ARROW
-27AA LEFT-SHADED WHITE RIGHTWARDS ARROW
-27AB BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-27AC FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-27AD HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27AE HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27AF NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW
-27B3 WHITE-FEATHERED RIGHTWARDS ARROW
-27B4 BLACK-FEATHERED SOUTH EAST ARROW
-27B5 BLACK-FEATHERED RIGHTWARDS ARROW
-27B6 BLACK-FEATHERED NORTH EAST ARROW
-27B7 HEAVY BLACK-FEATHERED SOUTH EAST ARROW
-27B8 HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
-27B9 HEAVY BLACK-FEATHERED NORTH EAST ARROW
-27BA TEARDROP-BARBED RIGHTWARDS ARROW
-27BB HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
-27BC WEDGE-TAILED RIGHTWARDS ARROW
-27BD HEAVY WEDGE-TAILED RIGHTWARDS ARROW
-27BE OPEN-OUTLINED RIGHTWARDS ARROW
-@@ 2800 Braille Patterns 28FF
-@ Braille patterns
-2800 BRAILLE PATTERN BLANK
-2801 BRAILLE PATTERN DOTS-1
-2802 BRAILLE PATTERN DOTS-2
-2803 BRAILLE PATTERN DOTS-12
-2804 BRAILLE PATTERN DOTS-3
-2805 BRAILLE PATTERN DOTS-13
-2806 BRAILLE PATTERN DOTS-23
-2807 BRAILLE PATTERN DOTS-123
-2808 BRAILLE PATTERN DOTS-4
-2809 BRAILLE PATTERN DOTS-14
-280A BRAILLE PATTERN DOTS-24
-280B BRAILLE PATTERN DOTS-124
-280C BRAILLE PATTERN DOTS-34
-280D BRAILLE PATTERN DOTS-134
-280E BRAILLE PATTERN DOTS-234
-280F BRAILLE PATTERN DOTS-1234
-2810 BRAILLE PATTERN DOTS-5
-2811 BRAILLE PATTERN DOTS-15
-2812 BRAILLE PATTERN DOTS-25
-2813 BRAILLE PATTERN DOTS-125
-2814 BRAILLE PATTERN DOTS-35
-2815 BRAILLE PATTERN DOTS-135
-2816 BRAILLE PATTERN DOTS-235
-2817 BRAILLE PATTERN DOTS-1235
-2818 BRAILLE PATTERN DOTS-45
-2819 BRAILLE PATTERN DOTS-145
-281A BRAILLE PATTERN DOTS-245
-281B BRAILLE PATTERN DOTS-1245
-281C BRAILLE PATTERN DOTS-345
-281D BRAILLE PATTERN DOTS-1345
-281E BRAILLE PATTERN DOTS-2345
-281F BRAILLE PATTERN DOTS-12345
-2820 BRAILLE PATTERN DOTS-6
-2821 BRAILLE PATTERN DOTS-16
-2822 BRAILLE PATTERN DOTS-26
-2823 BRAILLE PATTERN DOTS-126
-2824 BRAILLE PATTERN DOTS-36
-2825 BRAILLE PATTERN DOTS-136
-2826 BRAILLE PATTERN DOTS-236
-2827 BRAILLE PATTERN DOTS-1236
-2828 BRAILLE PATTERN DOTS-46
-2829 BRAILLE PATTERN DOTS-146
-282A BRAILLE PATTERN DOTS-246
-282B BRAILLE PATTERN DOTS-1246
-282C BRAILLE PATTERN DOTS-346
-282D BRAILLE PATTERN DOTS-1346
-282E BRAILLE PATTERN DOTS-2346
-282F BRAILLE PATTERN DOTS-12346
-2830 BRAILLE PATTERN DOTS-56
-2831 BRAILLE PATTERN DOTS-156
-2832 BRAILLE PATTERN DOTS-256
-2833 BRAILLE PATTERN DOTS-1256
-2834 BRAILLE PATTERN DOTS-356
-2835 BRAILLE PATTERN DOTS-1356
-2836 BRAILLE PATTERN DOTS-2356
-2837 BRAILLE PATTERN DOTS-12356
-2838 BRAILLE PATTERN DOTS-456
-2839 BRAILLE PATTERN DOTS-1456
-283A BRAILLE PATTERN DOTS-2456
-283B BRAILLE PATTERN DOTS-12456
-283C BRAILLE PATTERN DOTS-3456
-283D BRAILLE PATTERN DOTS-13456
-283E BRAILLE PATTERN DOTS-23456
-283F BRAILLE PATTERN DOTS-123456
-2840 BRAILLE PATTERN DOTS-7
-2841 BRAILLE PATTERN DOTS-17
-2842 BRAILLE PATTERN DOTS-27
-2843 BRAILLE PATTERN DOTS-127
-2844 BRAILLE PATTERN DOTS-37
-2845 BRAILLE PATTERN DOTS-137
-2846 BRAILLE PATTERN DOTS-237
-2847 BRAILLE PATTERN DOTS-1237
-2848 BRAILLE PATTERN DOTS-47
-2849 BRAILLE PATTERN DOTS-147
-284A BRAILLE PATTERN DOTS-247
-284B BRAILLE PATTERN DOTS-1247
-284C BRAILLE PATTERN DOTS-347
-284D BRAILLE PATTERN DOTS-1347
-284E BRAILLE PATTERN DOTS-2347
-284F BRAILLE PATTERN DOTS-12347
-2850 BRAILLE PATTERN DOTS-57
-2851 BRAILLE PATTERN DOTS-157
-2852 BRAILLE PATTERN DOTS-257
-2853 BRAILLE PATTERN DOTS-1257
-2854 BRAILLE PATTERN DOTS-357
-2855 BRAILLE PATTERN DOTS-1357
-2856 BRAILLE PATTERN DOTS-2357
-2857 BRAILLE PATTERN DOTS-12357
-2858 BRAILLE PATTERN DOTS-457
-2859 BRAILLE PATTERN DOTS-1457
-285A BRAILLE PATTERN DOTS-2457
-285B BRAILLE PATTERN DOTS-12457
-285C BRAILLE PATTERN DOTS-3457
-285D BRAILLE PATTERN DOTS-13457
-285E BRAILLE PATTERN DOTS-23457
-285F BRAILLE PATTERN DOTS-123457
-2860 BRAILLE PATTERN DOTS-67
-2861 BRAILLE PATTERN DOTS-167
-2862 BRAILLE PATTERN DOTS-267
-2863 BRAILLE PATTERN DOTS-1267
-2864 BRAILLE PATTERN DOTS-367
-2865 BRAILLE PATTERN DOTS-1367
-2866 BRAILLE PATTERN DOTS-2367
-2867 BRAILLE PATTERN DOTS-12367
-2868 BRAILLE PATTERN DOTS-467
-2869 BRAILLE PATTERN DOTS-1467
-286A BRAILLE PATTERN DOTS-2467
-286B BRAILLE PATTERN DOTS-12467
-286C BRAILLE PATTERN DOTS-3467
-286D BRAILLE PATTERN DOTS-13467
-286E BRAILLE PATTERN DOTS-23467
-286F BRAILLE PATTERN DOTS-123467
-2870 BRAILLE PATTERN DOTS-567
-2871 BRAILLE PATTERN DOTS-1567
-2872 BRAILLE PATTERN DOTS-2567
-2873 BRAILLE PATTERN DOTS-12567
-2874 BRAILLE PATTERN DOTS-3567
-2875 BRAILLE PATTERN DOTS-13567
-2876 BRAILLE PATTERN DOTS-23567
-2877 BRAILLE PATTERN DOTS-123567
-2878 BRAILLE PATTERN DOTS-4567
-2879 BRAILLE PATTERN DOTS-14567
-287A BRAILLE PATTERN DOTS-24567
-287B BRAILLE PATTERN DOTS-124567
-287C BRAILLE PATTERN DOTS-34567
-287D BRAILLE PATTERN DOTS-134567
-287E BRAILLE PATTERN DOTS-234567
-287F BRAILLE PATTERN DOTS-1234567
-2880 BRAILLE PATTERN DOTS-8
-2881 BRAILLE PATTERN DOTS-18
-2882 BRAILLE PATTERN DOTS-28
-2883 BRAILLE PATTERN DOTS-128
-2884 BRAILLE PATTERN DOTS-38
-2885 BRAILLE PATTERN DOTS-138
-2886 BRAILLE PATTERN DOTS-238
-2887 BRAILLE PATTERN DOTS-1238
-2888 BRAILLE PATTERN DOTS-48
-2889 BRAILLE PATTERN DOTS-148
-288A BRAILLE PATTERN DOTS-248
-288B BRAILLE PATTERN DOTS-1248
-288C BRAILLE PATTERN DOTS-348
-288D BRAILLE PATTERN DOTS-1348
-288E BRAILLE PATTERN DOTS-2348
-288F BRAILLE PATTERN DOTS-12348
-2890 BRAILLE PATTERN DOTS-58
-2891 BRAILLE PATTERN DOTS-158
-2892 BRAILLE PATTERN DOTS-258
-2893 BRAILLE PATTERN DOTS-1258
-2894 BRAILLE PATTERN DOTS-358
-2895 BRAILLE PATTERN DOTS-1358
-2896 BRAILLE PATTERN DOTS-2358
-2897 BRAILLE PATTERN DOTS-12358
-2898 BRAILLE PATTERN DOTS-458
-2899 BRAILLE PATTERN DOTS-1458
-289A BRAILLE PATTERN DOTS-2458
-289B BRAILLE PATTERN DOTS-12458
-289C BRAILLE PATTERN DOTS-3458
-289D BRAILLE PATTERN DOTS-13458
-289E BRAILLE PATTERN DOTS-23458
-289F BRAILLE PATTERN DOTS-123458
-28A0 BRAILLE PATTERN DOTS-68
-28A1 BRAILLE PATTERN DOTS-168
-28A2 BRAILLE PATTERN DOTS-268
-28A3 BRAILLE PATTERN DOTS-1268
-28A4 BRAILLE PATTERN DOTS-368
-28A5 BRAILLE PATTERN DOTS-1368
-28A6 BRAILLE PATTERN DOTS-2368
-28A7 BRAILLE PATTERN DOTS-12368
-28A8 BRAILLE PATTERN DOTS-468
-28A9 BRAILLE PATTERN DOTS-1468
-28AA BRAILLE PATTERN DOTS-2468
-28AB BRAILLE PATTERN DOTS-12468
-28AC BRAILLE PATTERN DOTS-3468
-28AD BRAILLE PATTERN DOTS-13468
-28AE BRAILLE PATTERN DOTS-23468
-28AF BRAILLE PATTERN DOTS-123468
-28B0 BRAILLE PATTERN DOTS-568
-28B1 BRAILLE PATTERN DOTS-1568
-28B2 BRAILLE PATTERN DOTS-2568
-28B3 BRAILLE PATTERN DOTS-12568
-28B4 BRAILLE PATTERN DOTS-3568
-28B5 BRAILLE PATTERN DOTS-13568
-28B6 BRAILLE PATTERN DOTS-23568
-28B7 BRAILLE PATTERN DOTS-123568
-28B8 BRAILLE PATTERN DOTS-4568
-28B9 BRAILLE PATTERN DOTS-14568
-28BA BRAILLE PATTERN DOTS-24568
-28BB BRAILLE PATTERN DOTS-124568
-28BC BRAILLE PATTERN DOTS-34568
-28BD BRAILLE PATTERN DOTS-134568
-28BE BRAILLE PATTERN DOTS-234568
-28BF BRAILLE PATTERN DOTS-1234568
-28C0 BRAILLE PATTERN DOTS-78
-28C1 BRAILLE PATTERN DOTS-178
-28C2 BRAILLE PATTERN DOTS-278
-28C3 BRAILLE PATTERN DOTS-1278
-28C4 BRAILLE PATTERN DOTS-378
-28C5 BRAILLE PATTERN DOTS-1378
-28C6 BRAILLE PATTERN DOTS-2378
-28C7 BRAILLE PATTERN DOTS-12378
-28C8 BRAILLE PATTERN DOTS-478
-28C9 BRAILLE PATTERN DOTS-1478
-28CA BRAILLE PATTERN DOTS-2478
-28CB BRAILLE PATTERN DOTS-12478
-28CC BRAILLE PATTERN DOTS-3478
-28CD BRAILLE PATTERN DOTS-13478
-28CE BRAILLE PATTERN DOTS-23478
-28CF BRAILLE PATTERN DOTS-123478
-28D0 BRAILLE PATTERN DOTS-578
-28D1 BRAILLE PATTERN DOTS-1578
-28D2 BRAILLE PATTERN DOTS-2578
-28D3 BRAILLE PATTERN DOTS-12578
-28D4 BRAILLE PATTERN DOTS-3578
-28D5 BRAILLE PATTERN DOTS-13578
-28D6 BRAILLE PATTERN DOTS-23578
-28D7 BRAILLE PATTERN DOTS-123578
-28D8 BRAILLE PATTERN DOTS-4578
-28D9 BRAILLE PATTERN DOTS-14578
-28DA BRAILLE PATTERN DOTS-24578
-28DB BRAILLE PATTERN DOTS-124578
-28DC BRAILLE PATTERN DOTS-34578
-28DD BRAILLE PATTERN DOTS-134578
-28DE BRAILLE PATTERN DOTS-234578
-28DF BRAILLE PATTERN DOTS-1234578
-28E0 BRAILLE PATTERN DOTS-678
-28E1 BRAILLE PATTERN DOTS-1678
-28E2 BRAILLE PATTERN DOTS-2678
-28E3 BRAILLE PATTERN DOTS-12678
-28E4 BRAILLE PATTERN DOTS-3678
-28E5 BRAILLE PATTERN DOTS-13678
-28E6 BRAILLE PATTERN DOTS-23678
-28E7 BRAILLE PATTERN DOTS-123678
-28E8 BRAILLE PATTERN DOTS-4678
-28E9 BRAILLE PATTERN DOTS-14678
-28EA BRAILLE PATTERN DOTS-24678
-28EB BRAILLE PATTERN DOTS-124678
-28EC BRAILLE PATTERN DOTS-34678
-28ED BRAILLE PATTERN DOTS-134678
-28EE BRAILLE PATTERN DOTS-234678
-28EF BRAILLE PATTERN DOTS-1234678
-28F0 BRAILLE PATTERN DOTS-5678
-28F1 BRAILLE PATTERN DOTS-15678
-28F2 BRAILLE PATTERN DOTS-25678
-28F3 BRAILLE PATTERN DOTS-125678
-28F4 BRAILLE PATTERN DOTS-35678
-28F5 BRAILLE PATTERN DOTS-135678
-28F6 BRAILLE PATTERN DOTS-235678
-28F7 BRAILLE PATTERN DOTS-1235678
-28F8 BRAILLE PATTERN DOTS-45678
-28F9 BRAILLE PATTERN DOTS-145678
-28FA BRAILLE PATTERN DOTS-245678
-28FB BRAILLE PATTERN DOTS-1245678
-28FC BRAILLE PATTERN DOTS-345678
-28FD BRAILLE PATTERN DOTS-1345678
-28FE BRAILLE PATTERN DOTS-2345678
-28FF BRAILLE PATTERN DOTS-12345678
-@@ 2E80 CJK Radicals Supplement 2EFF
-@ CJK radicals supplement
-2E80 CJK RADICAL REPEAT
-2E81 CJK RADICAL CLIFF
-2E82 CJK RADICAL SECOND ONE
-2E83 CJK RADICAL SECOND TWO
-2E84 CJK RADICAL SECOND THREE
-2E85 CJK RADICAL PERSON
-2E86 CJK RADICAL BOX
-2E87 CJK RADICAL TABLE
-2E88 CJK RADICAL KNIFE ONE
-2E89 CJK RADICAL KNIFE TWO
-2E8A CJK RADICAL DIVINATION
-2E8B CJK RADICAL SEAL
-2E8C CJK RADICAL SMALL ONE
-2E8D CJK RADICAL SMALL TWO
-2E8E CJK RADICAL LAME ONE
-2E8F CJK RADICAL LAME TWO
-2E90 CJK RADICAL LAME THREE
-2E91 CJK RADICAL LAME FOUR
-2E92 CJK RADICAL SNAKE
-2E93 CJK RADICAL THREAD
-2E94 CJK RADICAL SNOUT ONE
-2E95 CJK RADICAL SNOUT TWO
-2E96 CJK RADICAL HEART ONE
-2E97 CJK RADICAL HEART TWO
-2E98 CJK RADICAL HAND
-2E99 CJK RADICAL RAP
-2E9B CJK RADICAL CHOKE
-2E9C CJK RADICAL SUN
-2E9D CJK RADICAL MOON
-2E9E CJK RADICAL DEATH
-2E9F CJK RADICAL MOTHER
- # 6BCD
-2EA0 CJK RADICAL CIVILIAN
-2EA1 CJK RADICAL WATER ONE
-2EA2 CJK RADICAL WATER TWO
-2EA3 CJK RADICAL FIRE
-2EA4 CJK RADICAL PAW ONE
-2EA5 CJK RADICAL PAW TWO
-2EA6 CJK RADICAL SIMPLIFIED HALF TREE TRUNK
-2EA7 CJK RADICAL COW
-2EA8 CJK RADICAL DOG
-2EA9 CJK RADICAL JADE
-2EAA CJK RADICAL BOLT OF CLOTH
-2EAB CJK RADICAL EYE
-2EAC CJK RADICAL SPIRIT ONE
-2EAD CJK RADICAL SPIRIT TWO
-2EAE CJK RADICAL BAMBOO
-2EAF CJK RADICAL SILK
-2EB0 CJK RADICAL C-SIMPLIFIED SILK
-2EB1 CJK RADICAL NET ONE
-2EB2 CJK RADICAL NET TWO
-2EB3 CJK RADICAL NET THREE
-2EB4 CJK RADICAL NET FOUR
-2EB5 CJK RADICAL MESH
-2EB6 CJK RADICAL SHEEP
-2EB7 CJK RADICAL RAM
-2EB8 CJK RADICAL EWE
-2EB9 CJK RADICAL OLD
-2EBA CJK RADICAL BRUSH ONE
-2EBB CJK RADICAL BRUSH TWO
-2EBC CJK RADICAL MEAT
-2EBD CJK RADICAL MORTAR
-2EBE CJK RADICAL GRASS ONE
-2EBF CJK RADICAL GRASS TWO
-2EC0 CJK RADICAL GRASS THREE
-2EC1 CJK RADICAL TIGER
-2EC2 CJK RADICAL CLOTHES
-2EC3 CJK RADICAL WEST ONE
-2EC4 CJK RADICAL WEST TWO
-2EC5 CJK RADICAL C-SIMPLIFIED SEE
-2EC6 CJK RADICAL SIMPLIFIED HORN
-2EC7 CJK RADICAL HORN
-2EC8 CJK RADICAL C-SIMPLIFIED SPEECH
-2EC9 CJK RADICAL C-SIMPLIFIED SHELL
-2ECA CJK RADICAL FOOT
-2ECB CJK RADICAL C-SIMPLIFIED CART
-2ECC CJK RADICAL SIMPLIFIED WALK
-2ECD CJK RADICAL WALK ONE
-2ECE CJK RADICAL WALK TWO
-2ECF CJK RADICAL CITY
-2ED0 CJK RADICAL C-SIMPLIFIED GOLD
-2ED1 CJK RADICAL LONG ONE
-2ED2 CJK RADICAL LONG TWO
-2ED3 CJK RADICAL C-SIMPLIFIED LONG
-2ED4 CJK RADICAL C-SIMPLIFIED GATE
-2ED5 CJK RADICAL MOUND ONE
-2ED6 CJK RADICAL MOUND TWO
-2ED7 CJK RADICAL RAIN
-2ED8 CJK RADICAL BLUE
-2ED9 CJK RADICAL C-SIMPLIFIED TANNED LEATHER
-2EDA CJK RADICAL C-SIMPLIFIED LEAF
-2EDB CJK RADICAL C-SIMPLIFIED WIND
-2EDC CJK RADICAL C-SIMPLIFIED FLY
-2EDD CJK RADICAL EAT ONE
-2EDE CJK RADICAL EAT TWO
-2EDF CJK RADICAL EAT THREE
-2EE0 CJK RADICAL C-SIMPLIFIED EAT
-2EE1 CJK RADICAL HEAD
-2EE2 CJK RADICAL C-SIMPLIFIED HORSE
-2EE3 CJK RADICAL BONE
-2EE4 CJK RADICAL GHOST
-2EE5 CJK RADICAL C-SIMPLIFIED FISH
-2EE6 CJK RADICAL C-SIMPLIFIED BIRD
-2EE7 CJK RADICAL C-SIMPLIFIED SALT
-2EE8 CJK RADICAL SIMPLIFIED WHEAT
-2EE9 CJK RADICAL SIMPLIFIED YELLOW
-2EEA CJK RADICAL C-SIMPLIFIED FROG
-2EEB CJK RADICAL J-SIMPLIFIED EVEN
-2EEC CJK RADICAL C-SIMPLIFIED EVEN
-2EED CJK RADICAL J-SIMPLIFIED TOOTH
-2EEE CJK RADICAL C-SIMPLIFIED TOOTH
-2EEF CJK RADICAL J-SIMPLIFIED DRAGON
-2EF0 CJK RADICAL C-SIMPLIFIED DRAGON
-2EF1 CJK RADICAL TURTLE
-2EF2 CJK RADICAL J-SIMPLIFIED TURTLE
-2EF3 CJK RADICAL C-SIMPLIFIED TURTLE
- # 9F9F
-@@ 2F00 Kangxi Radicals 2FDF
-@ Kangxi radicals
-2F00 KANGXI RADICAL ONE
- # 4E00
-2F01 KANGXI RADICAL LINE
- # 4E28
-2F02 KANGXI RADICAL DOT
- # 4E36
-2F03 KANGXI RADICAL SLASH
- # 4E3F
-2F04 KANGXI RADICAL SECOND
- # 4E59
-2F05 KANGXI RADICAL HOOK
- # 4E85
-2F06 KANGXI RADICAL TWO
- # 4E8C
-2F07 KANGXI RADICAL LID
- # 4EA0
-2F08 KANGXI RADICAL MAN
- # 4EBA
-2F09 KANGXI RADICAL LEGS
- # 513F
-2F0A KANGXI RADICAL ENTER
- # 5165
-2F0B KANGXI RADICAL EIGHT
- # 516B
-2F0C KANGXI RADICAL DOWN BOX
- # 5182
-2F0D KANGXI RADICAL COVER
- # 5196
-2F0E KANGXI RADICAL ICE
- # 51AB
-2F0F KANGXI RADICAL TABLE
- # 51E0
-2F10 KANGXI RADICAL OPEN BOX
- # 51F5
-2F11 KANGXI RADICAL KNIFE
- # 5200
-2F12 KANGXI RADICAL POWER
- # 529B
-2F13 KANGXI RADICAL WRAP
- # 52F9
-2F14 KANGXI RADICAL SPOON
- # 5315
-2F15 KANGXI RADICAL RIGHT OPEN BOX
- # 531A
-2F16 KANGXI RADICAL HIDING ENCLOSURE
- # 5338
-2F17 KANGXI RADICAL TEN
- # 5341
-2F18 KANGXI RADICAL DIVINATION
- # 535C
-2F19 KANGXI RADICAL SEAL
- # 5369
-2F1A KANGXI RADICAL CLIFF
- # 5382
-2F1B KANGXI RADICAL PRIVATE
- # 53B6
-2F1C KANGXI RADICAL AGAIN
- # 53C8
-2F1D KANGXI RADICAL MOUTH
- # 53E3
-2F1E KANGXI RADICAL ENCLOSURE
- # 56D7
-2F1F KANGXI RADICAL EARTH
- # 571F
-2F20 KANGXI RADICAL SCHOLAR
- # 58EB
-2F21 KANGXI RADICAL GO
- # 5902
-2F22 KANGXI RADICAL GO SLOWLY
- # 590A
-2F23 KANGXI RADICAL EVENING
- # 5915
-2F24 KANGXI RADICAL BIG
- # 5927
-2F25 KANGXI RADICAL WOMAN
- # 5973
-2F26 KANGXI RADICAL CHILD
- # 5B50
-2F27 KANGXI RADICAL ROOF
- # 5B80
-2F28 KANGXI RADICAL INCH
- # 5BF8
-2F29 KANGXI RADICAL SMALL
- # 5C0F
-2F2A KANGXI RADICAL LAME
- # 5C22
-2F2B KANGXI RADICAL CORPSE
- # 5C38
-2F2C KANGXI RADICAL SPROUT
- # 5C6E
-2F2D KANGXI RADICAL MOUNTAIN
- # 5C71
-2F2E KANGXI RADICAL RIVER
- # 5DDB
-2F2F KANGXI RADICAL WORK
- # 5DE5
-2F30 KANGXI RADICAL ONESELF
- # 5DF1
-2F31 KANGXI RADICAL TURBAN
- # 5DFE
-2F32 KANGXI RADICAL DRY
- # 5E72
-2F33 KANGXI RADICAL SHORT THREAD
- # 5E7A
-2F34 KANGXI RADICAL DOTTED CLIFF
- # 5E7F
-2F35 KANGXI RADICAL LONG STRIDE
- # 5EF4
-2F36 KANGXI RADICAL TWO HANDS
- # 5EFE
-2F37 KANGXI RADICAL SHOOT
- # 5F0B
-2F38 KANGXI RADICAL BOW
- # 5F13
-2F39 KANGXI RADICAL SNOUT
- # 5F50
-2F3A KANGXI RADICAL BRISTLE
- # 5F61
-2F3B KANGXI RADICAL STEP
- # 5F73
-2F3C KANGXI RADICAL HEART
- # 5FC3
-2F3D KANGXI RADICAL HALBERD
- # 6208
-2F3E KANGXI RADICAL DOOR
- # 6236
-2F3F KANGXI RADICAL HAND
- # 624B
-2F40 KANGXI RADICAL BRANCH
- # 652F
-2F41 KANGXI RADICAL RAP
- # 6534
-2F42 KANGXI RADICAL SCRIPT
- # 6587
-2F43 KANGXI RADICAL DIPPER
- # 6597
-2F44 KANGXI RADICAL AXE
- # 65A4
-2F45 KANGXI RADICAL SQUARE
- # 65B9
-2F46 KANGXI RADICAL NOT
- # 65E0
-2F47 KANGXI RADICAL SUN
- # 65E5
-2F48 KANGXI RADICAL SAY
- # 66F0
-2F49 KANGXI RADICAL MOON
- # 6708
-2F4A KANGXI RADICAL TREE
- # 6728
-2F4B KANGXI RADICAL LACK
- # 6B20
-2F4C KANGXI RADICAL STOP
- # 6B62
-2F4D KANGXI RADICAL DEATH
- # 6B79
-2F4E KANGXI RADICAL WEAPON
- # 6BB3
-2F4F KANGXI RADICAL DO NOT
- # 6BCB
-2F50 KANGXI RADICAL COMPARE
- # 6BD4
-2F51 KANGXI RADICAL FUR
- # 6BDB
-2F52 KANGXI RADICAL CLAN
- # 6C0F
-2F53 KANGXI RADICAL STEAM
- # 6C14
-2F54 KANGXI RADICAL WATER
- # 6C34
-2F55 KANGXI RADICAL FIRE
- # 706B
-2F56 KANGXI RADICAL CLAW
- # 722A
-2F57 KANGXI RADICAL FATHER
- # 7236
-2F58 KANGXI RADICAL DOUBLE X
- # 723B
-2F59 KANGXI RADICAL HALF TREE TRUNK
- # 723F
-2F5A KANGXI RADICAL SLICE
- # 7247
-2F5B KANGXI RADICAL FANG
- # 7259
-2F5C KANGXI RADICAL COW
- # 725B
-2F5D KANGXI RADICAL DOG
- # 72AC
-2F5E KANGXI RADICAL PROFOUND
- # 7384
-2F5F KANGXI RADICAL JADE
- # 7389
-2F60 KANGXI RADICAL MELON
- # 74DC
-2F61 KANGXI RADICAL TILE
- # 74E6
-2F62 KANGXI RADICAL SWEET
- # 7518
-2F63 KANGXI RADICAL LIFE
- # 751F
-2F64 KANGXI RADICAL USE
- # 7528
-2F65 KANGXI RADICAL FIELD
- # 7530
-2F66 KANGXI RADICAL BOLT OF CLOTH
- # 758B
-2F67 KANGXI RADICAL SICKNESS
- # 7592
-2F68 KANGXI RADICAL DOTTED TENT
- # 7676
-2F69 KANGXI RADICAL WHITE
- # 767D
-2F6A KANGXI RADICAL SKIN
- # 76AE
-2F6B KANGXI RADICAL DISH
- # 76BF
-2F6C KANGXI RADICAL EYE
- # 76EE
-2F6D KANGXI RADICAL SPEAR
- # 77DB
-2F6E KANGXI RADICAL ARROW
- # 77E2
-2F6F KANGXI RADICAL STONE
- # 77F3
-2F70 KANGXI RADICAL SPIRIT
- # 793A
-2F71 KANGXI RADICAL TRACK
- # 79B8
-2F72 KANGXI RADICAL GRAIN
- # 79BE
-2F73 KANGXI RADICAL CAVE
- # 7A74
-2F74 KANGXI RADICAL STAND
- # 7ACB
-2F75 KANGXI RADICAL BAMBOO
- # 7AF9
-2F76 KANGXI RADICAL RICE
- # 7C73
-2F77 KANGXI RADICAL SILK
- # 7CF8
-2F78 KANGXI RADICAL JAR
- # 7F36
-2F79 KANGXI RADICAL NET
- # 7F51
-2F7A KANGXI RADICAL SHEEP
- # 7F8A
-2F7B KANGXI RADICAL FEATHER
- # 7FBD
-2F7C KANGXI RADICAL OLD
- # 8001
-2F7D KANGXI RADICAL AND
- # 800C
-2F7E KANGXI RADICAL PLOW
- # 8012
-2F7F KANGXI RADICAL EAR
- # 8033
-2F80 KANGXI RADICAL BRUSH
- # 807F
-2F81 KANGXI RADICAL MEAT
- # 8089
-2F82 KANGXI RADICAL MINISTER
- # 81E3
-2F83 KANGXI RADICAL SELF
- # 81EA
-2F84 KANGXI RADICAL ARRIVE
- # 81F3
-2F85 KANGXI RADICAL MORTAR
- # 81FC
-2F86 KANGXI RADICAL TONGUE
- # 820C
-2F87 KANGXI RADICAL OPPOSE
- # 821B
-2F88 KANGXI RADICAL BOAT
- # 821F
-2F89 KANGXI RADICAL STOPPING
- # 826E
-2F8A KANGXI RADICAL COLOR
- # 8272
-2F8B KANGXI RADICAL GRASS
- # 8278
-2F8C KANGXI RADICAL TIGER
- # 864D
-2F8D KANGXI RADICAL INSECT
- # 866B
-2F8E KANGXI RADICAL BLOOD
- # 8840
-2F8F KANGXI RADICAL WALK ENCLOSURE
- # 884C
-2F90 KANGXI RADICAL CLOTHES
- # 8863
-2F91 KANGXI RADICAL WEST
- # 897E
-2F92 KANGXI RADICAL SEE
- # 898B
-2F93 KANGXI RADICAL HORN
- # 89D2
-2F94 KANGXI RADICAL SPEECH
- # 8A00
-2F95 KANGXI RADICAL VALLEY
- # 8C37
-2F96 KANGXI RADICAL BEAN
- # 8C46
-2F97 KANGXI RADICAL PIG
- # 8C55
-2F98 KANGXI RADICAL BADGER
- # 8C78
-2F99 KANGXI RADICAL SHELL
- # 8C9D
-2F9A KANGXI RADICAL RED
- # 8D64
-2F9B KANGXI RADICAL RUN
- # 8D70
-2F9C KANGXI RADICAL FOOT
- # 8DB3
-2F9D KANGXI RADICAL BODY
- # 8EAB
-2F9E KANGXI RADICAL CART
- # 8ECA
-2F9F KANGXI RADICAL BITTER
- # 8F9B
-2FA0 KANGXI RADICAL MORNING
- # 8FB0
-2FA1 KANGXI RADICAL WALK
- # 8FB5
-2FA2 KANGXI RADICAL CITY
- # 9091
-2FA3 KANGXI RADICAL WINE
- # 9149
-2FA4 KANGXI RADICAL DISTINGUISH
- # 91C6
-2FA5 KANGXI RADICAL VILLAGE
- # 91CC
-2FA6 KANGXI RADICAL GOLD
- # 91D1
-2FA7 KANGXI RADICAL LONG
- # 9577
-2FA8 KANGXI RADICAL GATE
- # 9580
-2FA9 KANGXI RADICAL MOUND
- # 961C
-2FAA KANGXI RADICAL SLAVE
- # 96B6
-2FAB KANGXI RADICAL SHORT TAILED BIRD
- # 96B9
-2FAC KANGXI RADICAL RAIN
- # 96E8
-2FAD KANGXI RADICAL BLUE
- # 9751
-2FAE KANGXI RADICAL WRONG
- # 975E
-2FAF KANGXI RADICAL FACE
- # 9762
-2FB0 KANGXI RADICAL LEATHER
- # 9769
-2FB1 KANGXI RADICAL TANNED LEATHER
- # 97CB
-2FB2 KANGXI RADICAL LEEK
- # 97ED
-2FB3 KANGXI RADICAL SOUND
- # 97F3
-2FB4 KANGXI RADICAL LEAF
- # 9801
-2FB5 KANGXI RADICAL WIND
- # 98A8
-2FB6 KANGXI RADICAL FLY
- # 98DB
-2FB7 KANGXI RADICAL EAT
- # 98DF
-2FB8 KANGXI RADICAL HEAD
- # 9996
-2FB9 KANGXI RADICAL FRAGRANT
- # 9999
-2FBA KANGXI RADICAL HORSE
- # 99AC
-2FBB KANGXI RADICAL BONE
- # 9AA8
-2FBC KANGXI RADICAL TALL
- # 9AD8
-2FBD KANGXI RADICAL HAIR
- # 9ADF
-2FBE KANGXI RADICAL FIGHT
- # 9B25
-2FBF KANGXI RADICAL SACRIFICIAL WINE
- # 9B2F
-2FC0 KANGXI RADICAL CAULDRON
- # 9B32
-2FC1 KANGXI RADICAL GHOST
- # 9B3C
-2FC2 KANGXI RADICAL FISH
- # 9B5A
-2FC3 KANGXI RADICAL BIRD
- # 9CE5
-2FC4 KANGXI RADICAL SALT
- # 9E75
-2FC5 KANGXI RADICAL DEER
- # 9E7F
-2FC6 KANGXI RADICAL WHEAT
- # 9EA5
-2FC7 KANGXI RADICAL HEMP
- # 9EBB
-2FC8 KANGXI RADICAL YELLOW
- # 9EC3
-2FC9 KANGXI RADICAL MILLET
- # 9ECD
-2FCA KANGXI RADICAL BLACK
- # 9ED1
-2FCB KANGXI RADICAL EMBROIDERY
- # 9EF9
-2FCC KANGXI RADICAL FROG
- # 9EFD
-2FCD KANGXI RADICAL TRIPOD
- # 9F0E
-2FCE KANGXI RADICAL DRUM
- # 9F13
-2FCF KANGXI RADICAL RAT
- # 9F20
-2FD0 KANGXI RADICAL NOSE
- # 9F3B
-2FD1 KANGXI RADICAL EVEN
- # 9F4A
-2FD2 KANGXI RADICAL TOOTH
- # 9F52
-2FD3 KANGXI RADICAL DRAGON
- # 9F8D
-2FD4 KANGXI RADICAL TURTLE
- # 9F9C
-2FD5 KANGXI RADICAL FLUTE
- # 9FA0
-@@ 2FF0 Ideographic Description Characters 2FFF
-@ Ideographic description characters
-@+ These are visibly displayed graphic characters, not invisible composition controls.
-2FF0 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
-2FF1 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
-2FF2 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
-2FF3 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
-2FF4 IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
-2FF5 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
-2FF6 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
-2FF7 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
-2FF8 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
-2FF9 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
-2FFA IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
-2FFB IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-@@ 3000 CJK Symbols and Punctuation 303F
-@ CJK symbols and punctuation
-3000 IDEOGRAPHIC SPACE
- x (space - 0020)
- # <wide> 0020
-3001 IDEOGRAPHIC COMMA
- x (comma - 002C)
-3002 IDEOGRAPHIC FULL STOP
- x (full stop - 002E)
-3003 DITTO MARK
- x (double prime - 2033)
-3004 JAPANESE INDUSTRIAL STANDARD SYMBOL
-3005 IDEOGRAPHIC ITERATION MARK
-3006 IDEOGRAPHIC CLOSING MARK
-3007 IDEOGRAPHIC NUMBER ZERO
- x (combining enclosing circle - 20DD)
- x (white circle - 25CB)
- x (large circle - 25EF)
-3008 LEFT ANGLE BRACKET
- x (less-than sign - 003C)
- x (single left-pointing angle quotation mark - 2039)
- x (left-pointing angle bracket - 2329)
-3009 RIGHT ANGLE BRACKET
- x (greater-than sign - 003E)
- x (single right-pointing angle quotation mark - 203A)
- x (right-pointing angle bracket - 232A)
-300A LEFT DOUBLE ANGLE BRACKET
- = z notation left chevron bracket
- x (left-pointing double angle quotation mark - 00AB)
-300B RIGHT DOUBLE ANGLE BRACKET
- = z notation right chevron bracket
- x (right-pointing double angle quotation mark - 00BB)
-300C LEFT CORNER BRACKET
- x (left ceiling - 2308)
-300D RIGHT CORNER BRACKET
- * used as quotation marks
- x (right floor - 230B)
-300E LEFT WHITE CORNER BRACKET
-300F RIGHT WHITE CORNER BRACKET
- * used as quotation marks
-3010 LEFT BLACK LENTICULAR BRACKET
-3011 RIGHT BLACK LENTICULAR BRACKET
-3012 POSTAL MARK
-3013 GETA MARK
- * substitute for ideograph not in font
-3014 LEFT TORTOISE SHELL BRACKET
-3015 RIGHT TORTOISE SHELL BRACKET
-3016 LEFT WHITE LENTICULAR BRACKET
-3017 RIGHT WHITE LENTICULAR BRACKET
-3018 LEFT WHITE TORTOISE SHELL BRACKET
-3019 RIGHT WHITE TORTOISE SHELL BRACKET
-301A LEFT WHITE SQUARE BRACKET
- = z notation left bag bracket
-301B RIGHT WHITE SQUARE BRACKET
- = z notation right bag bracket
-301C WAVE DASH
-@+ * This character was encoded to match JIS C 6226-1978 1-33 "wave dash". Subsequent revisions of the JIS standard and industry practice have settled on JIS 1-33 as being the fullwidth tilde character.
- x (wavy dash - 3030)
- x (fullwidth tilde - FF5E)
-301D REVERSED DOUBLE PRIME QUOTATION MARK
- * sometimes depicted as double prime quotation mark
- x (left double quotation mark - 201C)
- x (reversed double prime - 2036)
-301E DOUBLE PRIME QUOTATION MARK
- * this is a mistaken analogue to 201D; 301F is preferred
- x (right double quotation mark - 201D)
- x (double prime - 2033)
-301F LOW DOUBLE PRIME QUOTATION MARK
- * may be depicted as low inverse double prime quotation mark
-3020 POSTAL MARK FACE
-@ Hangzhou-style numerals
-3021 HANGZHOU NUMERAL ONE
-3022 HANGZHOU NUMERAL TWO
-3023 HANGZHOU NUMERAL THREE
-3024 HANGZHOU NUMERAL FOUR
-3025 HANGZHOU NUMERAL FIVE
-3026 HANGZHOU NUMERAL SIX
-3027 HANGZHOU NUMERAL SEVEN
-3028 HANGZHOU NUMERAL EIGHT
-3029 HANGZHOU NUMERAL NINE
-@ Diacritics
-302A IDEOGRAPHIC LEVEL TONE MARK
-302B IDEOGRAPHIC RISING TONE MARK
-302C IDEOGRAPHIC DEPARTING TONE MARK
-302D IDEOGRAPHIC ENTERING TONE MARK
-302E HANGUL SINGLE DOT TONE MARK
- = single dot Bangjeom
-302F HANGUL DOUBLE DOT TONE MARK
- = double dot Bangjeom
-@ Other CJK symbols
-3030 WAVY DASH
- x (wavy line - 2307)
- x (wave dash - 301C)
-3031 VERTICAL KANA REPEAT MARK
-3032 VERTICAL KANA REPEAT WITH VOICED SOUND MARK
- * the preceding two semantic characters are preferred to the following three glyphic forms
-3033 VERTICAL KANA REPEAT MARK UPPER HALF
-3034 VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
- * the preceding two are glyphs used in conjunction with the following glyph
-3035 VERTICAL KANA REPEAT MARK LOWER HALF
-3036 CIRCLED POSTAL MARK
- # 3012 postal mark
-3037 IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
-@ Additional Hangzhou-style numerals
-3038 HANGZHOU NUMERAL TEN
- # 5341
-3039 HANGZHOU NUMERAL TWENTY
- # 5344
-303A HANGZHOU NUMERAL THIRTY
- # 5345
-@ Special CJK indicators
-@+ These are visibly displayed graphic characters, not invisible formatting controls.
-303E IDEOGRAPHIC VARIATION INDICATOR
- * visual indicator that the following ideograph is to be taken as a variant of the intended character
-303F IDEOGRAPHIC HALF FILL SPACE
- * visual indicator of a screen space for half of an ideograph
-@@ 3040 Hiragana 309F
-@ Based on JIS X 0208
-3041 HIRAGANA LETTER SMALL A
-3042 HIRAGANA LETTER A
-3043 HIRAGANA LETTER SMALL I
-3044 HIRAGANA LETTER I
-3045 HIRAGANA LETTER SMALL U
-3046 HIRAGANA LETTER U
-3047 HIRAGANA LETTER SMALL E
-3048 HIRAGANA LETTER E
-3049 HIRAGANA LETTER SMALL O
-304A HIRAGANA LETTER O
-304B HIRAGANA LETTER KA
-304C HIRAGANA LETTER GA
- : 304B 3099
-304D HIRAGANA LETTER KI
-304E HIRAGANA LETTER GI
- : 304D 3099
-304F HIRAGANA LETTER KU
-3050 HIRAGANA LETTER GU
- : 304F 3099
-3051 HIRAGANA LETTER KE
-3052 HIRAGANA LETTER GE
- : 3051 3099
-3053 HIRAGANA LETTER KO
-3054 HIRAGANA LETTER GO
- : 3053 3099
-3055 HIRAGANA LETTER SA
-3056 HIRAGANA LETTER ZA
- : 3055 3099
-3057 HIRAGANA LETTER SI
- = SHI
-3058 HIRAGANA LETTER ZI
- = JI (not unique)
- : 3057 3099
-3059 HIRAGANA LETTER SU
-305A HIRAGANA LETTER ZU
- : 3059 3099
-305B HIRAGANA LETTER SE
-305C HIRAGANA LETTER ZE
- : 305B 3099
-305D HIRAGANA LETTER SO
-305E HIRAGANA LETTER ZO
- : 305D 3099
-305F HIRAGANA LETTER TA
-3060 HIRAGANA LETTER DA
- : 305F 3099
-3061 HIRAGANA LETTER TI
- = CHI
-3062 HIRAGANA LETTER DI
- = JI (not unique)
- : 3061 3099
-3063 HIRAGANA LETTER SMALL TU
- = SMALL TSU
-3064 HIRAGANA LETTER TU
- = TSU
-3065 HIRAGANA LETTER DU
- = ZU (not unique)
- : 3064 3099
-3066 HIRAGANA LETTER TE
-3067 HIRAGANA LETTER DE
- : 3066 3099
-3068 HIRAGANA LETTER TO
-3069 HIRAGANA LETTER DO
- : 3068 3099
-306A HIRAGANA LETTER NA
-306B HIRAGANA LETTER NI
-306C HIRAGANA LETTER NU
-306D HIRAGANA LETTER NE
-306E HIRAGANA LETTER NO
-306F HIRAGANA LETTER HA
-3070 HIRAGANA LETTER BA
- : 306F 3099
-3071 HIRAGANA LETTER PA
- : 306F 309A
-3072 HIRAGANA LETTER HI
-3073 HIRAGANA LETTER BI
- : 3072 3099
-3074 HIRAGANA LETTER PI
- : 3072 309A
-3075 HIRAGANA LETTER HU
- = FU
-3076 HIRAGANA LETTER BU
- : 3075 3099
-3077 HIRAGANA LETTER PU
- : 3075 309A
-3078 HIRAGANA LETTER HE
-3079 HIRAGANA LETTER BE
- : 3078 3099
-307A HIRAGANA LETTER PE
- : 3078 309A
-307B HIRAGANA LETTER HO
-307C HIRAGANA LETTER BO
- : 307B 3099
-307D HIRAGANA LETTER PO
- : 307B 309A
-307E HIRAGANA LETTER MA
-307F HIRAGANA LETTER MI
-3080 HIRAGANA LETTER MU
-3081 HIRAGANA LETTER ME
-3082 HIRAGANA LETTER MO
-3083 HIRAGANA LETTER SMALL YA
-3084 HIRAGANA LETTER YA
-3085 HIRAGANA LETTER SMALL YU
-3086 HIRAGANA LETTER YU
-3087 HIRAGANA LETTER SMALL YO
-3088 HIRAGANA LETTER YO
-3089 HIRAGANA LETTER RA
-308A HIRAGANA LETTER RI
-308B HIRAGANA LETTER RU
-308C HIRAGANA LETTER RE
-308D HIRAGANA LETTER RO
-308E HIRAGANA LETTER SMALL WA
-308F HIRAGANA LETTER WA
-3090 HIRAGANA LETTER WI
-3091 HIRAGANA LETTER WE
-3092 HIRAGANA LETTER WO
-3093 HIRAGANA LETTER N
-3094 HIRAGANA LETTER VU
- : 3046 3099
-@ Voicing marks
-3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
-309A COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309B KATAKANA-HIRAGANA VOICED SOUND MARK
- # 0020 3099
-309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
- # 0020 309A
-@ Iteration marks
-309D HIRAGANA ITERATION MARK
-309E HIRAGANA VOICED ITERATION MARK
- : 309D 3099
-@@ 30A0 Katakana 30FF
-@ Based on JIS X 0208
-30A1 KATAKANA LETTER SMALL A
-30A2 KATAKANA LETTER A
-30A3 KATAKANA LETTER SMALL I
-30A4 KATAKANA LETTER I
-30A5 KATAKANA LETTER SMALL U
-30A6 KATAKANA LETTER U
-30A7 KATAKANA LETTER SMALL E
-30A8 KATAKANA LETTER E
-30A9 KATAKANA LETTER SMALL O
-30AA KATAKANA LETTER O
-30AB KATAKANA LETTER KA
-30AC KATAKANA LETTER GA
- : 30AB 3099
-30AD KATAKANA LETTER KI
-30AE KATAKANA LETTER GI
- : 30AD 3099
-30AF KATAKANA LETTER KU
-30B0 KATAKANA LETTER GU
- : 30AF 3099
-30B1 KATAKANA LETTER KE
-30B2 KATAKANA LETTER GE
- : 30B1 3099
-30B3 KATAKANA LETTER KO
-30B4 KATAKANA LETTER GO
- : 30B3 3099
-30B5 KATAKANA LETTER SA
-30B6 KATAKANA LETTER ZA
- : 30B5 3099
-30B7 KATAKANA LETTER SI
- = SHI
-30B8 KATAKANA LETTER ZI
- = JI (not unique)
- : 30B7 3099
-30B9 KATAKANA LETTER SU
-30BA KATAKANA LETTER ZU
- : 30B9 3099
-30BB KATAKANA LETTER SE
-30BC KATAKANA LETTER ZE
- : 30BB 3099
-30BD KATAKANA LETTER SO
-30BE KATAKANA LETTER ZO
- : 30BD 3099
-30BF KATAKANA LETTER TA
-30C0 KATAKANA LETTER DA
- : 30BF 3099
-30C1 KATAKANA LETTER TI
- = CHI
-30C2 KATAKANA LETTER DI
- = JI (not unique)
- : 30C1 3099
-30C3 KATAKANA LETTER SMALL TU
- = SMALL TSU
-30C4 KATAKANA LETTER TU
- = TSU
-30C5 KATAKANA LETTER DU
- = ZU (not unique)
- : 30C4 3099
-30C6 KATAKANA LETTER TE
-30C7 KATAKANA LETTER DE
- : 30C6 3099
-30C8 KATAKANA LETTER TO
-30C9 KATAKANA LETTER DO
- : 30C8 3099
-30CA KATAKANA LETTER NA
-30CB KATAKANA LETTER NI
-30CC KATAKANA LETTER NU
-30CD KATAKANA LETTER NE
-30CE KATAKANA LETTER NO
-30CF KATAKANA LETTER HA
-30D0 KATAKANA LETTER BA
- : 30CF 3099
-30D1 KATAKANA LETTER PA
- : 30CF 309A
-30D2 KATAKANA LETTER HI
-30D3 KATAKANA LETTER BI
- : 30D2 3099
-30D4 KATAKANA LETTER PI
- : 30D2 309A
-30D5 KATAKANA LETTER HU
- = FU
-30D6 KATAKANA LETTER BU
- : 30D5 3099
-30D7 KATAKANA LETTER PU
- : 30D5 309A
-30D8 KATAKANA LETTER HE
-30D9 KATAKANA LETTER BE
- : 30D8 3099
-30DA KATAKANA LETTER PE
- : 30D8 309A
-30DB KATAKANA LETTER HO
-30DC KATAKANA LETTER BO
- : 30DB 3099
-30DD KATAKANA LETTER PO
- : 30DB 309A
-30DE KATAKANA LETTER MA
-30DF KATAKANA LETTER MI
-30E0 KATAKANA LETTER MU
-30E1 KATAKANA LETTER ME
-30E2 KATAKANA LETTER MO
-30E3 KATAKANA LETTER SMALL YA
-30E4 KATAKANA LETTER YA
-30E5 KATAKANA LETTER SMALL YU
-30E6 KATAKANA LETTER YU
-30E7 KATAKANA LETTER SMALL YO
-30E8 KATAKANA LETTER YO
-30E9 KATAKANA LETTER RA
-30EA KATAKANA LETTER RI
-30EB KATAKANA LETTER RU
-30EC KATAKANA LETTER RE
-30ED KATAKANA LETTER RO
-30EE KATAKANA LETTER SMALL WA
-30EF KATAKANA LETTER WA
-30F0 KATAKANA LETTER WI
-30F1 KATAKANA LETTER WE
-30F2 KATAKANA LETTER WO
-30F3 KATAKANA LETTER N
-30F4 KATAKANA LETTER VU
- : 30A6 3099
-30F5 KATAKANA LETTER SMALL KA
-30F6 KATAKANA LETTER SMALL KE
-30F7 KATAKANA LETTER VA
- : 30EF 3099
-30F8 KATAKANA LETTER VI
- : 30F0 3099
-30F9 KATAKANA LETTER VE
- : 30F1 3099
-30FA KATAKANA LETTER VO
- : 30F2 3099
-@ Conjunction and length marks
-30FB KATAKANA MIDDLE DOT
- x (middle dot - 00B7)
-30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK
- x (em dash - 2014)
-@ Iteration marks
-30FD KATAKANA ITERATION MARK
-30FE KATAKANA VOICED ITERATION MARK
- : 30FD 3099
-@@ 3100 Bopomofo 312F
-@+ See also the Bopomofo Extended block
-@ Based on GB 2312
-3105 BOPOMOFO LETTER B
-3106 BOPOMOFO LETTER P
-3107 BOPOMOFO LETTER M
-3108 BOPOMOFO LETTER F
-3109 BOPOMOFO LETTER D
-310A BOPOMOFO LETTER T
-310B BOPOMOFO LETTER N
-310C BOPOMOFO LETTER L
-310D BOPOMOFO LETTER G
-310E BOPOMOFO LETTER K
-310F BOPOMOFO LETTER H
-3110 BOPOMOFO LETTER J
-3111 BOPOMOFO LETTER Q
-3112 BOPOMOFO LETTER X
-3113 BOPOMOFO LETTER ZH
-3114 BOPOMOFO LETTER CH
-3115 BOPOMOFO LETTER SH
-3116 BOPOMOFO LETTER R
-3117 BOPOMOFO LETTER Z
-3118 BOPOMOFO LETTER C
-3119 BOPOMOFO LETTER S
-311A BOPOMOFO LETTER A
-311B BOPOMOFO LETTER O
-311C BOPOMOFO LETTER E
-311D BOPOMOFO LETTER EH
-311E BOPOMOFO LETTER AI
-311F BOPOMOFO LETTER EI
-3120 BOPOMOFO LETTER AU
-3121 BOPOMOFO LETTER OU
-3122 BOPOMOFO LETTER AN
-3123 BOPOMOFO LETTER EN
-3124 BOPOMOFO LETTER ANG
-3125 BOPOMOFO LETTER ENG
-3126 BOPOMOFO LETTER ER
-3127 BOPOMOFO LETTER I
-3128 BOPOMOFO LETTER U
-3129 BOPOMOFO LETTER IU
-@ Dialect (non-Mandarin) letters
-312A BOPOMOFO LETTER V
-312B BOPOMOFO LETTER NG
-312C BOPOMOFO LETTER GN
-@@ 3130 Hangul Compatibility Jamo 318F
-@ Modern letters
-3131 HANGUL LETTER KIYEOK
- # 1100 hangul choseong kiyeok
-3132 HANGUL LETTER SSANGKIYEOK
- # 1101 hangul choseong ssangkiyeok
-3133 HANGUL LETTER KIYEOK-SIOS
- # 11AA hangul jongseong kiyeok-sios
-3134 HANGUL LETTER NIEUN
- # 1102 hangul choseong nieun
-3135 HANGUL LETTER NIEUN-CIEUC
- # 11AC hangul jongseong nieun-cieuc
-3136 HANGUL LETTER NIEUN-HIEUH
- # 11AD hangul jongseong nieun-hieuh
-3137 HANGUL LETTER TIKEUT
- # 1103 hangul choseong tikeut
-3138 HANGUL LETTER SSANGTIKEUT
- # 1104 hangul choseong ssangtikeut
-3139 HANGUL LETTER RIEUL
- # 1105 hangul choseong rieul
-313A HANGUL LETTER RIEUL-KIYEOK
- # 11B0 hangul jongseong rieul-kiyeok
-313B HANGUL LETTER RIEUL-MIEUM
- # 11B1 hangul jongseong rieul-mieum
-313C HANGUL LETTER RIEUL-PIEUP
- # 11B2 hangul jongseong rieul-pieup
-313D HANGUL LETTER RIEUL-SIOS
- # 11B3 hangul jongseong rieul-sios
-313E HANGUL LETTER RIEUL-THIEUTH
- # 11B4 hangul jongseong rieul-thieuth
-313F HANGUL LETTER RIEUL-PHIEUPH
- # 11B5 hangul jongseong rieul-phieuph
-3140 HANGUL LETTER RIEUL-HIEUH
- # 111A hangul choseong rieul-hieuh
-3141 HANGUL LETTER MIEUM
- # 1106 hangul choseong mieum
-3142 HANGUL LETTER PIEUP
- # 1107 hangul choseong pieup
-3143 HANGUL LETTER SSANGPIEUP
- # 1108 hangul choseong ssangpieup
-3144 HANGUL LETTER PIEUP-SIOS
- # 1121 hangul choseong pieup-sios
-3145 HANGUL LETTER SIOS
- # 1109 hangul choseong sios
-3146 HANGUL LETTER SSANGSIOS
- # 110A hangul choseong ssangsios
-3147 HANGUL LETTER IEUNG
- # 110B hangul choseong ieung
-3148 HANGUL LETTER CIEUC
- # 110C hangul choseong cieuc
-3149 HANGUL LETTER SSANGCIEUC
- # 110D hangul choseong ssangcieuc
-314A HANGUL LETTER CHIEUCH
- # 110E hangul choseong chieuch
-314B HANGUL LETTER KHIEUKH
- # 110F hangul choseong khieukh
-314C HANGUL LETTER THIEUTH
- # 1110 hangul choseong thieuth
-314D HANGUL LETTER PHIEUPH
- # 1111 hangul choseong phieuph
-314E HANGUL LETTER HIEUH
- # 1112 hangul choseong hieuh
-314F HANGUL LETTER A
- # 1161 hangul jungseong a
-3150 HANGUL LETTER AE
- # 1162 hangul jungseong ae
-3151 HANGUL LETTER YA
- # 1163 hangul jungseong ya
-3152 HANGUL LETTER YAE
- # 1164 hangul jungseong yae
-3153 HANGUL LETTER EO
- # 1165 hangul jungseong eo
-3154 HANGUL LETTER E
- # 1166 hangul jungseong e
-3155 HANGUL LETTER YEO
- # 1167 hangul jungseong yeo
-3156 HANGUL LETTER YE
- # 1168 hangul jungseong ye
-3157 HANGUL LETTER O
- # 1169 hangul jungseong o
-3158 HANGUL LETTER WA
- # 116A hangul jungseong wa
-3159 HANGUL LETTER WAE
- # 116B hangul jungseong wae
-315A HANGUL LETTER OE
- # 116C hangul jungseong oe
-315B HANGUL LETTER YO
- # 116D hangul jungseong yo
-315C HANGUL LETTER U
- # 116E hangul jungseong u
-315D HANGUL LETTER WEO
- # 116F hangul jungseong weo
-315E HANGUL LETTER WE
- # 1170 hangul jungseong we
-315F HANGUL LETTER WI
- # 1171 hangul jungseong wi
-3160 HANGUL LETTER YU
- # 1172 hangul jungseong yu
-3161 HANGUL LETTER EU
- # 1173 hangul jungseong eu
-3162 HANGUL LETTER YI
- # 1174 hangul jungseong yi
-3163 HANGUL LETTER I
- # 1175 hangul jungseong i
-@ Special character
-3164 HANGUL FILLER
- = HANGUL CAE OM
- # 1160 hangul jungseong filler
-@ Archaic letters
-3165 HANGUL LETTER SSANGNIEUN
- # 1114 hangul choseong ssangnieun
-3166 HANGUL LETTER NIEUN-TIKEUT
- # 1115 hangul choseong nieun-tikeut
-3167 HANGUL LETTER NIEUN-SIOS
- # 11C7 hangul jongseong nieun-sios
-3168 HANGUL LETTER NIEUN-PANSIOS
- # 11C8 hangul jongseong nieun-pansios
-3169 HANGUL LETTER RIEUL-KIYEOK-SIOS
- # 11CC hangul jongseong rieul-kiyeok-sios
-316A HANGUL LETTER RIEUL-TIKEUT
- # 11CE hangul jongseong rieul-tikeut
-316B HANGUL LETTER RIEUL-PIEUP-SIOS
- # 11D3 hangul jongseong rieul-pieup-sios
-316C HANGUL LETTER RIEUL-PANSIOS
- # 11D7 hangul jongseong rieul-pansios
-316D HANGUL LETTER RIEUL-YEORINHIEUH
- # 11D9 hangul jongseong rieul-yeorinhieuh
-316E HANGUL LETTER MIEUM-PIEUP
- # 111C hangul choseong mieum-pieup
-316F HANGUL LETTER MIEUM-SIOS
- # 11DD hangul jongseong mieum-sios
-3170 HANGUL LETTER MIEUM-PANSIOS
- # 11DF hangul jongseong mieum-pansios
-3171 HANGUL LETTER KAPYEOUNMIEUM
- # 111D hangul choseong kapyeounmieum
-3172 HANGUL LETTER PIEUP-KIYEOK
- # 111E hangul choseong pieup-kiyeok
-3173 HANGUL LETTER PIEUP-TIKEUT
- # 1120 hangul choseong pieup-tikeut
-3174 HANGUL LETTER PIEUP-SIOS-KIYEOK
- # 1122 hangul choseong pieup-sios-kiyeok
-3175 HANGUL LETTER PIEUP-SIOS-TIKEUT
- # 1123 hangul choseong pieup-sios-tikeut
-3176 HANGUL LETTER PIEUP-CIEUC
- # 1127 hangul choseong pieup-cieuc
-3177 HANGUL LETTER PIEUP-THIEUTH
- # 1129 hangul choseong pieup-thieuth
-3178 HANGUL LETTER KAPYEOUNPIEUP
- # 112B hangul choseong kapyeounpieup
-3179 HANGUL LETTER KAPYEOUNSSANGPIEUP
- # 112C hangul choseong kapyeounssangpieup
-317A HANGUL LETTER SIOS-KIYEOK
- # 112D hangul choseong sios-kiyeok
-317B HANGUL LETTER SIOS-NIEUN
- # 112E hangul choseong sios-nieun
-317C HANGUL LETTER SIOS-TIKEUT
- # 112F hangul choseong sios-tikeut
-317D HANGUL LETTER SIOS-PIEUP
- # 1132 hangul choseong sios-pieup
-317E HANGUL LETTER SIOS-CIEUC
- # 1136 hangul choseong sios-cieuc
-317F HANGUL LETTER PANSIOS
- # 1140 hangul choseong pansios
-3180 HANGUL LETTER SSANGIEUNG
- # 1147 hangul choseong ssangieung
-3181 HANGUL LETTER YESIEUNG
- * archaic velar nasal
- # 114C hangul choseong yesieung
-3182 HANGUL LETTER YESIEUNG-SIOS
- # 11F1 hangul jongseong yesieung-sios
-3183 HANGUL LETTER YESIEUNG-PANSIOS
- # 11F2 hangul jongseong yesieung-pansios
-3184 HANGUL LETTER KAPYEOUNPHIEUPH
- # 1157 hangul choseong kapyeounphieuph
-3185 HANGUL LETTER SSANGHIEUH
- # 1158 hangul choseong ssanghieuh
-3186 HANGUL LETTER YEORINHIEUH
- * archaic glottal stop
- # 1159 hangul choseong yeorinhieuh
-3187 HANGUL LETTER YO-YA
- # 1184 hangul jungseong yo-ya
-3188 HANGUL LETTER YO-YAE
- # 1185 hangul jungseong yo-yae
-3189 HANGUL LETTER YO-I
- # 1188 hangul jungseong yo-i
-318A HANGUL LETTER YU-YEO
- # 1191 hangul jungseong yu-yeo
-318B HANGUL LETTER YU-YE
- # 1192 hangul jungseong yu-ye
-318C HANGUL LETTER YU-I
- # 1194 hangul jungseong yu-i
-318D HANGUL LETTER ARAEA
- # 119E hangul jungseong araea
-318E HANGUL LETTER ARAEAE
- # 11A1 hangul jungseong araea-i
-@@ 3190 Kanbun 319F
-@ Kanbun
-3190 IDEOGRAPHIC ANNOTATION LINKING MARK (Kanbun Tateten)
- = KANBUN TATETEN
-3191 IDEOGRAPHIC ANNOTATION REVERSE MARK (Kaeriten)
- = KAERITEN RE
-3192 IDEOGRAPHIC ANNOTATION ONE MARK (Kaeriten)
- # <super> 4E00
-3193 IDEOGRAPHIC ANNOTATION TWO MARK (Kaeriten)
- # <super> 4E8C
-3194 IDEOGRAPHIC ANNOTATION THREE MARK (Kaeriten)
- # <super> 4E09
-3195 IDEOGRAPHIC ANNOTATION FOUR MARK (Kaeriten)
- # <super> 56DB
-3196 IDEOGRAPHIC ANNOTATION TOP MARK (Kaeriten)
- # <super> 4E0A
-3197 IDEOGRAPHIC ANNOTATION MIDDLE MARK (Kaeriten)
- # <super> 4E2D
-3198 IDEOGRAPHIC ANNOTATION BOTTOM MARK (Kaeriten)
- # <super> 4E0B
-3199 IDEOGRAPHIC ANNOTATION FIRST MARK (Kaeriten)
- # <super> 7532
-319A IDEOGRAPHIC ANNOTATION SECOND MARK (Kaeriten)
- # <super> 4E59
-319B IDEOGRAPHIC ANNOTATION THIRD MARK (Kaeriten)
- # <super> 4E19
-319C IDEOGRAPHIC ANNOTATION FOURTH MARK (Kaeriten)
- # <super> 4E01
-319D IDEOGRAPHIC ANNOTATION HEAVEN MARK (Kaeriten)
- # <super> 5929
-319E IDEOGRAPHIC ANNOTATION EARTH MARK (Kaeriten)
- # <super> 5730
-319F IDEOGRAPHIC ANNOTATION MAN MARK (Kaeriten)
- # <super> 4EBA
-@@ 31A0 Bopomofo Extended 31BF
-@+ See also the Bopomofo block
-@ Extended Bopomofo for Minnan and Hakka
-31A0 BOPOMOFO LETTER BU
-31A1 BOPOMOFO LETTER ZI
-31A2 BOPOMOFO LETTER JI
-31A3 BOPOMOFO LETTER GU
-31A4 BOPOMOFO LETTER EE
-31A5 BOPOMOFO LETTER ENN
-31A6 BOPOMOFO LETTER OO
-31A7 BOPOMOFO LETTER ONN
-31A8 BOPOMOFO LETTER IR
-31A9 BOPOMOFO LETTER ANN
-31AA BOPOMOFO LETTER INN
-31AB BOPOMOFO LETTER UNN
-31AC BOPOMOFO LETTER IM
-31AD BOPOMOFO LETTER NGG
-31AE BOPOMOFO LETTER AINN
-31AF BOPOMOFO LETTER AUNN
-31B0 BOPOMOFO LETTER AM
-31B1 BOPOMOFO LETTER OM
-31B2 BOPOMOFO LETTER ONG
-31B3 BOPOMOFO LETTER INNN
-31B4 BOPOMOFO FINAL LETTER P
-31B5 BOPOMOFO FINAL LETTER T
-31B6 BOPOMOFO FINAL LETTER K
-31B7 BOPOMOFO FINAL LETTER H
-@@ 3200 Enclosed CJK Letters and Months 32FF
-@ Parenthesized Hangul elements
-3200 PARENTHESIZED HANGUL KIYEOK
- # 0028 1100 0029
-3201 PARENTHESIZED HANGUL NIEUN
- # 0028 1102 0029
-3202 PARENTHESIZED HANGUL TIKEUT
- # 0028 1103 0029
-3203 PARENTHESIZED HANGUL RIEUL
- # 0028 1105 0029
-3204 PARENTHESIZED HANGUL MIEUM
- # 0028 1106 0029
-3205 PARENTHESIZED HANGUL PIEUP
- # 0028 1107 0029
-3206 PARENTHESIZED HANGUL SIOS
- # 0028 1109 0029
-3207 PARENTHESIZED HANGUL IEUNG
- # 0028 110B 0029
-3208 PARENTHESIZED HANGUL CIEUC
- # 0028 110C 0029
-3209 PARENTHESIZED HANGUL CHIEUCH
- # 0028 110E 0029
-320A PARENTHESIZED HANGUL KHIEUKH
- # 0028 110F 0029
-320B PARENTHESIZED HANGUL THIEUTH
- # 0028 1110 0029
-320C PARENTHESIZED HANGUL PHIEUPH
- # 0028 1111 0029
-320D PARENTHESIZED HANGUL HIEUH
- # 0028 1112 0029
-@ Parenthesized Hangul syllables
-320E PARENTHESIZED HANGUL KIYEOK A
- # 0028 1100 1161 0029
-320F PARENTHESIZED HANGUL NIEUN A
- # 0028 1102 1161 0029
-3210 PARENTHESIZED HANGUL TIKEUT A
- # 0028 1103 1161 0029
-3211 PARENTHESIZED HANGUL RIEUL A
- # 0028 1105 1161 0029
-3212 PARENTHESIZED HANGUL MIEUM A
- # 0028 1106 1161 0029
-3213 PARENTHESIZED HANGUL PIEUP A
- # 0028 1107 1161 0029
-3214 PARENTHESIZED HANGUL SIOS A
- # 0028 1109 1161 0029
-3215 PARENTHESIZED HANGUL IEUNG A
- # 0028 110B 1161 0029
-3216 PARENTHESIZED HANGUL CIEUC A
- # 0028 110C 1161 0029
-3217 PARENTHESIZED HANGUL CHIEUCH A
- # 0028 110E 1161 0029
-3218 PARENTHESIZED HANGUL KHIEUKH A
- # 0028 110F 1161 0029
-3219 PARENTHESIZED HANGUL THIEUTH A
- # 0028 1110 1161 0029
-321A PARENTHESIZED HANGUL PHIEUPH A
- # 0028 1111 1161 0029
-321B PARENTHESIZED HANGUL HIEUH A
- # 0028 1112 1161 0029
-321C PARENTHESIZED HANGUL CIEUC U
- # 0028 110C 116E 0029
-@ Parenthesized ideographs
-3220 PARENTHESIZED IDEOGRAPH ONE
- # 0028 4E00 0029
-3221 PARENTHESIZED IDEOGRAPH TWO
- # 0028 4E8C 0029
-3222 PARENTHESIZED IDEOGRAPH THREE
- # 0028 4E09 0029
-3223 PARENTHESIZED IDEOGRAPH FOUR
- # 0028 56DB 0029
-3224 PARENTHESIZED IDEOGRAPH FIVE
- # 0028 4E94 0029
-3225 PARENTHESIZED IDEOGRAPH SIX
- # 0028 516D 0029
-3226 PARENTHESIZED IDEOGRAPH SEVEN
- # 0028 4E03 0029
-3227 PARENTHESIZED IDEOGRAPH EIGHT
- # 0028 516B 0029
-3228 PARENTHESIZED IDEOGRAPH NINE
- # 0028 4E5D 0029
-3229 PARENTHESIZED IDEOGRAPH TEN
- # 0028 5341 0029
-322A PARENTHESIZED IDEOGRAPH MOON
- * Monday
- # 0028 6708 0029
-322B PARENTHESIZED IDEOGRAPH FIRE
- * Tuesday
- # 0028 706B 0029
-322C PARENTHESIZED IDEOGRAPH WATER
- * Wednesday
- # 0028 6C34 0029
-322D PARENTHESIZED IDEOGRAPH WOOD
- * Thursday
- # 0028 6728 0029
-322E PARENTHESIZED IDEOGRAPH METAL
- * Friday
- # 0028 91D1 0029
-322F PARENTHESIZED IDEOGRAPH EARTH
- * Saturday
- # 0028 571F 0029
-3230 PARENTHESIZED IDEOGRAPH SUN
- * Sunday
- # 0028 65E5 0029
-3231 PARENTHESIZED IDEOGRAPH STOCK
- * incorporated
- # 0028 682A 0029
-3232 PARENTHESIZED IDEOGRAPH HAVE
- * limited
- # 0028 6709 0029
-3233 PARENTHESIZED IDEOGRAPH SOCIETY
- * company
- # 0028 793E 0029
-3234 PARENTHESIZED IDEOGRAPH NAME
- # 0028 540D 0029
-3235 PARENTHESIZED IDEOGRAPH SPECIAL
- # 0028 7279 0029
-3236 PARENTHESIZED IDEOGRAPH FINANCIAL
- # 0028 8CA1 0029
-3237 PARENTHESIZED IDEOGRAPH CONGRATULATION
- # 0028 795D 0029
-3238 PARENTHESIZED IDEOGRAPH LABOR
- # 0028 52B4 0029
-3239 PARENTHESIZED IDEOGRAPH REPRESENT
- # 0028 4EE3 0029
-323A PARENTHESIZED IDEOGRAPH CALL
- # 0028 547C 0029
-323B PARENTHESIZED IDEOGRAPH STUDY
- # 0028 5B66 0029
-323C PARENTHESIZED IDEOGRAPH SUPERVISE
- # 0028 76E3 0029
-323D PARENTHESIZED IDEOGRAPH ENTERPRISE
- # 0028 4F01 0029
-323E PARENTHESIZED IDEOGRAPH RESOURCE
- # 0028 8CC7 0029
-323F PARENTHESIZED IDEOGRAPH ALLIANCE
- # 0028 5354 0029
-3240 PARENTHESIZED IDEOGRAPH FESTIVAL
- # 0028 796D 0029
-3241 PARENTHESIZED IDEOGRAPH REST
- # 0028 4F11 0029
-3242 PARENTHESIZED IDEOGRAPH SELF
- * from
- # 0028 81EA 0029
-3243 PARENTHESIZED IDEOGRAPH REACH
- * to
- # 0028 81F3 0029
-@ Circled Hangul elements
-3260 CIRCLED HANGUL KIYEOK
- # <circle> 1100
-3261 CIRCLED HANGUL NIEUN
- # <circle> 1102
-3262 CIRCLED HANGUL TIKEUT
- # <circle> 1103
-3263 CIRCLED HANGUL RIEUL
- # <circle> 1105
-3264 CIRCLED HANGUL MIEUM
- # <circle> 1106
-3265 CIRCLED HANGUL PIEUP
- # <circle> 1107
-3266 CIRCLED HANGUL SIOS
- # <circle> 1109
-3267 CIRCLED HANGUL IEUNG
- # <circle> 110B
-3268 CIRCLED HANGUL CIEUC
- # <circle> 110C
-3269 CIRCLED HANGUL CHIEUCH
- # <circle> 110E
-326A CIRCLED HANGUL KHIEUKH
- # <circle> 110F
-326B CIRCLED HANGUL THIEUTH
- # <circle> 1110
-326C CIRCLED HANGUL PHIEUPH
- # <circle> 1111
-326D CIRCLED HANGUL HIEUH
- # <circle> 1112
-@ Circled Hangul syllables
-326E CIRCLED HANGUL KIYEOK A
- # <circle> 1100 1161
-326F CIRCLED HANGUL NIEUN A
- # <circle> 1102 1161
-3270 CIRCLED HANGUL TIKEUT A
- # <circle> 1103 1161
-3271 CIRCLED HANGUL RIEUL A
- # <circle> 1105 1161
-3272 CIRCLED HANGUL MIEUM A
- # <circle> 1106 1161
-3273 CIRCLED HANGUL PIEUP A
- # <circle> 1107 1161
-3274 CIRCLED HANGUL SIOS A
- # <circle> 1109 1161
-3275 CIRCLED HANGUL IEUNG A
- # <circle> 110B 1161
-3276 CIRCLED HANGUL CIEUC A
- # <circle> 110C 1161
-3277 CIRCLED HANGUL CHIEUCH A
- # <circle> 110E 1161
-3278 CIRCLED HANGUL KHIEUKH A
- # <circle> 110F 1161
-3279 CIRCLED HANGUL THIEUTH A
- # <circle> 1110 1161
-327A CIRCLED HANGUL PHIEUPH A
- # <circle> 1111 1161
-327B CIRCLED HANGUL HIEUH A
- # <circle> 1112 1161
-@ Symbol
-327F KOREAN STANDARD SYMBOL
-@ Circled ideographs
-3280 CIRCLED IDEOGRAPH ONE
- = maru-iti, symbol of unification
- # <circle> 4E00
-3281 CIRCLED IDEOGRAPH TWO
- # <circle> 4E8C
-3282 CIRCLED IDEOGRAPH THREE
- # <circle> 4E09
-3283 CIRCLED IDEOGRAPH FOUR
- # <circle> 56DB
-3284 CIRCLED IDEOGRAPH FIVE
- # <circle> 4E94
-3285 CIRCLED IDEOGRAPH SIX
- # <circle> 516D
-3286 CIRCLED IDEOGRAPH SEVEN
- # <circle> 4E03
-3287 CIRCLED IDEOGRAPH EIGHT
- # <circle> 516B
-3288 CIRCLED IDEOGRAPH NINE
- # <circle> 4E5D
-3289 CIRCLED IDEOGRAPH TEN
- # <circle> 5341
-328A CIRCLED IDEOGRAPH MOON
- * Monday
- # <circle> 6708
-328B CIRCLED IDEOGRAPH FIRE
- * Tuesday
- # <circle> 706B
-328C CIRCLED IDEOGRAPH WATER
- * Wednesday
- # <circle> 6C34
-328D CIRCLED IDEOGRAPH WOOD
- * Thursday
- # <circle> 6728
-328E CIRCLED IDEOGRAPH METAL
- * Friday
- # <circle> 91D1
-328F CIRCLED IDEOGRAPH EARTH
- * Saturday
- # <circle> 571F
-3290 CIRCLED IDEOGRAPH SUN
- * Sunday
- # <circle> 65E5
-3291 CIRCLED IDEOGRAPH STOCK
- * incorporated
- # <circle> 682A
-3292 CIRCLED IDEOGRAPH HAVE
- * limited
- # <circle> 6709
-3293 CIRCLED IDEOGRAPH SOCIETY
- * company
- # <circle> 793E
-3294 CIRCLED IDEOGRAPH NAME
- # <circle> 540D
-3295 CIRCLED IDEOGRAPH SPECIAL
- # <circle> 7279
-3296 CIRCLED IDEOGRAPH FINANCIAL
- # <circle> 8CA1
-3297 CIRCLED IDEOGRAPH CONGRATULATION
- # <circle> 795D
-3298 CIRCLED IDEOGRAPH LABOR
- # <circle> 52B4
-3299 CIRCLED IDEOGRAPH SECRET
- # <circle> 79D8
-329A CIRCLED IDEOGRAPH MALE
- # <circle> 7537
-329B CIRCLED IDEOGRAPH FEMALE
- # <circle> 5973
-329C CIRCLED IDEOGRAPH SUITABLE
- # <circle> 9069
-329D CIRCLED IDEOGRAPH EXCELLENT
- # <circle> 512A
-329E CIRCLED IDEOGRAPH PRINT
- * name seal
- # <circle> 5370
-329F CIRCLED IDEOGRAPH ATTENTION
- # <circle> 6CE8
-32A0 CIRCLED IDEOGRAPH ITEM
- # <circle> 9805
-32A1 CIRCLED IDEOGRAPH REST
- * holiday
- # <circle> 4F11
-32A2 CIRCLED IDEOGRAPH COPY
- # <circle> 5199
-32A3 CIRCLED IDEOGRAPH CORRECT
- # <circle> 6B63
-32A4 CIRCLED IDEOGRAPH HIGH
- # <circle> 4E0A
-32A5 CIRCLED IDEOGRAPH CENTRE
- # <circle> 4E2D
-32A6 CIRCLED IDEOGRAPH LOW
- # <circle> 4E0B
-32A7 CIRCLED IDEOGRAPH LEFT
- # <circle> 5DE6
-32A8 CIRCLED IDEOGRAPH RIGHT
- # <circle> 53F3
-32A9 CIRCLED IDEOGRAPH MEDICINE
- # <circle> 533B
-32AA CIRCLED IDEOGRAPH RELIGION
- # <circle> 5B97
-32AB CIRCLED IDEOGRAPH STUDY
- # <circle> 5B66
-32AC CIRCLED IDEOGRAPH SUPERVISE
- # <circle> 76E3
-32AD CIRCLED IDEOGRAPH ENTERPRISE
- # <circle> 4F01
-32AE CIRCLED IDEOGRAPH RESOURCE
- # <circle> 8CC7
-32AF CIRCLED IDEOGRAPH ALLIANCE
- # <circle> 5354
-32B0 CIRCLED IDEOGRAPH NIGHT
- # <circle> 591C
-@ Telegraph symbols for months
-32C0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
- # 0031 6708
-32C1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
- # 0032 6708
-32C2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
- # 0033 6708
-32C3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
- # 0034 6708
-32C4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
- # 0035 6708
-32C5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
- # 0036 6708
-32C6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
- # 0037 6708
-32C7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
- # 0038 6708
-32C8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
- # 0039 6708
-32C9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
- # 0031 0030 6708
-32CA IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
- # 0031 0031 6708
-32CB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
- # 0031 0032 6708
-@ Circled Katakana
-32D0 CIRCLED KATAKANA A
- # <circle> 30A2
-32D1 CIRCLED KATAKANA I
- # <circle> 30A4
-32D2 CIRCLED KATAKANA U
- # <circle> 30A6
-32D3 CIRCLED KATAKANA E
- # <circle> 30A8
-32D4 CIRCLED KATAKANA O
- # <circle> 30AA
-32D5 CIRCLED KATAKANA KA
- # <circle> 30AB
-32D6 CIRCLED KATAKANA KI
- # <circle> 30AD
-32D7 CIRCLED KATAKANA KU
- # <circle> 30AF
-32D8 CIRCLED KATAKANA KE
- # <circle> 30B1
-32D9 CIRCLED KATAKANA KO
- # <circle> 30B3
-32DA CIRCLED KATAKANA SA
- # <circle> 30B5
-32DB CIRCLED KATAKANA SI
- # <circle> 30B7
-32DC CIRCLED KATAKANA SU
- # <circle> 30B9
-32DD CIRCLED KATAKANA SE
- # <circle> 30BB
-32DE CIRCLED KATAKANA SO
- # <circle> 30BD
-32DF CIRCLED KATAKANA TA
- # <circle> 30BF
-32E0 CIRCLED KATAKANA TI
- # <circle> 30C1
-32E1 CIRCLED KATAKANA TU
- # <circle> 30C4
-32E2 CIRCLED KATAKANA TE
- # <circle> 30C6
-32E3 CIRCLED KATAKANA TO
- # <circle> 30C8
-32E4 CIRCLED KATAKANA NA
- # <circle> 30CA
-32E5 CIRCLED KATAKANA NI
- # <circle> 30CB
-32E6 CIRCLED KATAKANA NU
- # <circle> 30CC
-32E7 CIRCLED KATAKANA NE
- # <circle> 30CD
-32E8 CIRCLED KATAKANA NO
- # <circle> 30CE
-32E9 CIRCLED KATAKANA HA
- # <circle> 30CF
-32EA CIRCLED KATAKANA HI
- # <circle> 30D2
-32EB CIRCLED KATAKANA HU
- # <circle> 30D5
-32EC CIRCLED KATAKANA HE
- # <circle> 30D8
-32ED CIRCLED KATAKANA HO
- # <circle> 30DB
-32EE CIRCLED KATAKANA MA
- # <circle> 30DE
-32EF CIRCLED KATAKANA MI
- # <circle> 30DF
-32F0 CIRCLED KATAKANA MU
- # <circle> 30E0
-32F1 CIRCLED KATAKANA ME
- # <circle> 30E1
-32F2 CIRCLED KATAKANA MO
- # <circle> 30E2
-32F3 CIRCLED KATAKANA YA
- # <circle> 30E4
-32F4 CIRCLED KATAKANA YU
- # <circle> 30E6
-32F5 CIRCLED KATAKANA YO
- # <circle> 30E8
-32F6 CIRCLED KATAKANA RA
- # <circle> 30E9
-32F7 CIRCLED KATAKANA RI
- # <circle> 30EA
-32F8 CIRCLED KATAKANA RU
- # <circle> 30EB
-32F9 CIRCLED KATAKANA RE
- # <circle> 30EC
-32FA CIRCLED KATAKANA RO
- # <circle> 30ED
-32FB CIRCLED KATAKANA WA
- # <circle> 30EF
-32FC CIRCLED KATAKANA WI
- # <circle> 30F0
-32FD CIRCLED KATAKANA WE
- # <circle> 30F1
-32FE CIRCLED KATAKANA WO
- # <circle> 30F2
-@@ 3300 CJK Compatibility 33FF
-@ Squared Katakana words
-3300 SQUARE APAATO
- * apartment
- # <square> 30A2 30D1 30FC 30C8
-3301 SQUARE ARUHUA
- * alpha
- # <square> 30A2 30EB 30D5 30A1
-3302 SQUARE ANPEA
- * ampere
- # <square> 30A2 30F3 30DA 30A2
-3303 SQUARE AARU
- * are (unit of area)
- # <square> 30A2 30FC 30EB
-3304 SQUARE ININGU
- * inning
- # <square> 30A4 30CB 30F3 30B0
-3305 SQUARE INTI
- * inch
- # <square> 30A4 30F3 30C1
-3306 SQUARE UON
- * won (Korean currency)
- # <square> 30A6 30A9 30F3
-3307 SQUARE ESUKUUDO
- * escudo (Portuguese currency)
- # <square> 30A8 30B9 30AF 30FC 30C9
-3308 SQUARE EEKAA
- * acre
- # <square> 30A8 30FC 30AB 30FC
-3309 SQUARE ONSU
- * ounce
- # <square> 30AA 30F3 30B9
-330A SQUARE OOMU
- * ohm
- # <square> 30AA 30FC 30E0
-330B SQUARE KAIRI
- * kai-ri: nautical mile
- # <square> 30AB 30A4 30EA
-330C SQUARE KARATTO
- * carat
- # <square> 30AB 30E9 30C3 30C8
-330D SQUARE KARORII
- * calorie
- # <square> 30AB 30ED 30EA 30FC
-330E SQUARE GARON
- * gallon
- # <square> 30AC 30ED 30F3
-330F SQUARE GANMA
- * gamma
- # <square> 30AC 30F3 30DE
-3310 SQUARE GIGA
- * giga-
- # <square> 30AE 30AC
-3311 SQUARE GINII
- * guinea
- # <square> 30AE 30CB 30FC
-3312 SQUARE KYURII
- * curie
- # <square> 30AD 30E5 30EA 30FC
-3313 SQUARE GIRUDAA
- * guilder
- # <square> 30AE 30EB 30C0 30FC
-3314 SQUARE KIRO
- * kilo-
- # <square> 30AD 30ED
-3315 SQUARE KIROGURAMU
- * kilogram
- # <square> 30AD 30ED 30B0 30E9 30E0
-3316 SQUARE KIROMEETORU
- * kilometer
- # <square> 30AD 30ED 30E1 30FC 30C8 30EB
-3317 SQUARE KIROWATTO
- * kilowatt
- # <square> 30AD 30ED 30EF 30C3 30C8
-3318 SQUARE GURAMU
- * gram
- # <square> 30B0 30E9 30E0
-3319 SQUARE GURAMUTON
- * gram ton
- # <square> 30B0 30E9 30E0 30C8 30F3
-331A SQUARE KURUZEIRO
- * cruzeiro (Brazilian currency)
- # <square> 30AF 30EB 30BC 30A4 30ED
-331B SQUARE KUROONE
- * krone
- # <square> 30AF 30ED 30FC 30CD
-331C SQUARE KEESU
- * case
- # <square> 30B1 30FC 30B9
-331D SQUARE KORUNA
- * koruna (Czech currency)
- # <square> 30B3 30EB 30CA
-331E SQUARE KOOPO
- * co-op
- # <square> 30B3 30FC 30DD
-331F SQUARE SAIKURU
- * cycle
- # <square> 30B5 30A4 30AF 30EB
-3320 SQUARE SANTIIMU
- * centime
- # <square> 30B5 30F3 30C1 30FC 30E0
-3321 SQUARE SIRINGU
- * shilling
- # <square> 30B7 30EA 30F3 30B0
-3322 SQUARE SENTI
- * centi-
- # <square> 30BB 30F3 30C1
-3323 SQUARE SENTO
- * cent
- # <square> 30BB 30F3 30C8
-3324 SQUARE DAASU
- * dozen
- # <square> 30C0 30FC 30B9
-3325 SQUARE DESI
- * deci-
- # <square> 30C7 30B7
-3326 SQUARE DORU
- * dollar
- # <square> 30C9 30EB
-3327 SQUARE TON
- * ton
- # <square> 30C8 30F3
-3328 SQUARE NANO
- * nano-
- # <square> 30CA 30CE
-3329 SQUARE NOTTO
- * knot, nautical mile
- # <square> 30CE 30C3 30C8
-332A SQUARE HAITU
- * heights
- # <square> 30CF 30A4 30C4
-332B SQUARE PAASENTO
- * percent
- # <square> 30D1 30FC 30BB 30F3 30C8
-332C SQUARE PAATU
- * parts
- # <square> 30D1 30FC 30C4
-332D SQUARE BAARERU
- * barrel
- # <square> 30D0 30FC 30EC 30EB
-332E SQUARE PIASUTORU
- * piaster
- # <square> 30D4 30A2 30B9 30C8 30EB
-332F SQUARE PIKURU
- * picul (unit of weight)
- # <square> 30D4 30AF 30EB
-3330 SQUARE PIKO
- * pico-
- # <square> 30D4 30B3
-3331 SQUARE BIRU
- * building
- # <square> 30D3 30EB
-3332 SQUARE HUARADDO
- * farad
- # <square> 30D5 30A1 30E9 30C3 30C9
-3333 SQUARE HUIITO
- * feet
- # <square> 30D5 30A3 30FC 30C8
-3334 SQUARE BUSSYERU
- * bushel
- # <square> 30D6 30C3 30B7 30A7 30EB
-3335 SQUARE HURAN
- * franc
- # <square> 30D5 30E9 30F3
-3336 SQUARE HEKUTAARU
- * hectare
- # <square> 30D8 30AF 30BF 30FC 30EB
-3337 SQUARE PESO
- * peso
- # <square> 30DA 30BD
-3338 SQUARE PENIHI
- * pfennig
- # <square> 30DA 30CB 30D2
-3339 SQUARE HERUTU
- * hertz
- # <square> 30D8 30EB 30C4
-333A SQUARE PENSU
- * pence
- # <square> 30DA 30F3 30B9
-333B SQUARE PEEZI
- * page
- # <square> 30DA 30FC 30B8
-333C SQUARE BEETA
- * beta
- # <square> 30D9 30FC 30BF
-333D SQUARE POINTO
- * point
- # <square> 30DD 30A4 30F3 30C8
-333E SQUARE BORUTO
- * volt, bolt
- # <square> 30DC 30EB 30C8
-333F SQUARE HON
- * hon: volume
- # <square> 30DB 30F3
-3340 SQUARE PONDO
- * pound
- # <square> 30DD 30F3 30C9
-3341 SQUARE HOORU
- * hall
- # <square> 30DB 30FC 30EB
-3342 SQUARE HOON
- * horn
- # <square> 30DB 30FC 30F3
-3343 SQUARE MAIKURO
- * micro-
- # <square> 30DE 30A4 30AF 30ED
-3344 SQUARE MAIRU
- * mile
- # <square> 30DE 30A4 30EB
-3345 SQUARE MAHHA
- * mach
- # <square> 30DE 30C3 30CF
-3346 SQUARE MARUKU
- * mark
- # <square> 30DE 30EB 30AF
-3347 SQUARE MANSYON
- * mansion (i.e. better quality apartment)
- # <square> 30DE 30F3 30B7 30E7 30F3
-3348 SQUARE MIKURON
- * micron
- # <square> 30DF 30AF 30ED 30F3
-3349 SQUARE MIRI
- * milli-
- # <square> 30DF 30EA
-334A SQUARE MIRIBAARU
- * millibar
- # <square> 30DF 30EA 30D0 30FC 30EB
-334B SQUARE MEGA
- * mega-
- # <square> 30E1 30AC
-334C SQUARE MEGATON
- * megaton
- # <square> 30E1 30AC 30C8 30F3
-334D SQUARE MEETORU
- * meter
- # <square> 30E1 30FC 30C8 30EB
-334E SQUARE YAADO
- * yard
- # <square> 30E4 30FC 30C9
-334F SQUARE YAARU
- * yard
- # <square> 30E4 30FC 30EB
-3350 SQUARE YUAN
- * yuan (Chinese currency)
- # <square> 30E6 30A2 30F3
-3351 SQUARE RITTORU
- * liter
- # <square> 30EA 30C3 30C8 30EB
-3352 SQUARE RIRA
- * lira
- # <square> 30EA 30E9
-3353 SQUARE RUPII
- * rupee
- # <square> 30EB 30D4 30FC
-3354 SQUARE RUUBURU
- * ruble
- # <square> 30EB 30FC 30D6 30EB
-3355 SQUARE REMU
- * rem (unit of radiation)
- # <square> 30EC 30E0
-3356 SQUARE RENTOGEN
- * roentgen
- # <square> 30EC 30F3 30C8 30B2 30F3
-3357 SQUARE WATTO
- * watt
- # <square> 30EF 30C3 30C8
-@ Telegraph symbols for hours
-3358 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
- # 0030 70B9
-3359 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
- # 0031 70B9
-335A IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
- # 0032 70B9
-335B IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
- # 0033 70B9
-335C IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
- # 0034 70B9
-335D IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
- # 0035 70B9
-335E IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
- # 0036 70B9
-335F IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
- # 0037 70B9
-3360 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
- # 0038 70B9
-3361 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
- # 0039 70B9
-3362 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
- # 0031 0030 70B9
-3363 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
- # 0031 0031 70B9
-3364 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
- # 0031 0032 70B9
-3365 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
- # 0031 0033 70B9
-3366 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
- # 0031 0034 70B9
-3367 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
- # 0031 0035 70B9
-3368 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
- # 0031 0036 70B9
-3369 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
- # 0031 0037 70B9
-336A IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
- # 0031 0038 70B9
-336B IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
- # 0031 0039 70B9
-336C IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
- # 0032 0030 70B9
-336D IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
- # 0032 0031 70B9
-336E IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
- # 0032 0032 70B9
-336F IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
- # 0032 0033 70B9
-3370 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
- # 0032 0034 70B9
-@ Squared Latin abbreviations
-3371 SQUARE HPA
- # <square> 0068 0050 0061
-3372 SQUARE DA
- # <square> 0064 0061
-3373 SQUARE AU
- # <square> 0041 0055
-3374 SQUARE BAR
- # <square> 0062 0061 0072
-3375 SQUARE OV
- # <square> 006F 0056
-3376 SQUARE PC
- # <square> 0070 0063
-@ Japanese era names
-337B SQUARE ERA NAME HEISEI
- # <square> 5E73 6210
-337C SQUARE ERA NAME SYOUWA
- # <square> 662D 548C
-337D SQUARE ERA NAME TAISYOU
- # <square> 5927 6B63
-337E SQUARE ERA NAME MEIZI
- # <square> 660E 6CBB
-@ Japanese corporation
-337F SQUARE CORPORATION
- = kabusiki-gaisya
- * incorporated
- # <square> 682A 5F0F 4F1A 793E
-@ Squared Latin abbreviations
-3380 SQUARE PA AMPS
- # <square> 0070 0041
-3381 SQUARE NA
- # <square> 006E 0041
-3382 SQUARE MU A
- # <square> 03BC 0041
-3383 SQUARE MA
- # <square> 006D 0041
-3384 SQUARE KA
- # <square> 006B 0041
-3385 SQUARE KB
- # <square> 004B 0042
-3386 SQUARE MB
- # <square> 004D 0042
-3387 SQUARE GB
- # <square> 0047 0042
-3388 SQUARE CAL
- # <square> 0063 0061 006C
-3389 SQUARE KCAL
- # <square> 006B 0063 0061 006C
-338A SQUARE PF
- # <square> 0070 0046
-338B SQUARE NF
- # <square> 006E 0046
-338C SQUARE MU F
- # <square> 03BC 0046
-338D SQUARE MU G
- # <square> 03BC 0067
-338E SQUARE MG
- # <square> 006D 0067
-338F SQUARE KG
- # <square> 006B 0067
-3390 SQUARE HZ
- # <square> 0048 007A
-3391 SQUARE KHZ
- # <square> 006B 0048 007A
-3392 SQUARE MHZ
- # <square> 004D 0048 007A
-3393 SQUARE GHZ
- # <square> 0047 0048 007A
-3394 SQUARE THZ
- # <square> 0054 0048 007A
-3395 SQUARE MU L
- # <square> 03BC 2113
-3396 SQUARE ML
- # <square> 006D 2113
-3397 SQUARE DL
- # <square> 0064 2113
-3398 SQUARE KL
- # <square> 006B 2113
-3399 SQUARE FM
- # <square> 0066 006D
-339A SQUARE NM
- # <square> 006E 006D
-339B SQUARE MU M
- # <square> 03BC 006D
-339C SQUARE MM
- # <square> 006D 006D
-339D SQUARE CM
- # <square> 0063 006D
-339E SQUARE KM
- # <square> 006B 006D
-339F SQUARE MM SQUARED
- # <square> 006D 006D 00B2
-33A0 SQUARE CM SQUARED
- # <square> 0063 006D 00B2
-33A1 SQUARE M SQUARED
- # <square> 006D 00B2
-33A2 SQUARE KM SQUARED
- # <square> 006B 006D 00B2
-33A3 SQUARE MM CUBED
- # <square> 006D 006D 00B3
-33A4 SQUARE CM CUBED
- # <square> 0063 006D 00B3
-33A5 SQUARE M CUBED
- # <square> 006D 00B3
-33A6 SQUARE KM CUBED
- # <square> 006B 006D 00B3
-33A7 SQUARE M OVER S
- # <square> 006D 2215 0073
-33A8 SQUARE M OVER S SQUARED
- # <square> 006D 2215 0073 00B2
-33A9 SQUARE PA
- # <square> 0050 0061
-33AA SQUARE KPA
- # <square> 006B 0050 0061
-33AB SQUARE MPA
- # <square> 004D 0050 0061
-33AC SQUARE GPA
- # <square> 0047 0050 0061
-33AD SQUARE RAD
- # <square> 0072 0061 0064
-33AE SQUARE RAD OVER S
- # <square> 0072 0061 0064 2215 0073
-33AF SQUARE RAD OVER S SQUARED
- # <square> 0072 0061 0064 2215 0073 00B2
-33B0 SQUARE PS
- # <square> 0070 0073
-33B1 SQUARE NS
- # <square> 006E 0073
-33B2 SQUARE MU S
- # <square> 03BC 0073
-33B3 SQUARE MS
- # <square> 006D 0073
-33B4 SQUARE PV
- # <square> 0070 0056
-33B5 SQUARE NV
- # <square> 006E 0056
-33B6 SQUARE MU V
- # <square> 03BC 0056
-33B7 SQUARE MV
- # <square> 006D 0056
-33B8 SQUARE KV
- # <square> 006B 0056
-33B9 SQUARE MV MEGA
- # <square> 004D 0056
-33BA SQUARE PW
- # <square> 0070 0057
-33BB SQUARE NW
- # <square> 006E 0057
-33BC SQUARE MU W
- # <square> 03BC 0057
-33BD SQUARE MW
- # <square> 006D 0057
-33BE SQUARE KW
- # <square> 006B 0057
-33BF SQUARE MW MEGA
- # <square> 004D 0057
-33C0 SQUARE K OHM
- # <square> 006B 03A9
-33C1 SQUARE M OHM
- # <square> 004D 03A9
-33C2 SQUARE AM
- # <square> 0061 002E 006D 002E
-33C3 SQUARE BQ
- # <square> 0042 0071
-33C4 SQUARE CC
- # <square> 0063 0063
-33C5 SQUARE CD
- # <square> 0063 0064
-33C6 SQUARE C OVER KG
- # <square> 0043 2215 006B 0067
-33C7 SQUARE CO
- # <square> 0043 006F 002E
-33C8 SQUARE DB
- # <square> 0064 0042
-33C9 SQUARE GY
- # <square> 0047 0079
-33CA SQUARE HA
- # <square> 0068 0061
-33CB SQUARE HP
- # <square> 0048 0050
-33CC SQUARE IN
- # <square> 0069 006E
-33CD SQUARE KK
- # <square> 004B 004B
-33CE SQUARE KM CAPITAL
- # <square> 004B 004D
-33CF SQUARE KT
- # <square> 006B 0074
-33D0 SQUARE LM
- # <square> 006C 006D
-33D1 SQUARE LN
- # <square> 006C 006E
-33D2 SQUARE LOG
- # <square> 006C 006F 0067
-33D3 SQUARE LX
- # <square> 006C 0078
-33D4 SQUARE MB SMALL
- # <square> 006D 0062
-33D5 SQUARE MIL
- # <square> 006D 0069 006C
-33D6 SQUARE MOL
- # <square> 006D 006F 006C
-33D7 SQUARE PH
- # <square> 0050 0048
-33D8 SQUARE PM
- # <square> 0070 002E 006D 002E
-33D9 SQUARE PPM
- # <square> 0050 0050 004D
-33DA SQUARE PR
- # <square> 0050 0052
-33DB SQUARE SR
- # <square> 0073 0072
-33DC SQUARE SV
- # <square> 0053 0076
-33DD SQUARE WB
- # <square> 0057 0062
-@ Telegraph symbols for days
-33E0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
- # 0031 65E5
-33E1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
- # 0032 65E5
-33E2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
- # 0033 65E5
-33E3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
- # 0034 65E5
-33E4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
- # 0035 65E5
-33E5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
- # 0036 65E5
-33E6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
- # 0037 65E5
-33E7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
- # 0038 65E5
-33E8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
- # 0039 65E5
-33E9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
- # 0031 0030 65E5
-33EA IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
- # 0031 0031 65E5
-33EB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
- # 0031 0032 65E5
-33EC IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
- # 0031 0033 65E5
-33ED IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
- # 0031 0034 65E5
-33EE IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
- # 0031 0035 65E5
-33EF IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
- # 0031 0036 65E5
-33F0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
- # 0031 0037 65E5
-33F1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
- # 0031 0038 65E5
-33F2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
- # 0031 0039 65E5
-33F3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
- # 0032 0030 65E5
-33F4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
- # 0032 0031 65E5
-33F5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
- # 0032 0032 65E5
-33F6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
- # 0032 0033 65E5
-33F7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
- # 0032 0034 65E5
-33F8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
- # 0032 0035 65E5
-33F9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
- # 0032 0036 65E5
-33FA IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
- # 0032 0037 65E5
-33FB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
- # 0032 0038 65E5
-33FC IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
- # 0032 0039 65E5
-33FD IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
- # 0033 0030 65E5
-33FE IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
- # 0033 0031 65E5
-@@ 3400 CJK Unified Ideographs Extension A 4DB5
-@@ 4E00 CJK Unified Ideographs 9FA5
-@@ A000 Yi Syllables A48F
-@ Syllables
-A000 YI SYLLABLE IT
-A001 YI SYLLABLE IX
-A002 YI SYLLABLE I
-A003 YI SYLLABLE IP
-A004 YI SYLLABLE IET
-A005 YI SYLLABLE IEX
-A006 YI SYLLABLE IE
-A007 YI SYLLABLE IEP
-A008 YI SYLLABLE AT
-A009 YI SYLLABLE AX
-A00A YI SYLLABLE A
-A00B YI SYLLABLE AP
-A00C YI SYLLABLE UOX
-A00D YI SYLLABLE UO
-A00E YI SYLLABLE UOP
-A00F YI SYLLABLE OT
-A010 YI SYLLABLE OX
-A011 YI SYLLABLE O
-A012 YI SYLLABLE OP
-A013 YI SYLLABLE EX
-A014 YI SYLLABLE E
-A015 YI SYLLABLE WU
-A016 YI SYLLABLE BIT
-A017 YI SYLLABLE BIX
-A018 YI SYLLABLE BI
-A019 YI SYLLABLE BIP
-A01A YI SYLLABLE BIET
-A01B YI SYLLABLE BIEX
-A01C YI SYLLABLE BIE
-A01D YI SYLLABLE BIEP
-A01E YI SYLLABLE BAT
-A01F YI SYLLABLE BAX
-A020 YI SYLLABLE BA
-A021 YI SYLLABLE BAP
-A022 YI SYLLABLE BUOX
-A023 YI SYLLABLE BUO
-A024 YI SYLLABLE BUOP
-A025 YI SYLLABLE BOT
-A026 YI SYLLABLE BOX
-A027 YI SYLLABLE BO
-A028 YI SYLLABLE BOP
-A029 YI SYLLABLE BEX
-A02A YI SYLLABLE BE
-A02B YI SYLLABLE BEP
-A02C YI SYLLABLE BUT
-A02D YI SYLLABLE BUX
-A02E YI SYLLABLE BU
-A02F YI SYLLABLE BUP
-A030 YI SYLLABLE BURX
-A031 YI SYLLABLE BUR
-A032 YI SYLLABLE BYT
-A033 YI SYLLABLE BYX
-A034 YI SYLLABLE BY
-A035 YI SYLLABLE BYP
-A036 YI SYLLABLE BYRX
-A037 YI SYLLABLE BYR
-A038 YI SYLLABLE PIT
-A039 YI SYLLABLE PIX
-A03A YI SYLLABLE PI
-A03B YI SYLLABLE PIP
-A03C YI SYLLABLE PIEX
-A03D YI SYLLABLE PIE
-A03E YI SYLLABLE PIEP
-A03F YI SYLLABLE PAT
-A040 YI SYLLABLE PAX
-A041 YI SYLLABLE PA
-A042 YI SYLLABLE PAP
-A043 YI SYLLABLE PUOX
-A044 YI SYLLABLE PUO
-A045 YI SYLLABLE PUOP
-A046 YI SYLLABLE POT
-A047 YI SYLLABLE POX
-A048 YI SYLLABLE PO
-A049 YI SYLLABLE POP
-A04A YI SYLLABLE PUT
-A04B YI SYLLABLE PUX
-A04C YI SYLLABLE PU
-A04D YI SYLLABLE PUP
-A04E YI SYLLABLE PURX
-A04F YI SYLLABLE PUR
-A050 YI SYLLABLE PYT
-A051 YI SYLLABLE PYX
-A052 YI SYLLABLE PY
-A053 YI SYLLABLE PYP
-A054 YI SYLLABLE PYRX
-A055 YI SYLLABLE PYR
-A056 YI SYLLABLE BBIT
-A057 YI SYLLABLE BBIX
-A058 YI SYLLABLE BBI
-A059 YI SYLLABLE BBIP
-A05A YI SYLLABLE BBIET
-A05B YI SYLLABLE BBIEX
-A05C YI SYLLABLE BBIE
-A05D YI SYLLABLE BBIEP
-A05E YI SYLLABLE BBAT
-A05F YI SYLLABLE BBAX
-A060 YI SYLLABLE BBA
-A061 YI SYLLABLE BBAP
-A062 YI SYLLABLE BBUOX
-A063 YI SYLLABLE BBUO
-A064 YI SYLLABLE BBUOP
-A065 YI SYLLABLE BBOT
-A066 YI SYLLABLE BBOX
-A067 YI SYLLABLE BBO
-A068 YI SYLLABLE BBOP
-A069 YI SYLLABLE BBEX
-A06A YI SYLLABLE BBE
-A06B YI SYLLABLE BBEP
-A06C YI SYLLABLE BBUT
-A06D YI SYLLABLE BBUX
-A06E YI SYLLABLE BBU
-A06F YI SYLLABLE BBUP
-A070 YI SYLLABLE BBURX
-A071 YI SYLLABLE BBUR
-A072 YI SYLLABLE BBYT
-A073 YI SYLLABLE BBYX
-A074 YI SYLLABLE BBY
-A075 YI SYLLABLE BBYP
-A076 YI SYLLABLE NBIT
-A077 YI SYLLABLE NBIX
-A078 YI SYLLABLE NBI
-A079 YI SYLLABLE NBIP
-A07A YI SYLLABLE NBIEX
-A07B YI SYLLABLE NBIE
-A07C YI SYLLABLE NBIEP
-A07D YI SYLLABLE NBAT
-A07E YI SYLLABLE NBAX
-A07F YI SYLLABLE NBA
-A080 YI SYLLABLE NBAP
-A081 YI SYLLABLE NBOT
-A082 YI SYLLABLE NBOX
-A083 YI SYLLABLE NBO
-A084 YI SYLLABLE NBOP
-A085 YI SYLLABLE NBUT
-A086 YI SYLLABLE NBUX
-A087 YI SYLLABLE NBU
-A088 YI SYLLABLE NBUP
-A089 YI SYLLABLE NBURX
-A08A YI SYLLABLE NBUR
-A08B YI SYLLABLE NBYT
-A08C YI SYLLABLE NBYX
-A08D YI SYLLABLE NBY
-A08E YI SYLLABLE NBYP
-A08F YI SYLLABLE NBYRX
-A090 YI SYLLABLE NBYR
-A091 YI SYLLABLE HMIT
-A092 YI SYLLABLE HMIX
-A093 YI SYLLABLE HMI
-A094 YI SYLLABLE HMIP
-A095 YI SYLLABLE HMIEX
-A096 YI SYLLABLE HMIE
-A097 YI SYLLABLE HMIEP
-A098 YI SYLLABLE HMAT
-A099 YI SYLLABLE HMAX
-A09A YI SYLLABLE HMA
-A09B YI SYLLABLE HMAP
-A09C YI SYLLABLE HMUOX
-A09D YI SYLLABLE HMUO
-A09E YI SYLLABLE HMUOP
-A09F YI SYLLABLE HMOT
-A0A0 YI SYLLABLE HMOX
-A0A1 YI SYLLABLE HMO
-A0A2 YI SYLLABLE HMOP
-A0A3 YI SYLLABLE HMUT
-A0A4 YI SYLLABLE HMUX
-A0A5 YI SYLLABLE HMU
-A0A6 YI SYLLABLE HMUP
-A0A7 YI SYLLABLE HMURX
-A0A8 YI SYLLABLE HMUR
-A0A9 YI SYLLABLE HMYX
-A0AA YI SYLLABLE HMY
-A0AB YI SYLLABLE HMYP
-A0AC YI SYLLABLE HMYRX
-A0AD YI SYLLABLE HMYR
-A0AE YI SYLLABLE MIT
-A0AF YI SYLLABLE MIX
-A0B0 YI SYLLABLE MI
-A0B1 YI SYLLABLE MIP
-A0B2 YI SYLLABLE MIEX
-A0B3 YI SYLLABLE MIE
-A0B4 YI SYLLABLE MIEP
-A0B5 YI SYLLABLE MAT
-A0B6 YI SYLLABLE MAX
-A0B7 YI SYLLABLE MA
-A0B8 YI SYLLABLE MAP
-A0B9 YI SYLLABLE MUOT
-A0BA YI SYLLABLE MUOX
-A0BB YI SYLLABLE MUO
-A0BC YI SYLLABLE MUOP
-A0BD YI SYLLABLE MOT
-A0BE YI SYLLABLE MOX
-A0BF YI SYLLABLE MO
-A0C0 YI SYLLABLE MOP
-A0C1 YI SYLLABLE MEX
-A0C2 YI SYLLABLE ME
-A0C3 YI SYLLABLE MUT
-A0C4 YI SYLLABLE MUX
-A0C5 YI SYLLABLE MU
-A0C6 YI SYLLABLE MUP
-A0C7 YI SYLLABLE MURX
-A0C8 YI SYLLABLE MUR
-A0C9 YI SYLLABLE MYT
-A0CA YI SYLLABLE MYX
-A0CB YI SYLLABLE MY
-A0CC YI SYLLABLE MYP
-A0CD YI SYLLABLE FIT
-A0CE YI SYLLABLE FIX
-A0CF YI SYLLABLE FI
-A0D0 YI SYLLABLE FIP
-A0D1 YI SYLLABLE FAT
-A0D2 YI SYLLABLE FAX
-A0D3 YI SYLLABLE FA
-A0D4 YI SYLLABLE FAP
-A0D5 YI SYLLABLE FOX
-A0D6 YI SYLLABLE FO
-A0D7 YI SYLLABLE FOP
-A0D8 YI SYLLABLE FUT
-A0D9 YI SYLLABLE FUX
-A0DA YI SYLLABLE FU
-A0DB YI SYLLABLE FUP
-A0DC YI SYLLABLE FURX
-A0DD YI SYLLABLE FUR
-A0DE YI SYLLABLE FYT
-A0DF YI SYLLABLE FYX
-A0E0 YI SYLLABLE FY
-A0E1 YI SYLLABLE FYP
-A0E2 YI SYLLABLE VIT
-A0E3 YI SYLLABLE VIX
-A0E4 YI SYLLABLE VI
-A0E5 YI SYLLABLE VIP
-A0E6 YI SYLLABLE VIET
-A0E7 YI SYLLABLE VIEX
-A0E8 YI SYLLABLE VIE
-A0E9 YI SYLLABLE VIEP
-A0EA YI SYLLABLE VAT
-A0EB YI SYLLABLE VAX
-A0EC YI SYLLABLE VA
-A0ED YI SYLLABLE VAP
-A0EE YI SYLLABLE VOT
-A0EF YI SYLLABLE VOX
-A0F0 YI SYLLABLE VO
-A0F1 YI SYLLABLE VOP
-A0F2 YI SYLLABLE VEX
-A0F3 YI SYLLABLE VEP
-A0F4 YI SYLLABLE VUT
-A0F5 YI SYLLABLE VUX
-A0F6 YI SYLLABLE VU
-A0F7 YI SYLLABLE VUP
-A0F8 YI SYLLABLE VURX
-A0F9 YI SYLLABLE VUR
-A0FA YI SYLLABLE VYT
-A0FB YI SYLLABLE VYX
-A0FC YI SYLLABLE VY
-A0FD YI SYLLABLE VYP
-A0FE YI SYLLABLE VYRX
-A0FF YI SYLLABLE VYR
-A100 YI SYLLABLE DIT
-A101 YI SYLLABLE DIX
-A102 YI SYLLABLE DI
-A103 YI SYLLABLE DIP
-A104 YI SYLLABLE DIEX
-A105 YI SYLLABLE DIE
-A106 YI SYLLABLE DIEP
-A107 YI SYLLABLE DAT
-A108 YI SYLLABLE DAX
-A109 YI SYLLABLE DA
-A10A YI SYLLABLE DAP
-A10B YI SYLLABLE DUOX
-A10C YI SYLLABLE DUO
-A10D YI SYLLABLE DOT
-A10E YI SYLLABLE DOX
-A10F YI SYLLABLE DO
-A110 YI SYLLABLE DOP
-A111 YI SYLLABLE DEX
-A112 YI SYLLABLE DE
-A113 YI SYLLABLE DEP
-A114 YI SYLLABLE DUT
-A115 YI SYLLABLE DUX
-A116 YI SYLLABLE DU
-A117 YI SYLLABLE DUP
-A118 YI SYLLABLE DURX
-A119 YI SYLLABLE DUR
-A11A YI SYLLABLE TIT
-A11B YI SYLLABLE TIX
-A11C YI SYLLABLE TI
-A11D YI SYLLABLE TIP
-A11E YI SYLLABLE TIEX
-A11F YI SYLLABLE TIE
-A120 YI SYLLABLE TIEP
-A121 YI SYLLABLE TAT
-A122 YI SYLLABLE TAX
-A123 YI SYLLABLE TA
-A124 YI SYLLABLE TAP
-A125 YI SYLLABLE TUOT
-A126 YI SYLLABLE TUOX
-A127 YI SYLLABLE TUO
-A128 YI SYLLABLE TUOP
-A129 YI SYLLABLE TOT
-A12A YI SYLLABLE TOX
-A12B YI SYLLABLE TO
-A12C YI SYLLABLE TOP
-A12D YI SYLLABLE TEX
-A12E YI SYLLABLE TE
-A12F YI SYLLABLE TEP
-A130 YI SYLLABLE TUT
-A131 YI SYLLABLE TUX
-A132 YI SYLLABLE TU
-A133 YI SYLLABLE TUP
-A134 YI SYLLABLE TURX
-A135 YI SYLLABLE TUR
-A136 YI SYLLABLE DDIT
-A137 YI SYLLABLE DDIX
-A138 YI SYLLABLE DDI
-A139 YI SYLLABLE DDIP
-A13A YI SYLLABLE DDIEX
-A13B YI SYLLABLE DDIE
-A13C YI SYLLABLE DDIEP
-A13D YI SYLLABLE DDAT
-A13E YI SYLLABLE DDAX
-A13F YI SYLLABLE DDA
-A140 YI SYLLABLE DDAP
-A141 YI SYLLABLE DDUOX
-A142 YI SYLLABLE DDUO
-A143 YI SYLLABLE DDUOP
-A144 YI SYLLABLE DDOT
-A145 YI SYLLABLE DDOX
-A146 YI SYLLABLE DDO
-A147 YI SYLLABLE DDOP
-A148 YI SYLLABLE DDEX
-A149 YI SYLLABLE DDE
-A14A YI SYLLABLE DDEP
-A14B YI SYLLABLE DDUT
-A14C YI SYLLABLE DDUX
-A14D YI SYLLABLE DDU
-A14E YI SYLLABLE DDUP
-A14F YI SYLLABLE DDURX
-A150 YI SYLLABLE DDUR
-A151 YI SYLLABLE NDIT
-A152 YI SYLLABLE NDIX
-A153 YI SYLLABLE NDI
-A154 YI SYLLABLE NDIP
-A155 YI SYLLABLE NDIEX
-A156 YI SYLLABLE NDIE
-A157 YI SYLLABLE NDAT
-A158 YI SYLLABLE NDAX
-A159 YI SYLLABLE NDA
-A15A YI SYLLABLE NDAP
-A15B YI SYLLABLE NDOT
-A15C YI SYLLABLE NDOX
-A15D YI SYLLABLE NDO
-A15E YI SYLLABLE NDOP
-A15F YI SYLLABLE NDEX
-A160 YI SYLLABLE NDE
-A161 YI SYLLABLE NDEP
-A162 YI SYLLABLE NDUT
-A163 YI SYLLABLE NDUX
-A164 YI SYLLABLE NDU
-A165 YI SYLLABLE NDUP
-A166 YI SYLLABLE NDURX
-A167 YI SYLLABLE NDUR
-A168 YI SYLLABLE HNIT
-A169 YI SYLLABLE HNIX
-A16A YI SYLLABLE HNI
-A16B YI SYLLABLE HNIP
-A16C YI SYLLABLE HNIET
-A16D YI SYLLABLE HNIEX
-A16E YI SYLLABLE HNIE
-A16F YI SYLLABLE HNIEP
-A170 YI SYLLABLE HNAT
-A171 YI SYLLABLE HNAX
-A172 YI SYLLABLE HNA
-A173 YI SYLLABLE HNAP
-A174 YI SYLLABLE HNUOX
-A175 YI SYLLABLE HNUO
-A176 YI SYLLABLE HNOT
-A177 YI SYLLABLE HNOX
-A178 YI SYLLABLE HNOP
-A179 YI SYLLABLE HNEX
-A17A YI SYLLABLE HNE
-A17B YI SYLLABLE HNEP
-A17C YI SYLLABLE HNUT
-A17D YI SYLLABLE NIT
-A17E YI SYLLABLE NIX
-A17F YI SYLLABLE NI
-A180 YI SYLLABLE NIP
-A181 YI SYLLABLE NIEX
-A182 YI SYLLABLE NIE
-A183 YI SYLLABLE NIEP
-A184 YI SYLLABLE NAX
-A185 YI SYLLABLE NA
-A186 YI SYLLABLE NAP
-A187 YI SYLLABLE NUOX
-A188 YI SYLLABLE NUO
-A189 YI SYLLABLE NUOP
-A18A YI SYLLABLE NOT
-A18B YI SYLLABLE NOX
-A18C YI SYLLABLE NO
-A18D YI SYLLABLE NOP
-A18E YI SYLLABLE NEX
-A18F YI SYLLABLE NE
-A190 YI SYLLABLE NEP
-A191 YI SYLLABLE NUT
-A192 YI SYLLABLE NUX
-A193 YI SYLLABLE NU
-A194 YI SYLLABLE NUP
-A195 YI SYLLABLE NURX
-A196 YI SYLLABLE NUR
-A197 YI SYLLABLE HLIT
-A198 YI SYLLABLE HLIX
-A199 YI SYLLABLE HLI
-A19A YI SYLLABLE HLIP
-A19B YI SYLLABLE HLIEX
-A19C YI SYLLABLE HLIE
-A19D YI SYLLABLE HLIEP
-A19E YI SYLLABLE HLAT
-A19F YI SYLLABLE HLAX
-A1A0 YI SYLLABLE HLA
-A1A1 YI SYLLABLE HLAP
-A1A2 YI SYLLABLE HLUOX
-A1A3 YI SYLLABLE HLUO
-A1A4 YI SYLLABLE HLUOP
-A1A5 YI SYLLABLE HLOX
-A1A6 YI SYLLABLE HLO
-A1A7 YI SYLLABLE HLOP
-A1A8 YI SYLLABLE HLEX
-A1A9 YI SYLLABLE HLE
-A1AA YI SYLLABLE HLEP
-A1AB YI SYLLABLE HLUT
-A1AC YI SYLLABLE HLUX
-A1AD YI SYLLABLE HLU
-A1AE YI SYLLABLE HLUP
-A1AF YI SYLLABLE HLURX
-A1B0 YI SYLLABLE HLUR
-A1B1 YI SYLLABLE HLYT
-A1B2 YI SYLLABLE HLYX
-A1B3 YI SYLLABLE HLY
-A1B4 YI SYLLABLE HLYP
-A1B5 YI SYLLABLE HLYRX
-A1B6 YI SYLLABLE HLYR
-A1B7 YI SYLLABLE LIT
-A1B8 YI SYLLABLE LIX
-A1B9 YI SYLLABLE LI
-A1BA YI SYLLABLE LIP
-A1BB YI SYLLABLE LIET
-A1BC YI SYLLABLE LIEX
-A1BD YI SYLLABLE LIE
-A1BE YI SYLLABLE LIEP
-A1BF YI SYLLABLE LAT
-A1C0 YI SYLLABLE LAX
-A1C1 YI SYLLABLE LA
-A1C2 YI SYLLABLE LAP
-A1C3 YI SYLLABLE LUOT
-A1C4 YI SYLLABLE LUOX
-A1C5 YI SYLLABLE LUO
-A1C6 YI SYLLABLE LUOP
-A1C7 YI SYLLABLE LOT
-A1C8 YI SYLLABLE LOX
-A1C9 YI SYLLABLE LO
-A1CA YI SYLLABLE LOP
-A1CB YI SYLLABLE LEX
-A1CC YI SYLLABLE LE
-A1CD YI SYLLABLE LEP
-A1CE YI SYLLABLE LUT
-A1CF YI SYLLABLE LUX
-A1D0 YI SYLLABLE LU
-A1D1 YI SYLLABLE LUP
-A1D2 YI SYLLABLE LURX
-A1D3 YI SYLLABLE LUR
-A1D4 YI SYLLABLE LYT
-A1D5 YI SYLLABLE LYX
-A1D6 YI SYLLABLE LY
-A1D7 YI SYLLABLE LYP
-A1D8 YI SYLLABLE LYRX
-A1D9 YI SYLLABLE LYR
-A1DA YI SYLLABLE GIT
-A1DB YI SYLLABLE GIX
-A1DC YI SYLLABLE GI
-A1DD YI SYLLABLE GIP
-A1DE YI SYLLABLE GIET
-A1DF YI SYLLABLE GIEX
-A1E0 YI SYLLABLE GIE
-A1E1 YI SYLLABLE GIEP
-A1E2 YI SYLLABLE GAT
-A1E3 YI SYLLABLE GAX
-A1E4 YI SYLLABLE GA
-A1E5 YI SYLLABLE GAP
-A1E6 YI SYLLABLE GUOT
-A1E7 YI SYLLABLE GUOX
-A1E8 YI SYLLABLE GUO
-A1E9 YI SYLLABLE GUOP
-A1EA YI SYLLABLE GOT
-A1EB YI SYLLABLE GOX
-A1EC YI SYLLABLE GO
-A1ED YI SYLLABLE GOP
-A1EE YI SYLLABLE GET
-A1EF YI SYLLABLE GEX
-A1F0 YI SYLLABLE GE
-A1F1 YI SYLLABLE GEP
-A1F2 YI SYLLABLE GUT
-A1F3 YI SYLLABLE GUX
-A1F4 YI SYLLABLE GU
-A1F5 YI SYLLABLE GUP
-A1F6 YI SYLLABLE GURX
-A1F7 YI SYLLABLE GUR
-A1F8 YI SYLLABLE KIT
-A1F9 YI SYLLABLE KIX
-A1FA YI SYLLABLE KI
-A1FB YI SYLLABLE KIP
-A1FC YI SYLLABLE KIEX
-A1FD YI SYLLABLE KIE
-A1FE YI SYLLABLE KIEP
-A1FF YI SYLLABLE KAT
-A200 YI SYLLABLE KAX
-A201 YI SYLLABLE KA
-A202 YI SYLLABLE KAP
-A203 YI SYLLABLE KUOX
-A204 YI SYLLABLE KUO
-A205 YI SYLLABLE KUOP
-A206 YI SYLLABLE KOT
-A207 YI SYLLABLE KOX
-A208 YI SYLLABLE KO
-A209 YI SYLLABLE KOP
-A20A YI SYLLABLE KET
-A20B YI SYLLABLE KEX
-A20C YI SYLLABLE KE
-A20D YI SYLLABLE KEP
-A20E YI SYLLABLE KUT
-A20F YI SYLLABLE KUX
-A210 YI SYLLABLE KU
-A211 YI SYLLABLE KUP
-A212 YI SYLLABLE KURX
-A213 YI SYLLABLE KUR
-A214 YI SYLLABLE GGIT
-A215 YI SYLLABLE GGIX
-A216 YI SYLLABLE GGI
-A217 YI SYLLABLE GGIEX
-A218 YI SYLLABLE GGIE
-A219 YI SYLLABLE GGIEP
-A21A YI SYLLABLE GGAT
-A21B YI SYLLABLE GGAX
-A21C YI SYLLABLE GGA
-A21D YI SYLLABLE GGAP
-A21E YI SYLLABLE GGUOT
-A21F YI SYLLABLE GGUOX
-A220 YI SYLLABLE GGUO
-A221 YI SYLLABLE GGUOP
-A222 YI SYLLABLE GGOT
-A223 YI SYLLABLE GGOX
-A224 YI SYLLABLE GGO
-A225 YI SYLLABLE GGOP
-A226 YI SYLLABLE GGET
-A227 YI SYLLABLE GGEX
-A228 YI SYLLABLE GGE
-A229 YI SYLLABLE GGEP
-A22A YI SYLLABLE GGUT
-A22B YI SYLLABLE GGUX
-A22C YI SYLLABLE GGU
-A22D YI SYLLABLE GGUP
-A22E YI SYLLABLE GGURX
-A22F YI SYLLABLE GGUR
-A230 YI SYLLABLE MGIEX
-A231 YI SYLLABLE MGIE
-A232 YI SYLLABLE MGAT
-A233 YI SYLLABLE MGAX
-A234 YI SYLLABLE MGA
-A235 YI SYLLABLE MGAP
-A236 YI SYLLABLE MGUOX
-A237 YI SYLLABLE MGUO
-A238 YI SYLLABLE MGUOP
-A239 YI SYLLABLE MGOT
-A23A YI SYLLABLE MGOX
-A23B YI SYLLABLE MGO
-A23C YI SYLLABLE MGOP
-A23D YI SYLLABLE MGEX
-A23E YI SYLLABLE MGE
-A23F YI SYLLABLE MGEP
-A240 YI SYLLABLE MGUT
-A241 YI SYLLABLE MGUX
-A242 YI SYLLABLE MGU
-A243 YI SYLLABLE MGUP
-A244 YI SYLLABLE MGURX
-A245 YI SYLLABLE MGUR
-A246 YI SYLLABLE HXIT
-A247 YI SYLLABLE HXIX
-A248 YI SYLLABLE HXI
-A249 YI SYLLABLE HXIP
-A24A YI SYLLABLE HXIET
-A24B YI SYLLABLE HXIEX
-A24C YI SYLLABLE HXIE
-A24D YI SYLLABLE HXIEP
-A24E YI SYLLABLE HXAT
-A24F YI SYLLABLE HXAX
-A250 YI SYLLABLE HXA
-A251 YI SYLLABLE HXAP
-A252 YI SYLLABLE HXUOT
-A253 YI SYLLABLE HXUOX
-A254 YI SYLLABLE HXUO
-A255 YI SYLLABLE HXUOP
-A256 YI SYLLABLE HXOT
-A257 YI SYLLABLE HXOX
-A258 YI SYLLABLE HXO
-A259 YI SYLLABLE HXOP
-A25A YI SYLLABLE HXEX
-A25B YI SYLLABLE HXE
-A25C YI SYLLABLE HXEP
-A25D YI SYLLABLE NGIEX
-A25E YI SYLLABLE NGIE
-A25F YI SYLLABLE NGIEP
-A260 YI SYLLABLE NGAT
-A261 YI SYLLABLE NGAX
-A262 YI SYLLABLE NGA
-A263 YI SYLLABLE NGAP
-A264 YI SYLLABLE NGUOT
-A265 YI SYLLABLE NGUOX
-A266 YI SYLLABLE NGUO
-A267 YI SYLLABLE NGOT
-A268 YI SYLLABLE NGOX
-A269 YI SYLLABLE NGO
-A26A YI SYLLABLE NGOP
-A26B YI SYLLABLE NGEX
-A26C YI SYLLABLE NGE
-A26D YI SYLLABLE NGEP
-A26E YI SYLLABLE HIT
-A26F YI SYLLABLE HIEX
-A270 YI SYLLABLE HIE
-A271 YI SYLLABLE HAT
-A272 YI SYLLABLE HAX
-A273 YI SYLLABLE HA
-A274 YI SYLLABLE HAP
-A275 YI SYLLABLE HUOT
-A276 YI SYLLABLE HUOX
-A277 YI SYLLABLE HUO
-A278 YI SYLLABLE HUOP
-A279 YI SYLLABLE HOT
-A27A YI SYLLABLE HOX
-A27B YI SYLLABLE HO
-A27C YI SYLLABLE HOP
-A27D YI SYLLABLE HEX
-A27E YI SYLLABLE HE
-A27F YI SYLLABLE HEP
-A280 YI SYLLABLE WAT
-A281 YI SYLLABLE WAX
-A282 YI SYLLABLE WA
-A283 YI SYLLABLE WAP
-A284 YI SYLLABLE WUOX
-A285 YI SYLLABLE WUO
-A286 YI SYLLABLE WUOP
-A287 YI SYLLABLE WOX
-A288 YI SYLLABLE WO
-A289 YI SYLLABLE WOP
-A28A YI SYLLABLE WEX
-A28B YI SYLLABLE WE
-A28C YI SYLLABLE WEP
-A28D YI SYLLABLE ZIT
-A28E YI SYLLABLE ZIX
-A28F YI SYLLABLE ZI
-A290 YI SYLLABLE ZIP
-A291 YI SYLLABLE ZIEX
-A292 YI SYLLABLE ZIE
-A293 YI SYLLABLE ZIEP
-A294 YI SYLLABLE ZAT
-A295 YI SYLLABLE ZAX
-A296 YI SYLLABLE ZA
-A297 YI SYLLABLE ZAP
-A298 YI SYLLABLE ZUOX
-A299 YI SYLLABLE ZUO
-A29A YI SYLLABLE ZUOP
-A29B YI SYLLABLE ZOT
-A29C YI SYLLABLE ZOX
-A29D YI SYLLABLE ZO
-A29E YI SYLLABLE ZOP
-A29F YI SYLLABLE ZEX
-A2A0 YI SYLLABLE ZE
-A2A1 YI SYLLABLE ZEP
-A2A2 YI SYLLABLE ZUT
-A2A3 YI SYLLABLE ZUX
-A2A4 YI SYLLABLE ZU
-A2A5 YI SYLLABLE ZUP
-A2A6 YI SYLLABLE ZURX
-A2A7 YI SYLLABLE ZUR
-A2A8 YI SYLLABLE ZYT
-A2A9 YI SYLLABLE ZYX
-A2AA YI SYLLABLE ZY
-A2AB YI SYLLABLE ZYP
-A2AC YI SYLLABLE ZYRX
-A2AD YI SYLLABLE ZYR
-A2AE YI SYLLABLE CIT
-A2AF YI SYLLABLE CIX
-A2B0 YI SYLLABLE CI
-A2B1 YI SYLLABLE CIP
-A2B2 YI SYLLABLE CIET
-A2B3 YI SYLLABLE CIEX
-A2B4 YI SYLLABLE CIE
-A2B5 YI SYLLABLE CIEP
-A2B6 YI SYLLABLE CAT
-A2B7 YI SYLLABLE CAX
-A2B8 YI SYLLABLE CA
-A2B9 YI SYLLABLE CAP
-A2BA YI SYLLABLE CUOX
-A2BB YI SYLLABLE CUO
-A2BC YI SYLLABLE CUOP
-A2BD YI SYLLABLE COT
-A2BE YI SYLLABLE COX
-A2BF YI SYLLABLE CO
-A2C0 YI SYLLABLE COP
-A2C1 YI SYLLABLE CEX
-A2C2 YI SYLLABLE CE
-A2C3 YI SYLLABLE CEP
-A2C4 YI SYLLABLE CUT
-A2C5 YI SYLLABLE CUX
-A2C6 YI SYLLABLE CU
-A2C7 YI SYLLABLE CUP
-A2C8 YI SYLLABLE CURX
-A2C9 YI SYLLABLE CUR
-A2CA YI SYLLABLE CYT
-A2CB YI SYLLABLE CYX
-A2CC YI SYLLABLE CY
-A2CD YI SYLLABLE CYP
-A2CE YI SYLLABLE CYRX
-A2CF YI SYLLABLE CYR
-A2D0 YI SYLLABLE ZZIT
-A2D1 YI SYLLABLE ZZIX
-A2D2 YI SYLLABLE ZZI
-A2D3 YI SYLLABLE ZZIP
-A2D4 YI SYLLABLE ZZIET
-A2D5 YI SYLLABLE ZZIEX
-A2D6 YI SYLLABLE ZZIE
-A2D7 YI SYLLABLE ZZIEP
-A2D8 YI SYLLABLE ZZAT
-A2D9 YI SYLLABLE ZZAX
-A2DA YI SYLLABLE ZZA
-A2DB YI SYLLABLE ZZAP
-A2DC YI SYLLABLE ZZOX
-A2DD YI SYLLABLE ZZO
-A2DE YI SYLLABLE ZZOP
-A2DF YI SYLLABLE ZZEX
-A2E0 YI SYLLABLE ZZE
-A2E1 YI SYLLABLE ZZEP
-A2E2 YI SYLLABLE ZZUX
-A2E3 YI SYLLABLE ZZU
-A2E4 YI SYLLABLE ZZUP
-A2E5 YI SYLLABLE ZZURX
-A2E6 YI SYLLABLE ZZUR
-A2E7 YI SYLLABLE ZZYT
-A2E8 YI SYLLABLE ZZYX
-A2E9 YI SYLLABLE ZZY
-A2EA YI SYLLABLE ZZYP
-A2EB YI SYLLABLE ZZYRX
-A2EC YI SYLLABLE ZZYR
-A2ED YI SYLLABLE NZIT
-A2EE YI SYLLABLE NZIX
-A2EF YI SYLLABLE NZI
-A2F0 YI SYLLABLE NZIP
-A2F1 YI SYLLABLE NZIEX
-A2F2 YI SYLLABLE NZIE
-A2F3 YI SYLLABLE NZIEP
-A2F4 YI SYLLABLE NZAT
-A2F5 YI SYLLABLE NZAX
-A2F6 YI SYLLABLE NZA
-A2F7 YI SYLLABLE NZAP
-A2F8 YI SYLLABLE NZUOX
-A2F9 YI SYLLABLE NZUO
-A2FA YI SYLLABLE NZOX
-A2FB YI SYLLABLE NZOP
-A2FC YI SYLLABLE NZEX
-A2FD YI SYLLABLE NZE
-A2FE YI SYLLABLE NZUX
-A2FF YI SYLLABLE NZU
-A300 YI SYLLABLE NZUP
-A301 YI SYLLABLE NZURX
-A302 YI SYLLABLE NZUR
-A303 YI SYLLABLE NZYT
-A304 YI SYLLABLE NZYX
-A305 YI SYLLABLE NZY
-A306 YI SYLLABLE NZYP
-A307 YI SYLLABLE NZYRX
-A308 YI SYLLABLE NZYR
-A309 YI SYLLABLE SIT
-A30A YI SYLLABLE SIX
-A30B YI SYLLABLE SI
-A30C YI SYLLABLE SIP
-A30D YI SYLLABLE SIEX
-A30E YI SYLLABLE SIE
-A30F YI SYLLABLE SIEP
-A310 YI SYLLABLE SAT
-A311 YI SYLLABLE SAX
-A312 YI SYLLABLE SA
-A313 YI SYLLABLE SAP
-A314 YI SYLLABLE SUOX
-A315 YI SYLLABLE SUO
-A316 YI SYLLABLE SUOP
-A317 YI SYLLABLE SOT
-A318 YI SYLLABLE SOX
-A319 YI SYLLABLE SO
-A31A YI SYLLABLE SOP
-A31B YI SYLLABLE SEX
-A31C YI SYLLABLE SE
-A31D YI SYLLABLE SEP
-A31E YI SYLLABLE SUT
-A31F YI SYLLABLE SUX
-A320 YI SYLLABLE SU
-A321 YI SYLLABLE SUP
-A322 YI SYLLABLE SURX
-A323 YI SYLLABLE SUR
-A324 YI SYLLABLE SYT
-A325 YI SYLLABLE SYX
-A326 YI SYLLABLE SY
-A327 YI SYLLABLE SYP
-A328 YI SYLLABLE SYRX
-A329 YI SYLLABLE SYR
-A32A YI SYLLABLE SSIT
-A32B YI SYLLABLE SSIX
-A32C YI SYLLABLE SSI
-A32D YI SYLLABLE SSIP
-A32E YI SYLLABLE SSIEX
-A32F YI SYLLABLE SSIE
-A330 YI SYLLABLE SSIEP
-A331 YI SYLLABLE SSAT
-A332 YI SYLLABLE SSAX
-A333 YI SYLLABLE SSA
-A334 YI SYLLABLE SSAP
-A335 YI SYLLABLE SSOT
-A336 YI SYLLABLE SSOX
-A337 YI SYLLABLE SSO
-A338 YI SYLLABLE SSOP
-A339 YI SYLLABLE SSEX
-A33A YI SYLLABLE SSE
-A33B YI SYLLABLE SSEP
-A33C YI SYLLABLE SSUT
-A33D YI SYLLABLE SSUX
-A33E YI SYLLABLE SSU
-A33F YI SYLLABLE SSUP
-A340 YI SYLLABLE SSYT
-A341 YI SYLLABLE SSYX
-A342 YI SYLLABLE SSY
-A343 YI SYLLABLE SSYP
-A344 YI SYLLABLE SSYRX
-A345 YI SYLLABLE SSYR
-A346 YI SYLLABLE ZHAT
-A347 YI SYLLABLE ZHAX
-A348 YI SYLLABLE ZHA
-A349 YI SYLLABLE ZHAP
-A34A YI SYLLABLE ZHUOX
-A34B YI SYLLABLE ZHUO
-A34C YI SYLLABLE ZHUOP
-A34D YI SYLLABLE ZHOT
-A34E YI SYLLABLE ZHOX
-A34F YI SYLLABLE ZHO
-A350 YI SYLLABLE ZHOP
-A351 YI SYLLABLE ZHET
-A352 YI SYLLABLE ZHEX
-A353 YI SYLLABLE ZHE
-A354 YI SYLLABLE ZHEP
-A355 YI SYLLABLE ZHUT
-A356 YI SYLLABLE ZHUX
-A357 YI SYLLABLE ZHU
-A358 YI SYLLABLE ZHUP
-A359 YI SYLLABLE ZHURX
-A35A YI SYLLABLE ZHUR
-A35B YI SYLLABLE ZHYT
-A35C YI SYLLABLE ZHYX
-A35D YI SYLLABLE ZHY
-A35E YI SYLLABLE ZHYP
-A35F YI SYLLABLE ZHYRX
-A360 YI SYLLABLE ZHYR
-A361 YI SYLLABLE CHAT
-A362 YI SYLLABLE CHAX
-A363 YI SYLLABLE CHA
-A364 YI SYLLABLE CHAP
-A365 YI SYLLABLE CHUOT
-A366 YI SYLLABLE CHUOX
-A367 YI SYLLABLE CHUO
-A368 YI SYLLABLE CHUOP
-A369 YI SYLLABLE CHOT
-A36A YI SYLLABLE CHOX
-A36B YI SYLLABLE CHO
-A36C YI SYLLABLE CHOP
-A36D YI SYLLABLE CHET
-A36E YI SYLLABLE CHEX
-A36F YI SYLLABLE CHE
-A370 YI SYLLABLE CHEP
-A371 YI SYLLABLE CHUX
-A372 YI SYLLABLE CHU
-A373 YI SYLLABLE CHUP
-A374 YI SYLLABLE CHURX
-A375 YI SYLLABLE CHUR
-A376 YI SYLLABLE CHYT
-A377 YI SYLLABLE CHYX
-A378 YI SYLLABLE CHY
-A379 YI SYLLABLE CHYP
-A37A YI SYLLABLE CHYRX
-A37B YI SYLLABLE CHYR
-A37C YI SYLLABLE RRAX
-A37D YI SYLLABLE RRA
-A37E YI SYLLABLE RRUOX
-A37F YI SYLLABLE RRUO
-A380 YI SYLLABLE RROT
-A381 YI SYLLABLE RROX
-A382 YI SYLLABLE RRO
-A383 YI SYLLABLE RROP
-A384 YI SYLLABLE RRET
-A385 YI SYLLABLE RREX
-A386 YI SYLLABLE RRE
-A387 YI SYLLABLE RREP
-A388 YI SYLLABLE RRUT
-A389 YI SYLLABLE RRUX
-A38A YI SYLLABLE RRU
-A38B YI SYLLABLE RRUP
-A38C YI SYLLABLE RRURX
-A38D YI SYLLABLE RRUR
-A38E YI SYLLABLE RRYT
-A38F YI SYLLABLE RRYX
-A390 YI SYLLABLE RRY
-A391 YI SYLLABLE RRYP
-A392 YI SYLLABLE RRYRX
-A393 YI SYLLABLE RRYR
-A394 YI SYLLABLE NRAT
-A395 YI SYLLABLE NRAX
-A396 YI SYLLABLE NRA
-A397 YI SYLLABLE NRAP
-A398 YI SYLLABLE NROX
-A399 YI SYLLABLE NRO
-A39A YI SYLLABLE NROP
-A39B YI SYLLABLE NRET
-A39C YI SYLLABLE NREX
-A39D YI SYLLABLE NRE
-A39E YI SYLLABLE NREP
-A39F YI SYLLABLE NRUT
-A3A0 YI SYLLABLE NRUX
-A3A1 YI SYLLABLE NRU
-A3A2 YI SYLLABLE NRUP
-A3A3 YI SYLLABLE NRURX
-A3A4 YI SYLLABLE NRUR
-A3A5 YI SYLLABLE NRYT
-A3A6 YI SYLLABLE NRYX
-A3A7 YI SYLLABLE NRY
-A3A8 YI SYLLABLE NRYP
-A3A9 YI SYLLABLE NRYRX
-A3AA YI SYLLABLE NRYR
-A3AB YI SYLLABLE SHAT
-A3AC YI SYLLABLE SHAX
-A3AD YI SYLLABLE SHA
-A3AE YI SYLLABLE SHAP
-A3AF YI SYLLABLE SHUOX
-A3B0 YI SYLLABLE SHUO
-A3B1 YI SYLLABLE SHUOP
-A3B2 YI SYLLABLE SHOT
-A3B3 YI SYLLABLE SHOX
-A3B4 YI SYLLABLE SHO
-A3B5 YI SYLLABLE SHOP
-A3B6 YI SYLLABLE SHET
-A3B7 YI SYLLABLE SHEX
-A3B8 YI SYLLABLE SHE
-A3B9 YI SYLLABLE SHEP
-A3BA YI SYLLABLE SHUT
-A3BB YI SYLLABLE SHUX
-A3BC YI SYLLABLE SHU
-A3BD YI SYLLABLE SHUP
-A3BE YI SYLLABLE SHURX
-A3BF YI SYLLABLE SHUR
-A3C0 YI SYLLABLE SHYT
-A3C1 YI SYLLABLE SHYX
-A3C2 YI SYLLABLE SHY
-A3C3 YI SYLLABLE SHYP
-A3C4 YI SYLLABLE SHYRX
-A3C5 YI SYLLABLE SHYR
-A3C6 YI SYLLABLE RAT
-A3C7 YI SYLLABLE RAX
-A3C8 YI SYLLABLE RA
-A3C9 YI SYLLABLE RAP
-A3CA YI SYLLABLE RUOX
-A3CB YI SYLLABLE RUO
-A3CC YI SYLLABLE RUOP
-A3CD YI SYLLABLE ROT
-A3CE YI SYLLABLE ROX
-A3CF YI SYLLABLE RO
-A3D0 YI SYLLABLE ROP
-A3D1 YI SYLLABLE REX
-A3D2 YI SYLLABLE RE
-A3D3 YI SYLLABLE REP
-A3D4 YI SYLLABLE RUT
-A3D5 YI SYLLABLE RUX
-A3D6 YI SYLLABLE RU
-A3D7 YI SYLLABLE RUP
-A3D8 YI SYLLABLE RURX
-A3D9 YI SYLLABLE RUR
-A3DA YI SYLLABLE RYT
-A3DB YI SYLLABLE RYX
-A3DC YI SYLLABLE RY
-A3DD YI SYLLABLE RYP
-A3DE YI SYLLABLE RYRX
-A3DF YI SYLLABLE RYR
-A3E0 YI SYLLABLE JIT
-A3E1 YI SYLLABLE JIX
-A3E2 YI SYLLABLE JI
-A3E3 YI SYLLABLE JIP
-A3E4 YI SYLLABLE JIET
-A3E5 YI SYLLABLE JIEX
-A3E6 YI SYLLABLE JIE
-A3E7 YI SYLLABLE JIEP
-A3E8 YI SYLLABLE JUOT
-A3E9 YI SYLLABLE JUOX
-A3EA YI SYLLABLE JUO
-A3EB YI SYLLABLE JUOP
-A3EC YI SYLLABLE JOT
-A3ED YI SYLLABLE JOX
-A3EE YI SYLLABLE JO
-A3EF YI SYLLABLE JOP
-A3F0 YI SYLLABLE JUT
-A3F1 YI SYLLABLE JUX
-A3F2 YI SYLLABLE JU
-A3F3 YI SYLLABLE JUP
-A3F4 YI SYLLABLE JURX
-A3F5 YI SYLLABLE JUR
-A3F6 YI SYLLABLE JYT
-A3F7 YI SYLLABLE JYX
-A3F8 YI SYLLABLE JY
-A3F9 YI SYLLABLE JYP
-A3FA YI SYLLABLE JYRX
-A3FB YI SYLLABLE JYR
-A3FC YI SYLLABLE QIT
-A3FD YI SYLLABLE QIX
-A3FE YI SYLLABLE QI
-A3FF YI SYLLABLE QIP
-A400 YI SYLLABLE QIET
-A401 YI SYLLABLE QIEX
-A402 YI SYLLABLE QIE
-A403 YI SYLLABLE QIEP
-A404 YI SYLLABLE QUOT
-A405 YI SYLLABLE QUOX
-A406 YI SYLLABLE QUO
-A407 YI SYLLABLE QUOP
-A408 YI SYLLABLE QOT
-A409 YI SYLLABLE QOX
-A40A YI SYLLABLE QO
-A40B YI SYLLABLE QOP
-A40C YI SYLLABLE QUT
-A40D YI SYLLABLE QUX
-A40E YI SYLLABLE QU
-A40F YI SYLLABLE QUP
-A410 YI SYLLABLE QURX
-A411 YI SYLLABLE QUR
-A412 YI SYLLABLE QYT
-A413 YI SYLLABLE QYX
-A414 YI SYLLABLE QY
-A415 YI SYLLABLE QYP
-A416 YI SYLLABLE QYRX
-A417 YI SYLLABLE QYR
-A418 YI SYLLABLE JJIT
-A419 YI SYLLABLE JJIX
-A41A YI SYLLABLE JJI
-A41B YI SYLLABLE JJIP
-A41C YI SYLLABLE JJIET
-A41D YI SYLLABLE JJIEX
-A41E YI SYLLABLE JJIE
-A41F YI SYLLABLE JJIEP
-A420 YI SYLLABLE JJUOX
-A421 YI SYLLABLE JJUO
-A422 YI SYLLABLE JJUOP
-A423 YI SYLLABLE JJOT
-A424 YI SYLLABLE JJOX
-A425 YI SYLLABLE JJO
-A426 YI SYLLABLE JJOP
-A427 YI SYLLABLE JJUT
-A428 YI SYLLABLE JJUX
-A429 YI SYLLABLE JJU
-A42A YI SYLLABLE JJUP
-A42B YI SYLLABLE JJURX
-A42C YI SYLLABLE JJUR
-A42D YI SYLLABLE JJYT
-A42E YI SYLLABLE JJYX
-A42F YI SYLLABLE JJY
-A430 YI SYLLABLE JJYP
-A431 YI SYLLABLE NJIT
-A432 YI SYLLABLE NJIX
-A433 YI SYLLABLE NJI
-A434 YI SYLLABLE NJIP
-A435 YI SYLLABLE NJIET
-A436 YI SYLLABLE NJIEX
-A437 YI SYLLABLE NJIE
-A438 YI SYLLABLE NJIEP
-A439 YI SYLLABLE NJUOX
-A43A YI SYLLABLE NJUO
-A43B YI SYLLABLE NJOT
-A43C YI SYLLABLE NJOX
-A43D YI SYLLABLE NJO
-A43E YI SYLLABLE NJOP
-A43F YI SYLLABLE NJUX
-A440 YI SYLLABLE NJU
-A441 YI SYLLABLE NJUP
-A442 YI SYLLABLE NJURX
-A443 YI SYLLABLE NJUR
-A444 YI SYLLABLE NJYT
-A445 YI SYLLABLE NJYX
-A446 YI SYLLABLE NJY
-A447 YI SYLLABLE NJYP
-A448 YI SYLLABLE NJYRX
-A449 YI SYLLABLE NJYR
-A44A YI SYLLABLE NYIT
-A44B YI SYLLABLE NYIX
-A44C YI SYLLABLE NYI
-A44D YI SYLLABLE NYIP
-A44E YI SYLLABLE NYIET
-A44F YI SYLLABLE NYIEX
-A450 YI SYLLABLE NYIE
-A451 YI SYLLABLE NYIEP
-A452 YI SYLLABLE NYUOX
-A453 YI SYLLABLE NYUO
-A454 YI SYLLABLE NYUOP
-A455 YI SYLLABLE NYOT
-A456 YI SYLLABLE NYOX
-A457 YI SYLLABLE NYO
-A458 YI SYLLABLE NYOP
-A459 YI SYLLABLE NYUT
-A45A YI SYLLABLE NYUX
-A45B YI SYLLABLE NYU
-A45C YI SYLLABLE NYUP
-A45D YI SYLLABLE XIT
-A45E YI SYLLABLE XIX
-A45F YI SYLLABLE XI
-A460 YI SYLLABLE XIP
-A461 YI SYLLABLE XIET
-A462 YI SYLLABLE XIEX
-A463 YI SYLLABLE XIE
-A464 YI SYLLABLE XIEP
-A465 YI SYLLABLE XUOX
-A466 YI SYLLABLE XUO
-A467 YI SYLLABLE XOT
-A468 YI SYLLABLE XOX
-A469 YI SYLLABLE XO
-A46A YI SYLLABLE XOP
-A46B YI SYLLABLE XYT
-A46C YI SYLLABLE XYX
-A46D YI SYLLABLE XY
-A46E YI SYLLABLE XYP
-A46F YI SYLLABLE XYRX
-A470 YI SYLLABLE XYR
-A471 YI SYLLABLE YIT
-A472 YI SYLLABLE YIX
-A473 YI SYLLABLE YI
-A474 YI SYLLABLE YIP
-A475 YI SYLLABLE YIET
-A476 YI SYLLABLE YIEX
-A477 YI SYLLABLE YIE
-A478 YI SYLLABLE YIEP
-A479 YI SYLLABLE YUOT
-A47A YI SYLLABLE YUOX
-A47B YI SYLLABLE YUO
-A47C YI SYLLABLE YUOP
-A47D YI SYLLABLE YOT
-A47E YI SYLLABLE YOX
-A47F YI SYLLABLE YO
-A480 YI SYLLABLE YOP
-A481 YI SYLLABLE YUT
-A482 YI SYLLABLE YUX
-A483 YI SYLLABLE YU
-A484 YI SYLLABLE YUP
-A485 YI SYLLABLE YURX
-A486 YI SYLLABLE YUR
-A487 YI SYLLABLE YYT
-A488 YI SYLLABLE YYX
-A489 YI SYLLABLE YY
-A48A YI SYLLABLE YYP
-A48B YI SYLLABLE YYRX
-A48C YI SYLLABLE YYR
-@@ A490 Yi Radicals A4CF
-@ Yi radicals
-A490 YI RADICAL QOT
-A491 YI RADICAL LI
-A492 YI RADICAL KIT
-A493 YI RADICAL NYIP
-A494 YI RADICAL CYP
-A495 YI RADICAL SSI
-A496 YI RADICAL GGOP
-A497 YI RADICAL GEP
-A498 YI RADICAL MI
-A499 YI RADICAL HXIT
-A49A YI RADICAL LYR
-A49B YI RADICAL BBUT
-A49C YI RADICAL MOP
-A49D YI RADICAL YO
-A49E YI RADICAL PUT
-A49F YI RADICAL HXUO
-A4A0 YI RADICAL TAT
-A4A1 YI RADICAL GA
-A4A4 YI RADICAL DDUR
-A4A5 YI RADICAL BUR
-A4A6 YI RADICAL GGUO
-A4A7 YI RADICAL NYOP
-A4A8 YI RADICAL TU
-A4A9 YI RADICAL OP
-A4AA YI RADICAL JJUT
-A4AB YI RADICAL ZOT
-A4AC YI RADICAL PYT
-A4AD YI RADICAL HMO
-A4AE YI RADICAL YIT
-A4AF YI RADICAL VUR
-A4B0 YI RADICAL SHY
-A4B1 YI RADICAL VEP
-A4B2 YI RADICAL ZA
-A4B3 YI RADICAL JO
-A4B5 YI RADICAL JJY
-A4B6 YI RADICAL GOT
-A4B7 YI RADICAL JJIE
-A4B8 YI RADICAL WO
-A4B9 YI RADICAL DU
-A4BA YI RADICAL SHUR
-A4BB YI RADICAL LIE
-A4BC YI RADICAL CY
-A4BD YI RADICAL CUOP
-A4BE YI RADICAL CIP
-A4BF YI RADICAL HXOP
-A4C0 YI RADICAL SHAT
-A4C2 YI RADICAL SHOP
-A4C3 YI RADICAL CHE
-A4C4 YI RADICAL ZZIET
-A4C6 YI RADICAL KE
-@@ AC00 Hangul Syllables D7A3
-@@ D800 High Surrogates DB7F
-@@ DB80 High Private Use Surrogates DBFF
-@@ DC00 Low Surrogates DFFF
-@@ E000 Private Use Area F8FF
-@@ F900 CJK Compatibility Ideographs FAFF
-@ Pronunciation variants from KS C 5601-1987
-F900 CJK COMPATIBILITY IDEOGRAPH-F900
- : 8C48
-F901 CJK COMPATIBILITY IDEOGRAPH-F901
- : 66F4
-F902 CJK COMPATIBILITY IDEOGRAPH-F902
- : 8ECA
-F903 CJK COMPATIBILITY IDEOGRAPH-F903
- : 8CC8
-F904 CJK COMPATIBILITY IDEOGRAPH-F904
- : 6ED1
-F905 CJK COMPATIBILITY IDEOGRAPH-F905
- : 4E32
-F906 CJK COMPATIBILITY IDEOGRAPH-F906
- : 53E5
-F907 CJK COMPATIBILITY IDEOGRAPH-F907
- : 9F9C
-F908 CJK COMPATIBILITY IDEOGRAPH-F908
- : 9F9C
-F909 CJK COMPATIBILITY IDEOGRAPH-F909
- : 5951
-F90A CJK COMPATIBILITY IDEOGRAPH-F90A
- : 91D1
-F90B CJK COMPATIBILITY IDEOGRAPH-F90B
- : 5587
-F90C CJK COMPATIBILITY IDEOGRAPH-F90C
- : 5948
-F90D CJK COMPATIBILITY IDEOGRAPH-F90D
- : 61F6
-F90E CJK COMPATIBILITY IDEOGRAPH-F90E
- : 7669
-F90F CJK COMPATIBILITY IDEOGRAPH-F90F
- : 7F85
-F910 CJK COMPATIBILITY IDEOGRAPH-F910
- : 863F
-F911 CJK COMPATIBILITY IDEOGRAPH-F911
- : 87BA
-F912 CJK COMPATIBILITY IDEOGRAPH-F912
- : 88F8
-F913 CJK COMPATIBILITY IDEOGRAPH-F913
- : 908F
-F914 CJK COMPATIBILITY IDEOGRAPH-F914
- : 6A02
-F915 CJK COMPATIBILITY IDEOGRAPH-F915
- : 6D1B
-F916 CJK COMPATIBILITY IDEOGRAPH-F916
- : 70D9
-F917 CJK COMPATIBILITY IDEOGRAPH-F917
- : 73DE
-F918 CJK COMPATIBILITY IDEOGRAPH-F918
- : 843D
-F919 CJK COMPATIBILITY IDEOGRAPH-F919
- : 916A
-F91A CJK COMPATIBILITY IDEOGRAPH-F91A
- : 99F1
-F91B CJK COMPATIBILITY IDEOGRAPH-F91B
- : 4E82
-F91C CJK COMPATIBILITY IDEOGRAPH-F91C
- : 5375
-F91D CJK COMPATIBILITY IDEOGRAPH-F91D
- : 6B04
-F91E CJK COMPATIBILITY IDEOGRAPH-F91E
- : 721B
-F91F CJK COMPATIBILITY IDEOGRAPH-F91F
- : 862D
-F920 CJK COMPATIBILITY IDEOGRAPH-F920
- : 9E1E
-F921 CJK COMPATIBILITY IDEOGRAPH-F921
- : 5D50
-F922 CJK COMPATIBILITY IDEOGRAPH-F922
- : 6FEB
-F923 CJK COMPATIBILITY IDEOGRAPH-F923
- : 85CD
-F924 CJK COMPATIBILITY IDEOGRAPH-F924
- : 8964
-F925 CJK COMPATIBILITY IDEOGRAPH-F925
- : 62C9
-F926 CJK COMPATIBILITY IDEOGRAPH-F926
- : 81D8
-F927 CJK COMPATIBILITY IDEOGRAPH-F927
- : 881F
-F928 CJK COMPATIBILITY IDEOGRAPH-F928
- : 5ECA
-F929 CJK COMPATIBILITY IDEOGRAPH-F929
- : 6717
-F92A CJK COMPATIBILITY IDEOGRAPH-F92A
- : 6D6A
-F92B CJK COMPATIBILITY IDEOGRAPH-F92B
- : 72FC
-F92C CJK COMPATIBILITY IDEOGRAPH-F92C
- : 90CE
-F92D CJK COMPATIBILITY IDEOGRAPH-F92D
- : 4F86
-F92E CJK COMPATIBILITY IDEOGRAPH-F92E
- : 51B7
-F92F CJK COMPATIBILITY IDEOGRAPH-F92F
- : 52DE
-F930 CJK COMPATIBILITY IDEOGRAPH-F930
- : 64C4
-F931 CJK COMPATIBILITY IDEOGRAPH-F931
- : 6AD3
-F932 CJK COMPATIBILITY IDEOGRAPH-F932
- : 7210
-F933 CJK COMPATIBILITY IDEOGRAPH-F933
- : 76E7
-F934 CJK COMPATIBILITY IDEOGRAPH-F934
- : 8001
-F935 CJK COMPATIBILITY IDEOGRAPH-F935
- : 8606
-F936 CJK COMPATIBILITY IDEOGRAPH-F936
- : 865C
-F937 CJK COMPATIBILITY IDEOGRAPH-F937
- : 8DEF
-F938 CJK COMPATIBILITY IDEOGRAPH-F938
- : 9732
-F939 CJK COMPATIBILITY IDEOGRAPH-F939
- : 9B6F
-F93A CJK COMPATIBILITY IDEOGRAPH-F93A
- : 9DFA
-F93B CJK COMPATIBILITY IDEOGRAPH-F93B
- : 788C
-F93C CJK COMPATIBILITY IDEOGRAPH-F93C
- : 797F
-F93D CJK COMPATIBILITY IDEOGRAPH-F93D
- : 7DA0
-F93E CJK COMPATIBILITY IDEOGRAPH-F93E
- : 83C9
-F93F CJK COMPATIBILITY IDEOGRAPH-F93F
- : 9304
-F940 CJK COMPATIBILITY IDEOGRAPH-F940
- : 9E7F
-F941 CJK COMPATIBILITY IDEOGRAPH-F941
- : 8AD6
-F942 CJK COMPATIBILITY IDEOGRAPH-F942
- : 58DF
-F943 CJK COMPATIBILITY IDEOGRAPH-F943
- : 5F04
-F944 CJK COMPATIBILITY IDEOGRAPH-F944
- : 7C60
-F945 CJK COMPATIBILITY IDEOGRAPH-F945
- : 807E
-F946 CJK COMPATIBILITY IDEOGRAPH-F946
- : 7262
-F947 CJK COMPATIBILITY IDEOGRAPH-F947
- : 78CA
-F948 CJK COMPATIBILITY IDEOGRAPH-F948
- : 8CC2
-F949 CJK COMPATIBILITY IDEOGRAPH-F949
- : 96F7
-F94A CJK COMPATIBILITY IDEOGRAPH-F94A
- : 58D8
-F94B CJK COMPATIBILITY IDEOGRAPH-F94B
- : 5C62
-F94C CJK COMPATIBILITY IDEOGRAPH-F94C
- : 6A13
-F94D CJK COMPATIBILITY IDEOGRAPH-F94D
- : 6DDA
-F94E CJK COMPATIBILITY IDEOGRAPH-F94E
- : 6F0F
-F94F CJK COMPATIBILITY IDEOGRAPH-F94F
- : 7D2F
-F950 CJK COMPATIBILITY IDEOGRAPH-F950
- : 7E37
-F951 CJK COMPATIBILITY IDEOGRAPH-F951
- : 96FB
-F952 CJK COMPATIBILITY IDEOGRAPH-F952
- : 52D2
-F953 CJK COMPATIBILITY IDEOGRAPH-F953
- : 808B
-F954 CJK COMPATIBILITY IDEOGRAPH-F954
- : 51DC
-F955 CJK COMPATIBILITY IDEOGRAPH-F955
- : 51CC
-F956 CJK COMPATIBILITY IDEOGRAPH-F956
- : 7A1C
-F957 CJK COMPATIBILITY IDEOGRAPH-F957
- : 7DBE
-F958 CJK COMPATIBILITY IDEOGRAPH-F958
- : 83F1
-F959 CJK COMPATIBILITY IDEOGRAPH-F959
- : 9675
-F95A CJK COMPATIBILITY IDEOGRAPH-F95A
- : 8B80
-F95B CJK COMPATIBILITY IDEOGRAPH-F95B
- : 62CF
-F95C CJK COMPATIBILITY IDEOGRAPH-F95C
- : 6A02
-F95D CJK COMPATIBILITY IDEOGRAPH-F95D
- : 8AFE
-F95E CJK COMPATIBILITY IDEOGRAPH-F95E
- : 4E39
-F95F CJK COMPATIBILITY IDEOGRAPH-F95F
- : 5BE7
-F960 CJK COMPATIBILITY IDEOGRAPH-F960
- : 6012
-F961 CJK COMPATIBILITY IDEOGRAPH-F961
- : 7387
-F962 CJK COMPATIBILITY IDEOGRAPH-F962
- : 7570
-F963 CJK COMPATIBILITY IDEOGRAPH-F963
- : 5317
-F964 CJK COMPATIBILITY IDEOGRAPH-F964
- : 78FB
-F965 CJK COMPATIBILITY IDEOGRAPH-F965
- : 4FBF
-F966 CJK COMPATIBILITY IDEOGRAPH-F966
- : 5FA9
-F967 CJK COMPATIBILITY IDEOGRAPH-F967
- : 4E0D
-F968 CJK COMPATIBILITY IDEOGRAPH-F968
- : 6CCC
-F969 CJK COMPATIBILITY IDEOGRAPH-F969
- : 6578
-F96A CJK COMPATIBILITY IDEOGRAPH-F96A
- : 7D22
-F96B CJK COMPATIBILITY IDEOGRAPH-F96B
- : 53C3
-F96C CJK COMPATIBILITY IDEOGRAPH-F96C
- : 585E
-F96D CJK COMPATIBILITY IDEOGRAPH-F96D
- : 7701
-F96E CJK COMPATIBILITY IDEOGRAPH-F96E
- : 8449
-F96F CJK COMPATIBILITY IDEOGRAPH-F96F
- : 8AAA
-F970 CJK COMPATIBILITY IDEOGRAPH-F970
- : 6BBA
-F971 CJK COMPATIBILITY IDEOGRAPH-F971
- : 8FB0
-F972 CJK COMPATIBILITY IDEOGRAPH-F972
- : 6C88
-F973 CJK COMPATIBILITY IDEOGRAPH-F973
- : 62FE
-F974 CJK COMPATIBILITY IDEOGRAPH-F974
- : 82E5
-F975 CJK COMPATIBILITY IDEOGRAPH-F975
- : 63A0
-F976 CJK COMPATIBILITY IDEOGRAPH-F976
- : 7565
-F977 CJK COMPATIBILITY IDEOGRAPH-F977
- : 4EAE
-F978 CJK COMPATIBILITY IDEOGRAPH-F978
- : 5169
-F979 CJK COMPATIBILITY IDEOGRAPH-F979
- : 51C9
-F97A CJK COMPATIBILITY IDEOGRAPH-F97A
- : 6881
-F97B CJK COMPATIBILITY IDEOGRAPH-F97B
- : 7CE7
-F97C CJK COMPATIBILITY IDEOGRAPH-F97C
- : 826F
-F97D CJK COMPATIBILITY IDEOGRAPH-F97D
- : 8AD2
-F97E CJK COMPATIBILITY IDEOGRAPH-F97E
- : 91CF
-F97F CJK COMPATIBILITY IDEOGRAPH-F97F
- : 52F5
-F980 CJK COMPATIBILITY IDEOGRAPH-F980
- : 5442
-F981 CJK COMPATIBILITY IDEOGRAPH-F981
- : 5973
-F982 CJK COMPATIBILITY IDEOGRAPH-F982
- : 5EEC
-F983 CJK COMPATIBILITY IDEOGRAPH-F983
- : 65C5
-F984 CJK COMPATIBILITY IDEOGRAPH-F984
- : 6FFE
-F985 CJK COMPATIBILITY IDEOGRAPH-F985
- : 792A
-F986 CJK COMPATIBILITY IDEOGRAPH-F986
- : 95AD
-F987 CJK COMPATIBILITY IDEOGRAPH-F987
- : 9A6A
-F988 CJK COMPATIBILITY IDEOGRAPH-F988
- : 9E97
-F989 CJK COMPATIBILITY IDEOGRAPH-F989
- : 9ECE
-F98A CJK COMPATIBILITY IDEOGRAPH-F98A
- : 529B
-F98B CJK COMPATIBILITY IDEOGRAPH-F98B
- : 66C6
-F98C CJK COMPATIBILITY IDEOGRAPH-F98C
- : 6B77
-F98D CJK COMPATIBILITY IDEOGRAPH-F98D
- : 8F62
-F98E CJK COMPATIBILITY IDEOGRAPH-F98E
- : 5E74
-F98F CJK COMPATIBILITY IDEOGRAPH-F98F
- : 6190
-F990 CJK COMPATIBILITY IDEOGRAPH-F990
- : 6200
-F991 CJK COMPATIBILITY IDEOGRAPH-F991
- : 649A
-F992 CJK COMPATIBILITY IDEOGRAPH-F992
- : 6F23
-F993 CJK COMPATIBILITY IDEOGRAPH-F993
- : 7149
-F994 CJK COMPATIBILITY IDEOGRAPH-F994
- : 7489
-F995 CJK COMPATIBILITY IDEOGRAPH-F995
- : 79CA
-F996 CJK COMPATIBILITY IDEOGRAPH-F996
- : 7DF4
-F997 CJK COMPATIBILITY IDEOGRAPH-F997
- : 806F
-F998 CJK COMPATIBILITY IDEOGRAPH-F998
- : 8F26
-F999 CJK COMPATIBILITY IDEOGRAPH-F999
- : 84EE
-F99A CJK COMPATIBILITY IDEOGRAPH-F99A
- : 9023
-F99B CJK COMPATIBILITY IDEOGRAPH-F99B
- : 934A
-F99C CJK COMPATIBILITY IDEOGRAPH-F99C
- : 5217
-F99D CJK COMPATIBILITY IDEOGRAPH-F99D
- : 52A3
-F99E CJK COMPATIBILITY IDEOGRAPH-F99E
- : 54BD
-F99F CJK COMPATIBILITY IDEOGRAPH-F99F
- : 70C8
-F9A0 CJK COMPATIBILITY IDEOGRAPH-F9A0
- : 88C2
-F9A1 CJK COMPATIBILITY IDEOGRAPH-F9A1
- : 8AAA
-F9A2 CJK COMPATIBILITY IDEOGRAPH-F9A2
- : 5EC9
-F9A3 CJK COMPATIBILITY IDEOGRAPH-F9A3
- : 5FF5
-F9A4 CJK COMPATIBILITY IDEOGRAPH-F9A4
- : 637B
-F9A5 CJK COMPATIBILITY IDEOGRAPH-F9A5
- : 6BAE
-F9A6 CJK COMPATIBILITY IDEOGRAPH-F9A6
- : 7C3E
-F9A7 CJK COMPATIBILITY IDEOGRAPH-F9A7
- : 7375
-F9A8 CJK COMPATIBILITY IDEOGRAPH-F9A8
- : 4EE4
-F9A9 CJK COMPATIBILITY IDEOGRAPH-F9A9
- : 56F9
-F9AA CJK COMPATIBILITY IDEOGRAPH-F9AA
- : 5BE7
-F9AB CJK COMPATIBILITY IDEOGRAPH-F9AB
- : 5DBA
-F9AC CJK COMPATIBILITY IDEOGRAPH-F9AC
- : 601C
-F9AD CJK COMPATIBILITY IDEOGRAPH-F9AD
- : 73B2
-F9AE CJK COMPATIBILITY IDEOGRAPH-F9AE
- : 7469
-F9AF CJK COMPATIBILITY IDEOGRAPH-F9AF
- : 7F9A
-F9B0 CJK COMPATIBILITY IDEOGRAPH-F9B0
- : 8046
-F9B1 CJK COMPATIBILITY IDEOGRAPH-F9B1
- : 9234
-F9B2 CJK COMPATIBILITY IDEOGRAPH-F9B2
- : 96F6
-F9B3 CJK COMPATIBILITY IDEOGRAPH-F9B3
- : 9748
-F9B4 CJK COMPATIBILITY IDEOGRAPH-F9B4
- : 9818
-F9B5 CJK COMPATIBILITY IDEOGRAPH-F9B5
- : 4F8B
-F9B6 CJK COMPATIBILITY IDEOGRAPH-F9B6
- : 79AE
-F9B7 CJK COMPATIBILITY IDEOGRAPH-F9B7
- : 91B4
-F9B8 CJK COMPATIBILITY IDEOGRAPH-F9B8
- : 96B8
-F9B9 CJK COMPATIBILITY IDEOGRAPH-F9B9
- : 60E1
-F9BA CJK COMPATIBILITY IDEOGRAPH-F9BA
- : 4E86
-F9BB CJK COMPATIBILITY IDEOGRAPH-F9BB
- : 50DA
-F9BC CJK COMPATIBILITY IDEOGRAPH-F9BC
- : 5BEE
-F9BD CJK COMPATIBILITY IDEOGRAPH-F9BD
- : 5C3F
-F9BE CJK COMPATIBILITY IDEOGRAPH-F9BE
- : 6599
-F9BF CJK COMPATIBILITY IDEOGRAPH-F9BF
- : 6A02
-F9C0 CJK COMPATIBILITY IDEOGRAPH-F9C0
- : 71CE
-F9C1 CJK COMPATIBILITY IDEOGRAPH-F9C1
- : 7642
-F9C2 CJK COMPATIBILITY IDEOGRAPH-F9C2
- : 84FC
-F9C3 CJK COMPATIBILITY IDEOGRAPH-F9C3
- : 907C
-F9C4 CJK COMPATIBILITY IDEOGRAPH-F9C4
- : 9F8D
-F9C5 CJK COMPATIBILITY IDEOGRAPH-F9C5
- : 6688
-F9C6 CJK COMPATIBILITY IDEOGRAPH-F9C6
- : 962E
-F9C7 CJK COMPATIBILITY IDEOGRAPH-F9C7
- : 5289
-F9C8 CJK COMPATIBILITY IDEOGRAPH-F9C8
- : 677B
-F9C9 CJK COMPATIBILITY IDEOGRAPH-F9C9
- : 67F3
-F9CA CJK COMPATIBILITY IDEOGRAPH-F9CA
- : 6D41
-F9CB CJK COMPATIBILITY IDEOGRAPH-F9CB
- : 6E9C
-F9CC CJK COMPATIBILITY IDEOGRAPH-F9CC
- : 7409
-F9CD CJK COMPATIBILITY IDEOGRAPH-F9CD
- : 7559
-F9CE CJK COMPATIBILITY IDEOGRAPH-F9CE
- : 786B
-F9CF CJK COMPATIBILITY IDEOGRAPH-F9CF
- : 7D10
-F9D0 CJK COMPATIBILITY IDEOGRAPH-F9D0
- : 985E
-F9D1 CJK COMPATIBILITY IDEOGRAPH-F9D1
- : 516D
-F9D2 CJK COMPATIBILITY IDEOGRAPH-F9D2
- : 622E
-F9D3 CJK COMPATIBILITY IDEOGRAPH-F9D3
- : 9678
-F9D4 CJK COMPATIBILITY IDEOGRAPH-F9D4
- : 502B
-F9D5 CJK COMPATIBILITY IDEOGRAPH-F9D5
- : 5D19
-F9D6 CJK COMPATIBILITY IDEOGRAPH-F9D6
- : 6DEA
-F9D7 CJK COMPATIBILITY IDEOGRAPH-F9D7
- : 8F2A
-F9D8 CJK COMPATIBILITY IDEOGRAPH-F9D8
- : 5F8B
-F9D9 CJK COMPATIBILITY IDEOGRAPH-F9D9
- : 6144
-F9DA CJK COMPATIBILITY IDEOGRAPH-F9DA
- : 6817
-F9DB CJK COMPATIBILITY IDEOGRAPH-F9DB
- : 7387
-F9DC CJK COMPATIBILITY IDEOGRAPH-F9DC
- : 9686
-F9DD CJK COMPATIBILITY IDEOGRAPH-F9DD
- : 5229
-F9DE CJK COMPATIBILITY IDEOGRAPH-F9DE
- : 540F
-F9DF CJK COMPATIBILITY IDEOGRAPH-F9DF
- : 5C65
-F9E0 CJK COMPATIBILITY IDEOGRAPH-F9E0
- : 6613
-F9E1 CJK COMPATIBILITY IDEOGRAPH-F9E1
- : 674E
-F9E2 CJK COMPATIBILITY IDEOGRAPH-F9E2
- : 68A8
-F9E3 CJK COMPATIBILITY IDEOGRAPH-F9E3
- : 6CE5
-F9E4 CJK COMPATIBILITY IDEOGRAPH-F9E4
- : 7406
-F9E5 CJK COMPATIBILITY IDEOGRAPH-F9E5
- : 75E2
-F9E6 CJK COMPATIBILITY IDEOGRAPH-F9E6
- : 7F79
-F9E7 CJK COMPATIBILITY IDEOGRAPH-F9E7
- : 88CF
-F9E8 CJK COMPATIBILITY IDEOGRAPH-F9E8
- : 88E1
-F9E9 CJK COMPATIBILITY IDEOGRAPH-F9E9
- : 91CC
-F9EA CJK COMPATIBILITY IDEOGRAPH-F9EA
- : 96E2
-F9EB CJK COMPATIBILITY IDEOGRAPH-F9EB
- : 533F
-F9EC CJK COMPATIBILITY IDEOGRAPH-F9EC
- : 6EBA
-F9ED CJK COMPATIBILITY IDEOGRAPH-F9ED
- : 541D
-F9EE CJK COMPATIBILITY IDEOGRAPH-F9EE
- : 71D0
-F9EF CJK COMPATIBILITY IDEOGRAPH-F9EF
- : 7498
-F9F0 CJK COMPATIBILITY IDEOGRAPH-F9F0
- : 85FA
-F9F1 CJK COMPATIBILITY IDEOGRAPH-F9F1
- : 96A3
-F9F2 CJK COMPATIBILITY IDEOGRAPH-F9F2
- : 9C57
-F9F3 CJK COMPATIBILITY IDEOGRAPH-F9F3
- : 9E9F
-F9F4 CJK COMPATIBILITY IDEOGRAPH-F9F4
- : 6797
-F9F5 CJK COMPATIBILITY IDEOGRAPH-F9F5
- : 6DCB
-F9F6 CJK COMPATIBILITY IDEOGRAPH-F9F6
- : 81E8
-F9F7 CJK COMPATIBILITY IDEOGRAPH-F9F7
- : 7ACB
-F9F8 CJK COMPATIBILITY IDEOGRAPH-F9F8
- : 7B20
-F9F9 CJK COMPATIBILITY IDEOGRAPH-F9F9
- : 7C92
-F9FA CJK COMPATIBILITY IDEOGRAPH-F9FA
- : 72C0
-F9FB CJK COMPATIBILITY IDEOGRAPH-F9FB
- : 7099
-F9FC CJK COMPATIBILITY IDEOGRAPH-F9FC
- : 8B58
-F9FD CJK COMPATIBILITY IDEOGRAPH-F9FD
- : 4EC0
-F9FE CJK COMPATIBILITY IDEOGRAPH-F9FE
- : 8336
-F9FF CJK COMPATIBILITY IDEOGRAPH-F9FF
- : 523A
-FA00 CJK COMPATIBILITY IDEOGRAPH-FA00
- : 5207
-FA01 CJK COMPATIBILITY IDEOGRAPH-FA01
- : 5EA6
-FA02 CJK COMPATIBILITY IDEOGRAPH-FA02
- : 62D3
-FA03 CJK COMPATIBILITY IDEOGRAPH-FA03
- : 7CD6
-FA04 CJK COMPATIBILITY IDEOGRAPH-FA04
- : 5B85
-FA05 CJK COMPATIBILITY IDEOGRAPH-FA05
- : 6D1E
-FA06 CJK COMPATIBILITY IDEOGRAPH-FA06
- : 66B4
-FA07 CJK COMPATIBILITY IDEOGRAPH-FA07
- : 8F3B
-FA08 CJK COMPATIBILITY IDEOGRAPH-FA08
- : 884C
-FA09 CJK COMPATIBILITY IDEOGRAPH-FA09
- : 964D
-FA0A CJK COMPATIBILITY IDEOGRAPH-FA0A
- : 898B
-FA0B CJK COMPATIBILITY IDEOGRAPH-FA0B
- : 5ED3
-@ Duplicates from Big 5
-FA0C CJK COMPATIBILITY IDEOGRAPH-FA0C
- : 5140
-FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D
- : 55C0
-@ The IBM 32 compatibility additions
-FA0E CJK COMPATIBILITY IDEOGRAPH-FA0E
- * in the set of unified ideographs
-FA0F CJK COMPATIBILITY IDEOGRAPH-FA0F
- * in the set of unified ideographs
-FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
- : 585A
-FA11 CJK COMPATIBILITY IDEOGRAPH-FA11
- * in the set of unified ideographs
-FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
- : 6674
-FA13 CJK COMPATIBILITY IDEOGRAPH-FA13
- * in the set of unified ideographs
-FA14 CJK COMPATIBILITY IDEOGRAPH-FA14
- * in the set of unified ideographs
-FA15 CJK COMPATIBILITY IDEOGRAPH-FA15
- : 51DE
-FA16 CJK COMPATIBILITY IDEOGRAPH-FA16
- : 732A
-FA17 CJK COMPATIBILITY IDEOGRAPH-FA17
- : 76CA
-FA18 CJK COMPATIBILITY IDEOGRAPH-FA18
- : 793C
-FA19 CJK COMPATIBILITY IDEOGRAPH-FA19
- : 795E
-FA1A CJK COMPATIBILITY IDEOGRAPH-FA1A
- : 7965
-FA1B CJK COMPATIBILITY IDEOGRAPH-FA1B
- : 798F
-FA1C CJK COMPATIBILITY IDEOGRAPH-FA1C
- : 9756
-FA1D CJK COMPATIBILITY IDEOGRAPH-FA1D
- : 7CBE
-FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E
- : 7FBD
-FA1F CJK COMPATIBILITY IDEOGRAPH-FA1F *
- * in the set of unified ideographs
-FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
- : 8612
-FA21 CJK COMPATIBILITY IDEOGRAPH-FA21
- * in the set of unified ideographs
-FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
- : 8AF8
-FA23 CJK COMPATIBILITY IDEOGRAPH-FA23 *
- * in the set of unified ideographs
-FA24 CJK COMPATIBILITY IDEOGRAPH-FA24
- * in the set of unified ideographs
-FA25 CJK COMPATIBILITY IDEOGRAPH-FA25
- : 9038
-FA26 CJK COMPATIBILITY IDEOGRAPH-FA26
- : 90FD
-FA27 CJK COMPATIBILITY IDEOGRAPH-FA27
- * in the set of unified ideographs
-FA28 CJK COMPATIBILITY IDEOGRAPH-FA28
- * in the set of unified ideographs
-FA29 CJK COMPATIBILITY IDEOGRAPH-FA29
- * in the set of unified ideographs
-FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A
- : 98EF
-FA2B CJK COMPATIBILITY IDEOGRAPH-FA2B
- : 98FC
-FA2C CJK COMPATIBILITY IDEOGRAPH-FA2C
- : 9928
-FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D
- : 9DB4
-@@ FB00 Alphabetic Presentation Forms FB4F
-@ Latin ligatures
-@+ See the Basic Latin block starting at 0020
-FB00 LATIN SMALL LIGATURE FF
- # 0066 0066
-FB01 LATIN SMALL LIGATURE FI
- # 0066 0069
-FB02 LATIN SMALL LIGATURE FL
- # 0066 006C
-FB03 LATIN SMALL LIGATURE FFI
- # 0066 0066 0069
-FB04 LATIN SMALL LIGATURE FFL
- # 0066 0066 006C
-FB05 LATIN SMALL LIGATURE LONG S T
- # 017F 0074
-FB06 LATIN SMALL LIGATURE ST
- # 0073 0074
-@ Armenian ligatures
-@+ See the Armenian block starting at 0530
-FB13 ARMENIAN SMALL LIGATURE MEN NOW
- # 0574 0576
-FB14 ARMENIAN SMALL LIGATURE MEN ECH
- # 0574 0565
-FB15 ARMENIAN SMALL LIGATURE MEN INI
- # 0574 056B
-FB16 ARMENIAN SMALL LIGATURE VEW NOW
- # 057E 0576
-FB17 ARMENIAN SMALL LIGATURE MEN XEH
- # 0574 056D
-@ Hebrew presentation forms
-@+ See the Hebrew block starting at 0590
-FB1D HEBREW LETTER YOD WITH HIRIQ
- : 05D9 05B4
-FB1E HEBREW POINT JUDEO-SPANISH VARIKA
-FB1F HEBREW LIGATURE YIDDISH YOD YOD PATAH
- : 05F2 05B7
-FB20 HEBREW LETTER ALTERNATIVE AYIN
- # <font> 05E2 hebrew letter ayin
-FB21 HEBREW LETTER WIDE ALEF
- # <font> 05D0 hebrew letter alef
-FB22 HEBREW LETTER WIDE DALET
- # <font> 05D3 hebrew letter dalet
-FB23 HEBREW LETTER WIDE HE
- # <font> 05D4 hebrew letter he
-FB24 HEBREW LETTER WIDE KAF
- # <font> 05DB hebrew letter kaf
-FB25 HEBREW LETTER WIDE LAMED
- # <font> 05DC hebrew letter lamed
-FB26 HEBREW LETTER WIDE FINAL MEM
- # <font> 05DD hebrew letter final mem
-FB27 HEBREW LETTER WIDE RESH
- # <font> 05E8 hebrew letter resh
-FB28 HEBREW LETTER WIDE TAV
- # <font> 05EA hebrew letter tav
-FB29 HEBREW LETTER ALTERNATIVE PLUS SIGN
- # <font> 002B plus sign
-FB2A HEBREW LETTER SHIN WITH SHIN DOT
- : 05E9 05C1
-FB2B HEBREW LETTER SHIN WITH SIN DOT
- : 05E9 05C2
-FB2C HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
- : FB49 05C1
-FB2D HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
- : FB49 05C2
-FB2E HEBREW LETTER ALEF WITH PATAH
- : 05D0 05B7
-FB2F HEBREW LETTER ALEF WITH QAMATS
- : 05D0 05B8
-FB30 HEBREW LETTER ALEF WITH MAPIQ
- : 05D0 05BC
-FB31 HEBREW LETTER BET WITH DAGESH
- : 05D1 05BC
-FB32 HEBREW LETTER GIMEL WITH DAGESH
- : 05D2 05BC
-FB33 HEBREW LETTER DALET WITH DAGESH
- : 05D3 05BC
-FB34 HEBREW LETTER HE WITH MAPIQ
- : 05D4 05BC
-FB35 HEBREW LETTER VAV WITH DAGESH
- : 05D5 05BC
-FB36 HEBREW LETTER ZAYIN WITH DAGESH
- : 05D6 05BC
-FB38 HEBREW LETTER TET WITH DAGESH
- : 05D8 05BC
-FB39 HEBREW LETTER YOD WITH DAGESH
- : 05D9 05BC
-FB3A HEBREW LETTER FINAL KAF WITH DAGESH
- : 05DA 05BC
-FB3B HEBREW LETTER KAF WITH DAGESH
- : 05DB 05BC
-FB3C HEBREW LETTER LAMED WITH DAGESH
- : 05DC 05BC
-FB3E HEBREW LETTER MEM WITH DAGESH
- : 05DE 05BC
-FB40 HEBREW LETTER NUN WITH DAGESH
- : 05E0 05BC
-FB41 HEBREW LETTER SAMEKH WITH DAGESH
- : 05E1 05BC
-FB43 HEBREW LETTER FINAL PE WITH DAGESH
- : 05E3 05BC
-FB44 HEBREW LETTER PE WITH DAGESH
- : 05E4 05BC
-FB46 HEBREW LETTER TSADI WITH DAGESH
- : 05E6 05BC
-FB47 HEBREW LETTER QOF WITH DAGESH
- : 05E7 05BC
-FB48 HEBREW LETTER RESH WITH DAGESH
- : 05E8 05BC
-FB49 HEBREW LETTER SHIN WITH DAGESH
- : 05E9 05BC
-FB4A HEBREW LETTER TAV WITH DAGESH
- : 05EA 05BC
-FB4B HEBREW LETTER VAV WITH HOLAM
- : 05D5 05B9
-FB4C HEBREW LETTER BET WITH RAFE
- : 05D1 05BF
-FB4D HEBREW LETTER KAF WITH RAFE
- : 05DB 05BF
-FB4E HEBREW LETTER PE WITH RAFE
- : 05E4 05BF
-FB4F HEBREW LIGATURE ALEF LAMED
- # 05D0 05DC
-@@ FB50 Arabic Presentation Forms-A FDFF
-@+ Preferred characters are found in the Arabic block 0600 - 06FF.
-@ Glyphs for contextual forms of letters for Persian, Urdu, Sindhi, etc.
-FB50 ARABIC LETTER ALEF WASLA ISOLATED FORM
- # <isolated> 0671
-FB51 ARABIC LETTER ALEF WASLA FINAL FORM
- # <final> 0671
-FB52 ARABIC LETTER BEEH ISOLATED FORM
- # <isolated> 067B
-FB53 ARABIC LETTER BEEH FINAL FORM
- # <final> 067B
-FB54 ARABIC LETTER BEEH INITIAL FORM
- # <initial> 067B
-FB55 ARABIC LETTER BEEH MEDIAL FORM
- # <medial> 067B
-FB56 ARABIC LETTER PEH ISOLATED FORM
- # <isolated> 067E
-FB57 ARABIC LETTER PEH FINAL FORM
- # <final> 067E
-FB58 ARABIC LETTER PEH INITIAL FORM
- # <initial> 067E
-FB59 ARABIC LETTER PEH MEDIAL FORM
- # <medial> 067E
-FB5A ARABIC LETTER BEHEH ISOLATED FORM
- # <isolated> 0680
-FB5B ARABIC LETTER BEHEH FINAL FORM
- # <final> 0680
-FB5C ARABIC LETTER BEHEH INITIAL FORM
- # <initial> 0680
-FB5D ARABIC LETTER BEHEH MEDIAL FORM
- # <medial> 0680
-FB5E ARABIC LETTER TTEHEH ISOLATED FORM
- # <isolated> 067A
-FB5F ARABIC LETTER TTEHEH FINAL FORM
- # <final> 067A
-FB60 ARABIC LETTER TTEHEH INITIAL FORM
- # <initial> 067A
-FB61 ARABIC LETTER TTEHEH MEDIAL FORM
- # <medial> 067A
-FB62 ARABIC LETTER TEHEH ISOLATED FORM
- # <isolated> 067F
-FB63 ARABIC LETTER TEHEH FINAL FORM
- # <final> 067F
-FB64 ARABIC LETTER TEHEH INITIAL FORM
- # <initial> 067F
-FB65 ARABIC LETTER TEHEH MEDIAL FORM
- # <medial> 067F
-FB66 ARABIC LETTER TTEH ISOLATED FORM
- # <isolated> 0679
-FB67 ARABIC LETTER TTEH FINAL FORM
- # <final> 0679
-FB68 ARABIC LETTER TTEH INITIAL FORM
- # <initial> 0679
-FB69 ARABIC LETTER TTEH MEDIAL FORM
- # <medial> 0679
-FB6A ARABIC LETTER VEH ISOLATED FORM
- # <isolated> 06A4
-FB6B ARABIC LETTER VEH FINAL FORM
- # <final> 06A4
-FB6C ARABIC LETTER VEH INITIAL FORM
- # <initial> 06A4
-FB6D ARABIC LETTER VEH MEDIAL FORM
- # <medial> 06A4
-FB6E ARABIC LETTER PEHEH ISOLATED FORM
- # <isolated> 06A6
-FB6F ARABIC LETTER PEHEH FINAL FORM
- # <final> 06A6
-FB70 ARABIC LETTER PEHEH INITIAL FORM
- # <initial> 06A6
-FB71 ARABIC LETTER PEHEH MEDIAL FORM
- # <medial> 06A6
-FB72 ARABIC LETTER DYEH ISOLATED FORM
- # <isolated> 0684
-FB73 ARABIC LETTER DYEH FINAL FORM
- # <final> 0684
-FB74 ARABIC LETTER DYEH INITIAL FORM
- # <initial> 0684
-FB75 ARABIC LETTER DYEH MEDIAL FORM
- # <medial> 0684
-FB76 ARABIC LETTER NYEH ISOLATED FORM
- # <isolated> 0683
-FB77 ARABIC LETTER NYEH FINAL FORM
- # <final> 0683
-FB78 ARABIC LETTER NYEH INITIAL FORM
- # <initial> 0683
-FB79 ARABIC LETTER NYEH MEDIAL FORM
- # <medial> 0683
-FB7A ARABIC LETTER TCHEH ISOLATED FORM
- # <isolated> 0686
-FB7B ARABIC LETTER TCHEH FINAL FORM
- # <final> 0686
-FB7C ARABIC LETTER TCHEH INITIAL FORM
- # <initial> 0686
-FB7D ARABIC LETTER TCHEH MEDIAL FORM
- # <medial> 0686
-FB7E ARABIC LETTER TCHEHEH ISOLATED FORM
- # <isolated> 0687
-FB7F ARABIC LETTER TCHEHEH FINAL FORM
- # <final> 0687
-FB80 ARABIC LETTER TCHEHEH INITIAL FORM
- # <initial> 0687
-FB81 ARABIC LETTER TCHEHEH MEDIAL FORM
- # <medial> 0687
-FB82 ARABIC LETTER DDAHAL ISOLATED FORM
- # <isolated> 068D
-FB83 ARABIC LETTER DDAHAL FINAL FORM
- # <final> 068D
-FB84 ARABIC LETTER DAHAL ISOLATED FORM
- # <isolated> 068C
-FB85 ARABIC LETTER DAHAL FINAL FORM
- # <final> 068C
-FB86 ARABIC LETTER DUL ISOLATED FORM
- # <isolated> 068E
-FB87 ARABIC LETTER DUL FINAL FORM
- # <final> 068E
-FB88 ARABIC LETTER DDAL ISOLATED FORM
- # <isolated> 0688
-FB89 ARABIC LETTER DDAL FINAL FORM
- # <final> 0688
-FB8A ARABIC LETTER JEH ISOLATED FORM
- # <isolated> 0698
-FB8B ARABIC LETTER JEH FINAL FORM
- # <final> 0698
-FB8C ARABIC LETTER RREH ISOLATED FORM
- # <isolated> 0691
-FB8D ARABIC LETTER RREH FINAL FORM
- # <final> 0691
-FB8E ARABIC LETTER KEHEH ISOLATED FORM
- # <isolated> 06A9
-FB8F ARABIC LETTER KEHEH FINAL FORM
- # <final> 06A9
-FB90 ARABIC LETTER KEHEH INITIAL FORM
- # <initial> 06A9
-FB91 ARABIC LETTER KEHEH MEDIAL FORM
- # <medial> 06A9
-FB92 ARABIC LETTER GAF ISOLATED FORM
- # <isolated> 06AF
-FB93 ARABIC LETTER GAF FINAL FORM
- # <final> 06AF
-FB94 ARABIC LETTER GAF INITIAL FORM
- # <initial> 06AF
-FB95 ARABIC LETTER GAF MEDIAL FORM
- # <medial> 06AF
-FB96 ARABIC LETTER GUEH ISOLATED FORM
- # <isolated> 06B3
-FB97 ARABIC LETTER GUEH FINAL FORM
- # <final> 06B3
-FB98 ARABIC LETTER GUEH INITIAL FORM
- # <initial> 06B3
-FB99 ARABIC LETTER GUEH MEDIAL FORM
- # <medial> 06B3
-FB9A ARABIC LETTER NGOEH ISOLATED FORM
- # <isolated> 06B1
-FB9B ARABIC LETTER NGOEH FINAL FORM
- # <final> 06B1
-FB9C ARABIC LETTER NGOEH INITIAL FORM
- # <initial> 06B1
-FB9D ARABIC LETTER NGOEH MEDIAL FORM
- # <medial> 06B1
-FB9E ARABIC LETTER NOON GHUNNA ISOLATED FORM
- # <isolated> 06BA
-FB9F ARABIC LETTER NOON GHUNNA FINAL FORM
- # <final> 06BA
-FBA0 ARABIC LETTER RNOON ISOLATED FORM
- # <isolated> 06BB
-FBA1 ARABIC LETTER RNOON FINAL FORM
- # <final> 06BB
-FBA2 ARABIC LETTER RNOON INITIAL FORM
- # <initial> 06BB
-FBA3 ARABIC LETTER RNOON MEDIAL FORM
- # <medial> 06BB
-FBA4 ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
- # <isolated> 06C0
-FBA5 ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
- # <final> 06C0
-FBA6 ARABIC LETTER HEH GOAL ISOLATED FORM
- # <isolated> 06C1
-FBA7 ARABIC LETTER HEH GOAL FINAL FORM
- # <final> 06C1
-FBA8 ARABIC LETTER HEH GOAL INITIAL FORM
- # <initial> 06C1
-FBA9 ARABIC LETTER HEH GOAL MEDIAL FORM
- # <medial> 06C1
-FBAA ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
- # <isolated> 06BE
-FBAB ARABIC LETTER HEH DOACHASHMEE FINAL FORM
- # <final> 06BE
-FBAC ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
- # <initial> 06BE
-FBAD ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
- # <medial> 06BE
-FBAE ARABIC LETTER YEH BARREE ISOLATED FORM
- # <isolated> 06D2
-FBAF ARABIC LETTER YEH BARREE FINAL FORM
- # <final> 06D2
-FBB0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
- # <isolated> 06D3
-FBB1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
- # <final> 06D3
-@ Glyphs for contextual forms of letters for Central Asian languages
-FBD3 ARABIC LETTER NG ISOLATED FORM
- # <isolated> 06AD
-FBD4 ARABIC LETTER NG FINAL FORM
- # <final> 06AD
-FBD5 ARABIC LETTER NG INITIAL FORM
- # <initial> 06AD
-FBD6 ARABIC LETTER NG MEDIAL FORM
- # <medial> 06AD
-FBD7 ARABIC LETTER U ISOLATED FORM
- # <isolated> 06C7
-FBD8 ARABIC LETTER U FINAL FORM
- # <final> 06C7
-FBD9 ARABIC LETTER OE ISOLATED FORM
- # <isolated> 06C6
-FBDA ARABIC LETTER OE FINAL FORM
- # <final> 06C6
-FBDB ARABIC LETTER YU ISOLATED FORM
- # <isolated> 06C8
-FBDC ARABIC LETTER YU FINAL FORM
- # <final> 06C8
-FBDD ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
- # <isolated> 0677
-FBDE ARABIC LETTER VE ISOLATED FORM
- # <isolated> 06CB
-FBDF ARABIC LETTER VE FINAL FORM
- # <final> 06CB
-FBE0 ARABIC LETTER KIRGHIZ OE ISOLATED FORM
- # <isolated> 06C5
-FBE1 ARABIC LETTER KIRGHIZ OE FINAL FORM
- # <final> 06C5
-FBE2 ARABIC LETTER KIRGHIZ YU ISOLATED FORM
- # <isolated> 06C9
-FBE3 ARABIC LETTER KIRGHIZ YU FINAL FORM
- # <final> 06C9
-FBE4 ARABIC LETTER E ISOLATED FORM
- # <isolated> 06D0
-FBE5 ARABIC LETTER E FINAL FORM
- # <final> 06D0
-FBE6 ARABIC LETTER E INITIAL FORM
- # <initial> 06D0
-FBE7 ARABIC LETTER E MEDIAL FORM
- # <medial> 06D0
-FBE8 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
- # <initial> 0649
-FBE9 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
- # <medial> 0649
-@ Ligatures (two elements)
-FBEA ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
- # <isolated> 0626 0627
-FBEB ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
- # <final> 0626 0627
-FBEC ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
- # <isolated> 0626 06D5
-FBED ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
- # <final> 0626 06D5
-FBEE ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
- # <isolated> 0626 0648
-FBEF ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
- # <final> 0626 0648
-FBF0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
- # <isolated> 0626 06C7
-FBF1 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
- # <final> 0626 06C7
-FBF2 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
- # <isolated> 0626 06C6
-FBF3 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
- # <final> 0626 06C6
-FBF4 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
- # <isolated> 0626 06C8
-FBF5 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
- # <final> 0626 06C8
-FBF6 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
- # <isolated> 0626 06D0
-FBF7 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
- # <final> 0626 06D0
-FBF8 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
- # <initial> 0626 06D0
-FBF9 ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0626 0649
-FBFA ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
- # <final> 0626 0649
-FBFB ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
- # <initial> 0626 0649
-FBFC ARABIC LETTER FARSI YEH ISOLATED FORM
- # <isolated> 06CC
-FBFD ARABIC LETTER FARSI YEH FINAL FORM
- # <final> 06CC
-FBFE ARABIC LETTER FARSI YEH INITIAL FORM
- # <initial> 06CC
-FBFF ARABIC LETTER FARSI YEH MEDIAL FORM
- # <medial> 06CC
-FC00 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
- # <isolated> 0626 062C
-FC01 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
- # <isolated> 0626 062D
-FC02 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
- # <isolated> 0626 0645
-FC03 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0626 0649
-FC04 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
- # <isolated> 0626 064A
-FC05 ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
- # <isolated> 0628 062C
-FC06 ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
- # <isolated> 0628 062D
-FC07 ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
- # <isolated> 0628 062E
-FC08 ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
- # <isolated> 0628 0645
-FC09 ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0628 0649
-FC0A ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
- # <isolated> 0628 064A
-FC0B ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
- # <isolated> 062A 062C
-FC0C ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
- # <isolated> 062A 062D
-FC0D ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
- # <isolated> 062A 062E
-FC0E ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
- # <isolated> 062A 0645
-FC0F ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 062A 0649
-FC10 ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
- # <isolated> 062A 064A
-FC11 ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
- # <isolated> 062B 062C
-FC12 ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
- # <isolated> 062B 0645
-FC13 ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 062B 0649
-FC14 ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
- # <isolated> 062B 064A
-FC15 ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
- # <isolated> 062C 062D
-FC16 ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
- # <isolated> 062C 0645
-FC17 ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
- # <isolated> 062D 062C
-FC18 ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
- # <isolated> 062D 0645
-FC19 ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
- # <isolated> 062E 062C
-FC1A ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
- # <isolated> 062E 062D
-FC1B ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
- # <isolated> 062E 0645
-FC1C ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
- # <isolated> 0633 062C
-FC1D ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
- # <isolated> 0633 062D
-FC1E ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
- # <isolated> 0633 062E
-FC1F ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
- # <isolated> 0633 0645
-FC20 ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
- # <isolated> 0635 062D
-FC21 ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
- # <isolated> 0635 0645
-FC22 ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
- # <isolated> 0636 062C
-FC23 ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
- # <isolated> 0636 062D
-FC24 ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
- # <isolated> 0636 062E
-FC25 ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
- # <isolated> 0636 0645
-FC26 ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
- # <isolated> 0637 062D
-FC27 ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
- # <isolated> 0637 0645
-FC28 ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
- # <isolated> 0638 0645
-FC29 ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
- # <isolated> 0639 062C
-FC2A ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
- # <isolated> 0639 0645
-FC2B ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
- # <isolated> 063A 062C
-FC2C ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
- # <isolated> 063A 0645
-FC2D ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
- # <isolated> 0641 062C
-FC2E ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
- # <isolated> 0641 062D
-FC2F ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
- # <isolated> 0641 062E
-FC30 ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
- # <isolated> 0641 0645
-FC31 ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0641 0649
-FC32 ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
- # <isolated> 0641 064A
-FC33 ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
- # <isolated> 0642 062D
-FC34 ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
- # <isolated> 0642 0645
-FC35 ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0642 0649
-FC36 ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
- # <isolated> 0642 064A
-FC37 ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
- # <isolated> 0643 0627
-FC38 ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
- # <isolated> 0643 062C
-FC39 ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
- # <isolated> 0643 062D
-FC3A ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
- # <isolated> 0643 062E
-FC3B ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
- # <isolated> 0643 0644
-FC3C ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
- # <isolated> 0643 0645
-FC3D ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0643 0649
-FC3E ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
- # <isolated> 0643 064A
-FC3F ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
- # <isolated> 0644 062C
-FC40 ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
- # <isolated> 0644 062D
-FC41 ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
- # <isolated> 0644 062E
-FC42 ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
- # <isolated> 0644 0645
-FC43 ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0644 0649
-FC44 ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
- # <isolated> 0644 064A
-FC45 ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
- # <isolated> 0645 062C
-FC46 ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
- # <isolated> 0645 062D
-FC47 ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
- # <isolated> 0645 062E
-FC48 ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
- # <isolated> 0645 0645
-FC49 ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0645 0649
-FC4A ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
- # <isolated> 0645 064A
-FC4B ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
- # <isolated> 0646 062C
-FC4C ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
- # <isolated> 0646 062D
-FC4D ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
- # <isolated> 0646 062E
-FC4E ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
- # <isolated> 0646 0645
-FC4F ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0646 0649
-FC50 ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
- # <isolated> 0646 064A
-FC51 ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
- # <isolated> 0647 062C
-FC52 ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
- # <isolated> 0647 0645
-FC53 ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0647 0649
-FC54 ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
- # <isolated> 0647 064A
-FC55 ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
- # <isolated> 064A 062C
-FC56 ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
- # <isolated> 064A 062D
-FC57 ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
- # <isolated> 064A 062E
-FC58 ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
- # <isolated> 064A 0645
-FC59 ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 064A 0649
-FC5A ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
- # <isolated> 064A 064A
-FC5B ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
- # <isolated> 0630 0670
-FC5C ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
- # <isolated> 0631 0670
-FC5D ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
- # <isolated> 0649 0670
-FC5E ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
- # <isolated> 0020 064C 0651
-FC5F ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
- # <isolated> 0020 064D 0651
-FC60 ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
- # <isolated> 0020 064E 0651
-FC61 ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
- # <isolated> 0020 064F 0651
-FC62 ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
- # <isolated> 0020 0650 0651
-FC63 ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
- # <isolated> 0020 0651 0670
-FC64 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
- # <final> 0626 0631
-FC65 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
- # <final> 0626 0632
-FC66 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
- # <final> 0626 0645
-FC67 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
- # <final> 0626 0646
-FC68 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
- # <final> 0626 0649
-FC69 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
- # <final> 0626 064A
-FC6A ARABIC LIGATURE BEH WITH REH FINAL FORM
- # <final> 0628 0631
-FC6B ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
- # <final> 0628 0632
-FC6C ARABIC LIGATURE BEH WITH MEEM FINAL FORM
- # <final> 0628 0645
-FC6D ARABIC LIGATURE BEH WITH NOON FINAL FORM
- # <final> 0628 0646
-FC6E ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
- # <final> 0628 0649
-FC6F ARABIC LIGATURE BEH WITH YEH FINAL FORM
- # <final> 0628 064A
-FC70 ARABIC LIGATURE TEH WITH REH FINAL FORM
- # <final> 062A 0631
-FC71 ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
- # <final> 062A 0632
-FC72 ARABIC LIGATURE TEH WITH MEEM FINAL FORM
- # <final> 062A 0645
-FC73 ARABIC LIGATURE TEH WITH NOON FINAL FORM
- # <final> 062A 0646
-FC74 ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
- # <final> 062A 0649
-FC75 ARABIC LIGATURE TEH WITH YEH FINAL FORM
- # <final> 062A 064A
-FC76 ARABIC LIGATURE THEH WITH REH FINAL FORM
- # <final> 062B 0631
-FC77 ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
- # <final> 062B 0632
-FC78 ARABIC LIGATURE THEH WITH MEEM FINAL FORM
- # <final> 062B 0645
-FC79 ARABIC LIGATURE THEH WITH NOON FINAL FORM
- # <final> 062B 0646
-FC7A ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
- # <final> 062B 0649
-FC7B ARABIC LIGATURE THEH WITH YEH FINAL FORM
- # <final> 062B 064A
-FC7C ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
- # <final> 0641 0649
-FC7D ARABIC LIGATURE FEH WITH YEH FINAL FORM
- # <final> 0641 064A
-FC7E ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
- # <final> 0642 0649
-FC7F ARABIC LIGATURE QAF WITH YEH FINAL FORM
- # <final> 0642 064A
-FC80 ARABIC LIGATURE KAF WITH ALEF FINAL FORM
- # <final> 0643 0627
-FC81 ARABIC LIGATURE KAF WITH LAM FINAL FORM
- # <final> 0643 0644
-FC82 ARABIC LIGATURE KAF WITH MEEM FINAL FORM
- # <final> 0643 0645
-FC83 ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
- # <final> 0643 0649
-FC84 ARABIC LIGATURE KAF WITH YEH FINAL FORM
- # <final> 0643 064A
-FC85 ARABIC LIGATURE LAM WITH MEEM FINAL FORM
- # <final> 0644 0645
-FC86 ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
- # <final> 0644 0649
-FC87 ARABIC LIGATURE LAM WITH YEH FINAL FORM
- # <final> 0644 064A
-FC88 ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
- # <final> 0645 0627
-FC89 ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
- # <final> 0645 0645
-FC8A ARABIC LIGATURE NOON WITH REH FINAL FORM
- # <final> 0646 0631
-FC8B ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
- # <final> 0646 0632
-FC8C ARABIC LIGATURE NOON WITH MEEM FINAL FORM
- # <final> 0646 0645
-FC8D ARABIC LIGATURE NOON WITH NOON FINAL FORM
- # <final> 0646 0646
-FC8E ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
- # <final> 0646 0649
-FC8F ARABIC LIGATURE NOON WITH YEH FINAL FORM
- # <final> 0646 064A
-FC90 ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
- # <final> 0649 0670
-FC91 ARABIC LIGATURE YEH WITH REH FINAL FORM
- # <final> 064A 0631
-FC92 ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
- # <final> 064A 0632
-FC93 ARABIC LIGATURE YEH WITH MEEM FINAL FORM
- # <final> 064A 0645
-FC94 ARABIC LIGATURE YEH WITH NOON FINAL FORM
- # <final> 064A 0646
-FC95 ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
- # <final> 064A 0649
-FC96 ARABIC LIGATURE YEH WITH YEH FINAL FORM
- # <final> 064A 064A
-FC97 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
- # <initial> 0626 062C
-FC98 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
- # <initial> 0626 062D
-FC99 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
- # <initial> 0626 062E
-FC9A ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
- # <initial> 0626 0645
-FC9B ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
- # <initial> 0626 0647
-FC9C ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
- # <initial> 0628 062C
-FC9D ARABIC LIGATURE BEH WITH HAH INITIAL FORM
- # <initial> 0628 062D
-FC9E ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
- # <initial> 0628 062E
-FC9F ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
- # <initial> 0628 0645
-FCA0 ARABIC LIGATURE BEH WITH HEH INITIAL FORM
- # <initial> 0628 0647
-FCA1 ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
- # <initial> 062A 062C
-FCA2 ARABIC LIGATURE TEH WITH HAH INITIAL FORM
- # <initial> 062A 062D
-FCA3 ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
- # <initial> 062A 062E
-FCA4 ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
- # <initial> 062A 0645
-FCA5 ARABIC LIGATURE TEH WITH HEH INITIAL FORM
- # <initial> 062A 0647
-FCA6 ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
- # <initial> 062B 0645
-FCA7 ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
- # <initial> 062C 062D
-FCA8 ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
- # <initial> 062C 0645
-FCA9 ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
- # <initial> 062D 062C
-FCAA ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
- # <initial> 062D 0645
-FCAB ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
- # <initial> 062E 062C
-FCAC ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
- # <initial> 062E 0645
-FCAD ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
- # <initial> 0633 062C
-FCAE ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
- # <initial> 0633 062D
-FCAF ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
- # <initial> 0633 062E
-FCB0 ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
- # <initial> 0633 0645
-FCB1 ARABIC LIGATURE SAD WITH HAH INITIAL FORM
- # <initial> 0635 062D
-FCB2 ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
- # <initial> 0635 062E
-FCB3 ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
- # <initial> 0635 0645
-FCB4 ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
- # <initial> 0636 062C
-FCB5 ARABIC LIGATURE DAD WITH HAH INITIAL FORM
- # <initial> 0636 062D
-FCB6 ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
- # <initial> 0636 062E
-FCB7 ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
- # <initial> 0636 0645
-FCB8 ARABIC LIGATURE TAH WITH HAH INITIAL FORM
- # <initial> 0637 062D
-FCB9 ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
- # <initial> 0638 0645
-FCBA ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
- # <initial> 0639 062C
-FCBB ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
- # <initial> 0639 0645
-FCBC ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
- # <initial> 063A 062C
-FCBD ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
- # <initial> 063A 0645
-FCBE ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
- # <initial> 0641 062C
-FCBF ARABIC LIGATURE FEH WITH HAH INITIAL FORM
- # <initial> 0641 062D
-FCC0 ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
- # <initial> 0641 062E
-FCC1 ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
- # <initial> 0641 0645
-FCC2 ARABIC LIGATURE QAF WITH HAH INITIAL FORM
- # <initial> 0642 062D
-FCC3 ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
- # <initial> 0642 0645
-FCC4 ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
- # <initial> 0643 062C
-FCC5 ARABIC LIGATURE KAF WITH HAH INITIAL FORM
- # <initial> 0643 062D
-FCC6 ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
- # <initial> 0643 062E
-FCC7 ARABIC LIGATURE KAF WITH LAM INITIAL FORM
- # <initial> 0643 0644
-FCC8 ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
- # <initial> 0643 0645
-FCC9 ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
- # <initial> 0644 062C
-FCCA ARABIC LIGATURE LAM WITH HAH INITIAL FORM
- # <initial> 0644 062D
-FCCB ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
- # <initial> 0644 062E
-FCCC ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
- # <initial> 0644 0645
-FCCD ARABIC LIGATURE LAM WITH HEH INITIAL FORM
- # <initial> 0644 0647
-FCCE ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
- # <initial> 0645 062C
-FCCF ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
- # <initial> 0645 062D
-FCD0 ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
- # <initial> 0645 062E
-FCD1 ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
- # <initial> 0645 0645
-FCD2 ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
- # <initial> 0646 062C
-FCD3 ARABIC LIGATURE NOON WITH HAH INITIAL FORM
- # <initial> 0646 062D
-FCD4 ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
- # <initial> 0646 062E
-FCD5 ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
- # <initial> 0646 0645
-FCD6 ARABIC LIGATURE NOON WITH HEH INITIAL FORM
- # <initial> 0646 0647
-FCD7 ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
- # <initial> 0647 062C
-FCD8 ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
- # <initial> 0647 0645
-FCD9 ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
- # <initial> 0647 0670
-FCDA ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
- # <initial> 064A 062C
-FCDB ARABIC LIGATURE YEH WITH HAH INITIAL FORM
- # <initial> 064A 062D
-FCDC ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
- # <initial> 064A 062E
-FCDD ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
- # <initial> 064A 0645
-FCDE ARABIC LIGATURE YEH WITH HEH INITIAL FORM
- # <initial> 064A 0647
-FCDF ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
- # <medial> 0626 0645
-FCE0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
- # <medial> 0626 0647
-FCE1 ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
- # <medial> 0628 0645
-FCE2 ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
- # <medial> 0628 0647
-FCE3 ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
- # <medial> 062A 0645
-FCE4 ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
- # <medial> 062A 0647
-FCE5 ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
- # <medial> 062B 0645
-FCE6 ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
- # <medial> 062B 0647
-FCE7 ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
- # <medial> 0633 0645
-FCE8 ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
- # <medial> 0633 0647
-FCE9 ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
- # <medial> 0634 0645
-FCEA ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
- # <medial> 0634 0647
-FCEB ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
- # <medial> 0643 0644
-FCEC ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
- # <medial> 0643 0645
-FCED ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
- # <medial> 0644 0645
-FCEE ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
- # <medial> 0646 0645
-FCEF ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
- # <medial> 0646 0647
-FCF0 ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
- # <medial> 064A 0645
-FCF1 ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
- # <medial> 064A 0647
-FCF2 ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
- # <medial> 0640 064E 0651
-FCF3 ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
- # <medial> 0640 064F 0651
-FCF4 ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
- # <medial> 0640 0650 0651
-FCF5 ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0637 0649
-FCF6 ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
- # <isolated> 0637 064A
-FCF7 ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0639 0649
-FCF8 ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
- # <isolated> 0639 064A
-FCF9 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 063A 0649
-FCFA ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
- # <isolated> 063A 064A
-FCFB ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0633 0649
-FCFC ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
- # <isolated> 0633 064A
-FCFD ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0634 0649
-FCFE ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
- # <isolated> 0634 064A
-FCFF ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 062D 0649
-FD00 ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
- # <isolated> 062D 064A
-FD01 ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 062C 0649
-FD02 ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
- # <isolated> 062C 064A
-FD03 ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 062E 0649
-FD04 ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
- # <isolated> 062E 064A
-FD05 ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0635 0649
-FD06 ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
- # <isolated> 0635 064A
-FD07 ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
- # <isolated> 0636 0649
-FD08 ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
- # <isolated> 0636 064A
-FD09 ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
- # <isolated> 0634 062C
-FD0A ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
- # <isolated> 0634 062D
-FD0B ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
- # <isolated> 0634 062E
-FD0C ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
- # <isolated> 0634 0645
-FD0D ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
- # <isolated> 0634 0631
-FD0E ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
- # <isolated> 0633 0631
-FD0F ARABIC LIGATURE SAD WITH REH ISOLATED FORM
- # <isolated> 0635 0631
-FD10 ARABIC LIGATURE DAD WITH REH ISOLATED FORM
- # <isolated> 0636 0631
-FD11 ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
- # <final> 0637 0649
-FD12 ARABIC LIGATURE TAH WITH YEH FINAL FORM
- # <final> 0637 064A
-FD13 ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
- # <final> 0639 0649
-FD14 ARABIC LIGATURE AIN WITH YEH FINAL FORM
- # <final> 0639 064A
-FD15 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
- # <final> 063A 0649
-FD16 ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
- # <final> 063A 064A
-FD17 ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
- # <final> 0633 0649
-FD18 ARABIC LIGATURE SEEN WITH YEH FINAL FORM
- # <final> 0633 064A
-FD19 ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
- # <final> 0634 0649
-FD1A ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
- # <final> 0634 064A
-FD1B ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
- # <final> 062D 0649
-FD1C ARABIC LIGATURE HAH WITH YEH FINAL FORM
- # <final> 062D 064A
-FD1D ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
- # <final> 062C 0649
-FD1E ARABIC LIGATURE JEEM WITH YEH FINAL FORM
- # <final> 062C 064A
-FD1F ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
- # <final> 062E 0649
-FD20 ARABIC LIGATURE KHAH WITH YEH FINAL FORM
- # <final> 062E 064A
-FD21 ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
- # <final> 0635 0649
-FD22 ARABIC LIGATURE SAD WITH YEH FINAL FORM
- # <final> 0635 064A
-FD23 ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
- # <final> 0636 0649
-FD24 ARABIC LIGATURE DAD WITH YEH FINAL FORM
- # <final> 0636 064A
-FD25 ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
- # <final> 0634 062C
-FD26 ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
- # <final> 0634 062D
-FD27 ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
- # <final> 0634 062E
-FD28 ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
- # <final> 0634 0645
-FD29 ARABIC LIGATURE SHEEN WITH REH FINAL FORM
- # <final> 0634 0631
-FD2A ARABIC LIGATURE SEEN WITH REH FINAL FORM
- # <final> 0633 0631
-FD2B ARABIC LIGATURE SAD WITH REH FINAL FORM
- # <final> 0635 0631
-FD2C ARABIC LIGATURE DAD WITH REH FINAL FORM
- # <final> 0636 0631
-FD2D ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
- # <initial> 0634 062C
-FD2E ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
- # <initial> 0634 062D
-FD2F ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
- # <initial> 0634 062E
-FD30 ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
- # <initial> 0634 0645
-FD31 ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
- # <initial> 0633 0647
-FD32 ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
- # <initial> 0634 0647
-FD33 ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
- # <initial> 0637 0645
-FD34 ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
- # <medial> 0633 062C
-FD35 ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
- # <medial> 0633 062D
-FD36 ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
- # <medial> 0633 062E
-FD37 ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
- # <medial> 0634 062C
-FD38 ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
- # <medial> 0634 062D
-FD39 ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
- # <medial> 0634 062E
-FD3A ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
- # <medial> 0637 0645
-FD3B ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
- # <medial> 0638 0645
-FD3C ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
- # <final> 0627 064B
-FD3D ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
- # <isolated> 0627 064B
-@ Punctuation
-FD3E ORNATE LEFT PARENTHESIS
-FD3F ORNATE RIGHT PARENTHESIS
-@ Ligatures (three elements)
-FD50 ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
- # <initial> 062A 062C 0645
-FD51 ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
- # <final> 062A 062D 062C
-FD52 ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
- # <initial> 062A 062D 062C
-FD53 ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
- # <initial> 062A 062D 0645
-FD54 ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
- # <initial> 062A 062E 0645
-FD55 ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
- # <initial> 062A 0645 062C
-FD56 ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
- # <initial> 062A 0645 062D
-FD57 ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
- # <initial> 062A 0645 062E
-FD58 ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
- # <final> 062C 0645 062D
-FD59 ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
- # <initial> 062C 0645 062D
-FD5A ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
- # <final> 062D 0645 064A
-FD5B ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
- # <final> 062D 0645 0649
-FD5C ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
- # <initial> 0633 062D 062C
-FD5D ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
- # <initial> 0633 062C 062D
-FD5E ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
- # <final> 0633 062C 0649
-FD5F ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
- # <final> 0633 0645 062D
-FD60 ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
- # <initial> 0633 0645 062D
-FD61 ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
- # <initial> 0633 0645 062C
-FD62 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
- # <final> 0633 0645 0645
-FD63 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
- # <initial> 0633 0645 0645
-FD64 ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
- # <final> 0635 062D 062D
-FD65 ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
- # <initial> 0635 062D 062D
-FD66 ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
- # <final> 0635 0645 0645
-FD67 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
- # <final> 0634 062D 0645
-FD68 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
- # <initial> 0634 062D 0645
-FD69 ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
- # <final> 0634 062C 064A
-FD6A ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
- # <final> 0634 0645 062E
-FD6B ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
- # <initial> 0634 0645 062E
-FD6C ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
- # <final> 0634 0645 0645
-FD6D ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
- # <initial> 0634 0645 0645
-FD6E ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
- # <final> 0636 062D 0649
-FD6F ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
- # <final> 0636 062E 0645
-FD70 ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
- # <initial> 0636 062E 0645
-FD71 ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
- # <final> 0637 0645 062D
-FD72 ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
- # <initial> 0637 0645 062D
-FD73 ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
- # <initial> 0637 0645 0645
-FD74 ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
- # <final> 0637 0645 064A
-FD75 ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
- # <final> 0639 062C 0645
-FD76 ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
- # <final> 0639 0645 0645
-FD77 ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
- # <initial> 0639 0645 0645
-FD78 ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
- # <final> 0639 0645 0649
-FD79 ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
- # <final> 063A 0645 0645
-FD7A ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
- # <final> 063A 0645 064A
-FD7B ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
- # <final> 063A 0645 0649
-FD7C ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
- # <final> 0641 062E 0645
-FD7D ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
- # <initial> 0641 062E 0645
-FD7E ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
- # <final> 0642 0645 062D
-FD7F ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
- # <final> 0642 0645 0645
-FD80 ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
- # <final> 0644 062D 0645
-FD81 ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
- # <final> 0644 062D 064A
-FD82 ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
- # <final> 0644 062D 0649
-FD83 ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
- # <initial> 0644 062C 062C
-FD84 ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
- # <final> 0644 062C 062C
-FD85 ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
- # <final> 0644 062E 0645
-FD86 ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
- # <initial> 0644 062E 0645
-FD87 ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
- # <final> 0644 0645 062D
-FD88 ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
- # <initial> 0644 0645 062D
-FD89 ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
- # <initial> 0645 062D 062C
-FD8A ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
- # <initial> 0645 062D 0645
-FD8B ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
- # <final> 0645 062D 064A
-FD8C ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
- # <initial> 0645 062C 062D
-FD8D ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
- # <initial> 0645 062C 0645
-FD8E ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
- # <initial> 0645 062E 062C
-FD8F ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
- # <initial> 0645 062E 0645
-FD92 ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
- # <initial> 0645 062C 062E
-FD93 ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
- # <initial> 0647 0645 062C
-FD94 ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
- # <initial> 0647 0645 0645
-FD95 ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
- # <initial> 0646 062D 0645
-FD96 ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
- # <final> 0646 062D 0649
-FD97 ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
- # <final> 0646 062C 0645
-FD98 ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
- # <initial> 0646 062C 0645
-FD99 ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
- # <final> 0646 062C 0649
-FD9A ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
- # <final> 0646 0645 064A
-FD9B ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
- # <final> 0646 0645 0649
-FD9C ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
- # <final> 064A 0645 0645
-FD9D ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
- # <initial> 064A 0645 0645
-FD9E ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
- # <final> 0628 062E 064A
-FD9F ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
- # <final> 062A 062C 064A
-FDA0 ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
- # <final> 062A 062C 0649
-FDA1 ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
- # <final> 062A 062E 064A
-FDA2 ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
- # <final> 062A 062E 0649
-FDA3 ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
- # <final> 062A 0645 064A
-FDA4 ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
- # <final> 062A 0645 0649
-FDA5 ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
- # <final> 062C 0645 064A
-FDA6 ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
- # <final> 062C 062D 0649
-FDA7 ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
- # <final> 062C 0645 0649
-FDA8 ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
- # <final> 0633 062E 0649
-FDA9 ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
- # <final> 0635 062D 064A
-FDAA ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
- # <final> 0634 062D 064A
-FDAB ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
- # <final> 0636 062D 064A
-FDAC ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
- # <final> 0644 062C 064A
-FDAD ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
- # <final> 0644 0645 064A
-FDAE ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
- # <final> 064A 062D 064A
-FDAF ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
- # <final> 064A 062C 064A
-FDB0 ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
- # <final> 064A 0645 064A
-FDB1 ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
- # <final> 0645 0645 064A
-FDB2 ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
- # <final> 0642 0645 064A
-FDB3 ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
- # <final> 0646 062D 064A
-FDB4 ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
- # <initial> 0642 0645 062D
-FDB5 ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
- # <initial> 0644 062D 0645
-FDB6 ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
- # <final> 0639 0645 064A
-FDB7 ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
- # <final> 0643 0645 064A
-FDB8 ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
- # <initial> 0646 062C 062D
-FDB9 ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
- # <final> 0645 062E 064A
-FDBA ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
- # <initial> 0644 062C 0645
-FDBB ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
- # <final> 0643 0645 0645
-FDBC ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
- # <final> 0644 062C 0645
-FDBD ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
- # <final> 0646 062C 062D
-FDBE ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
- # <final> 062C 062D 064A
-FDBF ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
- # <final> 062D 062C 064A
-FDC0 ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
- # <final> 0645 062C 064A
-FDC1 ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
- # <final> 0641 0645 064A
-FDC2 ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
- # <final> 0628 062D 064A
-FDC3 ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
- # <initial> 0643 0645 0645
-FDC4 ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
- # <initial> 0639 062C 0645
-FDC5 ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
- # <initial> 0635 0645 0645
-FDC6 ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
- # <final> 0633 062E 064A
-FDC7 ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
- # <final> 0646 062C 064A
-@ Word ligatures
-FDF0 ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
- # <isolated> 0635 0644 06D2
-FDF1 ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
- # <isolated> 0642 0644 06D2
-FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
- # <isolated> 0627 0644 0644 0647
-FDF3 ARABIC LIGATURE AKBAR ISOLATED FORM
- # <isolated> 0627 0643 0628 0631
-FDF4 ARABIC LIGATURE MOHAMMAD ISOLATED FORM
- # <isolated> 0645 062D 0645 062F
-FDF5 ARABIC LIGATURE SALAM ISOLATED FORM
- # <isolated> 0635 0644 0639 0645
-FDF6 ARABIC LIGATURE RASOUL ISOLATED FORM
- # <isolated> 0631 0633 0648 0644
-FDF7 ARABIC LIGATURE ALAYHE ISOLATED FORM
- # <isolated> 0639 0644 064A 0647
-FDF8 ARABIC LIGATURE WASALLAM ISOLATED FORM
- # <isolated> 0648 0633 0644 0645
-FDF9 ARABIC LIGATURE SALLA ISOLATED FORM
- # <isolated> 0635 0644 0649
-FDFA ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
- # <isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645
-FDFB ARABIC LIGATURE JALLAJALALOUHOU
- # <isolated> 062C 0644 0020 062C 0644 0627 0644 0647
-@@ FE20 Combining Half Marks FE2F
-@ Combining half marks
-FE20 COMBINING LIGATURE LEFT HALF
-FE21 COMBINING LIGATURE RIGHT HALF
-FE22 COMBINING DOUBLE TILDE LEFT HALF
-FE23 COMBINING DOUBLE TILDE RIGHT HALF
-@@ FE30 CJK Compatibility Forms FE4F
-@ Glyphs for vertical variants
-FE30 PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
- # <vertical> 2025
-FE31 PRESENTATION FORM FOR VERTICAL EM DASH
- # <vertical> 2014
-FE32 PRESENTATION FORM FOR VERTICAL EN DASH
- # <vertical> 2013
-FE33 PRESENTATION FORM FOR VERTICAL LOW LINE
- # <vertical> 005F
-FE34 PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
- # <vertical> 005F
-FE35 PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
- # <vertical> 0028
-FE36 PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
- # <vertical> 0029
-FE37 PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
- # <vertical> 007B
-FE38 PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
- # <vertical> 007D
-FE39 PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
- # <vertical> 3014
-FE3A PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
- # <vertical> 3015
-FE3B PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
- # <vertical> 3010
-FE3C PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
- # <vertical> 3011
-FE3D PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
- # <vertical> 300A
-FE3E PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
- # <vertical> 300B
-FE3F PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
- # <vertical> 3008
-FE40 PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
- # <vertical> 3009
-FE41 PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
- # <vertical> 300C
-FE42 PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
- # <vertical> 300D
-FE43 PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
- # <vertical> 300E
-FE44 PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
- # <vertical> 300F
-@ Overscores and underscores
-FE49 DASHED OVERLINE
- # 203E overline
-FE4A CENTRELINE OVERLINE
- # 203E overline
-FE4B WAVY OVERLINE
- # 203E overline
-FE4C DOUBLE WAVY OVERLINE
- # 203E overline
-FE4D DASHED LOW LINE
- # 005F low line
-FE4E CENTRELINE LOW LINE
- # 005F low line
-FE4F WAVY LOW LINE
- # 005F low line
-@@ FE50 Small Form Variants FE6F
-@ Small form variants
-FE50 SMALL COMMA
- # <small> 002C
-FE51 SMALL IDEOGRAPHIC COMMA
- # <small> 3001
-FE52 SMALL FULL STOP
- # <small> 002E
-FE53 <reserved>
- x (middle dot - 00B7)
-FE54 SMALL SEMICOLON
- # <small> 003B
-FE55 SMALL COLON
- # <small> 003A
-FE56 SMALL QUESTION MARK
- # <small> 003F
-FE57 SMALL EXCLAMATION MARK
- # <small> 0021
-FE58 SMALL EM DASH
- # <small> 2014
-FE59 SMALL LEFT PARENTHESIS
- # <small> 0028
-FE5A SMALL RIGHT PARENTHESIS
- # <small> 0029
-FE5B SMALL LEFT CURLY BRACKET
- # <small> 007B
-FE5C SMALL RIGHT CURLY BRACKET
- # <small> 007D
-FE5D SMALL LEFT TORTOISE SHELL BRACKET
- # <small> 3014
-FE5E SMALL RIGHT TORTOISE SHELL BRACKET
- # <small> 3015
-FE5F SMALL NUMBER SIGN
- # <small> 0023
-FE60 SMALL AMPERSAND
- # <small> 0026
-FE61 SMALL ASTERISK
- # <small> 002A
-FE62 SMALL PLUS SIGN
- # <small> 002B
-FE63 SMALL HYPHEN-MINUS
- # <small> 002D
-FE64 SMALL LESS-THAN SIGN
- # <small> 003C
-FE65 SMALL GREATER-THAN SIGN
- # <small> 003E
-FE66 SMALL EQUALS SIGN
- # <small> 003D
-FE67 <reserved>
- x (division slash - 2215)
-FE68 SMALL REVERSE SOLIDUS
- # <small> 005C
-FE69 SMALL DOLLAR SIGN
- # <small> 0024
-FE6A SMALL PERCENT SIGN
- # <small> 0025
-FE6B SMALL COMMERCIAL AT
- # <small> 0040
-@@ FE70 Arabic Presentation Forms-B FEFF
-@ Glyphs for spacing forms of Arabic points
-FE70 ARABIC FATHATAN ISOLATED FORM
- # <isolated> 0020 064B
-FE71 ARABIC TATWEEL WITH FATHATAN ABOVE
- # <medial> 0640 064B
-FE72 ARABIC DAMMATAN ISOLATED FORM
- # <isolated> 0020 064C
-FE74 ARABIC KASRATAN ISOLATED FORM
- # <isolated> 0020 064D
-FE76 ARABIC FATHA ISOLATED FORM
- # <isolated> 0020 064E
-FE77 ARABIC FATHA MEDIAL FORM
- # <medial> 0640 064E
-FE78 ARABIC DAMMA ISOLATED FORM
- # <isolated> 0020 064F
-FE79 ARABIC DAMMA MEDIAL FORM
- # <medial> 0640 064F
-FE7A ARABIC KASRA ISOLATED FORM
- # <isolated> 0020 0650
-FE7B ARABIC KASRA MEDIAL FORM
- # <medial> 0640 0650
-FE7C ARABIC SHADDA ISOLATED FORM
- # <isolated> 0020 0651
-FE7D ARABIC SHADDA MEDIAL FORM
- # <medial> 0640 0651
-FE7E ARABIC SUKUN ISOLATED FORM
- # <isolated> 0020 0652
-FE7F ARABIC SUKUN MEDIAL FORM
- # <medial> 0640 0652
-@ Basic glyphs for Arabic language contextual forms
-FE80 ARABIC LETTER HAMZA ISOLATED FORM
- # <isolated> 0621
-FE81 ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
- # <isolated> 0622
-FE82 ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
- # <final> 0622
-FE83 ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
- # <isolated> 0623
-FE84 ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
- # <final> 0623
-FE85 ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
- # <isolated> 0624
-FE86 ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
- # <final> 0624
-FE87 ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
- # <isolated> 0625
-FE88 ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
- # <final> 0625
-FE89 ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
- # <isolated> 0626
-FE8A ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
- # <final> 0626
-FE8B ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
- # <initial> 0626
-FE8C ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
- # <medial> 0626
-FE8D ARABIC LETTER ALEF ISOLATED FORM
- # <isolated> 0627
-FE8E ARABIC LETTER ALEF FINAL FORM
- # <final> 0627
-FE8F ARABIC LETTER BEH ISOLATED FORM
- # <isolated> 0628
-FE90 ARABIC LETTER BEH FINAL FORM
- # <final> 0628
-FE91 ARABIC LETTER BEH INITIAL FORM
- # <initial> 0628
-FE92 ARABIC LETTER BEH MEDIAL FORM
- # <medial> 0628
-FE93 ARABIC LETTER TEH MARBUTA ISOLATED FORM
- # <isolated> 0629
-FE94 ARABIC LETTER TEH MARBUTA FINAL FORM
- # <final> 0629
-FE95 ARABIC LETTER TEH ISOLATED FORM
- # <isolated> 062A
-FE96 ARABIC LETTER TEH FINAL FORM
- # <final> 062A
-FE97 ARABIC LETTER TEH INITIAL FORM
- # <initial> 062A
-FE98 ARABIC LETTER TEH MEDIAL FORM
- # <medial> 062A
-FE99 ARABIC LETTER THEH ISOLATED FORM
- # <isolated> 062B
-FE9A ARABIC LETTER THEH FINAL FORM
- # <final> 062B
-FE9B ARABIC LETTER THEH INITIAL FORM
- # <initial> 062B
-FE9C ARABIC LETTER THEH MEDIAL FORM
- # <medial> 062B
-FE9D ARABIC LETTER JEEM ISOLATED FORM
- # <isolated> 062C
-FE9E ARABIC LETTER JEEM FINAL FORM
- # <final> 062C
-FE9F ARABIC LETTER JEEM INITIAL FORM
- # <initial> 062C
-FEA0 ARABIC LETTER JEEM MEDIAL FORM
- # <medial> 062C
-FEA1 ARABIC LETTER HAH ISOLATED FORM
- # <isolated> 062D
-FEA2 ARABIC LETTER HAH FINAL FORM
- # <final> 062D
-FEA3 ARABIC LETTER HAH INITIAL FORM
- # <initial> 062D
-FEA4 ARABIC LETTER HAH MEDIAL FORM
- # <medial> 062D
-FEA5 ARABIC LETTER KHAH ISOLATED FORM
- # <isolated> 062E
-FEA6 ARABIC LETTER KHAH FINAL FORM
- # <final> 062E
-FEA7 ARABIC LETTER KHAH INITIAL FORM
- # <initial> 062E
-FEA8 ARABIC LETTER KHAH MEDIAL FORM
- # <medial> 062E
-FEA9 ARABIC LETTER DAL ISOLATED FORM
- # <isolated> 062F
-FEAA ARABIC LETTER DAL FINAL FORM
- # <final> 062F
-FEAB ARABIC LETTER THAL ISOLATED FORM
- # <isolated> 0630
-FEAC ARABIC LETTER THAL FINAL FORM
- # <final> 0630
-FEAD ARABIC LETTER REH ISOLATED FORM
- # <isolated> 0631
-FEAE ARABIC LETTER REH FINAL FORM
- # <final> 0631
-FEAF ARABIC LETTER ZAIN ISOLATED FORM
- # <isolated> 0632
-FEB0 ARABIC LETTER ZAIN FINAL FORM
- # <final> 0632
-FEB1 ARABIC LETTER SEEN ISOLATED FORM
- # <isolated> 0633
-FEB2 ARABIC LETTER SEEN FINAL FORM
- # <final> 0633
-FEB3 ARABIC LETTER SEEN INITIAL FORM
- # <initial> 0633
-FEB4 ARABIC LETTER SEEN MEDIAL FORM
- # <medial> 0633
-FEB5 ARABIC LETTER SHEEN ISOLATED FORM
- # <isolated> 0634
-FEB6 ARABIC LETTER SHEEN FINAL FORM
- # <final> 0634
-FEB7 ARABIC LETTER SHEEN INITIAL FORM
- # <initial> 0634
-FEB8 ARABIC LETTER SHEEN MEDIAL FORM
- # <medial> 0634
-FEB9 ARABIC LETTER SAD ISOLATED FORM
- # <isolated> 0635
-FEBA ARABIC LETTER SAD FINAL FORM
- # <final> 0635
-FEBB ARABIC LETTER SAD INITIAL FORM
- # <initial> 0635
-FEBC ARABIC LETTER SAD MEDIAL FORM
- # <medial> 0635
-FEBD ARABIC LETTER DAD ISOLATED FORM
- # <isolated> 0636
-FEBE ARABIC LETTER DAD FINAL FORM
- # <final> 0636
-FEBF ARABIC LETTER DAD INITIAL FORM
- # <initial> 0636
-FEC0 ARABIC LETTER DAD MEDIAL FORM
- # <medial> 0636
-FEC1 ARABIC LETTER TAH ISOLATED FORM
- # <isolated> 0637
-FEC2 ARABIC LETTER TAH FINAL FORM
- # <final> 0637
-FEC3 ARABIC LETTER TAH INITIAL FORM
- # <initial> 0637
-FEC4 ARABIC LETTER TAH MEDIAL FORM
- # <medial> 0637
-FEC5 ARABIC LETTER ZAH ISOLATED FORM
- # <isolated> 0638
-FEC6 ARABIC LETTER ZAH FINAL FORM
- # <final> 0638
-FEC7 ARABIC LETTER ZAH INITIAL FORM
- # <initial> 0638
-FEC8 ARABIC LETTER ZAH MEDIAL FORM
- # <medial> 0638
-FEC9 ARABIC LETTER AIN ISOLATED FORM
- # <isolated> 0639
-FECA ARABIC LETTER AIN FINAL FORM
- # <final> 0639
-FECB ARABIC LETTER AIN INITIAL FORM
- # <initial> 0639
-FECC ARABIC LETTER AIN MEDIAL FORM
- # <medial> 0639
-FECD ARABIC LETTER GHAIN ISOLATED FORM
- # <isolated> 063A
-FECE ARABIC LETTER GHAIN FINAL FORM
- # <final> 063A
-FECF ARABIC LETTER GHAIN INITIAL FORM
- # <initial> 063A
-FED0 ARABIC LETTER GHAIN MEDIAL FORM
- # <medial> 063A
-FED1 ARABIC LETTER FEH ISOLATED FORM
- # <isolated> 0641
-FED2 ARABIC LETTER FEH FINAL FORM
- # <final> 0641
-FED3 ARABIC LETTER FEH INITIAL FORM
- # <initial> 0641
-FED4 ARABIC LETTER FEH MEDIAL FORM
- # <medial> 0641
-FED5 ARABIC LETTER QAF ISOLATED FORM
- # <isolated> 0642
-FED6 ARABIC LETTER QAF FINAL FORM
- # <final> 0642
-FED7 ARABIC LETTER QAF INITIAL FORM
- # <initial> 0642
-FED8 ARABIC LETTER QAF MEDIAL FORM
- # <medial> 0642
-FED9 ARABIC LETTER KAF ISOLATED FORM
- # <isolated> 0643
-FEDA ARABIC LETTER KAF FINAL FORM
- # <final> 0643
-FEDB ARABIC LETTER KAF INITIAL FORM
- # <initial> 0643
-FEDC ARABIC LETTER KAF MEDIAL FORM
- # <medial> 0643
-FEDD ARABIC LETTER LAM ISOLATED FORM
- # <isolated> 0644
-FEDE ARABIC LETTER LAM FINAL FORM
- # <final> 0644
-FEDF ARABIC LETTER LAM INITIAL FORM
- # <initial> 0644
-FEE0 ARABIC LETTER LAM MEDIAL FORM
- # <medial> 0644
-FEE1 ARABIC LETTER MEEM ISOLATED FORM
- # <isolated> 0645
-FEE2 ARABIC LETTER MEEM FINAL FORM
- # <final> 0645
-FEE3 ARABIC LETTER MEEM INITIAL FORM
- # <initial> 0645
-FEE4 ARABIC LETTER MEEM MEDIAL FORM
- # <medial> 0645
-FEE5 ARABIC LETTER NOON ISOLATED FORM
- # <isolated> 0646
-FEE6 ARABIC LETTER NOON FINAL FORM
- # <final> 0646
-FEE7 ARABIC LETTER NOON INITIAL FORM
- # <initial> 0646
-FEE8 ARABIC LETTER NOON MEDIAL FORM
- # <medial> 0646
-FEE9 ARABIC LETTER HEH ISOLATED FORM
- # <isolated> 0647
-FEEA ARABIC LETTER HEH FINAL FORM
- # <final> 0647
-FEEB ARABIC LETTER HEH INITIAL FORM
- # <initial> 0647
-FEEC ARABIC LETTER HEH MEDIAL FORM
- # <medial> 0647
-FEED ARABIC LETTER WAW ISOLATED FORM
- # <isolated> 0648
-FEEE ARABIC LETTER WAW FINAL FORM
- # <final> 0648
-FEEF ARABIC LETTER ALEF MAKSURA ISOLATED FORM
- # <isolated> 0649
-FEF0 ARABIC LETTER ALEF MAKSURA FINAL FORM
- # <final> 0649
-FEF1 ARABIC LETTER YEH ISOLATED FORM
- # <isolated> 064A
-FEF2 ARABIC LETTER YEH FINAL FORM
- # <final> 064A
-FEF3 ARABIC LETTER YEH INITIAL FORM
- # <initial> 064A
-FEF4 ARABIC LETTER YEH MEDIAL FORM
- # <medial> 064A
-FEF5 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
- # <isolated> 0644 0622
-FEF6 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
- # <final> 0644 0622
-FEF7 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
- # <isolated> 0644 0623
-FEF8 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
- # <final> 0644 0623
-FEF9 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
- # <isolated> 0644 0625
-FEFA ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
- # <final> 0644 0625
-FEFB ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
- # <isolated> 0644 0627
-FEFC ARABIC LIGATURE LAM WITH ALEF FINAL FORM
- # <final> 0644 0627
-@ Special
-FEFF ZERO WIDTH NO-BREAK SPACE
- = BYTE ORDER MARK (BOM)
- * may be used to detect byte order by contrast with FFFE which is not a character
- x (<not a character> - FFFE)
- x (zero width space - 200B)
-@@ FF00 Halfwidth and Fullwidth Forms FFEF
-@ Fullwidth ASCII variants
-@+ See ASCII 0020 - 007E
-FF01 FULLWIDTH EXCLAMATION MARK
- # <wide> 0021
-FF02 FULLWIDTH QUOTATION MARK
- # <wide> 0022
-FF03 FULLWIDTH NUMBER SIGN
- # <wide> 0023
-FF04 FULLWIDTH DOLLAR SIGN
- # <wide> 0024
-FF05 FULLWIDTH PERCENT SIGN
- # <wide> 0025
-FF06 FULLWIDTH AMPERSAND
- # <wide> 0026
-FF07 FULLWIDTH APOSTROPHE
- # <wide> 0027
-FF08 FULLWIDTH LEFT PARENTHESIS
- # <wide> 0028
-FF09 FULLWIDTH RIGHT PARENTHESIS
- # <wide> 0029
-FF0A FULLWIDTH ASTERISK
- # <wide> 002A
-FF0B FULLWIDTH PLUS SIGN
- # <wide> 002B
-FF0C FULLWIDTH COMMA
- # <wide> 002C
-FF0D FULLWIDTH HYPHEN-MINUS
- # <wide> 002D
-FF0E FULLWIDTH FULL STOP
- # <wide> 002E
-FF0F FULLWIDTH SOLIDUS
- # <wide> 002F
-FF10 FULLWIDTH DIGIT ZERO
- # <wide> 0030
-FF11 FULLWIDTH DIGIT ONE
- # <wide> 0031
-FF12 FULLWIDTH DIGIT TWO
- # <wide> 0032
-FF13 FULLWIDTH DIGIT THREE
- # <wide> 0033
-FF14 FULLWIDTH DIGIT FOUR
- # <wide> 0034
-FF15 FULLWIDTH DIGIT FIVE
- # <wide> 0035
-FF16 FULLWIDTH DIGIT SIX
- # <wide> 0036
-FF17 FULLWIDTH DIGIT SEVEN
- # <wide> 0037
-FF18 FULLWIDTH DIGIT EIGHT
- # <wide> 0038
-FF19 FULLWIDTH DIGIT NINE
- # <wide> 0039
-FF1A FULLWIDTH COLON
- # <wide> 003A
-FF1B FULLWIDTH SEMICOLON
- # <wide> 003B
-FF1C FULLWIDTH LESS-THAN SIGN
- # <wide> 003C
-FF1D FULLWIDTH EQUALS SIGN
- # <wide> 003D
-FF1E FULLWIDTH GREATER-THAN SIGN
- # <wide> 003E
-FF1F FULLWIDTH QUESTION MARK
- # <wide> 003F
-FF20 FULLWIDTH COMMERCIAL AT
- # <wide> 0040
-FF21 FULLWIDTH LATIN CAPITAL LETTER A
- # <wide> 0041
-FF22 FULLWIDTH LATIN CAPITAL LETTER B
- # <wide> 0042
-FF23 FULLWIDTH LATIN CAPITAL LETTER C
- # <wide> 0043
-FF24 FULLWIDTH LATIN CAPITAL LETTER D
- # <wide> 0044
-FF25 FULLWIDTH LATIN CAPITAL LETTER E
- # <wide> 0045
-FF26 FULLWIDTH LATIN CAPITAL LETTER F
- # <wide> 0046
-FF27 FULLWIDTH LATIN CAPITAL LETTER G
- # <wide> 0047
-FF28 FULLWIDTH LATIN CAPITAL LETTER H
- # <wide> 0048
-FF29 FULLWIDTH LATIN CAPITAL LETTER I
- # <wide> 0049
-FF2A FULLWIDTH LATIN CAPITAL LETTER J
- # <wide> 004A
-FF2B FULLWIDTH LATIN CAPITAL LETTER K
- # <wide> 004B
-FF2C FULLWIDTH LATIN CAPITAL LETTER L
- # <wide> 004C
-FF2D FULLWIDTH LATIN CAPITAL LETTER M
- # <wide> 004D
-FF2E FULLWIDTH LATIN CAPITAL LETTER N
- # <wide> 004E
-FF2F FULLWIDTH LATIN CAPITAL LETTER O
- # <wide> 004F
-FF30 FULLWIDTH LATIN CAPITAL LETTER P
- # <wide> 0050
-FF31 FULLWIDTH LATIN CAPITAL LETTER Q
- # <wide> 0051
-FF32 FULLWIDTH LATIN CAPITAL LETTER R
- # <wide> 0052
-FF33 FULLWIDTH LATIN CAPITAL LETTER S
- # <wide> 0053
-FF34 FULLWIDTH LATIN CAPITAL LETTER T
- # <wide> 0054
-FF35 FULLWIDTH LATIN CAPITAL LETTER U
- # <wide> 0055
-FF36 FULLWIDTH LATIN CAPITAL LETTER V
- # <wide> 0056
-FF37 FULLWIDTH LATIN CAPITAL LETTER W
- # <wide> 0057
-FF38 FULLWIDTH LATIN CAPITAL LETTER X
- # <wide> 0058
-FF39 FULLWIDTH LATIN CAPITAL LETTER Y
- # <wide> 0059
-FF3A FULLWIDTH LATIN CAPITAL LETTER Z
- # <wide> 005A
-FF3B FULLWIDTH LEFT SQUARE BRACKET
- # <wide> 005B
-FF3C FULLWIDTH REVERSE SOLIDUS
- # <wide> 005C
-FF3D FULLWIDTH RIGHT SQUARE BRACKET
- # <wide> 005D
-FF3E FULLWIDTH CIRCUMFLEX ACCENT
- # <wide> 005E
-FF3F FULLWIDTH LOW LINE
- # <wide> 005F
-FF40 FULLWIDTH GRAVE ACCENT
- # <wide> 0060
-FF41 FULLWIDTH LATIN SMALL LETTER A
- # <wide> 0061
-FF42 FULLWIDTH LATIN SMALL LETTER B
- # <wide> 0062
-FF43 FULLWIDTH LATIN SMALL LETTER C
- # <wide> 0063
-FF44 FULLWIDTH LATIN SMALL LETTER D
- # <wide> 0064
-FF45 FULLWIDTH LATIN SMALL LETTER E
- # <wide> 0065
-FF46 FULLWIDTH LATIN SMALL LETTER F
- # <wide> 0066
-FF47 FULLWIDTH LATIN SMALL LETTER G
- # <wide> 0067
-FF48 FULLWIDTH LATIN SMALL LETTER H
- # <wide> 0068
-FF49 FULLWIDTH LATIN SMALL LETTER I
- # <wide> 0069
-FF4A FULLWIDTH LATIN SMALL LETTER J
- # <wide> 006A
-FF4B FULLWIDTH LATIN SMALL LETTER K
- # <wide> 006B
-FF4C FULLWIDTH LATIN SMALL LETTER L
- # <wide> 006C
-FF4D FULLWIDTH LATIN SMALL LETTER M
- # <wide> 006D
-FF4E FULLWIDTH LATIN SMALL LETTER N
- # <wide> 006E
-FF4F FULLWIDTH LATIN SMALL LETTER O
- # <wide> 006F
-FF50 FULLWIDTH LATIN SMALL LETTER P
- # <wide> 0070
-FF51 FULLWIDTH LATIN SMALL LETTER Q
- # <wide> 0071
-FF52 FULLWIDTH LATIN SMALL LETTER R
- # <wide> 0072
-FF53 FULLWIDTH LATIN SMALL LETTER S
- # <wide> 0073
-FF54 FULLWIDTH LATIN SMALL LETTER T
- # <wide> 0074
-FF55 FULLWIDTH LATIN SMALL LETTER U
- # <wide> 0075
-FF56 FULLWIDTH LATIN SMALL LETTER V
- # <wide> 0076
-FF57 FULLWIDTH LATIN SMALL LETTER W
- # <wide> 0077
-FF58 FULLWIDTH LATIN SMALL LETTER X
- # <wide> 0078
-FF59 FULLWIDTH LATIN SMALL LETTER Y
- # <wide> 0079
-FF5A FULLWIDTH LATIN SMALL LETTER Z
- # <wide> 007A
-FF5B FULLWIDTH LEFT CURLY BRACKET
- # <wide> 007B
-FF5C FULLWIDTH VERTICAL LINE
- # <wide> 007C
-FF5D FULLWIDTH RIGHT CURLY BRACKET
- # <wide> 007D
-FF5E FULLWIDTH TILDE
- # <wide> 007E
-@ Halfwidth CJK punctuation
-@+ See CJK punctuation 3000 - 303F
-FF61 HALFWIDTH IDEOGRAPHIC FULL STOP
- # <narrow> 3002
-FF62 HALFWIDTH LEFT CORNER BRACKET
- # <narrow> 300C
-FF63 HALFWIDTH RIGHT CORNER BRACKET
- # <narrow> 300D
-FF64 HALFWIDTH IDEOGRAPHIC COMMA
- # <narrow> 3001
-@ Halfwidth Katakana variants
-@+ See Katakana 30A0 - 30FF
-FF65 HALFWIDTH KATAKANA MIDDLE DOT
- # <narrow> 30FB
-FF66 HALFWIDTH KATAKANA LETTER WO
- # <narrow> 30F2
-FF67 HALFWIDTH KATAKANA LETTER SMALL A
- # <narrow> 30A1
-FF68 HALFWIDTH KATAKANA LETTER SMALL I
- # <narrow> 30A3
-FF69 HALFWIDTH KATAKANA LETTER SMALL U
- # <narrow> 30A5
-FF6A HALFWIDTH KATAKANA LETTER SMALL E
- # <narrow> 30A7
-FF6B HALFWIDTH KATAKANA LETTER SMALL O
- # <narrow> 30A9
-FF6C HALFWIDTH KATAKANA LETTER SMALL YA
- # <narrow> 30E3
-FF6D HALFWIDTH KATAKANA LETTER SMALL YU
- # <narrow> 30E5
-FF6E HALFWIDTH KATAKANA LETTER SMALL YO
- # <narrow> 30E7
-FF6F HALFWIDTH KATAKANA LETTER SMALL TU
- # <narrow> 30C3
-FF70 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
- # <narrow> 30FC
-FF71 HALFWIDTH KATAKANA LETTER A
- # <narrow> 30A2
-FF72 HALFWIDTH KATAKANA LETTER I
- # <narrow> 30A4
-FF73 HALFWIDTH KATAKANA LETTER U
- # <narrow> 30A6
-FF74 HALFWIDTH KATAKANA LETTER E
- # <narrow> 30A8
-FF75 HALFWIDTH KATAKANA LETTER O
- # <narrow> 30AA
-FF76 HALFWIDTH KATAKANA LETTER KA
- # <narrow> 30AB
-FF77 HALFWIDTH KATAKANA LETTER KI
- # <narrow> 30AD
-FF78 HALFWIDTH KATAKANA LETTER KU
- # <narrow> 30AF
-FF79 HALFWIDTH KATAKANA LETTER KE
- # <narrow> 30B1
-FF7A HALFWIDTH KATAKANA LETTER KO
- # <narrow> 30B3
-FF7B HALFWIDTH KATAKANA LETTER SA
- # <narrow> 30B5
-FF7C HALFWIDTH KATAKANA LETTER SI
- # <narrow> 30B7
-FF7D HALFWIDTH KATAKANA LETTER SU
- # <narrow> 30B9
-FF7E HALFWIDTH KATAKANA LETTER SE
- # <narrow> 30BB
-FF7F HALFWIDTH KATAKANA LETTER SO
- # <narrow> 30BD
-FF80 HALFWIDTH KATAKANA LETTER TA
- # <narrow> 30BF
-FF81 HALFWIDTH KATAKANA LETTER TI
- # <narrow> 30C1
-FF82 HALFWIDTH KATAKANA LETTER TU
- # <narrow> 30C4
-FF83 HALFWIDTH KATAKANA LETTER TE
- # <narrow> 30C6
-FF84 HALFWIDTH KATAKANA LETTER TO
- # <narrow> 30C8
-FF85 HALFWIDTH KATAKANA LETTER NA
- # <narrow> 30CA
-FF86 HALFWIDTH KATAKANA LETTER NI
- # <narrow> 30CB
-FF87 HALFWIDTH KATAKANA LETTER NU
- # <narrow> 30CC
-FF88 HALFWIDTH KATAKANA LETTER NE
- # <narrow> 30CD
-FF89 HALFWIDTH KATAKANA LETTER NO
- # <narrow> 30CE
-FF8A HALFWIDTH KATAKANA LETTER HA
- # <narrow> 30CF
-FF8B HALFWIDTH KATAKANA LETTER HI
- # <narrow> 30D2
-FF8C HALFWIDTH KATAKANA LETTER HU
- # <narrow> 30D5
-FF8D HALFWIDTH KATAKANA LETTER HE
- # <narrow> 30D8
-FF8E HALFWIDTH KATAKANA LETTER HO
- # <narrow> 30DB
-FF8F HALFWIDTH KATAKANA LETTER MA
- # <narrow> 30DE
-FF90 HALFWIDTH KATAKANA LETTER MI
- # <narrow> 30DF
-FF91 HALFWIDTH KATAKANA LETTER MU
- # <narrow> 30E0
-FF92 HALFWIDTH KATAKANA LETTER ME
- # <narrow> 30E1
-FF93 HALFWIDTH KATAKANA LETTER MO
- # <narrow> 30E2
-FF94 HALFWIDTH KATAKANA LETTER YA
- # <narrow> 30E4
-FF95 HALFWIDTH KATAKANA LETTER YU
- # <narrow> 30E6
-FF96 HALFWIDTH KATAKANA LETTER YO
- # <narrow> 30E8
-FF97 HALFWIDTH KATAKANA LETTER RA
- # <narrow> 30E9
-FF98 HALFWIDTH KATAKANA LETTER RI
- # <narrow> 30EA
-FF99 HALFWIDTH KATAKANA LETTER RU
- # <narrow> 30EB
-FF9A HALFWIDTH KATAKANA LETTER RE
- # <narrow> 30EC
-FF9B HALFWIDTH KATAKANA LETTER RO
- # <narrow> 30ED
-FF9C HALFWIDTH KATAKANA LETTER WA
- # <narrow> 30EF
-FF9D HALFWIDTH KATAKANA LETTER N
- # <narrow> 30F3
-FF9E HALFWIDTH KATAKANA VOICED SOUND MARK (halfwidth katakana-hiragana voiced sound mark)
- # <narrow> 3099
-FF9F HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK (halfwidth katakana-hiragana semi-voiced sound mark)
- # <narrow> 309A
-@ Halfwidth Hangul variants
-@+ See Hangul Compatibility Jamo 3130 - 318F
-FFA0 HALFWIDTH HANGUL FILLER
- # <narrow> 3164
-FFA1 HALFWIDTH HANGUL LETTER KIYEOK
- # <narrow> 3131
-FFA2 HALFWIDTH HANGUL LETTER SSANGKIYEOK
- # <narrow> 3132
-FFA3 HALFWIDTH HANGUL LETTER KIYEOK-SIOS
- # <narrow> 3133
-FFA4 HALFWIDTH HANGUL LETTER NIEUN
- # <narrow> 3134
-FFA5 HALFWIDTH HANGUL LETTER NIEUN-CIEUC
- # <narrow> 3135
-FFA6 HALFWIDTH HANGUL LETTER NIEUN-HIEUH
- # <narrow> 3136
-FFA7 HALFWIDTH HANGUL LETTER TIKEUT
- # <narrow> 3137
-FFA8 HALFWIDTH HANGUL LETTER SSANGTIKEUT
- # <narrow> 3138
-FFA9 HALFWIDTH HANGUL LETTER RIEUL
- # <narrow> 3139
-FFAA HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
- # <narrow> 313A
-FFAB HALFWIDTH HANGUL LETTER RIEUL-MIEUM
- # <narrow> 313B
-FFAC HALFWIDTH HANGUL LETTER RIEUL-PIEUP
- # <narrow> 313C
-FFAD HALFWIDTH HANGUL LETTER RIEUL-SIOS
- # <narrow> 313D
-FFAE HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
- # <narrow> 313E
-FFAF HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
- # <narrow> 313F
-FFB0 HALFWIDTH HANGUL LETTER RIEUL-HIEUH
- # <narrow> 3140
-FFB1 HALFWIDTH HANGUL LETTER MIEUM
- # <narrow> 3141
-FFB2 HALFWIDTH HANGUL LETTER PIEUP
- # <narrow> 3142
-FFB3 HALFWIDTH HANGUL LETTER SSANGPIEUP
- # <narrow> 3143
-FFB4 HALFWIDTH HANGUL LETTER PIEUP-SIOS
- # <narrow> 3144
-FFB5 HALFWIDTH HANGUL LETTER SIOS
- # <narrow> 3145
-FFB6 HALFWIDTH HANGUL LETTER SSANGSIOS
- # <narrow> 3146
-FFB7 HALFWIDTH HANGUL LETTER IEUNG
- # <narrow> 3147
-FFB8 HALFWIDTH HANGUL LETTER CIEUC
- # <narrow> 3148
-FFB9 HALFWIDTH HANGUL LETTER SSANGCIEUC
- # <narrow> 3149
-FFBA HALFWIDTH HANGUL LETTER CHIEUCH
- # <narrow> 314A
-FFBB HALFWIDTH HANGUL LETTER KHIEUKH
- # <narrow> 314B
-FFBC HALFWIDTH HANGUL LETTER THIEUTH
- # <narrow> 314C
-FFBD HALFWIDTH HANGUL LETTER PHIEUPH
- # <narrow> 314D
-FFBE HALFWIDTH HANGUL LETTER HIEUH
- # <narrow> 314E
-FFC2 HALFWIDTH HANGUL LETTER A
- # <narrow> 314F
-FFC3 HALFWIDTH HANGUL LETTER AE
- # <narrow> 3150
-FFC4 HALFWIDTH HANGUL LETTER YA
- # <narrow> 3151
-FFC5 HALFWIDTH HANGUL LETTER YAE
- # <narrow> 3152
-FFC6 HALFWIDTH HANGUL LETTER EO
- # <narrow> 3153
-FFC7 HALFWIDTH HANGUL LETTER E
- # <narrow> 3154
-FFCA HALFWIDTH HANGUL LETTER YEO
- # <narrow> 3155
-FFCB HALFWIDTH HANGUL LETTER YE
- # <narrow> 3156
-FFCC HALFWIDTH HANGUL LETTER O
- # <narrow> 3157
-FFCD HALFWIDTH HANGUL LETTER WA
- # <narrow> 3158
-FFCE HALFWIDTH HANGUL LETTER WAE
- # <narrow> 3159
-FFCF HALFWIDTH HANGUL LETTER OE
- # <narrow> 315A
-FFD2 HALFWIDTH HANGUL LETTER YO
- # <narrow> 315B
-FFD3 HALFWIDTH HANGUL LETTER U
- # <narrow> 315C
-FFD4 HALFWIDTH HANGUL LETTER WEO
- # <narrow> 315D
-FFD5 HALFWIDTH HANGUL LETTER WE
- # <narrow> 315E
-FFD6 HALFWIDTH HANGUL LETTER WI
- # <narrow> 315F
-FFD7 HALFWIDTH HANGUL LETTER YU
- # <narrow> 3160
-FFDA HALFWIDTH HANGUL LETTER EU
- # <narrow> 3161
-FFDB HALFWIDTH HANGUL LETTER YI
- # <narrow> 3162
-FFDC HALFWIDTH HANGUL LETTER I
- # <narrow> 3163
-@ Fullwidth symbol variants
-@+ See Latin-1 00A0 - 00FF
-FFE0 FULLWIDTH CENT SIGN
- # <wide> 00A2
-FFE1 FULLWIDTH POUND SIGN
- # <wide> 00A3
-FFE2 FULLWIDTH NOT SIGN
- # <wide> 00AC
-FFE3 FULLWIDTH MACRON *
- * sometimes treated as fullwidth overline
- x (overline - 203E)
- # <wide> 00AF
-FFE4 FULLWIDTH BROKEN BAR
- # <wide> 00A6
-FFE5 FULLWIDTH YEN SIGN
- # <wide> 00A5
-FFE6 FULLWIDTH WON SIGN
- # <wide> 20A9
-@ Halfwidth symbol variants
-FFE8 HALFWIDTH FORMS LIGHT VERTICAL
- # <narrow> 2502
-FFE9 HALFWIDTH LEFTWARDS ARROW
- # <narrow> 2190
-FFEA HALFWIDTH UPWARDS ARROW
- # <narrow> 2191
-FFEB HALFWIDTH RIGHTWARDS ARROW
- # <narrow> 2192
-FFEC HALFWIDTH DOWNWARDS ARROW
- # <narrow> 2193
-FFED HALFWIDTH BLACK SQUARE
- # <narrow> 25A0
-FFEE HALFWIDTH WHITE CIRCLE
- # <narrow> 25CB
-@@ FFF0 Specials FFFF
-@ Interlinear annotation
-@+ Used internally for Japanese Ruby (furigana), etc.
-FFF9 INTERLINEAR ANNOTATION ANCHOR
- * marks start of annotated text
-FFFA INTERLINEAR ANNOTATION SEPARATOR
- * marks start of annotating character(s)
-FFFB INTERLINEAR ANNOTATION TERMINATOR
- * marks end of annotation block
-@ Replacement characters
-FFFC OBJECT REPLACEMENT CHARACTER
- * used as placeholder in text for an otherwise unspecified object
-FFFD REPLACEMENT CHARACTER
- * used to replace an incoming character whose value is unknown or unrepresentable in Unicode
- * compare the use of 001A as a control character to indicate the substitute function
-@ Not character codes
-FFFE <not a character>
- * the value FFFE is guaranteed not to be a Unicode character at all
- * may be used to detect byte order by contrast with FEFF which is a character
- x (zero width no-break space - FEFF)
-FFFF <not a character>
- * the value FFFF is guaranteed not to be a Unicode character at all
diff --git a/contrib/perl5/lib/unicode/NamesList.html b/contrib/perl5/lib/unicode/NamesList.html
deleted file mode 100644
index 0bfc5db..0000000
--- a/contrib/perl5/lib/unicode/NamesList.html
+++ /dev/null
@@ -1,226 +0,0 @@
-<html>
-
-<head>
-<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
-<title>Unicode 3.0 NamesList File Structure</title>
-</head>
-
-<body>
-
-<h3>Unicode NamesList File Format</h3>
-
-<p>Last updated: 1999-07-06</p>
-
-<h3>1.0 Introduction</h3>
-
-<p>The Unicode name list file NamesList.txt (also NamesList.lst) is a plain text file used
-to drive the layout of the character code charts in the Unicode Standard. The information
-in this file is a combination of several fields from the UnicodeData.txt and Blocks.txt files,
-together with additional annotations for many characters. This document describes the
-syntax rules for the file format, but also gives brief information on how each construct
-is rendered when laid out for the book. Some of the syntax elements were used in
-preparation of the drafts of the book and may not be present in the final, released form
-of the NamesList.txt file.</p>
-
-<p>The same input file can be used to do the draft preparation for ISO/IEC 10646 (referred
-below as ISO-style). This necessitates the presence of some information in the name list
-file that is not needed (and in fact removed during parsing) for the Unicode book.</p>
-
-<p>With access to the layout program (unibook.exe) it is a simple matter of creating
-name lists for the purpose of formatting working drafts containing proposed characters.</p>
-
-<h3>1.1 NamesList File Overview</h3>
-
-<p>The *.lst files are plain text files which in their most simple form look like this</p>
-
-<p>@@&lt;tab&gt;0020&lt;tab&gt;BASIC LATIN&lt;tab&gt;007F<br>
-; this is a file comment (ignored)<br>
-0020&lt;tab&gt;SPACE<br>
-0021&lt;tab&gt;EXCLAMATION MARK<br>
-0022&lt;tab&gt;QUOTATION MARK<br>
-. . . <br>
-007F&lt;tab&gt;DELETE</p>
-
-<p>The semicolon (as first character), @ and &lt;tab&gt; characters are used by the file
-syntax and must be provided as shown. Hexadecimal digits must be in UPPER CASE). A double
-@@ introduces a block header, with the title, and start and ending code of the block
-provided as shown.</p>
-
-<p>For an ISO-style, minimal name list, only the NAME_LINE and BLOCKHEADER and their
-constituent syntax elements are needed.</p>
-
-<p>The full syntax with all the options is provided in the following sections.</p>
-
-<h3>1.2 NamesList File Structure</h3>
-
-<p>This section gives defines the overall file structure</p>
-
-<pre><strong>NAMELIST: TITLE_PAGE* BLOCK*
-</strong>
-<strong>TITLE_PAGE: TITLE
- | TITLE_PAGE SUBTITLE
- | TITLE_PAGE SUBHEADER
- | TITLE_PAGE IGNORED_LINE
- | TITLE_PAGE EMPTY_LINE
- | TITLE_PAGE COMMENTLINE
- | TITLE_PAGE NOTICE
- | TITLE_PAGE PAGEBREAK
-</strong>
-<strong>BLOCK: BLOCKHEADER
- | BLOCK CHAR_ENTRY
- | BLOCK SUBHEADER
- | BLOCK NOTICE
- | BLOCK EMPTY_LINE
- | BLOCK IGNORED_LINE
- | BLOCK PAGEBREAK
-
-CHAR_ENTRY: NAME_LINE | RESERVED_LINE
- | CHAR_ENTRY ALIAS_LINE
- | CHAR_ENTRY COMMENT_LINE
- | CHAR_ENTRY CROSS_REF
- | CHAR_ENTRY DECOMPOSITION
- | CHAR_ENTRY COMPAT_MAPPING
- | CHAR_ENTRY IGNORED_LINE
- | CHAR_ENTRY EMPTY_LINE
- | CHAR_ENTRY NOTICE
-</strong></pre>
-
-<p>In other words:<br>
-<br>
-Neither TITLE nor&nbsp; SUBTITLE may occur after the first BLOCKHEADER. </p>
-
-<p>Only TITLE, SUBTITLE, SUBHEADER, PAGEBREAK, COMMENT_LINE,&nbsp; and IGNORED_LINE may
-occur before the first BLOCKHEADER.</p>
-
-<p>Directly following either a NAME_LINE or a RESERVED_LINE an uninterrupted sequence of
-the following lines may occur (in any order and repeated as often as needed): ALIAS_LINE,
-CROSS_REF, DECOMPOSITION, COMPAT_MAPPING, NOTICE, EMPTY_LINE and IGNORED_LINE.</p>
-
-<p>Except for EMPTY_LINE, NOTICE and IGNORED_LINE, none of these lines may occur in any other
-place. </p>
-
-<p>Note: A NOTICE displays differently depending on whether it follows a header or title
-or is part of a CHAR_ENTRY.</p>
-
-<h3>1.3 NamesList File Elements</h3>
-
-<p>This section provides the details of the syntax for the individual elements.</p>
-
-<pre><small><strong>ELEMENT SYNTAX</strong> // How rendered</small></pre>
-
-<pre><small><strong>NAME_LINE: CHAR &lt;tab&gt; LINE
-</strong> // the CHAR and the corresponding image are echoed,
- // followed by the name as given in LINE
-
-<strong> CHAR TAB NAME COMMENT LF
-</strong> // Names may have a comment, which is stripped off
- // unless the file is parsed for an ISO style list
-
-<strong>RESERVED_LINE: CHAR TAB &lt;reserved&gt;
-</strong> // the CHAR is echoed followed by an icon for the
- // reserved character and a fixed string e.g. &lt;reserved&gt;
-
-<strong>COMMMENT_LINE: &lt;tab&gt; &quot;*&quot; SP EXPAND_LINE
-</strong> // * is replaced by BULLET, output line as comment
- <strong>&lt;tab&gt; EXPAND_LINE</strong>
- // output line as comment
-
-<strong>ALIAS_LINE: &lt;tab&gt; &quot;=&quot; SP LINE
-</strong> // replace = by itself, output line as alias
-
-<strong>CROSS_REF: &lt;tab&gt; &quot;X&quot; SP EXPAND_LINE
-</strong> // X is replaced by a right arrow
-<strong> &lt;tab&gt; &quot;X&quot; SP &quot;(&quot; STRING SP &quot;-&quot; SP CHAR &quot;)&quot;
-</strong> // X is replaced by a right arrow
- // the &quot;(&quot;, &quot;-&quot;, &quot;)&quot; are removed, the
- // order of CHAR and STRING is reversed
- // i.e. both inputs result in the same output
-
-<strong>IGNORED_LINE: &lt;tab&gt; &quot;;&quot; EXPAND_LINE
-EMPTY_LINE: LF
-</strong> // empty lines and file comments are ignored
-
-<strong>DECOMPOSITION: &lt;tab&gt; &quot;:&quot; EXPAND_LINE
-</strong> // replace ':' by EQUIV, expand line into
- // decomposition
-
-<strong>COMPAT_MAPPING: &lt;tab&gt; &quot;#&quot; SP EXPAND_LINE
-</strong> // replace '#' by APPROX, output line as mapping
-
-<strong>NOTICE: &quot;@+&quot; &lt;tab&gt; LINE
-</strong> // skip '@+', output text as notice
-<strong> &quot;@+&quot; TAB * SP LINE
-</strong> // skip '@', output text as notice
- // &quot;*&quot; expands to a bullet character
- // Notices following a character code apply to the
- // character and are indented. Notices not following
- // a character code apply to the page/block/column
- // and are italicized, but not indented
-
-<strong>SUBTITLE: &quot;@@@+&quot; &lt;tab&gt; LINE
-</strong> // skip &quot;@@@+&quot;, output text as subtitle
-
-<strong>SUBHEADER: &quot;@&quot; &lt;tab&gt; LINE
-</strong> // skip '@', output line as text as column header
-
-<strong>BLOCKHEADER: &quot;@@&quot; &lt;tab&gt; BLOCKSTART &lt;tab&gt; BLOCKNAME &lt;tab&gt; BLOCKEND
-</strong> // skip &quot;@@&quot;, cause a page break and optional
- // blank page, then output one or more charts
- // followed by the list of character names.
- // use BLOCKSTART and BLOCKEND to define the
- // what characters belong to a block
- // use blockname in page and table headers
- <strong> &quot;@@&quot; &lt;tab&gt; BLOCKSTART &lt;tab&gt; BLOCKNAME COMMENT &lt;tab&gt; BLOCKEND
- </strong>// if a comment is present it replaces the blockname
- // when an ISO-style namelist is laid out
-
-<strong>BLOCKSTART: CHAR</strong> // first character position in block
-<strong>BLOCKEND: CHAR</strong> // last character position in block
-<strong>PAGE_BREAK: &quot;@@&quot;</strong> // insert a (column) break
-
-<strong>TITLE: &quot;@@@&quot; &lt;tab&gt; LINE</strong>
- // skip &quot;@@@&quot;, output line as text
- // Title is used in page headers
-
-<strong>EXPAND_LINE: {CHAR | STRING}+ LF </strong>
- // all instances of CHAR *) are replaced by
- // CHAR NBSP x NBSP where x is the single Unicode
- // character corresponding to char
- // If character is combining, it is replaced with
- // CHAR NBSP &lt;circ&gt; x NBSP where &lt;circ&gt; is the
- // dotted circle</small>
-</pre>
-
-<h3><strong>1.4 NamesList File Primitives</strong></h3>
-
-<p>The following are the primitives and terminals for the NamesList syntax.</p>
-
-<pre><small><strong>LINE: STRING LF
-COMMENT: &quot;(&quot; NAME &quot;)&quot;
- &quot;(&quot; NAME &quot;)&quot; &quot;*&quot;
-</strong>
-<strong>NAME</strong>: &lt;sequence of ASCII characters, except &quot;(&quot; or &quot;)&quot; &gt;
-<strong>STRING</strong>: &lt;sequence of Latin-1 characters&gt;
-<strong>CHAR</strong>: <strong>X X X X</strong>
- <strong>| X X X X X X X X X</strong></small>
-<small><strong>X: &quot;0&quot;|&quot;1&quot;|&quot;2&quot;|&quot;3&quot;|&quot;4&quot;|&quot;5&quot;|&quot;6&quot;|&quot;7&quot;|&quot;8&quot;|&quot;9&quot;|&quot;A&quot;|&quot;B&quot;|&quot;C&quot;|&quot;D&quot;|&quot;E&quot;|&quot;F&quot;
-&lt;tab&gt;:</strong> &lt;sequence of one or more ASCII tab characters 0x09&gt;
-<strong>SP</strong>: &lt;ASCII 0x20&gt;
-<strong>LF</strong>: &lt;any sequence of ASCII 0x0A and 0x0D&gt;
-</small></pre>
-
-<p><strong>Notes:</strong>
-
-<ul>
- <li>Special lookahead logic prevents a mention of a 4 digit standard, such as ISO 9999 from
- being misinterpreted as ISO CHAR.</li>
- <li>Use of Latin-1 is supported in unibook.exe, but not portably, unless the file is encoded as
- UTF-16LE.</li>
- <li>The final LF in the file must be present</li>
- <li>A CHAR inside ' or &quot; is expanded, but only its glyph image is printed,&nbsp; the
- code value is not echoed</li>
- <li>Straight quotes in an EXPAND_LINE are replaced by curly quotes using English rules.
- Apostrophes are supported, but nested quotes are not.</li>
-</ul>
-</body>
-</html>
diff --git a/contrib/perl5/lib/unicode/Number.pl b/contrib/perl5/lib/unicode/Number.pl
deleted file mode 100644
index 1f5c2c8..0000000
--- a/contrib/perl5/lib/unicode/Number.pl
+++ /dev/null
@@ -1,432 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0030 0
-0031 1
-0032 2
-0033 3
-0034 4
-0035 5
-0036 6
-0037 7
-0038 8
-0039 9
-00b2 2
-00b3 3
-00b9 1
-00bc 1/4
-00bd 1/2
-00be 3/4
-0660 0
-0661 1
-0662 2
-0663 3
-0664 4
-0665 5
-0666 6
-0667 7
-0668 8
-0669 9
-06f0 0
-06f1 1
-06f2 2
-06f3 3
-06f4 4
-06f5 5
-06f6 6
-06f7 7
-06f8 8
-06f9 9
-0966 0
-0967 1
-0968 2
-0969 3
-096a 4
-096b 5
-096c 6
-096d 7
-096e 8
-096f 9
-09e6 0
-09e7 1
-09e8 2
-09e9 3
-09ea 4
-09eb 5
-09ec 6
-09ed 7
-09ee 8
-09ef 9
-09f4 1
-09f5 2
-09f6 3
-09f7 4
-09f9 16
-0a66 0
-0a67 1
-0a68 2
-0a69 3
-0a6a 4
-0a6b 5
-0a6c 6
-0a6d 7
-0a6e 8
-0a6f 9
-0ae6 0
-0ae7 1
-0ae8 2
-0ae9 3
-0aea 4
-0aeb 5
-0aec 6
-0aed 7
-0aee 8
-0aef 9
-0b66 0
-0b67 1
-0b68 2
-0b69 3
-0b6a 4
-0b6b 5
-0b6c 6
-0b6d 7
-0b6e 8
-0b6f 9
-0be7 1
-0be8 2
-0be9 3
-0bea 4
-0beb 5
-0bec 6
-0bed 7
-0bee 8
-0bef 9
-0bf0 10
-0bf1 100
-0bf2 1000
-0c66 0
-0c67 1
-0c68 2
-0c69 3
-0c6a 4
-0c6b 5
-0c6c 6
-0c6d 7
-0c6e 8
-0c6f 9
-0ce6 0
-0ce7 1
-0ce8 2
-0ce9 3
-0cea 4
-0ceb 5
-0cec 6
-0ced 7
-0cee 8
-0cef 9
-0d66 0
-0d67 1
-0d68 2
-0d69 3
-0d6a 4
-0d6b 5
-0d6c 6
-0d6d 7
-0d6e 8
-0d6f 9
-0e50 0
-0e51 1
-0e52 2
-0e53 3
-0e54 4
-0e55 5
-0e56 6
-0e57 7
-0e58 8
-0e59 9
-0ed0 0
-0ed1 1
-0ed2 2
-0ed3 3
-0ed4 4
-0ed5 5
-0ed6 6
-0ed7 7
-0ed8 8
-0ed9 9
-0f20 0
-0f21 1
-0f22 2
-0f23 3
-0f24 4
-0f25 5
-0f26 6
-0f27 7
-0f28 8
-0f29 9
-0f2a 1/2
-0f2b 3/2
-0f2c 5/2
-0f2d 7/2
-0f2e 9/2
-0f2f 11/2
-0f30 13/2
-0f31 15/2
-0f32 17/2
-0f33 -1/2
-1040 0
-1041 1
-1042 2
-1043 3
-1044 4
-1045 5
-1046 6
-1047 7
-1048 8
-1049 9
-1369 1
-136a 2
-136b 3
-136c 4
-136d 5
-136e 6
-136f 7
-1370 8
-1371 9
-1372 10
-1373 20
-1374 30
-1375 40
-1376 50
-1377 60
-1378 70
-1379 80
-137a 90
-137b 100
-137c 10000
-16ee 17
-16ef 18
-16f0 19
-17e0 0
-17e1 1
-17e2 2
-17e3 3
-17e4 4
-17e5 5
-17e6 6
-17e7 7
-17e8 8
-17e9 9
-1810 0
-1811 1
-1812 2
-1813 3
-1814 4
-1815 5
-1816 6
-1817 7
-1818 8
-1819 9
-2070 0
-2074 4
-2075 5
-2076 6
-2077 7
-2078 8
-2079 9
-2080 0
-2081 1
-2082 2
-2083 3
-2084 4
-2085 5
-2086 6
-2087 7
-2088 8
-2089 9
-2153 1/3
-2154 2/3
-2155 1/5
-2156 2/5
-2157 3/5
-2158 4/5
-2159 1/6
-215a 5/6
-215b 1/8
-215c 3/8
-215d 5/8
-215e 7/8
-215f 2160 1
-2161 2
-2162 3
-2163 4
-2164 5
-2165 6
-2166 7
-2167 8
-2168 9
-2169 10
-216a 11
-216b 12
-216c 50
-216d 100
-216e 500
-216f 1000
-2170 1
-2171 2
-2172 3
-2173 4
-2174 5
-2175 6
-2176 7
-2177 8
-2178 9
-2179 10
-217a 11
-217b 12
-217c 50
-217d 100
-217e 500
-217f 2180 1000
-2181 5000
-2182 10000
-2460 1
-2461 2
-2462 3
-2463 4
-2464 5
-2465 6
-2466 7
-2467 8
-2468 9
-2469 10
-246a 11
-246b 12
-246c 13
-246d 14
-246e 15
-246f 16
-2470 17
-2471 18
-2472 19
-2473 20
-2474 1
-2475 2
-2476 3
-2477 4
-2478 5
-2479 6
-247a 7
-247b 8
-247c 9
-247d 10
-247e 11
-247f 12
-2480 13
-2481 14
-2482 15
-2483 16
-2484 17
-2485 18
-2486 19
-2487 20
-2488 1
-2489 2
-248a 3
-248b 4
-248c 5
-248d 6
-248e 7
-248f 8
-2490 9
-2491 10
-2492 11
-2493 12
-2494 13
-2495 14
-2496 15
-2497 16
-2498 17
-2499 18
-249a 19
-249b 20
-24ea 0
-2776 1
-2777 2
-2778 3
-2779 4
-277a 5
-277b 6
-277c 7
-277d 8
-277e 9
-277f 10
-2780 1
-2781 2
-2782 3
-2783 4
-2784 5
-2785 6
-2786 7
-2787 8
-2788 9
-2789 10
-278a 1
-278b 2
-278c 3
-278d 4
-278e 5
-278f 6
-2790 7
-2791 8
-2792 9
-2793 10
-3007 0
-3021 1
-3022 2
-3023 3
-3024 4
-3025 5
-3026 6
-3027 7
-3028 8
-3029 9
-3038 10
-3039 20
-303a 30
-3192 1
-3193 2
-3194 3
-3195 4
-3220 1
-3221 2
-3222 3
-3223 4
-3224 5
-3225 6
-3226 7
-3227 8
-3228 9
-3229 10
-3280 1
-3281 2
-3282 3
-3283 4
-3284 5
-3285 6
-3286 7
-3287 8
-3288 9
-3289 10
-ff10 0
-ff11 1
-ff12 2
-ff13 3
-ff14 4
-ff15 5
-ff16 6
-ff17 7
-ff18 8
-ff19 9
-END
diff --git a/contrib/perl5/lib/unicode/PropList.txt b/contrib/perl5/lib/unicode/PropList.txt
deleted file mode 100644
index e47f127..0000000
--- a/contrib/perl5/lib/unicode/PropList.txt
+++ /dev/null
@@ -1,3592 +0,0 @@
-Property dump: UnicodeData-3.0.1.txt
-
-*******************************************
-
-Property dump for: 0x10000001 (Zero-width)
-
-070F
-180B..180E (4 chars)
-200B..200F (5 chars)
-202A..202E (5 chars)
-206A..206F (6 chars)
-FEFF
-FFF9..FFFB (3 chars)
-
-*******************************************
-
-Property dump for: 0x10000002 (Space)
-
-0020
-00A0
-1680
-2000..200B (12 chars)
-202F
-3000
-
-*******************************************
-
-Property dump for: 0x10000004 (White space)
-
-0009..000D (5 chars)
-0020
-0085
-00A0
-1680
-2000..200B (12 chars)
-2028..2029 (2 chars)
-202F
-3000
-
-*******************************************
-
-Property dump for: 0x00400000 (Non-break)
-
-00A0
-0F0C
-2007
-2011
-202F
-FEFF
-
-*******************************************
-
-Property dump for: 0x10000008 (ISO Control)
-
-0000..001F (32 chars)
-007F..009F (33 chars)
-
-*******************************************
-
-Property dump for: 0x10000090 (Bidi Control)
-
-200E..200F (2 chars)
-202A..202E (5 chars)
-
-*******************************************
-
-Property dump for: 0x100000A0 (Join Control)
-
-200C..200D (2 chars)
-
-*******************************************
-
-Property dump for: 0x100000C0 (Format Control)
-
-070F
-180B..180E (4 chars)
-206A..206F (6 chars)
-FFF9..FFFB (3 chars)
-
-*******************************************
-
-Property dump for: 0x20000400 (Dash)
-
-002D
-00AD
-058A
-1806
-2010..2015 (6 chars)
-207B
-208B
-2212
-301C
-3030
-FE31..FE32 (2 chars)
-FE58
-FE63
-FF0D
-
-*******************************************
-
-Property dump for: 0x20000800 (Hyphen)
-
-002D
-00AD
-058A
-1806
-2010..2011 (2 chars)
-30FB
-FE63
-FF0D
-FF65
-
-*******************************************
-
-Property dump for: 0x20001000 (Punctuation)
-
-0021..0023 (3 chars)
-0025..002A (6 chars)
-002C..002F (4 chars)
-003A..003B (2 chars)
-003F..0040 (2 chars)
-005B..005D (3 chars)
-005F
-007B
-007D
-00A1
-00AB
-00AD
-00B7
-00BB
-00BF
-037E
-0387
-055A..055F (6 chars)
-0589..058A (2 chars)
-05BE
-05C0
-05C3
-05F3..05F4 (2 chars)
-060C
-061B
-061F
-066A..066D (4 chars)
-06D4
-0700..070D (14 chars)
-0964..0965 (2 chars)
-0970
-0DF4
-0E4F
-0E5A..0E5B (2 chars)
-0F04..0F12 (15 chars)
-0F3A..0F3D (4 chars)
-0F85
-104A..104F (6 chars)
-10FB
-1361..1368 (8 chars)
-166D..166E (2 chars)
-169B..169C (2 chars)
-16EB..16ED (3 chars)
-17D4..17DA (7 chars)
-17DC
-1800..180A (11 chars)
-2010..2027 (24 chars)
-2030..2043 (20 chars)
-2045..2046 (2 chars)
-2048..204D (6 chars)
-207D..207E (2 chars)
-208D..208E (2 chars)
-2329..232A (2 chars)
-3001..3003 (3 chars)
-3008..3011 (10 chars)
-3014..301F (12 chars)
-3030
-30FB
-FD3E..FD3F (2 chars)
-FE30..FE44 (21 chars)
-FE49..FE52 (10 chars)
-FE54..FE61 (14 chars)
-FE63
-FE68
-FE6A..FE6B (2 chars)
-FF01..FF03 (3 chars)
-FF05..FF0A (6 chars)
-FF0C..FF0F (4 chars)
-FF1A..FF1B (2 chars)
-FF1F..FF20 (2 chars)
-FF3B..FF3D (3 chars)
-FF3F
-FF5B
-FF5D
-FF61..FF65 (5 chars)
-
-*******************************************
-
-Property dump for: 0x80000003 (Line Separator)
-
-2028
-
-*******************************************
-
-Property dump for: 0x80000004 (Paragraph Separator)
-
-2029
-
-*******************************************
-
-Property dump for: 0x20002000 (Quotation Mark)
-
-0022
-0027
-00AB
-00BB
-2018..201F (8 chars)
-2039..203A (2 chars)
-300C..300F (4 chars)
-301D..301F (3 chars)
-FE41..FE44 (4 chars)
-FF02
-FF07
-FF62..FF63 (2 chars)
-
-*******************************************
-
-Property dump for: 0x20004000 (Terminal Punctuation)
-
-0021
-002C
-002E
-003A..003B (2 chars)
-003F
-037E
-0387
-0589
-060C
-061B
-061F
-06D4
-0700..070A (11 chars)
-070C
-0964..0965 (2 chars)
-0E5A..0E5B (2 chars)
-104A..104B (2 chars)
-1361..1368 (8 chars)
-166D..166E (2 chars)
-16EB..16ED (3 chars)
-17D4..17D6 (3 chars)
-17DA
-1802..1805 (4 chars)
-1808..1809 (2 chars)
-203C..203D (2 chars)
-2048..2049 (2 chars)
-3001..3002 (2 chars)
-FE50..FE52 (3 chars)
-FE54..FE57 (4 chars)
-FF01
-FF0C
-FF0E
-FF1A..FF1B (2 chars)
-FF1F
-FF61
-FF64
-
-*******************************************
-
-Property dump for: 0x20008000 (Currency Symbol)
-
-0024
-00A2..00A5 (4 chars)
-09F2..09F3 (2 chars)
-0E3F
-17DB
-20A0..20AF (16 chars)
-FE69
-FF04
-FFE0..FFE1 (2 chars)
-FFE5..FFE6 (2 chars)
-
-*******************************************
-
-Property dump for: 0x20080000 (Math)
-
-0028..002B (4 chars)
-002D
-002F
-003C..003E (3 chars)
-005B..005E (4 chars)
-007B..007E (4 chars)
-00AC
-00B1
-00D7
-00F7
-2016
-2032..2034 (3 chars)
-2044
-207A..207E (5 chars)
-208A..208E (5 chars)
-20D0..20DC (13 chars)
-20E1
-2190..2194 (5 chars)
-219A..219B (2 chars)
-21A0
-21A3
-21A6
-21AE
-21CE..21CF (2 chars)
-21D2
-21D4
-2200..22F1 (242 chars)
-2308..230B (4 chars)
-2320..2321 (2 chars)
-2329..232A (2 chars)
-25B7
-25C1
-266F
-300A..300B (2 chars)
-301A..301B (2 chars)
-FB29
-FE35..FE38 (4 chars)
-FE59..FE5C (4 chars)
-FE61..FE66 (6 chars)
-FE68
-FF08..FF0B (4 chars)
-FF0D
-FF0F
-FF1C..FF1E (3 chars)
-FF3B..FF3E (4 chars)
-FF5B..FF5E (4 chars)
-FFE2
-FFE9..FFEC (4 chars)
-
-*******************************************
-
-Property dump for: 0x20000100 (Paired Punctuation)
-
-0028..0029 (2 chars)
-005B
-005D
-007B
-007D
-00AB
-00BB
-0F3A..0F3D (4 chars)
-169B..169C (2 chars)
-2018..201F (8 chars)
-2039..203A (2 chars)
-2045..2046 (2 chars)
-207D..207E (2 chars)
-208D..208E (2 chars)
-2329..232A (2 chars)
-3008..3011 (10 chars)
-3014..301B (8 chars)
-301D..301F (3 chars)
-FD3E..FD3F (2 chars)
-FE35..FE44 (16 chars)
-FE59..FE5E (6 chars)
-FF08..FF09 (2 chars)
-FF3B
-FF3D
-FF5B
-FF5D
-FF62..FF63 (2 chars)
-
-*******************************************
-
-Property dump for: 0x20000300 (Left of Pair)
-
-0028
-005B
-007B
-00AB
-0F3A
-0F3C
-169B
-2018
-201A..201C (3 chars)
-201E..201F (2 chars)
-2039
-2045
-207D
-208D
-2329
-3008
-300A
-300C
-300E
-3010
-3014
-3016
-3018
-301A
-301D
-FD3E
-FE35
-FE37
-FE39
-FE3B
-FE3D
-FE3F
-FE41
-FE43
-FE59
-FE5B
-FE5D
-FF08
-FF3B
-FF5B
-FF62
-
-*******************************************
-
-Property dump for: 0x20000004 (Combining)
-
-0300..034E (79 chars)
-0360..0362 (3 chars)
-0483..0486 (4 chars)
-0488..0489 (2 chars)
-0591..05A1 (17 chars)
-05A3..05B9 (23 chars)
-05BB..05BD (3 chars)
-05BF
-05C1..05C2 (2 chars)
-05C4
-064B..0655 (11 chars)
-0670
-06D6..06E4 (15 chars)
-06E7..06E8 (2 chars)
-06EA..06ED (4 chars)
-0711
-0730..074A (27 chars)
-07A6..07B0 (11 chars)
-0901..0903 (3 chars)
-093C
-093E..094D (16 chars)
-0951..0954 (4 chars)
-0962..0963 (2 chars)
-0981..0983 (3 chars)
-09BC
-09BE..09C4 (7 chars)
-09C7..09C8 (2 chars)
-09CB..09CD (3 chars)
-09D7
-09E2..09E3 (2 chars)
-0A02
-0A3C
-0A3E..0A42 (5 chars)
-0A47..0A48 (2 chars)
-0A4B..0A4D (3 chars)
-0A70..0A71 (2 chars)
-0A81..0A83 (3 chars)
-0ABC
-0ABE..0AC5 (8 chars)
-0AC7..0AC9 (3 chars)
-0ACB..0ACD (3 chars)
-0B01..0B03 (3 chars)
-0B3C
-0B3E..0B43 (6 chars)
-0B47..0B48 (2 chars)
-0B4B..0B4D (3 chars)
-0B56..0B57 (2 chars)
-0B82..0B83 (2 chars)
-0BBE..0BC2 (5 chars)
-0BC6..0BC8 (3 chars)
-0BCA..0BCD (4 chars)
-0BD7
-0C01..0C03 (3 chars)
-0C3E..0C44 (7 chars)
-0C46..0C48 (3 chars)
-0C4A..0C4D (4 chars)
-0C55..0C56 (2 chars)
-0C82..0C83 (2 chars)
-0CBE..0CC4 (7 chars)
-0CC6..0CC8 (3 chars)
-0CCA..0CCD (4 chars)
-0CD5..0CD6 (2 chars)
-0D02..0D03 (2 chars)
-0D3E..0D43 (6 chars)
-0D46..0D48 (3 chars)
-0D4A..0D4D (4 chars)
-0D57
-0D82..0D83 (2 chars)
-0DCA
-0DCF..0DD4 (6 chars)
-0DD6
-0DD8..0DDF (8 chars)
-0DF2..0DF3 (2 chars)
-0E31
-0E34..0E3A (7 chars)
-0E47..0E4E (8 chars)
-0EB1
-0EB4..0EB9 (6 chars)
-0EBB..0EBC (2 chars)
-0EC8..0ECD (6 chars)
-0F18..0F19 (2 chars)
-0F35
-0F37
-0F39
-0F3E..0F3F (2 chars)
-0F71..0F84 (20 chars)
-0F86..0F87 (2 chars)
-0F90..0F97 (8 chars)
-0F99..0FBC (36 chars)
-0FC6
-102C..1032 (7 chars)
-1036..1039 (4 chars)
-1056..1059 (4 chars)
-17B4..17D3 (32 chars)
-18A9
-20D0..20E3 (20 chars)
-302A..302F (6 chars)
-3099..309A (2 chars)
-FB1E
-FE20..FE23 (4 chars)
-
-*******************************************
-
-Property dump for: 0x20040000 (Non-spacing)
-
-0300..034E (79 chars)
-0360..0362 (3 chars)
-0483..0486 (4 chars)
-0488..0489 (2 chars)
-0591..05A1 (17 chars)
-05A3..05B9 (23 chars)
-05BB..05BD (3 chars)
-05BF
-05C1..05C2 (2 chars)
-05C4
-064B..0655 (11 chars)
-0670
-06D6..06E4 (15 chars)
-06E7..06E8 (2 chars)
-06EA..06ED (4 chars)
-0711
-0730..074A (27 chars)
-07A6..07B0 (11 chars)
-0901..0902 (2 chars)
-093C
-0941..0948 (8 chars)
-094D
-0951..0954 (4 chars)
-0962..0963 (2 chars)
-0981
-09BC
-09C1..09C4 (4 chars)
-09CD
-09E2..09E3 (2 chars)
-0A02
-0A3C
-0A41..0A42 (2 chars)
-0A47..0A48 (2 chars)
-0A4B..0A4D (3 chars)
-0A70..0A71 (2 chars)
-0A81..0A82 (2 chars)
-0ABC
-0AC1..0AC5 (5 chars)
-0AC7..0AC8 (2 chars)
-0ACD
-0B01
-0B3C
-0B3F
-0B41..0B43 (3 chars)
-0B4D
-0B56
-0B82
-0BC0
-0BCD
-0C3E..0C40 (3 chars)
-0C46..0C48 (3 chars)
-0C4A..0C4D (4 chars)
-0C55..0C56 (2 chars)
-0CBF
-0CC6
-0CCC..0CCD (2 chars)
-0D41..0D43 (3 chars)
-0D4D
-0DCA
-0DD2..0DD4 (3 chars)
-0DD6
-0E31
-0E34..0E3A (7 chars)
-0E47..0E4E (8 chars)
-0EB1
-0EB4..0EB9 (6 chars)
-0EBB..0EBC (2 chars)
-0EC8..0ECD (6 chars)
-0F18..0F19 (2 chars)
-0F35
-0F37
-0F39
-0F71..0F7E (14 chars)
-0F80..0F84 (5 chars)
-0F86..0F87 (2 chars)
-0F90..0F97 (8 chars)
-0F99..0FBC (36 chars)
-0FC6
-102D..1030 (4 chars)
-1032
-1036..1037 (2 chars)
-1039
-1058..1059 (2 chars)
-17B7..17BD (7 chars)
-17C6
-17C9..17D3 (11 chars)
-18A9
-20D0..20E3 (20 chars)
-302A..302F (6 chars)
-3099..309A (2 chars)
-FB1E
-FE20..FE23 (4 chars)
-
-*******************************************
-
-Property dump for: 0x20000008 (Composite)
-
-00C0..00C5 (6 chars)
-00C7..00CF (9 chars)
-00D1..00D6 (6 chars)
-00D9..00DD (5 chars)
-00E0..00E5 (6 chars)
-00E7..00EF (9 chars)
-00F1..00F6 (6 chars)
-00F9..00FD (5 chars)
-00FF..0130 (50 chars)
-0132..0137 (6 chars)
-0139..0149 (17 chars)
-014C..0151 (6 chars)
-0154..017E (43 chars)
-01A0..01A1 (2 chars)
-01AF..01B0 (2 chars)
-01C4..01DC (25 chars)
-01DE..01E3 (6 chars)
-01E6..01F5 (16 chars)
-01F8..0209 (18 chars)
-020C..021B (16 chars)
-021E..021F (2 chars)
-0226..0233 (14 chars)
-0344
-0385..0386 (2 chars)
-0388..038A (3 chars)
-038C
-038E..0390 (3 chars)
-03AA..03B0 (7 chars)
-03CA..03CE (5 chars)
-03D3..03D5 (3 chars)
-0400..0401 (2 chars)
-0403
-0407
-040C..040E (3 chars)
-0419
-0439
-0450..0451 (2 chars)
-0453
-0457
-045C..045E (3 chars)
-0476..0477 (2 chars)
-04BE..04BF (2 chars)
-04C1..04C2 (2 chars)
-04D0..04D3 (4 chars)
-04D6..04D7 (2 chars)
-04DA..04E7 (14 chars)
-04EA..04F5 (12 chars)
-04F8..04F9 (2 chars)
-0587
-0622..0626 (5 chars)
-06C0
-06C2
-06D6..06D7 (2 chars)
-0929
-0931
-0934
-0950
-0958..095F (8 chars)
-09CB..09CC (2 chars)
-09DC..09DD (2 chars)
-09DF
-0A33
-0A36
-0A59..0A5B (3 chars)
-0A5E
-0A74
-0AD0
-0B01
-0B48
-0B4B..0B4C (2 chars)
-0B5C..0B5D (2 chars)
-0B94
-0BCA..0BCC (3 chars)
-0C48
-0CC0
-0CC7..0CC8 (2 chars)
-0CCA..0CCB (2 chars)
-0D4A..0D4C (3 chars)
-0DDA
-0DDC..0DDE (3 chars)
-0E33
-0EB3
-0EDC..0EDD (2 chars)
-0F00
-0F43
-0F4D
-0F52
-0F57
-0F5C
-0F69
-0F73
-0F75..0F79 (5 chars)
-0F81
-0F93
-0F9D
-0FA2
-0FA7
-0FAC
-0FB9
-1026
-1E00..1E9B (156 chars)
-1EA0..1EF9 (90 chars)
-1F00..1F15 (22 chars)
-1F18..1F1D (6 chars)
-1F20..1F45 (38 chars)
-1F48..1F4D (6 chars)
-1F50..1F57 (8 chars)
-1F59
-1F5B
-1F5D
-1F5F..1F7D (31 chars)
-1F80..1FB4 (53 chars)
-1FB6..1FBC (7 chars)
-1FC1..1FC4 (4 chars)
-1FC6..1FD3 (14 chars)
-1FD6..1FDB (6 chars)
-1FDD..1FEE (18 chars)
-1FF2..1FF4 (3 chars)
-1FF6..1FFC (7 chars)
-203C
-2048..2049 (2 chars)
-2161..2163 (3 chars)
-2165..2168 (4 chars)
-216A..216B (2 chars)
-2171..2173 (3 chars)
-2175..2178 (4 chars)
-217A..217B (2 chars)
-2204
-2209
-220C
-2226
-222C..222D (2 chars)
-222F..2230 (2 chars)
-2247
-2249
-2260
-2262
-226D..2271 (5 chars)
-2274..2275 (2 chars)
-2278..2279 (2 chars)
-2280..2281 (2 chars)
-2284..2285 (2 chars)
-2288..2289 (2 chars)
-22AC..22AF (4 chars)
-22E0..22E3 (4 chars)
-22EA..22ED (4 chars)
-2460..24B5 (86 chars)
-24EA
-304C
-304E
-3050
-3052
-3054
-3056
-3058
-305A
-305C
-305E
-3060
-3062
-3065
-3067
-3069
-3070..3071 (2 chars)
-3073..3074 (2 chars)
-3076..3077 (2 chars)
-3079..307A (2 chars)
-307C..307D (2 chars)
-3094
-309E
-30AC
-30AE
-30B0
-30B2
-30B4
-30B6
-30B8
-30BA
-30BC
-30BE
-30C0
-30C2
-30C5
-30C7
-30C9
-30D0..30D1 (2 chars)
-30D3..30D4 (2 chars)
-30D6..30D7 (2 chars)
-30D9..30DA (2 chars)
-30DC..30DD (2 chars)
-30F4
-30FE
-3200..321C (29 chars)
-3220..3243 (36 chars)
-32C0..32CB (12 chars)
-3300..3376 (119 chars)
-337B..33DD (99 chars)
-33E0..33FE (31 chars)
-AC00..D7A3 (11172 chars)
-FB00..FB06 (7 chars)
-FB13..FB17 (5 chars)
-FB1D
-FB1F
-FB2A..FB36 (13 chars)
-FB38..FB3C (5 chars)
-FB3E
-FB40..FB41 (2 chars)
-FB43..FB44 (2 chars)
-FB46..FB4F (10 chars)
-FBEA..FBFB (18 chars)
-FC00..FD3D (318 chars)
-FD50..FD8F (64 chars)
-FD92..FDC7 (54 chars)
-FDF0..FDFB (12 chars)
-FE70..FE72 (3 chars)
-FE74
-FE76..FE7F (10 chars)
-
-*******************************************
-
-Property dump for: 0x20000080 (Hex Digit)
-
-0030..0039 (10 chars)
-0041..0046 (6 chars)
-0061..0066 (6 chars)
-FF10..FF19 (10 chars)
-FF21..FF26 (6 chars)
-FF41..FF46 (6 chars)
-
-*******************************************
-
-Property dump for: 0x20000030 (Decimal Digit)
-
-0030..0039 (10 chars)
-0660..0669 (10 chars)
-06F0..06F9 (10 chars)
-0966..096F (10 chars)
-09E6..09EF (10 chars)
-0A66..0A6F (10 chars)
-0AE6..0AEF (10 chars)
-0B66..0B6F (10 chars)
-0BE7..0BEF (9 chars)
-0C66..0C6F (10 chars)
-0CE6..0CEF (10 chars)
-0D66..0D6F (10 chars)
-0E50..0E59 (10 chars)
-0ED0..0ED9 (10 chars)
-0F20..0F29 (10 chars)
-1040..1049 (10 chars)
-1369..1371 (9 chars)
-17E0..17E9 (10 chars)
-1810..1819 (10 chars)
-FF10..FF19 (10 chars)
-
-*******************************************
-
-Property dump for: 0x20000010 (Numeric)
-
-0030..0039 (10 chars)
-00B2..00B3 (2 chars)
-00B9
-00BC..00BE (3 chars)
-0660..0669 (10 chars)
-06F0..06F9 (10 chars)
-0966..096F (10 chars)
-09E6..09EF (10 chars)
-09F4..09F9 (6 chars)
-0A66..0A6F (10 chars)
-0AE6..0AEF (10 chars)
-0B66..0B6F (10 chars)
-0BE7..0BF2 (12 chars)
-0C66..0C6F (10 chars)
-0CE6..0CEF (10 chars)
-0D66..0D6F (10 chars)
-0E50..0E59 (10 chars)
-0ED0..0ED9 (10 chars)
-0F20..0F33 (20 chars)
-1040..1049 (10 chars)
-1369..137C (20 chars)
-16EE..16F0 (3 chars)
-17E0..17E9 (10 chars)
-1810..1819 (10 chars)
-2070
-2074..2079 (6 chars)
-2080..2089 (10 chars)
-2153..2183 (49 chars)
-2460..249B (60 chars)
-24EA
-2776..2793 (30 chars)
-3007
-3021..3029 (9 chars)
-3038..303A (3 chars)
-3192..3195 (4 chars)
-3220..3229 (10 chars)
-3280..3289 (10 chars)
-FF10..FF19 (10 chars)
-
-*******************************************
-
-Property dump for: 0x20000001 (Alphabetic)
-
-0041..005A (26 chars)
-0061..007A (26 chars)
-00AA
-00B5
-00BA
-00C0..00D6 (23 chars)
-00D8..00F6 (31 chars)
-00F8..021F (296 chars)
-0222..0233 (18 chars)
-0250..02AD (94 chars)
-02B0..02B8 (9 chars)
-02BB..02C1 (7 chars)
-02E0..02E4 (5 chars)
-02EE
-0345
-037A
-0386
-0388..038A (3 chars)
-038C
-038E..03A1 (20 chars)
-03A3..03CE (44 chars)
-03D0..03D7 (8 chars)
-03DA..03F3 (26 chars)
-0400..0481 (130 chars)
-048C..04C4 (57 chars)
-04C7..04C8 (2 chars)
-04CB..04CC (2 chars)
-04D0..04F5 (38 chars)
-04F8..04F9 (2 chars)
-0531..0556 (38 chars)
-0559
-0561..0587 (39 chars)
-05D0..05EA (27 chars)
-05F0..05F2 (3 chars)
-0621..063A (26 chars)
-0641..0655 (21 chars)
-0670..06D3 (100 chars)
-06D5..06DC (8 chars)
-06E1..06E8 (8 chars)
-06ED
-06FA..06FC (3 chars)
-0710..072C (29 chars)
-0730..073F (16 chars)
-0780..07B0 (49 chars)
-0901..0903 (3 chars)
-0905..0939 (53 chars)
-093D..094C (16 chars)
-0950
-0958..0963 (12 chars)
-0981..0983 (3 chars)
-0985..098C (8 chars)
-098F..0990 (2 chars)
-0993..09A8 (22 chars)
-09AA..09B0 (7 chars)
-09B2
-09B6..09B9 (4 chars)
-09BE..09C4 (7 chars)
-09C7..09C8 (2 chars)
-09CB..09CC (2 chars)
-09D7
-09DC..09DD (2 chars)
-09DF..09E3 (5 chars)
-09F0..09F1 (2 chars)
-0A02
-0A05..0A0A (6 chars)
-0A0F..0A10 (2 chars)
-0A13..0A28 (22 chars)
-0A2A..0A30 (7 chars)
-0A32..0A33 (2 chars)
-0A35..0A36 (2 chars)
-0A38..0A39 (2 chars)
-0A3E..0A42 (5 chars)
-0A47..0A48 (2 chars)
-0A4B..0A4C (2 chars)
-0A59..0A5C (4 chars)
-0A5E
-0A70..0A74 (5 chars)
-0A81..0A83 (3 chars)
-0A85..0A8B (7 chars)
-0A8D
-0A8F..0A91 (3 chars)
-0A93..0AA8 (22 chars)
-0AAA..0AB0 (7 chars)
-0AB2..0AB3 (2 chars)
-0AB5..0AB9 (5 chars)
-0ABD..0AC5 (9 chars)
-0AC7..0AC9 (3 chars)
-0ACB..0ACC (2 chars)
-0AD0
-0AE0
-0B01..0B03 (3 chars)
-0B05..0B0C (8 chars)
-0B0F..0B10 (2 chars)
-0B13..0B28 (22 chars)
-0B2A..0B30 (7 chars)
-0B32..0B33 (2 chars)
-0B36..0B39 (4 chars)
-0B3D..0B43 (7 chars)
-0B47..0B48 (2 chars)
-0B4B..0B4C (2 chars)
-0B56..0B57 (2 chars)
-0B5C..0B5D (2 chars)
-0B5F..0B61 (3 chars)
-0B82..0B83 (2 chars)
-0B85..0B8A (6 chars)
-0B8E..0B90 (3 chars)
-0B92..0B95 (4 chars)
-0B99..0B9A (2 chars)
-0B9C
-0B9E..0B9F (2 chars)
-0BA3..0BA4 (2 chars)
-0BA8..0BAA (3 chars)
-0BAE..0BB5 (8 chars)
-0BB7..0BB9 (3 chars)
-0BBE..0BC2 (5 chars)
-0BC6..0BC8 (3 chars)
-0BCA..0BCC (3 chars)
-0BD7
-0C01..0C03 (3 chars)
-0C05..0C0C (8 chars)
-0C0E..0C10 (3 chars)
-0C12..0C28 (23 chars)
-0C2A..0C33 (10 chars)
-0C35..0C39 (5 chars)
-0C3E..0C44 (7 chars)
-0C46..0C48 (3 chars)
-0C4A..0C4C (3 chars)
-0C55..0C56 (2 chars)
-0C60..0C61 (2 chars)
-0C82..0C83 (2 chars)
-0C85..0C8C (8 chars)
-0C8E..0C90 (3 chars)
-0C92..0CA8 (23 chars)
-0CAA..0CB3 (10 chars)
-0CB5..0CB9 (5 chars)
-0CBE..0CC4 (7 chars)
-0CC6..0CC8 (3 chars)
-0CCA..0CCC (3 chars)
-0CD5..0CD6 (2 chars)
-0CDE
-0CE0..0CE1 (2 chars)
-0D02..0D03 (2 chars)
-0D05..0D0C (8 chars)
-0D0E..0D10 (3 chars)
-0D12..0D28 (23 chars)
-0D2A..0D39 (16 chars)
-0D3E..0D43 (6 chars)
-0D46..0D48 (3 chars)
-0D4A..0D4C (3 chars)
-0D57
-0D60..0D61 (2 chars)
-0D82..0D83 (2 chars)
-0D85..0D96 (18 chars)
-0D9A..0DB1 (24 chars)
-0DB3..0DBB (9 chars)
-0DBD
-0DC0..0DC6 (7 chars)
-0DCF..0DD4 (6 chars)
-0DD6
-0DD8..0DDF (8 chars)
-0DF2..0DF3 (2 chars)
-0E01..0E3A (58 chars)
-0E40..0E45 (6 chars)
-0E4D
-0E81..0E82 (2 chars)
-0E84
-0E87..0E88 (2 chars)
-0E8A
-0E8D
-0E94..0E97 (4 chars)
-0E99..0E9F (7 chars)
-0EA1..0EA3 (3 chars)
-0EA5
-0EA7
-0EAA..0EAB (2 chars)
-0EAD..0EB9 (13 chars)
-0EBB..0EBD (3 chars)
-0EC0..0EC4 (5 chars)
-0ECD
-0EDC..0EDD (2 chars)
-0F00
-0F40..0F47 (8 chars)
-0F49..0F6A (34 chars)
-0F71..0F81 (17 chars)
-0F88..0F8B (4 chars)
-0F90..0F97 (8 chars)
-0F99..0FBC (36 chars)
-1000..1021 (34 chars)
-1023..1027 (5 chars)
-1029..102A (2 chars)
-102C..1032 (7 chars)
-1036
-1038
-1050..1059 (10 chars)
-10A0..10C5 (38 chars)
-10D0..10F6 (39 chars)
-1100..1159 (90 chars)
-115F..11A2 (68 chars)
-11A8..11F9 (82 chars)
-1200..1206 (7 chars)
-1208..1246 (63 chars)
-1248
-124A..124D (4 chars)
-1250..1256 (7 chars)
-1258
-125A..125D (4 chars)
-1260..1286 (39 chars)
-1288
-128A..128D (4 chars)
-1290..12AE (31 chars)
-12B0
-12B2..12B5 (4 chars)
-12B8..12BE (7 chars)
-12C0
-12C2..12C5 (4 chars)
-12C8..12CE (7 chars)
-12D0..12D6 (7 chars)
-12D8..12EE (23 chars)
-12F0..130E (31 chars)
-1310
-1312..1315 (4 chars)
-1318..131E (7 chars)
-1320..1346 (39 chars)
-1348..135A (19 chars)
-13A0..13F4 (85 chars)
-1401..166C (620 chars)
-166F..1676 (8 chars)
-1681..169A (26 chars)
-16A0..16EA (75 chars)
-1780..17C8 (73 chars)
-1820..1842 (35 chars)
-1844..1877 (52 chars)
-1880..18A9 (42 chars)
-1E00..1E9B (156 chars)
-1EA0..1EF9 (90 chars)
-1F00..1F15 (22 chars)
-1F18..1F1D (6 chars)
-1F20..1F45 (38 chars)
-1F48..1F4D (6 chars)
-1F50..1F57 (8 chars)
-1F59
-1F5B
-1F5D
-1F5F..1F7D (31 chars)
-1F80..1FB4 (53 chars)
-1FB6..1FBC (7 chars)
-1FBE
-1FC2..1FC4 (3 chars)
-1FC6..1FCC (7 chars)
-1FD0..1FD3 (4 chars)
-1FD6..1FDB (6 chars)
-1FE0..1FEC (13 chars)
-1FF2..1FF4 (3 chars)
-1FF6..1FFC (7 chars)
-207F
-2102
-2107
-210A..2113 (10 chars)
-2115
-2119..211D (5 chars)
-2124
-2126
-2128
-212A..212D (4 chars)
-212F..2131 (3 chars)
-2133..2139 (7 chars)
-2160..2183 (36 chars)
-3041..3094 (84 chars)
-30A1..30FA (90 chars)
-3105..312C (40 chars)
-3131..318E (94 chars)
-31A0..31B7 (24 chars)
-A000..A48C (1165 chars)
-AC00..D7A3 (11172 chars)
-FB00..FB06 (7 chars)
-FB13..FB17 (5 chars)
-FB1D
-FB1F..FB28 (10 chars)
-FB2A..FB36 (13 chars)
-FB38..FB3C (5 chars)
-FB3E
-FB40..FB41 (2 chars)
-FB43..FB44 (2 chars)
-FB46..FBB1 (108 chars)
-FBD3..FD3D (363 chars)
-FD50..FD8F (64 chars)
-FD92..FDC7 (54 chars)
-FDF0..FDFB (12 chars)
-FE70..FE72 (3 chars)
-FE74
-FE76..FEFC (135 chars)
-FF21..FF3A (26 chars)
-FF41..FF5A (26 chars)
-FF66..FF6F (10 chars)
-FF71..FF9D (45 chars)
-FFA0..FFBE (31 chars)
-FFC2..FFC7 (6 chars)
-FFCA..FFCF (6 chars)
-FFD2..FFD7 (6 chars)
-FFDA..FFDC (3 chars)
-
-*******************************************
-
-Property dump for: 0x20000002 (Ideographic)
-
-3006..3007 (2 chars)
-3021..3029 (9 chars)
-3038..303A (3 chars)
-3400..4DB5 (6582 chars)
-4E00..9FA5 (20902 chars)
-F900..FA2D (302 chars)
-
-*******************************************
-
-Property dump for: 0x20010000 (Diacritic)
-
-005E
-0060
-00A8
-00AF
-00B4
-00B7..00B8 (2 chars)
-02B0..02EE (63 chars)
-0300..034E (79 chars)
-0360..0362 (3 chars)
-0374..0375 (2 chars)
-037A
-0384..0385 (2 chars)
-0483..0486 (4 chars)
-0559
-0591..05A1 (17 chars)
-05A3..05B9 (23 chars)
-05BB..05BD (3 chars)
-05BF
-05C1..05C2 (2 chars)
-05C4
-06DF..06E0 (2 chars)
-06E5..06E6 (2 chars)
-06EA..06EC (3 chars)
-0740..074A (11 chars)
-093C
-094D
-0951..0954 (4 chars)
-09BC
-09CD
-0A3C
-0A4D
-0ABC
-0ACD
-0B3C
-0B4D
-0BCD
-0C4D
-0CCD
-0D4D
-0DCA
-0E47..0E4C (6 chars)
-0E4E
-0EC8..0ECC (5 chars)
-0F18..0F19 (2 chars)
-0F35
-0F37
-0F39
-0F3E..0F3F (2 chars)
-0F82..0F84 (3 chars)
-0F86..0F87 (2 chars)
-0FC6
-1037
-1039
-17C9..17D3 (11 chars)
-1FBD
-1FBF..1FC1 (3 chars)
-1FCD..1FCF (3 chars)
-1FDD..1FDF (3 chars)
-1FED..1FEF (3 chars)
-1FFD..1FFE (2 chars)
-302A..302F (6 chars)
-3099..309C (4 chars)
-30FC
-FB1E
-FE20..FE23 (4 chars)
-FF3E
-FF40
-FF70
-FF9E..FF9F (2 chars)
-FFE3
-
-*******************************************
-
-Property dump for: 0x20000040 (Extender)
-
-00B7
-02D0..02D1 (2 chars)
-0640
-0E46
-0EC6
-1843
-3005
-3031..3035 (5 chars)
-309D..309E (2 chars)
-30FC..30FE (3 chars)
-FF70
-
-*******************************************
-
-Property dump for: 0x20020000 (Identifier Part)
-
-0030..0039 (10 chars)
-0041..005A (26 chars)
-005F
-0061..007A (26 chars)
-00AA
-00B5
-00BA
-00C0..00D6 (23 chars)
-00D8..00F6 (31 chars)
-00F8..021F (296 chars)
-0222..0233 (18 chars)
-0250..02AD (94 chars)
-02B0..02B8 (9 chars)
-02BB..02C1 (7 chars)
-02D0..02D1 (2 chars)
-02E0..02E4 (5 chars)
-02EE
-0300..034E (79 chars)
-0360..0362 (3 chars)
-037A
-0386
-0388..038A (3 chars)
-038C
-038E..03A1 (20 chars)
-03A3..03CE (44 chars)
-03D0..03D7 (8 chars)
-03DA..03F3 (26 chars)
-0400..0481 (130 chars)
-0483..0486 (4 chars)
-048C..04C4 (57 chars)
-04C7..04C8 (2 chars)
-04CB..04CC (2 chars)
-04D0..04F5 (38 chars)
-04F8..04F9 (2 chars)
-0531..0556 (38 chars)
-0559
-0561..0587 (39 chars)
-0591..05A1 (17 chars)
-05A3..05B9 (23 chars)
-05BB..05BD (3 chars)
-05BF
-05C1..05C2 (2 chars)
-05C4
-05D0..05EA (27 chars)
-05F0..05F2 (3 chars)
-0621..063A (26 chars)
-0640..0655 (22 chars)
-0660..0669 (10 chars)
-0670..06D3 (100 chars)
-06D5..06DC (8 chars)
-06DF..06E8 (10 chars)
-06EA..06ED (4 chars)
-06F0..06FC (13 chars)
-0710..072C (29 chars)
-0730..074A (27 chars)
-0780..07B0 (49 chars)
-0901..0903 (3 chars)
-0905..0939 (53 chars)
-093C..094D (18 chars)
-0950..0954 (5 chars)
-0958..0963 (12 chars)
-0966..096F (10 chars)
-0981..0983 (3 chars)
-0985..098C (8 chars)
-098F..0990 (2 chars)
-0993..09A8 (22 chars)
-09AA..09B0 (7 chars)
-09B2
-09B6..09B9 (4 chars)
-09BC
-09BE..09C4 (7 chars)
-09C7..09C8 (2 chars)
-09CB..09CD (3 chars)
-09D7
-09DC..09DD (2 chars)
-09DF..09E3 (5 chars)
-09E6..09F1 (12 chars)
-0A02
-0A05..0A0A (6 chars)
-0A0F..0A10 (2 chars)
-0A13..0A28 (22 chars)
-0A2A..0A30 (7 chars)
-0A32..0A33 (2 chars)
-0A35..0A36 (2 chars)
-0A38..0A39 (2 chars)
-0A3C
-0A3E..0A42 (5 chars)
-0A47..0A48 (2 chars)
-0A4B..0A4D (3 chars)
-0A59..0A5C (4 chars)
-0A5E
-0A66..0A74 (15 chars)
-0A81..0A83 (3 chars)
-0A85..0A8B (7 chars)
-0A8D
-0A8F..0A91 (3 chars)
-0A93..0AA8 (22 chars)
-0AAA..0AB0 (7 chars)
-0AB2..0AB3 (2 chars)
-0AB5..0AB9 (5 chars)
-0ABC..0AC5 (10 chars)
-0AC7..0AC9 (3 chars)
-0ACB..0ACD (3 chars)
-0AD0
-0AE0
-0AE6..0AEF (10 chars)
-0B01..0B03 (3 chars)
-0B05..0B0C (8 chars)
-0B0F..0B10 (2 chars)
-0B13..0B28 (22 chars)
-0B2A..0B30 (7 chars)
-0B32..0B33 (2 chars)
-0B36..0B39 (4 chars)
-0B3C..0B43 (8 chars)
-0B47..0B48 (2 chars)
-0B4B..0B4D (3 chars)
-0B56..0B57 (2 chars)
-0B5C..0B5D (2 chars)
-0B5F..0B61 (3 chars)
-0B66..0B6F (10 chars)
-0B82..0B83 (2 chars)
-0B85..0B8A (6 chars)
-0B8E..0B90 (3 chars)
-0B92..0B95 (4 chars)
-0B99..0B9A (2 chars)
-0B9C
-0B9E..0B9F (2 chars)
-0BA3..0BA4 (2 chars)
-0BA8..0BAA (3 chars)
-0BAE..0BB5 (8 chars)
-0BB7..0BB9 (3 chars)
-0BBE..0BC2 (5 chars)
-0BC6..0BC8 (3 chars)
-0BCA..0BCD (4 chars)
-0BD7
-0BE7..0BEF (9 chars)
-0C01..0C03 (3 chars)
-0C05..0C0C (8 chars)
-0C0E..0C10 (3 chars)
-0C12..0C28 (23 chars)
-0C2A..0C33 (10 chars)
-0C35..0C39 (5 chars)
-0C3E..0C44 (7 chars)
-0C46..0C48 (3 chars)
-0C4A..0C4D (4 chars)
-0C55..0C56 (2 chars)
-0C60..0C61 (2 chars)
-0C66..0C6F (10 chars)
-0C82..0C83 (2 chars)
-0C85..0C8C (8 chars)
-0C8E..0C90 (3 chars)
-0C92..0CA8 (23 chars)
-0CAA..0CB3 (10 chars)
-0CB5..0CB9 (5 chars)
-0CBE..0CC4 (7 chars)
-0CC6..0CC8 (3 chars)
-0CCA..0CCD (4 chars)
-0CD5..0CD6 (2 chars)
-0CDE
-0CE0..0CE1 (2 chars)
-0CE6..0CEF (10 chars)
-0D02..0D03 (2 chars)
-0D05..0D0C (8 chars)
-0D0E..0D10 (3 chars)
-0D12..0D28 (23 chars)
-0D2A..0D39 (16 chars)
-0D3E..0D43 (6 chars)
-0D46..0D48 (3 chars)
-0D4A..0D4D (4 chars)
-0D57
-0D60..0D61 (2 chars)
-0D66..0D6F (10 chars)
-0D82..0D83 (2 chars)
-0D85..0D96 (18 chars)
-0D9A..0DB1 (24 chars)
-0DB3..0DBB (9 chars)
-0DBD
-0DC0..0DC6 (7 chars)
-0DCA
-0DCF..0DD4 (6 chars)
-0DD6
-0DD8..0DDF (8 chars)
-0DF2..0DF3 (2 chars)
-0E01..0E3A (58 chars)
-0E40..0E4E (15 chars)
-0E50..0E59 (10 chars)
-0E81..0E82 (2 chars)
-0E84
-0E87..0E88 (2 chars)
-0E8A
-0E8D
-0E94..0E97 (4 chars)
-0E99..0E9F (7 chars)
-0EA1..0EA3 (3 chars)
-0EA5
-0EA7
-0EAA..0EAB (2 chars)
-0EAD..0EB9 (13 chars)
-0EBB..0EBD (3 chars)
-0EC0..0EC4 (5 chars)
-0EC6
-0EC8..0ECD (6 chars)
-0ED0..0ED9 (10 chars)
-0EDC..0EDD (2 chars)
-0F00
-0F18..0F19 (2 chars)
-0F20..0F29 (10 chars)
-0F35
-0F37
-0F39
-0F3E..0F47 (10 chars)
-0F49..0F6A (34 chars)
-0F71..0F84 (20 chars)
-0F86..0F8B (6 chars)
-0F90..0F97 (8 chars)
-0F99..0FBC (36 chars)
-0FC6
-1000..1021 (34 chars)
-1023..1027 (5 chars)
-1029..102A (2 chars)
-102C..1032 (7 chars)
-1036..1039 (4 chars)
-1040..1049 (10 chars)
-1050..1059 (10 chars)
-10A0..10C5 (38 chars)
-10D0..10F6 (39 chars)
-1100..1159 (90 chars)
-115F..11A2 (68 chars)
-11A8..11F9 (82 chars)
-1200..1206 (7 chars)
-1208..1246 (63 chars)
-1248
-124A..124D (4 chars)
-1250..1256 (7 chars)
-1258
-125A..125D (4 chars)
-1260..1286 (39 chars)
-1288
-128A..128D (4 chars)
-1290..12AE (31 chars)
-12B0
-12B2..12B5 (4 chars)
-12B8..12BE (7 chars)
-12C0
-12C2..12C5 (4 chars)
-12C8..12CE (7 chars)
-12D0..12D6 (7 chars)
-12D8..12EE (23 chars)
-12F0..130E (31 chars)
-1310
-1312..1315 (4 chars)
-1318..131E (7 chars)
-1320..1346 (39 chars)
-1348..135A (19 chars)
-1369..1371 (9 chars)
-13A0..13F4 (85 chars)
-1401..166C (620 chars)
-166F..1676 (8 chars)
-1681..169A (26 chars)
-16A0..16EA (75 chars)
-1780..17D3 (84 chars)
-17E0..17E9 (10 chars)
-1810..1819 (10 chars)
-1820..1877 (88 chars)
-1880..18A9 (42 chars)
-1E00..1E9B (156 chars)
-1EA0..1EF9 (90 chars)
-1F00..1F15 (22 chars)
-1F18..1F1D (6 chars)
-1F20..1F45 (38 chars)
-1F48..1F4D (6 chars)
-1F50..1F57 (8 chars)
-1F59
-1F5B
-1F5D
-1F5F..1F7D (31 chars)
-1F80..1FB4 (53 chars)
-1FB6..1FBC (7 chars)
-1FBE
-1FC2..1FC4 (3 chars)
-1FC6..1FCC (7 chars)
-1FD0..1FD3 (4 chars)
-1FD6..1FDB (6 chars)
-1FE0..1FEC (13 chars)
-1FF2..1FF4 (3 chars)
-1FF6..1FFC (7 chars)
-203F..2040 (2 chars)
-207F
-20D0..20DC (13 chars)
-20E1
-2102
-2107
-210A..2113 (10 chars)
-2115
-2119..211D (5 chars)
-2124
-2126
-2128
-212A..212D (4 chars)
-212F..2131 (3 chars)
-2133..2139 (7 chars)
-2160..2183 (36 chars)
-3005..3007 (3 chars)
-3021..302F (15 chars)
-3031..3035 (5 chars)
-3038..303A (3 chars)
-3041..3094 (84 chars)
-3099..309A (2 chars)
-309D..309E (2 chars)
-30A1..30FE (94 chars)
-3105..312C (40 chars)
-3131..318E (94 chars)
-31A0..31B7 (24 chars)
-3400..4DB5 (6582 chars)
-4E00..9FA5 (20902 chars)
-A000..A48C (1165 chars)
-AC00..D7A3 (11172 chars)
-F900..FA2D (302 chars)
-FB00..FB06 (7 chars)
-FB13..FB17 (5 chars)
-FB1D..FB28 (12 chars)
-FB2A..FB36 (13 chars)
-FB38..FB3C (5 chars)
-FB3E
-FB40..FB41 (2 chars)
-FB43..FB44 (2 chars)
-FB46..FBB1 (108 chars)
-FBD3..FD3D (363 chars)
-FD50..FD8F (64 chars)
-FD92..FDC7 (54 chars)
-FDF0..FDFB (12 chars)
-FE20..FE23 (4 chars)
-FE33..FE34 (2 chars)
-FE4D..FE4F (3 chars)
-FE70..FE72 (3 chars)
-FE74
-FE76..FEFC (135 chars)
-FF10..FF19 (10 chars)
-FF21..FF3A (26 chars)
-FF3F
-FF41..FF5A (26 chars)
-FF65..FFBE (90 chars)
-FFC2..FFC7 (6 chars)
-FFCA..FFCF (6 chars)
-FFD2..FFD7 (6 chars)
-FFDA..FFDC (3 chars)
-
-*******************************************
-
-Property dump for: 0x10000080 (Ignorable Control)
-
-0001..0008 (8 chars)
-000E..001B (14 chars)
-007F..0084 (6 chars)
-0086..009F (26 chars)
-070F
-180B..180E (4 chars)
-200C..200F (4 chars)
-202A..202E (5 chars)
-206A..206F (6 chars)
-FEFF
-FFF9..FFFB (3 chars)
-
-*******************************************
-
-Property dump for: 0x01000000 (Bidi: Left-to-Right)
-
-0041..005A (26 chars)
-0061..007A (26 chars)
-00AA
-00B5
-00BA
-00C0..00D6 (23 chars)
-00D8..00F6 (31 chars)
-00F8..021F (296 chars)
-0222..0233 (18 chars)
-0250..02AD (94 chars)
-02B0..02B8 (9 chars)
-02BB..02C1 (7 chars)
-02D0..02D1 (2 chars)
-02E0..02E4 (5 chars)
-02EE
-037A
-0386
-0388..038A (3 chars)
-038C
-038E..03A1 (20 chars)
-03A3..03CE (44 chars)
-03D0..03D7 (8 chars)
-03DA..03F3 (26 chars)
-0400..0482 (131 chars)
-048C..04C4 (57 chars)
-04C7..04C8 (2 chars)
-04CB..04CC (2 chars)
-04D0..04F5 (38 chars)
-04F8..04F9 (2 chars)
-0531..0556 (38 chars)
-0559..055F (7 chars)
-0561..0587 (39 chars)
-0589
-0903
-0905..0939 (53 chars)
-093D..0940 (4 chars)
-0949..094C (4 chars)
-0950
-0958..0961 (10 chars)
-0964..0970 (13 chars)
-0982..0983 (2 chars)
-0985..098C (8 chars)
-098F..0990 (2 chars)
-0993..09A8 (22 chars)
-09AA..09B0 (7 chars)
-09B2
-09B6..09B9 (4 chars)
-09BE..09C0 (3 chars)
-09C7..09C8 (2 chars)
-09CB..09CC (2 chars)
-09D7
-09DC..09DD (2 chars)
-09DF..09E1 (3 chars)
-09E6..09F1 (12 chars)
-09F4..09FA (7 chars)
-0A05..0A0A (6 chars)
-0A0F..0A10 (2 chars)
-0A13..0A28 (22 chars)
-0A2A..0A30 (7 chars)
-0A32..0A33 (2 chars)
-0A35..0A36 (2 chars)
-0A38..0A39 (2 chars)
-0A3E..0A40 (3 chars)
-0A59..0A5C (4 chars)
-0A5E
-0A66..0A6F (10 chars)
-0A72..0A74 (3 chars)
-0A83
-0A85..0A8B (7 chars)
-0A8D
-0A8F..0A91 (3 chars)
-0A93..0AA8 (22 chars)
-0AAA..0AB0 (7 chars)
-0AB2..0AB3 (2 chars)
-0AB5..0AB9 (5 chars)
-0ABD..0AC0 (4 chars)
-0AC9
-0ACB..0ACC (2 chars)
-0AD0
-0AE0
-0AE6..0AEF (10 chars)
-0B02..0B03 (2 chars)
-0B05..0B0C (8 chars)
-0B0F..0B10 (2 chars)
-0B13..0B28 (22 chars)
-0B2A..0B30 (7 chars)
-0B32..0B33 (2 chars)
-0B36..0B39 (4 chars)
-0B3D..0B3E (2 chars)
-0B40
-0B47..0B48 (2 chars)
-0B4B..0B4C (2 chars)
-0B57
-0B5C..0B5D (2 chars)
-0B5F..0B61 (3 chars)
-0B66..0B70 (11 chars)
-0B83
-0B85..0B8A (6 chars)
-0B8E..0B90 (3 chars)
-0B92..0B95 (4 chars)
-0B99..0B9A (2 chars)
-0B9C
-0B9E..0B9F (2 chars)
-0BA3..0BA4 (2 chars)
-0BA8..0BAA (3 chars)
-0BAE..0BB5 (8 chars)
-0BB7..0BB9 (3 chars)
-0BBE..0BBF (2 chars)
-0BC1..0BC2 (2 chars)
-0BC6..0BC8 (3 chars)
-0BCA..0BCC (3 chars)
-0BD7
-0BE7..0BF2 (12 chars)
-0C01..0C03 (3 chars)
-0C05..0C0C (8 chars)
-0C0E..0C10 (3 chars)
-0C12..0C28 (23 chars)
-0C2A..0C33 (10 chars)
-0C35..0C39 (5 chars)
-0C41..0C44 (4 chars)
-0C60..0C61 (2 chars)
-0C66..0C6F (10 chars)
-0C82..0C83 (2 chars)
-0C85..0C8C (8 chars)
-0C8E..0C90 (3 chars)
-0C92..0CA8 (23 chars)
-0CAA..0CB3 (10 chars)
-0CB5..0CB9 (5 chars)
-0CBE
-0CC0..0CC4 (5 chars)
-0CC7..0CC8 (2 chars)
-0CCA..0CCB (2 chars)
-0CD5..0CD6 (2 chars)
-0CDE
-0CE0..0CE1 (2 chars)
-0CE6..0CEF (10 chars)
-0D02..0D03 (2 chars)
-0D05..0D0C (8 chars)
-0D0E..0D10 (3 chars)
-0D12..0D28 (23 chars)
-0D2A..0D39 (16 chars)
-0D3E..0D40 (3 chars)
-0D46..0D48 (3 chars)
-0D4A..0D4C (3 chars)
-0D57
-0D60..0D61 (2 chars)
-0D66..0D6F (10 chars)
-0D82..0D83 (2 chars)
-0D85..0D96 (18 chars)
-0D9A..0DB1 (24 chars)
-0DB3..0DBB (9 chars)
-0DBD
-0DC0..0DC6 (7 chars)
-0DCF..0DD1 (3 chars)
-0DD8..0DDF (8 chars)
-0DF2..0DF4 (3 chars)
-0E01..0E30 (48 chars)
-0E32..0E33 (2 chars)
-0E40..0E46 (7 chars)
-0E4F..0E5B (13 chars)
-0E81..0E82 (2 chars)
-0E84
-0E87..0E88 (2 chars)
-0E8A
-0E8D
-0E94..0E97 (4 chars)
-0E99..0E9F (7 chars)
-0EA1..0EA3 (3 chars)
-0EA5
-0EA7
-0EAA..0EAB (2 chars)
-0EAD..0EB0 (4 chars)
-0EB2..0EB3 (2 chars)
-0EBD
-0EC0..0EC4 (5 chars)
-0EC6
-0ED0..0ED9 (10 chars)
-0EDC..0EDD (2 chars)
-0F00..0F17 (24 chars)
-0F1A..0F34 (27 chars)
-0F36
-0F38
-0F3E..0F47 (10 chars)
-0F49..0F6A (34 chars)
-0F7F
-0F85
-0F88..0F8B (4 chars)
-0FBE..0FC5 (8 chars)
-0FC7..0FCC (6 chars)
-0FCF
-1000..1021 (34 chars)
-1023..1027 (5 chars)
-1029..102A (2 chars)
-102C
-1031
-1038
-1040..1057 (24 chars)
-10A0..10C5 (38 chars)
-10D0..10F6 (39 chars)
-10FB
-1100..1159 (90 chars)
-115F..11A2 (68 chars)
-11A8..11F9 (82 chars)
-1200..1206 (7 chars)
-1208..1246 (63 chars)
-1248
-124A..124D (4 chars)
-1250..1256 (7 chars)
-1258
-125A..125D (4 chars)
-1260..1286 (39 chars)
-1288
-128A..128D (4 chars)
-1290..12AE (31 chars)
-12B0
-12B2..12B5 (4 chars)
-12B8..12BE (7 chars)
-12C0
-12C2..12C5 (4 chars)
-12C8..12CE (7 chars)
-12D0..12D6 (7 chars)
-12D8..12EE (23 chars)
-12F0..130E (31 chars)
-1310
-1312..1315 (4 chars)
-1318..131E (7 chars)
-1320..1346 (39 chars)
-1348..135A (19 chars)
-1361..137C (28 chars)
-13A0..13F4 (85 chars)
-1401..1676 (630 chars)
-1681..169A (26 chars)
-16A0..16F0 (81 chars)
-1780..17B6 (55 chars)
-17BE..17C5 (8 chars)
-17C7..17C8 (2 chars)
-17D4..17DA (7 chars)
-17DC
-17E0..17E9 (10 chars)
-1810..1819 (10 chars)
-1820..1877 (88 chars)
-1880..18A8 (41 chars)
-1E00..1E9B (156 chars)
-1EA0..1EF9 (90 chars)
-1F00..1F15 (22 chars)
-1F18..1F1D (6 chars)
-1F20..1F45 (38 chars)
-1F48..1F4D (6 chars)
-1F50..1F57 (8 chars)
-1F59
-1F5B
-1F5D
-1F5F..1F7D (31 chars)
-1F80..1FB4 (53 chars)
-1FB6..1FBC (7 chars)
-1FBE
-1FC2..1FC4 (3 chars)
-1FC6..1FCC (7 chars)
-1FD0..1FD3 (4 chars)
-1FD6..1FDB (6 chars)
-1FE0..1FEC (13 chars)
-1FF2..1FF4 (3 chars)
-1FF6..1FFC (7 chars)
-200E
-207F
-2102
-2107
-210A..2113 (10 chars)
-2115
-2119..211D (5 chars)
-2124
-2126
-2128
-212A..212D (4 chars)
-212F..2131 (3 chars)
-2133..2139 (7 chars)
-2160..2183 (36 chars)
-2336..237A (69 chars)
-2395
-249C..24E9 (78 chars)
-3005..3007 (3 chars)
-3021..3029 (9 chars)
-3031..3035 (5 chars)
-3038..303A (3 chars)
-3041..3094 (84 chars)
-309D..309E (2 chars)
-30A1..30FA (90 chars)
-30FC..30FE (3 chars)
-3105..312C (40 chars)
-3131..318E (94 chars)
-3190..31B7 (40 chars)
-3200..321C (29 chars)
-3220..3243 (36 chars)
-3260..327B (28 chars)
-327F..32B0 (50 chars)
-32C0..32CB (12 chars)
-32D0..32FE (47 chars)
-3300..3376 (119 chars)
-337B..33DD (99 chars)
-33E0..33FE (31 chars)
-3400..4DB5 (6582 chars)
-4E00..9FA5 (20902 chars)
-A000..A48C (1165 chars)
-AC00..D7A3 (11172 chars)
-D800..FA2D (8750 chars)
-FB00..FB06 (7 chars)
-FB13..FB17 (5 chars)
-FF21..FF3A (26 chars)
-FF41..FF5A (26 chars)
-FF66..FFBE (89 chars)
-FFC2..FFC7 (6 chars)
-FFCA..FFCF (6 chars)
-FFD2..FFD7 (6 chars)
-FFDA..FFDC (3 chars)
-F0000..FFFFD (65534 chars)
-100000..10FFFD (65534 chars)
-
-*******************************************
-
-Property dump for: 0x02000000 (Bidi: (Hebrew) Right-to-Left)
-
-05BE
-05C0
-05C3
-05D0..05EA (27 chars)
-05F0..05F4 (5 chars)
-200F
-FB1D
-FB1F..FB28 (10 chars)
-FB2A..FB36 (13 chars)
-FB38..FB3C (5 chars)
-FB3E
-FB40..FB41 (2 chars)
-FB43..FB44 (2 chars)
-FB46..FB4F (10 chars)
-
-*******************************************
-
-Property dump for: 0x0B000000 (Bidi: Arabic Right-to-Left)
-
-061B
-061F
-0621..063A (26 chars)
-0640..064A (11 chars)
-066D
-0671..06D5 (101 chars)
-06E5..06E6 (2 chars)
-06FA..06FE (5 chars)
-0700..070D (14 chars)
-0710
-0712..072C (27 chars)
-0780..07A5 (38 chars)
-FB50..FBB1 (98 chars)
-FBD3..FD3D (363 chars)
-FD50..FD8F (64 chars)
-FD92..FDC7 (54 chars)
-FDF0..FDFB (12 chars)
-FE70..FE72 (3 chars)
-FE74
-FE76..FEFC (135 chars)
-
-*******************************************
-
-Property dump for: 0x03000000 (Bidi: European Digit)
-
-0030..0039 (10 chars)
-00B2..00B3 (2 chars)
-00B9
-06F0..06F9 (10 chars)
-2070
-2074..2079 (6 chars)
-2080..2089 (10 chars)
-2460..249B (60 chars)
-24EA
-FF10..FF19 (10 chars)
-
-*******************************************
-
-Property dump for: 0x04000000 (Bidi: Eur Num Separator)
-
-002F
-FF0F
-
-*******************************************
-
-Property dump for: 0x05000000 (Bidi: Eur Num Terminator)
-
-0023..0025 (3 chars)
-002B
-002D
-00A2..00A5 (4 chars)
-00B0..00B1 (2 chars)
-066A
-09F2..09F3 (2 chars)
-0E3F
-17DB
-2030..2034 (5 chars)
-207A..207B (2 chars)
-208A..208B (2 chars)
-20A0..20AF (16 chars)
-212E
-2212..2213 (2 chars)
-FB29
-FE5F
-FE62..FE63 (2 chars)
-FE69..FE6A (2 chars)
-FF03..FF05 (3 chars)
-FF0B
-FF0D
-FFE0..FFE1 (2 chars)
-FFE5..FFE6 (2 chars)
-
-*******************************************
-
-Property dump for: 0x06000000 (Bidi: Arabic Digit)
-
-0660..0669 (10 chars)
-066B..066C (2 chars)
-
-*******************************************
-
-Property dump for: 0x07000000 (Bidi: Common Separator)
-
-002C
-002E
-003A
-00A0
-060C
-FE50
-FE52
-FE55
-FF0C
-FF0E
-FF1A
-
-*******************************************
-
-Property dump for: 0x08000000 (Bidi: Block Separator)
-
-000A
-000D
-001C..001E (3 chars)
-0085
-2029
-
-*******************************************
-
-Property dump for: 0x09000000 (Bidi: Segment Separator)
-
-0009
-000B
-001F
-
-*******************************************
-
-Property dump for: 0x0A000000 (Bidi: Whitespace)
-
-000C
-0020
-1680
-2000..200A (11 chars)
-2028
-202F
-3000
-
-*******************************************
-
-Property dump for: 0x0C000000 (Bidi: Non-spacing Mark)
-
-0300..034E (79 chars)
-0360..0362 (3 chars)
-0483..0486 (4 chars)
-0488..0489 (2 chars)
-0591..05A1 (17 chars)
-05A3..05B9 (23 chars)
-05BB..05BD (3 chars)
-05BF
-05C1..05C2 (2 chars)
-05C4
-064B..0655 (11 chars)
-0670
-06D6..06E4 (15 chars)
-06E7..06E8 (2 chars)
-06EA..06ED (4 chars)
-0711
-0730..074A (27 chars)
-07A6..07B0 (11 chars)
-0901..0902 (2 chars)
-093C
-0941..0948 (8 chars)
-094D
-0951..0954 (4 chars)
-0962..0963 (2 chars)
-0981
-09BC
-09C1..09C4 (4 chars)
-09CD
-09E2..09E3 (2 chars)
-0A02
-0A3C
-0A41..0A42 (2 chars)
-0A47..0A48 (2 chars)
-0A4B..0A4D (3 chars)
-0A70..0A71 (2 chars)
-0A81..0A82 (2 chars)
-0ABC
-0AC1..0AC5 (5 chars)
-0AC7..0AC8 (2 chars)
-0ACD
-0B01
-0B3C
-0B3F
-0B41..0B43 (3 chars)
-0B4D
-0B56
-0B82
-0BC0
-0BCD
-0C3E..0C40 (3 chars)
-0C46..0C48 (3 chars)
-0C4A..0C4D (4 chars)
-0C55..0C56 (2 chars)
-0CBF
-0CC6
-0CCC..0CCD (2 chars)
-0D41..0D43 (3 chars)
-0D4D
-0DCA
-0DD2..0DD4 (3 chars)
-0DD6
-0E31
-0E34..0E3A (7 chars)
-0E47..0E4E (8 chars)
-0EB1
-0EB4..0EB9 (6 chars)
-0EBB..0EBC (2 chars)
-0EC8..0ECD (6 chars)
-0F18..0F19 (2 chars)
-0F35
-0F37
-0F39
-0F71..0F7E (14 chars)
-0F80..0F84 (5 chars)
-0F86..0F87 (2 chars)
-0F90..0F97 (8 chars)
-0F99..0FBC (36 chars)
-0FC6
-102D..1030 (4 chars)
-1032
-1036..1037 (2 chars)
-1039
-1058..1059 (2 chars)
-17B7..17BD (7 chars)
-17C6
-17C9..17D3 (11 chars)
-18A9
-20D0..20E3 (20 chars)
-302A..302F (6 chars)
-3099..309A (2 chars)
-FB1E
-FE20..FE23 (4 chars)
-
-*******************************************
-
-Property dump for: 0x0D000000 (Bidi: Boundary Neutral)
-
-0000..0008 (9 chars)
-000E..001B (14 chars)
-007F..0084 (6 chars)
-0086..009F (26 chars)
-070F
-180B..180E (4 chars)
-200B..200D (3 chars)
-206A..206F (6 chars)
-FEFF
-FFF9..FFFB (3 chars)
-
-*******************************************
-
-Property dump for: 0x0E000000 (Bidi: PDF)
-
-202C
-
-*******************************************
-
-Property dump for: 0x0F000000 (Bidi: Embedding or Override)
-
-202A..202B (2 chars)
-202D..202E (2 chars)
-
-*******************************************
-
-Property dump for: 0x80000009 (Bidi: Other Neutral)
-
-0021..0022 (2 chars)
-0026..002A (5 chars)
-003B..0040 (6 chars)
-005B..0060 (6 chars)
-007B..007E (4 chars)
-00A1
-00A6..00A9 (4 chars)
-00AB..00AF (5 chars)
-00B4
-00B6..00B8 (3 chars)
-00BB..00BF (5 chars)
-00D7
-00F7
-02B9..02BA (2 chars)
-02C2..02CF (14 chars)
-02D2..02DF (14 chars)
-02E5..02ED (9 chars)
-0374..0375 (2 chars)
-037E
-0384..0385 (2 chars)
-0387
-058A
-06E9
-0F3A..0F3D (4 chars)
-169B..169C (2 chars)
-1800..180A (11 chars)
-1FBD
-1FBF..1FC1 (3 chars)
-1FCD..1FCF (3 chars)
-1FDD..1FDF (3 chars)
-1FED..1FEF (3 chars)
-1FFD..1FFE (2 chars)
-2010..2027 (24 chars)
-2035..2046 (18 chars)
-2048..204D (6 chars)
-207C..207E (3 chars)
-208C..208E (3 chars)
-2100..2101 (2 chars)
-2103..2106 (4 chars)
-2108..2109 (2 chars)
-2114
-2116..2118 (3 chars)
-211E..2123 (6 chars)
-2125
-2127
-2129
-2132
-213A
-2153..215F (13 chars)
-2190..21F3 (100 chars)
-2200..2211 (18 chars)
-2214..22F1 (222 chars)
-2300..2335 (54 chars)
-237B
-237D..2394 (24 chars)
-2396..239A (5 chars)
-2400..2426 (39 chars)
-2440..244A (11 chars)
-2500..2595 (150 chars)
-25A0..25F7 (88 chars)
-2600..2613 (20 chars)
-2619..2671 (89 chars)
-2701..2704 (4 chars)
-2706..2709 (4 chars)
-270C..2727 (28 chars)
-2729..274B (35 chars)
-274D
-274F..2752 (4 chars)
-2756
-2758..275E (7 chars)
-2761..2767 (7 chars)
-2776..2794 (31 chars)
-2798..27AF (24 chars)
-27B1..27BE (14 chars)
-2800..28FF (256 chars)
-2E80..2E99 (26 chars)
-2E9B..2EF3 (89 chars)
-2F00..2FD5 (214 chars)
-2FF0..2FFB (12 chars)
-3001..3004 (4 chars)
-3008..3020 (25 chars)
-3030
-3036..3037 (2 chars)
-303E..303F (2 chars)
-309B..309C (2 chars)
-30FB
-A490..A4A1 (18 chars)
-A4A4..A4B3 (16 chars)
-A4B5..A4C0 (12 chars)
-A4C2..A4C4 (3 chars)
-A4C6
-FD3E..FD3F (2 chars)
-FE30..FE44 (21 chars)
-FE49..FE4F (7 chars)
-FE51
-FE54
-FE56..FE5E (9 chars)
-FE60..FE61 (2 chars)
-FE64..FE66 (3 chars)
-FE68
-FE6B
-FF01..FF02 (2 chars)
-FF06..FF0A (5 chars)
-FF1B..FF20 (6 chars)
-FF3B..FF40 (6 chars)
-FF5B..FF5E (4 chars)
-FF61..FF65 (5 chars)
-FFE2..FFE4 (3 chars)
-FFE8..FFEE (7 chars)
-FFFC..FFFD (2 chars)
-
-*******************************************
-
-Property dump for: 0x80000005 (Private Use)
-
-E000..F8FF (6400 chars)
-F0000..FFFFD (65534 chars)
-100000..10FFFD (65534 chars)
-
-*******************************************
-
-Property dump for: 0x80000000 (Uppercase)
-
-0041..005A (26 chars)
-00C0..00D6 (23 chars)
-00D8..00DE (7 chars)
-0100
-0102
-0104
-0106
-0108
-010A
-010C
-010E
-0110
-0112
-0114
-0116
-0118
-011A
-011C
-011E
-0120
-0122
-0124
-0126
-0128
-012A
-012C
-012E
-0130
-0132
-0134
-0136
-0139
-013B
-013D
-013F
-0141
-0143
-0145
-0147
-014A
-014C
-014E
-0150
-0152
-0154
-0156
-0158
-015A
-015C
-015E
-0160
-0162
-0164
-0166
-0168
-016A
-016C
-016E
-0170
-0172
-0174
-0176
-0178..0179 (2 chars)
-017B
-017D
-0181..0182 (2 chars)
-0184
-0186..0187 (2 chars)
-0189..018B (3 chars)
-018E..0191 (4 chars)
-0193..0194 (2 chars)
-0196..0198 (3 chars)
-019C..019D (2 chars)
-019F..01A0 (2 chars)
-01A2
-01A4
-01A6..01A7 (2 chars)
-01A9
-01AC
-01AE..01AF (2 chars)
-01B1..01B3 (3 chars)
-01B5
-01B7..01B8 (2 chars)
-01BC
-01C4
-01C7
-01CA
-01CD
-01CF
-01D1
-01D3
-01D5
-01D7
-01D9
-01DB
-01DE
-01E0
-01E2
-01E4
-01E6
-01E8
-01EA
-01EC
-01EE
-01F1
-01F4
-01F6..01F8 (3 chars)
-01FA
-01FC
-01FE
-0200
-0202
-0204
-0206
-0208
-020A
-020C
-020E
-0210
-0212
-0214
-0216
-0218
-021A
-021C
-021E
-0222
-0224
-0226
-0228
-022A
-022C
-022E
-0230
-0232
-0386
-0388..038A (3 chars)
-038C
-038E..038F (2 chars)
-0391..03A1 (17 chars)
-03A3..03AB (9 chars)
-03D2..03D4 (3 chars)
-03DA
-03DC
-03DE
-03E0
-03E2
-03E4
-03E6
-03E8
-03EA
-03EC
-03EE
-0400..042F (48 chars)
-0460
-0462
-0464
-0466
-0468
-046A
-046C
-046E
-0470
-0472
-0474
-0476
-0478
-047A
-047C
-047E
-0480
-048C
-048E
-0490
-0492
-0494
-0496
-0498
-049A
-049C
-049E
-04A0
-04A2
-04A4
-04A6
-04A8
-04AA
-04AC
-04AE
-04B0
-04B2
-04B4
-04B6
-04B8
-04BA
-04BC
-04BE
-04C0..04C1 (2 chars)
-04C3
-04C7
-04CB
-04D0
-04D2
-04D4
-04D6
-04D8
-04DA
-04DC
-04DE
-04E0
-04E2
-04E4
-04E6
-04E8
-04EA
-04EC
-04EE
-04F0
-04F2
-04F4
-04F8
-0531..0556 (38 chars)
-10A0..10C5 (38 chars)
-1E00
-1E02
-1E04
-1E06
-1E08
-1E0A
-1E0C
-1E0E
-1E10
-1E12
-1E14
-1E16
-1E18
-1E1A
-1E1C
-1E1E
-1E20
-1E22
-1E24
-1E26
-1E28
-1E2A
-1E2C
-1E2E
-1E30
-1E32
-1E34
-1E36
-1E38
-1E3A
-1E3C
-1E3E
-1E40
-1E42
-1E44
-1E46
-1E48
-1E4A
-1E4C
-1E4E
-1E50
-1E52
-1E54
-1E56
-1E58
-1E5A
-1E5C
-1E5E
-1E60
-1E62
-1E64
-1E66
-1E68
-1E6A
-1E6C
-1E6E
-1E70
-1E72
-1E74
-1E76
-1E78
-1E7A
-1E7C
-1E7E
-1E80
-1E82
-1E84
-1E86
-1E88
-1E8A
-1E8C
-1E8E
-1E90
-1E92
-1E94
-1EA0
-1EA2
-1EA4
-1EA6
-1EA8
-1EAA
-1EAC
-1EAE
-1EB0
-1EB2
-1EB4
-1EB6
-1EB8
-1EBA
-1EBC
-1EBE
-1EC0
-1EC2
-1EC4
-1EC6
-1EC8
-1ECA
-1ECC
-1ECE
-1ED0
-1ED2
-1ED4
-1ED6
-1ED8
-1EDA
-1EDC
-1EDE
-1EE0
-1EE2
-1EE4
-1EE6
-1EE8
-1EEA
-1EEC
-1EEE
-1EF0
-1EF2
-1EF4
-1EF6
-1EF8
-1F08..1F0F (8 chars)
-1F18..1F1D (6 chars)
-1F28..1F2F (8 chars)
-1F38..1F3F (8 chars)
-1F48..1F4D (6 chars)
-1F59
-1F5B
-1F5D
-1F5F
-1F68..1F6F (8 chars)
-1FB8..1FBB (4 chars)
-1FC8..1FCB (4 chars)
-1FD8..1FDB (4 chars)
-1FE8..1FEC (5 chars)
-1FF8..1FFB (4 chars)
-2102
-2107
-210B..210D (3 chars)
-2110..2112 (3 chars)
-2115
-2119..211D (5 chars)
-2124
-2126
-2128
-212A..212D (4 chars)
-2130..2131 (2 chars)
-2133
-2160..216F (16 chars)
-24B6..24CF (26 chars)
-FF21..FF3A (26 chars)
-
-*******************************************
-
-Property dump for: 0x80000001 (Lowercase)
-
-0061..007A (26 chars)
-00AA
-00B5
-00BA
-00DF..00F6 (24 chars)
-00F8..00FF (8 chars)
-0101
-0103
-0105
-0107
-0109
-010B
-010D
-010F
-0111
-0113
-0115
-0117
-0119
-011B
-011D
-011F
-0121
-0123
-0125
-0127
-0129
-012B
-012D
-012F
-0131
-0133
-0135
-0137..0138 (2 chars)
-013A
-013C
-013E
-0140
-0142
-0144
-0146
-0148..0149 (2 chars)
-014B
-014D
-014F
-0151
-0153
-0155
-0157
-0159
-015B
-015D
-015F
-0161
-0163
-0165
-0167
-0169
-016B
-016D
-016F
-0171
-0173
-0175
-0177
-017A
-017C
-017E..0180 (3 chars)
-0183
-0185
-0188
-018C..018D (2 chars)
-0192
-0195
-0199..019B (3 chars)
-019E
-01A1
-01A3
-01A5
-01A8
-01AA..01AB (2 chars)
-01AD
-01B0
-01B4
-01B6
-01B9..01BA (2 chars)
-01BD..01BF (3 chars)
-01C6
-01C9
-01CC
-01CE
-01D0
-01D2
-01D4
-01D6
-01D8
-01DA
-01DC..01DD (2 chars)
-01DF
-01E1
-01E3
-01E5
-01E7
-01E9
-01EB
-01ED
-01EF..01F0 (2 chars)
-01F3
-01F5
-01F9
-01FB
-01FD
-01FF
-0201
-0203
-0205
-0207
-0209
-020B
-020D
-020F
-0211
-0213
-0215
-0217
-0219
-021B
-021D
-021F
-0223
-0225
-0227
-0229
-022B
-022D
-022F
-0231
-0233
-0250..02AD (94 chars)
-02B0..02B8 (9 chars)
-02C0..02C1 (2 chars)
-02E0..02E4 (5 chars)
-0390
-03AC..03CE (35 chars)
-03D0..03D1 (2 chars)
-03D5..03D7 (3 chars)
-03DB
-03DD
-03DF
-03E1
-03E3
-03E5
-03E7
-03E9
-03EB
-03ED
-03EF..03F3 (5 chars)
-0430..045F (48 chars)
-0461
-0463
-0465
-0467
-0469
-046B
-046D
-046F
-0471
-0473
-0475
-0477
-0479
-047B
-047D
-047F
-0481
-048D
-048F
-0491
-0493
-0495
-0497
-0499
-049B
-049D
-049F
-04A1
-04A3
-04A5
-04A7
-04A9
-04AB
-04AD
-04AF
-04B1
-04B3
-04B5
-04B7
-04B9
-04BB
-04BD
-04BF
-04C2
-04C4
-04C8
-04CC
-04D1
-04D3
-04D5
-04D7
-04D9
-04DB
-04DD
-04DF
-04E1
-04E3
-04E5
-04E7
-04E9
-04EB
-04ED
-04EF
-04F1
-04F3
-04F5
-04F9
-0561..0587 (39 chars)
-1E01
-1E03
-1E05
-1E07
-1E09
-1E0B
-1E0D
-1E0F
-1E11
-1E13
-1E15
-1E17
-1E19
-1E1B
-1E1D
-1E1F
-1E21
-1E23
-1E25
-1E27
-1E29
-1E2B
-1E2D
-1E2F
-1E31
-1E33
-1E35
-1E37
-1E39
-1E3B
-1E3D
-1E3F
-1E41
-1E43
-1E45
-1E47
-1E49
-1E4B
-1E4D
-1E4F
-1E51
-1E53
-1E55
-1E57
-1E59
-1E5B
-1E5D
-1E5F
-1E61
-1E63
-1E65
-1E67
-1E69
-1E6B
-1E6D
-1E6F
-1E71
-1E73
-1E75
-1E77
-1E79
-1E7B
-1E7D
-1E7F
-1E81
-1E83
-1E85
-1E87
-1E89
-1E8B
-1E8D
-1E8F
-1E91
-1E93
-1E95..1E9B (7 chars)
-1EA1
-1EA3
-1EA5
-1EA7
-1EA9
-1EAB
-1EAD
-1EAF
-1EB1
-1EB3
-1EB5
-1EB7
-1EB9
-1EBB
-1EBD
-1EBF
-1EC1
-1EC3
-1EC5
-1EC7
-1EC9
-1ECB
-1ECD
-1ECF
-1ED1
-1ED3
-1ED5
-1ED7
-1ED9
-1EDB
-1EDD
-1EDF
-1EE1
-1EE3
-1EE5
-1EE7
-1EE9
-1EEB
-1EED
-1EEF
-1EF1
-1EF3
-1EF5
-1EF7
-1EF9
-1F00..1F07 (8 chars)
-1F10..1F15 (6 chars)
-1F20..1F27 (8 chars)
-1F30..1F37 (8 chars)
-1F40..1F45 (6 chars)
-1F50..1F57 (8 chars)
-1F60..1F67 (8 chars)
-1F70..1F7D (14 chars)
-1F80..1F87 (8 chars)
-1F90..1F97 (8 chars)
-1FA0..1FA7 (8 chars)
-1FB0..1FB4 (5 chars)
-1FB6..1FB7 (2 chars)
-1FBE
-1FC2..1FC4 (3 chars)
-1FC6..1FC7 (2 chars)
-1FD0..1FD3 (4 chars)
-1FD6..1FD7 (2 chars)
-1FE0..1FE7 (8 chars)
-1FF2..1FF4 (3 chars)
-1FF6..1FF7 (2 chars)
-207F
-210A
-210E..210F (2 chars)
-2113
-212F
-2134
-2139
-2170..217F (16 chars)
-24D0..24E9 (26 chars)
-FB00..FB06 (7 chars)
-FB13..FB17 (5 chars)
-FF41..FF5A (26 chars)
-
-*******************************************
-
-Property dump for: 0x80000002 (Titlecase)
-
-01C5
-01C8
-01CB
-01F2
-1F88..1F8F (8 chars)
-1F98..1F9F (8 chars)
-1FA8..1FAF (8 chars)
-1FBC
-1FCC
-1FFC
-
-*******************************************
-
-Property dump for: 0x80000006 (Low Surrogate)
-
-DC00..DFFF (1024 chars)
-
-*******************************************
-
-Property dump for: 0x80000007 (High Surrogate)
-
-D800..DB7F (896 chars)
-
-*******************************************
-
-Property dump for: 0x80000008 (Private Use High Surrogate)
-
-DB80..DBFF (128 chars)
-
-*******************************************
-
-Property dump for: 0x8000000A (Not a Character)
-
-FFFE..FFFF (2 chars)
-1FFFE..1FFFF (2 chars)
-2FFFE..2FFFF (2 chars)
-3FFFE..3FFFF (2 chars)
-4FFFE..4FFFF (2 chars)
-5FFFE..5FFFF (2 chars)
-6FFFE..6FFFF (2 chars)
-7FFFE..7FFFF (2 chars)
-8FFFE..8FFFF (2 chars)
-9FFFE..9FFFF (2 chars)
-AFFFE..AFFFF (2 chars)
-BFFFE..BFFFF (2 chars)
-CFFFE..CFFFF (2 chars)
-DFFFE..DFFFF (2 chars)
-EFFFE..EFFFF (2 chars)
-FFFFE..FFFFF (2 chars)
-10FFFE..10FFFF (2 chars)
-
-*******************************************
-
-Property dump for: 0x00000000 (Unassigned Code Value)
-
-0220..0221 (2 chars)
-0234..024F (28 chars)
-02AE..02AF (2 chars)
-02EF..02FF (17 chars)
-034F..035F (17 chars)
-0363..0373 (17 chars)
-0376..0379 (4 chars)
-037B..037D (3 chars)
-037F..0383 (5 chars)
-038B
-038D
-03A2
-03CF
-03D8..03D9 (2 chars)
-03F4..03FF (12 chars)
-0487
-048A..048B (2 chars)
-04C5..04C6 (2 chars)
-04C9..04CA (2 chars)
-04CD..04CF (3 chars)
-04F6..04F7 (2 chars)
-04FA..0530 (55 chars)
-0557..0558 (2 chars)
-0560
-0588
-058B..0590 (6 chars)
-05A2
-05BA
-05C5..05CF (11 chars)
-05EB..05EF (5 chars)
-05F5..060B (23 chars)
-060D..061A (14 chars)
-061C..061E (3 chars)
-0620
-063B..063F (5 chars)
-0656..065F (10 chars)
-066E..066F (2 chars)
-06EE..06EF (2 chars)
-06FF
-070E
-072D..072F (3 chars)
-074B..077F (53 chars)
-07B1..0900 (336 chars)
-0904
-093A..093B (2 chars)
-094E..094F (2 chars)
-0955..0957 (3 chars)
-0971..0980 (16 chars)
-0984
-098D..098E (2 chars)
-0991..0992 (2 chars)
-09A9
-09B1
-09B3..09B5 (3 chars)
-09BA..09BB (2 chars)
-09BD
-09C5..09C6 (2 chars)
-09C9..09CA (2 chars)
-09CE..09D6 (9 chars)
-09D8..09DB (4 chars)
-09DE
-09E4..09E5 (2 chars)
-09FB..0A01 (7 chars)
-0A03..0A04 (2 chars)
-0A0B..0A0E (4 chars)
-0A11..0A12 (2 chars)
-0A29
-0A31
-0A34
-0A37
-0A3A..0A3B (2 chars)
-0A3D
-0A43..0A46 (4 chars)
-0A49..0A4A (2 chars)
-0A4E..0A58 (11 chars)
-0A5D
-0A5F..0A65 (7 chars)
-0A75..0A80 (12 chars)
-0A84
-0A8C
-0A8E
-0A92
-0AA9
-0AB1
-0AB4
-0ABA..0ABB (2 chars)
-0AC6
-0ACA
-0ACE..0ACF (2 chars)
-0AD1..0ADF (15 chars)
-0AE1..0AE5 (5 chars)
-0AF0..0B00 (17 chars)
-0B04
-0B0D..0B0E (2 chars)
-0B11..0B12 (2 chars)
-0B29
-0B31
-0B34..0B35 (2 chars)
-0B3A..0B3B (2 chars)
-0B44..0B46 (3 chars)
-0B49..0B4A (2 chars)
-0B4E..0B55 (8 chars)
-0B58..0B5B (4 chars)
-0B5E
-0B62..0B65 (4 chars)
-0B71..0B81 (17 chars)
-0B84
-0B8B..0B8D (3 chars)
-0B91
-0B96..0B98 (3 chars)
-0B9B
-0B9D
-0BA0..0BA2 (3 chars)
-0BA5..0BA7 (3 chars)
-0BAB..0BAD (3 chars)
-0BB6
-0BBA..0BBD (4 chars)
-0BC3..0BC5 (3 chars)
-0BC9
-0BCE..0BD6 (9 chars)
-0BD8..0BE6 (15 chars)
-0BF3..0C00 (14 chars)
-0C04
-0C0D
-0C11
-0C29
-0C34
-0C3A..0C3D (4 chars)
-0C45
-0C49
-0C4E..0C54 (7 chars)
-0C57..0C5F (9 chars)
-0C62..0C65 (4 chars)
-0C70..0C81 (18 chars)
-0C84
-0C8D
-0C91
-0CA9
-0CB4
-0CBA..0CBD (4 chars)
-0CC5
-0CC9
-0CCE..0CD4 (7 chars)
-0CD7..0CDD (7 chars)
-0CDF
-0CE2..0CE5 (4 chars)
-0CF0..0D01 (18 chars)
-0D04
-0D0D
-0D11
-0D29
-0D3A..0D3D (4 chars)
-0D44..0D45 (2 chars)
-0D49
-0D4E..0D56 (9 chars)
-0D58..0D5F (8 chars)
-0D62..0D65 (4 chars)
-0D70..0D81 (18 chars)
-0D84
-0D97..0D99 (3 chars)
-0DB2
-0DBC
-0DBE..0DBF (2 chars)
-0DC7..0DC9 (3 chars)
-0DCB..0DCE (4 chars)
-0DD5
-0DD7
-0DE0..0DF1 (18 chars)
-0DF5..0E00 (12 chars)
-0E3B..0E3E (4 chars)
-0E5C..0E80 (37 chars)
-0E83
-0E85..0E86 (2 chars)
-0E89
-0E8B..0E8C (2 chars)
-0E8E..0E93 (6 chars)
-0E98
-0EA0
-0EA4
-0EA6
-0EA8..0EA9 (2 chars)
-0EAC
-0EBA
-0EBE..0EBF (2 chars)
-0EC5
-0EC7
-0ECE..0ECF (2 chars)
-0EDA..0EDB (2 chars)
-0EDE..0EFF (34 chars)
-0F48
-0F6B..0F70 (6 chars)
-0F8C..0F8F (4 chars)
-0F98
-0FBD
-0FCD..0FCE (2 chars)
-0FD0..0FFF (48 chars)
-1022
-1028
-102B
-1033..1035 (3 chars)
-103A..103F (6 chars)
-105A..109F (70 chars)
-10C6..10CF (10 chars)
-10F7..10FA (4 chars)
-10FC..10FF (4 chars)
-115A..115E (5 chars)
-11A3..11A7 (5 chars)
-11FA..11FF (6 chars)
-1207
-1247
-1249
-124E..124F (2 chars)
-1257
-1259
-125E..125F (2 chars)
-1287
-1289
-128E..128F (2 chars)
-12AF
-12B1
-12B6..12B7 (2 chars)
-12BF
-12C1
-12C6..12C7 (2 chars)
-12CF
-12D7
-12EF
-130F
-1311
-1316..1317 (2 chars)
-131F
-1347
-135B..1360 (6 chars)
-137D..139F (35 chars)
-13F5..1400 (12 chars)
-1677..167F (9 chars)
-169D..169F (3 chars)
-16F1..177F (143 chars)
-17DD..17DF (3 chars)
-17EA..17FF (22 chars)
-180F
-181A..181F (6 chars)
-1878..187F (8 chars)
-18AA..1DFF (1366 chars)
-1E9C..1E9F (4 chars)
-1EFA..1EFF (6 chars)
-1F16..1F17 (2 chars)
-1F1E..1F1F (2 chars)
-1F46..1F47 (2 chars)
-1F4E..1F4F (2 chars)
-1F58
-1F5A
-1F5C
-1F5E
-1F7E..1F7F (2 chars)
-1FB5
-1FC5
-1FD4..1FD5 (2 chars)
-1FDC
-1FF0..1FF1 (2 chars)
-1FF5
-1FFF
-2047
-204E..2069 (28 chars)
-2071..2073 (3 chars)
-208F..209F (17 chars)
-20B0..20CF (32 chars)
-20E4..20FF (28 chars)
-213B..2152 (24 chars)
-2184..218F (12 chars)
-21F4..21FF (12 chars)
-22F2..22FF (14 chars)
-237C
-239B..23FF (101 chars)
-2427..243F (25 chars)
-244B..245F (21 chars)
-24EB..24FF (21 chars)
-2596..259F (10 chars)
-25F8..25FF (8 chars)
-2614..2618 (5 chars)
-2672..2700 (143 chars)
-2705
-270A..270B (2 chars)
-2728
-274C
-274E
-2753..2755 (3 chars)
-2757
-275F..2760 (2 chars)
-2768..2775 (14 chars)
-2795..2797 (3 chars)
-27B0
-27BF..27FF (65 chars)
-2900..2E7F (1408 chars)
-2E9A
-2EF4..2EFF (12 chars)
-2FD6..2FEF (26 chars)
-2FFC..2FFF (4 chars)
-303B..303D (3 chars)
-3040
-3095..3098 (4 chars)
-309F..30A0 (2 chars)
-30FF..3104 (6 chars)
-312D..3130 (4 chars)
-318F
-31B8..31FF (72 chars)
-321D..321F (3 chars)
-3244..325F (28 chars)
-327C..327E (3 chars)
-32B1..32BF (15 chars)
-32CC..32CF (4 chars)
-32FF
-3377..337A (4 chars)
-33DE..33DF (2 chars)
-33FF
-4DB6..4DFF (74 chars)
-9FA6..9FFF (90 chars)
-A48D..A48F (3 chars)
-A4A2..A4A3 (2 chars)
-A4B4
-A4C1
-A4C5
-A4C7..ABFF (1849 chars)
-D7A4..D7FF (92 chars)
-FA2E..FAFF (210 chars)
-FB07..FB12 (12 chars)
-FB18..FB1C (5 chars)
-FB37
-FB3D
-FB3F
-FB42
-FB45
-FBB2..FBD2 (33 chars)
-FD40..FD4F (16 chars)
-FD90..FD91 (2 chars)
-FDC8..FDEF (40 chars)
-FDFC..FE1F (36 chars)
-FE24..FE2F (12 chars)
-FE45..FE48 (4 chars)
-FE53
-FE67
-FE6C..FE6F (4 chars)
-FE73
-FE75
-FEFD..FEFE (2 chars)
-FF00
-FF5F..FF60 (2 chars)
-FFBF..FFC1 (3 chars)
-FFC8..FFC9 (2 chars)
-FFD0..FFD1 (2 chars)
-FFD8..FFD9 (2 chars)
-FFDD..FFDF (3 chars)
-FFE7
-FFEF..FFF8 (10 chars)
-10000..1FFFD (65534 chars)
-20000..2FFFD (65534 chars)
-30000..3FFFD (65534 chars)
-40000..4FFFD (65534 chars)
-50000..5FFFD (65534 chars)
-60000..6FFFD (65534 chars)
-70000..7FFFD (65534 chars)
-80000..8FFFD (65534 chars)
-90000..9FFFD (65534 chars)
-A0000..AFFFD (65534 chars)
-B0000..BFFFD (65534 chars)
-C0000..CFFFD (65534 chars)
-D0000..DFFFD (65534 chars)
-E0000..EFFFD (65534 chars)
-
diff --git a/contrib/perl5/lib/unicode/README.Ethiopic b/contrib/perl5/lib/unicode/README.Ethiopic
deleted file mode 100644
index f8ec21f..0000000
--- a/contrib/perl5/lib/unicode/README.Ethiopic
+++ /dev/null
@@ -1,18 +0,0 @@
-[[The UnicodeData-Latest.txt file has NOT (yet) been updated for the Ethiopic
-additions. You will lose the Ethiopic *.pl files if you run 'make clean' in
-./lib/unicode. --GSAR]]
-
-This package contains extensions to the property files generated from the
-UnicodeData-Latest.txt file. The UnicodeData file comes from the Unicode
-organization's ftp site and has not been included with modifications here.
-Updates for Ethiopic script to the UnicodeData file under the Unicode 3.0
-specification is being discussed at this time with the responsible parties
-within Unicode.
-
-"MakeEthiopicSyllables.PL" will create the series Is/Y0.pl .. Is/Y13.pl
-files to match the sYllabic class of an Ethiopic character. These tests
-may be extended to other syllabaries as well.
-
-The author would appreciate comments and suggestions on this effort:
-
- Daniel Yacob dmulholl@cs.indiana.edu
diff --git a/contrib/perl5/lib/unicode/README.perl b/contrib/perl5/lib/unicode/README.perl
deleted file mode 100644
index 2294bd3..0000000
--- a/contrib/perl5/lib/unicode/README.perl
+++ /dev/null
@@ -1,37 +0,0 @@
-The *.txt files were copied 30 Aug 2000 from
-
- http://www.unicode.org/Public/UNIDATA/
-
-and most of them were renamed to better fit 8.3 filename limitations,
-by which the Perl distribution tries to live.
-
- www.unicode.org Perl distribution
-
- ArabicShaping.txt ArabShap.txt
- BidiMirroring.txt BidiMirr.txt
- Blocks.txt Blocks.txt
- CaseFolding.txt CaseFold.txt
- CompositionExclusions.txt CompExcl.txt
- EastAsianWidth.txt EAWidth.txt (0)
- Index.txt Index.txt
- Jamo.txt Jamo.txt
- LineBreak.txt LineBrk.txt (0)
- NamesList.html NamesList.html (0)
- NamesList.txt Names.txt
- PropList.txt PropList.txt
- ReadMe.txt ReadMe.txt
- SpecialCasing.txt SpecCase.txt
- UnicodeCharacterDatabase.html UCD301.html
- UnicodeData.html UCDFF301.html
- UnicodeData.txt Unicode.301
-
-The two big files, NormalizationTest.txt (1.7MB) and Unihan.txt (15.8MB)
-were not copied for space considerations. The files marked with (0) had
-not been updated since Unicode 3.0.0 (10 Sep 1999)
-
-The *.pl files are generated from these files by the 'mktables.PL' script.
-
-While the files have been renamed the links in the html files haven't.
-
---
-jhi@iki.fi
diff --git a/contrib/perl5/lib/unicode/ReadMe.txt b/contrib/perl5/lib/unicode/ReadMe.txt
deleted file mode 100644
index b8a643c..0000000
--- a/contrib/perl5/lib/unicode/ReadMe.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-August 30, 2000
-
-This directory contains the first update release for Unicode 3.0.
-
-This release consists of corrections and additions to the
-Unicode Character Database for the Unicode Standard,
-Version 3.0.1.
-
-Detailed documentation of the files constituting the
-Unicode Character Database (contributory data files for
-the standard itself) can now be found in
-UnicodeCharacterDatabase.html.
-
diff --git a/contrib/perl5/lib/unicode/SpecCase.txt b/contrib/perl5/lib/unicode/SpecCase.txt
deleted file mode 100644
index 94662d3..0000000
--- a/contrib/perl5/lib/unicode/SpecCase.txt
+++ /dev/null
@@ -1,230 +0,0 @@
-# SpecialCasing-3.txt
-#
-# Special Casing Properties
-#
-# This file is a supplement to the UnicodeData file.
-# It contains additional information about the casing of Unicode characters.
-# (For compatibility, the UnicodeData.txt file only contains case mappings for
-# characters where they are 1-1, and does not have locale-specific mappings.)
-# These are informative character properties.
-#
-# Send comments to mark@unicode.org
-#
-# ================================================================================
-# Format
-# ================================================================================
-# The entries in this file are in the following machine-readable format:
-#
-# <entry> := <case_mapping> <condition_list>? (<s>* "#" <comment>)?
-#
-# <case_mapping> := <source> <sep> <lower> <sep> <title> <sep> <upper> <sep>
-#
-# <source> := <code_point>
-# <sep> := <s>* ";" <s>*
-# <lower> := <code_point_list>
-# <title> := <code_point_list>
-# <upper> := <code_point_list>
-# <code_point_list> := <code_point> (<s>+ <code_point>)*
-# <code_point> := <hex><hex><hex><hex>
-# <hex> := [0-9A-Fa-f]
-# <s> := <space>
-#
-# <condition_list> := <locale>? (<s>+ <context>)* <sep>
-# <locale> := <ISO_639_code> ( "_" <ISO_3166_code> )? ( "_" <variant> )?
-# <ISO_3166_code> := 2-letter country code,
-# as in http://www.unicode.org/unicode/onlinedat/countries.html
-# <ISO_639_code> := 2-letter code,
-# as in http://www.unicode.org/unicode/onlinedat/languages.html
-# <context> := "FINAL" | "NON_FINAL" | "MODERN" | "NON_MODERN" | "AFTER_i"
-#
-# A condition list overrides the normal behavior if all of the listed conditions are true.
-# Case distinctions in the condition list are not significant.
-#
-# FINAL: The letter is not followed by a letter of category L* (e.g. Ll, Lt, Lu, Lm, or Lo).
-# MODERN: The mapping is only used for modern text.
-# AFTER_i: The last base character was "i" 0069
-#
-# Conditions preceded by "NON_" represent the negation of the condition
-#
-# New contexts may be added in the future.
-# Additional whitespace around elements is optional. Blank lines are ignored in parsing.
-# On any line, all text following "#" is a comment, and are ignored in parsing.
-#
-# Parsers of this file must be prepared to deal future additions to this format:
-# * Additional contexts
-# * Additional fields
-# ================================================================================
-
-# ================================================================================
-# Unconditional mappings
-# ================================================================================
-
-# The German es-zed is special--the normal mapping is to SS.
-# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
-
-00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
-
-# Ligatures
-
-FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
-FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
-FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
-FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
-FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
-FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
-FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
-
-0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
-FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
-FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
-FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
-FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
-FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
-
-# No corresponding uppercase precomposed character
-
-0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
-1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
-1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
-1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
-1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
-1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
-1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
-1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
-1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
-1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
-1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-
-# IMPORTANT-when capitalizing iota-subscript (0345)
-# It MUST be in normalized form--moved to the end of any sequence of combining marks.
-# This is because logically it represents a following base character!
-# E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
-# It should never be the first character in a word, so in titlecasing it can be left as is.
-
-# The following cases are already in the UnicodeData file, so are only commented here.
-
-# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
-
-# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
-# have special uppercases.
-# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
-
-1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-
-1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-
-# Some characters with YPOGEGRAMMENI are also have no corresponding titlecases
-
-1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-
-1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-
-# ================================================================================
-# Conditional mappings
-# ================================================================================
-
-# Special case for final form of sigma
-
-03A3; 03C2; 03A3; 03A3; FINAL; # GREEK CAPITAL LETTER SIGMA
-
-# Note: the following cases for non-final are already in the UnicodeData file.
-
-# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
-# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
-# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
-
-# Note: the following cases are not included, since they would case-fold in lowercasing
-
-# 03C3; 03C2; 03A3; 03A3; FINAL; # GREEK SMALL LETTER SIGMA
-# 03C2; 03C3; 03A3; 03A3; NON_FINAL; # GREEK SMALL LETTER FINAL SIGMA
-
-# ================================================================================
-# Locale-sensitive mappings
-# ================================================================================
-
-# Lithuanian
-
-0307; 0307; ; ; lt AFTER_i; # Remove DOT ABOVE after "i" with upper or titlecase
-
-# Turkish
-
-0049; 0131; 0049; 0049; tr; # LATIN CAPITAL LETTER I
-0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
-
-# Note: the following cases are already in the UnicodeData file.
-
-# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I
-# 0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE
diff --git a/contrib/perl5/lib/unicode/To/Digit.pl b/contrib/perl5/lib/unicode/To/Digit.pl
deleted file mode 100644
index 4bace1e..0000000
--- a/contrib/perl5/lib/unicode/To/Digit.pl
+++ /dev/null
@@ -1,30 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0030 0039 0000
-00b2 00b3 0002
-00b9 0001
-0660 0669 0000
-06f0 06f9 0000
-0966 096f 0000
-09e6 09ef 0000
-0a66 0a6f 0000
-0ae6 0aef 0000
-0b66 0b6f 0000
-0be7 0bef 0001
-0c66 0c6f 0000
-0ce6 0cef 0000
-0d66 0d6f 0000
-0e50 0e59 0000
-0ed0 0ed9 0000
-0f20 0f29 0000
-1040 1049 0000
-1369 1371 0001
-17e0 17e9 0000
-1810 1819 0000
-2070 0000
-2074 2079 0004
-2080 2089 0000
-ff10 ff19 0000
-END
diff --git a/contrib/perl5/lib/unicode/To/Lower.pl b/contrib/perl5/lib/unicode/To/Lower.pl
deleted file mode 100644
index 89755b7..0000000
--- a/contrib/perl5/lib/unicode/To/Lower.pl
+++ /dev/null
@@ -1,401 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0041 005a 0061
-00c0 00d6 00e0
-00d8 00de 00f8
-0100 0101
-0102 0103
-0104 0105
-0106 0107
-0108 0109
-010a 010b
-010c 010d
-010e 010f
-0110 0111
-0112 0113
-0114 0115
-0116 0117
-0118 0119
-011a 011b
-011c 011d
-011e 011f
-0120 0121
-0122 0123
-0124 0125
-0126 0127
-0128 0129
-012a 012b
-012c 012d
-012e 012f
-0130 0069
-0132 0133
-0134 0135
-0136 0137
-0139 013a
-013b 013c
-013d 013e
-013f 0140
-0141 0142
-0143 0144
-0145 0146
-0147 0148
-014a 014b
-014c 014d
-014e 014f
-0150 0151
-0152 0153
-0154 0155
-0156 0157
-0158 0159
-015a 015b
-015c 015d
-015e 015f
-0160 0161
-0162 0163
-0164 0165
-0166 0167
-0168 0169
-016a 016b
-016c 016d
-016e 016f
-0170 0171
-0172 0173
-0174 0175
-0176 0177
-0178 00ff
-0179 017a
-017b 017c
-017d 017e
-0181 0253
-0182 0183
-0184 0185
-0186 0254
-0187 0188
-0189 018a 0256
-018b 018c
-018e 01dd
-018f 0259
-0190 025b
-0191 0192
-0193 0260
-0194 0263
-0196 0269
-0197 0268
-0198 0199
-019c 026f
-019d 0272
-019f 0275
-01a0 01a1
-01a2 01a3
-01a4 01a5
-01a6 0280
-01a7 01a8
-01a9 0283
-01ac 01ad
-01ae 0288
-01af 01b0
-01b1 01b2 028a
-01b3 01b4
-01b5 01b6
-01b7 0292
-01b8 01b9
-01bc 01bd
-01c4 01c6
-01c5 01c6
-01c7 01c9
-01c8 01c9
-01ca 01cc
-01cb 01cc
-01cd 01ce
-01cf 01d0
-01d1 01d2
-01d3 01d4
-01d5 01d6
-01d7 01d8
-01d9 01da
-01db 01dc
-01de 01df
-01e0 01e1
-01e2 01e3
-01e4 01e5
-01e6 01e7
-01e8 01e9
-01ea 01eb
-01ec 01ed
-01ee 01ef
-01f1 01f3
-01f2 01f3
-01f4 01f5
-01f6 0195
-01f7 01bf
-01f8 01f9
-01fa 01fb
-01fc 01fd
-01fe 01ff
-0200 0201
-0202 0203
-0204 0205
-0206 0207
-0208 0209
-020a 020b
-020c 020d
-020e 020f
-0210 0211
-0212 0213
-0214 0215
-0216 0217
-0218 0219
-021a 021b
-021c 021d
-021e 021f
-0222 0223
-0224 0225
-0226 0227
-0228 0229
-022a 022b
-022c 022d
-022e 022f
-0230 0231
-0232 0233
-0386 03ac
-0388 038a 03ad
-038c 03cc
-038e 038f 03cd
-0391 03a1 03b1
-03a3 03ab 03c3
-03da 03db
-03dc 03dd
-03de 03df
-03e0 03e1
-03e2 03e3
-03e4 03e5
-03e6 03e7
-03e8 03e9
-03ea 03eb
-03ec 03ed
-03ee 03ef
-0400 040f 0450
-0410 042f 0430
-0460 0461
-0462 0463
-0464 0465
-0466 0467
-0468 0469
-046a 046b
-046c 046d
-046e 046f
-0470 0471
-0472 0473
-0474 0475
-0476 0477
-0478 0479
-047a 047b
-047c 047d
-047e 047f
-0480 0481
-048c 048d
-048e 048f
-0490 0491
-0492 0493
-0494 0495
-0496 0497
-0498 0499
-049a 049b
-049c 049d
-049e 049f
-04a0 04a1
-04a2 04a3
-04a4 04a5
-04a6 04a7
-04a8 04a9
-04aa 04ab
-04ac 04ad
-04ae 04af
-04b0 04b1
-04b2 04b3
-04b4 04b5
-04b6 04b7
-04b8 04b9
-04ba 04bb
-04bc 04bd
-04be 04bf
-04c1 04c2
-04c3 04c4
-04c7 04c8
-04cb 04cc
-04d0 04d1
-04d2 04d3
-04d4 04d5
-04d6 04d7
-04d8 04d9
-04da 04db
-04dc 04dd
-04de 04df
-04e0 04e1
-04e2 04e3
-04e4 04e5
-04e6 04e7
-04e8 04e9
-04ea 04eb
-04ec 04ed
-04ee 04ef
-04f0 04f1
-04f2 04f3
-04f4 04f5
-04f8 04f9
-0531 0556 0561
-1e00 1e01
-1e02 1e03
-1e04 1e05
-1e06 1e07
-1e08 1e09
-1e0a 1e0b
-1e0c 1e0d
-1e0e 1e0f
-1e10 1e11
-1e12 1e13
-1e14 1e15
-1e16 1e17
-1e18 1e19
-1e1a 1e1b
-1e1c 1e1d
-1e1e 1e1f
-1e20 1e21
-1e22 1e23
-1e24 1e25
-1e26 1e27
-1e28 1e29
-1e2a 1e2b
-1e2c 1e2d
-1e2e 1e2f
-1e30 1e31
-1e32 1e33
-1e34 1e35
-1e36 1e37
-1e38 1e39
-1e3a 1e3b
-1e3c 1e3d
-1e3e 1e3f
-1e40 1e41
-1e42 1e43
-1e44 1e45
-1e46 1e47
-1e48 1e49
-1e4a 1e4b
-1e4c 1e4d
-1e4e 1e4f
-1e50 1e51
-1e52 1e53
-1e54 1e55
-1e56 1e57
-1e58 1e59
-1e5a 1e5b
-1e5c 1e5d
-1e5e 1e5f
-1e60 1e61
-1e62 1e63
-1e64 1e65
-1e66 1e67
-1e68 1e69
-1e6a 1e6b
-1e6c 1e6d
-1e6e 1e6f
-1e70 1e71
-1e72 1e73
-1e74 1e75
-1e76 1e77
-1e78 1e79
-1e7a 1e7b
-1e7c 1e7d
-1e7e 1e7f
-1e80 1e81
-1e82 1e83
-1e84 1e85
-1e86 1e87
-1e88 1e89
-1e8a 1e8b
-1e8c 1e8d
-1e8e 1e8f
-1e90 1e91
-1e92 1e93
-1e94 1e95
-1ea0 1ea1
-1ea2 1ea3
-1ea4 1ea5
-1ea6 1ea7
-1ea8 1ea9
-1eaa 1eab
-1eac 1ead
-1eae 1eaf
-1eb0 1eb1
-1eb2 1eb3
-1eb4 1eb5
-1eb6 1eb7
-1eb8 1eb9
-1eba 1ebb
-1ebc 1ebd
-1ebe 1ebf
-1ec0 1ec1
-1ec2 1ec3
-1ec4 1ec5
-1ec6 1ec7
-1ec8 1ec9
-1eca 1ecb
-1ecc 1ecd
-1ece 1ecf
-1ed0 1ed1
-1ed2 1ed3
-1ed4 1ed5
-1ed6 1ed7
-1ed8 1ed9
-1eda 1edb
-1edc 1edd
-1ede 1edf
-1ee0 1ee1
-1ee2 1ee3
-1ee4 1ee5
-1ee6 1ee7
-1ee8 1ee9
-1eea 1eeb
-1eec 1eed
-1eee 1eef
-1ef0 1ef1
-1ef2 1ef3
-1ef4 1ef5
-1ef6 1ef7
-1ef8 1ef9
-1f08 1f0f 1f00
-1f18 1f1d 1f10
-1f28 1f2f 1f20
-1f38 1f3f 1f30
-1f48 1f4d 1f40
-1f59 1f51
-1f5b 1f53
-1f5d 1f55
-1f5f 1f57
-1f68 1f6f 1f60
-1f88 1f8f 1f80
-1f98 1f9f 1f90
-1fa8 1faf 1fa0
-1fb8 1fb9 1fb0
-1fba 1fbb 1f70
-1fbc 1fb3
-1fc8 1fcb 1f72
-1fcc 1fc3
-1fd8 1fd9 1fd0
-1fda 1fdb 1f76
-1fe8 1fe9 1fe0
-1fea 1feb 1f7a
-1fec 1fe5
-1ff8 1ff9 1f78
-1ffa 1ffb 1f7c
-1ffc 1ff3
-2126 03c9
-212a 006b
-212b 00e5
-2160 216f 2170
-24b6 24cf 24d0
-ff21 ff3a ff41
-END
diff --git a/contrib/perl5/lib/unicode/To/Title.pl b/contrib/perl5/lib/unicode/To/Title.pl
deleted file mode 100644
index cadeaf9..0000000
--- a/contrib/perl5/lib/unicode/To/Title.pl
+++ /dev/null
@@ -1,411 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0061 007a 0041
-00b5 039c
-00e0 00f6 00c0
-00f8 00fe 00d8
-00ff 0178
-0101 0100
-0103 0102
-0105 0104
-0107 0106
-0109 0108
-010b 010a
-010d 010c
-010f 010e
-0111 0110
-0113 0112
-0115 0114
-0117 0116
-0119 0118
-011b 011a
-011d 011c
-011f 011e
-0121 0120
-0123 0122
-0125 0124
-0127 0126
-0129 0128
-012b 012a
-012d 012c
-012f 012e
-0131 0049
-0133 0132
-0135 0134
-0137 0136
-013a 0139
-013c 013b
-013e 013d
-0140 013f
-0142 0141
-0144 0143
-0146 0145
-0148 0147
-014b 014a
-014d 014c
-014f 014e
-0151 0150
-0153 0152
-0155 0154
-0157 0156
-0159 0158
-015b 015a
-015d 015c
-015f 015e
-0161 0160
-0163 0162
-0165 0164
-0167 0166
-0169 0168
-016b 016a
-016d 016c
-016f 016e
-0171 0170
-0173 0172
-0175 0174
-0177 0176
-017a 0179
-017c 017b
-017e 017d
-017f 0053
-0183 0182
-0185 0184
-0188 0187
-018c 018b
-0192 0191
-0195 01f6
-0199 0198
-01a1 01a0
-01a3 01a2
-01a5 01a4
-01a8 01a7
-01ad 01ac
-01b0 01af
-01b4 01b3
-01b6 01b5
-01b9 01b8
-01bd 01bc
-01bf 01f7
-01c4 01c5
-01c6 01c5
-01c7 01c8
-01c9 01c8
-01ca 01cb
-01cc 01cb
-01ce 01cd
-01d0 01cf
-01d2 01d1
-01d4 01d3
-01d6 01d5
-01d8 01d7
-01da 01d9
-01dc 01db
-01dd 018e
-01df 01de
-01e1 01e0
-01e3 01e2
-01e5 01e4
-01e7 01e6
-01e9 01e8
-01eb 01ea
-01ed 01ec
-01ef 01ee
-01f1 01f2
-01f3 01f2
-01f5 01f4
-01f9 01f8
-01fb 01fa
-01fd 01fc
-01ff 01fe
-0201 0200
-0203 0202
-0205 0204
-0207 0206
-0209 0208
-020b 020a
-020d 020c
-020f 020e
-0211 0210
-0213 0212
-0215 0214
-0217 0216
-0219 0218
-021b 021a
-021d 021c
-021f 021e
-0223 0222
-0225 0224
-0227 0226
-0229 0228
-022b 022a
-022d 022c
-022f 022e
-0231 0230
-0233 0232
-0253 0181
-0254 0186
-0256 0257 0189
-0259 018f
-025b 0190
-0260 0193
-0263 0194
-0268 0197
-0269 0196
-026f 019c
-0272 019d
-0275 019f
-0280 01a6
-0283 01a9
-0288 01ae
-028a 028b 01b1
-0292 01b7
-0345 0399
-03ac 0386
-03ad 03af 0388
-03b1 03c1 0391
-03c2 03a3
-03c3 03cb 03a3
-03cc 038c
-03cd 03ce 038e
-03d0 0392
-03d1 0398
-03d5 03a6
-03d6 03a0
-03db 03da
-03dd 03dc
-03df 03de
-03e1 03e0
-03e3 03e2
-03e5 03e4
-03e7 03e6
-03e9 03e8
-03eb 03ea
-03ed 03ec
-03ef 03ee
-03f0 039a
-03f1 03a1
-03f2 03a3
-0430 044f 0410
-0450 045f 0400
-0461 0460
-0463 0462
-0465 0464
-0467 0466
-0469 0468
-046b 046a
-046d 046c
-046f 046e
-0471 0470
-0473 0472
-0475 0474
-0477 0476
-0479 0478
-047b 047a
-047d 047c
-047f 047e
-0481 0480
-048d 048c
-048f 048e
-0491 0490
-0493 0492
-0495 0494
-0497 0496
-0499 0498
-049b 049a
-049d 049c
-049f 049e
-04a1 04a0
-04a3 04a2
-04a5 04a4
-04a7 04a6
-04a9 04a8
-04ab 04aa
-04ad 04ac
-04af 04ae
-04b1 04b0
-04b3 04b2
-04b5 04b4
-04b7 04b6
-04b9 04b8
-04bb 04ba
-04bd 04bc
-04bf 04be
-04c2 04c1
-04c4 04c3
-04c8 04c7
-04cc 04cb
-04d1 04d0
-04d3 04d2
-04d5 04d4
-04d7 04d6
-04d9 04d8
-04db 04da
-04dd 04dc
-04df 04de
-04e1 04e0
-04e3 04e2
-04e5 04e4
-04e7 04e6
-04e9 04e8
-04eb 04ea
-04ed 04ec
-04ef 04ee
-04f1 04f0
-04f3 04f2
-04f5 04f4
-04f9 04f8
-0561 0586 0531
-1e01 1e00
-1e03 1e02
-1e05 1e04
-1e07 1e06
-1e09 1e08
-1e0b 1e0a
-1e0d 1e0c
-1e0f 1e0e
-1e11 1e10
-1e13 1e12
-1e15 1e14
-1e17 1e16
-1e19 1e18
-1e1b 1e1a
-1e1d 1e1c
-1e1f 1e1e
-1e21 1e20
-1e23 1e22
-1e25 1e24
-1e27 1e26
-1e29 1e28
-1e2b 1e2a
-1e2d 1e2c
-1e2f 1e2e
-1e31 1e30
-1e33 1e32
-1e35 1e34
-1e37 1e36
-1e39 1e38
-1e3b 1e3a
-1e3d 1e3c
-1e3f 1e3e
-1e41 1e40
-1e43 1e42
-1e45 1e44
-1e47 1e46
-1e49 1e48
-1e4b 1e4a
-1e4d 1e4c
-1e4f 1e4e
-1e51 1e50
-1e53 1e52
-1e55 1e54
-1e57 1e56
-1e59 1e58
-1e5b 1e5a
-1e5d 1e5c
-1e5f 1e5e
-1e61 1e60
-1e63 1e62
-1e65 1e64
-1e67 1e66
-1e69 1e68
-1e6b 1e6a
-1e6d 1e6c
-1e6f 1e6e
-1e71 1e70
-1e73 1e72
-1e75 1e74
-1e77 1e76
-1e79 1e78
-1e7b 1e7a
-1e7d 1e7c
-1e7f 1e7e
-1e81 1e80
-1e83 1e82
-1e85 1e84
-1e87 1e86
-1e89 1e88
-1e8b 1e8a
-1e8d 1e8c
-1e8f 1e8e
-1e91 1e90
-1e93 1e92
-1e95 1e94
-1e9b 1e60
-1ea1 1ea0
-1ea3 1ea2
-1ea5 1ea4
-1ea7 1ea6
-1ea9 1ea8
-1eab 1eaa
-1ead 1eac
-1eaf 1eae
-1eb1 1eb0
-1eb3 1eb2
-1eb5 1eb4
-1eb7 1eb6
-1eb9 1eb8
-1ebb 1eba
-1ebd 1ebc
-1ebf 1ebe
-1ec1 1ec0
-1ec3 1ec2
-1ec5 1ec4
-1ec7 1ec6
-1ec9 1ec8
-1ecb 1eca
-1ecd 1ecc
-1ecf 1ece
-1ed1 1ed0
-1ed3 1ed2
-1ed5 1ed4
-1ed7 1ed6
-1ed9 1ed8
-1edb 1eda
-1edd 1edc
-1edf 1ede
-1ee1 1ee0
-1ee3 1ee2
-1ee5 1ee4
-1ee7 1ee6
-1ee9 1ee8
-1eeb 1eea
-1eed 1eec
-1eef 1eee
-1ef1 1ef0
-1ef3 1ef2
-1ef5 1ef4
-1ef7 1ef6
-1ef9 1ef8
-1f00 1f07 1f08
-1f10 1f15 1f18
-1f20 1f27 1f28
-1f30 1f37 1f38
-1f40 1f45 1f48
-1f51 1f59
-1f53 1f5b
-1f55 1f5d
-1f57 1f5f
-1f60 1f67 1f68
-1f70 1f71 1fba
-1f72 1f75 1fc8
-1f76 1f77 1fda
-1f78 1f79 1ff8
-1f7a 1f7b 1fea
-1f7c 1f7d 1ffa
-1f80 1f87 1f88
-1f90 1f97 1f98
-1fa0 1fa7 1fa8
-1fb0 1fb1 1fb8
-1fb3 1fbc
-1fbe 0399
-1fc3 1fcc
-1fd0 1fd1 1fd8
-1fe0 1fe1 1fe8
-1fe5 1fec
-1ff3 1ffc
-2170 217f 2160
-24d0 24e9 24b6
-ff41 ff5a ff21
-END
diff --git a/contrib/perl5/lib/unicode/To/Upper.pl b/contrib/perl5/lib/unicode/To/Upper.pl
deleted file mode 100644
index d6c03d3..0000000
--- a/contrib/perl5/lib/unicode/To/Upper.pl
+++ /dev/null
@@ -1,411 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by mktables.PL from e.g. Unicode.301.
-# Any changes made here will be lost!
-return <<'END';
-0061 007a 0041
-00b5 039c
-00e0 00f6 00c0
-00f8 00fe 00d8
-00ff 0178
-0101 0100
-0103 0102
-0105 0104
-0107 0106
-0109 0108
-010b 010a
-010d 010c
-010f 010e
-0111 0110
-0113 0112
-0115 0114
-0117 0116
-0119 0118
-011b 011a
-011d 011c
-011f 011e
-0121 0120
-0123 0122
-0125 0124
-0127 0126
-0129 0128
-012b 012a
-012d 012c
-012f 012e
-0131 0049
-0133 0132
-0135 0134
-0137 0136
-013a 0139
-013c 013b
-013e 013d
-0140 013f
-0142 0141
-0144 0143
-0146 0145
-0148 0147
-014b 014a
-014d 014c
-014f 014e
-0151 0150
-0153 0152
-0155 0154
-0157 0156
-0159 0158
-015b 015a
-015d 015c
-015f 015e
-0161 0160
-0163 0162
-0165 0164
-0167 0166
-0169 0168
-016b 016a
-016d 016c
-016f 016e
-0171 0170
-0173 0172
-0175 0174
-0177 0176
-017a 0179
-017c 017b
-017e 017d
-017f 0053
-0183 0182
-0185 0184
-0188 0187
-018c 018b
-0192 0191
-0195 01f6
-0199 0198
-01a1 01a0
-01a3 01a2
-01a5 01a4
-01a8 01a7
-01ad 01ac
-01b0 01af
-01b4 01b3
-01b6 01b5
-01b9 01b8
-01bd 01bc
-01bf 01f7
-01c5 01c4
-01c6 01c4
-01c8 01c7
-01c9 01c7
-01cb 01ca
-01cc 01ca
-01ce 01cd
-01d0 01cf
-01d2 01d1
-01d4 01d3
-01d6 01d5
-01d8 01d7
-01da 01d9
-01dc 01db
-01dd 018e
-01df 01de
-01e1 01e0
-01e3 01e2
-01e5 01e4
-01e7 01e6
-01e9 01e8
-01eb 01ea
-01ed 01ec
-01ef 01ee
-01f2 01f1
-01f3 01f1
-01f5 01f4
-01f9 01f8
-01fb 01fa
-01fd 01fc
-01ff 01fe
-0201 0200
-0203 0202
-0205 0204
-0207 0206
-0209 0208
-020b 020a
-020d 020c
-020f 020e
-0211 0210
-0213 0212
-0215 0214
-0217 0216
-0219 0218
-021b 021a
-021d 021c
-021f 021e
-0223 0222
-0225 0224
-0227 0226
-0229 0228
-022b 022a
-022d 022c
-022f 022e
-0231 0230
-0233 0232
-0253 0181
-0254 0186
-0256 0257 0189
-0259 018f
-025b 0190
-0260 0193
-0263 0194
-0268 0197
-0269 0196
-026f 019c
-0272 019d
-0275 019f
-0280 01a6
-0283 01a9
-0288 01ae
-028a 028b 01b1
-0292 01b7
-0345 0399
-03ac 0386
-03ad 03af 0388
-03b1 03c1 0391
-03c2 03a3
-03c3 03cb 03a3
-03cc 038c
-03cd 03ce 038e
-03d0 0392
-03d1 0398
-03d5 03a6
-03d6 03a0
-03db 03da
-03dd 03dc
-03df 03de
-03e1 03e0
-03e3 03e2
-03e5 03e4
-03e7 03e6
-03e9 03e8
-03eb 03ea
-03ed 03ec
-03ef 03ee
-03f0 039a
-03f1 03a1
-03f2 03a3
-0430 044f 0410
-0450 045f 0400
-0461 0460
-0463 0462
-0465 0464
-0467 0466
-0469 0468
-046b 046a
-046d 046c
-046f 046e
-0471 0470
-0473 0472
-0475 0474
-0477 0476
-0479 0478
-047b 047a
-047d 047c
-047f 047e
-0481 0480
-048d 048c
-048f 048e
-0491 0490
-0493 0492
-0495 0494
-0497 0496
-0499 0498
-049b 049a
-049d 049c
-049f 049e
-04a1 04a0
-04a3 04a2
-04a5 04a4
-04a7 04a6
-04a9 04a8
-04ab 04aa
-04ad 04ac
-04af 04ae
-04b1 04b0
-04b3 04b2
-04b5 04b4
-04b7 04b6
-04b9 04b8
-04bb 04ba
-04bd 04bc
-04bf 04be
-04c2 04c1
-04c4 04c3
-04c8 04c7
-04cc 04cb
-04d1 04d0
-04d3 04d2
-04d5 04d4
-04d7 04d6
-04d9 04d8
-04db 04da
-04dd 04dc
-04df 04de
-04e1 04e0
-04e3 04e2
-04e5 04e4
-04e7 04e6
-04e9 04e8
-04eb 04ea
-04ed 04ec
-04ef 04ee
-04f1 04f0
-04f3 04f2
-04f5 04f4
-04f9 04f8
-0561 0586 0531
-1e01 1e00
-1e03 1e02
-1e05 1e04
-1e07 1e06
-1e09 1e08
-1e0b 1e0a
-1e0d 1e0c
-1e0f 1e0e
-1e11 1e10
-1e13 1e12
-1e15 1e14
-1e17 1e16
-1e19 1e18
-1e1b 1e1a
-1e1d 1e1c
-1e1f 1e1e
-1e21 1e20
-1e23 1e22
-1e25 1e24
-1e27 1e26
-1e29 1e28
-1e2b 1e2a
-1e2d 1e2c
-1e2f 1e2e
-1e31 1e30
-1e33 1e32
-1e35 1e34
-1e37 1e36
-1e39 1e38
-1e3b 1e3a
-1e3d 1e3c
-1e3f 1e3e
-1e41 1e40
-1e43 1e42
-1e45 1e44
-1e47 1e46
-1e49 1e48
-1e4b 1e4a
-1e4d 1e4c
-1e4f 1e4e
-1e51 1e50
-1e53 1e52
-1e55 1e54
-1e57 1e56
-1e59 1e58
-1e5b 1e5a
-1e5d 1e5c
-1e5f 1e5e
-1e61 1e60
-1e63 1e62
-1e65 1e64
-1e67 1e66
-1e69 1e68
-1e6b 1e6a
-1e6d 1e6c
-1e6f 1e6e
-1e71 1e70
-1e73 1e72
-1e75 1e74
-1e77 1e76
-1e79 1e78
-1e7b 1e7a
-1e7d 1e7c
-1e7f 1e7e
-1e81 1e80
-1e83 1e82
-1e85 1e84
-1e87 1e86
-1e89 1e88
-1e8b 1e8a
-1e8d 1e8c
-1e8f 1e8e
-1e91 1e90
-1e93 1e92
-1e95 1e94
-1e9b 1e60
-1ea1 1ea0
-1ea3 1ea2
-1ea5 1ea4
-1ea7 1ea6
-1ea9 1ea8
-1eab 1eaa
-1ead 1eac
-1eaf 1eae
-1eb1 1eb0
-1eb3 1eb2
-1eb5 1eb4
-1eb7 1eb6
-1eb9 1eb8
-1ebb 1eba
-1ebd 1ebc
-1ebf 1ebe
-1ec1 1ec0
-1ec3 1ec2
-1ec5 1ec4
-1ec7 1ec6
-1ec9 1ec8
-1ecb 1eca
-1ecd 1ecc
-1ecf 1ece
-1ed1 1ed0
-1ed3 1ed2
-1ed5 1ed4
-1ed7 1ed6
-1ed9 1ed8
-1edb 1eda
-1edd 1edc
-1edf 1ede
-1ee1 1ee0
-1ee3 1ee2
-1ee5 1ee4
-1ee7 1ee6
-1ee9 1ee8
-1eeb 1eea
-1eed 1eec
-1eef 1eee
-1ef1 1ef0
-1ef3 1ef2
-1ef5 1ef4
-1ef7 1ef6
-1ef9 1ef8
-1f00 1f07 1f08
-1f10 1f15 1f18
-1f20 1f27 1f28
-1f30 1f37 1f38
-1f40 1f45 1f48
-1f51 1f59
-1f53 1f5b
-1f55 1f5d
-1f57 1f5f
-1f60 1f67 1f68
-1f70 1f71 1fba
-1f72 1f75 1fc8
-1f76 1f77 1fda
-1f78 1f79 1ff8
-1f7a 1f7b 1fea
-1f7c 1f7d 1ffa
-1f80 1f87 1f88
-1f90 1f97 1f98
-1fa0 1fa7 1fa8
-1fb0 1fb1 1fb8
-1fb3 1fbc
-1fbe 0399
-1fc3 1fcc
-1fd0 1fd1 1fd8
-1fe0 1fe1 1fe8
-1fe5 1fec
-1ff3 1ffc
-2170 217f 2160
-24d0 24e9 24b6
-ff41 ff5a ff21
-END
diff --git a/contrib/perl5/lib/unicode/UCD301.html b/contrib/perl5/lib/unicode/UCD301.html
deleted file mode 100644
index 284349e..0000000
--- a/contrib/perl5/lib/unicode/UCD301.html
+++ /dev/null
@@ -1,201 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
-
- "http://www.w3.org/TR/REC-html40/loose.dtd">
-
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<meta http-equiv="Content-Language" content="en-us">
-<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<link rel="stylesheet" href="http://www.unicode.org/unicode.css" type="text/css">
-<title>Unicode Character Database</title>
-</head>
-
-<body>
-
-<h1>UNICODE CHARACTER DATABASE<br>
-Version 3.0.1</h1>
-<table border="1" cellspacing="2" cellpadding="0" height="87" width="100%">
- <tr>
- <td valign="TOP" width="144">Revision</td>
- <td valign="TOP">3.0.1</td>
- </tr>
- <tr>
- <td valign="TOP" width="144">Authors</td>
- <td valign="TOP">Mark Davis and Ken Whistler</td>
- </tr>
- <tr>
- <td valign="TOP" width="144">Date</td>
- <td valign="TOP">2000-08-17</td>
- </tr>
- <tr>
- <td valign="TOP" width="144">This Version</td>
- <td valign="TOP"><a
- href="http://www.unicode.org/Public/3.0-Update1/UnicodeCharacterDatabase-3.0.1.html">http://www.unicode.org/Public/3.0-Update1/UnicodeCharacterDatabase-3.0.1.html</a></td>
- </tr>
- <tr>
- <td valign="TOP" width="144">Previous Version</td>
- <td valign="TOP"><a
- href="http://www.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html">http://www.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html</a></td>
- </tr>
- <tr>
- <td valign="TOP" width="144">Latest Version</td>
- <td valign="TOP"><a
- href="http://www.unicode.org/Public/UNIDATA/UnicodeCharacterDatabase.html">http://www.unicode.org/Public/UNIDATA/UnicodeCharacterDatabase.html</a></td>
- </tr>
-</table>
-<p align="center">Copyright © 1995-2000 Unicode, Inc. All Rights reserved.</p>
-<h2>Disclaimer</h2>
-<p>The Unicode Character Database is provided as is by Unicode, Inc. No claims
-are made as to fitness for any particular purpose. No warranties of any kind are
-expressed or implied. The recipient agrees to determine applicability of
-information provided. If this file has been purchased on magnetic or optical
-media from Unicode, Inc., the sole remedy for any claim will be exchange of
-defective media within 90 days of receipt.</p>
-<p>This disclaimer is applicable for all other data files accompanying the
-Unicode Character Database, some of which have been compiled by the Unicode
-Consortium, and some of which have been supplied by other sources.</p>
-<h2>Limitations on Rights to Redistribute This Data</h2>
-<p>Recipient is granted the right to make copies in any form for internal
-distribution and to freely use the information supplied in the creation of
-products supporting the Unicode<sup>TM</sup> Standard. The files in the Unicode
-Character Database can be redistributed to third parties or other organizations
-(whether for profit or not) as long as this notice and the disclaimer notice are
-retained. Information can be extracted from these files and used in
-documentation or programs, as long as there is an accompanying notice indicating
-the source.</p>
-<h2>Introduction</h2>
-<p>The Unicode Character Database is a set of files that define the Unicode
-character properties and internal mappings. For more information about character
-properties and mappings, see <i><a
-href="http://www.unicode.org/unicode/uni2book/u2.html">The Unicode Standard</a></i>.</p>
-<p>The Unicode Character Database has been updated to reflect Version 3.0 of the
-Unicode Standard, with many characters added to those published in Version 2.0.
-A number of corrections have also been made to case mappings or other errors in
-the database noted since the publication of Version 2.0. Normative bidirectional
-properties have also been modified to reflect decisions of the Unicode Technical
-Committee.</p>
-<p>For more information on versions of the Unicode Standard and how to reference
-them, see <a href="http://www.unicode.org/unicode/standard/versions/">http://www.unicode.org/unicode/standard/versions/</a>.</p>
-<h2>Conformance</h2>
-<p>Character properties may be either normative or informative. <i>Normative</i>
-means that implementations that claim conformance to the Unicode Standard (at a
-particular version) and which make use of a particular property or field must
-follow the specifications of the standard for that property or field in order to
-be conformant. The term <i>normative</i> when applied to a property or field of
-the Unicode Character Database, does <i>not</i> mean that the value of that
-field will never change. Corrections and extensions to the standard in the
-future may require minor changes to normative values, even though the Unicode
-Technical Committee strives to minimize such changes. An<i> informative </i>property
-or field is strongly recommended, but a conformant implementation is free to use
-or change such values as it may require while still being conformant to the
-standard. Particular implementations may choose to override the properties and
-mappings that are not normative. In that case, it is up to the implementer to
-establish a protocol to convey that information.</p>
-<h2>Files</h2>
-<p>The following summarizes the files in the Unicode Character Database. &nbsp;For
-more information about these files, see the referenced technical report(s) or
-section of Unicode Standard, Version 3.0.</p>
-<p><b>UnicodeData.txt (Chapter 4, <a
-href="http://www.unicode.org/unicode/reports/tr21/">UTR #21: Case Mappings</a>, <a
-href="http://www.unicode.org/unicode/reports/tr15/">UAX #15 Unicode Normalization
-Forms</a>)</b>
-<ul>
- <li>The main file in the Unicode Character Database.</li>
- <li>For detailed information on the format, see <a href="UnicodeData.html">UnicodeData.html</a>.
- This file also characterizes which properties are normative and which are
- informative.</li>
-</ul>
-<p><b>PropList.txt (Chapter 4)</b>
-<ul>
- <li>Additional informative properties list: <i>Alphabetic, Ideographic,</i>
- and <i>Mathematical</i>, among others.</li>
-</ul>
-<p><b>SpecialCasing.txt (Chapter 4, <a
-href="http://www.unicode.org/unicode/reports/tr21/">UTR #21: Case Mappings</a>)</b>
-<ul>
- <li>List of informative special casing properties, including one-to-many
- mappings such as SHARP S =&gt; &quot;SS&quot;, and locale-specific mappings,
- such as for Turkish <i>dotless i</i>.</li>
-</ul>
-<p><b>Blocks.txt (Chapter 14)</b>
-<ul>
- <li>List of normative block names.</li>
-</ul>
-<p><b>Jamo.txt (Chapter 4)</b>
-<ul>
- <li>List of normative Jamo short names, used in deriving HANGUL SYLLABLE names
- algorithmically.</li>
-</ul>
-<p><b>ArabicShaping.txt (Section 8.2)</b>
-<ul>
- <li>Basic Arabic and Syriac character shaping properties, such as initial,
- medial and final shapes. These properties are normative for minimal shaping
- of Arabic and Syriac.</li>
-</ul>
-<p><b>NamesList.txt (Chapter 14)</b>
-<ul>
- <li>This file duplicates some of the material in the UnicodeData file, and
- adds informative annotations uses in the character charts, as printed in the
- Unicode Standard.</li>
- <li><b>Note: </b>The information in NamesList.txt and Index.txt files matches
- the appropriate version of the book. Changes in the Unicode Character
- Database since then may not be reflected in these files, since they are
- primarily of archival interest.</li>
-</ul>
-<p><b>Index.txt (Chapter 14)</b>
-<ul>
- <li>Informative index to Unicode characters, as printed in the Unicode
- Standard</li>
- <li><b>Note: </b>The information in NamesList.txt and Index.txt files matches
- the appropriate version of the book. Changes in the Unicode Character
- Database since then may not be reflected in these files, since they are
- primarily of archival interest.</li>
-</ul>
-<p><b>CompositionExclusions.txt (<a
-href="http://www.unicode.org/unicode/reports/tr15/">UAX #15 Unicode Normalization
-Forms</a>)</b>
-<ul>
- <li>Normative properties for normalization.</li>
-</ul>
-<p><b>LineBreak.txt (<a href="http://www.unicode.org/unicode/reports/tr14/">UAX
-#14: Line Breaking Properties</a>)</b>
-<ul>
- <li>Normative and informative properties for line breaking. To see which
- properties are informative and which are normative, consult UAX #14.</li>
-</ul>
-<p><b>EastAsianWidth.txt (<a href="http://www.unicode.org/unicode/reports/tr11/">UAX
-#11: East Asian Character Width</a>)</b>
-<ul>
- <li>Informative properties for determining the choice of wide vs. narrow
- glyphs in East Asian contexts.</li>
-</ul>
-<p><b>BidiMirroring.txt</b><b> (<a
-href="http://www.unicode.org/unicode/reports/tr9/">UAX #9:&nbsp;The
-Bidirectional Algorithm</a>)</b></p>
-<ul>
- <li>Informative properties for substituting characters in an implementation of
- bidirectional mirroring.</li>
-</ul>
-<p><b>CaseFolding.txt (<a href="http://www.unicode.org/unicode/reports/tr21/">UTR
-#21: Case Mappings</a>)</b></p>
-<ul>
- <li>Informative file mapping characters to their case-folded form.</li>
-</ul>
-<p><b>NormalizationTest.txt (<a
-href="http://www.unicode.org/unicode/reports/tr15/">UAX #15 Unicode Normalization
-Forms</a>)</b></p>
-<ul>
- <li>Normative test file for conformance to Unicode Normalization Forms.</li>
-</ul>
-<p><b>diffXvY.txt</b>
-<ul>
- <li>Mechanically-generated informative files containing accumulated
- differences between successive versions of UnicodeData.txt</li>
-</ul>
-
-</body>
-
-</html>
diff --git a/contrib/perl5/lib/unicode/UCDFF301.html b/contrib/perl5/lib/unicode/UCDFF301.html
deleted file mode 100644
index a8fbe32..0000000
--- a/contrib/perl5/lib/unicode/UCDFF301.html
+++ /dev/null
@@ -1,1025 +0,0 @@
-<html>
-
-<head>
-<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<link rel="stylesheet" href="http://www.unicode.org/unicode.css" type="text/css">
-<title>UnicodeData File Format</title>
-</head>
-
-<body>
-
-<h1>UnicodeData File Format<br>
-Version 3.0.1</h1>
-<table border="1" cellspacing="2" cellpadding="0" height="87" width="100%">
- <tr>
- <td valign="TOP" width="144">Revision</td>
- <td valign="TOP">3.0.1</td>
- </tr>
- <tr>
- <td valign="TOP" width="144">Authors</td>
- <td valign="TOP">Mark Davis and Ken Whistler</td>
- </tr>
- <tr>
- <td valign="TOP" width="144">Date</td>
- <td valign="TOP">2000-08-17</td>
- </tr>
- <tr>
- <td valign="TOP" width="144">This Version</td>
- <td valign="TOP"><a
- href="http://www.unicode.org/Public/3.0-Update1/UnicodeData-3.0.1.html">http://www.unicode.org/Public/3.0-Update1/UnicodeData-3.0.1.html</a></td>
- </tr>
- <tr>
- <td valign="TOP" width="144">Previous Version</td>
- <td valign="TOP"><a
- href="http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html">http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html</a></td>
- </tr>
- <tr>
- <td valign="TOP" width="144">Latest Version</td>
- <td valign="TOP"><a
- href="http://www.unicode.org/Public/UNIDATA/UnicodeData.html">http://www.unicode.org/Public/UNIDATA/UnicodeData.html</a></td>
- </tr>
-</table>
-<p align="center">Copyright © 1995-2000 Unicode, Inc. All Rights reserved.<br>
-<i>For more information, including Disclamer and Limitations, see <a
-href="UnicodeCharacterDatabase-3.0.1.html">UnicodeCharacterDatabase-3.0.1.html</a></i></p>
-<p>This document describes the format of the UnicodeData.txt file, which is one
-of the files in the Unicode Character Database. The document is divided into the
-following sections:
-<ul>
- <li><a href="#Field Formats">Field Formats</a>
- <ul>
- <li><a href="#General Category">General Category</a></li>
- <li><a href="#Bidirectional Category">Bidirectional Category</a></li>
- <li><a href="#Character Decomposition">Character Decomposition Mapping</a></li>
- <li><a href="#Canonical Combining Classes">Canonical Combining Classes</a></li>
- <li><a href="#Decompositions and Normalization">Decompositions and
- Normalization</a></li>
- <li><a href="#Case Mappings">Case Mappings</a></li>
- </ul>
- </li>
- <li><a href="#Property Invariants">Property Invariants</a></li>
- <li><a href="#Modification History">Modification History</a></li>
-</ul>
-<p><b>Warning: </b>the information in this file does not completely describe the
-use and interpretation of Unicode character properties and behavior. It must be
-used in conjunction with the data in the other files in the <a
-href="UnicodeCharacterDatabase-3.0.1.html">Unicode Character Database</a>, and
-relies on the notation and definitions supplied in <i><a
-href="http://www.unicode.org/unicode/standard/versions/Unicode3.0.html">The
-Unicode Standard</a></i>. All chapter references are to Version 3.0 of the
-standard.</p>
-<h2><a name="Field Formats"></a>Field Formats</h2>
-<p>The file consists of lines containing fields separated by semicolons. Each
-line represents the data for one encoded character in the Unicode Standard.
-Every encoded character has a data entry, with the exception of certain special
-ranges, as detailed below.
-<ul>
- <li>There are nine special ranges of characters that are represented only by
- their start and end characters, since the properties in the file are
- uniform, except for code values (which are all sequential and assigned).</li>
- <li>The names of CJK ideograph characters and the names and decompositions of
- Hangul syllable characters are algorithmically derivable. (See the Unicode
- Standard and <a href="http://www.unicode.org/unicode/reports/tr15/">Unicode
- Standard Annex #15</a> for more information).</li>
- <li>Surrogate code values and private use characters have no names.</li>
- <li>The Private Use character outside of the BMP (U+F0000..U+FFFFD,
- U+100000..U+10FFFD) are listed as distinct ranges. These correspond to surrogate pairs
- where the first surrogate is in the High Surrogate Private Use section.</li>
-</ul>
-<p>The exact ranges represented by start and end characters are:
-<ul>
- <li>CJK Ideographs Extension A (U+3400 - U+4DB5)</li>
- <li>CJK Ideographs (U+4E00 - U+9FA5)</li>
- <li>Hangul Syllables (U+AC00 - U+D7A3)</li>
- <li>Non-Private Use High Surrogates (U+D800 - U+DB7F)</li>
- <li>Private Use High Surrogates (U+DB80 - U+DBFF)</li>
- <li>Low Surrogates (U+DC00 - U+DFFF)</li>
- <li>The Private Use Area (U+E000 - U+F8FF)</li>
- <li>Plane 15 Private Use Area (U+F0000 - U+FFFFD)</li>
- <li>Plane 16 Private Use Area (U+100000 - U+10FFFD)</li>
-</ul>
-<p>The following table describes the format and meaning of each field in a data
-entry in the UnicodeData file. Fields which contain normative information are so
-indicated.</p>
-<table border="1" cellspacing="2" cellpadding="2">
- <tr>
- <th valign="top" align="LEFT">
- <p align="LEFT">Field</th>
- <th valign="top" align="LEFT">
- <p align="LEFT">Name</th>
- <th valign="top" align="LEFT">
- <p align="LEFT">Status</th>
- <th valign="top" align="LEFT">
- <p align="LEFT">Explanation</th>
- </tr>
- <tr>
- <th valign="top">0</th>
- <td valign="top">Code value</td>
- <td valign="top">normative</td>
- <td valign="top">Code value. For characters in the range U+0000..U+FFFD
- the code value uses a 4-digit hexadecimal format; for characters in the
- range U+10000..U+FFFFD the code value uses a 5-digit hexadecimal format;
- and for characters in the range U+100000..U+10FFFD the code value uses a
- 6-digit hexadecimal format.</td>
- </tr>
- <tr>
- <th valign="top">1</th>
- <td valign="top">Character name</td>
- <td valign="top">normative</td>
- <td valign="top">These names match exactly the names published in Chapter 14
- of the Unicode Standard, Version 3.0.</td>
- </tr>
- <tr>
- <th valign="top">2</th>
- <td valign="top"><a href="#General Category">General Category</a></td>
- <td valign="top">normative / informative<br>
- (see below)</td>
- <td valign="top">This is a useful breakdown into various &quot;character
- types&quot; which can be used as a default categorization in
- implementations. See below for a brief explanation.</td>
- </tr>
- <tr>
- <th valign="top">3</th>
- <td valign="top"><a href="#Canonical Combining Classes">Canonical Combining
- Classes</a></td>
- <td valign="top">normative</td>
- <td valign="top">The classes used for the Canonical Ordering Algorithm in
- the Unicode Standard. These classes are also printed in Chapter 4 of the
- Unicode Standard.</td>
- </tr>
- <tr>
- <th valign="top">4</th>
- <td valign="top"><a href="#Bidirectional Category">Bidirectional Category</a></td>
- <td valign="top">normative</td>
- <td valign="top">See the list below for an explanation of the abbreviations
- used in this field. These are the categories required by the Bidirectional
- Behavior Algorithm in the Unicode Standard. These categories are
- summarized in Chapter 3 of the Unicode Standard.</td>
- </tr>
- <tr>
- <th valign="top">5</th>
- <td valign="top"><a href="#Character Decomposition">Character Decomposition
- Mapping</a></td>
- <td valign="top">normative</td>
- <td valign="top">In the Unicode Standard, not all of the mappings are full
- (maximal) decompositions. Recursive application of look-up for
- decompositions will, in all cases, lead to a maximal decomposition. The
- decomposition mappings match exactly the decomposition mappings published
- with the character names in the Unicode Standard.</td>
- </tr>
- <tr>
- <th valign="top">6</th>
- <td valign="top">Decimal digit value</td>
- <td valign="top">normative</td>
- <td valign="top">This is a numeric field. If the character has the decimal
- digit property, as specified in Chapter 4 of the Unicode Standard, the
- value of that digit is represented with an integer value in this field</td>
- </tr>
- <tr>
- <th valign="top">7</th>
- <td valign="top">Digit value</td>
- <td valign="top">normative</td>
- <td valign="top">This is a numeric field. If the character represents a
- digit, not necessarily a decimal digit, the value is here. This covers
- digits which do not form decimal radix forms, such as the compatibility
- superscript digits</td>
- </tr>
- <tr>
- <th valign="top">8</th>
- <td valign="top">Numeric value</td>
- <td valign="top">normative</td>
- <td valign="top">This is a numeric field. If the character has the numeric
- property, as specified in Chapter 4 of the Unicode Standard, the value of
- that character is represented with an integer or rational number in this
- field. This includes fractions as, e.g., &quot;1/5&quot; for U+2155 VULGAR
- FRACTION ONE FIFTH Also included are numerical values for compatibility
- characters such as circled numbers.</td>
- </tr>
- <tr>
- <th valign="top">9</th>
- <td valign="top">Mirrored</td>
- <td valign="top">normative</td>
- <td valign="top">If the character has been identified as a
- &quot;mirrored&quot; character in bidirectional text, this field has the
- value &quot;Y&quot;; otherwise &quot;N&quot;. The list of mirrored
- characters is also printed in Chapter 4 of the Unicode Standard.</td>
- </tr>
- <tr>
- <th valign="top">10</th>
- <td valign="top">Unicode 1.0 Name</td>
- <td valign="top">informative</td>
- <td valign="top">This is the old name as published in Unicode 1.0. This name
- is only provided when it is significantly different from the Unicode 3.0
- name for the character.</td>
- </tr>
- <tr>
- <th valign="top">11</th>
- <td valign="top">10646 comment field</td>
- <td valign="top">informative</td>
- <td valign="top">This is the ISO 10646 comment field. It appears in parentheses
- in the 10646 names list, or contains an asterisk to mark an Annex P note.</td>
- </tr>
- <tr>
- <th valign="top">12</th>
- <td valign="top"><a href="#Case Mappings">Uppercase Mapping</a></td>
- <td valign="top">informative</td>
- <td valign="top">Upper case equivalent mapping. If a character is part of an
- alphabet with case distinctions, and has an upper case equivalent, then
- the upper case equivalent is in this field. See the explanation below on
- case distinctions. These mappings are always one-to-one, not one-to-many
- or many-to-one. This field is informative.</td>
- </tr>
- <tr>
- <th valign="top">13</th>
- <td valign="top"><a href="#Case Mappings">Lowercase Mapping</a></td>
- <td valign="top">informative</td>
- <td valign="top">Similar to Uppercase mapping</td>
- </tr>
- <tr>
- <th valign="top">14</th>
- <td valign="top"><a href="#Case Mappings">Titlecase Mapping</a></td>
- <td valign="top">informative</td>
- <td valign="top">Similar to Uppercase mapping</td>
- </tr>
-</table>
-<h3><a name="General Category"></a>General Category</h3>
-<p>The values in this field are abbreviations for the following. Some of the
-values are normative, and some are informative. For more information, see the
-Unicode Standard.</p>
-<p><b>Note:</b> the standard does not assign information to control characters
-(except for certain cases in the Bidirectional Algorithm). Implementations will
-generally also assign categories to certain control characters, notably CR and
-LF, according to platform conventions.</p>
-<h4>Normative Categories</h4>
-<table border="0" cellspacing="2" cellpadding="0">
- <tr>
- <th>
- <p align="LEFT">Abbr.</th>
- <th>
- <p align="LEFT">Description</th>
- </tr>
- <tr>
- <td align="CENTER">Lu</td>
- <td>Letter, Uppercase</td>
- </tr>
- <tr>
- <td align="CENTER">Ll</td>
- <td>Letter, Lowercase</td>
- </tr>
- <tr>
- <td align="CENTER">Lt</td>
- <td>Letter, Titlecase</td>
- </tr>
- <tr>
- <td align="CENTER">Mn</td>
- <td>Mark, Non-Spacing</td>
- </tr>
- <tr>
- <td align="CENTER">Mc</td>
- <td>Mark, Spacing Combining</td>
- </tr>
- <tr>
- <td align="CENTER">Me</td>
- <td>Mark, Enclosing</td>
- </tr>
- <tr>
- <td align="CENTER">Nd</td>
- <td>Number, Decimal Digit</td>
- </tr>
- <tr>
- <td align="CENTER">Nl</td>
- <td>Number, Letter</td>
- </tr>
- <tr>
- <td align="CENTER">No</td>
- <td>Number, Other</td>
- </tr>
- <tr>
- <td align="CENTER">Zs</td>
- <td>Separator, Space</td>
- </tr>
- <tr>
- <td align="CENTER">Zl</td>
- <td>Separator, Line</td>
- </tr>
- <tr>
- <td align="CENTER">Zp</td>
- <td>Separator, Paragraph</td>
- </tr>
- <tr>
- <td align="CENTER">Cc</td>
- <td>Other, Control</td>
- </tr>
- <tr>
- <td align="CENTER">Cf</td>
- <td>Other, Format</td>
- </tr>
- <tr>
- <td align="CENTER">Cs</td>
- <td>Other, Surrogate</td>
- </tr>
- <tr>
- <td align="CENTER">Co</td>
- <td>Other, Private Use</td>
- </tr>
- <tr>
- <td align="CENTER">Cn</td>
- <td>Other, Not Assigned (no characters in the file have this property)</td>
- </tr>
-</table>
-<h4>Informative Categories</h4>
-<table border="0" cellspacing="2" cellpadding="0">
- <tr>
- <th>
- <p align="LEFT">Abbr.</th>
- <th>
- <p align="LEFT">Description</th>
- </tr>
- <tr>
- <td align="CENTER">Lm</td>
- <td>Letter, Modifier</td>
- </tr>
- <tr>
- <td align="CENTER">Lo</td>
- <td>Letter, Other</td>
- </tr>
- <tr>
- <td align="CENTER">Pc</td>
- <td>Punctuation, Connector</td>
- </tr>
- <tr>
- <td align="CENTER">Pd</td>
- <td>Punctuation, Dash</td>
- </tr>
- <tr>
- <td align="CENTER">Ps</td>
- <td>Punctuation, Open</td>
- </tr>
- <tr>
- <td align="CENTER">Pe</td>
- <td>Punctuation, Close</td>
- </tr>
- <tr>
- <td align="CENTER">Pi</td>
- <td>Punctuation, Initial quote (may behave like Ps or Pe depending on usage)</td>
- </tr>
- <tr>
- <td align="CENTER">Pf</td>
- <td>Punctuation, Final quote (may behave like Ps or Pe depending on usage)</td>
- </tr>
- <tr>
- <td align="CENTER">Po</td>
- <td>Punctuation, Other</td>
- </tr>
- <tr>
- <td align="CENTER">Sm</td>
- <td>Symbol, Math</td>
- </tr>
- <tr>
- <td align="CENTER">Sc</td>
- <td>Symbol, Currency</td>
- </tr>
- <tr>
- <td align="CENTER">Sk</td>
- <td>Symbol, Modifier</td>
- </tr>
- <tr>
- <td align="CENTER">So</td>
- <td>Symbol, Other</td>
- </tr>
-</table>
-<h3><a name="Bidirectional Category"></a>Bidirectional Category</h3>
-<p>Please refer to Chapter 3 for an explanation of the algorithm for
-Bidirectional Behavior and an explanation of the significance of these
-categories. An up-to-date version can be found on <a
-href="http://www.unicode.org/unicode/reports/tr9/">Unicode Standard Annex #9:
-The Bidirectional Algorithm</a>. These values are normative.</p>
-<table border="0" cellpadding="2">
- <tr>
- <th valign="TOP" align="LEFT">
- <p align="LEFT">Type</th>
- <th valign="TOP" align="LEFT">
- <p align="LEFT">Description</th>
- </tr>
- <tr>
- <td valign="TOP"><b>L</b></td>
- <td valign="TOP">Left-to-Right</td>
- </tr>
- <tr>
- <td valign="TOP"><b>LRE</b></td>
- <td valign="TOP">Left-to-Right Embedding</td>
- </tr>
- <tr>
- <td valign="TOP"><b>LRO</b></td>
- <td valign="TOP">Left-to-Right Override</td>
- </tr>
- <tr>
- <td valign="TOP"><b>R</b></td>
- <td valign="TOP">Right-to-Left</td>
- </tr>
- <tr>
- <td valign="TOP"><b>AL</b></td>
- <td valign="TOP">Right-to-Left Arabic</td>
- </tr>
- <tr>
- <td valign="TOP"><b>RLE</b></td>
- <td valign="TOP">Right-to-Left Embedding</td>
- </tr>
- <tr>
- <td valign="TOP"><b>RLO</b></td>
- <td valign="TOP">Right-to-Left Override</td>
- </tr>
- <tr>
- <td valign="TOP"><b>PDF</b></td>
- <td valign="TOP">Pop Directional Format</td>
- </tr>
- <tr>
- <td valign="TOP"><b>EN</b></td>
- <td valign="TOP">European Number</td>
- </tr>
- <tr>
- <td valign="TOP"><b>ES</b></td>
- <td valign="TOP">European Number Separator</td>
- </tr>
- <tr>
- <td valign="TOP"><b>ET</b></td>
- <td valign="TOP">European Number Terminator</td>
- </tr>
- <tr>
- <td valign="TOP"><b>AN</b></td>
- <td valign="TOP">Arabic Number</td>
- </tr>
- <tr>
- <td valign="TOP"><b>CS</b></td>
- <td valign="TOP">Common Number Separator</td>
- </tr>
- <tr>
- <td valign="TOP"><b>NSM</b></td>
- <td valign="TOP">Non-Spacing Mark</td>
- </tr>
- <tr>
- <td valign="TOP"><b>BN</b></td>
- <td valign="TOP">Boundary Neutral</td>
- </tr>
- <tr>
- <td valign="TOP"><b>B</b></td>
- <td valign="TOP">Paragraph Separator</td>
- </tr>
- <tr>
- <td valign="TOP"><b>S</b></td>
- <td valign="TOP">Segment Separator</td>
- </tr>
- <tr>
- <td valign="TOP"><b>WS</b></td>
- <td valign="TOP">Whitespace</td>
- </tr>
- <tr>
- <td valign="TOP"><b>ON</b></td>
- <td valign="TOP">Other Neutrals</td>
- </tr>
-</table>
-<h3><a name="Character Decomposition"></a>Character Decomposition Mapping</h3>
-<p>The decomposition is a normative property of a character. The tags supplied
-with certain decomposition mappings generally indicate formatting information.
-Where no such tag is given, the mapping is designated as canonical. Conversely,
-the presence of a formatting tag also indicates that the mapping is a
-compatibility mapping and not a canonical mapping. In the absence of other
-formatting information in a compatibility mapping, the tag is used to
-distinguish it from canonical mappings.</p>
-<p>In some instances a canonical mapping or a compatibility mapping may consist
-of a single character. For a canonical mapping, this indicates that the
-character is a canonical equivalent of another single character. For a
-compatibility mapping, this indicates that the character is a compatibility
-equivalent of another single character. The compatibility formatting tags used
-are:</p>
-<table border="0" cellspacing="2" cellpadding="0">
- <tr>
- <th>Tag</th>
- <th>
- <p align="LEFT">Description</th>
- </tr>
- <tr>
- <td align="CENTER">&lt;font&gt;&nbsp;&nbsp;</td>
- <td>A font variant (e.g. a blackletter form).</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;noBreak&gt;&nbsp;&nbsp;</td>
- <td>A no-break version of a space or hyphen.</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;initial&gt;&nbsp;&nbsp;</td>
- <td>An initial presentation form (Arabic).</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;medial&gt;&nbsp;&nbsp;</td>
- <td>A medial presentation form (Arabic).</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;final&gt;&nbsp;&nbsp;</td>
- <td>A final presentation form (Arabic).</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;isolated&gt;&nbsp;&nbsp;</td>
- <td>An isolated presentation form (Arabic).</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;circle&gt;&nbsp;&nbsp;</td>
- <td>An encircled form.</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;super&gt;&nbsp;&nbsp;</td>
- <td>A superscript form.</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;sub&gt;&nbsp;&nbsp;</td>
- <td>A subscript form.</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;vertical&gt;&nbsp;&nbsp;</td>
- <td>A vertical layout presentation form.</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;wide&gt;&nbsp;&nbsp;</td>
- <td>A wide (or zenkaku) compatibility character.</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;narrow&gt;&nbsp;&nbsp;</td>
- <td>A narrow (or hankaku) compatibility character.</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;small&gt;&nbsp;&nbsp;</td>
- <td>A small variant form (CNS compatibility).</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;square&gt;&nbsp;&nbsp;</td>
- <td>A CJK squared font variant.</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;fraction&gt;&nbsp;&nbsp;</td>
- <td>A vulgar fraction form.</td>
- </tr>
- <tr>
- <td align="CENTER">&lt;compat&gt;&nbsp;&nbsp;</td>
- <td>Otherwise unspecified compatibility character.</td>
- </tr>
-</table>
-<p><b>Reminder: </b>There is a difference between decomposition and
-decomposition mapping. The decomposition mappings are defined in the UnicodeData,
-while the decomposition (also termed &quot;full decomposition&quot;) is defined
-in Chapter 3 to use those mappings <i>recursively.</i>
-<ul>
- <li>The canonical decomposition is formed by recursively applying the
- canonical mappings, then applying the canonical reordering algorithm.</li>
- <li>The compatibility decomposition is formed by recursively applying the
- canonical <em>and</em> compatibility mappings, then applying the canonical
- reordering algorithm.</li>
-</ul>
-<h3><a name="Canonical Combining Classes"></a>Canonical Combining Classes</h3>
-<table border="0" cellspacing="2" cellpadding="0">
- <tr>
- <th>
- <p align="LEFT">Value</th>
- <th>
- <p align="LEFT">Description</th>
- </tr>
- <tr>
- <td align="RIGHT">0:</td>
- <td>Spacing, split, enclosing, reordrant, and Tibetan subjoined</td>
- </tr>
- <tr>
- <td align="RIGHT">1:</td>
- <td>Overlays and interior</td>
- </tr>
- <tr>
- <td align="RIGHT">7:</td>
- <td>Nuktas</td>
- </tr>
- <tr>
- <td align="RIGHT">8:</td>
- <td>Hiragana/Katakana voicing marks</td>
- </tr>
- <tr>
- <td align="RIGHT">9:</td>
- <td>Viramas</td>
- </tr>
- <tr>
- <td align="RIGHT">10:</td>
- <td>Start of fixed position classes</td>
- </tr>
- <tr>
- <td align="RIGHT">199:</td>
- <td>End of fixed position classes</td>
- </tr>
- <tr>
- <td align="RIGHT">200:</td>
- <td>Below left attached</td>
- </tr>
- <tr>
- <td align="RIGHT">202:</td>
- <td>Below attached</td>
- </tr>
- <tr>
- <td align="RIGHT">204:</td>
- <td>Below right attached</td>
- </tr>
- <tr>
- <td align="RIGHT">208:</td>
- <td>Left attached (reordrant around single base character)</td>
- </tr>
- <tr>
- <td align="RIGHT">210:</td>
- <td>Right attached</td>
- </tr>
- <tr>
- <td align="RIGHT">212:</td>
- <td>Above left attached</td>
- </tr>
- <tr>
- <td align="RIGHT">214:</td>
- <td>Above attached</td>
- </tr>
- <tr>
- <td align="RIGHT">216:</td>
- <td>Above right attached</td>
- </tr>
- <tr>
- <td align="RIGHT">218:</td>
- <td>Below left</td>
- </tr>
- <tr>
- <td align="RIGHT">220:</td>
- <td>Below</td>
- </tr>
- <tr>
- <td align="RIGHT">222:</td>
- <td>Below right</td>
- </tr>
- <tr>
- <td align="RIGHT">224:</td>
- <td>Left (reordrant around single base character)</td>
- </tr>
- <tr>
- <td align="RIGHT">226:</td>
- <td>Right</td>
- </tr>
- <tr>
- <td align="RIGHT">228:</td>
- <td>Above left</td>
- </tr>
- <tr>
- <td align="RIGHT">230:</td>
- <td>Above</td>
- </tr>
- <tr>
- <td align="RIGHT">232:</td>
- <td>Above right</td>
- </tr>
- <tr>
- <td align="RIGHT">233:</td>
- <td>Double below</td>
- </tr>
- <tr>
- <td align="RIGHT">234:</td>
- <td>Double above</td>
- </tr>
- <tr>
- <td align="RIGHT">240:</td>
- <td>Below (iota subscript)</td>
- </tr>
-</table>
-<p><strong>Note: </strong>some of the combining classes in this list do not
-currently have members but are specified here for completeness.</p>
-<h3><a name="Decompositions and Normalization"></a>Decompositions and
-Normalization</h3>
-<p>Decomposition is specified in Chapter 3. <a
-href="http://www.unicode.org/unicode/reports/tr15/"><i>Unicode Standard Annex
-#15: Unicode Normalization Forms</i></a> specifies the interaction between decomposition
-and normalization. The most up-to-date version is found on <a
-href="http://www.unicode.org/unicode/reports/tr15/">http://www.unicode.org/unicode/reports/tr15/</a>.
-That report specifies how the decompositions defined in UnicodeData.txt are used
-to derive normalized forms of Unicode text.</p>
-<p>Note that as of the 2.1.9 update of the Unicode Character Database, the
-decompositions in the UnicodeData.txt file can be used to recursively derive the
-full decomposition in canonical order, without the need to separately apply
-canonical reordering. However, canonical reordering of combining character
-sequences must still be applied in decomposition when normalizing source text
-which contains any combining marks.</p>
-<h3><a name="Case Mappings"></a>Case Mappings</h3>
-<p>The case mapping is an informative, default mapping. Case itself, on the
-other hand, has normative status. Thus, for example, 0041 LATIN CAPITAL LETTER A
-is normatively uppercase, but its lowercase mapping the 0061 LATIN SMALL LETTER
-A is informative. The reason for this is that case can be considered to be an
-inherent property of a particular character (and is usually, but not always,
-derivable from the presence of the terms &quot;CAPITAL&quot; or
-&quot;SMALL&quot; in the character name), but case mappings between characters
-are occasionally influenced by local conventions. For example, certain
-languages, such as Turkish, German, French, or Greek may have small deviations
-from the default mappings listed in UnicodeData.</p>
-<p>In addition to uppercase and lowercase, because of the inclusion of certain
-composite characters for compatibility, such as 01F1 LATIN CAPITAL LETTER DZ,
-there is a third case, called <i>titlecase</i>, which is used where the first
-letter of a word is to be capitalized (e.g. UPPERCASE, Titlecase, lowercase). An
-example of such a titlecase letter is 01F2 LATIN CAPITAL LETTER D WITH SMALL
-LETTER Z.</p>
-<p>The uppercase, titlecase and lowercase fields are only included for
-characters that have a single corresponding character of that type. Composite
-characters (such as &quot;339D SQUARE CM&quot;) that do not have a single
-corresponding character of that type can be cased by decomposition.</p>
-<p>For compatibility with existing parsers, UnicodeData only contains case
-mappings for characters where they are one-to-one mappings; it also omits
-information about context-sensitive case mappings. Information about these
-special cases can be found in a separate data file, <a
-href="http://www.unicode.org/Public/3.0-Update1/">SpecialCasing.txt</a>, which
-has been added starting with the 2.1.8 update to the Unicode data files.
-SpecialCasing.txt contains additional informative case mappings that are either
-not one-to-one or which are context-sensitive.</p>
-<h2><a name="Property Invariants"></a>Property Invariants</h2>
-<p>Values in UnicodeData.txt are subject to correction as errors are found;
-however, some characteristics of the categories themselves can be considered
-invariants. Applications may wish to take these invariants into account when
-choosing how to implement character properties. The following is a partial list
-of known invariants for the Unicode Character Database.</p>
-<h4>Database Fields</h4>
-<ul>
- <li>The number of fields in UnicodeData.txt is fixed.</li>
- <li>The order of the fields is also fixed.
- <ul>
- <li>Any additional information about character properties to be added in
- the future will appear in separate data tables, rather than being added
- on to the existing table or by subdivision or reinterpretation of
- existing fields.</li>
- </ul>
- </li>
-</ul>
-<h4>General Category</h4>
-<ul>
- <li>There will never be more than 32 General Category values.
- <ul>
- <li>It is very unlikely that the Unicode Technical Committee will
- subdivide the General Category partition any further, since that can
- cause implementations to misbehave. Because the General Category is
- limited to 32 values, 5 bits can be used to represent the information,
- and a 32-bit integer can be used as a bitmask to represent arbitrary
- sets of categories.</li>
- </ul>
- </li>
-</ul>
-<h4>Combining Classes</h4>
-<ul>
- <li>Combining classes are limited to the values 0 to 255.
- <ul>
- <li>In practice, there are far fewer than 256 values used. Implementations
- may take advantage of this fact for compression, since only the ordering
- of the non-zero values matters for the Canonical Reordering Algorithm.
- It is possible for up to 256 values to be used in the future; however,
- UTC decisions in the future may restrict the number of values to 128,
- since this has implementation advantages. [Signed bytes can be used
- without widening to ints in Java, for example.]</li>
- </ul>
- </li>
- <li>All characters other than those of General Category M* have the combining
- class 0.
- <ul>
- <li>Currently, all characters other than those of General Category Mn have
- the value 0. However, some characters of General Category Me or Mc may
- be given non-zero values in the future.</li>
- <li>The precise values above the value 0 are not invariant--only the
- relative ordering is considered normative. For example, it is not
- guaranteed in future versions that the class of U+05B4 will be precisely
- 14.</li>
- </ul>
- </li>
-</ul>
-<h4>Case</h4>
-<ul>
- <li>Characters of type Lu, Lt, or Ll are called <i>cased</i>. All characters
- with an Upper, Lower, or Titlecase mapping are cased characters.
- <ul>
- <li>However, characters with the General Categories of Lu, Ll, or Lt may
- not always have case mappings, and case mappings may vary by locale.
- (See http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt).</li>
- </ul>
- </li>
-</ul>
-<h4>Canonical Decomposition</h4>
-<ul>
- <li>Canonical mappings are always in canonical order.</li>
- <li>Canonical mappings have only the first of a pair possibly further
- decomposing.</li>
- <li>Canonical decompositions are &quot;transparent&quot; to other character
- data:
- <ul>
- <li><tt>BIDI(a) = BIDI(principal(canonicalDecomposition(a))</tt></li>
- <li><tt>Category(a) = Category(principal(canonicalDecomposition(a))</tt></li>
- <li><tt>CombiningClass(a) =
- CombiningClass(principal(canonicalDecomposition(a))</tt><br>
- where principal(a) is the first character not of type Mn, or the first
- character if all characters are of type Mn.</li>
- </ul>
- </li>
- <li>However, because there are sometimes missing case pairs, and because of
- some legacy characters, it is only generally true that:
- <ul>
- <li><tt>upper(canonicalDecomposition(a)) = canonicalDecomposition(upper(a))</tt></li>
- <li><tt>lower(canonicalDecomposition(a)) = canonicalDecomposition(lower(a))</tt></li>
- <li><tt>title(canonicalDecomposition(a)) = canonicalDecomposition(title(a))</tt></li>
- </ul>
- </li>
-</ul>
-<h2><a name="Modification History"></a>Modification History</h2>
-<p>This section provides a summary of the changes between update versions of the
-Unicode Standard.</p>
-<h3><a
-href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 3.0.1">Unicode
-3.0.1</a></h3>
-<p>Modifications made for Version 3.0.1 of UnicodeData.txt include:
-<ul>
- <li>Added 5- and 6-digit representation of code points past U+FFFF.</li>
- <li>Added Private Use range definitions for Planes 15 and 16.</li>
- <li>Minor additions for the 10646 comment field.</li>
-</ul>
-<h3><a
-href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 3.0.0">Unicode
-3.0.0</a></h3>
-<p>Modifications made for Version 3.0.0 of UnicodeData.txt include many new
-characters and a number of property changes. These are summarized in Appendex D
-of <em>The Unicode Standard, Version 3.0.</em></p>
-<h3><a
-href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.9">Unicode
-2.1.9</a></h3>
-<p>Modifications made for Version 2.1.9 of UnicodeData.txt include:
-<ul>
- <li>Corrected combining class for U+05AE HEBREW ACCENT ZINOR.</li>
- <li>Corrected combining class for U+20E1 COMBINING LEFT RIGHT ARROW ABOVE</li>
- <li>Corrected combining class for U+0F35 and U+0F37 to 220.</li>
- <li>Corrected combining class for U+0F71 to 129.</li>
- <li>Added a decomposition for U+0F0C TIBETAN MARK DELIMITER TSHEG BSTAR.</li>
- <li>Added&nbsp; decompositions for several Greek symbol letters:
- U+03D0..U+03D2, U+03D5, U+03D6, U+03F0..U+03F2.</li>
- <li>Removed&nbsp; decompositions from the conjoining jamo block:
- U+1100..U+11F8.</li>
- <li>Changes to decomposition mappings for some Tibetan vowels for consistency
- in normalization. (U+0F71, U+0F73, U+0F77, U+0F79, U+0F81)</li>
- <li>Updated the decomposition mappings for several Vietnamese characters with
- two diacritics (U+1EAC, U+1EAD, U+1EB6, U+1EB7, U+1EC6, U+1EC7, U+1ED8,
- U+1ED9), so that the recursive decomposition can be generated directly in
- canonically reordered form (not a normative change).</li>
- <li>Updated the decomposition mappings for several Arabic compatibility
- characters involving shadda (U+FC5E..U+FC62, U+FCF2..U+FCF4), and two Latin
- characters (U+1E1C, U+1E1D), so that the decompositions are generated
- directly in canonically reordered form (not a normative change).</li>
- <li>Changed BIDI category for: U+00A0 NO-BREAK SPACE, U+2007 FIGURE SPACE,
- U+2028 LINE SEPARATOR.</li>
- <li>Changed BIDI category for extenders of General Category Lm: U+3005,
- U+3021..U+3035, U+FF9E, U+FF9F.</li>
- <li>Changed General Category and BIDI category for the Greek numeral signs:
- U+0374, U+0375.</li>
- <li>Corrected General Category for U+FFE8 HALFWIDTH FORMS LIGHT VERTICAL.</li>
- <li>Added Unicode 1.0 names for many Tibetan characters (informative).</li>
-</ul>
-<h3><a
-href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.8">Unicode
-2.1.8</a></h3>
-<p>Modifications made for Version 2.1.8 of UnicodeData.txt include:
-<ul>
- <li>Added combining class 240 for U+0345 COMBINING GREEK YPOGEGRAMMENI so that
- decompositions involving iota subscript are derivable directly in
- canonically reordered form; this also has a bearing on simplification of
- casing of polytonic Greek.</li>
- <li>Changes in decompositions related to Greek tonos. These result from the
- clarification that monotonic Greek &quot;tonos&quot; should be equated with
- U+0301 COMBINING ACUTE, rather than with U+030D COMBINING VERTICAL LINE
- ABOVE. (All Greek characters in the Greek block involving &quot;tonos&quot;;
- some Greek characters in the polytonic Greek in the 1FXX block.)</li>
- <li>Changed decompositions involving dialytika tonos. (U+0390, U+03B0)</li>
- <li>Changed ternary decompositions to binary. (U+0CCB, U+FB2C, U+FB2D) These
- changes simplify normalization.</li>
- <li>Removed canonical decomposition for Latin Candrabindu. (U+0310)</li>
- <li>Corrected error in canonical decomposition for U+1FF4.</li>
- <li>Added compatibility decompositions to clarify collation tables. (U+2100,
- U+2101, U+2105, U+2106, U+1E9A)</li>
- <li>A series of general category changes to assist the convergence of of
- Unicode definition of identifier with ISO TR 10176:
- <ul>
- <li>So &gt; Lo: U+0950, U+0AD0, U+0F00, U+0F88..U+0F8B</li>
- <li>Po &gt; Lo: U+0E2F, U+0EAF, U+3006</li>
- <li>Lm &gt; Sk: U+309B, U+309C</li>
- <li>Po &gt; Pc: U+30FB, U+FF65</li>
- <li>Ps/Pe &gt; Mn: U+0F3E, U+0F3F</li>
- </ul>
- </li>
- <li>A series of bidi property changes for consistency.
- <ul>
- <li>L &gt; ET: U+09F2, U+09F3</li>
- <li>ON &gt; L: U+3007</li>
- <li>L &gt; ON: U+0F3A..U+0F3D, U+037E, U+0387</li>
- </ul>
- </li>
- <li>Add case mapping: U+01A6 &lt;-&gt; U+0280</li>
- <li>Updated symmetric swapping value for guillemets: U+00AB, U+00BB, U+2039,
- U+203A.</li>
- <li>Changes to combining class values. Most Indic fixed position class
- non-spacing marks were changed to combining class 0. This fixes some
- inconsistencies in how canonical reordering would apply to Indic scripts,
- including Tibetan. Indic interacting top/bottom fixed position classes were
- merged into single (non-zero) classes as part of this change. Tibetan
- subjoined consonants are changed from combining class 6 to combining class
- 0. Thai pinthu (U+0E3A) moved to combining class 9. Moved two Devanagari
- stress marks into generic above and below combining classes (U+0951,
- U+0952).</li>
- <li>Corrected placement of semicolon near symmetric swapping field. (U+FA0E,
- etc., scattered positions to U+FA29)</li>
-</ul>
-<h3>Version 2.1.7</h3>
-<p><i>This version was for internal change tracking only, and never publicly
-released.</i></p>
-<h3>Version 2.1.6</h3>
-<p><i>This version was for internal change tracking only, and never publicly
-released.</i></p>
-<h3><a
-href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.5">Unicode
-2.1.5</a></h3>
-<p>Modifications made for Version 2.1.5 of UnicodeData.txt include:
-<ul>
- <li>Changed decomposition for U+FF9E and U+FF9F so that correct collation
- weighting will automatically result from the canonical equivalences.</li>
- <li>Removed canonical decompositions for U+04D4, U+04D5, U+04D8, U+04D9,
- U+04E0, U+04E1, U+04E8, U+04E9 (the implication being that no canonical
- equivalence is claimed between these 8 characters and similar Latin
- letters), and updated 4 canonical decompositions for U+04DB, U+04DC, U+04EA,
- U+04EB to reflect the implied difference in the base character.</li>
- <li>Added Pi, and Pf categories and assigned the relevant quotation marks to
- those categories, based on the Unicode Technical Corrigendum on Quotation
- Characters.</li>
- <li>Updating of many bidi properties, following the advice of the ad hoc
- committee on bidi, and to make the bidi properties of compatibility
- characters more consistent.</li>
- <li>Changed category of several Tibetan characters: U+0F3E, U+0F3F,
- U+0F88..U+0F8B to make them non-combining, reflecting the combined opinion
- of Tibetan experts.</li>
- <li>Added case mapping for U+03F2.</li>
- <li>Corrected case mapping for U+0275.</li>
- <li>Added titlecase mappings for U+03D0, U+03D1, U+03D5, U+03D6, U+03F0..
- U+03F2.</li>
- <li>Corrected compatibility label for U+2121.</li>
- <li>Add specific entries for all the CJK compatibility ideographs,
- U+F900..U+FA2D, so the canonical decomposition for each (the URO character
- it is equivalent to) can be carried in the database.</li>
-</ul>
-<h3>Version 2.1.4</h3>
-<p><i>This version was for internal change tracking only, and never publicly
-released.</i></p>
-<h3>Version 2.1.3</h3>
-<p><i>This version was for internal change tracking only, and never publicly
-released.</i></p>
-<h3><a
-href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.2">Unicode
-2.1.2</a></h3>
-<p>Modifications made in updating UnicodeData.txt to Version 2.1.2 for the
-Unicode Standard, Version 2.1 (from Version 2.0) include:
-<ul>
- <li>Added two characters (U+20AC and U+FFFC).</li>
- <li>Amended bidi properties for U+0026, U+002E, U+0040, U+2007.</li>
- <li>Corrected case mappings for U+018E, U+019F, U+01DD, U+0258, U+0275,
- U+03C2, U+1E9B.</li>
- <li>Changed combining order class for U+0F71.</li>
- <li>Corrected canonical decompositions for U+0F73, U+1FBE.</li>
- <li>Changed decomposition for U+FB1F from compatibility to canonical.</li>
- <li>Added compatibility decompositions for U+FBE8, U+FBE9, U+FBF9..U+FBFB.</li>
- <li>Corrected compatibility decompositions for U+2469, U+246A, U+3358.</li>
-</ul>
-<h3>Version 2.1.1</h3>
-<p><i>This version was for internal change tracking only, and never publicly
-released.</i></p>
-<h3><a
-href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.0.0">Unicode
-2.0.0</a></h3>
-<p>The modifications made in updating UnicodeData.txt for the Unicode Standard,
-Version 2.0 include:
-<ul>
- <li>Fixed decompositions with TONOS to use correct NSM: 030D.</li>
- <li>Removed old Hangul Syllables; mapping to new characters are in a separate
- table.</li>
- <li>Marked compatibility decompositions with additional tags.</li>
- <li>Changed old tag names for clarity.</li>
- <li>Revision of decompositions to use first-level decomposition, instead of
- maximal decomposition.</li>
- <li>Correction of all known errors in decompositions from earlier versions.</li>
- <li>Added control code names (as old Unicode names).</li>
- <li>Added Hangul Jamo decompositions.</li>
- <li>Added Number category to match properties list in book.</li>
- <li>Fixed categories of Koranic Arabic marks.</li>
- <li>Fixed categories of precomposed characters to match decomposition where
- possible.</li>
- <li>Added Hebrew cantillation marks and the Tibetan script.</li>
- <li>Added place holders for ranges such as CJK Ideographic Area and the
- Private Use Area.</li>
- <li>Added categories Me, Sk, Pc, Nl, Cs, Cf, and rectified a number of
- mistakes in the database.</li>
-</ul>
-
-</body>
-
-</html>
diff --git a/contrib/perl5/lib/unicode/Unicode.301 b/contrib/perl5/lib/unicode/Unicode.301
deleted file mode 100644
index 6804a75..0000000
--- a/contrib/perl5/lib/unicode/Unicode.301
+++ /dev/null
@@ -1,10621 +0,0 @@
-0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
-0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
-0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
-0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
-0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
-0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
-0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
-0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
-0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
-0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
-000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
-000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
-000C;<control>;Cc;0;WS;;;;;N;FORM FEED;;;;
-000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
-000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
-000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
-0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
-0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
-0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
-0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
-0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
-0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
-0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
-0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
-0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
-0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
-001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
-001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
-001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
-001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
-001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
-001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
-0020;SPACE;Zs;0;WS;;;;;N;;;;;
-0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
-0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
-0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
-0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
-0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
-0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
-0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
-0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
-002A;ASTERISK;Po;0;ON;;;;;N;;;;;
-002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
-002C;COMMA;Po;0;CS;;;;;N;;;;;
-002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
-002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
-002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
-0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
-0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
-0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
-0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
-0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
-0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
-0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
-0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
-0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
-0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
-003A;COLON;Po;0;CS;;;;;N;;;;;
-003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
-003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
-003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
-003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
-003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
-0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
-0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
-0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
-0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
-0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
-0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
-0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
-0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
-0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
-0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
-004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
-004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
-004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
-004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
-004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
-004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
-0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
-0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
-0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
-0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
-0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
-0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
-0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
-0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
-0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
-0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
-005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
-005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
-005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
-005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
-005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
-005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
-0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
-0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
-0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
-0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
-0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
-0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
-0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
-0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
-0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
-0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
-006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
-006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
-006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
-006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
-006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
-006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
-0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
-0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
-0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
-0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
-0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
-0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
-0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
-0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
-0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
-0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
-007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
-007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
-007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
-007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
-007E;TILDE;Sm;0;ON;;;;;N;;;;;
-007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
-0080;<control>;Cc;0;BN;;;;;N;;;;;
-0081;<control>;Cc;0;BN;;;;;N;;;;;
-0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
-0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
-0084;<control>;Cc;0;BN;;;;;N;;;;;
-0085;<control>;Cc;0;B;;;;;N;NEXT LINE;;;;
-0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
-0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
-0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
-0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
-008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
-008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE DOWN;;;;
-008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE UP;;;;
-008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
-008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
-008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
-0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
-0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
-0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
-0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
-0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
-0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
-0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
-0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
-0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
-0099;<control>;Cc;0;BN;;;;;N;;;;;
-009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
-009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
-009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
-009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
-009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
-009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
-00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
-00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
-00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
-00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
-00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
-00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
-00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
-00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
-00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
-00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
-00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
-00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
-00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
-00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
-00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
-00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
-00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
-00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
-00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
-00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
-00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
-00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
-00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
-00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
-00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
-00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
-00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
-00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
-00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
-00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
-00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
-00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
-00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
-00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
-00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
-00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
-00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
-00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
-00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
-00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
-00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
-00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
-00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
-00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
-00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
-00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
-00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
-00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
-00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
-00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
-00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
-00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
-00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
-00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
-00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
-00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
-00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
-00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
-00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
-00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
-00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
-00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
-00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
-00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
-00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
-00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
-00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
-00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
-00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
-00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
-00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
-00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
-00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
-00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
-00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
-00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
-00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
-00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
-00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
-00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
-00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
-00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
-00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
-00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
-00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
-00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
-00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
-00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
-00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
-00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
-00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
-00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
-00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
-00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
-00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
-0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
-0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
-0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
-0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
-0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
-0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
-0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
-0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
-0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
-0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
-010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
-010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
-010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
-010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
-010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
-010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
-0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
-0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
-0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
-0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
-0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
-0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
-0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
-0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
-0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
-0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
-011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
-011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
-011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
-011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
-011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
-011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
-0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
-0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
-0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
-0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
-0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
-0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
-0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
-0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
-0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
-0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
-012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
-012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
-012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
-012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
-012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
-012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
-0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
-0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
-0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
-0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
-0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
-0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
-0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
-0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
-0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
-0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
-013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
-013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
-013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
-013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
-013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
-013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
-0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
-0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
-0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
-0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
-0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
-0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
-0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
-0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
-0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
-0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
-014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
-014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
-014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
-014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
-014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
-014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
-0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
-0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
-0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
-0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
-0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
-0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
-0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
-0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
-0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
-0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
-015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
-015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
-015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
-015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
-015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
-015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
-0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
-0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
-0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
-0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
-0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
-0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
-0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
-0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
-0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
-0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
-016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
-016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
-016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
-016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
-016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
-016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
-0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
-0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
-0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
-0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
-0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
-0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
-0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
-0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
-0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
-0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
-017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
-017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
-017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
-017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
-017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
-017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
-0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
-0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
-0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
-0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
-0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
-0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
-0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
-0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
-0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
-0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
-018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
-018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
-018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
-018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
-018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
-018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
-0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
-0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
-0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
-0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
-0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
-0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
-0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
-0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
-0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
-0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
-019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
-019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
-019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
-019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
-019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;;
-019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
-01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
-01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
-01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
-01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
-01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
-01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
-01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280;
-01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
-01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
-01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
-01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
-01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
-01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
-01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
-01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
-01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
-01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
-01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
-01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
-01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
-01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
-01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
-01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
-01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
-01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
-01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
-01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
-01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
-01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
-01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
-01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
-01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
-01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
-01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
-01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
-01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
-01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
-01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
-01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
-01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
-01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
-01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
-01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
-01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
-01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
-01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
-01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
-01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
-01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
-01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
-01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
-01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
-01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
-01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
-01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
-01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
-01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
-01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
-01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
-01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
-01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
-01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
-01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
-01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
-01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
-01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
-01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
-01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
-01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
-01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
-01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
-01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
-01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
-01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
-01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
-01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
-01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
-01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
-01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
-01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
-01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
-01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
-01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
-01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
-01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
-01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
-01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
-01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
-01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
-01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
-01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
-01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
-01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
-01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
-01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
-01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
-0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
-0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
-0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
-0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
-0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
-0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
-0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
-0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
-0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
-0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
-020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
-020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
-020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
-020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
-020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
-020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
-0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
-0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
-0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
-0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
-0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
-0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
-0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
-0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
-0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
-0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
-021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
-021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
-021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
-021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
-021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
-021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
-0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
-0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
-0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
-0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
-0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
-0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
-0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
-0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
-022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
-022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
-022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
-022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
-022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
-022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
-0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
-0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
-0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
-0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
-0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
-0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
-0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
-0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
-0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
-0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
-0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
-0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
-0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
-0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
-025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
-025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
-025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
-025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
-025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
-025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
-0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
-0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
-0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
-0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
-0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
-0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
-0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
-0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
-0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
-0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
-026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
-026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
-026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
-026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
-026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
-0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
-0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
-0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
-0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
-0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
-0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
-0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
-0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
-0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
-0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
-027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
-027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
-027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
-027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
-027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
-027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
-0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6
-0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
-0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
-0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
-0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
-0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
-0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
-0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
-0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
-0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
-028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
-028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
-028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
-028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
-028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
-028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
-0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
-0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
-0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
-0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
-0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
-0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
-0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
-0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
-0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
-0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
-029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
-029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
-029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
-029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
-029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
-029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
-02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
-02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
-02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
-02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
-02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
-02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
-02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
-02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
-02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
-02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
-02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
-02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
-02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
-02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
-02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
-02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
-02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
-02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
-02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
-02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
-02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
-02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
-02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
-02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
-02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
-02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
-02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
-02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
-02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
-02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
-02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
-02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
-02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
-02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
-02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
-02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
-02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
-02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
-02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
-02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
-02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
-02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
-02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
-02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
-02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
-02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
-02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
-02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
-02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
-02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
-02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
-02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
-02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
-02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
-02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
-02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
-02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
-02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
-02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
-02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
-02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
-02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
-02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
-02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
-02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
-02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
-02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
-02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
-0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
-0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia;;;
-0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
-0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
-0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
-0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
-0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
-0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
-0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
-0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
-030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
-030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
-030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
-030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
-030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
-030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
-0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
-0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
-0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
-0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
-0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
-0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
-0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
-0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
-0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
-0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
-031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
-031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
-031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
-031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
-031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
-031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
-0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
-0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
-0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
-0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
-0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
-0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
-0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
-0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
-0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
-0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
-032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
-032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
-032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
-032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
-032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
-032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
-0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
-0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
-0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
-0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
-0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
-0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
-0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
-0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
-0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
-0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
-033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
-033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
-033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
-033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
-033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
-033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
-0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
-0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
-0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
-0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
-0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
-0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
-0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
-0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
-0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
-0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
-034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
-034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
-034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
-034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
-034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
-0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
-0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
-0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
-0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
-0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
-037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
-037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
-0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
-0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
-0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
-0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
-0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
-0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
-038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
-038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
-038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
-038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
-0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
-0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
-0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
-0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
-0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
-0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
-0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
-0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
-0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
-0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
-039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
-039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
-039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
-039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
-039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
-039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
-03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
-03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
-03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
-03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
-03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
-03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
-03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
-03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
-03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
-03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
-03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
-03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
-03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
-03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
-03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
-03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
-03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
-03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
-03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
-03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
-03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
-03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
-03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
-03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
-03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
-03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
-03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
-03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
-03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
-03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
-03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
-03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
-03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
-03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
-03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
-03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
-03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
-03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
-03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
-03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
-03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
-03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
-03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
-03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
-03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
-03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
-03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
-03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
-03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
-03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
-03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
-03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
-03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
-03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
-03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
-03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
-03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
-03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
-03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
-03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
-03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
-03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
-03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
-03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
-03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
-03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
-03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
-03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
-03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
-03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
-03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
-03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
-03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
-03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
-03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
-03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
-03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
-03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
-03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
-03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
-0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
-0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
-0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
-0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
-0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
-0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
-0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
-0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
-0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
-0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
-040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
-040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
-040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
-040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
-040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
-040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
-0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
-0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
-0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
-0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
-0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
-0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
-0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
-0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
-0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
-0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
-041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
-041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
-041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
-041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
-041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
-041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
-0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
-0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
-0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
-0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
-0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
-0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
-0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
-0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
-0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
-0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
-042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
-042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
-042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
-042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
-042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
-042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
-0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
-0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
-0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
-0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
-0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
-0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
-0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
-0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
-0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
-0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
-043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
-043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
-043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
-043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
-043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
-043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
-0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
-0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
-0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
-0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
-0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
-0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
-0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
-0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
-0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
-0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
-044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
-044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
-044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
-044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
-044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
-044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
-0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
-0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
-0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
-0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
-0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
-0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
-0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
-0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
-0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
-0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
-045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
-045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
-045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
-045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
-045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
-045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
-0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
-0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
-0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
-0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
-0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
-0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
-0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
-0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
-0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
-0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
-046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
-046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
-046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
-046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
-046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
-046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
-0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
-0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
-0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
-0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
-0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
-0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
-0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
-0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
-0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
-0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
-047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
-047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
-047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
-047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
-047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
-047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
-0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
-0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
-0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
-0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
-0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
-0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
-0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
-0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
-0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
-048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
-048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
-048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
-048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
-0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
-0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
-0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
-0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
-0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
-0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
-0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
-0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
-0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
-0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
-049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
-049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
-049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
-049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
-049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
-049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
-04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
-04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
-04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
-04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
-04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
-04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
-04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
-04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
-04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
-04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
-04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
-04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
-04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
-04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
-04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
-04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
-04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
-04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
-04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
-04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
-04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
-04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
-04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
-04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
-04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
-04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
-04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
-04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
-04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
-04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
-04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
-04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
-04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
-04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
-04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
-04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
-04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
-04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
-04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
-04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
-04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
-04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
-04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
-04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
-04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
-04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
-04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
-04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
-04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
-04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
-04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
-04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
-04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
-04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
-04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
-04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
-04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
-04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
-04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
-04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
-04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
-04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
-04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
-04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
-04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
-04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
-04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
-04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
-04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
-04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
-04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
-04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
-04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
-04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
-04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
-04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
-04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
-04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
-04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
-04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
-04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
-0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
-0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
-0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
-0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
-0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
-0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
-0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
-0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
-0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
-053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
-053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
-053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
-053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
-053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
-053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
-0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
-0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
-0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
-0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
-0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
-0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
-0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
-0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
-0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
-0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
-054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
-054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
-054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
-054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
-054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
-054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
-0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
-0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
-0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
-0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
-0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
-0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
-0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
-0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
-055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
-055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
-055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
-055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
-055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
-0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
-0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
-0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
-0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
-0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
-0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
-0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
-0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
-0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
-056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
-056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
-056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
-056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
-056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
-056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
-0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
-0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
-0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
-0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
-0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
-0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
-0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
-0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
-0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
-0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
-057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
-057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
-057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
-057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
-057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
-057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
-0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
-0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
-0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
-0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
-0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
-0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
-0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
-0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
-0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
-058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
-0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
-0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
-0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
-0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
-0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
-0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
-0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
-0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
-0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
-059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
-059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
-059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
-059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
-059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
-059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
-05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
-05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
-05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
-05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
-05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
-05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
-05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
-05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
-05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
-05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
-05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
-05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
-05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
-05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
-05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
-05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
-05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
-05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
-05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
-05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
-05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
-05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
-05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
-05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
-05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
-05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
-05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
-05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
-05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
-05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
-05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
-05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
-05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
-05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
-05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
-05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
-05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
-05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
-05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
-05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
-05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
-05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
-05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
-05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
-05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
-05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
-05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
-05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
-05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
-05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
-05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
-05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
-05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
-05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
-05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
-05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
-05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
-05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
-05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
-05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
-05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
-05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
-05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
-05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
-05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
-05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
-05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
-060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
-061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
-061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
-0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
-0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
-0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
-0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
-0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
-0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
-0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
-0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
-0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
-062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
-062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
-062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
-062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
-062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
-062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
-0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
-0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
-0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
-0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
-0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
-0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
-0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
-0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
-0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
-0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
-063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
-0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
-0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
-0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
-0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
-0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
-0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
-0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
-0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
-0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
-0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
-064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
-064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
-064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
-064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
-064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
-064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
-0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
-0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
-0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
-0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
-0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
-0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
-0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
-0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
-0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
-0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
-0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
-0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
-0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
-0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
-0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
-066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
-066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
-066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
-066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
-0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
-0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
-0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
-0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
-0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
-0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
-0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
-0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
-0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
-0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
-067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
-067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
-067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
-067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
-067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
-067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
-0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
-0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
-0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
-0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
-0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
-0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
-0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
-0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
-0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
-0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
-068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
-068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
-068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
-068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
-068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
-0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
-0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
-0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
-0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
-0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
-0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
-0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
-0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
-0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
-069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
-06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
-06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
-06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
-06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
-06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
-06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
-06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
-06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
-06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
-06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
-06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
-06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
-06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
-06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
-06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
-06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
-06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
-06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
-06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
-06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
-06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
-06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
-06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
-06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
-06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
-06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
-06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
-06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
-06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
-06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
-06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
-06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
-06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
-06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
-06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
-06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
-06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
-06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
-06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
-06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
-06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
-06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
-06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
-06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
-06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
-06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
-06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
-06DD;ARABIC END OF AYAH;Me;0;NSM;;;;;N;;;;;
-06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
-06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
-06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
-06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
-06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
-06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
-06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
-06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
-06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
-06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
-06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
-06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
-06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
-06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
-06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
-06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
-06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
-06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
-06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
-06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
-06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
-06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
-06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
-06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
-06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
-06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
-06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
-06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
-0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
-0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
-0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
-0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
-0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
-0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
-0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
-0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
-0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
-0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
-070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
-070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
-070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
-070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
-070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
-0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
-0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
-0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
-0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
-0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
-0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
-0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
-0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
-0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
-0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
-071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
-071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
-071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
-071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
-071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
-071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
-0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
-0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
-0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
-0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
-0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
-0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
-0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
-0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
-0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
-0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
-072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
-072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
-072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
-0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
-0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
-0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
-0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
-0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
-0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
-0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
-073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
-073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
-073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
-073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
-073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
-073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
-0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
-0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
-0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
-0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
-0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
-0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
-0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
-0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
-0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
-0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
-074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
-0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
-0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
-0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
-0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
-0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
-0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
-0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
-0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
-078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
-078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
-078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
-078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
-078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
-078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
-0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
-0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
-0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
-0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
-0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
-0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
-0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
-0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
-0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
-079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
-079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
-079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
-079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
-079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
-079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
-07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
-07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
-07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
-07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
-07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
-07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
-07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
-07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
-07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
-07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
-07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
-07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
-07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
-07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
-07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
-07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
-07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
-0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
-0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
-0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
-0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
-0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
-090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
-090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
-090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
-090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
-0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
-0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
-0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
-0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
-0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
-0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
-0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
-0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
-091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
-091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
-091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
-091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
-091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
-091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
-0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
-0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
-0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
-0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
-0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
-0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
-0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
-0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
-092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
-092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
-092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
-092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
-092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
-092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
-0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
-0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
-0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
-0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
-0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
-0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
-0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
-0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
-0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
-0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
-093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
-0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
-0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
-094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
-094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
-0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
-0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
-0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
-0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
-0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
-0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
-095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
-095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
-095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
-095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
-095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
-095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
-0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
-0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
-0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
-0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
-0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
-0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
-0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
-0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
-098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
-098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
-0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
-0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
-0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
-0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
-0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
-0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
-099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
-099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
-099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
-099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
-099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
-099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
-09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
-09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
-09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
-09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
-09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
-09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
-09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
-09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
-09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
-09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
-09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
-09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
-09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
-09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
-09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
-09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
-09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
-09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
-09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
-09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
-09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
-09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
-09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
-09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
-09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
-09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
-09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
-09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
-09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
-09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
-09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
-09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
-09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
-09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
-09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
-0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
-0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
-0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
-0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
-0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
-0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
-0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
-0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
-0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
-0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
-0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
-0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
-0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
-0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
-0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
-0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
-0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
-0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
-0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
-0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
-0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
-0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
-0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
-0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
-0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
-0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
-0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
-0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
-0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
-0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
-0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
-0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
-0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
-0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
-0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
-0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
-0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
-0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
-0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
-0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
-0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
-0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
-0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
-0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
-0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
-0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
-0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
-0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
-0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
-0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
-0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
-0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
-0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
-0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
-0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
-0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
-0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
-0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
-0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
-0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
-0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
-0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
-0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
-0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
-0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
-0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
-0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
-0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
-0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
-0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
-0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
-0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
-0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
-0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
-0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
-0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
-0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
-0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
-0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
-0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
-0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
-0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
-0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
-0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
-0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
-0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
-0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
-0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
-0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
-0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
-0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
-0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
-0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
-0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
-0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
-0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
-0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
-0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
-0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
-0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
-0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
-0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
-0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
-0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
-0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
-0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
-0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
-0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
-0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
-0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
-0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
-0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
-0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
-0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
-0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
-0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
-0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
-0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
-0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
-0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
-0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
-0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
-0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
-0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
-0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
-0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
-0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
-0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
-0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
-0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
-0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
-0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
-0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
-0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
-0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
-0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
-0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
-0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
-0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
-0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
-0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
-0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
-0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
-0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
-0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
-0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
-0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
-0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
-0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
-0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
-0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
-0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
-0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
-0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
-0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
-0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
-0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
-0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
-0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
-0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
-0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
-0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
-0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
-0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
-0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
-0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
-0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
-0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
-0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
-0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
-0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
-0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
-0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
-0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
-0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
-0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
-0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
-0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
-0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
-0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
-0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
-0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
-0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
-0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
-0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
-0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
-0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
-0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
-0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
-0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
-0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
-0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
-0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
-0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
-0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
-0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
-0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
-0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
-0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
-0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
-0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
-0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
-0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
-0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
-0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
-0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
-0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
-0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
-0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
-0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
-0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
-0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
-0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
-0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
-0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
-0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
-0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
-0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
-0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
-0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
-0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
-0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
-0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
-0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
-0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
-0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
-0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
-0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
-0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
-0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
-0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
-0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
-0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
-0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
-0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
-0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
-0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
-0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
-0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
-0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
-0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
-0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
-0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
-0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
-0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
-0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
-0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
-0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
-0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
-0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
-0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
-0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
-0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
-0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
-0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
-0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
-0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
-0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
-0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
-0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
-0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
-0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
-0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
-0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
-0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
-0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
-0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
-0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
-0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
-0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
-0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
-0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
-0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
-0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
-0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
-0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
-0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
-0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
-0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
-0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
-0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
-0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
-0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
-0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
-0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
-0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
-0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
-0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
-0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
-0CC6;KANNADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
-0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
-0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
-0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
-0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
-0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
-0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
-0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
-0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
-0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
-0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
-0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
-0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
-0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
-0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
-0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
-0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
-0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
-0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
-0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
-0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
-0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
-0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
-0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
-0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
-0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
-0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
-0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
-0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
-0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
-0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
-0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
-0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
-0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
-0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
-0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
-0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
-0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
-0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
-0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
-0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
-0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
-0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
-0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
-0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
-0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
-0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
-0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
-0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
-0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
-0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
-0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
-0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
-0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
-0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
-0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
-0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
-0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
-0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
-0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
-0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
-0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
-0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
-0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
-0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
-0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
-0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
-0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
-0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
-0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
-0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
-0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
-0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
-0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
-0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
-0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
-0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
-0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
-0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
-0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
-0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
-0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
-0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
-0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
-0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
-0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
-0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
-0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
-0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
-0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
-0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
-0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
-0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
-0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
-0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
-0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
-0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
-0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
-0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
-0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
-0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
-0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
-0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
-0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
-0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
-0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
-0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
-0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
-0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
-0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
-0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
-0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
-0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
-0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
-0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
-0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
-0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
-0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
-0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
-0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
-0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
-0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
-0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
-0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
-0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
-0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
-0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
-0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
-0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
-0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
-0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
-0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
-0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
-0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
-0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
-0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
-0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
-0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
-0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
-0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
-0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
-0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
-0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
-0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
-0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
-0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
-0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
-0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
-0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
-0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
-0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
-0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
-0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
-0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
-0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
-0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
-0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
-0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
-0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
-0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
-0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
-0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
-0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
-0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
-0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
-0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
-0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
-0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
-0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
-0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
-0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
-0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
-0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
-0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
-0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
-0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
-0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
-0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
-0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
-0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
-0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
-0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
-0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
-0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
-0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
-0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
-0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
-0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
-0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
-0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
-0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
-0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
-0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
-0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
-0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
-0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
-0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
-0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
-0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
-0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
-0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
-0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
-0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
-0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
-0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
-0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
-0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
-0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
-0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
-0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
-0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
-0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
-0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
-0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
-0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
-0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
-0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
-0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
-0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
-0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
-0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
-0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
-0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
-0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
-0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
-0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
-0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
-0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
-0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
-0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
-0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
-0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
-0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
-0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
-0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
-0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
-0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
-0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
-0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
-0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
-0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
-0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
-0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
-0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
-0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
-0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
-0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
-0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
-0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
-0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
-0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
-0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
-0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
-0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
-0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
-0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
-0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
-0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
-0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
-0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
-0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
-0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
-0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
-0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
-0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
-0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
-0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
-0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
-0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
-0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
-0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
-0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
-0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
-0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
-0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
-0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
-0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
-0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
-0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
-0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
-0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
-0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
-0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
-0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
-0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
-0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
-0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
-0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
-0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
-0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
-0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
-0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
-0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
-0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
-0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
-0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
-0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
-0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
-0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
-0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
-0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
-0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
-0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
-0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
-0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
-0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
-0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
-0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
-0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
-0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
-0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
-0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
-0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
-0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
-0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
-0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
-0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
-0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
-0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
-0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
-0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
-0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
-0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
-0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
-0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
-0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
-0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
-0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
-0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
-0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
-0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
-0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
-0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
-0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
-0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
-0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
-0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
-0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
-0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
-0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
-0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
-0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
-0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
-0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
-0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
-0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
-0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
-0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
-0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
-0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
-0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
-0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
-0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
-0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
-0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
-0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
-0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
-0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
-0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
-0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
-0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
-0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
-0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
-0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
-0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
-0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
-0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
-0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
-0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
-0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
-0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
-0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
-0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
-0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
-0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
-0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
-0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
-0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
-0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
-0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
-0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
-0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
-0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
-0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
-0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
-0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
-0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
-0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
-0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
-0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
-0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
-0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
-0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
-0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
-0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
-0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
-0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
-0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
-0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
-0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
-0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
-0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
-0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
-0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
-0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
-0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
-0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
-0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
-0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
-0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
-0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
-0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
-0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
-0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
-0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
-0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
-0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
-0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
-0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
-0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
-0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
-0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
-0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
-0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
-0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
-1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
-1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
-1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
-1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
-1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
-1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
-1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
-1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
-1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
-1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
-100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
-100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
-100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
-100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
-100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
-100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
-1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
-1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
-1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
-1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
-1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
-1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
-1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
-1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
-1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
-1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
-101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
-101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
-101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
-101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
-101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
-101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
-1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
-1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
-1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
-1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
-1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
-1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
-1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
-1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
-102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
-102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
-1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
-104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
-104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
-104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
-104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
-104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
-1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
-1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
-1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
-1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
-1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
-10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
-10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
-10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
-10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
-10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
-10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
-10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
-10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
-10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
-10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
-10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
-10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
-10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
-10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
-10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
-10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
-10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
-10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
-10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
-10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
-10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
-10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
-10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
-10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
-10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
-10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
-10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
-10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
-10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
-10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
-10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
-10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
-10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
-10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
-10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
-10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
-10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
-10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
-10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
-10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
-10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
-10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
-10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
-10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
-10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
-10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
-10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
-10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
-10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
-10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
-10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
-10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
-10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
-1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
-1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
-1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
-1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
-1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
-1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
-1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
-1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
-1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
-1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
-110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
-110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
-110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
-110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
-110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
-110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
-1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
-1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
-1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
-1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
-1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
-1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
-1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
-1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
-1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
-1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
-111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
-111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
-111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
-111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
-111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
-111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
-1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
-1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
-1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
-1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
-1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
-1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
-112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
-112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
-112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
-112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
-1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
-1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
-1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
-1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
-1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
-1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
-1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
-113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
-113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
-113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
-113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
-113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
-113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
-1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
-1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
-1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
-1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
-1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
-1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
-1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
-1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
-1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
-1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
-114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
-114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
-114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
-114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
-114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
-114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
-1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
-1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
-1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
-1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
-1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
-1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
-1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
-1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
-1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
-1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
-115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
-1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
-1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
-1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
-1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
-1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
-1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
-1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
-1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
-1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
-1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
-116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
-116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
-116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
-116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
-116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
-116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
-1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
-1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
-1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
-1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
-1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
-1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
-1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
-1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
-1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
-1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
-117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
-117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
-117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
-117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
-117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
-117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
-1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
-1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
-1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
-1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
-1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
-1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
-1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
-1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
-1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
-1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
-118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
-118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
-118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
-118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
-118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
-118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
-1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
-1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
-1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
-1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
-1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
-1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
-1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
-1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
-1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
-1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
-119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
-119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
-119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
-119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
-119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
-119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
-11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
-11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
-11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
-11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
-11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
-11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
-11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
-11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
-11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
-11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
-11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
-11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
-11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
-11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
-11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
-11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
-11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
-11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
-11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
-11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
-11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
-11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
-11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
-11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
-11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
-11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
-11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
-11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
-11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
-11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
-11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
-11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
-11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
-11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
-11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
-11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
-11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
-11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
-11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
-11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
-11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
-11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
-11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
-11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
-11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
-11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
-11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
-11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
-11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
-11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
-11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
-11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
-11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
-11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
-11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
-11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
-11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
-11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
-11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
-11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
-11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
-11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
-11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
-11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
-11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
-11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
-11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
-11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
-11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
-11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
-11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
-11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
-11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
-11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
-11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
-11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
-11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
-1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
-1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
-1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
-1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
-1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
-1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
-1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
-1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
-1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
-120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
-120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
-120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
-120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
-120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
-120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
-1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
-1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
-1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
-1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
-1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
-1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
-1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
-1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
-1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
-1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
-121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
-121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
-121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
-121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
-121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
-121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
-1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
-1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
-1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
-1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
-1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
-1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
-1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
-1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
-1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
-1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
-122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
-122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
-122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
-122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
-122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
-122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
-1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
-1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
-1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
-1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
-1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
-1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
-1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
-1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
-1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
-1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
-123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
-123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
-123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
-123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
-123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
-123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
-1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
-1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
-1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
-1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
-1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
-1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
-1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
-1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
-124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
-124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
-124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
-124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
-1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
-1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
-1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
-1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
-1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
-1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
-1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
-1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
-125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
-125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
-125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
-125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
-1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
-1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
-1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
-1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
-1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
-1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
-1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
-1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
-1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
-1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
-126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
-126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
-126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
-126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
-126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
-126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
-1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
-1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
-1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
-1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
-1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
-1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
-1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
-1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
-1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
-1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
-127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
-127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
-127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
-127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
-127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
-127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
-1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
-1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
-1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
-1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
-1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
-1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
-1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
-1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
-128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
-128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
-128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
-128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
-1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
-1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
-1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
-1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
-1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
-1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
-1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
-1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
-1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
-1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
-129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
-129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
-129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
-129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
-129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
-129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
-12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
-12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
-12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
-12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
-12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
-12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
-12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
-12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
-12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
-12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
-12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
-12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
-12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
-12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
-12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
-12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
-12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
-12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
-12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
-12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
-12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
-12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
-12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
-12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
-12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
-12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
-12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
-12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
-12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
-12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
-12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
-12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
-12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
-12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
-12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
-12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
-12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
-12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
-12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
-12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
-12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
-12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
-12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
-12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
-12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
-12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
-12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
-12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
-12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
-12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
-12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
-12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
-12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
-12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
-12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
-12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
-12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
-12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
-12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
-12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
-12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
-12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
-12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
-12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
-12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
-12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
-12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
-12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
-12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
-12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
-12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
-12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
-12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
-12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
-12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
-12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
-12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
-12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
-12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
-12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
-12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
-12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
-12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
-12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
-12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
-1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
-1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
-1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
-1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
-1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
-1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
-1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
-1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
-1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
-1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
-130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
-130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
-130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
-130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
-130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
-1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
-1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
-1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
-1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
-1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
-1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
-1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
-131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
-131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
-131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
-131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
-131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
-1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
-1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
-1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
-1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
-1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
-1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
-1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
-1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
-1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
-1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
-132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
-132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
-132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
-132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
-132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
-132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
-1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
-1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
-1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
-1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
-1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
-1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
-1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
-1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
-1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
-1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
-133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
-133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
-133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
-133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
-133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
-133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
-1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
-1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
-1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
-1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
-1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
-1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
-1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
-1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
-1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
-134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
-134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
-134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
-134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
-134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
-134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
-1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
-1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
-1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
-1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
-1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
-1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
-1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
-1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
-1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
-1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
-135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
-1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
-1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
-1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
-1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
-1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
-1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
-1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
-1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
-1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
-1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
-1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
-1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
-1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
-1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
-1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
-1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
-137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
-137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
-137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
-13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
-13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
-13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
-13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
-13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
-13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
-13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
-13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
-13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
-13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
-13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
-13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
-13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
-13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
-13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
-13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
-13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
-13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
-13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
-13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
-13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
-13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
-13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
-13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
-13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
-13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
-13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
-13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
-13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
-13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
-13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
-13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
-13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
-13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
-13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
-13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
-13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
-13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
-13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
-13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
-13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
-13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
-13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
-13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
-13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
-13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
-13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
-13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
-13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
-13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
-13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
-13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
-13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
-13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
-13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
-13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
-13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
-13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
-13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
-13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
-13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
-13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
-13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
-13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
-13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
-13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
-13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
-13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
-13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
-13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
-13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
-13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
-13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
-13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
-13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
-13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
-13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
-13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
-13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
-13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
-13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
-13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
-13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
-13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
-13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
-1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
-1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
-1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
-1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
-1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
-1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
-1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
-1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
-1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
-140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
-140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
-140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
-140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
-140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
-140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
-1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
-1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
-1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
-1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
-1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
-1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
-1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
-1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
-1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
-1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
-141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
-141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
-141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
-141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
-141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
-141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
-1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
-1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
-1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
-1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
-1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
-1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
-1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
-1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
-1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
-1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
-142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
-142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
-142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
-142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
-142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
-142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
-1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
-1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
-1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
-1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
-1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
-1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
-1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
-1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
-1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
-1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
-143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
-143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
-143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
-143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
-143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
-143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
-1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
-1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
-1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
-1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
-1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
-1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
-1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
-1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
-1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
-1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
-144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
-144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
-144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
-144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
-144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
-144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
-1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
-1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
-1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
-1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
-1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
-1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
-1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
-1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
-1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
-1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
-145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
-145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
-145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
-145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
-145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
-145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
-1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
-1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
-1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
-1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
-1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
-1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
-1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
-1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
-1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
-1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
-146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
-146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
-146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
-146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
-146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
-146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
-1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
-1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
-1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
-1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
-1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
-1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
-1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
-1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
-1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
-1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
-147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
-147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
-147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
-147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
-147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
-147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
-1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
-1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
-1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
-1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
-1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
-1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
-1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
-1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
-1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
-1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
-148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
-148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
-148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
-148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
-148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
-148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
-1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
-1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
-1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
-1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
-1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
-1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
-1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
-1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
-1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
-1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
-149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
-149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
-149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
-149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
-149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
-149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
-14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
-14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
-14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
-14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
-14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
-14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
-14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
-14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
-14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
-14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
-14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
-14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
-14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
-14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
-14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
-14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
-14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
-14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
-14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
-14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
-14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
-14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
-14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
-14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
-14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
-14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
-14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
-14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
-14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
-14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
-14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
-14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
-14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
-14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
-14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
-14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
-14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
-14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
-14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
-14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
-14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
-14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
-14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
-14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
-14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
-14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
-14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
-14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
-14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
-14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
-14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
-14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
-14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
-14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
-14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
-14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
-14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
-14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
-14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
-14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
-14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
-14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
-14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
-14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
-14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
-14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
-14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
-14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
-14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
-14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
-14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
-14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
-14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
-14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
-14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
-14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
-14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
-14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
-14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
-14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
-14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
-14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
-14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
-14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
-14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
-14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
-14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
-14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
-14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
-14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
-14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
-14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
-14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
-14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
-14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
-14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
-1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
-1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
-1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
-1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
-1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
-1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
-1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
-1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
-1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
-1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
-150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
-150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
-150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
-150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
-150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
-150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
-1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
-1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
-1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
-1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
-1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
-1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
-1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
-1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
-1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
-1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
-151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
-151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
-151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
-151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
-151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
-151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
-1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
-1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
-1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
-1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
-1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
-1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
-1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
-1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
-1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
-1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
-152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
-152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
-152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
-152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
-152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
-152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
-1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
-1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
-1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
-1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
-1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
-1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
-1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
-1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
-1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
-1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
-153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
-153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
-153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
-153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
-153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
-153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
-1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
-1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
-1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
-1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
-1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
-1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
-1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
-1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
-1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
-1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
-154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
-154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
-154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
-154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
-154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
-154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
-1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
-1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
-1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
-1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
-1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
-1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
-1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
-1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
-1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
-1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
-155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
-155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
-155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
-155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
-155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
-155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
-1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
-1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
-1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
-1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
-1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
-1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
-1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
-1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
-1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
-1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
-156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
-156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
-156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
-156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
-156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
-156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
-1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
-1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
-1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
-1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
-1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
-1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
-1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
-1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
-1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
-1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
-157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
-157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
-157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
-157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
-157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
-157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
-1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
-1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
-1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
-1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
-1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
-1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
-1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
-1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
-1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
-1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
-158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
-158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
-158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
-158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
-158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
-158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
-1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
-1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
-1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
-1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
-1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
-1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
-1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
-1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
-1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
-1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
-159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
-159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
-159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
-159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
-159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
-159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
-15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
-15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
-15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
-15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
-15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
-15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
-15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
-15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
-15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
-15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
-15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
-15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
-15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
-15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
-15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
-15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
-15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
-15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
-15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
-15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
-15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
-15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
-15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
-15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
-15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
-15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
-15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
-15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
-15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
-15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
-15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
-15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
-15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
-15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
-15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
-15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
-15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
-15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
-15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
-15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
-15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
-15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
-15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
-15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
-15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
-15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
-15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
-15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
-15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
-15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
-15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
-15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
-15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
-15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
-15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
-15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
-15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
-15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
-15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
-15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
-15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
-15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
-15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
-15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
-15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
-15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
-15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
-15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
-15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
-15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
-15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
-15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
-15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
-15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
-15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
-15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
-15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
-15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
-15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
-15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
-15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
-15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
-15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
-15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
-15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
-15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
-15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
-15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
-15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
-15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
-15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
-15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
-15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
-15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
-15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
-15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
-1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
-1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
-1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
-1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
-1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
-1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
-1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
-1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
-1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
-1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
-160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
-160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
-160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
-160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
-160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
-160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
-1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
-1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
-1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
-1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
-1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
-1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
-1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
-1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
-1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
-1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
-161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
-161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
-161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
-161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
-161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
-161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
-1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
-1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
-1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
-1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
-1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
-1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
-1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
-1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
-1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
-1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
-162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
-162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
-162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
-162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
-162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
-162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
-1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
-1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
-1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
-1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
-1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
-1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
-1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
-1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
-1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
-1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
-163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
-163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
-163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
-163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
-163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
-163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
-1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
-1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
-1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
-1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
-1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
-1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
-1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
-1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
-1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
-1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
-164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
-164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
-164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
-164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
-164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
-164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
-1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
-1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
-1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
-1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
-1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
-1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
-1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
-1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
-1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
-1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
-165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
-165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
-165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
-165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
-165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
-165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
-1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
-1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
-1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
-1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
-1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
-1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
-1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
-1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
-1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
-1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
-166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
-166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
-166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
-166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
-166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
-166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
-1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
-1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
-1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
-1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
-1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
-1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
-1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
-1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
-1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
-1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
-1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
-1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
-1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
-1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
-1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
-1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
-1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
-168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
-168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
-168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
-168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
-168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
-168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
-1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
-1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
-1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
-1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
-1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
-1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
-1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
-1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
-1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
-1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
-169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
-169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
-169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
-16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
-16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
-16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
-16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
-16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
-16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
-16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
-16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
-16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
-16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
-16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
-16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
-16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
-16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
-16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
-16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
-16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
-16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
-16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
-16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
-16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
-16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
-16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
-16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
-16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
-16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
-16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
-16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
-16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
-16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
-16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
-16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
-16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
-16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
-16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
-16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
-16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
-16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
-16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
-16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
-16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
-16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
-16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
-16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
-16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
-16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
-16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
-16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
-16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
-16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
-16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
-16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
-16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
-16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
-16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
-16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
-16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
-16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
-16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
-16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
-16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
-16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
-16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
-16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
-16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
-16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
-16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
-16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
-16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
-16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
-16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
-16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
-16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
-16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
-16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
-16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
-16EE;RUNIC ARLAUG SYMBOL;No;0;L;;;;17;N;;golden number 17;;;
-16EF;RUNIC TVIMADUR SYMBOL;No;0;L;;;;18;N;;golden number 18;;;
-16F0;RUNIC BELGTHOR SYMBOL;No;0;L;;;;19;N;;golden number 19;;;
-1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
-1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
-1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
-1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
-1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
-1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
-1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
-1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
-1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
-1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
-178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
-178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
-178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
-178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
-178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
-178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
-1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
-1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
-1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
-1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
-1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
-1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
-1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
-1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
-1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
-1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
-179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
-179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
-179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
-179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
-179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
-179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
-17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
-17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
-17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
-17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;
-17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;
-17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
-17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
-17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
-17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
-17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
-17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
-17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
-17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
-17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
-17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
-17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
-17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
-17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
-17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
-17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
-17B4;KHMER VOWEL INHERENT AQ;Mc;0;L;;;;;N;;;;;
-17B5;KHMER VOWEL INHERENT AA;Mc;0;L;;;;;N;;;;;
-17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
-17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
-17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
-17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
-17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
-17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
-17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
-17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
-17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
-17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
-17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
-17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
-17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
-17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
-17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
-17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
-17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
-17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
-17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
-17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
-17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;
-17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
-17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
-17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
-17D7;KHMER SIGN LEK TOO;Po;0;L;;;;;N;;;;;
-17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;
-17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
-17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
-17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
-17DC;KHMER SIGN AVAKRAHASANYA;Po;0;L;;;;;N;;;;;
-17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
-1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
-1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
-1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
-1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
-1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
-1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
-1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
-1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
-1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
-180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
-180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Cf;0;BN;;;;;N;;;;;
-180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Cf;0;BN;;;;;N;;;;;
-180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Cf;0;BN;;;;;N;;;;;
-180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
-1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
-1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
-1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
-1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
-1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
-1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
-1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
-1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
-1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
-1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
-182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
-182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
-182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
-182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
-182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
-182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
-1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
-1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
-1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
-1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
-1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
-1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
-1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
-1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
-1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
-1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
-183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
-183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
-183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
-183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
-183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
-183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
-1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
-1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
-1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
-1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
-1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
-1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
-1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
-1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
-1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
-1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
-184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
-184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
-184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
-184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
-184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
-184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
-1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
-1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
-1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
-1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
-1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
-1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
-1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
-1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
-1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
-1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
-185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
-185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
-185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
-185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
-185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
-185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
-1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
-1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
-1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
-1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
-1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
-1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
-1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
-1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
-1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
-1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
-186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
-186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
-186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
-186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
-186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
-186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
-1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
-1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
-1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
-1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
-1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
-1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
-1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
-1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
-1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
-1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
-1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
-1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
-1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
-1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
-1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
-1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
-1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
-1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
-188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
-188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
-188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
-188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
-188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
-188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
-1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
-1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
-1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
-1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
-1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
-1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
-1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
-1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
-1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
-1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
-189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
-189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
-189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
-189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
-189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
-189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
-18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
-18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
-18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
-18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
-18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
-18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
-18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
-18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
-18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
-18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
-1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
-1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
-1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
-1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
-1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
-1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
-1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
-1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
-1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
-1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
-1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
-1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
-1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
-1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
-1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
-1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
-1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
-1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
-1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
-1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
-1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
-1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
-1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
-1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
-1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
-1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
-1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
-1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
-1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
-1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
-1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
-1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
-1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
-1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
-1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
-1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
-1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
-1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
-1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
-1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
-1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
-1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
-1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
-1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
-1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
-1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
-1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
-1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
-1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
-1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
-1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
-1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
-1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
-1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
-1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
-1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
-1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
-1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
-1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
-1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
-1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
-1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
-1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
-1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
-1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
-1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
-1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
-1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
-1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
-1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
-1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
-1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
-1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
-1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
-1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
-1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
-1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
-1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
-1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
-1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
-1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
-1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
-1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
-1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
-1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
-1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
-1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
-1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
-1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
-1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
-1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
-1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
-1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
-1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
-1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
-1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
-1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
-1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
-1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
-1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
-1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
-1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
-1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
-1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
-1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
-1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
-1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
-1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
-1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
-1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
-1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
-1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
-1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
-1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
-1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
-1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
-1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
-1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
-1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
-1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
-1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
-1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
-1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
-1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
-1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
-1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
-1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
-1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
-1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
-1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
-1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
-1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
-1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
-1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
-1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
-1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
-1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
-1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
-1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
-1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
-1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
-1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
-1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
-1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
-1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
-1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
-1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
-1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
-1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
-1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
-1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
-1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
-1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
-1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
-1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
-1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
-1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
-1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
-1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
-1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
-1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
-1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
-1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
-1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
-1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
-1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
-1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
-1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
-1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
-1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
-1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
-1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
-1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
-1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
-1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
-1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
-1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
-1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
-1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
-1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
-1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
-1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
-1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
-1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
-1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
-1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
-1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
-1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
-1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
-1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
-1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
-1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
-1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
-1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
-1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
-1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
-1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
-1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
-1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
-1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
-1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
-1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
-1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
-1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
-1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
-1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
-1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
-1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
-1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
-1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
-1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
-1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
-1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
-1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
-1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
-1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
-1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
-1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
-1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
-1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
-1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
-1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
-1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
-1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
-1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
-1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
-1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
-1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
-1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
-1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
-1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
-1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
-1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
-1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
-1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
-1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
-1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
-1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
-1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
-1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
-1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
-1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
-1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
-1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
-1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
-1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
-1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
-1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
-1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
-1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
-1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
-1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
-1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
-1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
-1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
-1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
-1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
-1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
-1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
-1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
-1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
-1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
-1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
-1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
-1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
-1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
-1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
-1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
-1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
-1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
-1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
-1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
-1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
-1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
-1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
-1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
-1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
-1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
-1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
-1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
-1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
-1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
-1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
-1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
-1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
-1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
-1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
-1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
-1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
-1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
-1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
-1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
-1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
-1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
-1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
-1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
-1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
-1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
-1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
-1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
-1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
-1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
-1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
-1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
-1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
-1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
-1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
-1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
-1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
-1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
-1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
-1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
-1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
-1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
-1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
-1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
-1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
-1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
-1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
-1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
-1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
-1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
-1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
-1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
-1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
-1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
-1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
-1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
-1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
-1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
-1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
-1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
-1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
-1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
-1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
-1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
-1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
-1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
-1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
-1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
-1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
-1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
-1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
-1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
-1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
-1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
-1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
-1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
-1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
-1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
-1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
-1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
-1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
-1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
-1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
-1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
-1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
-1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
-1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
-1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
-1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
-1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
-1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
-1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
-1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
-1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
-1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
-1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
-1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
-1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
-1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
-1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
-1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
-1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
-1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
-1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
-1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
-1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
-1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
-1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
-1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
-1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
-1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
-1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
-1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
-1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
-1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
-1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
-1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
-1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
-1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
-1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
-1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
-1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
-1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
-1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
-1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
-1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
-1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
-1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
-1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
-1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
-1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
-1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
-1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
-1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
-1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
-1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
-1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
-1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
-1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
-1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
-1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
-1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
-1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
-1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
-1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
-1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
-1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
-1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
-1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
-1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
-1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
-1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
-1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
-1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
-1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
-1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
-1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
-1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
-1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
-1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
-1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
-1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
-1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
-1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
-1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
-1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
-1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
-1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
-1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
-1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
-1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
-1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
-1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
-1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
-1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
-1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
-1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
-1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
-1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
-1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
-1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
-1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
-1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
-1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
-1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
-1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
-1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
-1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
-1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
-1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
-1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
-1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
-1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
-1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
-1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
-1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
-1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
-1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
-1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
-1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
-1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
-1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
-1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
-1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
-1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
-1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
-1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
-2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
-2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
-2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
-2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;;
-200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
-200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
-200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
-200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
-2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
-2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
-2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
-2013;EN DASH;Pd;0;ON;;;;;N;;;;;
-2014;EM DASH;Pd;0;ON;;;;;N;;;;;
-2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
-2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
-2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
-2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
-2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
-201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
-201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
-201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
-201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
-201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
-201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
-2020;DAGGER;Po;0;ON;;;;;N;;;;;
-2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
-2022;BULLET;Po;0;ON;;;;;N;;;;;
-2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
-2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
-2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
-2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
-2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
-2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
-2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
-202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
-202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
-202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
-202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
-202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
-202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
-2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
-2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
-2032;PRIME;Po;0;ET;;;;;N;;;;;
-2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
-2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
-2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
-2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
-2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
-2038;CARET;Po;0;ON;;;;;N;;;;;
-2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
-203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
-203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
-203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
-203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
-203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
-203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
-2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
-2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
-2042;ASTERISM;Po;0;ON;;;;;N;;;;;
-2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
-2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
-2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
-2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
-2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
-2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
-204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
-204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
-204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
-204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
-206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
-206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
-206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
-206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
-206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
-206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
-2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
-2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
-2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
-2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
-2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
-2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
-2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
-207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
-207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
-207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
-207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
-207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
-207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
-2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
-2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
-2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
-2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
-2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
-2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
-2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
-2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
-2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
-2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
-208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
-208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
-208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
-208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
-208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
-20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
-20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
-20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
-20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
-20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
-20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
-20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
-20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
-20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
-20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
-20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
-20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
-20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
-20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
-20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
-20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
-20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
-20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
-20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
-20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
-20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
-20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
-20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
-20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
-20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
-20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
-20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
-20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
-20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
-20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
-20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
-20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
-20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
-20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
-20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
-20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
-2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
-2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
-2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
-2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
-2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
-2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
-2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
-2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
-2108;SCRUPLE;So;0;ON;;;;;N;;;;;
-2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
-210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
-210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
-210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
-210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
-210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
-2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
-2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
-2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
-2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
-2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
-2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
-2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
-2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
-2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
-211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
-211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
-211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
-211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
-211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
-211F;RESPONSE;So;0;ON;;;;;N;;;;;
-2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
-2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
-2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
-2123;VERSICLE;So;0;ON;;;;;N;;;;;
-2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
-2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
-2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
-2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
-2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
-2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
-212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
-212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
-212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
-212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
-212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
-212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
-2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
-2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
-2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
-2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
-2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
-2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
-2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
-2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
-213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
-2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
-2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
-2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
-2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
-2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
-2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
-2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
-215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
-215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
-215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
-215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
-215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
-215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
-2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
-2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
-2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
-2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
-2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
-2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
-2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
-2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
-2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
-2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
-216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
-216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
-216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
-216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
-216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
-216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
-2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
-2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
-2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
-2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
-2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
-2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
-2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
-2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
-2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
-2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
-217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
-217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
-217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
-217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
-217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
-217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
-2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
-2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
-2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
-2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;;
-2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
-2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
-2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
-2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
-2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
-2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
-2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
-2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
-2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
-2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
-219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
-219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
-219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
-219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
-219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
-219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
-21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
-21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
-21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
-21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
-21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
-21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
-21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
-21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
-21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
-21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
-21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
-21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
-21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
-21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
-21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
-21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
-21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
-21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
-21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
-21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
-21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
-21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
-21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
-21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
-21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
-21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
-21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
-21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
-21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
-21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
-21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
-21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
-21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
-21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
-21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
-21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
-21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
-21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
-21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
-21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
-21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
-21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
-21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
-21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
-21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
-21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
-21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
-21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
-21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
-21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
-21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
-21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
-21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
-21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
-21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
-21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
-21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
-21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
-21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
-21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
-21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
-21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
-21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
-21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
-21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
-21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
-21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
-21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
-21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
-21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
-21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
-21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
-21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
-21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
-21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
-21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
-21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
-21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
-21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
-21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
-2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
-2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
-2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
-2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
-2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
-2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
-2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
-2207;NABLA;Sm;0;ON;;;;;N;;;;;
-2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
-2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
-220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
-220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
-220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
-220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
-220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
-220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
-2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
-2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
-2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
-2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
-2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
-2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
-2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
-2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
-2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
-2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
-221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
-221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
-221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
-221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
-221E;INFINITY;Sm;0;ON;;;;;N;;;;;
-221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
-2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
-2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
-2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
-2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
-2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
-2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
-2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
-2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
-222A;UNION;Sm;0;ON;;;;;N;;;;;
-222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
-222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
-222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
-2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
-2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
-2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
-2236;RATIO;Sm;0;ON;;;;;N;;;;;
-2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
-2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
-2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
-223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
-223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
-223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
-223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
-223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
-2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
-2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
-2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
-2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
-2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
-2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
-224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
-224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
-2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
-2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
-2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
-2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
-2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
-225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
-225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
-225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
-225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
-225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
-225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
-2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
-2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
-2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
-2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
-2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
-2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
-2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
-2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
-226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
-226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
-226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
-226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
-226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
-226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
-2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
-2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
-2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
-2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
-2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
-2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
-2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
-2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
-2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
-2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
-227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
-227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
-227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
-2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
-2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
-2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
-2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
-2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
-2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
-2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
-228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
-228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
-228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
-228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
-228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
-228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
-2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
-2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
-2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
-2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
-2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
-2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
-2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
-229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
-229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
-229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
-229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
-229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
-22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
-22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
-22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
-22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
-22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
-22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
-22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
-22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
-22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
-22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
-22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
-22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
-22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
-22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
-22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
-22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
-22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
-22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
-22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
-22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
-22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
-22BB;XOR;Sm;0;ON;;;;;N;;;;;
-22BC;NAND;Sm;0;ON;;;;;N;;;;;
-22BD;NOR;Sm;0;ON;;;;;N;;;;;
-22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
-22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
-22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
-22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
-22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
-22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
-22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
-22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
-22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
-22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
-22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
-22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
-22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
-22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
-22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
-22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
-22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
-22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
-22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
-22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
-22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
-22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
-22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
-22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
-22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
-22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
-22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
-22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
-22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
-22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
-22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
-22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
-22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
-22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
-22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
-22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
-22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
-2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
-2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
-2302;HOUSE;So;0;ON;;;;;N;;;;;
-2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
-2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
-2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
-2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
-2307;WAVY LINE;So;0;ON;;;;;N;;;;;
-2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
-2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
-230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
-230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
-230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
-230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
-230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
-230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
-2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
-2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
-2312;ARC;So;0;ON;;;;;N;;;;;
-2313;SEGMENT;So;0;ON;;;;;N;;;;;
-2314;SECTOR;So;0;ON;;;;;N;;;;;
-2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
-2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
-2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
-2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
-2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
-231A;WATCH;So;0;ON;;;;;N;;;;;
-231B;HOURGLASS;So;0;ON;;;;;N;;;;;
-231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
-231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
-231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
-231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
-2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2322;FROWN;So;0;ON;;;;;N;;;;;
-2323;SMILE;So;0;ON;;;;;N;;;;;
-2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
-2325;OPTION KEY;So;0;ON;;;;;N;;;;;
-2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
-2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
-2328;KEYBOARD;So;0;ON;;;;;N;;;;;
-2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
-232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
-232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
-232C;BENZENE RING;So;0;ON;;;;;N;;;;;
-232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
-232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
-232F;SYMMETRY;So;0;ON;;;;;N;;;;;
-2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
-2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
-2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
-2333;SLOPE;So;0;ON;;;;;N;;;;;
-2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
-2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
-2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
-2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
-2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
-2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
-233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
-233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
-233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
-233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
-233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
-233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
-2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
-2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
-2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
-2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
-2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
-2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
-2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
-2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
-2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
-2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
-234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
-234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
-234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
-234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
-234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
-234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
-2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
-2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
-2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
-2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
-2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
-2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
-2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
-2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
-2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
-2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
-235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
-235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
-235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
-235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
-235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
-235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
-2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
-2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
-2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
-2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
-2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
-2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
-2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
-2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
-2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
-2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
-236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
-236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
-236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
-236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
-236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
-236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
-2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
-2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
-2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
-2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
-2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
-2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
-2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
-2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
-2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
-2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
-237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
-237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
-237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
-237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
-237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
-2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
-2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
-2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
-2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
-2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
-2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
-2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
-2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
-2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
-2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
-238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
-238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
-238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
-238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
-238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
-238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
-2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
-2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
-2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
-2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
-2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
-2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
-2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
-2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
-2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
-2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
-239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
-2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
-2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
-2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
-2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
-2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
-2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
-2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
-2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
-2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
-2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
-240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
-240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
-240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
-240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
-240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
-240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
-2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
-2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
-2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
-2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
-2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
-2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
-2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
-2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
-2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
-2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
-241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
-241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
-241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
-241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
-241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
-241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
-2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
-2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
-2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
-2423;OPEN BOX;So;0;ON;;;;;N;;;;;
-2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
-2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
-2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
-2440;OCR HOOK;So;0;ON;;;;;N;;;;;
-2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
-2442;OCR FORK;So;0;ON;;;;;N;;;;;
-2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
-2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
-2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
-2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
-2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
-2448;OCR DASH;So;0;ON;;;;;N;;;;;
-2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
-244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
-2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
-2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
-2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
-2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
-2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
-2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
-2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
-2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
-2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
-2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
-246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
-246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
-246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
-246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
-246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
-246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
-2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
-2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
-2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
-2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
-2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
-2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
-2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
-2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
-2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
-2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
-247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
-247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
-247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
-247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
-247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
-247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
-2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
-2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
-2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
-2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
-2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
-2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
-2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
-2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
-2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
-2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
-248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
-248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
-248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
-248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
-248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
-248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
-2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
-2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
-2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
-2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
-2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
-2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
-2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
-2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
-2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
-2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
-249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
-249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
-249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
-249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
-249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
-249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
-24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
-24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
-24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
-24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
-24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
-24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
-24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
-24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
-24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
-24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
-24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
-24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
-24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
-24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
-24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
-24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
-24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
-24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
-24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
-24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
-24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
-24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
-24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
-24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
-24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
-24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
-24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
-24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
-24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
-24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
-24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
-24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
-24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
-24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
-24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
-24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
-24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
-24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
-24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
-24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
-24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
-24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
-24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
-24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
-24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
-24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
-24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
-24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
-24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
-24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
-24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
-24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
-24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
-24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
-24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
-24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
-24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
-24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
-24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
-24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
-24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
-24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
-24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
-24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
-24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
-24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
-24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
-24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
-24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
-24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
-24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
-24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
-24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
-24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
-24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
-2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
-2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
-2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
-2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
-2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
-2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
-2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
-2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
-2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
-2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
-250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
-250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
-250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
-250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
-250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
-250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
-2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
-2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
-2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
-2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
-2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
-2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
-2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
-2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
-2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
-2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
-251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
-251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
-251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
-251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
-251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
-251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
-2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
-2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
-2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
-2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
-2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
-2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
-2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
-2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
-2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
-2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
-252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
-252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
-252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
-252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
-252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
-252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
-2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
-2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
-2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
-2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
-2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
-2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
-2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
-2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
-2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
-2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
-253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
-253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
-253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
-253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
-253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
-253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
-2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
-2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
-2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
-2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
-2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
-2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
-2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
-2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
-2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
-2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
-254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
-254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
-254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
-254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
-254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
-254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
-2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
-2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
-2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
-2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
-2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
-2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
-2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
-2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
-2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
-2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
-255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
-255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
-255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
-255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
-255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
-255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
-2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
-2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
-2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
-2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
-2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
-2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
-2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
-2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
-2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
-2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
-256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
-256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
-256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
-256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
-256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
-256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
-2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
-2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
-2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
-2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
-2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
-2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
-2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
-2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
-2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
-2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
-257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
-257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
-257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
-257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
-257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
-257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
-2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
-2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
-2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
-2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
-2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
-2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
-258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
-258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
-258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
-2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
-2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
-2593;DARK SHADE;So;0;ON;;;;;N;;;;;
-2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
-25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
-25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
-25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
-25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
-25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
-25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
-25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
-25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
-25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
-25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
-25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
-25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
-25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
-25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
-25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
-25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
-25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
-25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
-25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
-25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
-25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
-25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
-25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
-25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
-25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
-25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
-25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
-25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
-25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
-25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
-25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
-25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
-25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
-25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
-25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
-25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
-25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
-25C9;FISHEYE;So;0;ON;;;;;N;;;;;
-25CA;LOZENGE;So;0;ON;;;;;N;;;;;
-25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
-25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
-25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
-25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
-25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
-25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
-25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
-25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
-25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
-25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
-25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
-25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
-25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
-25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
-25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
-25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
-25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
-25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
-25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
-25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
-25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
-25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
-25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
-2601;CLOUD;So;0;ON;;;;;N;;;;;
-2602;UMBRELLA;So;0;ON;;;;;N;;;;;
-2603;SNOWMAN;So;0;ON;;;;;N;;;;;
-2604;COMET;So;0;ON;;;;;N;;;;;
-2605;BLACK STAR;So;0;ON;;;;;N;;;;;
-2606;WHITE STAR;So;0;ON;;;;;N;;;;;
-2607;LIGHTNING;So;0;ON;;;;;N;;;;;
-2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
-2609;SUN;So;0;ON;;;;;N;;;;;
-260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
-260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
-260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
-260D;OPPOSITION;So;0;ON;;;;;N;;;;;
-260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
-260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
-2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
-2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
-2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
-2613;SALTIRE;So;0;ON;;;;;N;;;;;
-2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
-261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
-261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
-2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
-2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
-2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
-2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
-2624;CADUCEUS;So;0;ON;;;;;N;;;;;
-2625;ANKH;So;0;ON;;;;;N;;;;;
-2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
-2627;CHI RHO;So;0;ON;;;;;N;;;;;
-2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
-2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
-262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
-262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
-262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
-262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
-262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
-262F;YIN YANG;So;0;ON;;;;;N;;;;;
-2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
-2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
-2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
-2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
-2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
-2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
-2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
-2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
-2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
-2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
-263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
-263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
-263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
-263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
-263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
-263F;MERCURY;So;0;ON;;;;;N;;;;;
-2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
-2641;EARTH;So;0;ON;;;;;N;;;;;
-2642;MALE SIGN;So;0;ON;;;;;N;;;;;
-2643;JUPITER;So;0;ON;;;;;N;;;;;
-2644;SATURN;So;0;ON;;;;;N;;;;;
-2645;URANUS;So;0;ON;;;;;N;;;;;
-2646;NEPTUNE;So;0;ON;;;;;N;;;;;
-2647;PLUTO;So;0;ON;;;;;N;;;;;
-2648;ARIES;So;0;ON;;;;;N;;;;;
-2649;TAURUS;So;0;ON;;;;;N;;;;;
-264A;GEMINI;So;0;ON;;;;;N;;;;;
-264B;CANCER;So;0;ON;;;;;N;;;;;
-264C;LEO;So;0;ON;;;;;N;;;;;
-264D;VIRGO;So;0;ON;;;;;N;;;;;
-264E;LIBRA;So;0;ON;;;;;N;;;;;
-264F;SCORPIUS;So;0;ON;;;;;N;;;;;
-2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
-2651;CAPRICORN;So;0;ON;;;;;N;;;;;
-2652;AQUARIUS;So;0;ON;;;;;N;;;;;
-2653;PISCES;So;0;ON;;;;;N;;;;;
-2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
-2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
-2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
-2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
-2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
-2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
-265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
-265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
-265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
-265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
-265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
-265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
-2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
-2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
-2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
-2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
-2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
-2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
-2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
-2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
-2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
-2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
-266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
-266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
-266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
-266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
-266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
-266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
-2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
-2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
-2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
-2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
-2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
-2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
-2708;AIRPLANE;So;0;ON;;;;;N;;;;;
-2709;ENVELOPE;So;0;ON;;;;;N;;;;;
-270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
-270D;WRITING HAND;So;0;ON;;;;;N;;;;;
-270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-270F;PENCIL;So;0;ON;;;;;N;;;;;
-2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-2711;WHITE NIB;So;0;ON;;;;;N;;;;;
-2712;BLACK NIB;So;0;ON;;;;;N;;;;;
-2713;CHECK MARK;So;0;ON;;;;;N;;;;;
-2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
-2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-2717;BALLOT X;So;0;ON;;;;;N;;;;;
-2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
-2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
-271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
-271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
-271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
-271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
-271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
-271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
-2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
-2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
-2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
-272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
-272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
-272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
-272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
-2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
-2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
-2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
-273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
-273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
-2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
-2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2747;SPARKLE;So;0;ON;;;;;N;;;;;
-2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
-2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
-2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
-2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
-275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
-275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
-2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
-2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
-2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
-2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
-2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
-2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
-2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
-2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
-277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
-277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
-277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
-277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
-277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
-277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
-2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
-2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
-2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
-2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
-2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
-2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
-2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
-2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
-2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
-2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
-278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
-278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
-278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
-278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
-278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
-278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
-2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
-2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
-2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
-2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
-2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
-2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
-2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
-279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
-279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
-279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
-279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
-279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
-279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
-27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
-27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
-27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
-27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
-27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
-27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
-27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
-27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
-27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
-27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
-27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
-27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
-27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
-27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
-27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
-27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
-27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
-27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
-27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
-27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
-27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
-27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
-27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
-27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
-27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
-27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
-2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
-2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
-2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
-2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
-2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
-2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
-2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
-2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
-2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
-2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
-280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
-280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
-280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
-280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
-280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
-280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
-2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
-2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
-2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
-2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
-2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
-2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
-2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
-2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
-2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
-2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
-281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
-281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
-281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
-281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
-281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
-281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
-2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
-2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
-2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
-2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
-2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
-2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
-2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
-2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
-2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
-2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
-282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
-282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
-282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
-282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
-282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
-282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
-2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
-2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
-2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
-2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
-2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
-2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
-2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
-2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
-2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
-2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
-283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
-283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
-283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
-283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
-283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
-283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
-2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
-2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
-2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
-2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
-2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
-2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
-2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
-2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
-2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
-2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
-284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
-284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
-284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
-284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
-284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
-284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
-2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
-2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
-2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
-2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
-2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
-2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
-2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
-2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
-2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
-2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
-285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
-285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
-285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
-285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
-285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
-285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
-2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
-2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
-2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
-2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
-2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
-2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
-2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
-2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
-2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
-2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
-286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
-286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
-286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
-286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
-286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
-286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
-2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
-2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
-2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
-2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
-2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
-2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
-2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
-2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
-2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
-2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
-287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
-287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
-287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
-287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
-287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
-287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
-2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
-2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
-2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
-2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
-2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
-2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
-2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
-2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
-2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
-2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
-288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
-288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
-288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
-288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
-288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
-288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
-2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
-2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
-2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
-2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
-2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
-2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
-2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
-2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
-2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
-2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
-289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
-289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
-289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
-289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
-289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
-289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
-28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
-28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
-28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
-28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
-28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
-28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
-28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
-28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
-28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
-28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
-28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
-28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
-28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
-28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
-28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
-28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
-28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
-28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
-28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
-28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
-28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
-28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
-28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
-28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
-28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
-28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
-28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
-28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
-28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
-28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
-28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
-28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
-28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
-28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
-28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
-28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
-28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
-28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
-28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
-28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
-28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
-28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
-28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
-28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
-28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
-28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
-28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
-28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
-28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
-28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
-28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
-28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
-28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
-28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
-28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
-28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
-28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
-28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
-28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
-28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
-28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
-28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
-28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
-28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
-28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
-28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
-28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
-28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
-28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
-28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
-28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
-28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
-28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
-28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
-28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
-28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
-28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
-28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
-28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
-28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
-28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
-28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
-28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
-28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
-28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
-28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
-28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
-28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
-28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
-28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
-28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
-28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
-28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
-28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
-28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
-28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
-2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
-2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
-2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
-2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
-2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
-2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
-2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
-2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
-2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
-2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
-2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
-2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
-2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
-2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
-2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
-2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
-2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
-2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
-2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
-2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
-2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
-2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
-2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
-2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
-2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
-2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
-2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
-2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
-2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
-2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
-2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
-2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
-2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
-2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
-2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
-2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
-2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
-2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
-2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
-2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
-2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
-2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
-2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
-2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
-2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
-2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
-2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
-2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
-2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
-2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
-2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
-2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
-2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
-2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
-2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
-2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
-2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
-2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
-2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
-2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
-2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
-2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
-2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
-2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
-2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
-2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
-2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
-2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
-2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
-2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
-2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
-2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
-2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
-2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
-2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
-2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
-2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
-2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
-2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
-2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
-2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
-2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
-2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
-2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
-2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
-2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
-2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
-2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
-2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
-2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
-2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
-2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
-2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
-2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
-2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
-2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
-2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
-2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
-2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
-2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
-2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
-2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
-2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
-2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
-2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
-2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
-2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
-2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
-2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
-2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
-2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
-2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
-2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
-2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
-2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
-2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
-2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
-2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
-2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
-2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
-2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
-2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
-2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
-2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
-2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
-2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
-2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
-2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
-2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
-2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
-2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
-2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
-2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
-2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
-2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
-2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
-2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
-2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
-2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
-2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
-2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
-2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
-2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
-2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
-2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
-2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
-2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
-2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
-2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
-2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
-2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
-2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
-2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
-2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
-2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
-2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
-2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
-2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
-2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
-2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
-2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
-2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
-2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
-2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
-2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
-2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
-2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
-2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
-2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
-2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
-2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
-2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
-2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
-2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
-2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
-2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
-2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
-2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
-2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
-2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
-2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
-2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
-2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
-2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
-2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
-2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
-2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
-2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
-2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
-2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
-2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
-2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
-2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
-2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
-2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
-2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
-2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
-2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
-2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
-2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
-2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
-2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
-2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
-2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
-2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
-2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
-2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
-2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
-2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
-2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
-2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
-2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
-2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
-2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
-2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
-2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
-2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
-2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
-2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
-2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
-2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
-2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
-2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
-2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
-2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
-2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
-2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
-2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
-2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
-2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
-2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
-2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
-2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
-2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
-2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
-2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
-2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
-2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
-2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
-2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
-2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
-2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
-2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
-2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
-2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
-2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
-2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
-2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
-2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
-2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
-2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
-2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
-2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
-2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
-2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
-2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
-2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
-2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
-2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
-2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
-2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
-2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
-2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
-2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
-2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
-2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
-2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
-2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
-2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
-2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
-2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
-2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
-2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
-2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
-2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
-2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
-2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
-2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
-2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
-2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
-2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
-2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
-2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
-2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
-2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
-2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
-2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
-2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
-2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
-2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
-2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
-2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
-2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
-2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
-2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
-2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
-2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
-2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
-2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
-2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
-2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
-2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
-2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
-2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
-2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
-2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
-2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
-2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
-2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
-2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
-2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
-2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
-2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
-2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
-2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
-2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
-2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
-2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
-2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
-2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
-2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
-2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
-2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
-2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
-2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
-2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
-2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
-2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
-2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
-2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
-2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
-2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
-2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
-2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
-2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
-2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
-2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
-2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
-2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
-2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
-2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
-3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
-3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
-3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
-3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
-3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
-3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
-3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
-3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
-3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
-3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
-300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
-300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
-300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
-300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
-300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
-300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
-3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
-3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
-3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
-3013;GETA MARK;So;0;ON;;;;;N;;;;;
-3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
-3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
-3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
-3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
-3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
-3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
-301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
-301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
-301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
-301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
-301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
-301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
-3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
-3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
-3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
-3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
-3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
-3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
-3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
-3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
-3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
-3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
-302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
-302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
-302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
-302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
-302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
-302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
-3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
-3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
-3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
-3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
-3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
-3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
-3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
-3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
-3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
-3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
-303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
-303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
-303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
-3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
-3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
-3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
-3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
-3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
-3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
-3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
-3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
-3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
-304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
-304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
-304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
-304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
-304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
-304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
-3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
-3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
-3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
-3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
-3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
-3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
-3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
-3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
-3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
-3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
-305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
-305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
-305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
-305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
-305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
-305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
-3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
-3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
-3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
-3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
-3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
-3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
-3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
-3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
-3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
-3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
-306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
-306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
-306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
-306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
-306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
-306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
-3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
-3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
-3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
-3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
-3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
-3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
-3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
-3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
-3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
-3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
-307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
-307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
-307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
-307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
-307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
-307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
-3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
-3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
-3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
-3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
-3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
-3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
-3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
-3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
-3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
-3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
-308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
-308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
-308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
-308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
-308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
-308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
-3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
-3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
-3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
-3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
-3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
-3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
-309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
-309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
-309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
-309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
-309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
-30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
-30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
-30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
-30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
-30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
-30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
-30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
-30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
-30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
-30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
-30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
-30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
-30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
-30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
-30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
-30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
-30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
-30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
-30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
-30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
-30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
-30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
-30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
-30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
-30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
-30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
-30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
-30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
-30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
-30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
-30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
-30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
-30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
-30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
-30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
-30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
-30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
-30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
-30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
-30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
-30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
-30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
-30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
-30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
-30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
-30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
-30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
-30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
-30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
-30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
-30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
-30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
-30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
-30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
-30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
-30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
-30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
-30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
-30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
-30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
-30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
-30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
-30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
-30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
-30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
-30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
-30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
-30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
-30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
-30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
-30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
-30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
-30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
-30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
-30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
-30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
-30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
-30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
-30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
-30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
-30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
-30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
-30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
-30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
-30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
-30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
-30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
-30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
-30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
-30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
-30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;;
-30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
-30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
-30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
-3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
-3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
-3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
-3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
-3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
-310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
-310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
-310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
-310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
-310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
-310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
-3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
-3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
-3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
-3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
-3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
-3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
-3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
-3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
-3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
-3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
-311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
-311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
-311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
-311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
-311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
-311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
-3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
-3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
-3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
-3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
-3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
-3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
-3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
-3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
-3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
-3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
-312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
-312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
-312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
-3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
-3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
-3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
-3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
-3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
-3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
-3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
-3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
-3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
-313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
-313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
-313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
-313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
-313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
-313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
-3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
-3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
-3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
-3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
-3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
-3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
-3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
-3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
-3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
-3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
-314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
-314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
-314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
-314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
-314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
-314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
-3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
-3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
-3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
-3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
-3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
-3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
-3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
-3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
-3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
-3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
-315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
-315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
-315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
-315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
-315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
-315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
-3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
-3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
-3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
-3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
-3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
-3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
-3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
-3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
-3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
-3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
-316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
-316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
-316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
-316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
-316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
-316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
-3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
-3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
-3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
-3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
-3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
-3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
-3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
-3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
-3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
-3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
-317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
-317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
-317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
-317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
-317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
-317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
-3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
-3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
-3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
-3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
-3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
-3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
-3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
-3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
-3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
-3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
-318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
-318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
-318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
-318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
-318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
-3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
-3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
-3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;;
-3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;;
-3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;;
-3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;;
-3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
-3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
-3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
-3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
-319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
-319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
-319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
-319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
-319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
-319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
-31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
-31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
-31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
-31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
-31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
-31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
-31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
-31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
-31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
-31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
-31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
-31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
-31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
-31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
-31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
-31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
-31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
-31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
-31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
-31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
-31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
-31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
-31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
-31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
-3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
-3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
-3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
-3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
-3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
-3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
-3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
-3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
-3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
-3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
-320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
-320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
-320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
-320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
-320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
-320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
-3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
-3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
-3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
-3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
-3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
-3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
-3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
-3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
-3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
-3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
-321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
-321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
-321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
-3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
-3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
-3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
-3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
-3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
-3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
-3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
-3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
-3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
-3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
-322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
-322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
-322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
-322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
-322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
-322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
-3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
-3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
-3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
-3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
-3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
-3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
-3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
-3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
-3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
-3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
-323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
-323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
-323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
-323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
-323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
-323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
-3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
-3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
-3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
-3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
-3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
-3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
-3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
-3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
-3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
-3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
-3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
-3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
-3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
-3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
-326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
-326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
-326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
-326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
-326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
-326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
-3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
-3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
-3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
-3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
-3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
-3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
-3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
-3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
-3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
-3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
-327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
-327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
-327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
-3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
-3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
-3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
-3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
-3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
-3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
-3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
-3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
-3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
-3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
-328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
-328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
-328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
-328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
-328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
-328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
-3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
-3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
-3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
-3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
-3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
-3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
-3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
-3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
-3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
-3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
-329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
-329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
-329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
-329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
-329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
-329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
-32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
-32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
-32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
-32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
-32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
-32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
-32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
-32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
-32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
-32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
-32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
-32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
-32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
-32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
-32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
-32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
-32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
-32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
-32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
-32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
-32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
-32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
-32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
-32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
-32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
-32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
-32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
-32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
-32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
-32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
-32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
-32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
-32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
-32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
-32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
-32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
-32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
-32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
-32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
-32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
-32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
-32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
-32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
-32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
-32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
-32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
-32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
-32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
-32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
-32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
-32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
-32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
-32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
-32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
-32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
-32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
-32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
-32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
-32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
-32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
-32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
-32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
-32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
-32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
-32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
-32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
-32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
-32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
-32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
-32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
-32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
-32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
-32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
-32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
-32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
-32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
-3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
-3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
-3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
-3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
-3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
-3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
-3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
-3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
-3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
-3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
-330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
-330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
-330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
-330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
-330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
-330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
-3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
-3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
-3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
-3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
-3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
-3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
-3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
-3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
-3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
-3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
-331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
-331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
-331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
-331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
-331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
-331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
-3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
-3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
-3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
-3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
-3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
-3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
-3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
-3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
-3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
-3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
-332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
-332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
-332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
-332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
-332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
-332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
-3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
-3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
-3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
-3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
-3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
-3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
-3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
-3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
-3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
-3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
-333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
-333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
-333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
-333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
-333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
-333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
-3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
-3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
-3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
-3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
-3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
-3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
-3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
-3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
-3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
-3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
-334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
-334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
-334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
-334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
-334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
-334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
-3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
-3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
-3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
-3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
-3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
-3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
-3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
-3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
-3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
-3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
-335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
-335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
-335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
-335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
-335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
-335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
-3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
-3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
-3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
-3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
-3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
-3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
-3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
-3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
-3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
-3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
-336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
-336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
-336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
-336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
-336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
-336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
-3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
-3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
-3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
-3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
-3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
-3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
-3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
-337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
-337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
-337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
-337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
-337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
-3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
-3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
-3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
-3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
-3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
-3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
-3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
-3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
-3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
-3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
-338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
-338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
-338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
-338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
-338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
-338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
-3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
-3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
-3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
-3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
-3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
-3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
-3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
-3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
-3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
-3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
-339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
-339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
-339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
-339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
-339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
-339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
-33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
-33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
-33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
-33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
-33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
-33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
-33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
-33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
-33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
-33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
-33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
-33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
-33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
-33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
-33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
-33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
-33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
-33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
-33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
-33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
-33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
-33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
-33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
-33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
-33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
-33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
-33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
-33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
-33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
-33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
-33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
-33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
-33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
-33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
-33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
-33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
-33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
-33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
-33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
-33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
-33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
-33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
-33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
-33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
-33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
-33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
-33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
-33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
-33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
-33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
-33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
-33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
-33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
-33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
-33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
-33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
-33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
-33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
-33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
-33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
-33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
-33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
-33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
-33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
-33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
-33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
-33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
-33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
-33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
-33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
-33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
-33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
-33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
-33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
-33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
-33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
-33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
-33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
-33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
-33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
-33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
-33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
-33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
-33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
-33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
-33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
-33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
-33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
-33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
-33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
-33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
-33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
-33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
-3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
-4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
-4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
-9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
-A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
-A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
-A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
-A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
-A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
-A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
-A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
-A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
-A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
-A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
-A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
-A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
-A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
-A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
-A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
-A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
-A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
-A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
-A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
-A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
-A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
-A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
-A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
-A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
-A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
-A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
-A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
-A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
-A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
-A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
-A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
-A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
-A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
-A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
-A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
-A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
-A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
-A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
-A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
-A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
-A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
-A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
-A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
-A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
-A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
-A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
-A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
-A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
-A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
-A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
-A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
-A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
-A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
-A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
-A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
-A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
-A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
-A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
-A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
-A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
-A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
-A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
-A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
-A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
-A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
-A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
-A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
-A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
-A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
-A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
-A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
-A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
-A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
-A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
-A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
-A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
-A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
-A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
-A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
-A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
-A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
-A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
-A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
-A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
-A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
-A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
-A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
-A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
-A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
-A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
-A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
-A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
-A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
-A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
-A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
-A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
-A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
-A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
-A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
-A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
-A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
-A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
-A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
-A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
-A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
-A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
-A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
-A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
-A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
-A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
-A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
-A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
-A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
-A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
-A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
-A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
-A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
-A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
-A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
-A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
-A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
-A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
-A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
-A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
-A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
-A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
-A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
-A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
-A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
-A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
-A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
-A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
-A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
-A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
-A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
-A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
-A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
-A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
-A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
-A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
-A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
-A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
-A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
-A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
-A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
-A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
-A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
-A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
-A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
-A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
-A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
-A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
-A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
-A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
-A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
-A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
-A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
-A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
-A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
-A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
-A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
-A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
-A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
-A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
-A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
-A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
-A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
-A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
-A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
-A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
-A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
-A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
-A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
-A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
-A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
-A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
-A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
-A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
-A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
-A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
-A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
-A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
-A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
-A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
-A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
-A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
-A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
-A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
-A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
-A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
-A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
-A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
-A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
-A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
-A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
-A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
-A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
-A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
-A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
-A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
-A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
-A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
-A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
-A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
-A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
-A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
-A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
-A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
-A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
-A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
-A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
-A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
-A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
-A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
-A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
-A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
-A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
-A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
-A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
-A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
-A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
-A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
-A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
-A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
-A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
-A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
-A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
-A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
-A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
-A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
-A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
-A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
-A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
-A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
-A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
-A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
-A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
-A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
-A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
-A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
-A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
-A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
-A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
-A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
-A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
-A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
-A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
-A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
-A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
-A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
-A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
-A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
-A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
-A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
-A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
-A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
-A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
-A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
-A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
-A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
-A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
-A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
-A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
-A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
-A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
-A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
-A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
-A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
-A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
-A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
-A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
-A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
-A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
-A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
-A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
-A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
-A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
-A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
-A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
-A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
-A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
-A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
-A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
-A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
-A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
-A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
-A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
-A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
-A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
-A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
-A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
-A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
-A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
-A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
-A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
-A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
-A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
-A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
-A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
-A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
-A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
-A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
-A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
-A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
-A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
-A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
-A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
-A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
-A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
-A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
-A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
-A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
-A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
-A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
-A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
-A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
-A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
-A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
-A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
-A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
-A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
-A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
-A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
-A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
-A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
-A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
-A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
-A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
-A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
-A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
-A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
-A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
-A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
-A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
-A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
-A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
-A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
-A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
-A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
-A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
-A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
-A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
-A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
-A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
-A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
-A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
-A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
-A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
-A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
-A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
-A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
-A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
-A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
-A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
-A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
-A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
-A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
-A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
-A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
-A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
-A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
-A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
-A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
-A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
-A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
-A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
-A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
-A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
-A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
-A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
-A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
-A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
-A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
-A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
-A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
-A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
-A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
-A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
-A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
-A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
-A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
-A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
-A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
-A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
-A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
-A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
-A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
-A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
-A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
-A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
-A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
-A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
-A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
-A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
-A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
-A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
-A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
-A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
-A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
-A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
-A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
-A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
-A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
-A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
-A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
-A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
-A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
-A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
-A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
-A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
-A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
-A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
-A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
-A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
-A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
-A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
-A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
-A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
-A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
-A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
-A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
-A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
-A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
-A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
-A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
-A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
-A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
-A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
-A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
-A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
-A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
-A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
-A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
-A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
-A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
-A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
-A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
-A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
-A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
-A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
-A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
-A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
-A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
-A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
-A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
-A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
-A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
-A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
-A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
-A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
-A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
-A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
-A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
-A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
-A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
-A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
-A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
-A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
-A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
-A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
-A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
-A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
-A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
-A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
-A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
-A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
-A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
-A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
-A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
-A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
-A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
-A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
-A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
-A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
-A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
-A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
-A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
-A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
-A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
-A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
-A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
-A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
-A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
-A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
-A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
-A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
-A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
-A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
-A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
-A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
-A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
-A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
-A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
-A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
-A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
-A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
-A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
-A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
-A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
-A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
-A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
-A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
-A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
-A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
-A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
-A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
-A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
-A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
-A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
-A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
-A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
-A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
-A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
-A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
-A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
-A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
-A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
-A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
-A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
-A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
-A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
-A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
-A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
-A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
-A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
-A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
-A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
-A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
-A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
-A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
-A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
-A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
-A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
-A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
-A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
-A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
-A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
-A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
-A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
-A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
-A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
-A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
-A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
-A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
-A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
-A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
-A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
-A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
-A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
-A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
-A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
-A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
-A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
-A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
-A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
-A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
-A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
-A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
-A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
-A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
-A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
-A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
-A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
-A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
-A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
-A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
-A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
-A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
-A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
-A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
-A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
-A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
-A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
-A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
-A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
-A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
-A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
-A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
-A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
-A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
-A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
-A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
-A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
-A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
-A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
-A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
-A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
-A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
-A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
-A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
-A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
-A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
-A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
-A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
-A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
-A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
-A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
-A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
-A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
-A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
-A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
-A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
-A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
-A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
-A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
-A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
-A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
-A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
-A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
-A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
-A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
-A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
-A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
-A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
-A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
-A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
-A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
-A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
-A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
-A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
-A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
-A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
-A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
-A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
-A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
-A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
-A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
-A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
-A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
-A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
-A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
-A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
-A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
-A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
-A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
-A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
-A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
-A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
-A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
-A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
-A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
-A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
-A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
-A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
-A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
-A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
-A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
-A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
-A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
-A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
-A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
-A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
-A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
-A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
-A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
-A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
-A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
-A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
-A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
-A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
-A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
-A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
-A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
-A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
-A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
-A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
-A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
-A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
-A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
-A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
-A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
-A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
-A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
-A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
-A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
-A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
-A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
-A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
-A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
-A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
-A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
-A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
-A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
-A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
-A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
-A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
-A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
-A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
-A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
-A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
-A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
-A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
-A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
-A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
-A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
-A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
-A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
-A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
-A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
-A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
-A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
-A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
-A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
-A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
-A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
-A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
-A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
-A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
-A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
-A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
-A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
-A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
-A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
-A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
-A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
-A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
-A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
-A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
-A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
-A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
-A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
-A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
-A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
-A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
-A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
-A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
-A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
-A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
-A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
-A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
-A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
-A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
-A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
-A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
-A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
-A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
-A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
-A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
-A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
-A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
-A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
-A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
-A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
-A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
-A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
-A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
-A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
-A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
-A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
-A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
-A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
-A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
-A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
-A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
-A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
-A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
-A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
-A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
-A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
-A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
-A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
-A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
-A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
-A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
-A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
-A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
-A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
-A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
-A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
-A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
-A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
-A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
-A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
-A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
-A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
-A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
-A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
-A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
-A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
-A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
-A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
-A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
-A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
-A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
-A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
-A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
-A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
-A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
-A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
-A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
-A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
-A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
-A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
-A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
-A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
-A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
-A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
-A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
-A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
-A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
-A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
-A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
-A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
-A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
-A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
-A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
-A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
-A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
-A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
-A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
-A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
-A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
-A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
-A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
-A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
-A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
-A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
-A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
-A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
-A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
-A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
-A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
-A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
-A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
-A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
-A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
-A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
-A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
-A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
-A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
-A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
-A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
-A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
-A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
-A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
-A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
-A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
-A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
-A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
-A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
-A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
-A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
-A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
-A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
-A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
-A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
-A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
-A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
-A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
-A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
-A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
-A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
-A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
-A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
-A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
-A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
-A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
-A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
-A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
-A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
-A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
-A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
-A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
-A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
-A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
-A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
-A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
-A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
-A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
-A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
-A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
-A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
-A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
-A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
-A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
-A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
-A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
-A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
-A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
-A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
-A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
-A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
-A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
-A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
-A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
-A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
-A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
-A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
-A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
-A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
-A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
-A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
-A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
-A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
-A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
-A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
-A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
-A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
-A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
-A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
-A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
-A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
-A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
-A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
-A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
-A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
-A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
-A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
-A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
-A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
-A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
-A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
-A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
-A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
-A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
-A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
-A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
-A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
-A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
-A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
-A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
-A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
-A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
-A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
-A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
-A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
-A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
-A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
-A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
-A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
-A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
-A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
-A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
-A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
-A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
-A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
-A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
-A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
-A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
-A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
-A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
-A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
-A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
-A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
-A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
-A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
-A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
-A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
-A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
-A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
-A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
-A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
-A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
-A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
-A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
-A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
-A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
-A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
-A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
-A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
-A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
-A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
-A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
-A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
-A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
-A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
-A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
-A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
-A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
-A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
-A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
-A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
-A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
-A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
-A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
-A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
-A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
-A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
-A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
-A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
-A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
-A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
-A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
-A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
-A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
-A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
-A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
-A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
-A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
-A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
-A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
-A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
-A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
-A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
-A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
-A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
-A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
-A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
-A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
-A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
-A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
-A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
-A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
-A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
-A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
-A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
-A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
-A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
-A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
-A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
-A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
-A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
-A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
-A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
-A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
-A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
-A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
-A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
-A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
-A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
-A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
-A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
-A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
-A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
-A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
-A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
-A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
-A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
-A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
-A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
-A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
-A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
-A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
-A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
-A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
-A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
-A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
-A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
-A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
-A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
-A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
-A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
-A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
-A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
-A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
-A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
-A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
-A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
-A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
-A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
-A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
-A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
-A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
-A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
-A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
-A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
-A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
-A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
-A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
-A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
-A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
-A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
-A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
-A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
-A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
-A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
-A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
-A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
-A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
-A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
-A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
-A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
-A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
-A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
-A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
-A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
-A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
-A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
-A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
-A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
-A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
-A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
-A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
-A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
-A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
-A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
-A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
-A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
-A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
-A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
-A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
-A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
-A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
-A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
-A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
-A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
-A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
-A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
-A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
-A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
-A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
-A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
-A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
-A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
-A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
-A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
-A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
-A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
-A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
-A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
-A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
-A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
-A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
-A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
-A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
-A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
-A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
-A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
-A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
-A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
-A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
-A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
-A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
-A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
-A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
-A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
-A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
-A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
-A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
-A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
-A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
-A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
-A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
-A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
-A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
-A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
-A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
-A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
-A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
-A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
-A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
-A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
-A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
-A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
-A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
-A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
-A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
-A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
-A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
-A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
-A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
-A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
-A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
-A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
-A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
-A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
-A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
-A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
-A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
-A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
-A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
-A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
-A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
-A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
-A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
-A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
-A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
-A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
-A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
-A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
-A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
-A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
-A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
-A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
-A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
-A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
-A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
-A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
-A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
-A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
-A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
-A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
-A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
-A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
-A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
-A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
-A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
-A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
-A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
-A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
-A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
-A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
-A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
-A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
-A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
-A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
-A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
-A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
-A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
-A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
-A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
-A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
-A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
-A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
-A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
-A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
-A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
-A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
-A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
-A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
-A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
-A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
-A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
-A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
-A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
-AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
-D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
-D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
-F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
-F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
-F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
-F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
-F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
-F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
-F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
-F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
-F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
-F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
-F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
-F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
-F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
-F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
-F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
-F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
-F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
-F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
-F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
-F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
-F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
-F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
-F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
-F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
-F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
-F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
-F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
-F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
-F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
-F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
-F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
-F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
-F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
-F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
-F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
-F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
-F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
-F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
-F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
-F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
-F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
-F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
-F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
-F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
-F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
-F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
-F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
-F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
-F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
-F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
-F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
-F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
-F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
-F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
-F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
-F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
-F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
-F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
-F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
-F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
-F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
-F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
-F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
-F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
-F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
-F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
-F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
-F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
-F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
-F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
-F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
-F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
-F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
-F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
-F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
-F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
-F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
-F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
-F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
-F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
-F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
-F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
-F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;96FB;;;;N;;;;;
-F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
-F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
-F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
-F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
-F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
-F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
-F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
-F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
-F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
-F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
-F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
-F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
-F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
-F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
-F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
-F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
-F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
-F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
-F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
-F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
-F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
-F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
-F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
-F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
-F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
-F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
-F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
-F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
-F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
-F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
-F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
-F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
-F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
-F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
-F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
-F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
-F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
-F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
-F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
-F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
-F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
-F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
-F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
-F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
-F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
-F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
-F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
-F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
-F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
-F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
-F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
-F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
-F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
-F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
-F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
-F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
-F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
-F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
-F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
-F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
-F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
-F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
-F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
-F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
-F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
-F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
-F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
-F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
-F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
-F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
-F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
-F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
-F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
-F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
-F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
-F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
-F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
-F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
-F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
-F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
-F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
-F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
-F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
-F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
-F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
-F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
-F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
-F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
-F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
-F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
-F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
-F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
-F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
-F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
-F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
-F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
-F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
-F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
-F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
-F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
-F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
-F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
-F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
-F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
-F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
-F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
-F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
-F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
-F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
-F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
-F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
-F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
-F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
-F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
-F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
-F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
-F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
-F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
-F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
-F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
-F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
-F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
-F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
-F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
-F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
-F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
-F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
-F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
-F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
-F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
-F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
-F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
-F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
-F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
-F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
-F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
-F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
-F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
-F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
-F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
-F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
-F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
-F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
-F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
-F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
-F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
-F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
-F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
-F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
-F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
-F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
-F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
-F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
-F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
-F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
-F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
-F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
-F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
-F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
-F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
-F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
-F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
-F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
-F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
-F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
-F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
-F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
-F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
-F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
-F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
-F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
-F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
-F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
-F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
-FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
-FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
-FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
-FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
-FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
-FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
-FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
-FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
-FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
-FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
-FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
-FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
-FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
-FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
-FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
-FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
-FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
-FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
-FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
-FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
-FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
-FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
-FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
-FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
-FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
-FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
-FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
-FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
-FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
-FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
-FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
-FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
-FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
-FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
-FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
-FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
-FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
-FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
-FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
-FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
-FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
-FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
-FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
-FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
-FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
-FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
-FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
-FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
-FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
-FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
-FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
-FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
-FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
-FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
-FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
-FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
-FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
-FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
-FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
-FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
-FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
-FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
-FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
-FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
-FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
-FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
-FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
-FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
-FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
-FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
-FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
-FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
-FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
-FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
-FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
-FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
-FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
-FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
-FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
-FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
-FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
-FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
-FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
-FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
-FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
-FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
-FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
-FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
-FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
-FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
-FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
-FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
-FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
-FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
-FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
-FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
-FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
-FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
-FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
-FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
-FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
-FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
-FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
-FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
-FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
-FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
-FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
-FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
-FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
-FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
-FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
-FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
-FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
-FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
-FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
-FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
-FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
-FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
-FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
-FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
-FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
-FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
-FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
-FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
-FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
-FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
-FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
-FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
-FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
-FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
-FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
-FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
-FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
-FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
-FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
-FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
-FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
-FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
-FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
-FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
-FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
-FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
-FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
-FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
-FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
-FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
-FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
-FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
-FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
-FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
-FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
-FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
-FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
-FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
-FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
-FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
-FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
-FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
-FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
-FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
-FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
-FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
-FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
-FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
-FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
-FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
-FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
-FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
-FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
-FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
-FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
-FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
-FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
-FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
-FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
-FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
-FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
-FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
-FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
-FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
-FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
-FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
-FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
-FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
-FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
-FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
-FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
-FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
-FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
-FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
-FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
-FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
-FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
-FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
-FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
-FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
-FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
-FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
-FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
-FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
-FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
-FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
-FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
-FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
-FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
-FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
-FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
-FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
-FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
-FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
-FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
-FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
-FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
-FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
-FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
-FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
-FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
-FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
-FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
-FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
-FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
-FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
-FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
-FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
-FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
-FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
-FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
-FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
-FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
-FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
-FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
-FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
-FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
-FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
-FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
-FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
-FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
-FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
-FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
-FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
-FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
-FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
-FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
-FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
-FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
-FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
-FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
-FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
-FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
-FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
-FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
-FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
-FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
-FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
-FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
-FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
-FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
-FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
-FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
-FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
-FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
-FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
-FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
-FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
-FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
-FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
-FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
-FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
-FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
-FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
-FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
-FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
-FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
-FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
-FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
-FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
-FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
-FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
-FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
-FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
-FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
-FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
-FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
-FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
-FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
-FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
-FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
-FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
-FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
-FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
-FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
-FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
-FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
-FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
-FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
-FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
-FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
-FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
-FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
-FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
-FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
-FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
-FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
-FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
-FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
-FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
-FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
-FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
-FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
-FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
-FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
-FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
-FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
-FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
-FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
-FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
-FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
-FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
-FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
-FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
-FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
-FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
-FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
-FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
-FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
-FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
-FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
-FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
-FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
-FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
-FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
-FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
-FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
-FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
-FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
-FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
-FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
-FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
-FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
-FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
-FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
-FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
-FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
-FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
-FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
-FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
-FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
-FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
-FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
-FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
-FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
-FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
-FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
-FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
-FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
-FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
-FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
-FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
-FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
-FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
-FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
-FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
-FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
-FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
-FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
-FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
-FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
-FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
-FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
-FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
-FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
-FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
-FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
-FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
-FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
-FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
-FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
-FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
-FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
-FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
-FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
-FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
-FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
-FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
-FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
-FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
-FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
-FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
-FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
-FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
-FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
-FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
-FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
-FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
-FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
-FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
-FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
-FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
-FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
-FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
-FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
-FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
-FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
-FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
-FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
-FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
-FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
-FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
-FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
-FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
-FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
-FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
-FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
-FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
-FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
-FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
-FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
-FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
-FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
-FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
-FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
-FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
-FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
-FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
-FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
-FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
-FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
-FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
-FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
-FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
-FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
-FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
-FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
-FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
-FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
-FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
-FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
-FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
-FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
-FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
-FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
-FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
-FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
-FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
-FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
-FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
-FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
-FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
-FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
-FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
-FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
-FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
-FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
-FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
-FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
-FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
-FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
-FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
-FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
-FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
-FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
-FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
-FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
-FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
-FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
-FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
-FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
-FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
-FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
-FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
-FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
-FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
-FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
-FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
-FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
-FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
-FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
-FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
-FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
-FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
-FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
-FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
-FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
-FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
-FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
-FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
-FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
-FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
-FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
-FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
-FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
-FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
-FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
-FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
-FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
-FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
-FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
-FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
-FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
-FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
-FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
-FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
-FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
-FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
-FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
-FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
-FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
-FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
-FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
-FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
-FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
-FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
-FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
-FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
-FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
-FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
-FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
-FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
-FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
-FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
-FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
-FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
-FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
-FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
-FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
-FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
-FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
-FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
-FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
-FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
-FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
-FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
-FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
-FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
-FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
-FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
-FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
-FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
-FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
-FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
-FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
-FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
-FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
-FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
-FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
-FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
-FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
-FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
-FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
-FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
-FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
-FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
-FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
-FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
-FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
-FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
-FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
-FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
-FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
-FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
-FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
-FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
-FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
-FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
-FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
-FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
-FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
-FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
-FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
-FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
-FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
-FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
-FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
-FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
-FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
-FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
-FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
-FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
-FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
-FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
-FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
-FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
-FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
-FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
-FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
-FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
-FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
-FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
-FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
-FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
-FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
-FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
-FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
-FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
-FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
-FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
-FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
-FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
-FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
-FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
-FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
-FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
-FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
-FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
-FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
-FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
-FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
-FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
-FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
-FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
-FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
-FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
-FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
-FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
-FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
-FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
-FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
-FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
-FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
-FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
-FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
-FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
-FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
-FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
-FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
-FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
-FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
-FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
-FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
-FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
-FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
-FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
-FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
-FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
-FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
-FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
-FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
-FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
-FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
-FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
-FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
-FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
-FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
-FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
-FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
-FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
-FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
-FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
-FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
-FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
-FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
-FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
-FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
-FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
-FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
-FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
-FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
-FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
-FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
-FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
-FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
-FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
-FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
-FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
-FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
-FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
-FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
-FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
-FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
-FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
-FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
-FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
-FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
-FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
-FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
-FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
-FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
-FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
-FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
-FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
-FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
-FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
-FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
-FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
-FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
-FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
-FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
-FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
-FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
-FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
-FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
-FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
-FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
-FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
-FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
-FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
-FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
-FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
-FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
-FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
-FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
-FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
-FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
-FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
-FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
-FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
-FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
-FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
-FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
-FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
-FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
-FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
-FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
-FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
-FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
-FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
-FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
-FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
-FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
-FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
-FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
-FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
-FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
-FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
-FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
-FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
-FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
-FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
-FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
-FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
-FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
-FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
-FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
-FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
-FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
-FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
-FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
-FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
-FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
-FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
-FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
-FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
-FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
-FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
-FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
-FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
-FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
-FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
-FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
-FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
-FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
-FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
-FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
-FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
-FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
-FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
-FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
-FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
-FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
-FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
-FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
-FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
-FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
-FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
-FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
-FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
-FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
-FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
-FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
-FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
-FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
-FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
-FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
-FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
-FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
-FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
-FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
-FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
-FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
-FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
-FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
-FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
-FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
-FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
-FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
-FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
-FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
-FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
-FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
-FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
-FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
-FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
-FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
-FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
-FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
-FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
-FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
-FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
-FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
-FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
-FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
-FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
-FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
-FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
-FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
-FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
-FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
-FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
-FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
-FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
-FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
-FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
-FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
-FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
-FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
-FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
-FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
-FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
-FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
-FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
-FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
-FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
-FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
-FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
-FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
-FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
-FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
-FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
-FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
-FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
-FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
-FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
-FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
-FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
-FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
-FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
-FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
-FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
-FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
-FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
-FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
-FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
-FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
-FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
-FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
-FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
-FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
-FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
-FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
-FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
-FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
-FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
-FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
-FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
-FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
-FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
-FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
-FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
-FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
-FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
-FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
-FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
-FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
-FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
-FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
-FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
-FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
-FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
-FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
-FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
-FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
-FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
-FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
-FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
-FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
-FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
-FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
-FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
-FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
-FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
-FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
-FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
-FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
-FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
-FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
-FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
-FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
-FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
-FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
-FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
-FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
-FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
-FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
-FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
-FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
-FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
-FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
-FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
-FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
-FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
-FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
-FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
-FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
-FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
-FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
-FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
-FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
-FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
-FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
-FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
-FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
-FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
-FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
-FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
-FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
-FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
-FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
-FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
-FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
-FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
-FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
-FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
-FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
-FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
-FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
-FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
-FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
-FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
-FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
-FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
-FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
-FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
-FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
-FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
-FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
-FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
-FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
-FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
-FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
-FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
-FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
-FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
-FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
-FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
-FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
-FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
-FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
-FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
-FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
-FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
-FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
-FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
-FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
-FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;;
-FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
-FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;;
-FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
-FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
-FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
-FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
-FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
-FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
-FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
-FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
-FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
-FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
-FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
-FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
-FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
-FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
-FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
-FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
-FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
-FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
-FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
-FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
-FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
-FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
-FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
-FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
-FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
-FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
-FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
-FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
-FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
-FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;;
-FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
-FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
-FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
-FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
-FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
-FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
-FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
-FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;;
-FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
-FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
-FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
-FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
-FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
-FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
-FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
-FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
-FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
-FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
-FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
-FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
-FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
-FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
-FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
-FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
-FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
-FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
-FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
-FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
-FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
-FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
-FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
-FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
-FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
-FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
-FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
-FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
-FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
-FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
-FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
-FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
-FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
-FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
-FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
-FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
-FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
-FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
-FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
-FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
-FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
-FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
-FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
-FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
-FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
-FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
-FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
-FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
-FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
-FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
-FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
-FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
-FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
-FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
-FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
-FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
-FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
-FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
-FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
-FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
-FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
-FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
-FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
-FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
-FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
-FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
-FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
-FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
-FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
-FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
-FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
-FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
-FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
-FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
-FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
-FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
-FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
-FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
-FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
-FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
-FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
-FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
-FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
-FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
-FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
-FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
-FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
-FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
-FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
-FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
-FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
-FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
-FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
-FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
-FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
-FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
-FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
-FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
-FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
-FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
-FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
-FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
-FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
-FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
-FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
-FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
-FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
-FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
-FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
-FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
-FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
-FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
-FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
-FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
-FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
-FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
-FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
-FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
-FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
-FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
-FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
-FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
-FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
-FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
-FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;;
-FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
-FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
-FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
-FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
-F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;
-FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;
-100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;
-10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;
diff --git a/contrib/perl5/lib/unicode/mktables.PL b/contrib/perl5/lib/unicode/mktables.PL
deleted file mode 100755
index 5aca93e..0000000
--- a/contrib/perl5/lib/unicode/mktables.PL
+++ /dev/null
@@ -1,447 +0,0 @@
-#!../../miniperl
-
-use bytes;
-
-$UnicodeData = "Unicode.301";
-$SyllableData = "syllables.txt";
-$PropData = "PropList.txt";
-
-
-# Note: we try to keep filenames unique within first 8 chars. Using
-# subdirectories for the following helps.
-mkdir "In", 0755;
-mkdir "Is", 0755;
-mkdir "To", 0755;
-
-@todo = (
-# typical
-
- # 005F: SPACING UNDERSCROE
- ['IsWord', '$cat =~ /^[LMN]/ or $code eq "005F"', ''],
- ['IsAlnum', '$cat =~ /^[LMN]/', ''],
- ['IsAlpha', '$cat =~ /^[LM]/', ''],
- # 0009: HORIZONTAL TABULATION
- # 000A: LINE FEED
- # 000B: VERTICAL TABULATION
- # 000C: FORM FEED
- # 000D: CARRIAGE RETURN
- # 0020: SPACE
- ['IsSpace', '$cat =~ /^Z/ ||
- $code =~ /^(0009|000A|000B|000C|000D)$/', ''],
- ['IsSpacePerl',
- '$cat =~ /^Z/ ||
- $code =~ /^(0009|000A|000C|000D)$/', ''],
- ['IsBlank', '$code =~ /^(0020|0009)$/ ||
- $cat =~ /^Z[^lp]$/', ''],
- ['IsDigit', '$cat =~ /^Nd$/', ''],
- ['IsUpper', '$cat =~ /^L[ut]$/', ''],
- ['IsLower', '$cat =~ /^Ll$/', ''],
- ['IsASCII', '$code le "007f"', ''],
- ['IsCntrl', '$cat =~ /^C/', ''],
- ['IsGraph', '$cat =~ /^([LMNPS]|Co)/', ''],
- ['IsPrint', '$cat =~ /^([LMNPS]|Co|Zs)/', ''],
- ['IsPunct', '$cat =~ /^P/', ''],
- # 003[0-9]: DIGIT ZERO..NINE, 00[46][1-6]: A..F, a..f
- ['IsXDigit', '$code =~ /^00(3[0-9]|[46][1-6])$/', ''],
- ['ToUpper', '$up', '$up'],
- ['ToLower', '$down', '$down'],
- ['ToTitle', '$title', '$title'],
- ['ToDigit', '$dec ne ""', '$dec'],
-
-# Name
-
- ['Name', '$name', '$name'],
-
-# Category
-
- ['Category', '$cat', '$cat'],
-
-# Normative
-
- ['IsM', '$cat =~ /^M/', ''], # Mark
- ['IsMn', '$cat eq "Mn"', ''], # Mark, Non-Spacing
- ['IsMc', '$cat eq "Mc"', ''], # Mark, Combining
- ['IsMe', '$cat eq "Me"', ''], # Mark, Enclosing
-
- ['IsN', '$cat =~ /^N/', ''], # Number
- ['IsNd', '$cat eq "Nd"', ''], # Number, Decimal Digit
- ['IsNo', '$cat eq "No"', ''], # Number, Other
- ['IsNl', '$cat eq "Nl"', ''], # Number, Letter
-
- ['IsZ', '$cat =~ /^Z/', ''], # Separator
- ['IsZs', '$cat eq "Zs"', ''], # Separator, Space
- ['IsZl', '$cat eq "Zl"', ''], # Separator, Line
- ['IsZp', '$cat eq "Zp"', ''], # Separator, Paragraph
-
- ['IsC', '$cat =~ /^C/', ''], # Crazy
- ['IsCc', '$cat eq "Cc"', ''], # Other, Control or Format
- ['IsCo', '$cat eq "Co"', ''], # Other, Private Use
- ['IsCn', '$cat eq "Cn"', ''], # Other, Not Assigned
- ['IsCf', '$cat eq "Cf"', ''], # Other, Format
- ['IsCs', '$cat eq "Cs"', ''], # Other, Surrogate
- ['IsCn', 'Unassigned Code Value',$PropData], # Other, Not Assigned
-
-# Informative
-
- ['IsL', '$cat =~ /^L/', ''], # Letter
- ['IsLu', '$cat eq "Lu"', ''], # Letter, Uppercase
- ['IsLl', '$cat eq "Ll"', ''], # Letter, Lowercase
- ['IsLt', '$cat eq "Lt"', ''], # Letter, Titlecase
- ['IsLm', '$cat eq "Lm"', ''], # Letter, Modifier
- ['IsLo', '$cat eq "Lo"', ''], # Letter, Other
-
- ['IsP', '$cat =~ /^P/', ''], # Punctuation
- ['IsPd', '$cat eq "Pd"', ''], # Punctuation, Dash
- ['IsPs', '$cat eq "Ps"', ''], # Punctuation, Open
- ['IsPe', '$cat eq "Pe"', ''], # Punctuation, Close
- ['IsPo', '$cat eq "Po"', ''], # Punctuation, Other
- ['IsPc', '$cat eq "Pc"', ''], # Punctuation, Connector
- ['IsPi', '$cat eq "Pi"', ''], # Punctuation, Initial quote
- ['IsPf', '$cat eq "Pf"', ''], # Punctuation, Final quote
-
- ['IsS', '$cat =~ /^S/', ''], # Symbol
- ['IsSm', '$cat eq "Sm"', ''], # Symbol, Math
- ['IsSk', '$cat eq "Sk"', ''], # Symbol, Modifier
- ['IsSc', '$cat eq "Sc"', ''], # Symbol, Currency
- ['IsSo', '$cat eq "So"', ''], # Symbol, Other
-
-# Combining class
- ['CombiningClass', '$comb', '$comb'],
-
-# BIDIRECTIONAL PROPERTIES
-
- ['Bidirectional', '$bid', '$bid'],
-
-# Strong types:
-
- ['IsBidiL', '$bid eq "L"', ''], # Left-Right; Most alphabetic,
- # syllabic, and logographic
- # characters (e.g., CJK
- # ideographs)
- ['IsBidiR', '$bid eq "R"', ''], # Right-Left; Arabic, Hebrew,
- # and punctuation specific to
- # those scripts
-
- ['IsBidiLRE', '$bid eq "LRE"', ''], # Left-to-Right Embedding
- ['IsBidiLRO', '$bid eq "LRO"', ''], # Left-to-Right Override
- ['IsBidiAL', '$bid eq "AL"', ''], # Right-to-Left Arabic
- ['IsBidiRLE', '$bid eq "RLE"', ''], # Right-to-Left Embedding
- ['IsBidiRLO', '$bid eq "RLO"', ''], # Right-to-Left Override
- ['IsBidiPDF', '$bid eq "PDF"', ''], # Pop Directional Format
- ['IsBidiNSM', '$bid eq "NSM"', ''], # Non-Spacing Mark
- ['IsBidiBN', '$bid eq "BN"', ''], # Boundary Neutral
-
-# Weak types:
-
- ['IsBidiEN','$bid eq "EN"', ''], # European Number
- ['IsBidiES','$bid eq "ES"', ''], # European Number Separator
- ['IsBidiET','$bid eq "ET"', ''], # European Number Terminator
- ['IsBidiAN','$bid eq "AN"', ''], # Arabic Number
- ['IsBidiCS','$bid eq "CS"', ''], # Common Number Separator
-
-# Separators:
-
- ['IsBidiB', '$bid eq "B"', ''], # Block Separator
- ['IsBidiS', '$bid eq "S"', ''], # Segment Separator
-
-# Neutrals:
-
- ['IsBidiWS','$bid eq "WS"', ''], # Whitespace
- ['IsBidiON','$bid eq "ON"', ''], # Other Neutrals ; All other
- # characters: punctuation,
- # symbols
-
-# Decomposition
-
- ['Decomposition', '$decomp', '$decomp'],
- ['IsDecoCanon', '$decomp && $decomp !~ /^</', ''],
- ['IsDecoCompat', '$decomp =~ /^</', ''],
- ['IsDCfont', '$decomp =~ /^<font>/', ''],
- ['IsDCnoBreak', '$decomp =~ /^<noBreak>/', ''],
- ['IsDCinitial', '$decomp =~ /^<initial>/', ''],
- ['IsDCmedial', '$decomp =~ /^<medial>/', ''],
- ['IsDCfinal', '$decomp =~ /^<final>/', ''],
- ['IsDCisolated', '$decomp =~ /^<isolated>/', ''],
- ['IsDCcircle', '$decomp =~ /^<circle>/', ''],
- ['IsDCsuper', '$decomp =~ /^<super>/', ''],
- ['IsDCsub', '$decomp =~ /^<sub>/', ''],
- ['IsDCvertical', '$decomp =~ /^<vertical>/', ''],
- ['IsDCwide', '$decomp =~ /^<wide>/', ''],
- ['IsDCnarrow', '$decomp =~ /^<narrow>/', ''],
- ['IsDCsmall', '$decomp =~ /^<small>/', ''],
- ['IsDCsquare', '$decomp =~ /^<square>/', ''],
- ['IsDCfraction', '$decomp =~ /^<fraction>/', ''],
- ['IsDCcompat', '$decomp =~ /^<compat>/', ''],
-
-# Number
-
- ['Number', '$num ne ""', '$num'],
-
-# Mirrored
-
- ['IsMirrored', '$mir eq "Y"', ''],
-
-# Arabic
-
- ['ArabLink', '1', '$link'],
- ['ArabLnkGrp', '1', '$linkgroup'],
-
-# Jamo
-
- ['JamoShort', '1', '$short'],
-
-# Syllables
-
- syllable_defs(),
-
-# Line break properties - Normative
-
- ['IsLbrkBK','$brk eq "BK"', ''], # Mandatory Break
- ['IsLbrkCR','$brk eq "CR"', ''], # Carriage Return
- ['IsLbrkLF','$brk eq "LF"', ''], # Line Feed
- ['IsLbrkCM','$brk eq "CM"', ''], # Attached Characters and Combining Marks
- ['IsLbrkSG','$brk eq "SG"', ''], # Surrogates
- ['IsLbrkGL','$brk eq "GL"', ''], # Non-breaking (Glue)
- ['IsLbrkCB','$brk eq "CB"', ''], # Contingent Break Opportunity
- ['IsLbrkSP','$brk eq "SP"', ''], # Space
- ['IsLbrkZW','$brk eq "ZW"', ''], # Zero Width Space
-
-# Line break properties - Informative
- ['IsLbrkXX','$brk eq "XX"', ''], # Unknown
- ['IsLbrkOP','$brk eq "OP"', ''], # Opening Punctuation
- ['IsLbrkCL','$brk eq "CL"', ''], # Closing Punctuation
- ['IsLbrkQU','$brk eq "QU"', ''], # Ambiguous Quotation
- ['IsLbrkNS','$brk eq "NS"', ''], # Non Starter
- ['IsLbrkEX','$brk eq "EX"', ''], # Exclamation/Interrogation
- ['IsLbrkSY','$brk eq "SY"', ''], # Symbols Allowing Breaks
- ['IsLbrkIS','$brk eq "IS"', ''], # Infix Separator (Numeric)
- ['IsLbrkPR','$brk eq "PR"', ''], # Prefix (Numeric)
- ['IsLbrkPO','$brk eq "PO"', ''], # Postfix (Numeric)
- ['IsLbrkNU','$brk eq "NU"', ''], # Numeric
- ['IsLbrkAL','$brk eq "AL"', ''], # Ordinary Alphabetic and Symbol Characters
- ['IsLbrkID','$brk eq "ID"', ''], # Ideographic
- ['IsLbrkIN','$brk eq "IN"', ''], # Inseparable
- ['IsLbrkHY','$brk eq "HY"', ''], # Hyphen
- ['IsLbrkBB','$brk eq "BB"', ''], # Break Opportunity Before
- ['IsLbrkBA','$brk eq "BA"', ''], # Break Opportunity After
- ['IsLbrkSA','$brk eq "SA"', ''], # Complex Context (South East Asian)
- ['IsLbrkAI','$brk eq "AI"', ''], # Ambiguous (Alphabetic or Ideographic)
- ['IsLbrkB2','$brk eq "B2"', ''], # Break Opportunity Before and After
-);
-
-# This is not written for speed...
-
-foreach $file (@todo) {
- my ($table, $wanted, $val) = @$file;
- next if @ARGV and not grep { $_ eq $table } @ARGV;
- print $table,"\n";
- if ($table =~ /^(Is|In|To)(.*)/) {
- open(OUT, ">$1/$2.pl") or die "Can't create $1/$2.pl: $!\n";
- }
- else {
- open(OUT, ">$table.pl") or die "Can't create $table.pl: $!\n";
- }
- print OUT <<EOH;
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by $0 from e.g. $UnicodeData.
-# Any changes made here will be lost!
-EOH
- print OUT <<"END";
-return <<'END';
-END
- print OUT proplist($table, $wanted, $val);
- print OUT "END\n";
- close OUT;
-}
-
-# Must treat blocks specially.
-
-exit if @ARGV and not grep { $_ eq Block } @ARGV;
-print "Block\n";
-open(UD, 'Blocks.txt') or die "Can't open Blocks.txt: $!\n";
-open(OUT, ">Block.pl") or die "Can't create Block.pl: $!\n";
-print OUT <<EOH;
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by $0 from e.g. $UnicodeData.
-# Any changes made here will be lost!
-EOH
-print OUT <<"END";
-return <<'END';
-END
-
-while (<UD>) {
- next if /^#/;
- next if /^$/;
- chomp;
- ($code, $last, $name) = split(/; */);
- if ($name) {
- print OUT "$code $last $name\n";
- $name =~ s/\s+//g;
- open(BLOCK, ">In/$name.pl");
- print BLOCK <<EOH;
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by $0 from e.g. $UnicodeData.
-# Any changes made here will be lost!
-EOH
- print BLOCK <<"END2";
-return <<'END';
-$code $last
-END
-END2
- close BLOCK;
- }
-}
-
-print OUT "END\n";
-close OUT;
-
-##################################################
-
-sub proplist {
- my ($table, $wanted, $val) = @_;
- my @wanted;
- my $out;
- my $split;
-
- return listFromPropFile($wanted) if $val eq $PropData;
-
- if ($table =~ /^Arab/) {
- open(UD, "ArabShap.txt") or warn "Can't open $table: $!";
-
- $split = '($code, $name, $link, $linkgroup) = split(/; */);';
- }
- elsif ($table =~ /^Jamo/) {
- open(UD, "Jamo.txt") or warn "Can't open $table: $!";
-
- $split = '($code, $short, $name) = split(/; */); $code =~ s/^U\+//;';
- }
- elsif ($table =~ /^IsSyl/) {
- open(UD, $SyllableData) or warn "Can't open $table: $!";
-
- $split = '($code, $short, $syl) = split(/; */); $code =~ s/^U\+//;';
- }
- elsif ($table =~ /^IsLbrk/) {
- open(UD, "LineBrk.txt") or warn "Can't open $table: $!";
-
- $split = '($code, $brk, $name) = split(/;/);';
- }
- else {
- open(UD, $UnicodeData) or warn "Can't open $UnicodeData: $!";
-
- $split = '($code, $name, $cat, $comb, $bid, $decomp, $dec, $dig, $num, $mir, $uni1,
- $comment, $up, $down, $title) = split(/;/);';
- }
-
- if ($table =~ /^(?:To|Is)[A-Z]/) {
- eval <<"END";
- while (<UD>) {
- next if /^#/;
- next if /^\\s/;
- s/\\s+\$//;
- $split
- if ($wanted) {
- push(\@wanted, [hex \$code, hex $val, \$name =~ /, First>\$/]);
- }
- }
-END
- die $@ if $@;
-
- while (@wanted) {
- $beg = shift @wanted;
- $last = $beg;
- while (@wanted and $wanted[0]->[0] == $last->[0] + 1 and
- (not $val or $wanted[0]->[1] == $last->[1] + 1)) {
- $last = shift @wanted;
- }
- $out .= sprintf "%04x", $beg->[0];
- if ($beg->[2]) {
- $last = shift @wanted;
- }
- if ($beg == $last) {
- $out .= "\t";
- }
- else {
- $out .= sprintf "\t%04x", $last->[0];
- }
- $out .= sprintf "\t%04x", $beg->[1] if $val;
- $out .= "\n";
- }
- }
- else {
- eval <<"END";
- while (<UD>) {
- next if /^#/;
- next if /^\\s*\$/;
- chop;
- $split
- if ($wanted) {
- push(\@wanted, [hex \$code, $val, \$name =~ /, First>\$/]);
- }
- }
-END
- die $@ if $@;
-
- while (@wanted) {
- $beg = shift @wanted;
- $last = $beg;
- while (@wanted and $wanted[0]->[0] == $last->[0] + 1 and
- ($wanted[0]->[1] eq $last->[1])) {
- $last = shift @wanted;
- }
- $out .= sprintf "%04x", $beg->[0];
- if ($beg->[2]) {
- $last = shift @wanted;
- }
- if ($beg == $last) {
- $out .= "\t";
- }
- else {
- $out .= sprintf "\t%04x", $last->[0];
- }
- $out .= sprintf "\t%s\n", $beg->[1];
- }
- }
- $out;
-}
-
-sub listFromPropFile {
- my ($wanted) = @_;
- my $out;
-
- open (UD, $PropData) or die "Can't open $PropData: $!\n";
- local($/) = "\n" . '*' x 43 . "\n\nProperty dump for:"; # not 42?
-
- <UD>;
- while (<UD>) {
- chomp;
- if (s/0x[\d\w]+\s+\((.*?)\)// and $wanted eq $1) {
- s/\(\d+ chars\)//g;
- s/^\s+//mg;
- s/\s+$//mg;
- s/\.\./\t/g;
- $out = lc $_;
- last;
- }
- }
- close (UD);
- "$out\n";
-}
-
-sub syllable_defs {
- my @defs;
- my %seen;
-
- open (SD, $SyllableData) or die "Can't open $SyllableData: $!\n";
- while (<SD>) {
- next if /^\s*(#|$)/;
- s/\s+$//;
- ($code, $name, $syl) = split /; */;
- next unless $syl;
- push (@defs, ["IsSyl$syl", qq{\$syl eq "$syl"}, ''])
- unless $seen{$syl}++;
- }
- close (SD);
- return (@defs);
-}
-
-# eof
diff --git a/contrib/perl5/lib/unicode/syllables.txt b/contrib/perl5/lib/unicode/syllables.txt
deleted file mode 100644
index bc8bc23..0000000
--- a/contrib/perl5/lib/unicode/syllables.txt
+++ /dev/null
@@ -1,1329 +0,0 @@
-################################################################################
-#
-# V: as "u" in "but" (often represented with schwa or small uppercase lambda)
-# U: as "oo" in "fool"
-# I: as "ea" in "meat"
-# A: as "a" in "father"
-# E: as "a" in "hate"
-# C: the consonant form having no vowel element
-# O: as "o" in "note"
-#
-# Vowel identifiers are assumed short, doubled identifiers are considered long
-# (following Cushitic rules). Dipthong syllables are identified with "W" as
-# per Ethiopic and Canadian syllabary character names.
-#
-#
-# WV WVV WU WUU WI WII WA WAA WAI WAAI WE WEE WC WO WOO
-#
-# V VV U UU I II A AA AI AAI E EE C O OO
-#
-################################################################################
-
-#
-# Ethiopic
-#
-1200; HA; V
-1201; HU; U
-1202; HI; I
-1203; HAA; A
-1204; HEE; E
-1205; HE; C
-1206; HO; O
-1208; LA; V
-1209; LU; U
-120A; LI; I
-120B; LAA; A
-120C; LEE; E
-120D; LE; C
-120E; LO; O
-120F; LWA; WA
-1210; HHA; V
-1211; HHU; U
-1212; HHI; I
-1213; HHAA; A
-1214; HHEE; E
-1215; HHE; C
-1216; HHO; O
-1217; HHWA; WA
-1218; MA; V
-1219; MU; U
-121A; MI; I
-121B; MAA; A
-121C; MEE; E
-121D; ME; C
-121E; MO; O
-121F; MWA; WA
-1220; SZA; V
-1221; SZU; U
-1222; SZI; I
-1223; SZAA; A
-1224; SZEE; E
-1225; SZE; C
-1226; SZO; O
-1227; SZWA; WA
-1228; RA; V
-1229; RU; U
-122A; RI; I
-122B; RAA; A
-122C; REE; E
-122D; RE; C
-122E; RO; O
-122F; RWA; WA
-1230; SA; V
-1231; SU; U
-1232; SI; I
-1233; SAA; A
-1234; SEE; E
-1235; SE; C
-1236; SO; O
-1237; SWA; WA
-1238; SHA; V
-1239; SHU; U
-123A; SHI; I
-123B; SHAA; A
-123C; SHEE; E
-123D; SHE; C
-123E; SHO; O
-123F; SHWA; WA
-1240; QA; V
-1241; QU; U
-1242; QI; I
-1243; QAA; A
-1244; QEE; E
-1245; QE; C
-1246; QO; O
-1248; QWA; WV
-124A; QWI; WI
-124B; QWAA; WA
-124C; QWEE; WE
-124D; QWE; WC
-1250; QHA; V
-1251; QHU; U
-1252; QHI; I
-1253; QHAA; A
-1254; QHEE; E
-1255; QHE; C
-1256; QHO; O
-1258; QHWA; WV
-125A; QHWI; WI
-125B; QHWAA; WA
-125C; QHWEE; WE
-125D; QHWE; WC
-1260; BA; V
-1261; BU; U
-1262; BI; I
-1263; BAA; A
-1264; BEE; E
-1265; BE; C
-1266; BO; O
-1267; BWA; WA
-1268; VA; V
-1269; VU; U
-126A; VI; I
-126B; VAA; A
-126C; VEE; E
-126D; VE; C
-126E; VO; O
-126F; VWA; WA
-1270; TA; V
-1271; TU; U
-1272; TI; I
-1273; TAA; A
-1274; TEE; E
-1275; TE; C
-1276; TO; O
-1277; TWA; WA
-1278; CA; V
-1279; CU; U
-127A; CI; I
-127B; CAA; A
-127C; CEE; E
-127D; CE; C
-127E; CO; O
-127F; CWA; WA
-1280; XA; V
-1281; XU; U
-1282; XI; I
-1283; XAA; A
-1284; XEE; E
-1285; XE; C
-1286; XO; O
-1288; XWA; WV
-128A; XWI; WI
-128B; XWAA; WA
-128C; XWEE; WE
-128D; XWE; WC
-1290; NA; V
-1291; NU; U
-1292; NI; I
-1293; NAA; A
-1294; NEE; E
-1295; NE; C
-1296; NO; O
-1297; NWA; WA
-1298; NYA; V
-1299; NYU; U
-129A; NYI; I
-129B; NYAA; A
-129C; NYEE; E
-129D; NYE; C
-129E; NYO; O
-129F; NYWA; WA
-12A0; GLOTTAL A; V
-12A1; GLOTTAL U; U
-12A2; GLOTTAL I; I
-12A3; GLOTTAL AA; A
-12A4; GLOTTAL EE; E
-12A5; GLOTTAL E; C
-12A6; GLOTTAL O; O
-12A7; GLOTTAL WA; WA
-12A8; KA; V
-12A9; KU; U
-12AA; KI; I
-12AB; KAA; A
-12AC; KEE; E
-12AD; KE; C
-12AE; KO; O
-12B0; KWA; WV
-12B2; KWI; WI
-12B3; KWAA; WA
-12B4; KWEE; WE
-12B5; KWE; WC
-12B8; KXA; V
-12B9; KXU; U
-12BA; KXI; I
-12BB; KXAA; A
-12BC; KXEE; E
-12BD; KXE; C
-12BE; KXO; O
-12C0; KXWA; WV
-12C2; KXWI; WI
-12C3; KXWAA; WA
-12C4; KXWEE; WE
-12C5; KXWE; WC
-12C8; WA; V
-12C9; WU; U
-12CA; WI; I
-12CB; WAA; A
-12CC; WEE; E
-12CD; WE; C
-12CE; WO; O
-12D0; PHARYNGEAL A; V
-12D1; PHARYNGEAL U; U
-12D2; PHARYNGEAL I; I
-12D3; PHARYNGEAL AA; A
-12D4; PHARYNGEAL EE; E
-12D5; PHARYNGEAL E; C
-12D6; PHARYNGEAL O; O
-12D8; ZA; V
-12D9; ZU; U
-12DA; ZI; I
-12DB; ZAA; A
-12DC; ZEE; E
-12DD; ZE; C
-12DE; ZO; O
-12DF; ZWA; WA
-12E0; ZHA; V
-12E1; ZHU; U
-12E2; ZHI; I
-12E3; ZHAA; A
-12E4; ZHEE; E
-12E5; ZHE; C
-12E6; ZHO; O
-12E7; ZHWA; WA
-12E8; YA; V
-12E9; YU; U
-12EA; YI; I
-12EB; YAA; A
-12EC; YEE; E
-12ED; YE; C
-12EE; YO; O
-12F0; DA; V
-12F1; DU; U
-12F2; DI; I
-12F3; DAA; A
-12F4; DEE; E
-12F5; DE; C
-12F6; DO; O
-12F7; DWA; WA
-12F8; DDA; V
-12F9; DDU; U
-12FA; DDI; I
-12FB; DDAA; A
-12FC; DDEE; E
-12FD; DDE; C
-12FE; DDO; O
-12FF; DDWA; WA
-1300; JA; V
-1301; JU; U
-1302; JI; I
-1303; JAA; A
-1304; JEE; E
-1305; JE; C
-1306; JO; O
-1307; JWA; WA
-1308; GA; V
-1309; GU; U
-130A; GI; I
-130B; GAA; A
-130C; GEE; E
-130D; GE; C
-130E; GO; O
-1310; GWA; WV
-1312; GWI; WI
-1313; GWAA; WA
-1314; GWEE; WE
-1315; GWE; WC
-1318; GGA; V
-1319; GGU; U
-131A; GGI; I
-131B; GGAA; A
-131C; GGEE; E
-131D; GGE; C
-131E; GGO; O
-1320; THA; V
-1321; THU; U
-1322; THI; I
-1323; THAA; A
-1324; THEE; E
-1325; THE; C
-1326; THO; O
-1327; THWA; WA
-1328; CHA; V
-1329; CHU; U
-132A; CHI; I
-132B; CHAA; A
-132C; CHEE; E
-132D; CHE; C
-132E; CHO; O
-132F; CHWA; WA
-1330; PHA; V
-1331; PHU; U
-1332; PHI; I
-1333; PHAA; A
-1334; PHEE; E
-1335; PHE; C
-1336; PHO; O
-1337; PHWA; WA
-1338; TSA; V
-1339; TSU; U
-133A; TSI; I
-133B; TSAA; A
-133C; TSEE; E
-133D; TSE; C
-133E; TSO; O
-133F; TSWA; WA
-1340; TZA; V
-1341; TZU; U
-1342; TZI; I
-1343; TZAA; A
-1344; TZEE; E
-1345; TZE; C
-1346; TZO; O
-1348; FA; V
-1349; FU; U
-134A; FI; I
-134B; FAA; A
-134C; FEE; E
-134D; FE; C
-134E; FO; O
-134F; FWA; WA
-1350; PA; V
-1351; PU; U
-1352; PI; I
-1353; PAA; A
-1354; PEE; E
-1355; PE; C
-1356; PO; O
-1357; PWA; WA
-#
-# Cherokee
-#
-13A0; A; A
-13A1; E; E
-13A2; I; I
-13A3; O; O
-13A4; U; U
-13A5; V; V
-13A6; GA; A
-13A7; KA; A
-13A8; GE; E
-13A9; GI; I
-13AA; GO; O
-13AB; GU; U
-13AC; GV; V
-13AD; HA; A
-13AE; HE; E
-13AF; HI; I
-13B0; HO; O
-13B1; HU; U
-13B2; HV; V
-13B3; LA; A
-13B4; LE; E
-13B5; LI; I
-13B6; LO; O
-13B7; LU; U
-13B8; LV; V
-13B9; MA; A
-13BA; ME; E
-13BB; MI; I
-13BC; MO; O
-13BD; MU; U
-13BE; NA; A
-13BF; HNA; A
-13C0; NAH; C
-13C1; NE; E
-13C2; NI; I
-13C3; NO; O
-13C4; NU; U
-13C5; NV; V
-13C6; QUA; A
-13C7; QUE; E
-13C8; QUI; I
-13C9; QUO; O
-13CA; QUU; U
-13CB; QUV; V
-13CC; SA; A
-13CD; S; C
-13CE; SE; E
-13CF; SI; I
-13D0; SO; O
-13D1; SU; U
-13D2; SV; V
-13D3; DA; A
-13D4; TA; A
-13D5; DE; E
-13D6; TE; E
-13D7; DI; I
-13D8; TI; I
-13D9; DO; O
-13DA; DU; U
-13DB; DV; V
-13DC; DLA; A
-13DD; TLA; A
-13DE; TLE; E
-13DF; TLI; I
-13E0; TLO; O
-13E1; TLU; U
-13E2; TLV; V
-13E3; TSA; A
-13E4; TSE; E
-13E5; TSI; I
-13E6; TSO; O
-13E7; TSU; U
-13E8; TSV; V
-13E9; WA; A
-13EA; WE; E
-13EB; WI; I
-13EC; WO; O
-13ED; WU; U
-13EE; WV; V
-13EF; YA; A
-13F0; YE; E
-13F1; YI; I
-13F2; YO; O
-13F3; YU; U
-13F4; YV; V
-#
-# 1400 Unified Canadian Aboriginal Syllabics 167F
-#
-1401; E; E
-1402; AAI; AAI
-1403; I; I
-1404; II; II
-1405; O; O
-1406; OO; OO
-1407; Y-CREE OO; OO
-1408; CARRIER EE; EE
-1409; CARRIER I; I
-140A; A; A
-140B; AA; AA
-140C; WE; WE
-140D; WEST-CREE WE; WE
-140E; WI; WI
-140F; WEST-CREE WI; WI
-1410; WII; WII
-1411; WEST-CREE WII; WII
-1412; WO; WO
-1413; WEST-CREE WO; WO
-1414; WOO; WOO
-1415; WEST-CREE WOO; WOO
-1416; NASKAPI WOO; WOO
-1417; WA; WA
-1418; WEST-CREE WA; WA
-1419; WAA; WAA
-141A; WEST-CREE WAA; WAA
-141B; NASKAPI WAA; WAA
-141C; AI; AI
-141D; Y-CREE W; C
-142B; EN; C
-142C; IN; C
-142D; ON; C
-142E; AN; C
-142F; PE; E
-1430; PAAI; AAI
-1431; PI; I
-1432; PII; II
-1433; PO; O
-1434; POO; OO
-1435; Y-CREE POO; OO
-1436; CARRIER HEE; EE
-1437; CARRIER HI; I
-1438; PA; A
-1439; PAA; AA
-143A; PWE; WE
-143B; WEST-CREE PWE; WE
-143C; PWI; WI
-143D; WEST-CREE PWI; WI
-143E; PWII; WII
-143F; WEST-CREE PWII; WII
-1440; PWO; WO
-1441; WEST-CREE PWO; WO
-1442; PWOO; WOO
-1443; WEST-CREE PWOO; WOO
-1444; PWA; WA
-1445; WEST-CREE PWA; WA
-1446; PWAA; WAA
-1447; WEST-CREE PWAA; WAA
-1448; Y-CREE PWAA; WAA
-1449; P; C
-144A; WEST-CREE P; C
-144B; CARRIER H; C
-144C; TE; E
-144D; TAAI; AAI
-144E; TI; I
-144F; TII; II
-1450; TO; O
-1451; TOO; OO
-1452; Y-CREE TOO; OO
-1453; CARRIER DEE; EE
-1454; CARRIER DI; I
-1455; TA; A
-1456; TAA; AA
-1457; TWE; WE
-1458; WEST-CREE TWE; WE
-1459; TWI; WI
-145A; WEST-CREE TWI; WI
-145B; TWII; WII
-145C; WEST-CREE TWII; WII
-145D; TWO; WO
-145E; WEST-CREE TWO; WO
-145F; TWOO; WOO
-1460; WEST-CREE TWOO; WOO
-1461; TWA; WA
-1462; WEST-CREE TWA; WA
-1463; TWAA; WAA
-1464; WEST-CREE TWAA; WAA
-1465; NASKAPI TWAA; WAA
-1466; T; C
-1467; TTE; E
-1468; TTI; I
-1469; TTO; O
-146A; TTA; A
-146B; KE; E
-146C; KAAI; AAI
-146D; KI; I
-146E; KII; II
-146F; KO; O
-1470; KOO; OO
-1471; Y-CREE KOO; OO
-1472; KA; A
-1473; KAA; AA
-1474; KWE; WE
-1475; WEST-CREE KWE; WE
-1476; KWI; WI
-1477; WEST-CREE KWI; WI
-1478; KWII; WII
-1479; WEST-CREE KWII; WII
-147A; KWO; WO
-147B; WEST-CREE KWO; WO
-147C; KWOO; WOO
-147D; WEST-CREE KWOO; WOO
-147E; KWA; WA
-147F; WEST-CREE KWA; WA
-1480; KWAA; WAA
-1481; WEST-CREE KWAA; WAA
-1482; NASKAPI KWAA; WAA
-1483; K; C
-1484; KW; WC
-1485; SOUTH-SLAVEY KEH; C
-1486; SOUTH-SLAVEY KIH; C
-1487; SOUTH-SLAVEY KOH; C
-1488; SOUTH-SLAVEY KAH; C
-1489; CE; E
-148A; CAAI; AAI
-148B; CI; I
-148C; CII; II
-148D; CO; O
-148E; COO; OO
-148F; Y-CREE COO; OO
-1490; CA; A
-1491; CAA; AA
-1492; CWE; WE
-1493; WEST-CREE CWE; WE
-1494; CWI; WI
-1495; WEST-CREE CWI; WI
-1496; CWII; WII
-1497; WEST-CREE CWII; WII
-1498; CWO; WO
-1499; WEST-CREE CWO; WO
-149A; CWOO; WOO
-149B; WEST-CREE CWOO; WOO
-149C; CWA; WA
-149D; WEST-CREE CWA; WA
-149E; CWAA; WAA
-149F; WEST-CREE CWAA; WAA
-14A0; NASKAPI CWAA; WAA
-14A1; C; C
-14A2; SAYISI TH;
-14A3; ME; E
-14A4; MAAI; AAI
-14A5; MI; I
-14A6; MII; II
-14A7; MO; O
-14A8; MOO; OO
-14A9; Y-CREE MOO; OO
-14AA; MA; A
-14AB; MAA; AA
-14AC; MWE; WE
-14AD; WEST-CREE MWE; WE
-14AE; MWI; WI
-14AF; WEST-CREE MWI; WI
-14B0; MWII; WII
-14B1; WEST-CREE MWII; WII
-14B2; MWO; WO
-14B3; WEST-CREE MWO; WO
-14B4; MWOO; WOO
-14B5; WEST-CREE MWOO; WOO
-14B6; MWA; WA
-14B7; WEST-CREE MWA; WA
-14B8; MWAA; WAA
-14B9; WEST-CREE MWAA; WAA
-14BA; NASKAPI MWAA; WAA
-14BB; M; C
-14BC; WEST-CREE M; C
-14BD; MH; C
-14BE; ATHAPASCAN M; C
-14BF; SAYISI M; C
-14C0; NE; E
-14C1; NAAI; AAI
-14C2; NI; I
-14C3; NII; II
-14C4; NO; O
-14C5; NOO; OO
-14C6; Y-CREE NOO; OO
-14C7; NA; A
-14C8; NAA; AA
-14C9; NWE; WE
-14CA; WEST-CREE NWE; WE
-14CB; NWA; WA
-14CC; WEST-CREE NWA; WA
-14CD; NWAA; WAA
-14CE; WEST-CREE NWAA; WAA
-14CF; NASKAPI NWAA; WAA
-14D0; N; C
-14D1; CARRIER NG; C
-14D2; NH; C
-14D3; LE; E
-14D4; LAAI; AAI
-14D5; LI; I
-14D6; LII; II
-14D7; LO; O
-14D8; LOO; OO
-14D9; Y-CREE LOO; OO
-14DA; LA; A
-14DB; LAA; AA
-14DC; LWE; WE
-14DD; WEST-CREE LWE; WE
-14DE; LWI; WI
-14DF; WEST-CREE LWI; WI
-14E0; LWII; WII
-14E1; WEST-CREE LWII; WII
-14E2; LWO; WO
-14E3; WEST-CREE LWO; WO
-14E4; LWOO; WOO
-14E5; WEST-CREE LWOO; WOO
-14E6; LWA; WA
-14E7; WEST-CREE LWA; WA
-14E8; LWAA; WAA
-14E9; WEST-CREE LWAA; WAA
-14EA; L; C
-14EB; WEST-CREE L; C
-14EC; MEDIAL L; C
-14ED; SE; E
-14EE; SAAI; AAI
-14EF; SI; I
-14F0; SII; II
-14F1; SO; O
-14F2; SOO; OO
-14F3; Y-CREE SOO; OO
-14F4; SA; A
-14F5; SAA; AA
-14F6; SWE; WE
-14F7; WEST-CREE SWE; WE
-14F8; SWI; WI
-14F9; WEST-CREE SWI; WI
-14FA; SWII; WII
-14FB; WEST-CREE SWII; WII
-14FC; SWO; WO
-14FD; WEST-CREE SWO; WO
-14FE; SWOO; WOO
-14FF; WEST-CREE SWOO; WOO
-1500; SWA; WA
-1501; WEST-CREE SWA; WA
-1502; SWAA; WAA
-1503; WEST-CREE SWAA; WAA
-1504; NASKAPI SWAA; WAA
-1505; S; C
-1506; ATHAPASCAN S; C
-1507; SW; WC
-1508; BLACKFOOT S; C
-1509; MOOSE-CREE SK;C
-150A; NASKAPI SKW; C
-150B; NASKAPI S-W; C
-150C; NASKAPI SPWA; WA
-150D; NASKAPI STWA; WA
-150E; NASKAPI SKWA; WA
-150F; NASKAPI SCWA; WA
-1510; SHE; E
-1511; SHI; I
-1512; SHII; II
-1513; SHO; O
-1514; SHOO; OO
-1515; SHA; A
-1516; SHAA; AA
-1517; SHWE; WE
-1518; WEST-CREE SHWE; WE
-1519; SHWI; WI
-151A; WEST-CREE SHWI; WI
-151B; SHWII; WII
-151C; WEST-CREE SHWII; WII
-151D; SHWO; WO
-151E; WEST-CREE SHWO; WO
-151F; SHWOO; WOO
-1520; WEST-CREE SHWOO; WOO
-1521; SHWA; WA
-1522; WEST-CREE SHWA; WA
-1523; SHWAA; WAA
-1524; WEST-CREE SHWAA; WAA
-1525; SH; C
-1526; YE; E
-1527; YAAI; AAI
-1528; YI; I
-1529; YII; II
-152A; YO; O
-152B; YOO; OO
-152C; Y-CREE YOO; OO
-152D; YA; A
-152E; YAA; AA
-152F; YWE; WE
-1530; WEST-CREE YWE; WE
-1531; YWI; WI
-1532; WEST-CREE YWI; WI
-1533; YWII; WII
-1534; WEST-CREE YWII; WII
-1535; YWO; WO
-1536; WEST-CREE YWO; WO
-1537; YWOO; WOO
-1538; WEST-CREE YWOO; WOO
-1539; YWA; WA
-153A; WEST-CREE YWA; WA
-153B; YWAA; WAA
-153C; WEST-CREE YWAA; WAA
-153D; NASKAPI YWAA; WAA
-153E; Y; C
-153F; BIBLE-CREE Y; C
-1540; WEST-CREE Y; C
-1541; SAYISI YI; I
-1542; RE; E
-1543; R-CREE RE; E
-1544; WEST-CREE LE; E
-1545; RAAI; AAI
-1546; RI; I
-1547; RII; II
-1548; RO; O
-1549; ROO; OO
-154A; WEST-CREE LO; O
-154B; RA; A
-154C; RAA; AA
-154D; WEST-CREE LA; A
-154E; RWAA; WAA
-154F; WEST-CREE RWAA; WAA
-1550; R; C
-1551; WEST-CREE R; C
-1552; MEDIAL R; C
-1553; FE; E
-1554; FAAI; AAI
-1555; FI; I
-1556; FII; II
-1557; FO; O
-1558; FOO; OO
-1559; FA; A
-155A; FAA; AA
-155B; FWAA; WAA
-155C; WEST-CREE FWAA; WAA
-155D; F; C
-155E; THE; E
-155F; N-CREE THE; E
-1560; THI; I
-1561; N-CREE THI; I
-1562; THII; II
-1563; N-CREE THII; II
-1564; THO; O
-1565; THOO; OO
-1566; THA; A
-1567; THAA; AA
-1568; THWAA; WAA
-1569; WEST-CREE THWAA; WAA
-156A; TH; C
-156B; TTHE; E
-156C; TTHI; I
-156D; TTHO; O
-156E; TTHA; A
-156F; TTH; C
-1570; TYE; E
-1571; TYI; I
-1572; TYO; O
-1573; TYA; A
-1574; NUNAVIK HE; E
-1575; NUNAVIK HI; I
-1576; NUNAVIK HII; II
-1577; NUNAVIK HO; O
-1578; NUNAVIK HOO; OO
-1579; NUNAVIK HA; A
-157A; NUNAVIK HAA; AA
-157B; NUNAVIK H; C
-157C; NUNAVUT H; C
-157D; HK; C
-157E; QAAI; AAI
-157F; QI; I
-1580; QII; II
-1581; QO; O
-1582; QOO; OO
-1583; QA; A
-1584; QAA; AA
-1585; Q; C
-1586; TLHE; E
-1587; TLHI; I
-1588; TLHO; O
-1589; TLHA; A
-158A; WEST-CREE RE; E
-158B; WEST-CREE RI; I
-158C; WEST-CREE RO; O
-158D; WEST-CREE RA; A
-158E; NGAAI; AAI
-158F; NGI; I
-1590; NGII; II
-1591; NGO; O
-1592; NGOO; OO
-1593; NGA; A
-1594; NGAA; AA
-1595; NG; C
-1596; NNG; C
-1597; SAYISI SHE; E
-1598; SAYISI SHI; I
-1599; SAYISI SHO; O
-159A; SAYISI SHA; A
-159B; WOODS-CREE THE; E
-159C; WOODS-CREE THI; I
-159D; WOODS-CREE THO; O
-159E; WOODS-CREE THA; A
-159F; WOODS-CREE TH; C
-15A0; LHI; I
-15A1; LHII; II
-15A2; LHO; O
-15A3; LHOO; OO
-15A4; LHA; A
-15A5; LHAA; AA
-15A6; LH; C
-15A7; TH-CREE THE; E
-15A8; TH-CREE THI; I
-15A9; TH-CREE THII; II
-15AA; TH-CREE THO; O
-15AB; TH-CREE THOO; OO
-15AC; TH-CREE THA; A
-15AD; TH-CREE THAA; AA
-15AE; TH-CREE TH; C
-15AF; AIVILIK B; C
-15B0; BLACKFOOT E; E
-15B1; BLACKFOOT I; I
-15B2; BLACKFOOT O; O
-15B3; BLACKFOOT A; A
-15B4; BLACKFOOT WE; E
-15B5; BLACKFOOT WI; I
-15B6; BLACKFOOT WO; O
-15B7; BLACKFOOT WA; A
-15B8; BLACKFOOT NE; E
-15B9; BLACKFOOT NI; I
-15BA; BLACKFOOT NO; O
-15BB; BLACKFOOT NA; A
-15BC; BLACKFOOT KE; E
-15BD; BLACKFOOT KI; I
-15BE; BLACKFOOT KO; O
-15BF; BLACKFOOT KA; A
-15C0; SAYISI HE; E
-15C1; SAYISI HI; I
-15C2; SAYISI HO; O
-15C3; SAYISI HA; A
-15C4; CARRIER GHU; U
-15C5; CARRIER GHO; O
-15C6; CARRIER GHE; E
-15C7; CARRIER GHEE; EE
-15C8; CARRIER GHI; I
-15C9; CARRIER GHA; A
-15CA; CARRIER RU; U
-15CB; CARRIER RO; O
-15CC; CARRIER RE; E
-15CD; CARRIER REE; EE
-15CE; CARRIER RI; I
-15CF; CARRIER RA; A
-15D0; CARRIER WU; U
-15D1; CARRIER WO; O
-15D2; CARRIER WE; E
-15D3; CARRIER WEE; EE
-15D4; CARRIER WI; I
-15D5; CARRIER WA; A
-15D6; CARRIER HWU; WU
-15D7; CARRIER HWO; WO
-15D8; CARRIER HWE; WE
-15D9; CARRIER HWEE; WEE
-15DA; CARRIER HWI; WI
-15DB; CARRIER HWA; WA
-15DC; CARRIER THU; U
-15DD; CARRIER THO; O
-15DE; CARRIER THE; E
-15DF; CARRIER THEE; EE
-15E0; CARRIER THI; I
-15E1; CARRIER THA; A
-15E2; CARRIER TTU; U
-15E3; CARRIER TTO; O
-15E4; CARRIER TTE; E
-15E5; CARRIER TTEE; EE
-15E6; CARRIER TTI; I
-15E7; CARRIER TTA; A
-15E8; CARRIER PU; U
-15E9; CARRIER PO; O
-15EA; CARRIER PE; E
-15EB; CARRIER PEE; EE
-15EC; CARRIER PI; I
-15ED; CARRIER PA; A
-15EE; CARRIER P;
-15EF; CARRIER GU; U
-15F0; CARRIER GO; O
-15F1; CARRIER GE; E
-15F2; CARRIER GEE; EE
-15F3; CARRIER GI; I
-15F4; CARRIER GA; A
-15F5; CARRIER KHU; U
-15F6; CARRIER KHO; O
-15F7; CARRIER KHE; E
-15F8; CARRIER KHEE; EE
-15F9; CARRIER KHI; I
-15FA; CARRIER KHA; A
-15FB; CARRIER KKU; U
-15FC; CARRIER KKO; O
-15FD; CARRIER KKE; E
-15FE; CARRIER KKEE; EE
-15FF; CARRIER KKI; I
-1600; CARRIER KKA; A
-1601; CARRIER KK;
-1602; CARRIER NU; U
-1603; CARRIER NO; O
-1604; CARRIER NE; E
-1605; CARRIER NEE; EE
-1606; CARRIER NI; I
-1607; CARRIER NA; A
-1608; CARRIER MU; U
-1609; CARRIER MO; O
-160A; CARRIER ME; E
-160B; CARRIER MEE; EE
-160C; CARRIER MI; I
-160D; CARRIER MA; A
-160E; CARRIER YU; U
-160F; CARRIER YO; O
-1610; CARRIER YE; E
-1611; CARRIER YEE; EE
-1612; CARRIER YI; I
-1613; CARRIER YA; A
-1614; CARRIER JU; U
-1615; SAYISI JU; U
-1616; CARRIER JO; O
-1617; CARRIER JE; E
-1618; CARRIER JEE; EE
-1619; CARRIER JI; I
-161A; SAYISI JI; I
-161B; CARRIER JA; A
-161C; CARRIER JJU; U
-161D; CARRIER JJO; O
-161E; CARRIER JJE; E
-161F; CARRIER JJEE; EE
-1620; CARRIER JJI; I
-1621; CARRIER JJA; A
-1622; CARRIER LU; U
-1623; CARRIER LO; O
-1624; CARRIER LE; E
-1625; CARRIER LEE; EE
-1626; CARRIER LI; I
-1627; CARRIER LA; A
-1628; CARRIER DLU; U
-1629; CARRIER DLO; O
-162A; CARRIER DLE; E
-162B; CARRIER DLEE; EE
-162C; CARRIER DLI; I
-162D; CARRIER DLA; A
-162E; CARRIER LHU; U
-162F; CARRIER LHO; O
-1630; CARRIER LHE; E
-1631; CARRIER LHEE; EE
-1632; CARRIER LHI; I
-1633; CARRIER LHA; A
-1634; CARRIER TLHU; U
-1635; CARRIER TLHO; O
-1636; CARRIER TLHE; E
-1637; CARRIER TLHEE; EE
-1638; CARRIER TLHI; I
-1639; CARRIER TLHA; A
-163A; CARRIER TLU; U
-163B; CARRIER TLO; O
-163C; CARRIER TLE; E
-163D; CARRIER TLEE; EE
-163E; CARRIER TLI; I
-163F; CARRIER TLA; A
-1640; CARRIER ZU; U
-1641; CARRIER ZO; O
-1642; CARRIER ZE; E
-1643; CARRIER ZEE; EE
-1644; CARRIER ZI; I
-1645; CARRIER ZA; A
-1646; CARRIER Z;
-1647; CARRIER INITIAL Z;
-1648; CARRIER DZU; U
-1649; CARRIER DZO; O
-164A; CARRIER DZE; E
-164B; CARRIER DZEE; EE
-164C; CARRIER DZI; I
-164D; CARRIER DZA; A
-164E; CARRIER SU; U
-164F; CARRIER SO; O
-1650; CARRIER SE; E
-1651; CARRIER SEE; EE
-1652; CARRIER SI; I
-1653; CARRIER SA; A
-1654; CARRIER SHU; U
-1655; CARRIER SHO; O
-1656; CARRIER SHE; E
-1657; CARRIER SHEE; EE
-1658; CARRIER SHI; I
-1659; CARRIER SHA; A
-165A; CARRIER SH;
-165B; CARRIER TSU; U
-165C; CARRIER TSO; O
-165D; CARRIER TSE; E
-165E; CARRIER TSEE; EE
-165F; CARRIER TSI; I
-1660; CARRIER TSA; A
-1661; CARRIER CHU; U
-1662; CARRIER CHO; O
-1663; CARRIER CHE; E
-1664; CARRIER CHEE; EE
-1665; CARRIER CHI; I
-1666; CARRIER CHA; A
-1667; CARRIER TTSU; U
-1668; CARRIER TTSO; O
-1669; CARRIER TTSE; E
-166A; CARRIER TTSEE; EE
-166B; CARRIER TTSI; I
-166C; CARRIER TTSA; A
-166F; QAI; AI
-1670; NGAI; AI
-1671; NNGI; I
-1672; NNGII; II
-1673; NNGO; O
-1674; NNGOO; OO
-1675; NNGA; A
-1676; NNGAA; AA
-#
-# Katakana
-#
-30A1; SMALL A; A
-30A2; A; A
-30A3; SMALL I; I
-30A4; I; I
-30A5; SMALL U; U
-30A6; U; U
-30A7; SMALL E; E
-30A8; E; E
-30A9; SMALL O; O
-30AA; O; O
-30AB; KA; A
-30AC; GA; A
-30AD; KI; I
-30AE; GI; I
-30AF; KU; U
-30B0; GU; U
-30B1; KE; E
-30B2; GE; E
-30B3; KO; O
-30B4; GO; O
-30B5; SA; A
-30B6; ZA; A
-30B7; SI; I
-30B8; ZI; I
-30B9; SU; U
-30BA; ZU; U
-30BB; SE; E
-30BC; ZE; E
-30BD; SO; O
-30BE; ZO; O
-30BF; TA; A
-30C0; DA; A
-30C1; TI; I
-30C2; DI; I
-30C3; SMALL TU; U
-30C4; TU; U
-30C5; DU; U
-30C6; TE; E
-30C7; DE; E
-30C8; TO; O
-30C9; DO; O
-30CA; NA; A
-30CB; NI; I
-30CC; NU; U
-30CD; NE; E
-30CE; NO; O
-30CF; HA; A
-30D0; BA; A
-30D1; PA; A
-30D2; HI; I
-30D3; BI; I
-30D4; PI; I
-30D5; HU; U
-30D6; BU; U
-30D7; PU; U
-30D8; HE; E
-30D9; BE; E
-30DA; PE; E
-30DB; HO; O
-30DC; BO; O
-30DD; PO; O
-30DE; MA; A
-30DF; MI; I
-30E0; MU; U
-30E1; ME; E
-30E2; MO; O
-30E3; SMALL YA; A
-30E4; YA; A
-30E5; SMALL YU; U
-30E6; YU; U
-30E7; SMALL YO; O
-30E8; YO; O
-30E9; RA; A
-30EA; RI; I
-30EB; RU; U
-30EC; RE; E
-30ED; RO; O
-30EE; SMALL WA; A
-30EF; WA; A
-30F0; WI; I
-30F1; WE; E
-30F2; WO; O
-30F3; N; C
-30F4; VU; U
-30F5; SMALL KA; A
-30F6; SMALL KE; E
-30F7; VA; A
-30F8; VI; I
-30F9; VE; E
-30FA; VO; O
-32D0; CIRCLED KATAKANA A; A
-32D1; CIRCLED KATAKANA I; I
-32D2; CIRCLED KATAKANA U; U
-32D3; CIRCLED KATAKANA E; E
-32D4; CIRCLED KATAKANA O; O
-32D5; CIRCLED KATAKANA KA; A
-32D6; CIRCLED KATAKANA KI; I
-32D7; CIRCLED KATAKANA KU; U
-32D8; CIRCLED KATAKANA KE; E
-32D9; CIRCLED KATAKANA KO; O
-32DA; CIRCLED KATAKANA SA; A
-32DB; CIRCLED KATAKANA SI; I
-32DC; CIRCLED KATAKANA SU; U
-32DD; CIRCLED KATAKANA SE; E
-32DE; CIRCLED KATAKANA SO; O
-32DF; CIRCLED KATAKANA TA; A
-32E0; CIRCLED KATAKANA TI; I
-32E1; CIRCLED KATAKANA TU; U
-32E2; CIRCLED KATAKANA TE; E
-32E3; CIRCLED KATAKANA TO; O
-32E4; CIRCLED KATAKANA NA; A
-32E5; CIRCLED KATAKANA NI; I
-32E6; CIRCLED KATAKANA NU; U
-32E7; CIRCLED KATAKANA NE; E
-32E8; CIRCLED KATAKANA NO; O
-32E9; CIRCLED KATAKANA HA; A
-32EA; CIRCLED KATAKANA HI; I
-32EB; CIRCLED KATAKANA HU; U
-32EC; CIRCLED KATAKANA HE; E
-32ED; CIRCLED KATAKANA HO; O
-32EE; CIRCLED KATAKANA MA; A
-32EF; CIRCLED KATAKANA MI; I
-32F0; CIRCLED KATAKANA MU; U
-32F1; CIRCLED KATAKANA ME; E
-32F2; CIRCLED KATAKANA MO; O
-32F3; CIRCLED KATAKANA YA; A
-32F4; CIRCLED KATAKANA YU; U
-32F5; CIRCLED KATAKANA YO; O
-32F6; CIRCLED KATAKANA RA; A
-32F7; CIRCLED KATAKANA RI; I
-32F8; CIRCLED KATAKANA RU; U
-32F9; CIRCLED KATAKANA RE; E
-32FA; CIRCLED KATAKANA RO; O
-32FB; CIRCLED KATAKANA WA; A
-32FC; CIRCLED KATAKANA WI; I
-32FD; CIRCLED KATAKANA WE; E
-32FE; CIRCLED KATAKANA WO; O
-#
-# Katakana
-#
-FF66; HALFWIDTH WO; O
-FF67; HALFWIDTH SMALL A; A
-FF68; HALFWIDTH SMALL I; I
-FF69; HALFWIDTH SMALL U; U
-FF6A; HALFWIDTH SMALL E; E
-FF6B; HALFWIDTH SMALL O; O
-FF6C; HALFWIDTH SMALL YA; A
-FF6D; HALFWIDTH SMALL YU; U
-FF6E; HALFWIDTH SMALL YO; O
-FF6F; HALFWIDTH SMALL TU; U
-FF71; HALFWIDTH A; A
-FF72; HALFWIDTH I; I
-FF73; HALFWIDTH U; U
-FF74; HALFWIDTH E; E
-FF75; HALFWIDTH O; O
-FF76; HALFWIDTH KA; A
-FF77; HALFWIDTH KI; I
-FF78; HALFWIDTH KU; U
-FF79; HALFWIDTH KE; E
-FF7A; HALFWIDTH KO; O
-FF7B; HALFWIDTH SA; A
-FF7C; HALFWIDTH SI; I
-FF7D; HALFWIDTH SU; U
-FF7E; HALFWIDTH SE; E
-FF7F; HALFWIDTH SO; O
-FF80; HALFWIDTH TA; A
-FF81; HALFWIDTH TI; I
-FF82; HALFWIDTH TU; U
-FF83; HALFWIDTH TE; E
-FF84; HALFWIDTH TO; O
-FF85; HALFWIDTH NA; A
-FF86; HALFWIDTH NI; I
-FF87; HALFWIDTH NU; U
-FF88; HALFWIDTH NE; E
-FF89; HALFWIDTH NO; O
-FF8A; HALFWIDTH HA; A
-FF8B; HALFWIDTH HI; I
-FF8C; HALFWIDTH HU; U
-FF8D; HALFWIDTH HE; E
-FF8E; HALFWIDTH HO; O
-FF8F; HALFWIDTH MA; A
-FF90; HALFWIDTH MI; I
-FF91; HALFWIDTH MU; U
-FF92; HALFWIDTH ME; E
-FF93; HALFWIDTH MO; O
-FF94; HALFWIDTH YA; A
-FF95; HALFWIDTH YU; U
-FF96; HALFWIDTH YO; O
-FF97; HALFWIDTH RA; A
-FF98; HALFWIDTH RI; I
-FF99; HALFWIDTH RU; U
-FF9A; HALFWIDTH RE; E
-FF9B; HALFWIDTH RO; O
-FF9C; HALFWIDTH WA; A
-FF9D; HALFWIDTH N; C
-#
-# Hiragana
-#
-3041; SMALL A; A
-3042; A; A
-3043; SMALL I; I
-3044; I; I
-3045; SMALL U; U
-3046; U; U
-3047; SMALL E; E
-3048; E; E
-3049; SMALL O; O
-304A; O; O
-304B; KA; A
-304C; GA; A
-304D; KI; I
-304E; GI; I
-304F; KU; U
-3050; GU; U
-3051; KE; E
-3052; GE; E
-3053; KO; O
-3054; GO; O
-3055; SA; A
-3056; ZA; A
-3057; SI; I
-3058; ZI; I
-3059; SU; U
-305A; ZU; U
-305B; SE; E
-305C; ZE; E
-305D; SO; O
-305E; ZO; O
-305F; TA; A
-3060; DA; A
-3061; TI; I
-3062; DI; I
-3063; SMALL TU; U
-3064; TU; U
-3065; DU; U
-3066; TE; E
-3067; DE; E
-3068; TO; O
-3069; DO; O
-306A; NA; A
-306B; NI; I
-306C; NU; U
-306D; NE; E
-306E; NO; O
-306F; HA; A
-3070; BA; A
-3071; PA; A
-3072; HI; I
-3073; BI; I
-3074; PI; I
-3075; HU; U
-3076; BU; U
-3077; PU; U
-3078; HE; E
-3079; BE; E
-307A; PE; E
-307B; HO; O
-307C; BO; O
-307D; PO; O
-307E; MA; A
-307F; MI; I
-3080; MU; U
-3081; ME; E
-3082; MO; O
-3083; SMALL YA; A
-3084; YA; A
-3085; SMALL YU; U
-3086; YU; U
-3087; SMALL YO; O
-3088; YO; O
-3089; RA; A
-308A; RI; I
-308B; RU; U
-308C; RE; E
-308D; RO; O
-308E; SMALL WA; A
-308F; WA; A
-3090; WI; I
-3091; WE; E
-3092; WO; O
-3093; N; N
-3094; VU; U
diff --git a/contrib/perl5/lib/utf8.pm b/contrib/perl5/lib/utf8.pm
deleted file mode 100644
index 6d6c0eb..0000000
--- a/contrib/perl5/lib/utf8.pm
+++ /dev/null
@@ -1,84 +0,0 @@
-package utf8;
-
-if (ord('A') != 193) { # make things more pragmatic for EBCDIC folk
-
-$utf8::hint_bits = 0x00800000;
-
-sub import {
- $^H |= $utf8::hint_bits;
- $enc{caller()} = $_[1] if $_[1];
-}
-
-sub unimport {
- $^H &= ~$utf8::hint_bits;
-}
-
-sub AUTOLOAD {
- require "utf8_heavy.pl";
- goto &$AUTOLOAD if defined &$AUTOLOAD;
- Carp::croak("Undefined subroutine $AUTOLOAD called");
-}
-
-}
-
-1;
-__END__
-
-=head1 NAME
-
-utf8 - Perl pragma to enable/disable UTF-8 in source code
-
-=head1 SYNOPSIS
-
- use utf8;
- no utf8;
-
-=head1 DESCRIPTION
-
-WARNING: The implementation of Unicode support in Perl is incomplete.
-See L<perlunicode> for the exact details.
-
-The C<use utf8> pragma tells the Perl parser to allow UTF-8 in the
-program text in the current lexical scope. The C<no utf8> pragma
-tells Perl to switch back to treating the source text as literal
-bytes in the current lexical scope.
-
-This pragma is primarily a compatibility device. Perl versions
-earlier than 5.6 allowed arbitrary bytes in source code, whereas
-in future we would like to standardize on the UTF-8 encoding for
-source text. Until UTF-8 becomes the default format for source
-text, this pragma should be used to recognize UTF-8 in the source.
-When UTF-8 becomes the standard source format, this pragma will
-effectively become a no-op. This pragma already is a no-op on
-EBCDIC platforms (where it is alright to code perl in EBCDIC
-rather than UTF-8).
-
-Enabling the C<utf8> pragma has the following effects:
-
-=over
-
-=item *
-
-Bytes in the source text that have their high-bit set will be treated
-as being part of a literal UTF-8 character. This includes most literals
-such as identifiers, string constants, constant regular expression patterns
-and package names.
-
-=item *
-
-In the absence of inputs marked as UTF-8, regular expressions within the
-scope of this pragma will default to using character semantics instead
-of byte semantics.
-
- @bytes_or_chars = split //, $data; # may split to bytes if data
- # $data isn't UTF-8
- {
- use utf8; # force char semantics
- @chars = split //, $data; # splits characters
- }
-
-=head1 SEE ALSO
-
-L<perlunicode>, L<bytes>
-
-=cut
diff --git a/contrib/perl5/lib/utf8_heavy.pl b/contrib/perl5/lib/utf8_heavy.pl
deleted file mode 100644
index 8649e9e..0000000
--- a/contrib/perl5/lib/utf8_heavy.pl
+++ /dev/null
@@ -1,221 +0,0 @@
-package utf8;
-
-my $DEBUG = 0;
-my $seq = "AAA0000";
-
-sub DESTROY {}
-
-sub croak { require Carp; Carp::croak(@_) }
-
-sub SWASHNEW {
- my ($class, $type, $list, $minbits, $none) = @_;
- local $^D = 0 if $^D;
- print STDERR "SWASHNEW @_\n" if $DEBUG;
- my $extras;
- my $bits;
-
- if ($type and ref ${"${class}::{$type}"} eq $class) {
- warn qq/Found \${"${class}::{$type}"}\n/ if $DEBUG;
- return ${"${class}::{$type}"}; # Already there...
- }
-
- $type ||= $seq++;
-
- my $caller;
- my $i = 0;
- while (($caller = caller($i)) eq __PACKAGE__) { $i++ }
- my $encoding = $enc{$caller} || "unicode";
- (my $file = $type) =~ s!::!/!g;
- $file =~ s#^(I[sn]|To)([A-Z].*)#$1/$2#;
- $list ||= eval { $caller->$type(); }
- || do "$file.pl"
- || do "$encoding/$file.pl"
- || do "$encoding/Is/${type}.pl"
- || croak("Can't find $encoding character property definition via $caller->$type or $file.pl");
-
- $| = 1;
-
- if ($list) {
- my @tmp = split(/^/m, $list);
- my %seen;
- no warnings;
- $extras = join '', grep /^[^0-9a-fA-F]/, @tmp;
- $list = join '',
- sort { hex $a <=> hex $b }
- grep {/^([0-9a-fA-F]+)/ and not $seen{$1}++} @tmp; # XXX doesn't do ranges right
- }
-
- if ($none) {
- my $hextra = sprintf "%04x", $none + 1;
- $list =~ s/\tXXXX$/\t$hextra/mg;
- }
-
- if ($minbits < 32) {
- my $top = 0;
- while ($list =~ /^([0-9a-fA-F]+)(?:\t([0-9a-fA-F]+)?)(?:\t([0-9a-fA-F]+))?/mg) {
- my $min = hex $1;
- my $max = hex(defined $2 ? $2 : $1);
- my $val = hex(defined $3 ? $3 : "");
- $val += $max - $min if defined $3;
- $top = $val if $val > $top;
- }
- $bits =
- $top > 0xffff ? 32 :
- $top > 0xff ? 16 :
- $top > 1 ? 8 : 1
- }
- $bits = $minbits if $bits < $minbits;
-
- my @extras;
- for my $x ($extras) {
- pos $x = 0;
- while ($x =~ /^([^0-9a-fA-F\n])(.*)/mg) {
- my $char = $1;
- my $name = $2;
- # print STDERR "$1 => $2\n" if $DEBUG;
- if ($char =~ /[-+!]/) {
- my ($c,$t) = split(/::/, $name, 2); # bogus use of ::, really
- my $subobj = $c->SWASHNEW($t, "", 0, 0, 0);
- push @extras, $name => $subobj;
- $bits = $subobj->{BITS} if $bits < $subobj->{BITS};
- }
- }
- }
-
- print STDERR "CLASS = $class, TYPE => $type, BITS => $bits, NONE => $none\nEXTRAS =>\n$extras\nLIST =>\n$list\n" if $DEBUG;
-
- ${"${class}::{$type}"} = bless {
- TYPE => $type,
- BITS => $bits,
- EXTRAS => $extras,
- LIST => $list,
- NONE => $none,
- @extras,
- } => $class;
-}
-
-# NOTE: utf8.c:swash_init() assumes entries are never modified once generated.
-
-sub SWASHGET {
- my ($self, $start, $len) = @_;
- local $^D = 0 if $^D;
- my $type = $self->{TYPE};
- my $bits = $self->{BITS};
- my $none = $self->{NONE};
- print STDERR "SWASHGET @_ [$type/$bits/$none]\n" if $DEBUG;
- my $end = $start + $len;
- my $swatch = "";
- my $key;
- vec($swatch, $len - 1, $bits) = 0; # Extend to correct length.
- if ($none) {
- for $key (0 .. $len - 1) { vec($swatch, $key, $bits) = $none }
- }
-
- for ($self->{LIST}) {
- pos $_ = 0;
- if ($bits > 1) {
- LINE:
- while (/^([0-9a-fA-F]+)(?:\t([0-9a-fA-F]+)?)(?:\t([0-9a-fA-F]+))?/mg) {
- my $min = hex $1;
- my $max = (defined $2 ? hex $2 : $min);
- my $val = hex $3;
- next if $max < $start;
-# print "$min $max $val\n";
- if ($none) {
- if ($min < $start) {
- $val += $start - $min if $val < $none;
- $min = $start;
- }
- for ($key = $min; $key <= $max; $key++) {
- last LINE if $key >= $end;
-# print STDERR "$key => $val\n" if $DEBUG;
- vec($swatch, $key - $start, $bits) = $val;
- ++$val if $val < $none;
- }
- }
- else {
- if ($min < $start) {
- $val += $start - $min;
- $min = $start;
- }
- for ($key = $min; $key <= $max; $key++, $val++) {
- last LINE if $key >= $end;
-# print STDERR "$key => $val\n" if $DEBUG;
- vec($swatch, $key - $start, $bits) = $val;
- }
- }
- }
- }
- else {
- LINE:
- while (/^([0-9a-fA-F]+)(?:\t([0-9a-fA-F]+))?/mg) {
- my $min = hex $1;
- my $max = (defined $2 ? hex $2 : $min);
- next if $max < $start;
- if ($min < $start) {
- $min = $start;
- }
- for ($key = $min; $key <= $max; $key++) {
- last LINE if $key >= $end;
-# print STDERR "$key => 1\n" if $DEBUG;
- vec($swatch, $key - $start, 1) = 1;
- }
- }
- }
- }
- for my $x ($self->{EXTRAS}) {
- pos $x = 0;
- while ($x =~ /^([-+!])(.*)/mg) {
- my $char = $1;
- my $name = $2;
- print STDERR "INDIRECT $1 $2\n" if $DEBUG;
- my $otherbits = $self->{$name}->{BITS};
- croak("SWASHGET size mismatch") if $bits < $otherbits;
- my $other = $self->{$name}->SWASHGET($start, $len);
- if ($char eq '+') {
- if ($bits == 1 and $otherbits == 1) {
- $swatch |= $other;
- }
- else {
- for ($key = 0; $key < $len; $key++) {
- vec($swatch, $key, $bits) = vec($other, $key, $otherbits);
- }
- }
- }
- elsif ($char eq '!') {
- if ($bits == 1 and $otherbits == 1) {
- $swatch |= ~$other;
- }
- else {
- for ($key = 0; $key < $len; $key++) {
- if (!vec($other, $key, $otherbits)) {
- vec($swatch, $key, $bits) = 1;
- }
- }
- }
- }
- elsif ($char eq '-') {
- if ($bits == 1 and $otherbits == 1) {
- $swatch &= ~$other;
- }
- else {
- for ($key = 0; $key < $len; $key++) {
- if (vec($other, $key, $otherbits)) {
- vec($swatch, $key, $bits) = 0;
- }
- }
- }
- }
- }
- }
- if ($DEBUG) {
- print STDERR "CELLS ";
- for ($key = 0; $key < $len; $key++) {
- print STDERR vec($swatch, $key, $bits), " ";
- }
- print STDERR "\n";
- }
- $swatch;
-}
-
-1;
diff --git a/contrib/perl5/lib/validate.pl b/contrib/perl5/lib/validate.pl
deleted file mode 100644
index ec4a04b..0000000
--- a/contrib/perl5/lib/validate.pl
+++ /dev/null
@@ -1,104 +0,0 @@
-;# $RCSfile: validate.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:24:19 $
-
-;# The validate routine takes a single multiline string consisting of
-;# lines containing a filename plus a file test to try on it. (The
-;# file test may also be a 'cd', causing subsequent relative filenames
-;# to be interpreted relative to that directory.) After the file test
-;# you may put '|| die' to make it a fatal error if the file test fails.
-;# The default is '|| warn'. The file test may optionally have a ! prepended
-;# to test for the opposite condition. If you do a cd and then list some
-;# relative filenames, you may want to indent them slightly for readability.
-;# If you supply your own "die" or "warn" message, you can use $file to
-;# interpolate the filename.
-
-;# Filetests may be bunched: -rwx tests for all of -r, -w and -x.
-;# Only the first failed test of the bunch will produce a warning.
-
-;# The routine returns the number of warnings issued.
-
-;# Usage:
-;# require "validate.pl";
-;# $warnings += do validate('
-;# /vmunix -e || die
-;# /boot -e || die
-;# /bin cd
-;# csh -ex
-;# csh !-ug
-;# sh -ex
-;# sh !-ug
-;# /usr -d || warn "What happened to $file?\n"
-;# ');
-
-sub validate {
- local($file,$test,$warnings,$oldwarnings);
- foreach $check (split(/\n/,$_[0])) {
- next if $check =~ /^#/;
- next if $check =~ /^$/;
- ($file,$test) = split(' ',$check,2);
- if ($test =~ s/^(!?-)(\w{2,}\b)/$1Z/) {
- $testlist = $2;
- @testlist = split(//,$testlist);
- }
- else {
- @testlist = ('Z');
- }
- $oldwarnings = $warnings;
- foreach $one (@testlist) {
- $this = $test;
- $this =~ s/(-\w\b)/$1 \$file/g;
- $this =~ s/-Z/-$one/;
- $this .= ' || warn' unless $this =~ /\|\|/;
- $this =~ s/^(.*\S)\s*\|\|\s*(die|warn)$/$1 || do valmess('$2','$1')/;
- $this =~ s/\bcd\b/chdir (\$cwd = \$file)/g;
- eval $this;
- last if $warnings > $oldwarnings;
- }
- }
- $warnings;
-}
-
-sub valmess {
- local($disposition,$this) = @_;
- $file = $cwd . '/' . $file unless $file =~ m|^/|;
- if ($this =~ /^(!?)-(\w)\s+\$file\s*$/) {
- $neg = $1;
- $tmp = $2;
- $tmp eq 'r' && ($mess = "$file is not readable by uid $>.");
- $tmp eq 'w' && ($mess = "$file is not writable by uid $>.");
- $tmp eq 'x' && ($mess = "$file is not executable by uid $>.");
- $tmp eq 'o' && ($mess = "$file is not owned by uid $>.");
- $tmp eq 'R' && ($mess = "$file is not readable by you.");
- $tmp eq 'W' && ($mess = "$file is not writable by you.");
- $tmp eq 'X' && ($mess = "$file is not executable by you.");
- $tmp eq 'O' && ($mess = "$file is not owned by you.");
- $tmp eq 'e' && ($mess = "$file does not exist.");
- $tmp eq 'z' && ($mess = "$file does not have zero size.");
- $tmp eq 's' && ($mess = "$file does not have non-zero size.");
- $tmp eq 'f' && ($mess = "$file is not a plain file.");
- $tmp eq 'd' && ($mess = "$file is not a directory.");
- $tmp eq 'l' && ($mess = "$file is not a symbolic link.");
- $tmp eq 'p' && ($mess = "$file is not a named pipe (FIFO).");
- $tmp eq 'S' && ($mess = "$file is not a socket.");
- $tmp eq 'b' && ($mess = "$file is not a block special file.");
- $tmp eq 'c' && ($mess = "$file is not a character special file.");
- $tmp eq 'u' && ($mess = "$file does not have the setuid bit set.");
- $tmp eq 'g' && ($mess = "$file does not have the setgid bit set.");
- $tmp eq 'k' && ($mess = "$file does not have the sticky bit set.");
- $tmp eq 'T' && ($mess = "$file is not a text file.");
- $tmp eq 'B' && ($mess = "$file is not a binary file.");
- if ($neg eq '!') {
- $mess =~ s/ is not / should not be / ||
- $mess =~ s/ does not / should not / ||
- $mess =~ s/ not / /;
- }
- print STDERR $mess,"\n";
- }
- else {
- $this =~ s/\$file/'$file'/g;
- print STDERR "Can't do $this.\n";
- }
- if ($disposition eq 'die') { exit 1; }
- ++$warnings;
-}
-
-1;
diff --git a/contrib/perl5/lib/vars.pm b/contrib/perl5/lib/vars.pm
deleted file mode 100644
index 39a15bd..0000000
--- a/contrib/perl5/lib/vars.pm
+++ /dev/null
@@ -1,83 +0,0 @@
-package vars;
-
-require 5.002;
-
-# The following require can't be removed during maintenance
-# releases, sadly, because of the risk of buggy code that does
-# require Carp; Carp::croak "..."; without brackets dying
-# if Carp hasn't been loaded in earlier compile time. :-(
-# We'll let those bugs get found on the development track.
-require Carp if $] < 5.00450;
-
-use warnings::register;
-require strict;
-
-sub import {
- my $callpack = caller;
- my ($pack, @imports, $sym, $ch) = @_;
- foreach $sym (@imports) {
- ($ch, $sym) = unpack('a1a*', $sym);
- if ($sym =~ tr/A-Za-z_0-9//c) {
- # time for a more-detailed check-up
- if ($sym =~ /::/) {
- require Carp;
- Carp::croak("Can't declare another package's variables");
- } elsif ($sym =~ /^\w+[[{].*[]}]$/) {
- require Carp;
- Carp::croak("Can't declare individual elements of hash or array");
- } elsif (warnings::enabled() and length($sym) == 1 and $sym !~ tr/a-zA-Z//) {
- warnings::warn("No need to declare built-in vars");
- } elsif ( $^H &= strict::bits('vars') ) {
- Carp::croak("'$ch$sym' is not a valid variable name under strict vars");
- }
- }
- *{"${callpack}::$sym"} =
- ( $ch eq "\$" ? \$ {"${callpack}::$sym"}
- : $ch eq "\@" ? \@ {"${callpack}::$sym"}
- : $ch eq "\%" ? \% {"${callpack}::$sym"}
- : $ch eq "\*" ? \* {"${callpack}::$sym"}
- : $ch eq "\&" ? \& {"${callpack}::$sym"}
- : do {
- require Carp;
- Carp::croak("'$ch$sym' is not a valid variable name");
- });
- }
-};
-
-1;
-__END__
-
-=head1 NAME
-
-vars - Perl pragma to predeclare global variable names (obsolete)
-
-=head1 SYNOPSIS
-
- use vars qw($frob @mung %seen);
-
-=head1 DESCRIPTION
-
-NOTE: The functionality provided by this pragma has been superseded
-by C<our> declarations, available in Perl v5.6.0 or later. See
-L<perlfunc/our>.
-
-This will predeclare all the variables whose names are
-in the list, allowing you to use them under "use strict", and
-disabling any typo warnings.
-
-Unlike pragmas that affect the C<$^H> hints variable, the C<use vars> and
-C<use subs> declarations are not BLOCK-scoped. They are thus effective
-for the entire file in which they appear. You may not rescind such
-declarations with C<no vars> or C<no subs>.
-
-Packages such as the B<AutoLoader> and B<SelfLoader> that delay
-loading of subroutines within packages can create problems with
-package lexicals defined using C<my()>. While the B<vars> pragma
-cannot duplicate the effect of package lexicals (total transparency
-outside of the package), it can act as an acceptable substitute by
-pre-declaring global symbols, ensuring their availability to the
-later-loaded routines.
-
-See L<perlmodlib/Pragmatic Modules>.
-
-=cut
diff --git a/contrib/perl5/lib/warnings.pm b/contrib/perl5/lib/warnings.pm
deleted file mode 100644
index 2517239..0000000
--- a/contrib/perl5/lib/warnings.pm
+++ /dev/null
@@ -1,419 +0,0 @@
-
-# This file was created by warnings.pl
-# Any changes made here will be lost.
-#
-
-package warnings;
-
-=head1 NAME
-
-warnings - Perl pragma to control optional warnings
-
-=head1 SYNOPSIS
-
- use warnings;
- no warnings;
-
- use warnings "all";
- no warnings "all";
-
- use warnings::register;
- if (warnings::enabled()) {
- warnings::warn("some warning");
- }
-
- if (warnings::enabled("void")) {
- warnings::warn("void", "some warning");
- }
-
- if (warnings::enabled($object)) {
- warnings::warn($object, "some warning");
- }
-
- warnif("some warning");
- warnif("void", "some warning");
- warnif($object, "some warning");
-
-=head1 DESCRIPTION
-
-If no import list is supplied, all possible warnings are either enabled
-or disabled.
-
-A number of functions are provided to assist module authors.
-
-=over 4
-
-=item use warnings::register
-
-Creates a new warnings category with the same name as the package where
-the call to the pragma is used.
-
-=item warnings::enabled()
-
-Use the warnings category with the same name as the current package.
-
-Return TRUE if that warnings category is enabled in the calling module.
-Otherwise returns FALSE.
-
-=item warnings::enabled($category)
-
-Return TRUE if the warnings category, C<$category>, is enabled in the
-calling module.
-Otherwise returns FALSE.
-
-=item warnings::enabled($object)
-
-Use the name of the class for the object reference, C<$object>, as the
-warnings category.
-
-Return TRUE if that warnings category is enabled in the first scope
-where the object is used.
-Otherwise returns FALSE.
-
-=item warnings::warn($message)
-
-Print C<$message> to STDERR.
-
-Use the warnings category with the same name as the current package.
-
-If that warnings category has been set to "FATAL" in the calling module
-then die. Otherwise return.
-
-=item warnings::warn($category, $message)
-
-Print C<$message> to STDERR.
-
-If the warnings category, C<$category>, has been set to "FATAL" in the
-calling module then die. Otherwise return.
-
-=item warnings::warn($object, $message)
-
-Print C<$message> to STDERR.
-
-Use the name of the class for the object reference, C<$object>, as the
-warnings category.
-
-If that warnings category has been set to "FATAL" in the scope where C<$object>
-is first used then die. Otherwise return.
-
-
-=item warnings::warnif($message)
-
-Equivalent to:
-
- if (warnings::enabled())
- { warnings::warn($message) }
-
-=item warnings::warnif($category, $message)
-
-Equivalent to:
-
- if (warnings::enabled($category))
- { warnings::warn($category, $message) }
-
-=item warnings::warnif($object, $message)
-
-Equivalent to:
-
- if (warnings::enabled($object))
- { warnings::warn($object, $message) }
-
-=back
-
-See L<perlmodlib/Pragmatic Modules> and L<perllexwarn>.
-
-=cut
-
-use Carp ;
-
-%Offsets = (
- 'all' => 0,
- 'chmod' => 2,
- 'closure' => 4,
- 'exiting' => 6,
- 'glob' => 8,
- 'io' => 10,
- 'closed' => 12,
- 'exec' => 14,
- 'newline' => 16,
- 'pipe' => 18,
- 'unopened' => 20,
- 'misc' => 22,
- 'numeric' => 24,
- 'once' => 26,
- 'overflow' => 28,
- 'pack' => 30,
- 'portable' => 32,
- 'recursion' => 34,
- 'redefine' => 36,
- 'regexp' => 38,
- 'severe' => 40,
- 'debugging' => 42,
- 'inplace' => 44,
- 'internal' => 46,
- 'malloc' => 48,
- 'signal' => 50,
- 'substr' => 52,
- 'syntax' => 54,
- 'ambiguous' => 56,
- 'bareword' => 58,
- 'deprecated' => 60,
- 'digit' => 62,
- 'parenthesis' => 64,
- 'precedence' => 66,
- 'printf' => 68,
- 'prototype' => 70,
- 'qw' => 72,
- 'reserved' => 74,
- 'semicolon' => 76,
- 'taint' => 78,
- 'umask' => 80,
- 'uninitialized' => 82,
- 'unpack' => 84,
- 'untie' => 86,
- 'utf8' => 88,
- 'void' => 90,
- 'y2k' => 92,
- );
-
-%Bits = (
- 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", # [0..46]
- 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [28]
- 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [29]
- 'chmod' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
- 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
- 'closure' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
- 'debugging' => "\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [21]
- 'deprecated' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [30]
- 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [31]
- 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
- 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
- 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
- 'inplace' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [22]
- 'internal' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [23]
- 'io' => "\x00\x54\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..10]
- 'malloc' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [24]
- 'misc' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
- 'newline' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
- 'numeric' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
- 'once' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
- 'overflow' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
- 'pack' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
- 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [32]
- 'pipe' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
- 'portable' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [16]
- 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [33]
- 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [34]
- 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [35]
- 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [36]
- 'recursion' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [17]
- 'redefine' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [18]
- 'regexp' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [19]
- 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [37]
- 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [38]
- 'severe' => "\x00\x00\x00\x00\x00\x55\x01\x00\x00\x00\x00\x00", # [20..24]
- 'signal' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [25]
- 'substr' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [26]
- 'syntax' => "\x00\x00\x00\x00\x00\x00\x40\x55\x55\x15\x00\x00", # [27..38]
- 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [39]
- 'umask' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [40]
- 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [41]
- 'unopened' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
- 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [42]
- 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [43]
- 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [44]
- 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [45]
- 'y2k' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [46]
- );
-
-%DeadBits = (
- 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x2a", # [0..46]
- 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [28]
- 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [29]
- 'chmod' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
- 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
- 'closure' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
- 'debugging' => "\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [21]
- 'deprecated' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [30]
- 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [31]
- 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
- 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
- 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
- 'inplace' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [22]
- 'internal' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [23]
- 'io' => "\x00\xa8\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..10]
- 'malloc' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [24]
- 'misc' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
- 'newline' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
- 'numeric' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
- 'once' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
- 'overflow' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
- 'pack' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
- 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [32]
- 'pipe' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
- 'portable' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [16]
- 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [33]
- 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [34]
- 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [35]
- 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [36]
- 'recursion' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [17]
- 'redefine' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [18]
- 'regexp' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [19]
- 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [37]
- 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [38]
- 'severe' => "\x00\x00\x00\x00\x00\xaa\x02\x00\x00\x00\x00\x00", # [20..24]
- 'signal' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [25]
- 'substr' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [26]
- 'syntax' => "\x00\x00\x00\x00\x00\x00\x80\xaa\xaa\x2a\x00\x00", # [27..38]
- 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [39]
- 'umask' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [40]
- 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [41]
- 'unopened' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
- 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [42]
- 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [43]
- 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [44]
- 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [45]
- 'y2k' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [46]
- );
-
-$NONE = "\0\0\0\0\0\0\0\0\0\0\0\0";
-$LAST_BIT = 94 ;
-$BYTES = 12 ;
-
-$All = "" ; vec($All, $Offsets{'all'}, 2) = 3 ;
-
-sub bits {
- my $mask ;
- my $catmask ;
- my $fatal = 0 ;
- foreach my $word (@_) {
- if ($word eq 'FATAL') {
- $fatal = 1;
- }
- elsif ($catmask = $Bits{$word}) {
- $mask |= $catmask ;
- $mask |= $DeadBits{$word} if $fatal ;
- }
- else
- { croak("unknown warnings category '$word'")}
- }
-
- return $mask ;
-}
-
-sub import {
- shift;
- my $mask = ${^WARNING_BITS} ;
- if (vec($mask, $Offsets{'all'}, 1)) {
- $mask |= $Bits{'all'} ;
- $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1);
- }
- ${^WARNING_BITS} = $mask | bits(@_ ? @_ : 'all') ;
-}
-
-sub unimport {
- shift;
- my $mask = ${^WARNING_BITS} ;
- if (vec($mask, $Offsets{'all'}, 1)) {
- $mask |= $Bits{'all'} ;
- $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1);
- }
- ${^WARNING_BITS} = $mask & ~ (bits(@_ ? @_ : 'all') | $All) ;
-}
-
-sub __chk
-{
- my $category ;
- my $offset ;
- my $isobj = 0 ;
-
- if (@_) {
- # check the category supplied.
- $category = shift ;
- if (ref $category) {
- croak ("not an object")
- if $category !~ /^([^=]+)=/ ;+
- $category = $1 ;
- $isobj = 1 ;
- }
- $offset = $Offsets{$category};
- croak("unknown warnings category '$category'")
- unless defined $offset;
- }
- else {
- $category = (caller(1))[0] ;
- $offset = $Offsets{$category};
- croak("package '$category' not registered for warnings")
- unless defined $offset ;
- }
-
- my $this_pkg = (caller(1))[0] ;
- my $i = 2 ;
- my $pkg ;
-
- if ($isobj) {
- while (do { { package DB; $pkg = (caller($i++))[0] } } ) {
- last unless @DB::args && $DB::args[0] =~ /^$category=/ ;
- }
- $i -= 2 ;
- }
- else {
- for ($i = 2 ; $pkg = (caller($i))[0] ; ++ $i) {
- last if $pkg ne $this_pkg ;
- }
- $i = 2
- if !$pkg || $pkg eq $this_pkg ;
- }
-
- my $callers_bitmask = (caller($i))[9] ;
- return ($callers_bitmask, $offset, $i) ;
-}
-
-sub enabled
-{
- croak("Usage: warnings::enabled([category])")
- unless @_ == 1 || @_ == 0 ;
-
- my ($callers_bitmask, $offset, $i) = __chk(@_) ;
-
- return 0 unless defined $callers_bitmask ;
- return vec($callers_bitmask, $offset, 1) ||
- vec($callers_bitmask, $Offsets{'all'}, 1) ;
-}
-
-
-sub warn
-{
- croak("Usage: warnings::warn([category,] 'message')")
- unless @_ == 2 || @_ == 1 ;
-
- my $message = pop ;
- my ($callers_bitmask, $offset, $i) = __chk(@_) ;
- local $Carp::CarpLevel = $i ;
- croak($message)
- if vec($callers_bitmask, $offset+1, 1) ||
- vec($callers_bitmask, $Offsets{'all'}+1, 1) ;
- carp($message) ;
-}
-
-sub warnif
-{
- croak("Usage: warnings::warnif([category,] 'message')")
- unless @_ == 2 || @_ == 1 ;
-
- my $message = pop ;
- my ($callers_bitmask, $offset, $i) = __chk(@_) ;
- local $Carp::CarpLevel = $i ;
-
- return
- unless defined $callers_bitmask &&
- (vec($callers_bitmask, $offset, 1) ||
- vec($callers_bitmask, $Offsets{'all'}, 1)) ;
-
- croak($message)
- if vec($callers_bitmask, $offset+1, 1) ||
- vec($callers_bitmask, $Offsets{'all'}+1, 1) ;
-
- carp($message) ;
-}
-1;
diff --git a/contrib/perl5/lib/warnings/register.pm b/contrib/perl5/lib/warnings/register.pm
deleted file mode 100644
index f98075a..0000000
--- a/contrib/perl5/lib/warnings/register.pm
+++ /dev/null
@@ -1,38 +0,0 @@
-package warnings::register ;
-
-=pod
-
-=head1 NAME
-
-warnings::register - warnings import function
-
-=cut
-
-require warnings ;
-
-sub mkMask
-{
- my ($bit) = @_ ;
- my $mask = "" ;
-
- vec($mask, $bit, 1) = 1 ;
- return $mask ;
-}
-
-sub import
-{
- shift ;
- my $package = (caller(0))[0] ;
- if (! defined $warnings::Bits{$package}) {
- $warnings::Bits{$package} = mkMask($warnings::LAST_BIT) ;
- vec($warnings::Bits{'all'}, $warnings::LAST_BIT, 1) = 1 ;
- $warnings::Offsets{$package} = $warnings::LAST_BIT ++ ;
- foreach my $k (keys %warnings::Bits) {
- vec($warnings::Bits{$k}, $warnings::LAST_BIT, 1) = 0 ;
- }
- $warnings::DeadBits{$package} = mkMask($warnings::LAST_BIT);
- vec($warnings::DeadBits{'all'}, $warnings::LAST_BIT++, 1) = 1 ;
- }
-}
-
-1 ;
OpenPOWER on IntegriCloud