summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2008-01-06 17:27:49 +0000
committerNorbert Preining <preining@logic.at>2008-01-06 17:27:49 +0000
commitb6d71a48c3eb427a60bc1c9b4b8e3f16b695bf66 (patch)
tree374beef8c61dd2f05dc36686cd5f63c393ca1f9c /Master
parent7112ae868388a986572aec9c821f1971b2156351 (diff)
big perl removal, all the bin-perl related stuff is gone:
- Master/perltl the perl library - bin/win32/perl,tk the bin/dll - the bin-perl.tlpsrc - collection-perl.tlpsrc (where did this come from) - collection-perl removed from collection-wintools git-svn-id: svn://tug.org/texlive/trunk@6062 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rwxr-xr-xMaster/bin/win32/perl.exebin3584 -> 0 bytes
-rwxr-xr-xMaster/bin/win32/perl58.dllbin901120 -> 0 bytes
-rwxr-xr-xMaster/bin/win32/tk83.dllbin729088 -> 0 bytes
-rw-r--r--Master/perltl/lib/AnyDBM_File.pm93
-rw-r--r--Master/perltl/lib/AutoLoader.pm337
-rw-r--r--Master/perltl/lib/B.pm971
-rw-r--r--Master/perltl/lib/B/Deparse.pm4233
-rw-r--r--Master/perltl/lib/Carp.pm196
-rw-r--r--Master/perltl/lib/Carp/Heavy.pm247
-rw-r--r--Master/perltl/lib/Class/Struct.pm632
-rw-r--r--Master/perltl/lib/Config.pm8895
-rw-r--r--Master/perltl/lib/Cwd.pm570
-rw-r--r--Master/perltl/lib/Data/Dumper.pm1160
-rw-r--r--Master/perltl/lib/Digest/MD5.pm279
-rw-r--r--Master/perltl/lib/DynaLoader.pm826
-rw-r--r--Master/perltl/lib/Errno.pm221
-rw-r--r--Master/perltl/lib/Exporter.pm416
-rw-r--r--Master/perltl/lib/Exporter/Heavy.pm232
-rw-r--r--Master/perltl/lib/Fcntl.pm216
-rw-r--r--Master/perltl/lib/File/Basename.pm289
-rw-r--r--Master/perltl/lib/File/Compare.pm178
-rw-r--r--Master/perltl/lib/File/Copy.pm443
-rw-r--r--Master/perltl/lib/File/Find.pm1212
-rw-r--r--Master/perltl/lib/File/Glob.pm465
-rw-r--r--Master/perltl/lib/File/Path.pm267
-rw-r--r--Master/perltl/lib/File/Spec.pm292
-rw-r--r--Master/perltl/lib/File/Spec/Functions.pm109
-rw-r--r--Master/perltl/lib/File/Spec/Unix.pm482
-rw-r--r--Master/perltl/lib/File/Spec/Win32.pm370
-rw-r--r--Master/perltl/lib/File/Temp.pm1876
-rw-r--r--Master/perltl/lib/FindBin.pm183
-rw-r--r--Master/perltl/lib/Getopt/Long.pm2048
-rw-r--r--Master/perltl/lib/IO.pm47
-rw-r--r--Master/perltl/lib/IO/File.pm169
-rw-r--r--Master/perltl/lib/IO/Handle.pm613
-rw-r--r--Master/perltl/lib/IO/Seekable.pm128
-rw-r--r--Master/perltl/lib/List/Util.pm194
-rw-r--r--Master/perltl/lib/POSIX.pm950
-rw-r--r--Master/perltl/lib/SDBM_File.pm116
-rw-r--r--Master/perltl/lib/Scalar/Util.pm170
-rw-r--r--Master/perltl/lib/SelectSaver.pm54
-rw-r--r--Master/perltl/lib/Symbol.pm162
-rw-r--r--Master/perltl/lib/Term/Cap.pm651
-rw-r--r--Master/perltl/lib/Text/ParseWords.pm263
-rw-r--r--Master/perltl/lib/Text/Tabs.pm97
-rw-r--r--Master/perltl/lib/Text/Wrap.pm211
-rw-r--r--Master/perltl/lib/Tie/Hash.pm243
-rw-r--r--Master/perltl/lib/Tie/Scalar.pm140
-rw-r--r--Master/perltl/lib/Time/HiRes.pm357
-rw-r--r--Master/perltl/lib/Time/Local.pm255
-rw-r--r--Master/perltl/lib/UNIVERSAL.pm118
-rw-r--r--Master/perltl/lib/XSLoader.pm138
-rw-r--r--Master/perltl/lib/attributes.pm414
-rw-r--r--Master/perltl/lib/auto/B/B.dllbin90112 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/Cwd/Cwd.dllbin6656 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/Data/Dumper/Dumper.dllbin20992 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/Digest/MD5/MD5.dllbin12800 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/DynaLoader/autosplit.ix8
-rw-r--r--Master/perltl/lib/auto/DynaLoader/dl_expandspec.al34
-rw-r--r--Master/perltl/lib/auto/DynaLoader/dl_find_symbol_anywhere.al19
-rw-r--r--Master/perltl/lib/auto/DynaLoader/dl_findfile.al115
-rw-r--r--Master/perltl/lib/auto/Fcntl/Fcntl.dllbin10752 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/File/Glob/Glob.dllbin12800 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/IO/IO.dllbin12288 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/List/Util/Util.dllbin15872 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/POSIX/POSIX.dllbin86016 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/POSIX/abs.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/alarm.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/assert.al15
-rw-r--r--Master/perltl/lib/auto/POSIX/atan2.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/atexit.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/atof.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/atoi.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/atol.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/autosplit.ix153
-rw-r--r--Master/perltl/lib/auto/POSIX/bsearch.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/calloc.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/chdir.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/chmod.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/chown.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/clearerr.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/closedir.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/cos.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/creat.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/div.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/errno.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/execl.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/execle.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/execlp.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/execv.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/execve.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/execvp.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/exit.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/exp.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/fabs.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/fclose.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fcntl.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/fdopen.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/feof.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/ferror.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fflush.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fgetc.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fgetpos.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fgets.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fileno.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fopen.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fork.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/fprintf.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fputc.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fputs.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fread.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/free.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/freopen.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fscanf.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fseek.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fsetpos.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fstat.al17
-rw-r--r--Master/perltl/lib/auto/POSIX/ftell.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/fwrite.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/getc.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getchar.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getegid.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getenv.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/geteuid.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getgid.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getgrgid.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getgrnam.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getgroups.al14
-rw-r--r--Master/perltl/lib/auto/POSIX/getlogin.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getpgrp.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getpid.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getppid.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getpwnam.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getpwuid.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/gets.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/getuid.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/gmtime.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/isatty.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/kill.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/labs.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/ldiv.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/link.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/load_imports.al224
-rw-r--r--Master/perltl/lib/auto/POSIX/localtime.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/log.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/longjmp.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/malloc.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/memchr.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/memcmp.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/memcpy.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/memmove.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/memset.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/mkdir.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/offsetof.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/opendir.al16
-rw-r--r--Master/perltl/lib/auto/POSIX/perror.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/pow.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/printf.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/putc.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/putchar.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/puts.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/qsort.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/raise.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/rand.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/readdir.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/realloc.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/redef.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/remove.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/rename.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/rewind.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/rewinddir.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/rmdir.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/scanf.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/setbuf.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/setjmp.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/setvbuf.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/siglongjmp.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/sigsetjmp.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/sin.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/sleep.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/sprintf.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/sqrt.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/srand.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/sscanf.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/stat.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/strcat.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strchr.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strcmp.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strcpy.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strcspn.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strerror.al14
-rw-r--r--Master/perltl/lib/auto/POSIX/strlen.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strncat.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strncmp.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strncpy.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strpbrk.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strrchr.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strspn.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/strstr.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/strtok.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/system.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/time.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/tmpfile.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/tolower.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/toupper.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/umask.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/ungetc.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/unimpl.al14
-rw-r--r--Master/perltl/lib/auto/POSIX/unlink.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/usage.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/utime.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/vfprintf.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/vprintf.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/vsprintf.al12
-rw-r--r--Master/perltl/lib/auto/POSIX/wait.al13
-rw-r--r--Master/perltl/lib/auto/POSIX/waitpid.al13
-rw-r--r--Master/perltl/lib/auto/SDBM_File/SDBM_File.dllbin20480 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/Time/HiRes/HiRes.dllbin10240 -> 0 bytes
-rw-r--r--Master/perltl/lib/auto/re/re.dllbin114688 -> 0 bytes
-rw-r--r--Master/perltl/lib/base.pm94
-rw-r--r--Master/perltl/lib/bytes.pm68
-rw-r--r--Master/perltl/lib/bytes_heavy.pl8
-rw-r--r--Master/perltl/lib/constant.pm345
-rw-r--r--Master/perltl/lib/fields.pm285
-rw-r--r--Master/perltl/lib/integer.pm93
-rw-r--r--Master/perltl/lib/lib.pm205
-rw-r--r--Master/perltl/lib/newgetopt.pl75
-rw-r--r--Master/perltl/lib/overload.pm1432
-rw-r--r--Master/perltl/lib/re.pm134
-rw-r--r--Master/perltl/lib/strict.pm117
-rw-r--r--Master/perltl/lib/subs.pm40
-rw-r--r--Master/perltl/lib/unicore/ArabLink.pl49
-rw-r--r--Master/perltl/lib/unicore/ArabLnkGrp.pl98
-rw-r--r--Master/perltl/lib/unicore/Bidirectional.pl692
-rw-r--r--Master/perltl/lib/unicore/Blocks.pl116
-rw-r--r--Master/perltl/lib/unicore/Canonical.pl816
-rw-r--r--Master/perltl/lib/unicore/Category.pl1732
-rw-r--r--Master/perltl/lib/unicore/CombiningClass.pl169
-rw-r--r--Master/perltl/lib/unicore/Decomposition.pl5120
-rw-r--r--Master/perltl/lib/unicore/Exact.pl110
-rw-r--r--Master/perltl/lib/unicore/JamoShort.pl73
-rw-r--r--Master/perltl/lib/unicore/Lbrk.pl1073
-rw-r--r--Master/perltl/lib/unicore/Name.pl13869
-rw-r--r--Master/perltl/lib/unicore/Number.pl537
-rw-r--r--Master/perltl/lib/unicore/Scripts.pl371
-rw-r--r--Master/perltl/lib/unicore/To/Digit.pl274
-rw-r--r--Master/perltl/lib/unicore/To/Fold.pl849
-rw-r--r--Master/perltl/lib/unicore/To/Lower.pl760
-rw-r--r--Master/perltl/lib/unicore/To/Title.pl818
-rw-r--r--Master/perltl/lib/unicore/To/Upper.pl845
-rw-r--r--Master/perltl/lib/unicore/lib/ASCII.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/Alnum.pl423
-rw-r--r--Master/perltl/lib/unicore/lib/Alpha.pl390
-rw-r--r--Master/perltl/lib/unicore/lib/Alphabet.pl372
-rw-r--r--Master/perltl/lib/unicore/lib/Any.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Arabic.pl26
-rw-r--r--Master/perltl/lib/unicore/lib/Armenian.pl16
-rw-r--r--Master/perltl/lib/unicore/lib/AsciiHex.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/Assigned.pl398
-rw-r--r--Master/perltl/lib/unicore/lib/Bengali.pl27
-rw-r--r--Master/perltl/lib/unicore/lib/BidiAL.pl33
-rw-r--r--Master/perltl/lib/unicore/lib/BidiAN.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/BidiB.pl17
-rw-r--r--Master/perltl/lib/unicore/lib/BidiBN.pl26
-rw-r--r--Master/perltl/lib/unicore/lib/BidiCS.pl23
-rw-r--r--Master/perltl/lib/unicore/lib/BidiCont.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/BidiEN.pl23
-rw-r--r--Master/perltl/lib/unicore/lib/BidiES.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/BidiET.pl36
-rw-r--r--Master/perltl/lib/unicore/lib/BidiL.pl366
-rw-r--r--Master/perltl/lib/unicore/lib/BidiLRE.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/BidiLRO.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/BidiNSM.pl115
-rw-r--r--Master/perltl/lib/unicore/lib/BidiON.pl121
-rw-r--r--Master/perltl/lib/unicore/lib/BidiPDF.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/BidiR.pl26
-rw-r--r--Master/perltl/lib/unicore/lib/BidiRLE.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/BidiRLO.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/BidiS.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/BidiWS.pl20
-rw-r--r--Master/perltl/lib/unicore/lib/Blank.pl20
-rw-r--r--Master/perltl/lib/unicore/lib/Bopomofo.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Buhid.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/C.pl400
-rw-r--r--Master/perltl/lib/unicore/lib/Canadian.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Canon.pl224
-rw-r--r--Master/perltl/lib/unicore/lib/Cc.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/Cf.pl25
-rw-r--r--Master/perltl/lib/unicore/lib/Cherokee.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/Cn.pl399
-rw-r--r--Master/perltl/lib/unicore/lib/Cntrl.pl29
-rw-r--r--Master/perltl/lib/unicore/lib/Co.pl16
-rw-r--r--Master/perltl/lib/unicore/lib/Common.pl367
-rw-r--r--Master/perltl/lib/unicore/lib/Compat.pl143
-rw-r--r--Master/perltl/lib/unicore/lib/Cs.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Cyrillic.pl18
-rw-r--r--Master/perltl/lib/unicore/lib/DCcircle.pl17
-rw-r--r--Master/perltl/lib/unicore/lib/DCcompat.pl81
-rw-r--r--Master/perltl/lib/unicore/lib/DCfinal.pl125
-rw-r--r--Master/perltl/lib/unicore/lib/DCfont.pl47
-rw-r--r--Master/perltl/lib/unicore/lib/DCfracti.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/DCinitia.pl87
-rw-r--r--Master/perltl/lib/unicore/lib/DCisolat.pl110
-rw-r--r--Master/perltl/lib/unicore/lib/DCmedial.pl66
-rw-r--r--Master/perltl/lib/unicore/lib/DCnarrow.pl18
-rw-r--r--Master/perltl/lib/unicore/lib/DCnoBrea.pl17
-rw-r--r--Master/perltl/lib/unicore/lib/DCsmall.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/DCsquare.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/DCsub.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/DCsuper.pl22
-rw-r--r--Master/perltl/lib/unicore/lib/DCvertic.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/DCwide.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/Dash.pl26
-rw-r--r--Master/perltl/lib/unicore/lib/Deprecat.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Deseret.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Devanaga.pl18
-rw-r--r--Master/perltl/lib/unicore/lib/Diacriti.pl89
-rw-r--r--Master/perltl/lib/unicore/lib/Digit.pl33
-rw-r--r--Master/perltl/lib/unicore/lib/Ethiopic.pl38
-rw-r--r--Master/perltl/lib/unicore/lib/Extender.pl23
-rw-r--r--Master/perltl/lib/unicore/lib/Georgian.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Gothic.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/Graph.pl398
-rw-r--r--Master/perltl/lib/unicore/lib/Grapheme.pl25
-rw-r--r--Master/perltl/lib/unicore/lib/Greek.pl40
-rw-r--r--Master/perltl/lib/unicore/lib/Gujarati.pl26
-rw-r--r--Master/perltl/lib/unicore/lib/Gurmukhi.pl27
-rw-r--r--Master/perltl/lib/unicore/lib/Han.pl25
-rw-r--r--Master/perltl/lib/unicore/lib/Hangul.pl22
-rw-r--r--Master/perltl/lib/unicore/lib/Hanunoo.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/Hebrew.pl22
-rw-r--r--Master/perltl/lib/unicore/lib/HexDigit.pl18
-rw-r--r--Master/perltl/lib/unicore/lib/Hiragana.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Hyphen.pl21
-rw-r--r--Master/perltl/lib/unicore/lib/IdContin.pl416
-rw-r--r--Master/perltl/lib/unicore/lib/IdStart.pl321
-rw-r--r--Master/perltl/lib/unicore/lib/Ideograp.pl20
-rw-r--r--Master/perltl/lib/unicore/lib/IdsBinar.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/IdsTrina.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InAlphab.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InArabi2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InArabi3.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InArabic.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InArmeni.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InArrows.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InBasicL.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InBengal.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InBlockE.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InBopom2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InBopomo.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InBoxDra.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InBraill.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InBuhid.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InByzant.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCherok.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCjkCo2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCjkCo3.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCjkCo4.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCjkCom.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCjkRad.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCjkSym.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCjkUn2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCjkUn3.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCjkUni.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCombi2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCombi3.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCombin.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InContro.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCurren.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCyril2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InCyrill.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InDesere.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InDevana.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InDingba.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InEnclo2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InEnclos.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InEthiop.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InGenera.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InGeomet.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InGeorgi.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InGothic.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InGreek.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InGreekA.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InGreekE.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InGujara.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InGurmuk.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InHalfwi.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InHangu2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InHangu3.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InHangul.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InHanuno.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InHebrew.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InHighPr.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InHighSu.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InHiraga.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InIdeogr.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InIpaExt.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InKanbun.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InKangxi.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InKannad.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InKatak2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InKataka.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InKhmer.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InLao.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InLatin1.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InLatin2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InLatin3.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InLatinE.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InLetter.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InLowSur.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InMalaya.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InMathe2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InMathem.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InMisce2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InMisce3.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InMisce4.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InMiscel.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InMongol.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InMusica.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InMyanma.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InNumber.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InOgham.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InOldIta.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InOptica.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InOriya.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InPrivat.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InRunic.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSinhal.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSmallF.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSpacin.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSpecia.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSupers.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSuppl2.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSuppl3.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSuppl4.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSuppl5.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSupple.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InSyriac.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InTagalo.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InTagban.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InTags.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InTamil.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InTelugu.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InThaana.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InThai.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InTibeta.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InUnifie.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InVariat.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InYiRadi.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/InYiSyll.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/Inherite.pl37
-rw-r--r--Master/perltl/lib/unicore/lib/JoinCont.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/Kannada.pl25
-rw-r--r--Master/perltl/lib/unicore/lib/Katakana.pl17
-rw-r--r--Master/perltl/lib/unicore/lib/Khmer.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/L.pl319
-rw-r--r--Master/perltl/lib/unicore/lib/L_.pl112
-rw-r--r--Master/perltl/lib/unicore/lib/Lao.pl30
-rw-r--r--Master/perltl/lib/unicore/lib/Latin.pl31
-rw-r--r--Master/perltl/lib/unicore/lib/Ll.pl433
-rw-r--r--Master/perltl/lib/unicore/lib/Lm.pl33
-rw-r--r--Master/perltl/lib/unicore/lib/Lo.pl217
-rw-r--r--Master/perltl/lib/unicore/lib/LogicalO.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Lower.pl432
-rw-r--r--Master/perltl/lib/unicore/lib/Lowercas.pl439
-rw-r--r--Master/perltl/lib/unicore/lib/Lt.pl23
-rw-r--r--Master/perltl/lib/unicore/lib/Lu.pl432
-rw-r--r--Master/perltl/lib/unicore/lib/M.pl125
-rw-r--r--Master/perltl/lib/unicore/lib/Malayala.pl23
-rw-r--r--Master/perltl/lib/unicore/lib/Math.pl101
-rw-r--r--Master/perltl/lib/unicore/lib/Mc.pl65
-rw-r--r--Master/perltl/lib/unicore/lib/Me.pl17
-rw-r--r--Master/perltl/lib/unicore/lib/Mirrored.pl105
-rw-r--r--Master/perltl/lib/unicore/lib/Mn.pl117
-rw-r--r--Master/perltl/lib/unicore/lib/Mongolia.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/Myanmar.pl19
-rw-r--r--Master/perltl/lib/unicore/lib/N.pl56
-rw-r--r--Master/perltl/lib/unicore/lib/Nd.pl34
-rw-r--r--Master/perltl/lib/unicore/lib/Nl.pl19
-rw-r--r--Master/perltl/lib/unicore/lib/No.pl33
-rw-r--r--Master/perltl/lib/unicore/lib/Nonchara.pl30
-rw-r--r--Master/perltl/lib/unicore/lib/Ogham.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/OldItali.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/Oriya.pl26
-rw-r--r--Master/perltl/lib/unicore/lib/OtherAlp.pl99
-rw-r--r--Master/perltl/lib/unicore/lib/OtherDef.pl17
-rw-r--r--Master/perltl/lib/unicore/lib/OtherGra.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/OtherLow.pl19
-rw-r--r--Master/perltl/lib/unicore/lib/OtherMat.pl76
-rw-r--r--Master/perltl/lib/unicore/lib/OtherUpp.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/P.pl97
-rw-r--r--Master/perltl/lib/unicore/lib/Pc.pl20
-rw-r--r--Master/perltl/lib/unicore/lib/Pd.pl25
-rw-r--r--Master/perltl/lib/unicore/lib/Pe.pl75
-rw-r--r--Master/perltl/lib/unicore/lib/Pf.pl17
-rw-r--r--Master/perltl/lib/unicore/lib/Pi.pl18
-rw-r--r--Master/perltl/lib/unicore/lib/Po.pl83
-rw-r--r--Master/perltl/lib/unicore/lib/Print.pl400
-rw-r--r--Master/perltl/lib/unicore/lib/Ps.pl77
-rw-r--r--Master/perltl/lib/unicore/lib/Punct.pl96
-rw-r--r--Master/perltl/lib/unicore/lib/Quotatio.pl24
-rw-r--r--Master/perltl/lib/unicore/lib/Radical.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/Runic.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/S.pl159
-rw-r--r--Master/perltl/lib/unicore/lib/Sc.pl24
-rw-r--r--Master/perltl/lib/unicore/lib/Sinhala.pl23
-rw-r--r--Master/perltl/lib/unicore/lib/Sk.pl35
-rw-r--r--Master/perltl/lib/unicore/lib/Sm.pl71
-rw-r--r--Master/perltl/lib/unicore/lib/So.pl117
-rw-r--r--Master/perltl/lib/unicore/lib/SoftDott.pl19
-rw-r--r--Master/perltl/lib/unicore/lib/Space.pl21
-rw-r--r--Master/perltl/lib/unicore/lib/SpacePer.pl23
-rw-r--r--Master/perltl/lib/unicore/lib/Syriac.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Tagalog.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Tagbanwa.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/Tamil.pl28
-rw-r--r--Master/perltl/lib/unicore/lib/Telugu.pl24
-rw-r--r--Master/perltl/lib/unicore/lib/Terminal.pl48
-rw-r--r--Master/perltl/lib/unicore/lib/Thaana.pl13
-rw-r--r--Master/perltl/lib/unicore/lib/Thai.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/Tibetan.pl25
-rw-r--r--Master/perltl/lib/unicore/lib/Title.pl22
-rw-r--r--Master/perltl/lib/unicore/lib/UnifiedI.pl22
-rw-r--r--Master/perltl/lib/unicore/lib/Upper.pl431
-rw-r--r--Master/perltl/lib/unicore/lib/Uppercas.pl433
-rw-r--r--Master/perltl/lib/unicore/lib/WhiteSpa.pl21
-rw-r--r--Master/perltl/lib/unicore/lib/Word.pl424
-rw-r--r--Master/perltl/lib/unicore/lib/XDigit.pl15
-rw-r--r--Master/perltl/lib/unicore/lib/Yi.pl18
-rw-r--r--Master/perltl/lib/unicore/lib/Z.pl21
-rw-r--r--Master/perltl/lib/unicore/lib/Zl.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Zp.pl14
-rw-r--r--Master/perltl/lib/unicore/lib/Zs.pl20
-rw-r--r--Master/perltl/lib/unicore/lib/_CanonDC.pl16
-rw-r--r--Master/perltl/lib/unicore/lib/_CaseIgn.pl118
-rw-r--r--Master/perltl/lib/unicore/lib/_CombAbo.pl54
-rw-r--r--Master/perltl/lib/utf8.pm152
-rw-r--r--Master/perltl/lib/utf8_heavy.pl344
-rw-r--r--Master/perltl/lib/vars.pm82
-rw-r--r--Master/perltl/lib/warnings.pm489
-rw-r--r--Master/perltl/lib/warnings/register.pm51
-rw-r--r--Master/perltl/site/lib/Tk.pm696
-rw-r--r--Master/perltl/site/lib/Tk/Adjuster.pm435
-rw-r--r--Master/perltl/site/lib/Tk/After.pm88
-rw-r--r--Master/perltl/site/lib/Tk/Bitmap.pm18
-rw-r--r--Master/perltl/site/lib/Tk/Button.pm148
-rw-r--r--Master/perltl/site/lib/Tk/Camel.xpm41
-rw-r--r--Master/perltl/site/lib/Tk/Canvas.pm60
-rw-r--r--Master/perltl/site/lib/Tk/Checkbutton.pm42
-rw-r--r--Master/perltl/site/lib/Tk/Clipboard.pm110
-rw-r--r--Master/perltl/site/lib/Tk/CmdLine.pm954
-rw-r--r--Master/perltl/site/lib/Tk/ColorEdit.xpm58
-rw-r--r--Master/perltl/site/lib/Tk/ColorEditor.pm759
-rw-r--r--Master/perltl/site/lib/Tk/Config.pm12
-rw-r--r--Master/perltl/site/lib/Tk/Configure.pm69
-rw-r--r--Master/perltl/site/lib/Tk/Derived.pm510
-rw-r--r--Master/perltl/site/lib/Tk/Dialog.pm70
-rw-r--r--Master/perltl/site/lib/Tk/DialogBox.pm115
-rw-r--r--Master/perltl/site/lib/Tk/Entry.pm517
-rw-r--r--Master/perltl/site/lib/Tk/Event.pm13
-rw-r--r--Master/perltl/site/lib/Tk/Event/IO.pm122
-rw-r--r--Master/perltl/site/lib/Tk/FBox.pm891
-rw-r--r--Master/perltl/site/lib/Tk/Frame.pm373
-rw-r--r--Master/perltl/site/lib/Tk/IconList.pm536
-rw-r--r--Master/perltl/site/lib/Tk/Image.pm73
-rw-r--r--Master/perltl/site/lib/Tk/Label.pm21
-rw-r--r--Master/perltl/site/lib/Tk/Listbox.pm856
-rw-r--r--Master/perltl/site/lib/Tk/MainWindow.pm188
-rw-r--r--Master/perltl/site/lib/Tk/Menu.pm1130
-rw-r--r--Master/perltl/site/lib/Tk/Menu/Item.pm180
-rw-r--r--Master/perltl/site/lib/Tk/Menubutton.pm398
-rw-r--r--Master/perltl/site/lib/Tk/Optionmenu.pm110
-rw-r--r--Master/perltl/site/lib/Tk/Pixmap.pm19
-rw-r--r--Master/perltl/site/lib/Tk/Pretty.pm93
-rw-r--r--Master/perltl/site/lib/Tk/ROText.pm36
-rw-r--r--Master/perltl/site/lib/Tk/Radiobutton.pm45
-rw-r--r--Master/perltl/site/lib/Tk/Scale.pm278
-rw-r--r--Master/perltl/site/lib/Tk/Scrollbar.pm414
-rw-r--r--Master/perltl/site/lib/Tk/Submethods.pm46
-rw-r--r--Master/perltl/site/lib/Tk/Text.pm1600
-rw-r--r--Master/perltl/site/lib/Tk/Text/Tag.pm46
-rw-r--r--Master/perltl/site/lib/Tk/Tk.xbm44
-rw-r--r--Master/perltl/site/lib/Tk/Tk.xpm41
-rw-r--r--Master/perltl/site/lib/Tk/Toplevel.pm211
-rw-r--r--Master/perltl/site/lib/Tk/Widget.pm1298
-rw-r--r--Master/perltl/site/lib/Tk/Wm.pm165
-rw-r--r--Master/perltl/site/lib/Tk/X.pm398
-rw-r--r--Master/perltl/site/lib/Tk/X11/license.terms32
-rw-r--r--Master/perltl/site/lib/Tk/Xcamel.gifbin4193 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/Tk/act_folder.xbm5
-rw-r--r--Master/perltl/site/lib/Tk/act_folder.xpm22
-rw-r--r--Master/perltl/site/lib/Tk/anim.gifbin2533 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/Tk/balArrow.xbm4
-rw-r--r--Master/perltl/site/lib/Tk/cbxarrow.xbm6
-rw-r--r--Master/perltl/site/lib/Tk/file.xbm5
-rw-r--r--Master/perltl/site/lib/Tk/file.xpm18
-rw-r--r--Master/perltl/site/lib/Tk/folder.xbm5
-rw-r--r--Master/perltl/site/lib/Tk/folder.xpm21
-rw-r--r--Master/perltl/site/lib/Tk/icon.gifbin1924 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/Tk/license.terms35
-rw-r--r--Master/perltl/site/lib/Tk/openfile.xbm5
-rw-r--r--Master/perltl/site/lib/Tk/openfolder.xbm5
-rw-r--r--Master/perltl/site/lib/Tk/openfolder.xpm21
-rw-r--r--Master/perltl/site/lib/Tk/prolog.ps284
-rw-r--r--Master/perltl/site/lib/Tk/srcfile.xpm18
-rw-r--r--Master/perltl/site/lib/Tk/textfile.xpm18
-rw-r--r--Master/perltl/site/lib/Tk/tranicon.gifbin1718 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/Tk/widgets.pm21
-rw-r--r--Master/perltl/site/lib/Tk/win.xbm6
-rw-r--r--Master/perltl/site/lib/Tk/winfolder.xpm39
-rw-r--r--Master/perltl/site/lib/Tk/wintext.xpm42
-rw-r--r--Master/perltl/site/lib/Win32/API.pm719
-rw-r--r--Master/perltl/site/lib/Win32/API/Struct.pm528
-rw-r--r--Master/perltl/site/lib/Win32/API/Type.pm440
-rw-r--r--Master/perltl/site/lib/XML/Parser.pm1089
-rw-r--r--Master/perltl/site/lib/XML/Parser/Expat.pm1231
-rw-r--r--Master/perltl/site/lib/auto/Tk/Bitmap/Bitmap.dllbin6144 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/CancelRepeat.al15
-rw-r--r--Master/perltl/site/lib/auto/Tk/Canvas/Canvas.dllbin139264 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/Clipboard/autosplit.ix6
-rw-r--r--Master/perltl/site/lib/auto/Tk/Clipboard/getSelected.al15
-rw-r--r--Master/perltl/site/lib/auto/Tk/EnterFocus.al26
-rw-r--r--Master/perltl/site/lib/auto/Tk/Entry/Entry.dllbin23040 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/Error.al20
-rw-r--r--Master/perltl/site/lib/auto/Tk/Event/Event.dllbin53248 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/FirstMenu.al21
-rw-r--r--Master/perltl/site/lib/auto/Tk/FocusChildren.al35
-rw-r--r--Master/perltl/site/lib/auto/Tk/FocusOK.al33
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/AddScrollbars.al52
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/FindMenu.al22
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/autosplit.ix24
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/freeze_on_map.al18
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/label.al24
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/labelPack.al50
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/labelVariable.al27
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/packscrollbars.al86
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/queuePack.al18
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/sbset.al15
-rw-r--r--Master/perltl/site/lib/auto/Tk/Frame/scrollbars.al24
-rw-r--r--Master/perltl/site/lib/auto/Tk/ImageNames.al13
-rw-r--r--Master/perltl/site/lib/auto/Tk/ImageTypes.al13
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/AutoScan.al48
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/BeginExtend.al29
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/BeginSelect.al45
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/BeginToggle.al39
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/ButtonRelease_1.al16
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/Cancel.al43
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_End.al18
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_Home.al18
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_backslash.al18
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/DataExtend.al39
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/ExtendUpDown.al30
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/Listbox.dllbin20992 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/Motion.al66
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/SelectAll.al31
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/SetList.al15
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/UpDown.al39
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/autosplit.ix42
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/clipboardPaste.al21
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/deleteSelected.al18
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/getSelected.al22
-rw-r--r--Master/perltl/site/lib/auto/Tk/Listbox/xyIndex.al27
-rw-r--r--Master/perltl/site/lib/auto/Tk/Menubutton/Menubutton.dllbin14848 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/Pixmap/Pixmap.dllbin19968 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/Receive.al23
-rw-r--r--Master/perltl/site/lib/auto/Tk/RepeatId.al16
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/Activate.al33
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/ButtonDown.al40
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/ButtonUp.al16
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/ControlPress.al31
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/Drag.al29
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/EndDrag.al23
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/Enter.al19
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/Increment.al61
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/Leave.al15
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/Scale.dllbin20992 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scale/autosplit.ix22
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/ButtonDown.al55
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/ButtonUp.al26
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/Drag.al44
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/EndDrag.al29
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/Enter.al21
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/Leave.al18
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/Motion.al15
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlByPages.al38
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlByUnits.al37
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlToPos.al35
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlTopBottom.al32
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/Scrollbar.dllbin15872 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/Select.al59
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/StartDrag.al33
-rw-r--r--Master/perltl/site/lib/auto/Tk/Scrollbar/autosplit.ix30
-rw-r--r--Master/perltl/site/lib/auto/Tk/Selection.al18
-rw-r--r--Master/perltl/site/lib/auto/Tk/Text/Text.dllbin94208 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/Text/autosplit.ix3
-rw-r--r--Master/perltl/site/lib/auto/Tk/Tk.dllbin573440 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/Toplevel/FG_BindIn.al19
-rw-r--r--Master/perltl/site/lib/auto/Tk/Toplevel/FG_BindOut.al20
-rw-r--r--Master/perltl/site/lib/auto/Tk/Toplevel/FG_Create.al56
-rw-r--r--Master/perltl/site/lib/auto/Tk/Toplevel/FG_Destroy.al29
-rw-r--r--Master/perltl/site/lib/auto/Tk/Toplevel/FG_In.al24
-rw-r--r--Master/perltl/site/lib/auto/Tk/Toplevel/FG_Out.al32
-rw-r--r--Master/perltl/site/lib/auto/Tk/Toplevel/autosplit.ix10
-rw-r--r--Master/perltl/site/lib/auto/Tk/TraverseToMenu.al27
-rw-r--r--Master/perltl/site/lib/auto/Tk/Widget/ASkludge.al30
-rw-r--r--Master/perltl/site/lib/auto/Tk/Widget/autosplit.ix10
-rw-r--r--Master/perltl/site/lib/auto/Tk/Widget/clipboardKeysyms.al51
-rw-r--r--Master/perltl/site/lib/auto/Tk/Widget/pathname.al15
-rw-r--r--Master/perltl/site/lib/auto/Tk/Wm/AnchorAdjust.al17
-rw-r--r--Master/perltl/site/lib/auto/Tk/Wm/FullScreen.al29
-rw-r--r--Master/perltl/site/lib/auto/Tk/Wm/Popup.al45
-rw-r--r--Master/perltl/site/lib/auto/Tk/Wm/Post.al20
-rw-r--r--Master/perltl/site/lib/auto/Tk/Wm/autosplit.ix14
-rw-r--r--Master/perltl/site/lib/auto/Tk/Wm/iconposition.al24
-rw-r--r--Master/perltl/site/lib/auto/Tk/X/X.dllbin19968 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/Tk/X/autosplit.ix3
-rw-r--r--Master/perltl/site/lib/auto/Tk/autosplit.ix43
-rw-r--r--Master/perltl/site/lib/auto/Tk/break.al13
-rw-r--r--Master/perltl/site/lib/auto/Tk/focusFollowsMouse.al14
-rw-r--r--Master/perltl/site/lib/auto/Tk/focusNext.al45
-rw-r--r--Master/perltl/site/lib/auto/Tk/focusPrev.al65
-rw-r--r--Master/perltl/site/lib/auto/Tk/interps.al14
-rw-r--r--Master/perltl/site/lib/auto/Tk/lsearch.al19
-rw-r--r--Master/perltl/site/lib/auto/Tk/tabFocus.al13
-rw-r--r--Master/perltl/site/lib/auto/Tk/updateWidgets.al17
-rw-r--r--Master/perltl/site/lib/auto/Win32/API/API.dllbin20480 -> 0 bytes
-rw-r--r--Master/perltl/site/lib/auto/XML/Parser/Expat/Expat.dllbin163840 -> 0 bytes
-rw-r--r--Master/tlpkg/tlpsrc/bin-perl.tlpsrc68
-rw-r--r--Master/tlpkg/tlpsrc/collection-perl.tlpsrc4
-rw-r--r--Master/tlpkg/tlpsrc/collection-wintools.tlpsrc1
730 files changed, 0 insertions, 104909 deletions
diff --git a/Master/bin/win32/perl.exe b/Master/bin/win32/perl.exe
deleted file mode 100755
index 8add274330f..00000000000
--- a/Master/bin/win32/perl.exe
+++ /dev/null
Binary files differ
diff --git a/Master/bin/win32/perl58.dll b/Master/bin/win32/perl58.dll
deleted file mode 100755
index 7bffc3c39e5..00000000000
--- a/Master/bin/win32/perl58.dll
+++ /dev/null
Binary files differ
diff --git a/Master/bin/win32/tk83.dll b/Master/bin/win32/tk83.dll
deleted file mode 100755
index edebd700dd2..00000000000
--- a/Master/bin/win32/tk83.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/AnyDBM_File.pm b/Master/perltl/lib/AnyDBM_File.pm
deleted file mode 100644
index d73abab0f9e..00000000000
--- a/Master/perltl/lib/AnyDBM_File.pm
+++ /dev/null
@@ -1,93 +0,0 @@
-package AnyDBM_File;
-
-use 5.006_001;
-our $VERSION = '1.00';
-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/Master/perltl/lib/AutoLoader.pm b/Master/perltl/lib/AutoLoader.pm
deleted file mode 100644
index b42d5ff4b68..00000000000
--- a/Master/perltl/lib/AutoLoader.pm
+++ /dev/null
@@ -1,337 +0,0 @@
-package AutoLoader;
-
-use 5.006_001;
-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' || $^O eq 'NetWare';
- $is_epoc = $^O eq 'epoc';
- $is_vms = $^O eq 'VMS';
- $is_macos = $^O eq 'MacOS';
- $VERSION = '5.59';
-}
-
-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) {
- if ($^O ne 'NetWare') {
- $filename = "./$filename";
- } else {
- $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 = $@;
- local $!; # Do not munge the value.
- 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.
- if ($is_macos) {
- (my $malldir = $calldir) =~ tr#/#:#;
- $path =~ s#^(.*)$malldir\.pm\z#$1auto:$malldir:autosplit.ix#s;
- } else {
- $path =~ s#^(.*)$calldir\.pm\z#$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/Master/perltl/lib/B.pm b/Master/perltl/lib/B.pm
deleted file mode 100644
index feca2e59d6e..00000000000
--- a/Master/perltl/lib/B.pm
+++ /dev/null
@@ -1,971 +0,0 @@
-# B.pm
-#
-# Copyright (c) 1996, 1997, 1998 Malcolm Beattie
-#
-# You may distribute under the terms of either the GNU General Public
-# License or the Artistic License, as specified in the README file.
-#
-package B;
-
-our $VERSION = '1.01';
-
-use XSLoader ();
-require Exporter;
-@ISA = qw(Exporter);
-
-# walkoptree_slow comes from B.pm (you are there),
-# walkoptree comes from B.xs
-@EXPORT_OK = qw(minus_c ppname save_BEGINs
- class peekop cast_I32 cstring cchar hash threadsv_names
- main_root main_start main_cv svref_2object opnumber
- amagic_generation perlstring
- walkoptree_slow walkoptree walkoptree_exec walksymtable
- parents comppadlist sv_undef compile_stats timing_info
- begin_av init_av end_av regex_padav);
-
-sub OPf_KIDS ();
-use strict;
-@B::SV::ISA = 'B::OBJECT';
-@B::NULL::ISA = 'B::SV';
-@B::PV::ISA = 'B::SV';
-@B::IV::ISA = 'B::SV';
-@B::NV::ISA = 'B::IV';
-@B::RV::ISA = 'B::SV';
-@B::PVIV::ISA = qw(B::PV B::IV);
-@B::PVNV::ISA = qw(B::PV B::NV);
-@B::PVMG::ISA = 'B::PVNV';
-@B::PVLV::ISA = 'B::PVMG';
-@B::BM::ISA = 'B::PVMG';
-@B::AV::ISA = 'B::PVMG';
-@B::GV::ISA = 'B::PVMG';
-@B::HV::ISA = 'B::PVMG';
-@B::CV::ISA = 'B::PVMG';
-@B::IO::ISA = 'B::PVMG';
-@B::FM::ISA = 'B::CV';
-
-@B::OP::ISA = 'B::OBJECT';
-@B::UNOP::ISA = 'B::OP';
-@B::BINOP::ISA = 'B::UNOP';
-@B::LOGOP::ISA = 'B::UNOP';
-@B::LISTOP::ISA = 'B::BINOP';
-@B::SVOP::ISA = 'B::OP';
-@B::PADOP::ISA = 'B::OP';
-@B::PVOP::ISA = 'B::OP';
-@B::CVOP::ISA = 'B::OP';
-@B::LOOP::ISA = 'B::LISTOP';
-@B::PMOP::ISA = 'B::LISTOP';
-@B::COP::ISA = 'B::OP';
-
-@B::SPECIAL::ISA = 'B::OBJECT';
-
-{
- # Stop "-w" from complaining about the lack of a real B::OBJECT class
- package B::OBJECT;
-}
-
-sub B::GV::SAFENAME {
- my $name = (shift())->NAME;
-
- # The regex below corresponds to the isCONTROLVAR macro
- # from toke.c
-
- $name =~ s/^([\cA-\cZ\c\\c[\c]\c?\c_\c^])/"^".
- chr( utf8::unicode_to_native( 64 ^ ord($1) ))/e;
-
- # When we say unicode_to_native we really mean ascii_to_native,
- # which matters iff this is a non-ASCII platform (EBCDIC).
-
- return $name;
-}
-
-sub B::IV::int_value {
- my ($self) = @_;
- return (($self->FLAGS() & SVf_IVisUV()) ? $self->UVX : $self->IV);
-}
-
-sub B::NULL::as_string() {""}
-sub B::IV::as_string() {goto &B::IV::int_value}
-sub B::PV::as_string() {goto &B::PV::PV}
-
-my $debug;
-my $op_count = 0;
-my @parents = ();
-
-sub debug {
- my ($class, $value) = @_;
- $debug = $value;
- walkoptree_debug($value);
-}
-
-sub class {
- my $obj = shift;
- my $name = ref $obj;
- $name =~ s/^.*:://;
- return $name;
-}
-
-sub parents { \@parents }
-
-# For debugging
-sub peekop {
- my $op = shift;
- return sprintf("%s (0x%x) %s", class($op), $$op, $op->name);
-}
-
-sub walkoptree_slow {
- my($op, $method, $level) = @_;
- $op_count++; # just for statistics
- $level ||= 0;
- warn(sprintf("walkoptree: %d. %s\n", $level, peekop($op))) if $debug;
- $op->$method($level);
- if ($$op && ($op->flags & OPf_KIDS)) {
- my $kid;
- unshift(@parents, $op);
- for ($kid = $op->first; $$kid; $kid = $kid->sibling) {
- walkoptree_slow($kid, $method, $level + 1);
- }
- shift @parents;
- }
- if (class($op) eq 'PMOP' && $op->pmreplroot && ${$op->pmreplroot}) {
- unshift(@parents, $op);
- walkoptree_slow($op->pmreplroot, $method, $level + 1);
- shift @parents;
- }
-}
-
-sub compile_stats {
- return "Total number of OPs processed: $op_count\n";
-}
-
-sub timing_info {
- my ($sec, $min, $hr) = localtime;
- my ($user, $sys) = times;
- sprintf("%02d:%02d:%02d user=$user sys=$sys",
- $hr, $min, $sec, $user, $sys);
-}
-
-my %symtable;
-
-sub clearsym {
- %symtable = ();
-}
-
-sub savesym {
- my ($obj, $value) = @_;
-# warn(sprintf("savesym: sym_%x => %s\n", $$obj, $value)); # debug
- $symtable{sprintf("sym_%x", $$obj)} = $value;
-}
-
-sub objsym {
- my $obj = shift;
- return $symtable{sprintf("sym_%x", $$obj)};
-}
-
-sub walkoptree_exec {
- my ($op, $method, $level) = @_;
- $level ||= 0;
- my ($sym, $ppname);
- my $prefix = " " x $level;
- for (; $$op; $op = $op->next) {
- $sym = objsym($op);
- if (defined($sym)) {
- print $prefix, "goto $sym\n";
- return;
- }
- savesym($op, sprintf("%s (0x%lx)", class($op), $$op));
- $op->$method($level);
- $ppname = $op->name;
- if ($ppname =~
- /^(or|and|mapwhile|grepwhile|entertry|range|cond_expr)$/)
- {
- print $prefix, uc($1), " => {\n";
- walkoptree_exec($op->other, $method, $level + 1);
- print $prefix, "}\n";
- } elsif ($ppname eq "match" || $ppname eq "subst") {
- my $pmreplstart = $op->pmreplstart;
- if ($$pmreplstart) {
- print $prefix, "PMREPLSTART => {\n";
- walkoptree_exec($pmreplstart, $method, $level + 1);
- print $prefix, "}\n";
- }
- } elsif ($ppname eq "substcont") {
- print $prefix, "SUBSTCONT => {\n";
- walkoptree_exec($op->other->pmreplstart, $method, $level + 1);
- print $prefix, "}\n";
- $op = $op->other;
- } elsif ($ppname eq "enterloop") {
- print $prefix, "REDO => {\n";
- walkoptree_exec($op->redoop, $method, $level + 1);
- print $prefix, "}\n", $prefix, "NEXT => {\n";
- walkoptree_exec($op->nextop, $method, $level + 1);
- print $prefix, "}\n", $prefix, "LAST => {\n";
- walkoptree_exec($op->lastop, $method, $level + 1);
- print $prefix, "}\n";
- } elsif ($ppname eq "subst") {
- my $replstart = $op->pmreplstart;
- if ($$replstart) {
- print $prefix, "SUBST => {\n";
- walkoptree_exec($replstart, $method, $level + 1);
- print $prefix, "}\n";
- }
- }
- }
-}
-
-sub walksymtable {
- my ($symref, $method, $recurse, $prefix) = @_;
- my $sym;
- my $ref;
- my $fullname;
- no strict 'refs';
- $prefix = '' unless defined $prefix;
- while (($sym, $ref) = each %$symref) {
- $fullname = "*main::".$prefix.$sym;
- if ($sym =~ /::$/) {
- $sym = $prefix . $sym;
- if ($sym ne "main::" && $sym ne "<none>::" && &$recurse($sym)) {
- walksymtable(\%$fullname, $method, $recurse, $sym);
- }
- } else {
- svref_2object(\*$fullname)->$method();
- }
- }
-}
-
-{
- package B::Section;
- my $output_fh;
- my %sections;
-
- sub new {
- my ($class, $section, $symtable, $default) = @_;
- $output_fh ||= FileHandle->new_tmpfile;
- my $obj = bless [-1, $section, $symtable, $default], $class;
- $sections{$section} = $obj;
- return $obj;
- }
-
- sub get {
- my ($class, $section) = @_;
- return $sections{$section};
- }
-
- sub add {
- my $section = shift;
- while (defined($_ = shift)) {
- print $output_fh "$section->[1]\t$_\n";
- $section->[0]++;
- }
- }
-
- sub index {
- my $section = shift;
- return $section->[0];
- }
-
- sub name {
- my $section = shift;
- return $section->[1];
- }
-
- sub symtable {
- my $section = shift;
- return $section->[2];
- }
-
- sub default {
- my $section = shift;
- return $section->[3];
- }
-
- sub output {
- my ($section, $fh, $format) = @_;
- my $name = $section->name;
- my $sym = $section->symtable || {};
- my $default = $section->default;
-
- seek($output_fh, 0, 0);
- while (<$output_fh>) {
- chomp;
- s/^(.*?)\t//;
- if ($1 eq $name) {
- s{(s\\_[0-9a-f]+)} {
- exists($sym->{$1}) ? $sym->{$1} : $default;
- }ge;
- printf $fh $format, $_;
- }
- }
- }
-}
-
-XSLoader::load 'B';
-
-1;
-
-__END__
-
-=head1 NAME
-
-B - The Perl Compiler
-
-=head1 SYNOPSIS
-
- use B;
-
-=head1 DESCRIPTION
-
-The C<B> module supplies classes which allow a Perl program to delve
-into its own innards. It is the module used to implement the
-"backends" of the Perl compiler. Usage of the compiler does not
-require knowledge of this module: see the F<O> module for the
-user-visible part. The C<B> module is of use to those who want to
-write new compiler backends. This documentation assumes that the
-reader knows a fair amount about perl's internals including such
-things as SVs, OPs and the internal symbol table and syntax tree
-of a program.
-
-=head1 OVERVIEW OF CLASSES
-
-The C structures used by Perl's internals to hold SV and OP
-information (PVIV, AV, HV, ..., OP, SVOP, UNOP, ...) are modelled on a
-class hierarchy and the C<B> module gives access to them via a true
-object hierarchy. Structure fields which point to other objects
-(whether types of SV or types of OP) are represented by the C<B>
-module as Perl objects of the appropriate class. The bulk of the C<B>
-module is the methods for accessing fields of these structures. Note
-that all access is read-only: you cannot modify the internals by
-using this module.
-
-=head2 SV-RELATED CLASSES
-
-B::IV, B::NV, B::RV, B::PV, B::PVIV, B::PVNV, B::PVMG, B::BM, B::PVLV,
-B::AV, B::HV, B::CV, B::GV, B::FM, B::IO. These classes correspond in
-the obvious way to the underlying C structures of similar names. The
-inheritance hierarchy mimics the underlying C "inheritance". Access
-methods correspond to the underlying C macros for field access,
-usually with the leading "class indication" prefix removed (Sv, Av,
-Hv, ...). The leading prefix is only left in cases where its removal
-would cause a clash in method name. For example, C<GvREFCNT> stays
-as-is since its abbreviation would clash with the "superclass" method
-C<REFCNT> (corresponding to the C function C<SvREFCNT>).
-
-=head2 B::SV METHODS
-
-=over 4
-
-=item REFCNT
-
-=item FLAGS
-
-=back
-
-=head2 B::IV METHODS
-
-=over 4
-
-=item IV
-
-Returns the value of the IV, I<interpreted as
-a signed integer>. This will be misleading
-if C<FLAGS & SVf_IVisUV>. Perhaps you want the
-C<int_value> method instead?
-
-=item IVX
-
-=item UVX
-
-=item int_value
-
-This method returns the value of the IV as an integer.
-It differs from C<IV> in that it returns the correct
-value regardless of whether it's stored signed or
-unsigned.
-
-=item needs64bits
-
-=item packiv
-
-=back
-
-=head2 B::NV METHODS
-
-=over 4
-
-=item NV
-
-=item NVX
-
-=back
-
-=head2 B::RV METHODS
-
-=over 4
-
-=item RV
-
-=back
-
-=head2 B::PV METHODS
-
-=over 4
-
-=item PV
-
-This method is the one you usually want. It constructs a
-string using the length and offset information in the struct:
-for ordinary scalars it will return the string that you'd see
-from Perl, even if it contains null characters.
-
-=item RV
-
-Same as B::RV::RV, except that it will die() if the PV isn't
-a reference.
-
-=item PVX
-
-This method is less often useful. It assumes that the string
-stored in the struct is null-terminated, and disregards the
-length information.
-
-It is the appropriate method to use if you need to get the name
-of a lexical variable from a padname array. Lexical variable names
-are always stored with a null terminator, and the length field
-(SvCUR) is overloaded for other purposes and can't be relied on here.
-
-=back
-
-=head2 B::PVMG METHODS
-
-=over 4
-
-=item MAGIC
-
-=item SvSTASH
-
-=back
-
-=head2 B::MAGIC METHODS
-
-=over 4
-
-=item MOREMAGIC
-
-=item precomp
-
-Only valid on r-magic, returns the string that generated the regexp.
-
-=item PRIVATE
-
-=item TYPE
-
-=item FLAGS
-
-=item OBJ
-
-Will die() if called on r-magic.
-
-=item PTR
-
-=item REGEX
-
-Only valid on r-magic, returns the integer value of the REGEX stored
-in the MAGIC.
-
-=back
-
-=head2 B::PVLV METHODS
-
-=over 4
-
-=item TARGOFF
-
-=item TARGLEN
-
-=item TYPE
-
-=item TARG
-
-=back
-
-=head2 B::BM METHODS
-
-=over 4
-
-=item USEFUL
-
-=item PREVIOUS
-
-=item RARE
-
-=item TABLE
-
-=back
-
-=head2 B::GV METHODS
-
-=over 4
-
-=item is_empty
-
-This method returns TRUE if the GP field of the GV is NULL.
-
-=item NAME
-
-=item SAFENAME
-
-This method returns the name of the glob, but if the first
-character of the name is a control character, then it converts
-it to ^X first, so that *^G would return "^G" rather than "\cG".
-
-It's useful if you want to print out the name of a variable.
-If you restrict yourself to globs which exist at compile-time
-then the result ought to be unambiguous, because code like
-C<${"^G"} = 1> is compiled as two ops - a constant string and
-a dereference (rv2gv) - so that the glob is created at runtime.
-
-If you're working with globs at runtime, and need to disambiguate
-*^G from *{"^G"}, then you should use the raw NAME method.
-
-=item STASH
-
-=item SV
-
-=item IO
-
-=item FORM
-
-=item AV
-
-=item HV
-
-=item EGV
-
-=item CV
-
-=item CVGEN
-
-=item LINE
-
-=item FILE
-
-=item FILEGV
-
-=item GvREFCNT
-
-=item FLAGS
-
-=back
-
-=head2 B::IO METHODS
-
-=over 4
-
-=item LINES
-
-=item PAGE
-
-=item PAGE_LEN
-
-=item LINES_LEFT
-
-=item TOP_NAME
-
-=item TOP_GV
-
-=item FMT_NAME
-
-=item FMT_GV
-
-=item BOTTOM_NAME
-
-=item BOTTOM_GV
-
-=item SUBPROCESS
-
-=item IoTYPE
-
-=item IoFLAGS
-
-=item IsSTD
-
-Takes one arguments ( 'stdin' | 'stdout' | 'stderr' ) and returns true
-if the IoIFP of the object is equal to the handle whose name was
-passed as argument ( i.e. $io->IsSTD('stderr') is true if
-IoIFP($io) == PerlIO_stdin() ).
-
-=back
-
-=head2 B::AV METHODS
-
-=over 4
-
-=item FILL
-
-=item MAX
-
-=item OFF
-
-=item ARRAY
-
-=item AvFLAGS
-
-=back
-
-=head2 B::CV METHODS
-
-=over 4
-
-=item STASH
-
-=item START
-
-=item ROOT
-
-=item GV
-
-=item FILE
-
-=item DEPTH
-
-=item PADLIST
-
-=item OUTSIDE
-
-=item XSUB
-
-=item XSUBANY
-
-For constant subroutines, returns the constant SV returned by the subroutine.
-
-=item CvFLAGS
-
-=item const_sv
-
-=back
-
-=head2 B::HV METHODS
-
-=over 4
-
-=item FILL
-
-=item MAX
-
-=item KEYS
-
-=item RITER
-
-=item NAME
-
-=item PMROOT
-
-=item ARRAY
-
-=back
-
-=head2 OP-RELATED CLASSES
-
-B::OP, B::UNOP, B::BINOP, B::LOGOP, B::LISTOP, B::PMOP,
-B::SVOP, B::PADOP, B::PVOP, B::CVOP, B::LOOP, B::COP.
-These classes correspond in
-the obvious way to the underlying C structures of similar names. The
-inheritance hierarchy mimics the underlying C "inheritance". Access
-methods correspond to the underlying C structre field names, with the
-leading "class indication" prefix removed (op_).
-
-=head2 B::OP METHODS
-
-=over 4
-
-=item next
-
-=item sibling
-
-=item name
-
-This returns the op name as a string (e.g. "add", "rv2av").
-
-=item ppaddr
-
-This returns the function name as a string (e.g. "PL_ppaddr[OP_ADD]",
-"PL_ppaddr[OP_RV2AV]").
-
-=item desc
-
-This returns the op description from the global C PL_op_desc array
-(e.g. "addition" "array deref").
-
-=item targ
-
-=item type
-
-=item seq
-
-=item flags
-
-=item private
-
-=back
-
-=head2 B::UNOP METHOD
-
-=over 4
-
-=item first
-
-=back
-
-=head2 B::BINOP METHOD
-
-=over 4
-
-=item last
-
-=back
-
-=head2 B::LOGOP METHOD
-
-=over 4
-
-=item other
-
-=back
-
-=head2 B::LISTOP METHOD
-
-=over 4
-
-=item children
-
-=back
-
-=head2 B::PMOP METHODS
-
-=over 4
-
-=item pmreplroot
-
-=item pmreplstart
-
-=item pmnext
-
-=item pmregexp
-
-=item pmflags
-
-=item pmdynflags
-
-=item pmpermflags
-
-=item precomp
-
-=item pmoffet
-
-Only when perl was compiled with ithreads.
-
-=back
-
-=head2 B::SVOP METHOD
-
-=over 4
-
-=item sv
-
-=item gv
-
-=back
-
-=head2 B::PADOP METHOD
-
-=over 4
-
-=item padix
-
-=back
-
-=head2 B::PVOP METHOD
-
-=over 4
-
-=item pv
-
-=back
-
-=head2 B::LOOP METHODS
-
-=over 4
-
-=item redoop
-
-=item nextop
-
-=item lastop
-
-=back
-
-=head2 B::COP METHODS
-
-=over 4
-
-=item label
-
-=item stash
-
-=item file
-
-=item cop_seq
-
-=item arybase
-
-=item line
-
-=back
-
-=head1 FUNCTIONS EXPORTED BY C<B>
-
-The C<B> module exports a variety of functions: some are simple
-utility functions, others provide a Perl program with a way to
-get an initial "handle" on an internal object.
-
-=over 4
-
-=item main_cv
-
-Return the (faked) CV corresponding to the main part of the Perl
-program.
-
-=item init_av
-
-Returns the AV object (i.e. in class B::AV) representing INIT blocks.
-
-=item begin_av
-
-Returns the AV object (i.e. in class B::AV) representing BEGIN blocks.
-
-=item end_av
-
-Returns the AV object (i.e. in class B::AV) representing END blocks.
-
-=item main_root
-
-Returns the root op (i.e. an object in the appropriate B::OP-derived
-class) of the main part of the Perl program.
-
-=item main_start
-
-Returns the starting op of the main part of the Perl program.
-
-=item comppadlist
-
-Returns the AV object (i.e. in class B::AV) of the global comppadlist.
-
-=item regex_padav
-
-Only when perl was compiled with ithreads.
-
-=item sv_undef
-
-Returns the SV object corresponding to the C variable C<sv_undef>.
-
-=item sv_yes
-
-Returns the SV object corresponding to the C variable C<sv_yes>.
-
-=item sv_no
-
-Returns the SV object corresponding to the C variable C<sv_no>.
-
-=item amagic_generation
-
-Returns the SV object corresponding to the C variable C<amagic_generation>.
-
-=item walkoptree(OP, METHOD)
-
-Does a tree-walk of the syntax tree based at OP and calls METHOD on
-each op it visits. Each node is visited before its children. If
-C<walkoptree_debug> (q.v.) has been called to turn debugging on then
-the method C<walkoptree_debug> is called on each op before METHOD is
-called.
-
-=item walkoptree_debug(DEBUG)
-
-Returns the current debugging flag for C<walkoptree>. If the optional
-DEBUG argument is non-zero, it sets the debugging flag to that. See
-the description of C<walkoptree> above for what the debugging flag
-does.
-
-=item walksymtable(SYMREF, METHOD, RECURSE, PREFIX)
-
-Walk the symbol table starting at SYMREF and call METHOD on each
-symbol (a B::GV object) visited. When the walk reaches package
-symbols (such as "Foo::") it invokes RECURSE, passing in the symbol
-name, and only recurses into the package if that sub returns true.
-
-PREFIX is the name of the SYMREF you're walking.
-
-For example...
-
- # Walk CGI's symbol table calling print_subs on each symbol.
- # Only recurse into CGI::Util::
- walksymtable(\%CGI::, 'print_subs', sub { $_[0] eq 'CGI::Util::' },
- 'CGI::');
-
-print_subs() is a B::GV method you have declared.
-
-
-=item svref_2object(SV)
-
-Takes any Perl variable and turns it into an object in the
-appropriate B::OP-derived or B::SV-derived class. Apart from functions
-such as C<main_root>, this is the primary way to get an initial
-"handle" on an internal perl data structure which can then be followed
-with the other access methods.
-
-=item ppname(OPNUM)
-
-Return the PP function name (e.g. "pp_add") of op number OPNUM.
-
-=item hash(STR)
-
-Returns a string in the form "0x..." representing the value of the
-internal hash function used by perl on string STR.
-
-=item cast_I32(I)
-
-Casts I to the internal I32 type used by that perl.
-
-
-=item minus_c
-
-Does the equivalent of the C<-c> command-line option. Obviously, this
-is only useful in a BEGIN block or else the flag is set too late.
-
-
-=item cstring(STR)
-
-Returns a double-quote-surrounded escaped version of STR which can
-be used as a string in C source code.
-
-=item perlstring(STR)
-
-Returns a double-quote-surrounded escaped version of STR which can
-be used as a string in Perl source code.
-
-=item class(OBJ)
-
-Returns the class of an object without the part of the classname
-preceding the first "::". This is used to turn "B::UNOP" into
-"UNOP" for example.
-
-=item threadsv_names
-
-In a perl compiled for threads, this returns a list of the special
-per-thread threadsv variables.
-
-=back
-
-=head1 AUTHOR
-
-Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
-
-=cut
diff --git a/Master/perltl/lib/B/Deparse.pm b/Master/perltl/lib/B/Deparse.pm
deleted file mode 100644
index 924f4366d66..00000000000
--- a/Master/perltl/lib/B/Deparse.pm
+++ /dev/null
@@ -1,4233 +0,0 @@
-# B::Deparse.pm
-# Copyright (c) 1998, 1999, 2000 Stephen McCamant. All rights reserved.
-# This module is free software; you can redistribute and/or modify
-# it under the same terms as Perl itself.
-
-# This is based on the module of the same name by Malcolm Beattie,
-# but essentially none of his code remains.
-
-package B::Deparse;
-use Carp;
-use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
- OPf_WANT OPf_WANT_VOID OPf_WANT_SCALAR OPf_WANT_LIST
- OPf_KIDS OPf_REF OPf_STACKED OPf_SPECIAL OPf_MOD
- OPpLVAL_INTRO OPpOUR_INTRO OPpENTERSUB_AMPER OPpSLICE OPpCONST_BARE
- OPpTRANS_SQUASH OPpTRANS_DELETE OPpTRANS_COMPLEMENT OPpTARGET_MY
- OPpCONST_ARYBASE OPpEXISTS_SUB OPpSORT_NUMERIC OPpSORT_INTEGER
- OPpSORT_REVERSE
- SVf_IOK SVf_NOK SVf_ROK SVf_POK SVpad_OUR
- CVf_METHOD CVf_LOCKED CVf_LVALUE
- PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE PMf_SKIPWHITE
- PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED);
-$VERSION = 0.63;
-use strict;
-use vars qw/$AUTOLOAD/;
-use warnings ();
-
-# Changes between 0.50 and 0.51:
-# - fixed nulled leave with live enter in sort { }
-# - fixed reference constants (\"str")
-# - handle empty programs gracefully
-# - handle infinte loops (for (;;) {}, while (1) {})
-# - differentiate between `for my $x ...' and `my $x; for $x ...'
-# - various minor cleanups
-# - moved globals into an object
-# - added `-u', like B::C
-# - package declarations using cop_stash
-# - subs, formats and code sorted by cop_seq
-# Changes between 0.51 and 0.52:
-# - added pp_threadsv (special variables under USE_5005THREADS)
-# - added documentation
-# Changes between 0.52 and 0.53:
-# - many changes adding precedence contexts and associativity
-# - added `-p' and `-s' output style options
-# - various other minor fixes
-# Changes between 0.53 and 0.54:
-# - added support for new `for (1..100)' optimization,
-# thanks to Gisle Aas
-# Changes between 0.54 and 0.55:
-# - added support for new qr// construct
-# - added support for new pp_regcreset OP
-# Changes between 0.55 and 0.56:
-# - tested on base/*.t, cmd/*.t, comp/*.t, io/*.t
-# - fixed $# on non-lexicals broken in last big rewrite
-# - added temporary fix for change in opcode of OP_STRINGIFY
-# - fixed problem in 0.54's for() patch in `for (@ary)'
-# - fixed precedence in conditional of ?:
-# - tweaked list paren elimination in `my($x) = @_'
-# - made continue-block detection trickier wrt. null ops
-# - fixed various prototype problems in pp_entersub
-# - added support for sub prototypes that never get GVs
-# - added unquoting for special filehandle first arg in truncate
-# - print doubled rv2gv (a bug) as `*{*GV}' instead of illegal `**GV'
-# - added semicolons at the ends of blocks
-# - added -l `#line' declaration option -- fixes cmd/subval.t 27,28
-# Changes between 0.56 and 0.561:
-# - fixed multiply-declared my var in pp_truncate (thanks to Sarathy)
-# - used new B.pm symbolic constants (done by Nick Ing-Simmons)
-# Changes between 0.561 and 0.57:
-# - stylistic changes to symbolic constant stuff
-# - handled scope in s///e replacement code
-# - added unquote option for expanding "" into concats, etc.
-# - split method and proto parts of pp_entersub into separate functions
-# - various minor cleanups
-# Changes after 0.57:
-# - added parens in \&foo (patch by Albert Dvornik)
-# Changes between 0.57 and 0.58:
-# - fixed `0' statements that weren't being printed
-# - added methods for use from other programs
-# (based on patches from James Duncan and Hugo van der Sanden)
-# - added -si and -sT to control indenting (also based on a patch from Hugo)
-# - added -sv to print something else instead of '???'
-# - preliminary version of utf8 tr/// handling
-# Changes after 0.58:
-# - uses of $op->ppaddr changed to new $op->name (done by Sarathy)
-# - added support for Hugo's new OP_SETSTATE (like nextstate)
-# Changes between 0.58 and 0.59
-# - added support for Chip's OP_METHOD_NAMED
-# - added support for Ilya's OPpTARGET_MY optimization
-# - elided arrows before `()' subscripts when possible
-# Changes between 0.59 and 0.60
-# - support for method attribues was added
-# - some warnings fixed
-# - separate recognition of constant subs
-# - rewrote continue block handling, now recoginizing for loops
-# - added more control of expanding control structures
-# Changes between 0.60 and 0.61 (mostly by Robin Houston)
-# - many bug-fixes
-# - support for pragmas and 'use'
-# - support for the little-used $[ variable
-# - support for __DATA__ sections
-# - UTF8 support
-# - BEGIN, CHECK, INIT and END blocks
-# - scoping of subroutine declarations fixed
-# - compile-time output from the input program can be suppressed, so that the
-# output is just the deparsed code. (a change to O.pm in fact)
-# - our() declarations
-# - *all* the known bugs are now listed in the BUGS section
-# - comprehensive test mechanism (TEST -deparse)
-# Changes between 0.62 and 0.63 (mostly by Rafael Garcia-Suarez)
-# - bug-fixes
-# - new switch -P
-# - support for command-line switches (-l, -0, etc.)
-
-# Todo:
-# (See also BUGS section at the end of this file)
-#
-# - finish tr/// changes
-# - add option for even more parens (generalize \&foo change)
-# - left/right context
-# - treat top-level block specially for incremental output
-# - copy comments (look at real text with $^P?)
-# - avoid semis in one-statement blocks
-# - associativity of &&=, ||=, ?:
-# - ',' => '=>' (auto-unquote?)
-# - break long lines ("\r" as discretionary break?)
-# - configurable syntax highlighting: ANSI color, HTML, TeX, etc.
-# - more style options: brace style, hex vs. octal, quotes, ...
-# - print big ints as hex/octal instead of decimal (heuristic?)
-# - handle `my $x if 0'?
-# - coordinate with Data::Dumper (both directions? see previous)
-# - version using op_next instead of op_first/sibling?
-# - avoid string copies (pass arrays, one big join?)
-# - here-docs?
-
-# Tests that will always fail:
-# (see t/TEST for the short list)
-
-# Object fields (were globals):
-#
-# avoid_local:
-# (local($a), local($b)) and local($a, $b) have the same internal
-# representation but the short form looks better. We notice we can
-# use a large-scale local when checking the list, but need to prevent
-# individual locals too. This hash holds the addresses of OPs that
-# have already had their local-ness accounted for. The same thing
-# is done with my().
-#
-# curcv:
-# CV for current sub (or main program) being deparsed
-#
-# curcvlex:
-# Cached hash of lexical variables for curcv: keys are names,
-# each value is an array of pairs, indicating the cop_seq of scopes
-# in which a var of that name is valid.
-#
-# curcop:
-# COP for statement being deparsed
-#
-# curstash:
-# name of the current package for deparsed code
-#
-# subs_todo:
-# array of [cop_seq, CV, is_format?] for subs and formats we still
-# want to deparse
-#
-# protos_todo:
-# as above, but [name, prototype] for subs that never got a GV
-#
-# subs_done, forms_done:
-# keys are addresses of GVs for subs and formats we've already
-# deparsed (or at least put into subs_todo)
-#
-# subs_declared
-# keys are names of subs for which we've printed declarations.
-# That means we can omit parentheses from the arguments.
-#
-# subs_deparsed
-# Keeps track of fully qualified names of all deparsed subs.
-#
-# parens: -p
-# linenums: -l
-# unquote: -q
-# cuddle: ` ' or `\n', depending on -sC
-# indent_size: -si
-# use_tabs: -sT
-# ex_const: -sv
-
-# A little explanation of how precedence contexts and associativity
-# work:
-#
-# deparse() calls each per-op subroutine with an argument $cx (short
-# for context, but not the same as the cx* in the perl core), which is
-# a number describing the op's parents in terms of precedence, whether
-# they're inside an expression or at statement level, etc. (see
-# chart below). When ops with children call deparse on them, they pass
-# along their precedence. Fractional values are used to implement
-# associativity (`($x + $y) + $z' => `$x + $y + $y') and related
-# parentheses hacks. The major disadvantage of this scheme is that
-# it doesn't know about right sides and left sides, so say if you
-# assign a listop to a variable, it can't tell it's allowed to leave
-# the parens off the listop.
-
-# Precedences:
-# 26 [TODO] inside interpolation context ("")
-# 25 left terms and list operators (leftward)
-# 24 left ->
-# 23 nonassoc ++ --
-# 22 right **
-# 21 right ! ~ \ and unary + and -
-# 20 left =~ !~
-# 19 left * / % x
-# 18 left + - .
-# 17 left << >>
-# 16 nonassoc named unary operators
-# 15 nonassoc < > <= >= lt gt le ge
-# 14 nonassoc == != <=> eq ne cmp
-# 13 left &
-# 12 left | ^
-# 11 left &&
-# 10 left ||
-# 9 nonassoc .. ...
-# 8 right ?:
-# 7 right = += -= *= etc.
-# 6 left , =>
-# 5 nonassoc list operators (rightward)
-# 4 right not
-# 3 left and
-# 2 left or xor
-# 1 statement modifiers
-# 0 statement level
-
-# Also, lineseq may pass a fourth parameter to the pp_ routines:
-# if present, the fourth parameter is passed on by deparse.
-#
-# If present and true, it means that the op exists directly as
-# part of a lineseq. Currently it's only used by scopeop to
-# decide whether its results need to be enclosed in a do {} block.
-
-# Nonprinting characters with special meaning:
-# \cS - steal parens (see maybe_parens_unop)
-# \n - newline and indent
-# \t - increase indent
-# \b - decrease indent (`outdent')
-# \f - flush left (no indent)
-# \cK - kill following semicolon, if any
-
-sub null {
- my $op = shift;
- return class($op) eq "NULL";
-}
-
-sub todo {
- my $self = shift;
- my($cv, $is_form) = @_;
- return unless ($cv->FILE eq $0 || exists $self->{files}{$cv->FILE});
- my $seq;
- if (!null($cv->START) and is_state($cv->START)) {
- $seq = $cv->START->cop_seq;
- } else {
- $seq = 0;
- }
- push @{$self->{'subs_todo'}}, [$seq, $cv, $is_form];
- unless ($is_form || class($cv->STASH) eq 'SPECIAL') {
- $self->{'subs_deparsed'}{$cv->STASH->NAME."::".$cv->GV->NAME} = 1;
- }
-}
-
-sub next_todo {
- my $self = shift;
- my $ent = shift @{$self->{'subs_todo'}};
- my $cv = $ent->[1];
- my $gv = $cv->GV;
- my $name = $self->gv_name($gv);
- if ($ent->[2]) {
- return "format $name =\n"
- . $self->deparse_format($ent->[1]). "\n";
- } else {
- $self->{'subs_declared'}{$name} = 1;
- if ($name eq "BEGIN") {
- my $use_dec = $self->begin_is_use($cv);
- if (defined ($use_dec)) {
- return () if 0 == length($use_dec);
- return $use_dec;
- }
- }
- my $l = '';
- if ($self->{'linenums'}) {
- my $line = $gv->LINE;
- my $file = $gv->FILE;
- $l = "\n\f#line $line \"$file\"\n";
- }
- return "${l}sub $name " . $self->deparse_sub($cv);
- }
-}
-
-# Return a "use" declaration for this BEGIN block, if appropriate
-sub begin_is_use {
- my ($self, $cv) = @_;
- my $root = $cv->ROOT;
- local @$self{qw'curcv curcvlex'} = ($cv);
-#require B::Debug;
-#B::walkoptree($cv->ROOT, "debug");
- my $lineseq = $root->first;
- return if $lineseq->name ne "lineseq";
-
- my $req_op = $lineseq->first->sibling;
- return if $req_op->name ne "require";
-
- my $module;
- if ($req_op->first->private & OPpCONST_BARE) {
- # Actually it should always be a bareword
- $module = $self->const_sv($req_op->first)->PV;
- $module =~ s[/][::]g;
- $module =~ s/.pm$//;
- }
- else {
- $module = const($self->const_sv($req_op->first));
- }
-
- my $version;
- my $version_op = $req_op->sibling;
- return if class($version_op) eq "NULL";
- if ($version_op->name eq "lineseq") {
- # We have a version parameter; skip nextstate & pushmark
- my $constop = $version_op->first->next->next;
-
- return unless $self->const_sv($constop)->PV eq $module;
- $constop = $constop->sibling;
- $version = $self->const_sv($constop)->int_value;
- $constop = $constop->sibling;
- return if $constop->name ne "method_named";
- return if $self->const_sv($constop)->PV ne "VERSION";
- }
-
- $lineseq = $version_op->sibling;
- return if $lineseq->name ne "lineseq";
- my $entersub = $lineseq->first->sibling;
- if ($entersub->name eq "stub") {
- return "use $module $version ();\n" if defined $version;
- return "use $module ();\n";
- }
- return if $entersub->name ne "entersub";
-
- # See if there are import arguments
- my $args = '';
-
- my $svop = $entersub->first->sibling; # Skip over pushmark
- return unless $self->const_sv($svop)->PV eq $module;
-
- # Pull out the arguments
- for ($svop=$svop->sibling; $svop->name ne "method_named";
- $svop = $svop->sibling) {
- $args .= ", " if length($args);
- $args .= $self->deparse($svop, 6);
- }
-
- my $use = 'use';
- my $method_named = $svop;
- return if $method_named->name ne "method_named";
- my $method_name = $self->const_sv($method_named)->PV;
-
- if ($method_name eq "unimport") {
- $use = 'no';
- }
-
- # Certain pragmas are dealt with using hint bits,
- # so we ignore them here
- if ($module eq 'strict' || $module eq 'integer'
- || $module eq 'bytes' || $module eq 'warnings') {
- return "";
- }
-
- if (defined $version && length $args) {
- return "$use $module $version ($args);\n";
- } elsif (defined $version) {
- return "$use $module $version;\n";
- } elsif (length $args) {
- return "$use $module ($args);\n";
- } else {
- return "$use $module;\n";
- }
-}
-
-sub stash_subs {
- my ($self, $pack) = @_;
- my (@ret, $stash);
- if (!defined $pack) {
- $pack = '';
- $stash = \%::;
- }
- else {
- $pack =~ s/(::)?$/::/;
- no strict 'refs';
- $stash = \%$pack;
- }
- my %stash = svref_2object($stash)->ARRAY;
- while (my ($key, $val) = each %stash) {
- next if $key eq 'main::'; # avoid infinite recursion
- my $class = class($val);
- if ($class eq "PV") {
- # Just a prototype. As an ugly but fairly effective way
- # to find out if it belongs here is to see if the AUTOLOAD
- # (if any) for the stash was defined in one of our files.
- my $A = $stash{"AUTOLOAD"};
- if (defined ($A) && class($A) eq "GV" && defined($A->CV)
- && class($A->CV) eq "CV") {
- my $AF = $A->FILE;
- next unless $AF eq $0 || exists $self->{'files'}{$AF};
- }
- push @{$self->{'protos_todo'}}, [$pack . $key, $val->PV];
- } elsif ($class eq "IV") {
- # Just a name. As above.
- my $A = $stash{"AUTOLOAD"};
- if (defined ($A) && class($A) eq "GV" && defined($A->CV)
- && class($A->CV) eq "CV") {
- my $AF = $A->FILE;
- next unless $AF eq $0 || exists $self->{'files'}{$AF};
- }
- push @{$self->{'protos_todo'}}, [$pack . $key, undef];
- } elsif ($class eq "GV") {
- if (class(my $cv = $val->CV) ne "SPECIAL") {
- next if $self->{'subs_done'}{$$val}++;
- next if $$val != ${$cv->GV}; # Ignore imposters
- $self->todo($cv, 0);
- }
- if (class(my $cv = $val->FORM) ne "SPECIAL") {
- next if $self->{'forms_done'}{$$val}++;
- next if $$val != ${$cv->GV}; # Ignore imposters
- $self->todo($cv, 1);
- }
- if (class($val->HV) ne "SPECIAL" && $key =~ /::$/) {
- $self->stash_subs($pack . $key);
- }
- }
- }
-}
-
-sub print_protos {
- my $self = shift;
- my $ar;
- my @ret;
- foreach $ar (@{$self->{'protos_todo'}}) {
- my $proto = (defined $ar->[1] ? " (". $ar->[1] . ")" : "");
- push @ret, "sub " . $ar->[0] . "$proto;\n";
- }
- delete $self->{'protos_todo'};
- return @ret;
-}
-
-sub style_opts {
- my $self = shift;
- my $opts = shift;
- my $opt;
- while (length($opt = substr($opts, 0, 1))) {
- if ($opt eq "C") {
- $self->{'cuddle'} = " ";
- $opts = substr($opts, 1);
- } elsif ($opt eq "i") {
- $opts =~ s/^i(\d+)//;
- $self->{'indent_size'} = $1;
- } elsif ($opt eq "T") {
- $self->{'use_tabs'} = 1;
- $opts = substr($opts, 1);
- } elsif ($opt eq "v") {
- $opts =~ s/^v([^.]*)(.|$)//;
- $self->{'ex_const'} = $1;
- }
- }
-}
-
-sub new {
- my $class = shift;
- my $self = bless {}, $class;
- $self->{'subs_todo'} = [];
- $self->{'files'} = {};
- $self->{'curstash'} = "main";
- $self->{'curcop'} = undef;
- $self->{'cuddle'} = "\n";
- $self->{'indent_size'} = 4;
- $self->{'use_tabs'} = 0;
- $self->{'expand'} = 0;
- $self->{'unquote'} = 0;
- $self->{'linenums'} = 0;
- $self->{'parens'} = 0;
- $self->{'ex_const'} = "'???'";
-
- $self->{'ambient_arybase'} = 0;
- $self->{'ambient_warnings'} = undef; # Assume no lexical warnings
- $self->{'ambient_hints'} = 0;
- $self->init();
-
- while (my $arg = shift @_) {
- if ($arg =~ /^-f(.*)/) {
- $self->{'files'}{$1} = 1;
- } elsif ($arg eq "-p") {
- $self->{'parens'} = 1;
- } elsif ($arg eq "-P") {
- $self->{'noproto'} = 1;
- } elsif ($arg eq "-l") {
- $self->{'linenums'} = 1;
- } elsif ($arg eq "-q") {
- $self->{'unquote'} = 1;
- } elsif (substr($arg, 0, 2) eq "-s") {
- $self->style_opts(substr $arg, 2);
- } elsif ($arg =~ /^-x(\d)$/) {
- $self->{'expand'} = $1;
- }
- }
- return $self;
-}
-
-{
- # Mask out the bits that L<warnings::register> uses
- my $WARN_MASK;
- BEGIN {
- $WARN_MASK = $warnings::Bits{all} | $warnings::DeadBits{all};
- }
- sub WARN_MASK () {
- return $WARN_MASK;
- }
-}
-
-# Initialise the contextual information, either from
-# defaults provided with the ambient_pragmas method,
-# or from perl's own defaults otherwise.
-sub init {
- my $self = shift;
-
- $self->{'arybase'} = $self->{'ambient_arybase'};
- $self->{'warnings'} = defined ($self->{'ambient_warnings'})
- ? $self->{'ambient_warnings'} & WARN_MASK
- : undef;
- $self->{'hints'} = $self->{'ambient_hints'} & 0xFF;
-
- # also a convenient place to clear out subs_declared
- delete $self->{'subs_declared'};
-}
-
-sub compile {
- my(@args) = @_;
- return sub {
- my $self = B::Deparse->new(@args);
- # First deparse command-line args
- if (defined $^I) { # deparse -i
- print q(BEGIN { $^I = ).perlstring($^I).qq(; }\n);
- }
- if ($^W) { # deparse -w
- print qq(BEGIN { \$^W = $^W; }\n);
- }
- if ($/ ne "\n" or defined $O::savebackslash) { # deparse -l and -0
- my $fs = perlstring($/) || 'undef';
- my $bs = perlstring($O::savebackslash) || 'undef';
- print qq(BEGIN { \$/ = $fs; \$\\ = $bs; }\n);
- }
- my @BEGINs = B::begin_av->isa("B::AV") ? B::begin_av->ARRAY : ();
- my @INITs = B::init_av->isa("B::AV") ? B::init_av->ARRAY : ();
- my @ENDs = B::end_av->isa("B::AV") ? B::end_av->ARRAY : ();
- for my $block (@BEGINs, @INITs, @ENDs) {
- $self->todo($block, 0);
- }
- $self->stash_subs();
- $self->{'curcv'} = main_cv;
- $self->{'curcvlex'} = undef;
- print $self->print_protos;
- @{$self->{'subs_todo'}} =
- sort {$a->[0] <=> $b->[0]} @{$self->{'subs_todo'}};
- print $self->indent($self->deparse(main_root, 0)), "\n"
- unless null main_root;
- my @text;
- while (scalar(@{$self->{'subs_todo'}})) {
- push @text, $self->next_todo;
- }
- print $self->indent(join("", @text)), "\n" if @text;
-
- # Print __DATA__ section, if necessary
- no strict 'refs';
- my $laststash = defined $self->{'curcop'}
- ? $self->{'curcop'}->stash->NAME : $self->{'curstash'};
- if (defined *{$laststash."::DATA"}{IO}) {
- print "__DATA__\n";
- print readline(*{$laststash."::DATA"});
- }
- }
-}
-
-sub coderef2text {
- my $self = shift;
- my $sub = shift;
- croak "Usage: ->coderef2text(CODEREF)" unless UNIVERSAL::isa($sub, "CODE");
-
- $self->init();
- return $self->indent($self->deparse_sub(svref_2object($sub)));
-}
-
-sub ambient_pragmas {
- my $self = shift;
- my ($arybase, $hint_bits, $warning_bits) = (0, 0);
-
- while (@_ > 1) {
- my $name = shift();
- my $val = shift();
-
- if ($name eq 'strict') {
- require strict;
-
- if ($val eq 'none') {
- $hint_bits &= ~strict::bits(qw/refs subs vars/);
- next();
- }
-
- my @names;
- if ($val eq "all") {
- @names = qw/refs subs vars/;
- }
- elsif (ref $val) {
- @names = @$val;
- }
- else {
- @names = split' ', $val;
- }
- $hint_bits |= strict::bits(@names);
- }
-
- elsif ($name eq '$[') {
- $arybase = $val;
- }
-
- elsif ($name eq 'integer'
- || $name eq 'bytes'
- || $name eq 'utf8') {
- require "$name.pm";
- if ($val) {
- $hint_bits |= ${$::{"${name}::"}{"hint_bits"}};
- }
- else {
- $hint_bits &= ~${$::{"${name}::"}{"hint_bits"}};
- }
- }
-
- elsif ($name eq 're') {
- require re;
- if ($val eq 'none') {
- $hint_bits &= ~re::bits(qw/taint eval/);
- next();
- }
-
- my @names;
- if ($val eq 'all') {
- @names = qw/taint eval/;
- }
- elsif (ref $val) {
- @names = @$val;
- }
- else {
- @names = split' ',$val;
- }
- $hint_bits |= re::bits(@names);
- }
-
- elsif ($name eq 'warnings') {
- if ($val eq 'none') {
- $warning_bits = $warnings::NONE;
- next();
- }
-
- my @names;
- if (ref $val) {
- @names = @$val;
- }
- else {
- @names = split/\s+/, $val;
- }
-
- $warning_bits = $warnings::NONE if !defined ($warning_bits);
- $warning_bits |= warnings::bits(@names);
- }
-
- elsif ($name eq 'warning_bits') {
- $warning_bits = $val;
- }
-
- elsif ($name eq 'hint_bits') {
- $hint_bits = $val;
- }
-
- else {
- croak "Unknown pragma type: $name";
- }
- }
- if (@_) {
- croak "The ambient_pragmas method expects an even number of args";
- }
-
- $self->{'ambient_arybase'} = $arybase;
- $self->{'ambient_warnings'} = $warning_bits;
- $self->{'ambient_hints'} = $hint_bits;
-}
-
-sub deparse {
- my $self = shift;
- my($op, $cx, $flags) = @_;
-
- Carp::confess("Null op in deparse") if !defined($op)
- || class($op) eq "NULL";
- my $meth = "pp_" . $op->name;
- if (is_scope($op)) {
- return $self->$meth($op, $cx, $flags);
- }
- return $self->$meth($op, $cx);
-}
-
-sub indent {
- my $self = shift;
- my $txt = shift;
- my @lines = split(/\n/, $txt);
- my $leader = "";
- my $level = 0;
- my $line;
- for $line (@lines) {
- my $cmd = substr($line, 0, 1);
- if ($cmd eq "\t" or $cmd eq "\b") {
- $level += ($cmd eq "\t" ? 1 : -1) * $self->{'indent_size'};
- if ($self->{'use_tabs'}) {
- $leader = "\t" x ($level / 8) . " " x ($level % 8);
- } else {
- $leader = " " x $level;
- }
- $line = substr($line, 1);
- }
- if (substr($line, 0, 1) eq "\f") {
- $line = substr($line, 1); # no indent
- } else {
- $line = $leader . $line;
- }
- $line =~ s/\cK;?//g;
- }
- return join("\n", @lines);
-}
-
-sub deparse_sub {
- my $self = shift;
- my $cv = shift;
- my $proto = "";
-Carp::confess("NULL in deparse_sub") if !defined($cv) || $cv->isa("B::NULL");
-Carp::confess("SPECIAL in deparse_sub") if $cv->isa("B::SPECIAL");
- local $self->{'curcop'} = $self->{'curcop'};
- if ($cv->FLAGS & SVf_POK) {
- $proto = "(". $cv->PV . ") ";
- }
- if ($cv->CvFLAGS & (CVf_METHOD|CVf_LOCKED|CVf_LVALUE)) {
- $proto .= ": ";
- $proto .= "lvalue " if $cv->CvFLAGS & CVf_LVALUE;
- $proto .= "locked " if $cv->CvFLAGS & CVf_LOCKED;
- $proto .= "method " if $cv->CvFLAGS & CVf_METHOD;
- }
-
- local($self->{'curcv'}) = $cv;
- local($self->{'curcvlex'});
- local(@$self{qw'curstash warnings hints'})
- = @$self{qw'curstash warnings hints'};
- my $body;
- if (not null $cv->ROOT) {
- my $lineseq = $cv->ROOT->first;
- if ($lineseq->name eq "lineseq") {
- my @ops;
- for(my$o=$lineseq->first; $$o; $o=$o->sibling) {
- push @ops, $o;
- }
- $body = $self->lineseq(undef, @ops).";";
- my $scope_en = $self->find_scope_en($lineseq);
- if (defined $scope_en) {
- my $subs = join"", $self->seq_subs($scope_en);
- $body .= ";\n$subs" if length($subs);
- }
- }
- else {
- $body = $self->deparse($cv->ROOT->first, 0);
- }
- }
- else {
- my $sv = $cv->const_sv;
- if ($$sv) {
- # uh-oh. inlinable sub... format it differently
- return $proto . "{ " . const($sv) . " }\n";
- } else { # XSUB? (or just a declaration)
- return "$proto;\n";
- }
- }
- return $proto ."{\n\t$body\n\b}" ."\n";
-}
-
-sub deparse_format {
- my $self = shift;
- my $form = shift;
- my @text;
- local($self->{'curcv'}) = $form;
- local($self->{'curcvlex'});
- local($self->{'in_format'}) = 1;
- local(@$self{qw'curstash warnings hints'})
- = @$self{qw'curstash warnings hints'};
- my $op = $form->ROOT;
- my $kid;
- return "\f." if $op->first->name eq 'stub'
- || $op->first->name eq 'nextstate';
- $op = $op->first->first; # skip leavewrite, lineseq
- while (not null $op) {
- $op = $op->sibling; # skip nextstate
- my @exprs;
- $kid = $op->first->sibling; # skip pushmark
- push @text, "\f".$self->const_sv($kid)->PV;
- $kid = $kid->sibling;
- for (; not null $kid; $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 0);
- }
- push @text, "\f".join(", ", @exprs)."\n" if @exprs;
- $op = $op->sibling;
- }
- return join("", @text) . "\f.";
-}
-
-sub is_scope {
- my $op = shift;
- return $op->name eq "leave" || $op->name eq "scope"
- || $op->name eq "lineseq"
- || ($op->name eq "null" && class($op) eq "UNOP"
- && (is_scope($op->first) || $op->first->name eq "enter"));
-}
-
-sub is_state {
- my $name = $_[0]->name;
- return $name eq "nextstate" || $name eq "dbstate" || $name eq "setstate";
-}
-
-sub is_miniwhile { # check for one-line loop (`foo() while $y--')
- my $op = shift;
- return (!null($op) and null($op->sibling)
- and $op->name eq "null" and class($op) eq "UNOP"
- and (($op->first->name =~ /^(and|or)$/
- and $op->first->first->sibling->name eq "lineseq")
- or ($op->first->name eq "lineseq"
- and not null $op->first->first->sibling
- and $op->first->first->sibling->name eq "unstack")
- ));
-}
-
-sub is_scalar {
- my $op = shift;
- return ($op->name eq "rv2sv" or
- $op->name eq "padsv" or
- $op->name eq "gv" or # only in array/hash constructs
- $op->flags & OPf_KIDS && !null($op->first)
- && $op->first->name eq "gvsv");
-}
-
-sub maybe_parens {
- my $self = shift;
- my($text, $cx, $prec) = @_;
- if ($prec < $cx # unary ops nest just fine
- or $prec == $cx and $cx != 4 and $cx != 16 and $cx != 21
- or $self->{'parens'})
- {
- $text = "($text)";
- # In a unop, let parent reuse our parens; see maybe_parens_unop
- $text = "\cS" . $text if $cx == 16;
- return $text;
- } else {
- return $text;
- }
-}
-
-# same as above, but get around the `if it looks like a function' rule
-sub maybe_parens_unop {
- my $self = shift;
- my($name, $kid, $cx) = @_;
- if ($cx > 16 or $self->{'parens'}) {
- $kid = $self->deparse($kid, 1);
- if ($name eq "umask" && $kid =~ /^\d+$/) {
- $kid = sprintf("%#o", $kid);
- }
- return "$name($kid)";
- } else {
- $kid = $self->deparse($kid, 16);
- if ($name eq "umask" && $kid =~ /^\d+$/) {
- $kid = sprintf("%#o", $kid);
- }
- if (substr($kid, 0, 1) eq "\cS") {
- # use kid's parens
- return $name . substr($kid, 1);
- } elsif (substr($kid, 0, 1) eq "(") {
- # avoid looks-like-a-function trap with extra parens
- # (`+' can lead to ambiguities)
- return "$name(" . $kid . ")";
- } else {
- return "$name $kid";
- }
- }
-}
-
-sub maybe_parens_func {
- my $self = shift;
- my($func, $text, $cx, $prec) = @_;
- if ($prec <= $cx or substr($text, 0, 1) eq "(" or $self->{'parens'}) {
- return "$func($text)";
- } else {
- return "$func $text";
- }
-}
-
-sub maybe_local {
- my $self = shift;
- my($op, $cx, $text) = @_;
- my $our_intro = ($op->name =~ /^(gv|rv2)[ash]v$/) ? OPpOUR_INTRO : 0;
- if ($op->private & (OPpLVAL_INTRO|$our_intro)
- and not $self->{'avoid_local'}{$$op}) {
- my $our_local = ($op->private & OPpLVAL_INTRO) ? "local" : "our";
- if (want_scalar($op)) {
- return "$our_local $text";
- } else {
- return $self->maybe_parens_func("$our_local", $text, $cx, 16);
- }
- } else {
- return $text;
- }
-}
-
-sub maybe_targmy {
- my $self = shift;
- my($op, $cx, $func, @args) = @_;
- if ($op->private & OPpTARGET_MY) {
- my $var = $self->padname($op->targ);
- my $val = $func->($self, $op, 7, @args);
- return $self->maybe_parens("$var = $val", $cx, 7);
- } else {
- return $func->($self, $op, $cx, @args);
- }
-}
-
-sub padname_sv {
- my $self = shift;
- my $targ = shift;
- return (($self->{'curcv'}->PADLIST->ARRAY)[0]->ARRAY)[$targ];
-}
-
-sub maybe_my {
- my $self = shift;
- my($op, $cx, $text) = @_;
- if ($op->private & OPpLVAL_INTRO and not $self->{'avoid_local'}{$$op}) {
- if (want_scalar($op)) {
- return "my $text";
- } else {
- return $self->maybe_parens_func("my", $text, $cx, 16);
- }
- } else {
- return $text;
- }
-}
-
-# The following OPs don't have functions:
-
-# pp_padany -- does not exist after parsing
-
-sub AUTOLOAD {
- if ($AUTOLOAD =~ s/^.*::pp_//) {
- warn "unexpected OP_".uc $AUTOLOAD;
- return "XXX";
- } else {
- die "Undefined subroutine $AUTOLOAD called";
- }
-}
-
-sub DESTROY {} # Do not AUTOLOAD
-
-# $root should be the op which represents the root of whatever
-# we're sequencing here. If it's undefined, then we don't append
-# any subroutine declarations to the deparsed ops, otherwise we
-# append appropriate declarations.
-sub lineseq {
- my($self, $root, @ops) = @_;
- my($expr, @exprs);
-
- my $out_cop = $self->{'curcop'};
- my $out_seq = defined($out_cop) ? $out_cop->cop_seq : undef;
- my $limit_seq;
- if (defined $root) {
- $limit_seq = $out_seq;
- my $nseq = $self->find_scope_st($root->sibling) if ${$root->sibling};
- $limit_seq = $nseq if !defined($limit_seq)
- or defined($nseq) && $nseq < $limit_seq;
- }
- $limit_seq = $self->{'limit_seq'}
- if defined($self->{'limit_seq'})
- && (!defined($limit_seq) || $self->{'limit_seq'} < $limit_seq);
- local $self->{'limit_seq'} = $limit_seq;
- for (my $i = 0; $i < @ops; $i++) {
- $expr = "";
- if (is_state $ops[$i]) {
- $expr = $self->deparse($ops[$i], 0);
- $i++;
- if ($i > $#ops) {
- push @exprs, $expr;
- last;
- }
- }
- if (!is_state $ops[$i] and (my $ls = $ops[$i+1]) and
- !null($ops[$i+1]) and $ops[$i+1]->name eq "lineseq")
- {
- if ($ls->first && !null($ls->first) && is_state($ls->first)
- && (my $sib = $ls->first->sibling)) {
- if (!null($sib) && $sib->name eq "leaveloop") {
- push @exprs, $expr . $self->for_loop($ops[$i], 0);
- $i++;
- next;
- }
- }
- }
- $expr .= $self->deparse($ops[$i], 0, (@ops != 1));
- $expr =~ s/;\n?\z//;
- push @exprs, $expr;
- }
- my $body = join(";\n", grep {length} @exprs);
- my $subs = "";
- if (defined $root && defined $limit_seq && !$self->{'in_format'}) {
- $subs = join "\n", $self->seq_subs($limit_seq);
- }
- return join(";\n", grep {length} $body, $subs);
-}
-
-sub scopeop {
- my($real_block, $self, $op, $cx, $flags) = @_;
- my $kid;
- my @kids;
-
- local(@$self{qw'curstash warnings hints'})
- = @$self{qw'curstash warnings hints'} if $real_block;
- if ($real_block) {
- $kid = $op->first->sibling; # skip enter
- if (is_miniwhile($kid)) {
- my $top = $kid->first;
- my $name = $top->name;
- if ($name eq "and") {
- $name = "while";
- } elsif ($name eq "or") {
- $name = "until";
- } else { # no conditional -> while 1 or until 0
- return $self->deparse($top->first, 1) . " while 1";
- }
- my $cond = $top->first;
- my $body = $cond->sibling->first; # skip lineseq
- $cond = $self->deparse($cond, 1);
- $body = $self->deparse($body, 1);
- return "$body $name $cond";
- }
- } else {
- $kid = $op->first;
- }
- for (; !null($kid); $kid = $kid->sibling) {
- push @kids, $kid;
- }
- if ($flags || $cx > 0) { # inside an expression, (a do {} while for lineseq)
- return "do {\n\t" . $self->lineseq($op, @kids) . "\n\b}";
- } else {
- my $lineseq = $self->lineseq($op, @kids);
- return (length ($lineseq) ? "$lineseq;" : "");
- }
-}
-
-sub pp_scope { scopeop(0, @_); }
-sub pp_lineseq { scopeop(0, @_); }
-sub pp_leave { scopeop(1, @_); }
-
-# The BEGIN {} is used here because otherwise this code isn't executed
-# when you run B::Deparse on itself.
-my %globalnames;
-BEGIN { map($globalnames{$_}++, "SIG", "STDIN", "STDOUT", "STDERR", "INC",
- "ENV", "ARGV", "ARGVOUT", "_"); }
-
-sub gv_name {
- my $self = shift;
- my $gv = shift;
-Carp::confess() if $gv->isa("B::CV");
- my $stash = $gv->STASH->NAME;
- my $name = $gv->SAFENAME;
- if (($stash eq 'main' && $globalnames{$name})
- or ($stash eq $self->{'curstash'} && !$globalnames{$name})
- or $name =~ /^[^A-Za-z_]/)
- {
- $stash = "";
- } else {
- $stash = $stash . "::";
- }
- if ($name =~ /^(\^..|{)/) {
- $name = "{$name}"; # ${^WARNING_BITS}, etc and ${
- }
- return $stash . $name;
-}
-
-# Return the name to use for a stash variable.
-# If a lexical with the same name is in scope, it may need to be
-# fully-qualified.
-sub stash_variable {
- my ($self, $prefix, $name) = @_;
-
- return "$prefix$name" if $name =~ /::/;
-
- unless ($prefix eq '$' || $prefix eq '@' ||
- $prefix eq '%' || $prefix eq '$#') {
- return "$prefix$name";
- }
-
- my $v = ($prefix eq '$#' ? '@' : $prefix) . $name;
- return $prefix .$self->{'curstash'}.'::'. $name if $self->lex_in_scope($v);
- return "$prefix$name";
-}
-
-sub lex_in_scope {
- my ($self, $name) = @_;
- $self->populate_curcvlex() if !defined $self->{'curcvlex'};
-
- return 0 if !defined($self->{'curcop'});
- my $seq = $self->{'curcop'}->cop_seq;
- return 0 if !exists $self->{'curcvlex'}{$name};
- for my $a (@{$self->{'curcvlex'}{$name}}) {
- my ($st, $en) = @$a;
- return 1 if $seq > $st && $seq <= $en;
- }
- return 0;
-}
-
-sub populate_curcvlex {
- my $self = shift;
- for (my $cv = $self->{'curcv'}; class($cv) eq "CV"; $cv = $cv->OUTSIDE) {
- my @padlist = $cv->PADLIST->ARRAY;
- my @ns = $padlist[0]->ARRAY;
-
- for (my $i=0; $i<@ns; ++$i) {
- next if class($ns[$i]) eq "SPECIAL";
- next if $ns[$i]->FLAGS & SVpad_OUR; # Skip "our" vars
- if (class($ns[$i]) eq "PV") {
- # Probably that pesky lexical @_
- next;
- }
- my $name = $ns[$i]->PVX;
- my $seq_st = $ns[$i]->NVX;
- my $seq_en = int($ns[$i]->IVX);
-
- push @{$self->{'curcvlex'}{$name}}, [$seq_st, $seq_en];
- }
- }
-}
-
-sub find_scope_st { ((find_scope(@_))[0]); }
-sub find_scope_en { ((find_scope(@_))[1]); }
-
-# Recurses down the tree, looking for pad variable introductions and COPs
-sub find_scope {
- my ($self, $op, $scope_st, $scope_en) = @_;
- carp("Undefined op in find_scope") if !defined $op;
- return ($scope_st, $scope_en) unless $op->flags & OPf_KIDS;
-
- for (my $o=$op->first; $$o; $o=$o->sibling) {
- if ($o->name =~ /^pad.v$/ && $o->private & OPpLVAL_INTRO) {
- my $s = int($self->padname_sv($o->targ)->NVX);
- my $e = $self->padname_sv($o->targ)->IVX;
- $scope_st = $s if !defined($scope_st) || $s < $scope_st;
- $scope_en = $e if !defined($scope_en) || $e > $scope_en;
- }
- elsif (is_state($o)) {
- my $c = $o->cop_seq;
- $scope_st = $c if !defined($scope_st) || $c < $scope_st;
- $scope_en = $c if !defined($scope_en) || $c > $scope_en;
- }
- elsif ($o->flags & OPf_KIDS) {
- ($scope_st, $scope_en) =
- $self->find_scope($o, $scope_st, $scope_en)
- }
- }
-
- return ($scope_st, $scope_en);
-}
-
-# Returns a list of subs which should be inserted before the COP
-sub cop_subs {
- my ($self, $op, $out_seq) = @_;
- my $seq = $op->cop_seq;
- # If we have nephews, then our sequence number indicates
- # the cop_seq of the end of some sort of scope.
- if (class($op->sibling) ne "NULL" && $op->sibling->flags & OPf_KIDS
- and my $nseq = $self->find_scope_st($op->sibling) ) {
- $seq = $nseq;
- }
- $seq = $out_seq if defined($out_seq) && $out_seq < $seq;
- return $self->seq_subs($seq);
-}
-
-sub seq_subs {
- my ($self, $seq) = @_;
- my @text;
-#push @text, "# ($seq)\n";
-
- return "" if !defined $seq;
- while (scalar(@{$self->{'subs_todo'}})
- and $seq > $self->{'subs_todo'}[0][0]) {
- push @text, $self->next_todo;
- }
- return @text;
-}
-
-# Notice how subs and formats are inserted between statements here;
-# also $[ assignments and pragmas.
-sub pp_nextstate {
- my $self = shift;
- my($op, $cx) = @_;
- $self->{'curcop'} = $op;
- my @text;
- push @text, $self->cop_subs($op);
- push @text, $op->label . ": " if $op->label;
- my $stash = $op->stashpv;
- if ($stash ne $self->{'curstash'}) {
- push @text, "package $stash;\n";
- $self->{'curstash'} = $stash;
- }
- if ($self->{'linenums'}) {
- push @text, "\f#line " . $op->line .
- ' "' . $op->file, qq'"\n';
- }
-
- if ($self->{'arybase'} != $op->arybase) {
- push @text, '$[ = '. $op->arybase .";\n";
- $self->{'arybase'} = $op->arybase;
- }
-
- my $warnings = $op->warnings;
- my $warning_bits;
- if ($warnings->isa("B::SPECIAL") && $$warnings == 4) {
- $warning_bits = $warnings::Bits{"all"} & WARN_MASK;
- }
- elsif ($warnings->isa("B::SPECIAL") && $$warnings == 5) {
- $warning_bits = $warnings::NONE;
- }
- elsif ($warnings->isa("B::SPECIAL")) {
- $warning_bits = undef;
- }
- else {
- $warning_bits = $warnings->PV & WARN_MASK;
- }
-
- if (defined ($warning_bits) and
- !defined($self->{warnings}) || $self->{'warnings'} ne $warning_bits) {
- push @text, declare_warnings($self->{'warnings'}, $warning_bits);
- $self->{'warnings'} = $warning_bits;
- }
-
- if ($self->{'hints'} != $op->private) {
- push @text, declare_hints($self->{'hints'}, $op->private);
- $self->{'hints'} = $op->private;
- }
-
- return join("", @text);
-}
-
-sub declare_warnings {
- my ($from, $to) = @_;
- if (($to & WARN_MASK) eq warnings::bits("all")) {
- return "use warnings;\n";
- }
- elsif (($to & WARN_MASK) eq "\0"x length($to)) {
- return "no warnings;\n";
- }
- return "BEGIN {\${^WARNING_BITS} = ".perlstring($to)."}\n";
-}
-
-sub declare_hints {
- my ($from, $to) = @_;
- my $use = $to & ~$from;
- my $no = $from & ~$to;
- my $decls = "";
- for my $pragma (hint_pragmas($use)) {
- $decls .= "use $pragma;\n";
- }
- for my $pragma (hint_pragmas($no)) {
- $decls .= "no $pragma;\n";
- }
- return $decls;
-}
-
-sub hint_pragmas {
- my ($bits) = @_;
- my @pragmas;
- push @pragmas, "integer" if $bits & 0x1;
- push @pragmas, "strict 'refs'" if $bits & 0x2;
- push @pragmas, "bytes" if $bits & 0x8;
- return @pragmas;
-}
-
-sub pp_dbstate { pp_nextstate(@_) }
-sub pp_setstate { pp_nextstate(@_) }
-
-sub pp_unstack { return "" } # see also leaveloop
-
-sub baseop {
- my $self = shift;
- my($op, $cx, $name) = @_;
- return $name;
-}
-
-sub pp_stub {
- my $self = shift;
- my($op, $cx, $name) = @_;
- if ($cx) {
- return "()";
- }
- else {
- return "();";
- }
-}
-sub pp_wantarray { baseop(@_, "wantarray") }
-sub pp_fork { baseop(@_, "fork") }
-sub pp_wait { maybe_targmy(@_, \&baseop, "wait") }
-sub pp_getppid { maybe_targmy(@_, \&baseop, "getppid") }
-sub pp_time { maybe_targmy(@_, \&baseop, "time") }
-sub pp_tms { baseop(@_, "times") }
-sub pp_ghostent { baseop(@_, "gethostent") }
-sub pp_gnetent { baseop(@_, "getnetent") }
-sub pp_gprotoent { baseop(@_, "getprotoent") }
-sub pp_gservent { baseop(@_, "getservent") }
-sub pp_ehostent { baseop(@_, "endhostent") }
-sub pp_enetent { baseop(@_, "endnetent") }
-sub pp_eprotoent { baseop(@_, "endprotoent") }
-sub pp_eservent { baseop(@_, "endservent") }
-sub pp_gpwent { baseop(@_, "getpwent") }
-sub pp_spwent { baseop(@_, "setpwent") }
-sub pp_epwent { baseop(@_, "endpwent") }
-sub pp_ggrent { baseop(@_, "getgrent") }
-sub pp_sgrent { baseop(@_, "setgrent") }
-sub pp_egrent { baseop(@_, "endgrent") }
-sub pp_getlogin { baseop(@_, "getlogin") }
-
-sub POSTFIX () { 1 }
-
-# I couldn't think of a good short name, but this is the category of
-# symbolic unary operators with interesting precedence
-
-sub pfixop {
- my $self = shift;
- my($op, $cx, $name, $prec, $flags) = (@_, 0);
- my $kid = $op->first;
- $kid = $self->deparse($kid, $prec);
- return $self->maybe_parens(($flags & POSTFIX) ? "$kid$name" : "$name$kid",
- $cx, $prec);
-}
-
-sub pp_preinc { pfixop(@_, "++", 23) }
-sub pp_predec { pfixop(@_, "--", 23) }
-sub pp_postinc { maybe_targmy(@_, \&pfixop, "++", 23, POSTFIX) }
-sub pp_postdec { maybe_targmy(@_, \&pfixop, "--", 23, POSTFIX) }
-sub pp_i_preinc { pfixop(@_, "++", 23) }
-sub pp_i_predec { pfixop(@_, "--", 23) }
-sub pp_i_postinc { maybe_targmy(@_, \&pfixop, "++", 23, POSTFIX) }
-sub pp_i_postdec { maybe_targmy(@_, \&pfixop, "--", 23, POSTFIX) }
-sub pp_complement { maybe_targmy(@_, \&pfixop, "~", 21) }
-
-sub pp_negate { maybe_targmy(@_, \&real_negate) }
-sub real_negate {
- my $self = shift;
- my($op, $cx) = @_;
- if ($op->first->name =~ /^(i_)?negate$/) {
- # avoid --$x
- $self->pfixop($op, $cx, "-", 21.5);
- } else {
- $self->pfixop($op, $cx, "-", 21);
- }
-}
-sub pp_i_negate { pp_negate(@_) }
-
-sub pp_not {
- my $self = shift;
- my($op, $cx) = @_;
- if ($cx <= 4) {
- $self->pfixop($op, $cx, "not ", 4);
- } else {
- $self->pfixop($op, $cx, "!", 21);
- }
-}
-
-sub unop {
- my $self = shift;
- my($op, $cx, $name) = @_;
- my $kid;
- if ($op->flags & OPf_KIDS) {
- $kid = $op->first;
- if (defined prototype("CORE::$name")
- && prototype("CORE::$name") =~ /^;?\*/
- && $kid->name eq "rv2gv") {
- $kid = $kid->first;
- }
-
- return $self->maybe_parens_unop($name, $kid, $cx);
- } else {
- return $name . ($op->flags & OPf_SPECIAL ? "()" : "");
- }
-}
-
-sub pp_chop { maybe_targmy(@_, \&unop, "chop") }
-sub pp_chomp { maybe_targmy(@_, \&unop, "chomp") }
-sub pp_schop { maybe_targmy(@_, \&unop, "chop") }
-sub pp_schomp { maybe_targmy(@_, \&unop, "chomp") }
-sub pp_defined { unop(@_, "defined") }
-sub pp_undef { unop(@_, "undef") }
-sub pp_study { unop(@_, "study") }
-sub pp_ref { unop(@_, "ref") }
-sub pp_pos { maybe_local(@_, unop(@_, "pos")) }
-
-sub pp_sin { maybe_targmy(@_, \&unop, "sin") }
-sub pp_cos { maybe_targmy(@_, \&unop, "cos") }
-sub pp_rand { maybe_targmy(@_, \&unop, "rand") }
-sub pp_srand { unop(@_, "srand") }
-sub pp_exp { maybe_targmy(@_, \&unop, "exp") }
-sub pp_log { maybe_targmy(@_, \&unop, "log") }
-sub pp_sqrt { maybe_targmy(@_, \&unop, "sqrt") }
-sub pp_int { maybe_targmy(@_, \&unop, "int") }
-sub pp_hex { maybe_targmy(@_, \&unop, "hex") }
-sub pp_oct { maybe_targmy(@_, \&unop, "oct") }
-sub pp_abs { maybe_targmy(@_, \&unop, "abs") }
-
-sub pp_length { maybe_targmy(@_, \&unop, "length") }
-sub pp_ord { maybe_targmy(@_, \&unop, "ord") }
-sub pp_chr { maybe_targmy(@_, \&unop, "chr") }
-
-sub pp_each { unop(@_, "each") }
-sub pp_values { unop(@_, "values") }
-sub pp_keys { unop(@_, "keys") }
-sub pp_pop { unop(@_, "pop") }
-sub pp_shift { unop(@_, "shift") }
-
-sub pp_caller { unop(@_, "caller") }
-sub pp_reset { unop(@_, "reset") }
-sub pp_exit { unop(@_, "exit") }
-sub pp_prototype { unop(@_, "prototype") }
-
-sub pp_close { unop(@_, "close") }
-sub pp_fileno { unop(@_, "fileno") }
-sub pp_umask { unop(@_, "umask") }
-sub pp_untie { unop(@_, "untie") }
-sub pp_tied { unop(@_, "tied") }
-sub pp_dbmclose { unop(@_, "dbmclose") }
-sub pp_getc { unop(@_, "getc") }
-sub pp_eof { unop(@_, "eof") }
-sub pp_tell { unop(@_, "tell") }
-sub pp_getsockname { unop(@_, "getsockname") }
-sub pp_getpeername { unop(@_, "getpeername") }
-
-sub pp_chdir { maybe_targmy(@_, \&unop, "chdir") }
-sub pp_chroot { maybe_targmy(@_, \&unop, "chroot") }
-sub pp_readlink { unop(@_, "readlink") }
-sub pp_rmdir { maybe_targmy(@_, \&unop, "rmdir") }
-sub pp_readdir { unop(@_, "readdir") }
-sub pp_telldir { unop(@_, "telldir") }
-sub pp_rewinddir { unop(@_, "rewinddir") }
-sub pp_closedir { unop(@_, "closedir") }
-sub pp_getpgrp { maybe_targmy(@_, \&unop, "getpgrp") }
-sub pp_localtime { unop(@_, "localtime") }
-sub pp_gmtime { unop(@_, "gmtime") }
-sub pp_alarm { unop(@_, "alarm") }
-sub pp_sleep { maybe_targmy(@_, \&unop, "sleep") }
-
-sub pp_dofile { unop(@_, "do") }
-sub pp_entereval { unop(@_, "eval") }
-
-sub pp_ghbyname { unop(@_, "gethostbyname") }
-sub pp_gnbyname { unop(@_, "getnetbyname") }
-sub pp_gpbyname { unop(@_, "getprotobyname") }
-sub pp_shostent { unop(@_, "sethostent") }
-sub pp_snetent { unop(@_, "setnetent") }
-sub pp_sprotoent { unop(@_, "setprotoent") }
-sub pp_sservent { unop(@_, "setservent") }
-sub pp_gpwnam { unop(@_, "getpwnam") }
-sub pp_gpwuid { unop(@_, "getpwuid") }
-sub pp_ggrnam { unop(@_, "getgrnam") }
-sub pp_ggrgid { unop(@_, "getgrgid") }
-
-sub pp_lock { unop(@_, "lock") }
-
-sub pp_exists {
- my $self = shift;
- my($op, $cx) = @_;
- my $arg;
- if ($op->private & OPpEXISTS_SUB) {
- # Checking for the existence of a subroutine
- return $self->maybe_parens_func("exists",
- $self->pp_rv2cv($op->first, 16), $cx, 16);
- }
- if ($op->flags & OPf_SPECIAL) {
- # Array element, not hash element
- return $self->maybe_parens_func("exists",
- $self->pp_aelem($op->first, 16), $cx, 16);
- }
- return $self->maybe_parens_func("exists", $self->pp_helem($op->first, 16),
- $cx, 16);
-}
-
-sub pp_delete {
- my $self = shift;
- my($op, $cx) = @_;
- my $arg;
- if ($op->private & OPpSLICE) {
- if ($op->flags & OPf_SPECIAL) {
- # Deleting from an array, not a hash
- return $self->maybe_parens_func("delete",
- $self->pp_aslice($op->first, 16),
- $cx, 16);
- }
- return $self->maybe_parens_func("delete",
- $self->pp_hslice($op->first, 16),
- $cx, 16);
- } else {
- if ($op->flags & OPf_SPECIAL) {
- # Deleting from an array, not a hash
- return $self->maybe_parens_func("delete",
- $self->pp_aelem($op->first, 16),
- $cx, 16);
- }
- return $self->maybe_parens_func("delete",
- $self->pp_helem($op->first, 16),
- $cx, 16);
- }
-}
-
-sub pp_require {
- my $self = shift;
- my($op, $cx) = @_;
- if (class($op) eq "UNOP" and $op->first->name eq "const"
- and $op->first->private & OPpCONST_BARE)
- {
- my $name = $self->const_sv($op->first)->PV;
- $name =~ s[/][::]g;
- $name =~ s/\.pm//g;
- return "require $name";
- } else {
- $self->unop($op, $cx, "require");
- }
-}
-
-sub pp_scalar {
- my $self = shift;
- my($op, $cv) = @_;
- my $kid = $op->first;
- if (not null $kid->sibling) {
- # XXX Was a here-doc
- return $self->dquote($op);
- }
- $self->unop(@_, "scalar");
-}
-
-
-sub padval {
- my $self = shift;
- my $targ = shift;
- return (($self->{'curcv'}->PADLIST->ARRAY)[1]->ARRAY)[$targ];
-}
-
-sub pp_refgen {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first;
- if ($kid->name eq "null") {
- $kid = $kid->first;
- if ($kid->name eq "anonlist" || $kid->name eq "anonhash") {
- my($pre, $post) = @{{"anonlist" => ["[","]"],
- "anonhash" => ["{","}"]}->{$kid->name}};
- my($expr, @exprs);
- $kid = $kid->first->sibling; # skip pushmark
- for (; !null($kid); $kid = $kid->sibling) {
- $expr = $self->deparse($kid, 6);
- push @exprs, $expr;
- }
- return $pre . join(", ", @exprs) . $post;
- } elsif (!null($kid->sibling) and
- $kid->sibling->name eq "anoncode") {
- return "sub " .
- $self->deparse_sub($self->padval($kid->sibling->targ));
- } elsif ($kid->name eq "pushmark") {
- my $sib_name = $kid->sibling->name;
- if ($sib_name =~ /^(pad|rv2)[ah]v$/
- and not $kid->sibling->flags & OPf_REF)
- {
- # The @a in \(@a) isn't in ref context, but only when the
- # parens are there.
- return "\\(" . $self->deparse($kid->sibling, 1) . ")";
- } elsif ($sib_name eq 'entersub') {
- my $text = $self->deparse($kid->sibling, 1);
- # Always show parens for \(&func()), but only with -p otherwise
- $text = "($text)" if $self->{'parens'}
- or $kid->sibling->private & OPpENTERSUB_AMPER;
- return "\\$text";
- }
- }
- }
- $self->pfixop($op, $cx, "\\", 20);
-}
-
-sub pp_srefgen { pp_refgen(@_) }
-
-sub pp_readline {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first;
- $kid = $kid->first if $kid->name eq "rv2gv"; # <$fh>
- return "<" . $self->deparse($kid, 1) . ">" if is_scalar($kid);
- return $self->unop($op, $cx, "readline");
-}
-
-sub pp_rcatline {
- my $self = shift;
- my($op) = @_;
- return "<" . $self->gv_name($op->gv) . ">";
-}
-
-# Unary operators that can occur as pseudo-listops inside double quotes
-sub dq_unop {
- my $self = shift;
- my($op, $cx, $name, $prec, $flags) = (@_, 0, 0);
- my $kid;
- if ($op->flags & OPf_KIDS) {
- $kid = $op->first;
- # If there's more than one kid, the first is an ex-pushmark.
- $kid = $kid->sibling if not null $kid->sibling;
- return $self->maybe_parens_unop($name, $kid, $cx);
- } else {
- return $name . ($op->flags & OPf_SPECIAL ? "()" : "");
- }
-}
-
-sub pp_ucfirst { dq_unop(@_, "ucfirst") }
-sub pp_lcfirst { dq_unop(@_, "lcfirst") }
-sub pp_uc { dq_unop(@_, "uc") }
-sub pp_lc { dq_unop(@_, "lc") }
-sub pp_quotemeta { maybe_targmy(@_, \&dq_unop, "quotemeta") }
-
-sub loopex {
- my $self = shift;
- my ($op, $cx, $name) = @_;
- if (class($op) eq "PVOP") {
- return "$name " . $op->pv;
- } elsif (class($op) eq "OP") {
- return $name;
- } elsif (class($op) eq "UNOP") {
- # Note -- loop exits are actually exempt from the
- # looks-like-a-func rule, but a few extra parens won't hurt
- return $self->maybe_parens_unop($name, $op->first, $cx);
- }
-}
-
-sub pp_last { loopex(@_, "last") }
-sub pp_next { loopex(@_, "next") }
-sub pp_redo { loopex(@_, "redo") }
-sub pp_goto { loopex(@_, "goto") }
-sub pp_dump { loopex(@_, "dump") }
-
-sub ftst {
- my $self = shift;
- my($op, $cx, $name) = @_;
- if (class($op) eq "UNOP") {
- # Genuine `-X' filetests are exempt from the LLAFR, but not
- # l?stat(); for the sake of clarity, give'em all parens
- return $self->maybe_parens_unop($name, $op->first, $cx);
- } elsif (class($op) eq "SVOP") {
- return $self->maybe_parens_func($name, $self->pp_gv($op, 1), $cx, 16);
- } else { # I don't think baseop filetests ever survive ck_ftst, but...
- return $name;
- }
-}
-
-sub pp_lstat { ftst(@_, "lstat") }
-sub pp_stat { ftst(@_, "stat") }
-sub pp_ftrread { ftst(@_, "-R") }
-sub pp_ftrwrite { ftst(@_, "-W") }
-sub pp_ftrexec { ftst(@_, "-X") }
-sub pp_fteread { ftst(@_, "-r") }
-sub pp_ftewrite { ftst(@_, "-w") }
-sub pp_fteexec { ftst(@_, "-x") }
-sub pp_ftis { ftst(@_, "-e") }
-sub pp_fteowned { ftst(@_, "-O") }
-sub pp_ftrowned { ftst(@_, "-o") }
-sub pp_ftzero { ftst(@_, "-z") }
-sub pp_ftsize { ftst(@_, "-s") }
-sub pp_ftmtime { ftst(@_, "-M") }
-sub pp_ftatime { ftst(@_, "-A") }
-sub pp_ftctime { ftst(@_, "-C") }
-sub pp_ftsock { ftst(@_, "-S") }
-sub pp_ftchr { ftst(@_, "-c") }
-sub pp_ftblk { ftst(@_, "-b") }
-sub pp_ftfile { ftst(@_, "-f") }
-sub pp_ftdir { ftst(@_, "-d") }
-sub pp_ftpipe { ftst(@_, "-p") }
-sub pp_ftlink { ftst(@_, "-l") }
-sub pp_ftsuid { ftst(@_, "-u") }
-sub pp_ftsgid { ftst(@_, "-g") }
-sub pp_ftsvtx { ftst(@_, "-k") }
-sub pp_fttty { ftst(@_, "-t") }
-sub pp_fttext { ftst(@_, "-T") }
-sub pp_ftbinary { ftst(@_, "-B") }
-
-sub SWAP_CHILDREN () { 1 }
-sub ASSIGN () { 2 } # has OP= variant
-sub LIST_CONTEXT () { 4 } # Assignment is in list context
-
-my(%left, %right);
-
-sub assoc_class {
- my $op = shift;
- my $name = $op->name;
- if ($name eq "concat" and $op->first->name eq "concat") {
- # avoid spurious `=' -- see comment in pp_concat
- return "concat";
- }
- if ($name eq "null" and class($op) eq "UNOP"
- and $op->first->name =~ /^(and|x?or)$/
- and null $op->first->sibling)
- {
- # Like all conditional constructs, OP_ANDs and OP_ORs are topped
- # with a null that's used as the common end point of the two
- # flows of control. For precedence purposes, ignore it.
- # (COND_EXPRs have these too, but we don't bother with
- # their associativity).
- return assoc_class($op->first);
- }
- return $name . ($op->flags & OPf_STACKED ? "=" : "");
-}
-
-# Left associative operators, like `+', for which
-# $a + $b + $c is equivalent to ($a + $b) + $c
-
-BEGIN {
- %left = ('multiply' => 19, 'i_multiply' => 19,
- 'divide' => 19, 'i_divide' => 19,
- 'modulo' => 19, 'i_modulo' => 19,
- 'repeat' => 19,
- 'add' => 18, 'i_add' => 18,
- 'subtract' => 18, 'i_subtract' => 18,
- 'concat' => 18,
- 'left_shift' => 17, 'right_shift' => 17,
- 'bit_and' => 13,
- 'bit_or' => 12, 'bit_xor' => 12,
- 'and' => 3,
- 'or' => 2, 'xor' => 2,
- );
-}
-
-sub deparse_binop_left {
- my $self = shift;
- my($op, $left, $prec) = @_;
- if ($left{assoc_class($op)} && $left{assoc_class($left)}
- and $left{assoc_class($op)} == $left{assoc_class($left)})
- {
- return $self->deparse($left, $prec - .00001);
- } else {
- return $self->deparse($left, $prec);
- }
-}
-
-# Right associative operators, like `=', for which
-# $a = $b = $c is equivalent to $a = ($b = $c)
-
-BEGIN {
- %right = ('pow' => 22,
- 'sassign=' => 7, 'aassign=' => 7,
- 'multiply=' => 7, 'i_multiply=' => 7,
- 'divide=' => 7, 'i_divide=' => 7,
- 'modulo=' => 7, 'i_modulo=' => 7,
- 'repeat=' => 7,
- 'add=' => 7, 'i_add=' => 7,
- 'subtract=' => 7, 'i_subtract=' => 7,
- 'concat=' => 7,
- 'left_shift=' => 7, 'right_shift=' => 7,
- 'bit_and=' => 7,
- 'bit_or=' => 7, 'bit_xor=' => 7,
- 'andassign' => 7,
- 'orassign' => 7,
- );
-}
-
-sub deparse_binop_right {
- my $self = shift;
- my($op, $right, $prec) = @_;
- if ($right{assoc_class($op)} && $right{assoc_class($right)}
- and $right{assoc_class($op)} == $right{assoc_class($right)})
- {
- return $self->deparse($right, $prec - .00001);
- } else {
- return $self->deparse($right, $prec);
- }
-}
-
-sub binop {
- my $self = shift;
- my ($op, $cx, $opname, $prec, $flags) = (@_, 0);
- my $left = $op->first;
- my $right = $op->last;
- my $eq = "";
- if ($op->flags & OPf_STACKED && $flags & ASSIGN) {
- $eq = "=";
- $prec = 7;
- }
- if ($flags & SWAP_CHILDREN) {
- ($left, $right) = ($right, $left);
- }
- $left = $self->deparse_binop_left($op, $left, $prec);
- $left = "($left)" if $flags & LIST_CONTEXT
- && $left !~ /^(my|our|local|)[\@\(]/;
- $right = $self->deparse_binop_right($op, $right, $prec);
- return $self->maybe_parens("$left $opname$eq $right", $cx, $prec);
-}
-
-sub pp_add { maybe_targmy(@_, \&binop, "+", 18, ASSIGN) }
-sub pp_multiply { maybe_targmy(@_, \&binop, "*", 19, ASSIGN) }
-sub pp_subtract { maybe_targmy(@_, \&binop, "-",18, ASSIGN) }
-sub pp_divide { maybe_targmy(@_, \&binop, "/", 19, ASSIGN) }
-sub pp_modulo { maybe_targmy(@_, \&binop, "%", 19, ASSIGN) }
-sub pp_i_add { maybe_targmy(@_, \&binop, "+", 18, ASSIGN) }
-sub pp_i_multiply { maybe_targmy(@_, \&binop, "*", 19, ASSIGN) }
-sub pp_i_subtract { maybe_targmy(@_, \&binop, "-", 18, ASSIGN) }
-sub pp_i_divide { maybe_targmy(@_, \&binop, "/", 19, ASSIGN) }
-sub pp_i_modulo { maybe_targmy(@_, \&binop, "%", 19, ASSIGN) }
-sub pp_pow { maybe_targmy(@_, \&binop, "**", 22, ASSIGN) }
-
-sub pp_left_shift { maybe_targmy(@_, \&binop, "<<", 17, ASSIGN) }
-sub pp_right_shift { maybe_targmy(@_, \&binop, ">>", 17, ASSIGN) }
-sub pp_bit_and { maybe_targmy(@_, \&binop, "&", 13, ASSIGN) }
-sub pp_bit_or { maybe_targmy(@_, \&binop, "|", 12, ASSIGN) }
-sub pp_bit_xor { maybe_targmy(@_, \&binop, "^", 12, ASSIGN) }
-
-sub pp_eq { binop(@_, "==", 14) }
-sub pp_ne { binop(@_, "!=", 14) }
-sub pp_lt { binop(@_, "<", 15) }
-sub pp_gt { binop(@_, ">", 15) }
-sub pp_ge { binop(@_, ">=", 15) }
-sub pp_le { binop(@_, "<=", 15) }
-sub pp_ncmp { binop(@_, "<=>", 14) }
-sub pp_i_eq { binop(@_, "==", 14) }
-sub pp_i_ne { binop(@_, "!=", 14) }
-sub pp_i_lt { binop(@_, "<", 15) }
-sub pp_i_gt { binop(@_, ">", 15) }
-sub pp_i_ge { binop(@_, ">=", 15) }
-sub pp_i_le { binop(@_, "<=", 15) }
-sub pp_i_ncmp { binop(@_, "<=>", 14) }
-
-sub pp_seq { binop(@_, "eq", 14) }
-sub pp_sne { binop(@_, "ne", 14) }
-sub pp_slt { binop(@_, "lt", 15) }
-sub pp_sgt { binop(@_, "gt", 15) }
-sub pp_sge { binop(@_, "ge", 15) }
-sub pp_sle { binop(@_, "le", 15) }
-sub pp_scmp { binop(@_, "cmp", 14) }
-
-sub pp_sassign { binop(@_, "=", 7, SWAP_CHILDREN) }
-sub pp_aassign { binop(@_, "=", 7, SWAP_CHILDREN | LIST_CONTEXT) }
-
-# `.' is special because concats-of-concats are optimized to save copying
-# by making all but the first concat stacked. The effect is as if the
-# programmer had written `($a . $b) .= $c', except legal.
-sub pp_concat { maybe_targmy(@_, \&real_concat) }
-sub real_concat {
- my $self = shift;
- my($op, $cx) = @_;
- my $left = $op->first;
- my $right = $op->last;
- my $eq = "";
- my $prec = 18;
- if ($op->flags & OPf_STACKED and $op->first->name ne "concat") {
- $eq = "=";
- $prec = 7;
- }
- $left = $self->deparse_binop_left($op, $left, $prec);
- $right = $self->deparse_binop_right($op, $right, $prec);
- return $self->maybe_parens("$left .$eq $right", $cx, $prec);
-}
-
-# `x' is weird when the left arg is a list
-sub pp_repeat {
- my $self = shift;
- my($op, $cx) = @_;
- my $left = $op->first;
- my $right = $op->last;
- my $eq = "";
- my $prec = 19;
- if ($op->flags & OPf_STACKED) {
- $eq = "=";
- $prec = 7;
- }
- if (null($right)) { # list repeat; count is inside left-side ex-list
- my $kid = $left->first->sibling; # skip pushmark
- my @exprs;
- for (; !null($kid->sibling); $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 6);
- }
- $right = $kid;
- $left = "(" . join(", ", @exprs). ")";
- } else {
- $left = $self->deparse_binop_left($op, $left, $prec);
- }
- $right = $self->deparse_binop_right($op, $right, $prec);
- return $self->maybe_parens("$left x$eq $right", $cx, $prec);
-}
-
-sub range {
- my $self = shift;
- my ($op, $cx, $type) = @_;
- my $left = $op->first;
- my $right = $left->sibling;
- $left = $self->deparse($left, 9);
- $right = $self->deparse($right, 9);
- return $self->maybe_parens("$left $type $right", $cx, 9);
-}
-
-sub pp_flop {
- my $self = shift;
- my($op, $cx) = @_;
- my $flip = $op->first;
- my $type = ($flip->flags & OPf_SPECIAL) ? "..." : "..";
- return $self->range($flip->first, $cx, $type);
-}
-
-# one-line while/until is handled in pp_leave
-
-sub logop {
- my $self = shift;
- my ($op, $cx, $lowop, $lowprec, $highop, $highprec, $blockname) = @_;
- my $left = $op->first;
- my $right = $op->first->sibling;
- if ($cx == 0 and is_scope($right) and $blockname
- and $self->{'expand'} < 7)
- { # if ($a) {$b}
- $left = $self->deparse($left, 1);
- $right = $self->deparse($right, 0);
- return "$blockname ($left) {\n\t$right\n\b}\cK";
- } elsif ($cx == 0 and $blockname and not $self->{'parens'}
- and $self->{'expand'} < 7) { # $b if $a
- $right = $self->deparse($right, 1);
- $left = $self->deparse($left, 1);
- return "$right $blockname $left";
- } elsif ($cx > $lowprec and $highop) { # $a && $b
- $left = $self->deparse_binop_left($op, $left, $highprec);
- $right = $self->deparse_binop_right($op, $right, $highprec);
- return $self->maybe_parens("$left $highop $right", $cx, $highprec);
- } else { # $a and $b
- $left = $self->deparse_binop_left($op, $left, $lowprec);
- $right = $self->deparse_binop_right($op, $right, $lowprec);
- return $self->maybe_parens("$left $lowop $right", $cx, $lowprec);
- }
-}
-
-sub pp_and { logop(@_, "and", 3, "&&", 11, "if") }
-sub pp_or { logop(@_, "or", 2, "||", 10, "unless") }
-
-# xor is syntactically a logop, but it's really a binop (contrary to
-# old versions of opcode.pl). Syntax is what matters here.
-sub pp_xor { logop(@_, "xor", 2, "", 0, "") }
-
-sub logassignop {
- my $self = shift;
- my ($op, $cx, $opname) = @_;
- my $left = $op->first;
- my $right = $op->first->sibling->first; # skip sassign
- $left = $self->deparse($left, 7);
- $right = $self->deparse($right, 7);
- return $self->maybe_parens("$left $opname $right", $cx, 7);
-}
-
-sub pp_andassign { logassignop(@_, "&&=") }
-sub pp_orassign { logassignop(@_, "||=") }
-
-sub listop {
- my $self = shift;
- my($op, $cx, $name) = @_;
- my(@exprs);
- my $parens = ($cx >= 5) || $self->{'parens'};
- my $kid = $op->first->sibling;
- return $name if null $kid;
- my $first;
- $name = "socketpair" if $name eq "sockpair";
- if (defined prototype("CORE::$name")
- && prototype("CORE::$name") =~ /^;?\*/
- && $kid->name eq "rv2gv") {
- $first = $self->deparse($kid->first, 6);
- }
- else {
- $first = $self->deparse($kid, 6);
- }
- if ($name eq "chmod" && $first =~ /^\d+$/) {
- $first = sprintf("%#o", $first);
- }
- $first = "+$first" if not $parens and substr($first, 0, 1) eq "(";
- push @exprs, $first;
- $kid = $kid->sibling;
- for (; !null($kid); $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 6);
- }
- if ($parens) {
- return "$name(" . join(", ", @exprs) . ")";
- } else {
- return "$name " . join(", ", @exprs);
- }
-}
-
-sub pp_bless { listop(@_, "bless") }
-sub pp_atan2 { maybe_targmy(@_, \&listop, "atan2") }
-sub pp_substr { maybe_local(@_, listop(@_, "substr")) }
-sub pp_vec { maybe_local(@_, listop(@_, "vec")) }
-sub pp_index { maybe_targmy(@_, \&listop, "index") }
-sub pp_rindex { maybe_targmy(@_, \&listop, "rindex") }
-sub pp_sprintf { maybe_targmy(@_, \&listop, "sprintf") }
-sub pp_formline { listop(@_, "formline") } # see also deparse_format
-sub pp_crypt { maybe_targmy(@_, \&listop, "crypt") }
-sub pp_unpack { listop(@_, "unpack") }
-sub pp_pack { listop(@_, "pack") }
-sub pp_join { maybe_targmy(@_, \&listop, "join") }
-sub pp_splice { listop(@_, "splice") }
-sub pp_push { maybe_targmy(@_, \&listop, "push") }
-sub pp_unshift { maybe_targmy(@_, \&listop, "unshift") }
-sub pp_reverse { listop(@_, "reverse") }
-sub pp_warn { listop(@_, "warn") }
-sub pp_die { listop(@_, "die") }
-# Actually, return is exempt from the LLAFR (see examples in this very
-# module!), but for consistency's sake, ignore that fact
-sub pp_return { listop(@_, "return") }
-sub pp_open { listop(@_, "open") }
-sub pp_pipe_op { listop(@_, "pipe") }
-sub pp_tie { listop(@_, "tie") }
-sub pp_binmode { listop(@_, "binmode") }
-sub pp_dbmopen { listop(@_, "dbmopen") }
-sub pp_sselect { listop(@_, "select") }
-sub pp_select { listop(@_, "select") }
-sub pp_read { listop(@_, "read") }
-sub pp_sysopen { listop(@_, "sysopen") }
-sub pp_sysseek { listop(@_, "sysseek") }
-sub pp_sysread { listop(@_, "sysread") }
-sub pp_syswrite { listop(@_, "syswrite") }
-sub pp_send { listop(@_, "send") }
-sub pp_recv { listop(@_, "recv") }
-sub pp_seek { listop(@_, "seek") }
-sub pp_fcntl { listop(@_, "fcntl") }
-sub pp_ioctl { listop(@_, "ioctl") }
-sub pp_flock { maybe_targmy(@_, \&listop, "flock") }
-sub pp_socket { listop(@_, "socket") }
-sub pp_sockpair { listop(@_, "sockpair") }
-sub pp_bind { listop(@_, "bind") }
-sub pp_connect { listop(@_, "connect") }
-sub pp_listen { listop(@_, "listen") }
-sub pp_accept { listop(@_, "accept") }
-sub pp_shutdown { listop(@_, "shutdown") }
-sub pp_gsockopt { listop(@_, "getsockopt") }
-sub pp_ssockopt { listop(@_, "setsockopt") }
-sub pp_chown { maybe_targmy(@_, \&listop, "chown") }
-sub pp_unlink { maybe_targmy(@_, \&listop, "unlink") }
-sub pp_chmod { maybe_targmy(@_, \&listop, "chmod") }
-sub pp_utime { maybe_targmy(@_, \&listop, "utime") }
-sub pp_rename { maybe_targmy(@_, \&listop, "rename") }
-sub pp_link { maybe_targmy(@_, \&listop, "link") }
-sub pp_symlink { maybe_targmy(@_, \&listop, "symlink") }
-sub pp_mkdir { maybe_targmy(@_, \&listop, "mkdir") }
-sub pp_open_dir { listop(@_, "opendir") }
-sub pp_seekdir { listop(@_, "seekdir") }
-sub pp_waitpid { maybe_targmy(@_, \&listop, "waitpid") }
-sub pp_system { maybe_targmy(@_, \&listop, "system") }
-sub pp_exec { maybe_targmy(@_, \&listop, "exec") }
-sub pp_kill { maybe_targmy(@_, \&listop, "kill") }
-sub pp_setpgrp { maybe_targmy(@_, \&listop, "setpgrp") }
-sub pp_getpriority { maybe_targmy(@_, \&listop, "getpriority") }
-sub pp_setpriority { maybe_targmy(@_, \&listop, "setpriority") }
-sub pp_shmget { listop(@_, "shmget") }
-sub pp_shmctl { listop(@_, "shmctl") }
-sub pp_shmread { listop(@_, "shmread") }
-sub pp_shmwrite { listop(@_, "shmwrite") }
-sub pp_msgget { listop(@_, "msgget") }
-sub pp_msgctl { listop(@_, "msgctl") }
-sub pp_msgsnd { listop(@_, "msgsnd") }
-sub pp_msgrcv { listop(@_, "msgrcv") }
-sub pp_semget { listop(@_, "semget") }
-sub pp_semctl { listop(@_, "semctl") }
-sub pp_semop { listop(@_, "semop") }
-sub pp_ghbyaddr { listop(@_, "gethostbyaddr") }
-sub pp_gnbyaddr { listop(@_, "getnetbyaddr") }
-sub pp_gpbynumber { listop(@_, "getprotobynumber") }
-sub pp_gsbyname { listop(@_, "getservbyname") }
-sub pp_gsbyport { listop(@_, "getservbyport") }
-sub pp_syscall { listop(@_, "syscall") }
-
-sub pp_glob {
- my $self = shift;
- my($op, $cx) = @_;
- my $text = $self->dq($op->first->sibling); # skip pushmark
- if ($text =~ /^\$?(\w|::|\`)+$/ # could look like a readline
- or $text =~ /[<>]/) {
- return 'glob(' . single_delim('qq', '"', $text) . ')';
- } else {
- return '<' . $text . '>';
- }
-}
-
-# Truncate is special because OPf_SPECIAL makes a bareword first arg
-# be a filehandle. This could probably be better fixed in the core
-# by moving the GV lookup into ck_truc.
-
-sub pp_truncate {
- my $self = shift;
- my($op, $cx) = @_;
- my(@exprs);
- my $parens = ($cx >= 5) || $self->{'parens'};
- my $kid = $op->first->sibling;
- my $fh;
- if ($op->flags & OPf_SPECIAL) {
- # $kid is an OP_CONST
- $fh = $self->const_sv($kid)->PV;
- } else {
- $fh = $self->deparse($kid, 6);
- $fh = "+$fh" if not $parens and substr($fh, 0, 1) eq "(";
- }
- my $len = $self->deparse($kid->sibling, 6);
- if ($parens) {
- return "truncate($fh, $len)";
- } else {
- return "truncate $fh, $len";
- }
-}
-
-sub indirop {
- my $self = shift;
- my($op, $cx, $name) = @_;
- my($expr, @exprs);
- my $kid = $op->first->sibling;
- my $indir = "";
- if ($op->flags & OPf_STACKED) {
- $indir = $kid;
- $indir = $indir->first; # skip rv2gv
- if (is_scope($indir)) {
- $indir = "{" . $self->deparse($indir, 0) . "}";
- } elsif ($indir->name eq "const" && $indir->private & OPpCONST_BARE) {
- $indir = $self->const_sv($indir)->PV;
- } else {
- $indir = $self->deparse($indir, 24);
- }
- $indir = $indir . " ";
- $kid = $kid->sibling;
- }
- if ($name eq "sort" && $op->private & (OPpSORT_NUMERIC | OPpSORT_INTEGER)) {
- $indir = ($op->private & OPpSORT_REVERSE) ? '{$b <=> $a} '
- : '{$a <=> $b} ';
- }
- elsif ($name eq "sort" && $op->private & OPpSORT_REVERSE) {
- $indir = '{$b cmp $a} ';
- }
- for (; !null($kid); $kid = $kid->sibling) {
- $expr = $self->deparse($kid, 6);
- push @exprs, $expr;
- }
- return $self->maybe_parens_func($name, $indir . join(", ", @exprs),
- $cx, 5);
-}
-
-sub pp_prtf { indirop(@_, "printf") }
-sub pp_print { indirop(@_, "print") }
-sub pp_sort { indirop(@_, "sort") }
-
-sub mapop {
- my $self = shift;
- my($op, $cx, $name) = @_;
- my($expr, @exprs);
- my $kid = $op->first; # this is the (map|grep)start
- $kid = $kid->first->sibling; # skip a pushmark
- my $code = $kid->first; # skip a null
- if (is_scope $code) {
- $code = "{" . $self->deparse($code, 0) . "} ";
- } else {
- $code = $self->deparse($code, 24) . ", ";
- }
- $kid = $kid->sibling;
- for (; !null($kid); $kid = $kid->sibling) {
- $expr = $self->deparse($kid, 6);
- push @exprs, $expr if defined $expr;
- }
- return $self->maybe_parens_func($name, $code . join(", ", @exprs), $cx, 5);
-}
-
-sub pp_mapwhile { mapop(@_, "map") }
-sub pp_grepwhile { mapop(@_, "grep") }
-
-sub pp_list {
- my $self = shift;
- my($op, $cx) = @_;
- my($expr, @exprs);
- my $kid = $op->first->sibling; # skip pushmark
- my $lop;
- my $local = "either"; # could be local(...), my(...) or our(...)
- for ($lop = $kid; !null($lop); $lop = $lop->sibling) {
- # This assumes that no other private flags equal 128, and that
- # OPs that store things other than flags in their op_private,
- # like OP_AELEMFAST, won't be immediate children of a list.
- #
- # OP_ENTERSUB can break this logic, so check for it.
- # I suspect that open and exit can too.
-
- if (!($lop->private & (OPpLVAL_INTRO|OPpOUR_INTRO)
- or $lop->name eq "undef")
- or $lop->name eq "entersub"
- or $lop->name eq "exit"
- or $lop->name eq "open")
- {
- $local = ""; # or not
- last;
- }
- if ($lop->name =~ /^pad[ash]v$/) { # my()
- ($local = "", last) if $local eq "local" || $local eq "our";
- $local = "my";
- } elsif ($lop->name =~ /^(gv|rv2)[ash]v$/
- && $lop->private & OPpOUR_INTRO
- or $lop->name eq "null" && $lop->first->name eq "gvsv"
- && $lop->first->private & OPpOUR_INTRO) { # our()
- ($local = "", last) if $local eq "my" || $local eq "local";
- $local = "our";
- } elsif ($lop->name ne "undef") { # local()
- ($local = "", last) if $local eq "my" || $local eq "our";
- $local = "local";
- }
- }
- $local = "" if $local eq "either"; # no point if it's all undefs
- return $self->deparse($kid, $cx) if null $kid->sibling and not $local;
- for (; !null($kid); $kid = $kid->sibling) {
- if ($local) {
- if (class($kid) eq "UNOP" and $kid->first->name eq "gvsv") {
- $lop = $kid->first;
- } else {
- $lop = $kid;
- }
- $self->{'avoid_local'}{$$lop}++;
- $expr = $self->deparse($kid, 6);
- delete $self->{'avoid_local'}{$$lop};
- } else {
- $expr = $self->deparse($kid, 6);
- }
- push @exprs, $expr;
- }
- if ($local) {
- return "$local(" . join(", ", @exprs) . ")";
- } else {
- return $self->maybe_parens( join(", ", @exprs), $cx, 6);
- }
-}
-
-sub is_ifelse_cont {
- my $op = shift;
- return ($op->name eq "null" and class($op) eq "UNOP"
- and $op->first->name =~ /^(and|cond_expr)$/
- and is_scope($op->first->first->sibling));
-}
-
-sub pp_cond_expr {
- my $self = shift;
- my($op, $cx) = @_;
- my $cond = $op->first;
- my $true = $cond->sibling;
- my $false = $true->sibling;
- my $cuddle = $self->{'cuddle'};
- unless ($cx == 0 and (is_scope($true) and $true->name ne "null") and
- (is_scope($false) || is_ifelse_cont($false))
- and $self->{'expand'} < 7) {
- $cond = $self->deparse($cond, 8);
- $true = $self->deparse($true, 8);
- $false = $self->deparse($false, 8);
- return $self->maybe_parens("$cond ? $true : $false", $cx, 8);
- }
-
- $cond = $self->deparse($cond, 1);
- $true = $self->deparse($true, 0);
- my $head = "if ($cond) {\n\t$true\n\b}";
- my @elsifs;
- while (!null($false) and is_ifelse_cont($false)) {
- my $newop = $false->first;
- my $newcond = $newop->first;
- my $newtrue = $newcond->sibling;
- $false = $newtrue->sibling; # last in chain is OP_AND => no else
- $newcond = $self->deparse($newcond, 1);
- $newtrue = $self->deparse($newtrue, 0);
- push @elsifs, "elsif ($newcond) {\n\t$newtrue\n\b}";
- }
- if (!null($false)) {
- $false = $cuddle . "else {\n\t" .
- $self->deparse($false, 0) . "\n\b}\cK";
- } else {
- $false = "\cK";
- }
- return $head . join($cuddle, "", @elsifs) . $false;
-}
-
-sub loop_common {
- my $self = shift;
- my($op, $cx, $init) = @_;
- my $enter = $op->first;
- my $kid = $enter->sibling;
- local(@$self{qw'curstash warnings hints'})
- = @$self{qw'curstash warnings hints'};
- my $head = "";
- my $bare = 0;
- my $body;
- my $cond = undef;
- if ($kid->name eq "lineseq") { # bare or infinite loop
- if (is_state $kid->last) { # infinite
- $head = "while (1) "; # Can't use for(;;) if there's a continue
- $cond = "";
- } else {
- $bare = 1;
- }
- $body = $kid;
- } elsif ($enter->name eq "enteriter") { # foreach
- my $ary = $enter->first->sibling; # first was pushmark
- my $var = $ary->sibling;
- if ($enter->flags & OPf_STACKED
- and not null $ary->first->sibling->sibling)
- {
- $ary = $self->deparse($ary->first->sibling, 9) . " .. " .
- $self->deparse($ary->first->sibling->sibling, 9);
- } else {
- $ary = $self->deparse($ary, 1);
- }
- if (null $var) {
- if ($enter->flags & OPf_SPECIAL) { # thread special var
- $var = $self->pp_threadsv($enter, 1);
- } else { # regular my() variable
- $var = $self->pp_padsv($enter, 1);
- if ($self->padname_sv($enter->targ)->IVX ==
- $kid->first->first->sibling->last->cop_seq)
- {
- # If the scope of this variable closes at the last
- # statement of the loop, it must have been
- # declared here.
- $var = "my " . $var;
- }
- }
- } elsif ($var->name eq "rv2gv") {
- $var = $self->pp_rv2sv($var, 1);
- } elsif ($var->name eq "gv") {
- $var = "\$" . $self->deparse($var, 1);
- }
- $head = "foreach $var ($ary) ";
- $body = $kid->first->first->sibling; # skip OP_AND and OP_ITER
- } elsif ($kid->name eq "null") { # while/until
- $kid = $kid->first;
- my $name = {"and" => "while", "or" => "until"}->{$kid->name};
- $cond = $self->deparse($kid->first, 1);
- $head = "$name ($cond) ";
- $body = $kid->first->sibling;
- } elsif ($kid->name eq "stub") { # bare and empty
- return "{;}"; # {} could be a hashref
- }
- # If there isn't a continue block, then the next pointer for the loop
- # will point to the unstack, which is kid's penultimate child, except
- # in a bare loop, when it will point to the leaveloop. When neither of
- # these conditions hold, then the third-to-last child in the continue
- # block (or the last in a bare loop).
- my $cont_start = $enter->nextop;
- my $cont;
- if ($$cont_start != $$op && ${$cont_start->sibling} != ${$body->last}) {
- if ($bare) {
- $cont = $body->last;
- } else {
- $cont = $body->first;
- while (!null($cont->sibling->sibling->sibling)) {
- $cont = $cont->sibling;
- }
- }
- my $state = $body->first;
- my $cuddle = $self->{'cuddle'};
- my @states;
- for (; $$state != $$cont; $state = $state->sibling) {
- push @states, $state;
- }
- $body = $self->lineseq(undef, @states);
- if (defined $cond and not is_scope $cont and $self->{'expand'} < 3) {
- $head = "for ($init; $cond; " . $self->deparse($cont, 1) .") ";
- $cont = "\cK";
- } else {
- $cont = $cuddle . "continue {\n\t" .
- $self->deparse($cont, 0) . "\n\b}\cK";
- }
- } else {
- return "" if !defined $body;
- if (length $init) {
- $head = "for ($init; $cond;) ";
- }
- $cont = "\cK";
- $body = $self->deparse($body, 0);
- }
- $body =~ s/;?$/;\n/;
-
- return $head . "{\n\t" . $body . "\b}" . $cont;
-}
-
-sub pp_leaveloop { loop_common(@_, "") }
-
-sub for_loop {
- my $self = shift;
- my($op, $cx) = @_;
- my $init = $self->deparse($op, 1);
- return $self->loop_common($op->sibling->first->sibling, $cx, $init);
-}
-
-sub pp_leavetry {
- my $self = shift;
- return "eval {\n\t" . $self->pp_leave(@_) . "\n\b}";
-}
-
-BEGIN { eval "sub OP_CONST () {" . opnumber("const") . "}" }
-BEGIN { eval "sub OP_STRINGIFY () {" . opnumber("stringify") . "}" }
-BEGIN { eval "sub OP_RV2SV () {" . opnumber("rv2sv") . "}" }
-BEGIN { eval "sub OP_LIST () {" . opnumber("list") . "}" }
-
-sub pp_null {
- my $self = shift;
- my($op, $cx) = @_;
- if (class($op) eq "OP") {
- # old value is lost
- return $self->{'ex_const'} if $op->targ == OP_CONST;
- } elsif ($op->first->name eq "pushmark") {
- return $self->pp_list($op, $cx);
- } elsif ($op->first->name eq "enter") {
- return $self->pp_leave($op, $cx);
- } elsif ($op->targ == OP_STRINGIFY) {
- return $self->dquote($op, $cx);
- } elsif (!null($op->first->sibling) and
- $op->first->sibling->name eq "readline" and
- $op->first->sibling->flags & OPf_STACKED) {
- return $self->maybe_parens($self->deparse($op->first, 7) . " = "
- . $self->deparse($op->first->sibling, 7),
- $cx, 7);
- } elsif (!null($op->first->sibling) and
- $op->first->sibling->name eq "trans" and
- $op->first->sibling->flags & OPf_STACKED) {
- return $self->maybe_parens($self->deparse($op->first, 20) . " =~ "
- . $self->deparse($op->first->sibling, 20),
- $cx, 20);
- } elsif ($op->flags & OPf_SPECIAL && $cx == 0 && !$op->targ) {
- return "do {\n\t". $self->deparse($op->first, $cx) ."\n\b};";
- } elsif (!null($op->first->sibling) and
- $op->first->sibling->name eq "null" and
- class($op->first->sibling) eq "UNOP" and
- $op->first->sibling->first->flags & OPf_STACKED and
- $op->first->sibling->first->name eq "rcatline") {
- return $self->maybe_parens($self->deparse($op->first, 18) . " .= "
- . $self->deparse($op->first->sibling, 18),
- $cx, 18);
- } else {
- return $self->deparse($op->first, $cx);
- }
-}
-
-sub padname {
- my $self = shift;
- my $targ = shift;
- return $self->padname_sv($targ)->PVX;
-}
-
-sub padany {
- my $self = shift;
- my $op = shift;
- return substr($self->padname($op->targ), 1); # skip $/@/%
-}
-
-sub pp_padsv {
- my $self = shift;
- my($op, $cx) = @_;
- return $self->maybe_my($op, $cx, $self->padname($op->targ));
-}
-
-sub pp_padav { pp_padsv(@_) }
-sub pp_padhv { pp_padsv(@_) }
-
-my @threadsv_names;
-
-BEGIN {
- @threadsv_names = ("_", "1", "2", "3", "4", "5", "6", "7", "8", "9",
- "&", "`", "'", "+", "/", ".", ",", "\\", '"', ";",
- "^", "-", "%", "=", "|", "~", ":", "^A", "^E",
- "!", "@");
-}
-
-sub pp_threadsv {
- my $self = shift;
- my($op, $cx) = @_;
- return $self->maybe_local($op, $cx, "\$" . $threadsv_names[$op->targ]);
-}
-
-sub gv_or_padgv {
- my $self = shift;
- my $op = shift;
- if (class($op) eq "PADOP") {
- return $self->padval($op->padix);
- } else { # class($op) eq "SVOP"
- return $op->gv;
- }
-}
-
-sub pp_gvsv {
- my $self = shift;
- my($op, $cx) = @_;
- my $gv = $self->gv_or_padgv($op);
- return $self->maybe_local($op, $cx, $self->stash_variable("\$",
- $self->gv_name($gv)));
-}
-
-sub pp_gv {
- my $self = shift;
- my($op, $cx) = @_;
- my $gv = $self->gv_or_padgv($op);
- return $self->gv_name($gv);
-}
-
-sub pp_aelemfast {
- my $self = shift;
- my($op, $cx) = @_;
- my $gv = $self->gv_or_padgv($op);
- my $name = $self->gv_name($gv);
- $name = $self->{'curstash'}."::$name"
- if $name !~ /::/ && $self->lex_in_scope('@'.$name);
-
- return "\$" . $name . "[" .
- ($op->private + $self->{'arybase'}) . "]";
-}
-
-sub rv2x {
- my $self = shift;
- my($op, $cx, $type) = @_;
-
- if (class($op) eq 'NULL' || !$op->can("first")) {
- carp("Unexpected op in pp_rv2x");
- return 'XXX';
- }
- my $kid = $op->first;
- my $str = $self->deparse($kid, 0);
- return $self->stash_variable($type, $str) if is_scalar($kid);
- return $type ."{$str}";
-}
-
-sub pp_rv2sv { maybe_local(@_, rv2x(@_, "\$")) }
-sub pp_rv2hv { maybe_local(@_, rv2x(@_, "%")) }
-sub pp_rv2gv { maybe_local(@_, rv2x(@_, "*")) }
-
-# skip rv2av
-sub pp_av2arylen {
- my $self = shift;
- my($op, $cx) = @_;
- if ($op->first->name eq "padav") {
- return $self->maybe_local($op, $cx, '$#' . $self->padany($op->first));
- } else {
- return $self->maybe_local($op, $cx,
- $self->rv2x($op->first, $cx, '$#'));
- }
-}
-
-# skip down to the old, ex-rv2cv
-sub pp_rv2cv {
- my ($self, $op, $cx) = @_;
- if (!null($op->first) && $op->first->name eq 'null' &&
- $op->first->targ eq OP_LIST)
- {
- return $self->rv2x($op->first->first->sibling, $cx, "&")
- }
- else {
- return $self->rv2x($op, $cx, "")
- }
-}
-
-sub pp_rv2av {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first;
- if ($kid->name eq "const") { # constant list
- my $av = $self->const_sv($kid);
- return "(" . join(", ", map(const($_), $av->ARRAY)) . ")";
- } else {
- return $self->maybe_local($op, $cx, $self->rv2x($op, $cx, "\@"));
- }
- }
-
-sub is_subscriptable {
- my $op = shift;
- if ($op->name =~ /^[ahg]elem/) {
- return 1;
- } elsif ($op->name eq "entersub") {
- my $kid = $op->first;
- return 0 unless null $kid->sibling;
- $kid = $kid->first;
- $kid = $kid->sibling until null $kid->sibling;
- return 0 if is_scope($kid);
- $kid = $kid->first;
- return 0 if $kid->name eq "gv";
- return 0 if is_scalar($kid);
- return is_subscriptable($kid);
- } else {
- return 0;
- }
-}
-
-sub elem {
- my $self = shift;
- my ($op, $cx, $left, $right, $padname) = @_;
- my($array, $idx) = ($op->first, $op->first->sibling);
- unless ($array->name eq $padname) { # Maybe this has been fixed
- $array = $array->first; # skip rv2av (or ex-rv2av in _53+)
- }
- if ($array->name eq $padname) {
- $array = $self->padany($array);
- } elsif (is_scope($array)) { # ${expr}[0]
- $array = "{" . $self->deparse($array, 0) . "}";
- } elsif ($array->name eq "gv") {
- $array = $self->gv_name($self->gv_or_padgv($array));
- if ($array !~ /::/) {
- my $prefix = ($left eq '[' ? '@' : '%');
- $array = $self->{curstash}.'::'.$array
- if $self->lex_in_scope($prefix . $array);
- }
- } elsif (is_scalar $array) { # $x[0], $$x[0], ...
- $array = $self->deparse($array, 24);
- } else {
- # $x[20][3]{hi} or expr->[20]
- my $arrow = is_subscriptable($array) ? "" : "->";
- return $self->deparse($array, 24) . $arrow .
- $left . $self->deparse($idx, 1) . $right;
- }
- $idx = $self->deparse($idx, 1);
-
- # Outer parens in an array index will confuse perl
- # if we're interpolating in a regular expression, i.e.
- # /$x$foo[(-1)]/ is *not* the same as /$x$foo[-1]/
- #
- # If $self->{parens}, then an initial '(' will
- # definitely be paired with a final ')'. If
- # !$self->{parens}, the misleading parens won't
- # have been added in the first place.
- #
- # [You might think that we could get "(...)...(...)"
- # where the initial and final parens do not match
- # each other. But we can't, because the above would
- # only happen if there's an infix binop between the
- # two pairs of parens, and *that* means that the whole
- # expression would be parenthesized as well.]
- #
- $idx =~ s/^\((.*)\)$/$1/ if $self->{'parens'};
-
- # Hash-element braces will autoquote a bareword inside themselves.
- # We need to make sure that C<$hash{warn()}> doesn't come out as
- # C<$hash{warn}>, which has a quite different meaning. Currently
- # B::Deparse will always quote strings, even if the string was a
- # bareword in the original (i.e. the OPpCONST_BARE flag is ignored
- # for constant strings.) So we can cheat slightly here - if we see
- # a bareword, we know that it is supposed to be a function call.
- #
- $idx =~ s/^([A-Za-z_]\w*)$/$1()/;
-
- return "\$" . $array . $left . $idx . $right;
-}
-
-sub pp_aelem { maybe_local(@_, elem(@_, "[", "]", "padav")) }
-sub pp_helem { maybe_local(@_, elem(@_, "{", "}", "padhv")) }
-
-sub pp_gelem {
- my $self = shift;
- my($op, $cx) = @_;
- my($glob, $part) = ($op->first, $op->last);
- $glob = $glob->first; # skip rv2gv
- $glob = $glob->first if $glob->name eq "rv2gv"; # this one's a bug
- my $scope = is_scope($glob);
- $glob = $self->deparse($glob, 0);
- $part = $self->deparse($part, 1);
- return "*" . ($scope ? "{$glob}" : $glob) . "{$part}";
-}
-
-sub slice {
- my $self = shift;
- my ($op, $cx, $left, $right, $regname, $padname) = @_;
- my $last;
- my(@elems, $kid, $array, $list);
- if (class($op) eq "LISTOP") {
- $last = $op->last;
- } else { # ex-hslice inside delete()
- for ($kid = $op->first; !null $kid->sibling; $kid = $kid->sibling) {}
- $last = $kid;
- }
- $array = $last;
- $array = $array->first
- if $array->name eq $regname or $array->name eq "null";
- if (is_scope($array)) {
- $array = "{" . $self->deparse($array, 0) . "}";
- } elsif ($array->name eq $padname) {
- $array = $self->padany($array);
- } else {
- $array = $self->deparse($array, 24);
- }
- $kid = $op->first->sibling; # skip pushmark
- if ($kid->name eq "list") {
- $kid = $kid->first->sibling; # skip list, pushmark
- for (; !null $kid; $kid = $kid->sibling) {
- push @elems, $self->deparse($kid, 6);
- }
- $list = join(", ", @elems);
- } else {
- $list = $self->deparse($kid, 1);
- }
- return "\@" . $array . $left . $list . $right;
-}
-
-sub pp_aslice { maybe_local(@_, slice(@_, "[", "]", "rv2av", "padav")) }
-sub pp_hslice { maybe_local(@_, slice(@_, "{", "}", "rv2hv", "padhv")) }
-
-sub pp_lslice {
- my $self = shift;
- my($op, $cx) = @_;
- my $idx = $op->first;
- my $list = $op->last;
- my(@elems, $kid);
- $list = $self->deparse($list, 1);
- $idx = $self->deparse($idx, 1);
- return "($list)" . "[$idx]";
-}
-
-sub want_scalar {
- my $op = shift;
- return ($op->flags & OPf_WANT) == OPf_WANT_SCALAR;
-}
-
-sub want_list {
- my $op = shift;
- return ($op->flags & OPf_WANT) == OPf_WANT_LIST;
-}
-
-sub method {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first->sibling; # skip pushmark
- my($meth, $obj, @exprs);
- if ($kid->name eq "list" and want_list $kid) {
- # When an indirect object isn't a bareword but the args are in
- # parens, the parens aren't part of the method syntax (the LLAFR
- # doesn't apply), but they make a list with OPf_PARENS set that
- # doesn't get flattened by the append_elem that adds the method,
- # making a (object, arg1, arg2, ...) list where the object
- # usually is. This can be distinguished from
- # `($obj, $arg1, $arg2)->meth()' (which is legal if $arg2 is an
- # object) because in the later the list is in scalar context
- # as the left side of -> always is, while in the former
- # the list is in list context as method arguments always are.
- # (Good thing there aren't method prototypes!)
- $meth = $kid->sibling;
- $kid = $kid->first->sibling; # skip pushmark
- $obj = $kid;
- $kid = $kid->sibling;
- for (; not null $kid; $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 6);
- }
- } else {
- $obj = $kid;
- $kid = $kid->sibling;
- for (; !null ($kid->sibling) && $kid->name ne "method_named";
- $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 6);
- }
- $meth = $kid;
- }
- $obj = $self->deparse($obj, 24);
- if ($meth->name eq "method_named") {
- $meth = $self->const_sv($meth)->PV;
- } else {
- $meth = $meth->first;
- if ($meth->name eq "const") {
- # As of 5.005_58, this case is probably obsoleted by the
- # method_named case above
- $meth = $self->const_sv($meth)->PV; # needs to be bare
- } else {
- $meth = $self->deparse($meth, 1);
- }
- }
- my $args = join(", ", @exprs);
- $kid = $obj . "->" . $meth;
- if (length $args) {
- return $kid . "(" . $args . ")"; # parens mandatory
- } else {
- return $kid;
- }
-}
-
-# returns "&" if the prototype doesn't match the args,
-# or ("", $args_after_prototype_demunging) if it does.
-sub check_proto {
- my $self = shift;
- return "&" if $self->{'noproto'};
- my($proto, @args) = @_;
- my($arg, $real);
- my $doneok = 0;
- my @reals;
- # An unbackslashed @ or % gobbles up the rest of the args
- 1 while $proto =~ s/(?<!\\)([@%])[^\]]+$/$1/;
- while ($proto) {
- $proto =~ s/^(\\?[\$\@&%*]|\\\[[\$\@&%*]+\]|;)//;
- my $chr = $1;
- if ($chr eq "") {
- return "&" if @args;
- } elsif ($chr eq ";") {
- $doneok = 1;
- } elsif ($chr eq "@" or $chr eq "%") {
- push @reals, map($self->deparse($_, 6), @args);
- @args = ();
- } else {
- $arg = shift @args;
- last unless $arg;
- if ($chr eq "\$") {
- if (want_scalar $arg) {
- push @reals, $self->deparse($arg, 6);
- } else {
- return "&";
- }
- } elsif ($chr eq "&") {
- if ($arg->name =~ /^(s?refgen|undef)$/) {
- push @reals, $self->deparse($arg, 6);
- } else {
- return "&";
- }
- } elsif ($chr eq "*") {
- if ($arg->name =~ /^s?refgen$/
- and $arg->first->first->name eq "rv2gv")
- {
- $real = $arg->first->first; # skip refgen, null
- if ($real->first->name eq "gv") {
- push @reals, $self->deparse($real, 6);
- } else {
- push @reals, $self->deparse($real->first, 6);
- }
- } else {
- return "&";
- }
- } elsif (substr($chr, 0, 1) eq "\\") {
- $chr =~ tr/\\[]//d;
- if ($arg->name =~ /^s?refgen$/ and
- !null($real = $arg->first) and
- ($chr =~ /\$/ && is_scalar($real->first)
- or ($chr =~ /@/
- && class($real->first->sibling) ne 'NULL'
- && $real->first->sibling->name
- =~ /^(rv2|pad)av$/)
- or ($chr =~ /%/
- && class($real->first->sibling) ne 'NULL'
- && $real->first->sibling->name
- =~ /^(rv2|pad)hv$/)
- #or ($chr =~ /&/ # This doesn't work
- # && $real->first->name eq "rv2cv")
- or ($chr =~ /\*/
- && $real->first->name eq "rv2gv")))
- {
- push @reals, $self->deparse($real, 6);
- } else {
- return "&";
- }
- }
- }
- }
- return "&" if $proto and !$doneok; # too few args and no `;'
- return "&" if @args; # too many args
- return ("", join ", ", @reals);
-}
-
-sub pp_entersub {
- my $self = shift;
- my($op, $cx) = @_;
- return $self->method($op, $cx) unless null $op->first->sibling;
- my $prefix = "";
- my $amper = "";
- my($kid, @exprs);
- if ($op->flags & OPf_SPECIAL && !($op->flags & OPf_MOD)) {
- $prefix = "do ";
- } elsif ($op->private & OPpENTERSUB_AMPER) {
- $amper = "&";
- }
- $kid = $op->first;
- $kid = $kid->first->sibling; # skip ex-list, pushmark
- for (; not null $kid->sibling; $kid = $kid->sibling) {
- push @exprs, $kid;
- }
- my $simple = 0;
- my $proto = undef;
- if (is_scope($kid)) {
- $amper = "&";
- $kid = "{" . $self->deparse($kid, 0) . "}";
- } elsif ($kid->first->name eq "gv") {
- my $gv = $self->gv_or_padgv($kid->first);
- if (class($gv->CV) ne "SPECIAL") {
- $proto = $gv->CV->PV if $gv->CV->FLAGS & SVf_POK;
- }
- $simple = 1; # only calls of named functions can be prototyped
- $kid = $self->deparse($kid, 24);
- } elsif (is_scalar ($kid->first) && $kid->first->name ne 'rv2cv') {
- $amper = "&";
- $kid = $self->deparse($kid, 24);
- } else {
- $prefix = "";
- my $arrow = is_subscriptable($kid->first) ? "" : "->";
- $kid = $self->deparse($kid, 24) . $arrow;
- }
-
- # Doesn't matter how many prototypes there are, if
- # they haven't happened yet!
- my $declared;
- {
- no strict 'refs';
- no warnings 'uninitialized';
- $declared = exists $self->{'subs_declared'}{$kid}
- || (
- defined &{ %{$self->{'curstash'}."::"}->{$kid} }
- && !exists
- $self->{'subs_deparsed'}{$self->{'curstash'}."::".$kid}
- && defined prototype $self->{'curstash'}."::".$kid
- );
- if (!$declared && defined($proto)) {
- # Avoid "too early to check prototype" warning
- ($amper, $proto) = ('&');
- }
- }
-
- my $args;
- if ($declared and defined $proto and not $amper) {
- ($amper, $args) = $self->check_proto($proto, @exprs);
- if ($amper eq "&") {
- $args = join(", ", map($self->deparse($_, 6), @exprs));
- }
- } else {
- $args = join(", ", map($self->deparse($_, 6), @exprs));
- }
- if ($prefix or $amper) {
- if ($op->flags & OPf_STACKED) {
- return $prefix . $amper . $kid . "(" . $args . ")";
- } else {
- return $prefix . $amper. $kid;
- }
- } else {
- # glob() invocations can be translated into calls of
- # CORE::GLOBAL::glob with a second parameter, a number.
- # Reverse this.
- if ($kid eq "CORE::GLOBAL::glob") {
- $kid = "glob";
- $args =~ s/\s*,[^,]+$//;
- }
-
- # It's a syntax error to call CORE::GLOBAL::foo without a prefix,
- # so it must have been translated from a keyword call. Translate
- # it back.
- $kid =~ s/^CORE::GLOBAL:://;
-
- if (!$declared) {
- return "$kid(" . $args . ")";
- } elsif (defined $proto and $proto eq "") {
- return $kid;
- } elsif (defined $proto and $proto eq "\$" and is_scalar($exprs[0])) {
- return $self->maybe_parens_func($kid, $args, $cx, 16);
- } elsif (defined($proto) && $proto or $simple) {
- return $self->maybe_parens_func($kid, $args, $cx, 5);
- } else {
- return "$kid(" . $args . ")";
- }
- }
-}
-
-sub pp_enterwrite { unop(@_, "write") }
-
-# escape things that cause interpolation in double quotes,
-# but not character escapes
-sub uninterp {
- my($str) = @_;
- $str =~ s/(^|\G|[^\\])((?:\\\\)*)([\$\@]|\\[uUlLQE])/$1$2\\$3/g;
- return $str;
-}
-
-{
-my $bal;
-BEGIN {
- use re "eval";
- # Matches any string which is balanced with respect to {braces}
- $bal = qr(
- (?:
- [^\\{}]
- | \\\\
- | \\[{}]
- | \{(??{$bal})\}
- )*
- )x;
-}
-
-# the same, but treat $|, $), $( and $ at the end of the string differently
-sub re_uninterp {
- my($str) = @_;
-
- $str =~ s/
- ( ^|\G # $1
- | [^\\]
- )
-
- ( # $2
- (?:\\\\)*
- )
-
- ( # $3
- (\(\?\??\{$bal\}\)) # $4
- | [\$\@]
- (?!\||\)|\(|$)
- | \\[uUlLQE]
- )
-
- /length($4) ? "$1$2$4" : "$1$2\\$3"/xeg;
-
- return $str;
-}
-
-# This is for regular expressions with the /x modifier
-# We have to leave comments unmangled.
-sub re_uninterp_extended {
- my($str) = @_;
-
- $str =~ s/
- ( ^|\G # $1
- | [^\\]
- )
-
- ( # $2
- (?:\\\\)*
- )
-
- ( # $3
- ( \(\?\??\{$bal\}\) # $4 (skip over (?{}) and (??{}) blocks)
- | \#[^\n]* # (skip over comments)
- )
- | [\$\@]
- (?!\||\)|\(|$|\s)
- | \\[uUlLQE]
- )
-
- /length($4) ? "$1$2$4" : "$1$2\\$3"/xeg;
-
- return $str;
-}
-}
-
-my %unctrl = # portable to to EBCDIC
- (
- "\c@" => '\c@', # unused
- "\cA" => '\cA',
- "\cB" => '\cB',
- "\cC" => '\cC',
- "\cD" => '\cD',
- "\cE" => '\cE',
- "\cF" => '\cF',
- "\cG" => '\cG',
- "\cH" => '\cH',
- "\cI" => '\cI',
- "\cJ" => '\cJ',
- "\cK" => '\cK',
- "\cL" => '\cL',
- "\cM" => '\cM',
- "\cN" => '\cN',
- "\cO" => '\cO',
- "\cP" => '\cP',
- "\cQ" => '\cQ',
- "\cR" => '\cR',
- "\cS" => '\cS',
- "\cT" => '\cT',
- "\cU" => '\cU',
- "\cV" => '\cV',
- "\cW" => '\cW',
- "\cX" => '\cX',
- "\cY" => '\cY',
- "\cZ" => '\cZ',
- "\c[" => '\c[', # unused
- "\c\\" => '\c\\', # unused
- "\c]" => '\c]', # unused
- "\c_" => '\c_', # unused
- );
-
-# character escapes, but not delimiters that might need to be escaped
-sub escape_str { # ASCII, UTF8
- my($str) = @_;
- $str =~ s/(.)/ord($1) > 255 ? sprintf("\\x{%x}", ord($1)) : $1/eg;
- $str =~ s/\a/\\a/g;
-# $str =~ s/\cH/\\b/g; # \b means something different in a regex
- $str =~ s/\t/\\t/g;
- $str =~ s/\n/\\n/g;
- $str =~ s/\e/\\e/g;
- $str =~ s/\f/\\f/g;
- $str =~ s/\r/\\r/g;
- $str =~ s/([\cA-\cZ])/$unctrl{$1}/ge;
- $str =~ s/([[:^print:]])/sprintf("\\%03o", ord($1))/ge;
- return $str;
-}
-
-# For regexes with the /x modifier.
-# Leave whitespace unmangled.
-sub escape_extended_re {
- my($str) = @_;
- $str =~ s/(.)/ord($1) > 255 ? sprintf("\\x{%x}", ord($1)) : $1/eg;
- $str =~ s/([[:^print:]])/
- ($1 =~ y! \t\n!!) ? $1 : sprintf("\\%03o", ord($1))/ge;
- $str =~ s/\n/\n\f/g;
- return $str;
-}
-
-# Don't do this for regexen
-sub unback {
- my($str) = @_;
- $str =~ s/\\/\\\\/g;
- return $str;
-}
-
-# Remove backslashes which precede literal control characters,
-# to avoid creating ambiguity when we escape the latter.
-sub re_unback {
- my($str) = @_;
-
- # the insane complexity here is due to the behaviour of "\c\"
- $str =~ s/(^|[^\\]|\\c\\)(?<!\\c)\\(\\\\)*(?=[[:^print:]])/$1$2/g;
- return $str;
-}
-
-sub balanced_delim {
- my($str) = @_;
- my @str = split //, $str;
- my($ar, $open, $close, $fail, $c, $cnt);
- for $ar (['[',']'], ['(',')'], ['<','>'], ['{','}']) {
- ($open, $close) = @$ar;
- $fail = 0; $cnt = 0;
- for $c (@str) {
- if ($c eq $open) {
- $cnt++;
- } elsif ($c eq $close) {
- $cnt--;
- if ($cnt < 0) {
- # qq()() isn't ")("
- $fail = 1;
- last;
- }
- }
- }
- $fail = 1 if $cnt != 0;
- return ($open, "$open$str$close") if not $fail;
- }
- return ("", $str);
-}
-
-sub single_delim {
- my($q, $default, $str) = @_;
- return "$default$str$default" if $default and index($str, $default) == -1;
- if ($q ne 'qr') {
- (my $succeed, $str) = balanced_delim($str);
- return "$q$str" if $succeed;
- }
- for my $delim ('/', '"', '#') {
- return "$q$delim" . $str . $delim if index($str, $delim) == -1;
- }
- if ($default) {
- $str =~ s/$default/\\$default/g;
- return "$default$str$default";
- } else {
- $str =~ s[/][\\/]g;
- return "$q/$str/";
- }
-}
-
-sub const {
- my $sv = shift;
- if (class($sv) eq "SPECIAL") {
- return ('undef', '1', '0')[$$sv-1]; # sv_undef, sv_yes, sv_no
- } elsif (class($sv) eq "NULL") {
- return 'undef';
- } elsif ($sv->FLAGS & SVf_IOK) {
- return $sv->int_value;
- } elsif ($sv->FLAGS & SVf_NOK) {
- # try the default stringification
- my $r = "".$sv->NV;
- if ($r =~ /e/) {
- # If it's in scientific notation, we might have lost information
- return sprintf("%.20e", $sv->NV);
- }
- return $r;
- } elsif ($sv->FLAGS & SVf_ROK && $sv->can("RV")) {
- return "\\(" . const($sv->RV) . ")"; # constant folded
- } elsif ($sv->FLAGS & SVf_POK) {
- my $str = $sv->PV;
- if ($str =~ /[^ -~]/) { # ASCII for non-printing
- return single_delim("qq", '"', uninterp escape_str unback $str);
- } else {
- return single_delim("q", "'", unback $str);
- }
- } else {
- return "undef";
- }
-}
-
-sub const_sv {
- my $self = shift;
- my $op = shift;
- my $sv = $op->sv;
- # the constant could be in the pad (under useithreads)
- $sv = $self->padval($op->targ) unless $$sv;
- return $sv;
-}
-
-sub pp_const {
- my $self = shift;
- my($op, $cx) = @_;
- if ($op->private & OPpCONST_ARYBASE) {
- return '$[';
- }
-# if ($op->private & OPpCONST_BARE) { # trouble with `=>' autoquoting
-# return $self->const_sv($op)->PV;
-# }
- my $sv = $self->const_sv($op);
-# return const($sv);
- my $c = const $sv;
- return $c =~ /^-\d/ ? $self->maybe_parens($c, $cx, 21) : $c;
-}
-
-sub dq {
- my $self = shift;
- my $op = shift;
- my $type = $op->name;
- if ($type eq "const") {
- return '$[' if $op->private & OPpCONST_ARYBASE;
- return uninterp(escape_str(unback($self->const_sv($op)->as_string)));
- } elsif ($type eq "concat") {
- my $first = $self->dq($op->first);
- my $last = $self->dq($op->last);
-
- # Disambiguate "${foo}bar", "${foo}{bar}", "${foo}[1]"
- ($last =~ /^[A-Z\\\^\[\]_?]/ &&
- $first =~ s/([\$@])\^$/${1}{^}/) # "${^}W" etc
- || ($last =~ /^[{\[\w_]/ &&
- $first =~ s/([\$@])([A-Za-z_]\w*)$/${1}{$2}/);
-
- return $first . $last;
- } elsif ($type eq "uc") {
- return '\U' . $self->dq($op->first->sibling) . '\E';
- } elsif ($type eq "lc") {
- return '\L' . $self->dq($op->first->sibling) . '\E';
- } elsif ($type eq "ucfirst") {
- return '\u' . $self->dq($op->first->sibling);
- } elsif ($type eq "lcfirst") {
- return '\l' . $self->dq($op->first->sibling);
- } elsif ($type eq "quotemeta") {
- return '\Q' . $self->dq($op->first->sibling) . '\E';
- } elsif ($type eq "join") {
- return $self->deparse($op->last, 26); # was join($", @ary)
- } else {
- return $self->deparse($op, 26);
- }
-}
-
-sub pp_backtick {
- my $self = shift;
- my($op, $cx) = @_;
- # skip pushmark
- return single_delim("qx", '`', $self->dq($op->first->sibling));
-}
-
-sub dquote {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first->sibling; # skip ex-stringify, pushmark
- return $self->deparse($kid, $cx) if $self->{'unquote'};
- $self->maybe_targmy($kid, $cx,
- sub {single_delim("qq", '"', $self->dq($_[1]))});
-}
-
-# OP_STRINGIFY is a listop, but it only ever has one arg
-sub pp_stringify { maybe_targmy(@_, \&dquote) }
-
-# tr/// and s/// (and tr[][], tr[]//, tr###, etc)
-# note that tr(from)/to/ is OK, but not tr/from/(to)
-sub double_delim {
- my($from, $to) = @_;
- my($succeed, $delim);
- if ($from !~ m[/] and $to !~ m[/]) {
- return "/$from/$to/";
- } elsif (($succeed, $from) = balanced_delim($from) and $succeed) {
- if (($succeed, $to) = balanced_delim($to) and $succeed) {
- return "$from$to";
- } else {
- for $delim ('/', '"', '#') { # note no `'' -- s''' is special
- return "$from$delim$to$delim" if index($to, $delim) == -1;
- }
- $to =~ s[/][\\/]g;
- return "$from/$to/";
- }
- } else {
- for $delim ('/', '"', '#') { # note no '
- return "$delim$from$delim$to$delim"
- if index($to . $from, $delim) == -1;
- }
- $from =~ s[/][\\/]g;
- $to =~ s[/][\\/]g;
- return "/$from/$to/";
- }
-}
-
-# Only used by tr///, so backslashes hyphens
-sub pchr { # ASCII
- my($n) = @_;
- if ($n == ord '\\') {
- return '\\\\';
- } elsif ($n == ord "-") {
- return "\\-";
- } elsif ($n >= ord(' ') and $n <= ord('~')) {
- return chr($n);
- } elsif ($n == ord "\a") {
- return '\\a';
- } elsif ($n == ord "\b") {
- return '\\b';
- } elsif ($n == ord "\t") {
- return '\\t';
- } elsif ($n == ord "\n") {
- return '\\n';
- } elsif ($n == ord "\e") {
- return '\\e';
- } elsif ($n == ord "\f") {
- return '\\f';
- } elsif ($n == ord "\r") {
- return '\\r';
- } elsif ($n >= ord("\cA") and $n <= ord("\cZ")) {
- return '\\c' . chr(ord("@") + $n);
- } else {
-# return '\x' . sprintf("%02x", $n);
- return '\\' . sprintf("%03o", $n);
- }
-}
-
-sub collapse {
- my(@chars) = @_;
- my($str, $c, $tr) = ("");
- for ($c = 0; $c < @chars; $c++) {
- $tr = $chars[$c];
- $str .= pchr($tr);
- if ($c <= $#chars - 2 and $chars[$c + 1] == $tr + 1 and
- $chars[$c + 2] == $tr + 2)
- {
- for (; $c <= $#chars-1 and $chars[$c + 1] == $chars[$c] + 1; $c++)
- {}
- $str .= "-";
- $str .= pchr($chars[$c]);
- }
- }
- return $str;
-}
-
-sub tr_decode_byte {
- my($table, $flags) = @_;
- my(@table) = unpack("s*", $table);
- splice @table, 0x100, 1; # Number of subsequent elements
- my($c, $tr, @from, @to, @delfrom, $delhyphen);
- if ($table[ord "-"] != -1 and
- $table[ord("-") - 1] == -1 || $table[ord("-") + 1] == -1)
- {
- $tr = $table[ord "-"];
- $table[ord "-"] = -1;
- if ($tr >= 0) {
- @from = ord("-");
- @to = $tr;
- } else { # -2 ==> delete
- $delhyphen = 1;
- }
- }
- for ($c = 0; $c < @table; $c++) {
- $tr = $table[$c];
- if ($tr >= 0) {
- push @from, $c; push @to, $tr;
- } elsif ($tr == -2) {
- push @delfrom, $c;
- }
- }
- @from = (@from, @delfrom);
- if ($flags & OPpTRANS_COMPLEMENT) {
- my @newfrom = ();
- my %from;
- @from{@from} = (1) x @from;
- for ($c = 0; $c < 256; $c++) {
- push @newfrom, $c unless $from{$c};
- }
- @from = @newfrom;
- }
- unless ($flags & OPpTRANS_DELETE || !@to) {
- pop @to while $#to and $to[$#to] == $to[$#to -1];
- }
- my($from, $to);
- $from = collapse(@from);
- $to = collapse(@to);
- $from .= "-" if $delhyphen;
- return ($from, $to);
-}
-
-sub tr_chr {
- my $x = shift;
- if ($x == ord "-") {
- return "\\-";
- } elsif ($x == ord "\\") {
- return "\\\\";
- } else {
- return chr $x;
- }
-}
-
-# XXX This doesn't yet handle all cases correctly either
-
-sub tr_decode_utf8 {
- my($swash_hv, $flags) = @_;
- my %swash = $swash_hv->ARRAY;
- my $final = undef;
- $final = $swash{'FINAL'}->IV if exists $swash{'FINAL'};
- my $none = $swash{"NONE"}->IV;
- my $extra = $none + 1;
- my(@from, @delfrom, @to);
- my $line;
- foreach $line (split /\n/, $swash{'LIST'}->PV) {
- my($min, $max, $result) = split(/\t/, $line);
- $min = hex $min;
- if (length $max) {
- $max = hex $max;
- } else {
- $max = $min;
- }
- $result = hex $result;
- if ($result == $extra) {
- push @delfrom, [$min, $max];
- } else {
- push @from, [$min, $max];
- push @to, [$result, $result + $max - $min];
- }
- }
- for my $i (0 .. $#from) {
- if ($from[$i][0] == ord '-') {
- unshift @from, splice(@from, $i, 1);
- unshift @to, splice(@to, $i, 1);
- last;
- } elsif ($from[$i][1] == ord '-') {
- $from[$i][1]--;
- $to[$i][1]--;
- unshift @from, ord '-';
- unshift @to, ord '-';
- last;
- }
- }
- for my $i (0 .. $#delfrom) {
- if ($delfrom[$i][0] == ord '-') {
- push @delfrom, splice(@delfrom, $i, 1);
- last;
- } elsif ($delfrom[$i][1] == ord '-') {
- $delfrom[$i][1]--;
- push @delfrom, ord '-';
- last;
- }
- }
- if (defined $final and $to[$#to][1] != $final) {
- push @to, [$final, $final];
- }
- push @from, @delfrom;
- if ($flags & OPpTRANS_COMPLEMENT) {
- my @newfrom;
- my $next = 0;
- for my $i (0 .. $#from) {
- push @newfrom, [$next, $from[$i][0] - 1];
- $next = $from[$i][1] + 1;
- }
- @from = ();
- for my $range (@newfrom) {
- if ($range->[0] <= $range->[1]) {
- push @from, $range;
- }
- }
- }
- my($from, $to, $diff);
- for my $chunk (@from) {
- $diff = $chunk->[1] - $chunk->[0];
- if ($diff > 1) {
- $from .= tr_chr($chunk->[0]) . "-" . tr_chr($chunk->[1]);
- } elsif ($diff == 1) {
- $from .= tr_chr($chunk->[0]) . tr_chr($chunk->[1]);
- } else {
- $from .= tr_chr($chunk->[0]);
- }
- }
- for my $chunk (@to) {
- $diff = $chunk->[1] - $chunk->[0];
- if ($diff > 1) {
- $to .= tr_chr($chunk->[0]) . "-" . tr_chr($chunk->[1]);
- } elsif ($diff == 1) {
- $to .= tr_chr($chunk->[0]) . tr_chr($chunk->[1]);
- } else {
- $to .= tr_chr($chunk->[0]);
- }
- }
- #$final = sprintf("%04x", $final) if defined $final;
- #$none = sprintf("%04x", $none) if defined $none;
- #$extra = sprintf("%04x", $extra) if defined $extra;
- #print STDERR "final: $final\n none: $none\nextra: $extra\n";
- #print STDERR $swash{'LIST'}->PV;
- return (escape_str($from), escape_str($to));
-}
-
-sub pp_trans {
- my $self = shift;
- my($op, $cx) = @_;
- my($from, $to);
- if (class($op) eq "PVOP") {
- ($from, $to) = tr_decode_byte($op->pv, $op->private);
- } else { # class($op) eq "SVOP"
- ($from, $to) = tr_decode_utf8($op->sv->RV, $op->private);
- }
- my $flags = "";
- $flags .= "c" if $op->private & OPpTRANS_COMPLEMENT;
- $flags .= "d" if $op->private & OPpTRANS_DELETE;
- $to = "" if $from eq $to and $flags eq "";
- $flags .= "s" if $op->private & OPpTRANS_SQUASH;
- return "tr" . double_delim($from, $to) . $flags;
-}
-
-# Like dq(), but different
-sub re_dq {
- my $self = shift;
- my ($op, $extended) = @_;
-
- my $type = $op->name;
- if ($type eq "const") {
- return '$[' if $op->private & OPpCONST_ARYBASE;
- my $unbacked = re_unback($self->const_sv($op)->as_string);
- return re_uninterp_extended(escape_extended_re($unbacked))
- if $extended;
- return re_uninterp(escape_str($unbacked));
- } elsif ($type eq "concat") {
- my $first = $self->re_dq($op->first, $extended);
- my $last = $self->re_dq($op->last, $extended);
-
- # Disambiguate "${foo}bar", "${foo}{bar}", "${foo}[1]"
- ($last =~ /^[A-Z\\\^\[\]_?]/ &&
- $first =~ s/([\$@])\^$/${1}{^}/) # "${^}W" etc
- || ($last =~ /^[{\[\w_]/ &&
- $first =~ s/([\$@])([A-Za-z_]\w*)$/${1}{$2}/);
-
- return $first . $last;
- } elsif ($type eq "uc") {
- return '\U' . $self->re_dq($op->first->sibling, $extended) . '\E';
- } elsif ($type eq "lc") {
- return '\L' . $self->re_dq($op->first->sibling, $extended) . '\E';
- } elsif ($type eq "ucfirst") {
- return '\u' . $self->re_dq($op->first->sibling, $extended);
- } elsif ($type eq "lcfirst") {
- return '\l' . $self->re_dq($op->first->sibling, $extended);
- } elsif ($type eq "quotemeta") {
- return '\Q' . $self->re_dq($op->first->sibling, $extended) . '\E';
- } elsif ($type eq "join") {
- return $self->deparse($op->last, 26); # was join($", @ary)
- } else {
- return $self->deparse($op, 26);
- }
-}
-
-sub pure_string {
- my ($self, $op) = @_;
- my $type = $op->name;
-
- if ($type eq 'const') {
- return 1;
- }
- elsif ($type =~ /^[ul]c(first)?$/ || $type eq 'quotemeta') {
- return $self->pure_string($op->first->sibling);
- }
- elsif ($type eq 'join') {
- my $join_op = $op->first->sibling; # Skip pushmark
- return 0 unless $join_op->name eq 'null' && $join_op->targ eq OP_RV2SV;
-
- my $gvop = $join_op->first;
- return 0 unless $gvop->name eq 'gvsv';
- return 0 unless '"' eq $self->gv_name($self->gv_or_padgv($gvop));
-
- return 0 unless ${$join_op->sibling} eq ${$op->last};
- return 0 unless $op->last->name =~ /^(rv2|pad)av$/;
- }
- elsif ($type eq 'concat') {
- return $self->pure_string($op->first)
- && $self->pure_string($op->last);
- }
- elsif (is_scalar($op) || $type =~ /^[ah]elem(fast)?$/) {
- return 1;
- }
- else {
- return 0;
- }
-
- return 1;
-}
-
-sub regcomp {
- my $self = shift;
- my($op, $cx, $extended) = @_;
- my $kid = $op->first;
- $kid = $kid->first if $kid->name eq "regcmaybe";
- $kid = $kid->first if $kid->name eq "regcreset";
- return ($self->re_dq($kid, $extended), 1) if $self->pure_string($kid);
- return ($self->deparse($kid, $cx), 0);
-}
-
-sub pp_regcomp {
- my ($self, $op, $cx) = @_;
- return (($self->regcomp($op, $cx, 0))[0]);
-}
-
-# osmic acid -- see osmium tetroxide
-
-my %matchwords;
-map($matchwords{join "", sort split //, $_} = $_, 'cig', 'cog', 'cos', 'cogs',
- 'cox', 'go', 'is', 'ism', 'iso', 'mig', 'mix', 'osmic', 'ox', 'sic',
- 'sig', 'six', 'smog', 'so', 'soc', 'sog', 'xi');
-
-sub matchop {
- my $self = shift;
- my($op, $cx, $name, $delim) = @_;
- my $kid = $op->first;
- my ($binop, $var, $re) = ("", "", "");
- if ($op->flags & OPf_STACKED) {
- $binop = 1;
- $var = $self->deparse($kid, 20);
- $kid = $kid->sibling;
- }
- my $quote = 1;
- my $extended = ($op->pmflags & PMf_EXTENDED);
- if (null $kid) {
- my $unbacked = re_unback($op->precomp);
- if ($extended) {
- $re = re_uninterp_extended(escape_extended_re($unbacked));
- } else {
- $re = re_uninterp(escape_str(re_unback($op->precomp)));
- }
- } elsif ($kid->name ne 'regcomp') {
- carp("found ".$kid->name." where regcomp expected");
- } else {
- ($re, $quote) = $self->regcomp($kid, 1, $extended);
- }
- my $flags = "";
- $flags .= "c" if $op->pmflags & PMf_CONTINUE;
- $flags .= "g" if $op->pmflags & PMf_GLOBAL;
- $flags .= "i" if $op->pmflags & PMf_FOLD;
- $flags .= "m" if $op->pmflags & PMf_MULTILINE;
- $flags .= "o" if $op->pmflags & PMf_KEEP;
- $flags .= "s" if $op->pmflags & PMf_SINGLELINE;
- $flags .= "x" if $op->pmflags & PMf_EXTENDED;
- $flags = $matchwords{$flags} if $matchwords{$flags};
- if ($op->pmflags & PMf_ONCE) { # only one kind of delimiter works here
- $re =~ s/\?/\\?/g;
- $re = "?$re?";
- } elsif ($quote) {
- $re = single_delim($name, $delim, $re);
- }
- $re = $re . $flags if $quote;
- if ($binop) {
- return $self->maybe_parens("$var =~ $re", $cx, 20);
- } else {
- return $re;
- }
-}
-
-sub pp_match { matchop(@_, "m", "/") }
-sub pp_pushre { matchop(@_, "m", "/") }
-sub pp_qr { matchop(@_, "qr", "") }
-
-sub pp_split {
- my $self = shift;
- my($op, $cx) = @_;
- my($kid, @exprs, $ary, $expr);
- $kid = $op->first;
- # under ithreads pmreplroot is an integer, not an SV
- my $replroot = $kid->pmreplroot;
- if ( ( ref($replroot) && $$replroot ) ||
- ( !ref($replroot) && $replroot ) ) {
- $ary = $self->stash_variable('@', $self->gv_name($kid->pmreplroot));
- }
- for (; !null($kid); $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 6);
- }
-
- # handle special case of split(), and split(" ") that compiles to /\s+/
- $kid = $op->first;
- if ($kid->flags & OPf_SPECIAL
- && $exprs[0] eq '/\\s+/'
- && $kid->pmflags & PMf_SKIPWHITE ) {
- $exprs[0] = '" "';
- }
-
- $expr = "split(" . join(", ", @exprs) . ")";
- if ($ary) {
- return $self->maybe_parens("$ary = $expr", $cx, 7);
- } else {
- return $expr;
- }
-}
-
-# oxime -- any of various compounds obtained chiefly by the action of
-# hydroxylamine on aldehydes and ketones and characterized by the
-# bivalent grouping C=NOH [Webster's Tenth]
-
-my %substwords;
-map($substwords{join "", sort split //, $_} = $_, 'ego', 'egoism', 'em',
- 'es', 'ex', 'exes', 'gee', 'go', 'goes', 'ie', 'ism', 'iso', 'me',
- 'meese', 'meso', 'mig', 'mix', 'os', 'ox', 'oxime', 'see', 'seem',
- 'seg', 'sex', 'sig', 'six', 'smog', 'sog', 'some', 'xi');
-
-sub pp_subst {
- my $self = shift;
- my($op, $cx) = @_;
- my $kid = $op->first;
- my($binop, $var, $re, $repl) = ("", "", "", "");
- if ($op->flags & OPf_STACKED) {
- $binop = 1;
- $var = $self->deparse($kid, 20);
- $kid = $kid->sibling;
- }
- my $flags = "";
- if (null($op->pmreplroot)) {
- $repl = $self->dq($kid);
- $kid = $kid->sibling;
- } else {
- $repl = $op->pmreplroot->first; # skip substcont
- while ($repl->name eq "entereval") {
- $repl = $repl->first;
- $flags .= "e";
- }
- if ($op->pmflags & PMf_EVAL) {
- $repl = $self->deparse($repl, 0);
- } else {
- $repl = $self->dq($repl);
- }
- }
- my $extended = ($op->pmflags & PMf_EXTENDED);
- if (null $kid) {
- my $unbacked = re_unback($op->precomp);
- if ($extended) {
- $re = re_uninterp_extended(escape_extended_re($unbacked));
- }
- else {
- $re = re_uninterp(escape_str($unbacked));
- }
- } else {
- ($re) = $self->regcomp($kid, 1, $extended);
- }
- $flags .= "e" if $op->pmflags & PMf_EVAL;
- $flags .= "g" if $op->pmflags & PMf_GLOBAL;
- $flags .= "i" if $op->pmflags & PMf_FOLD;
- $flags .= "m" if $op->pmflags & PMf_MULTILINE;
- $flags .= "o" if $op->pmflags & PMf_KEEP;
- $flags .= "s" if $op->pmflags & PMf_SINGLELINE;
- $flags .= "x" if $extended;
- $flags = $substwords{$flags} if $substwords{$flags};
- if ($binop) {
- return $self->maybe_parens("$var =~ s"
- . double_delim($re, $repl) . $flags,
- $cx, 20);
- } else {
- return "s". double_delim($re, $repl) . $flags;
- }
-}
-
-1;
-__END__
-
-=head1 NAME
-
-B::Deparse - Perl compiler backend to produce perl code
-
-=head1 SYNOPSIS
-
-B<perl> B<-MO=Deparse>[B<,-u>I<PACKAGE>][B<,-p>][B<,-q>][B<,-l>]
- [B<,-s>I<LETTERS>][B<,-x>I<LEVEL>] I<prog.pl>
-
-=head1 DESCRIPTION
-
-B::Deparse is a backend module for the Perl compiler that generates
-perl source code, based on the internal compiled structure that perl
-itself creates after parsing a program. The output of B::Deparse won't
-be exactly the same as the original source, since perl doesn't keep
-track of comments or whitespace, and there isn't a one-to-one
-correspondence between perl's syntactical constructions and their
-compiled form, but it will often be close. When you use the B<-p>
-option, the output also includes parentheses even when they are not
-required by precedence, which can make it easy to see if perl is
-parsing your expressions the way you intended.
-
-Please note that this module is mainly new and untested code and is
-still under development, so it may change in the future.
-
-=head1 OPTIONS
-
-As with all compiler backend options, these must follow directly after
-the '-MO=Deparse', separated by a comma but not any white space.
-
-=over 4
-
-=item B<-l>
-
-Add '#line' declarations to the output based on the line and file
-locations of the original code.
-
-=item B<-p>
-
-Print extra parentheses. Without this option, B::Deparse includes
-parentheses in its output only when they are needed, based on the
-structure of your program. With B<-p>, it uses parentheses (almost)
-whenever they would be legal. This can be useful if you are used to
-LISP, or if you want to see how perl parses your input. If you say
-
- if ($var & 0x7f == 65) {print "Gimme an A!"}
- print ($which ? $a : $b), "\n";
- $name = $ENV{USER} or "Bob";
-
-C<B::Deparse,-p> will print
-
- if (($var & 0)) {
- print('Gimme an A!')
- };
- (print(($which ? $a : $b)), '???');
- (($name = $ENV{'USER'}) or '???')
-
-which probably isn't what you intended (the C<'???'> is a sign that
-perl optimized away a constant value).
-
-=item B<-P>
-
-Disable prototype checking. With this option, all function calls are
-deparsed as if no prototype was defined for them. In other words,
-
- perl -MO=Deparse,-P -e 'sub foo (\@) { 1 } foo @x'
-
-will print
-
- sub foo (\@) {
- 1;
- }
- &foo(\@x);
-
-making clear how the parameters are actually passed to C<foo>.
-
-=item B<-q>
-
-Expand double-quoted strings into the corresponding combinations of
-concatenation, uc, ucfirst, lc, lcfirst, quotemeta, and join. For
-instance, print
-
- print "Hello, $world, @ladies, \u$gentlemen\E, \u\L$me!";
-
-as
-
- print 'Hello, ' . $world . ', ' . join($", @ladies) . ', '
- . ucfirst($gentlemen) . ', ' . ucfirst(lc $me . '!');
-
-Note that the expanded form represents the way perl handles such
-constructions internally -- this option actually turns off the reverse
-translation that B::Deparse usually does. On the other hand, note that
-C<$x = "$y"> is not the same as C<$x = $y>: the former makes the value
-of $y into a string before doing the assignment.
-
-=item B<-f>I<FILE>
-
-Normally, B::Deparse deparses the main code of a program, and all the subs
-defined in the same file. To include subs defined in other files, pass the
-B<-f> option with the filename. You can pass the B<-f> option several times, to
-include more than one secondary file. (Most of the time you don't want to
-use it at all.) You can also use this option to include subs which are
-defined in the scope of a B<#line> directive with two parameters.
-
-=item B<-s>I<LETTERS>
-
-Tweak the style of B::Deparse's output. The letters should follow
-directly after the 's', with no space or punctuation. The following
-options are available:
-
-=over 4
-
-=item B<C>
-
-Cuddle C<elsif>, C<else>, and C<continue> blocks. For example, print
-
- if (...) {
- ...
- } else {
- ...
- }
-
-instead of
-
- if (...) {
- ...
- }
- else {
- ...
- }
-
-The default is not to cuddle.
-
-=item B<i>I<NUMBER>
-
-Indent lines by multiples of I<NUMBER> columns. The default is 4 columns.
-
-=item B<T>
-
-Use tabs for each 8 columns of indent. The default is to use only spaces.
-For instance, if the style options are B<-si4T>, a line that's indented
-3 times will be preceded by one tab and four spaces; if the options were
-B<-si8T>, the same line would be preceded by three tabs.
-
-=item B<v>I<STRING>B<.>
-
-Print I<STRING> for the value of a constant that can't be determined
-because it was optimized away (mnemonic: this happens when a constant
-is used in B<v>oid context). The end of the string is marked by a period.
-The string should be a valid perl expression, generally a constant.
-Note that unless it's a number, it probably needs to be quoted, and on
-a command line quotes need to be protected from the shell. Some
-conventional values include 0, 1, 42, '', 'foo', and
-'Useless use of constant omitted' (which may need to be
-B<-sv"'Useless use of constant omitted'.">
-or something similar depending on your shell). The default is '???'.
-If you're using B::Deparse on a module or other file that's require'd,
-you shouldn't use a value that evaluates to false, since the customary
-true constant at the end of a module will be in void context when the
-file is compiled as a main program.
-
-=back
-
-=item B<-x>I<LEVEL>
-
-Expand conventional syntax constructions into equivalent ones that expose
-their internal operation. I<LEVEL> should be a digit, with higher values
-meaning more expansion. As with B<-q>, this actually involves turning off
-special cases in B::Deparse's normal operations.
-
-If I<LEVEL> is at least 3, for loops will be translated into equivalent
-while loops with continue blocks; for instance
-
- for ($i = 0; $i < 10; ++$i) {
- print $i;
- }
-
-turns into
-
- $i = 0;
- while ($i < 10) {
- print $i;
- } continue {
- ++$i
- }
-
-Note that in a few cases this translation can't be perfectly carried back
-into the source code -- if the loop's initializer declares a my variable,
-for instance, it won't have the correct scope outside of the loop.
-
-If I<LEVEL> is at least 7, if statements will be translated into equivalent
-expressions using C<&&>, C<?:> and C<do {}>; for instance
-
- print 'hi' if $nice;
- if ($nice) {
- print 'hi';
- }
- if ($nice) {
- print 'hi';
- } else {
- print 'bye';
- }
-
-turns into
-
- $nice and print 'hi';
- $nice and do { print 'hi' };
- $nice ? do { print 'hi' } : do { print 'bye' };
-
-Long sequences of elsifs will turn into nested ternary operators, which
-B::Deparse doesn't know how to indent nicely.
-
-=back
-
-=head1 USING B::Deparse AS A MODULE
-
-=head2 Synopsis
-
- use B::Deparse;
- $deparse = B::Deparse->new("-p", "-sC");
- $body = $deparse->coderef2text(\&func);
- eval "sub func $body"; # the inverse operation
-
-=head2 Description
-
-B::Deparse can also be used on a sub-by-sub basis from other perl
-programs.
-
-=head2 new
-
- $deparse = B::Deparse->new(OPTIONS)
-
-Create an object to store the state of a deparsing operation and any
-options. The options are the same as those that can be given on the
-command line (see L</OPTIONS>); options that are separated by commas
-after B<-MO=Deparse> should be given as separate strings. Some
-options, like B<-u>, don't make sense for a single subroutine, so
-don't pass them.
-
-=head2 ambient_pragmas
-
- $deparse->ambient_pragmas(strict => 'all', '$[' => $[);
-
-The compilation of a subroutine can be affected by a few compiler
-directives, B<pragmas>. These are:
-
-=over 4
-
-=item *
-
-use strict;
-
-=item *
-
-use warnings;
-
-=item *
-
-Assigning to the special variable $[
-
-=item *
-
-use integer;
-
-=item *
-
-use bytes;
-
-=item *
-
-use utf8;
-
-=item *
-
-use re;
-
-=back
-
-Ordinarily, if you use B::Deparse on a subroutine which has
-been compiled in the presence of one or more of these pragmas,
-the output will include statements to turn on the appropriate
-directives. So if you then compile the code returned by coderef2text,
-it will behave the same way as the subroutine which you deparsed.
-
-However, you may know that you intend to use the results in a
-particular context, where some pragmas are already in scope. In
-this case, you use the B<ambient_pragmas> method to describe the
-assumptions you wish to make.
-
-Not all of the options currently have any useful effect. See
-L</BUGS> for more details.
-
-The parameters it accepts are:
-
-=over 4
-
-=item strict
-
-Takes a string, possibly containing several values separated
-by whitespace. The special values "all" and "none" mean what you'd
-expect.
-
- $deparse->ambient_pragmas(strict => 'subs refs');
-
-=item $[
-
-Takes a number, the value of the array base $[.
-
-=item bytes
-
-=item utf8
-
-=item integer
-
-If the value is true, then the appropriate pragma is assumed to
-be in the ambient scope, otherwise not.
-
-=item re
-
-Takes a string, possibly containing a whitespace-separated list of
-values. The values "all" and "none" are special. It's also permissible
-to pass an array reference here.
-
- $deparser->ambient_pragmas(re => 'eval');
-
-
-=item warnings
-
-Takes a string, possibly containing a whitespace-separated list of
-values. The values "all" and "none" are special, again. It's also
-permissible to pass an array reference here.
-
- $deparser->ambient_pragmas(warnings => [qw[void io]]);
-
-If one of the values is the string "FATAL", then all the warnings
-in that list will be considered fatal, just as with the B<warnings>
-pragma itself. Should you need to specify that some warnings are
-fatal, and others are merely enabled, you can pass the B<warnings>
-parameter twice:
-
- $deparser->ambient_pragmas(
- warnings => 'all',
- warnings => [FATAL => qw/void io/],
- );
-
-See L<perllexwarn> for more information about lexical warnings.
-
-=item hint_bits
-
-=item warning_bits
-
-These two parameters are used to specify the ambient pragmas in
-the format used by the special variables $^H and ${^WARNING_BITS}.
-
-They exist principally so that you can write code like:
-
- { my ($hint_bits, $warning_bits);
- BEGIN {($hint_bits, $warning_bits) = ($^H, ${^WARNING_BITS})}
- $deparser->ambient_pragmas (
- hint_bits => $hint_bits,
- warning_bits => $warning_bits,
- '$[' => 0 + $[
- ); }
-
-which specifies that the ambient pragmas are exactly those which
-are in scope at the point of calling.
-
-=back
-
-=head2 coderef2text
-
- $body = $deparse->coderef2text(\&func)
- $body = $deparse->coderef2text(sub ($$) { ... })
-
-Return source code for the body of a subroutine (a block, optionally
-preceded by a prototype in parens), given a reference to the
-sub. Because a subroutine can have no names, or more than one name,
-this method doesn't return a complete subroutine definition -- if you
-want to eval the result, you should prepend "sub subname ", or "sub "
-for an anonymous function constructor. Unless the sub was defined in
-the main:: package, the code will include a package declaration.
-
-=head1 BUGS
-
-=over 4
-
-=item *
-
-The only pragmas to be completely supported are: C<use warnings>,
-C<use strict 'refs'>, C<use bytes>, and C<use integer>. (C<$[>, which
-behaves like a pragma, is also supported.)
-
-Excepting those listed above, we're currently unable to guarantee that
-B::Deparse will produce a pragma at the correct point in the program.
-Since the effects of pragmas are often lexically scoped, this can mean
-that the pragma holds sway over a different portion of the program
-than in the input file.
-
-=item *
-
-In fact, the above is a specific instance of a more general problem:
-we can't guarantee to produce BEGIN blocks or C<use> declarations in
-exactly the right place. So if you use a module which affects compilation
-(such as by over-riding keywords, overloading constants or whatever)
-then the output code might not work as intended.
-
-This is the most serious outstanding problem, and will be very hard
-to fix.
-
-=item *
-
-If a keyword is over-ridden, and your program explicitly calls
-the built-in version by using CORE::keyword, the output of B::Deparse
-will not reflect this. If you run the resulting code, it will call
-the over-ridden version rather than the built-in one. (Maybe there
-should be an option to B<always> print keyword calls as C<CORE::name>.)
-
-=item *
-
-C<sort foo (1, 2, 3)> comes out as C<sort (foo 1, 2, 3)>, which
-causes perl to issue a warning.
-
-The obvious fix doesn't work, because these are different:
-
- print (FOO 1, 2, 3), 4, 5, 6;
- print FOO (1, 2, 3), 4, 5, 6;
-
-=item *
-
-Constants (other than simple strings or numbers) don't work properly.
-Pathological examples that fail (and probably always will) include:
-
- use constant E2BIG => ($!=7);
- use constant x=>\$x; print x
-
-The following could (and should) be made to work:
-
- use constant regex => qr/blah/;
- print regex;
-
-=item *
-
-An input file that uses source filtering probably won't be deparsed into
-runnable code, because it will still include the B<use> declaration
-for the source filtering module, even though the code that is
-produced is already ordinary Perl which shouldn't be filtered again.
-
-=item *
-
-There are probably many more bugs on non-ASCII platforms (EBCDIC).
-
-=back
-
-=head1 AUTHOR
-
-Stephen McCamant <smcc@CSUA.Berkeley.EDU>, based on an earlier
-version by Malcolm Beattie <mbeattie@sable.ox.ac.uk>, with
-contributions from Gisle Aas, James Duncan, Albert Dvornik, Robin
-Houston, Hugo van der Sanden, Gurusamy Sarathy, Nick Ing-Simmons,
-and Rafael Garcia-Suarez.
-
-=cut
diff --git a/Master/perltl/lib/Carp.pm b/Master/perltl/lib/Carp.pm
deleted file mode 100644
index 6199f894487..00000000000
--- a/Master/perltl/lib/Carp.pm
+++ /dev/null
@@ -1,196 +0,0 @@
-package Carp;
-
-our $VERSION = '1.01';
-
-=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
-
-shortmess - return the message that carp and croak produce
-
-longmess - return the message that cluck and confess produce
-
-=head1 SYNOPSIS
-
- use Carp;
- croak "We're outta here!";
-
- use Carp qw(cluck);
- cluck "This is how we got here!";
-
- print FH Carp::shortmess("This will have caller's details added");
- print FH Carp::longmess("This will have stack backtrace added");
-
-=head1 DESCRIPTION
-
-The Carp routines are useful in your own modules because
-they act like die() or warn(), but with a message which is more
-likely to be useful to a user of your module. In the case of
-cluck, confess, and longmess that context is a summary of every
-call in the call-stack. For a shorter message you can use carp,
-croak or shortmess which report the error as being from where
-your module was called. There is no guarantee that that is where
-the error was, but it is a good educated guess.
-
-Here is a more complete description of how shortmess works. What
-it does is search the call-stack for a function call stack where
-it hasn't been told that there shouldn't be an error. If every
-call is marked safe, it then gives up and gives a full stack
-backtrace instead. In other words it presumes that the first likely
-looking potential suspect is guilty. Its rules for telling whether
-a call shouldn't generate errors work as follows:
-
-=over 4
-
-=item 1.
-
-Any call from a package to itself is safe.
-
-=item 2.
-
-Packages claim that there won't be errors on calls to or from
-packages explicitly marked as safe by inclusion in @CARP_NOT, or
-(if that array is empty) @ISA. The ability to override what
-@ISA says is new in 5.8.
-
-=item 3.
-
-The trust in item 2 is transitive. If A trusts B, and B
-trusts C, then A trusts C. So if you do not override @ISA
-with @CARP_NOT, then this trust relationship is identical to,
-"inherits from".
-
-=item 4.
-
-Any call from an internal Perl module is safe. (Nothing keeps
-user modules from marking themselves as internal to Perl, but
-this practice is discouraged.)
-
-=item 5.
-
-Any call to Carp is safe. (This rule is what keeps it from
-reporting the error where you call carp/croak/shortmess.)
-
-=back
-
-=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 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 members of %Internal are packages that are internal to perl.
-# Carp will not report errors from within these packages if it
-# can. The members of %CarpInternal are internal to Perl's warning
-# system. Carp will not report errors from within these packages
-# either, and will not report calls *to* these packages for carp and
-# croak. They replace $CarpLevel, which is deprecated. The
-# $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval
-# text and function arguments should be formatted when printed.
-
-$CarpInternal{Carp}++;
-$CarpInternal{warnings}++;
-$CarpLevel = 0; # How many extra package levels to skip on carp.
- # How many calls to skip on confess.
- # Reconciling these notions is hard, use
- # %Internal and %CarpInternal instead.
-$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 longmess shortmess);
-@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 $@?
- # Icky backwards compatibility wrapper. :-(
- my $call_pack = caller();
- if ($Internal{$call_pack} or $CarpInternal{$call_pack}) {
- return longmess_heavy(@_);
- }
- else {
- local $CarpLevel = $CarpLevel + 1;
- return 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 $@?
- # Icky backwards compatibility wrapper. :-(
- my $call_pack = caller();
- local @CARP_NOT = caller();
- 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/Master/perltl/lib/Carp/Heavy.pm b/Master/perltl/lib/Carp/Heavy.pm
deleted file mode 100644
index c3d3c26fa1a..00000000000
--- a/Master/perltl/lib/Carp/Heavy.pm
+++ /dev/null
@@ -1,247 +0,0 @@
-# Carp::Heavy uses some variables in common with Carp.
-package Carp;
-
-=head1 NAME
-
-Carp heavy machinery - no user serviceable parts inside
-
-=cut
-
-# use strict; # not yet
-
-# On one line so MakeMaker will see it.
-use Carp; our $VERSION = $Carp::VERSION;
-
-our ($CarpLevel, $MaxArgNums, $MaxEvalLen, $MaxArgLen, $Verbose);
-
-sub caller_info {
- my $i = shift(@_) + 1;
- package DB;
- my %call_info;
- @call_info{
- qw(pack file line sub has_args wantarray evaltext is_require)
- } = caller($i);
-
- unless (defined $call_info{pack}) {
- return ();
- }
-
- my $sub_name = Carp::get_subname(\%call_info);
- if ($call_info{has_args}) {
- my @args = map {Carp::format_arg($_)} @DB::args;
- if ($MaxArgNums and @args > $MaxArgNums) { # More than we want to show?
- $#args = $MaxArgNums;
- push @args, '...';
- }
- # Push the args onto the subroutine
- $sub_name .= '(' . join (',', @args) . ')';
- }
- $call_info{sub_name} = $sub_name;
- return wantarray() ? %call_info : \%call_info;
-}
-
-# Transform an argument to a function into a string.
-sub format_arg {
- my $arg = shift;
- if (not defined($arg)) {
- $arg = 'undef';
- }
- elsif (ref($arg)) {
- $arg = defined($overload::VERSION) ? overload::StrVal($arg) : "$arg";
- }
- $arg =~ s/'/\\'/g;
- $arg = str_len_trim($arg, $MaxArgLen);
-
- # Quote it?
- $arg = "'$arg'" unless $arg =~ /^-?[\d.]+\z/;
-
- # The following handling of "control chars" is direct from
- # the original code - I think it is broken on Unicode though.
- # Suggestions?
- $arg =~ s/([[:cntrl:]]|[[:^ascii:]])/sprintf("\\x{%x}",ord($1))/eg;
- return $arg;
-}
-
-# Takes an inheritance cache and a package and returns
-# an anon hash of known inheritances and anon array of
-# inheritances which consequences have not been figured
-# for.
-sub get_status {
- my $cache = shift;
- my $pkg = shift;
- $cache->{$pkg} ||= [{$pkg => $pkg}, [trusts_directly($pkg)]];
- return @{$cache->{$pkg}};
-}
-
-# Takes the info from caller() and figures out the name of
-# the sub/require/eval
-sub get_subname {
- my $info = shift;
- if (defined($info->{evaltext})) {
- my $eval = $info->{evaltext};
- if ($info->{is_require}) {
- return "require $eval";
- }
- else {
- $eval =~ s/([\\\'])/\\$1/g;
- return "eval '" . str_len_trim($eval, $MaxEvalLen) . "'";
- }
- }
-
- return ($info->{sub} eq '(eval)') ? 'eval {...}' : $info->{sub};
-}
-
-# Figures out what call (from the point of view of the caller)
-# the long error backtrace should start at.
-sub long_error_loc {
- my $i;
- my $lvl = $CarpLevel;
- {
- my $pkg = caller(++$i);
- unless(defined($pkg)) {
- # This *shouldn't* happen.
- if (%Internal) {
- local %Internal;
- $i = long_error_loc();
- last;
- }
- else {
- # OK, now I am irritated.
- return 2;
- }
- }
- redo if $CarpInternal{$pkg};
- redo unless 0 > --$lvl;
- redo if $Internal{$pkg};
- }
- return $i - 1;
-}
-
-
-sub longmess_heavy {
- return @_ if ref($_[0]); # don't break references as exceptions
- my $i = long_error_loc();
- return ret_backtrace($i, @_);
-}
-
-# Returns a full stack backtrace starting from where it is
-# told.
-sub ret_backtrace {
- my ($i, @error) = @_;
- my $mess;
- my $err = join '', @error;
- $i++;
-
- my $tid_msg = '';
- if (defined &Thread::tid) {
- my $tid = Thread->self->tid;
- $tid_msg = " thread $tid" if $tid;
- }
-
- { if ($err =~ /\n$/) { # extra block to localise $1 etc
- $mess = $err;
- }
- else {
- my %i = caller_info($i);
- $mess = "$err at $i{file} line $i{line}$tid_msg\n";
- }}
-
- while (my %i = caller_info(++$i)) {
- $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n";
- }
-
- return $mess;
-}
-
-sub ret_summary {
- my ($i, @error) = @_;
- my $mess;
- my $err = join '', @error;
- $i++;
-
- my $tid_msg = '';
- if (defined &Thread::tid) {
- my $tid = Thread->self->tid;
- $tid_msg = " thread $tid" if $tid;
- }
-
- my %i = caller_info($i);
- return "$err at $i{file} line $i{line}$tid_msg\n";
-}
-
-
-sub short_error_loc {
- my $cache;
- my $i = 1;
- my $lvl = $CarpLevel;
- {
- my $called = caller($i++);
- my $caller = caller($i);
- return 0 unless defined($caller); # What happened?
- redo if $Internal{$caller};
- redo if $CarpInternal{$called};
- redo if trusts($called, $caller, $cache);
- redo if trusts($caller, $called, $cache);
- redo unless 0 > --$lvl;
- }
- return $i - 1;
-}
-
-sub shortmess_heavy {
- return longmess_heavy(@_) if $Verbose;
- return @_ if ref($_[0]); # don't break references as exceptions
- my $i = short_error_loc();
- if ($i) {
- ret_summary($i, @_);
- }
- else {
- longmess_heavy(@_);
- }
-}
-
-# If a string is too long, trims it with ...
-sub str_len_trim {
- my $str = shift;
- my $max = shift || 0;
- if (2 < $max and $max < length($str)) {
- substr($str, $max - 3) = '...';
- }
- return $str;
-}
-
-# Takes two packages and an optional cache. Says whether the
-# first inherits from the second.
-#
-# Recursive versions of this have to work to avoid certain
-# possible endless loops, and when following long chains of
-# inheritance are less efficient.
-sub trusts {
- my $child = shift;
- my $parent = shift;
- my $cache = shift || {};
- my ($known, $partial) = get_status($cache, $child);
- # Figure out consequences until we have an answer
- while (@$partial and not exists $known->{$parent}) {
- my $anc = shift @$partial;
- next if exists $known->{$anc};
- $known->{$anc}++;
- my ($anc_knows, $anc_partial) = get_status($cache, $anc);
- my @found = keys %$anc_knows;
- @$known{@found} = ();
- push @$partial, @$anc_partial;
- }
- return exists $known->{$parent};
-}
-
-# Takes a package and gives a list of those trusted directly
-sub trusts_directly {
- my $class = shift;
- no strict 'refs';
- no warnings 'once';
- return @{"$class\::CARP_NOT"}
- ? @{"$class\::CARP_NOT"}
- : @{"$class\::ISA"};
-}
-
-1;
-
diff --git a/Master/perltl/lib/Class/Struct.pm b/Master/perltl/lib/Class/Struct.pm
deleted file mode 100644
index bad4f78165f..00000000000
--- a/Master/perltl/lib/Class/Struct.pm
+++ /dev/null
@@ -1,632 +0,0 @@
-package Class::Struct;
-
-## See POD after __END__
-
-use 5.006_001;
-
-use strict;
-use warnings::register;
-our(@ISA, @EXPORT, $VERSION);
-
-use Carp;
-
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(struct);
-
-$VERSION = '0.61';
-
-## 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+)*$/ ){
- $out .= " if (defined(\$init{'$name'})) {\n";
- $out .= " if (ref \$init{'$name'} eq 'HASH')\n";
- $out .= " { \$r->$elem = $type->new(\%{\$init{'$name'}}) } $cmt\n";
- $out .= " elsif (UNIVERSAL::isa(\$init{'$name'}, '$type'))\n";
- $out .= " { \$r->$elem = \$init{'$name'} } $cmt\n";
- $out .= " else { croak 'Initializer for $name must be hash or $type reference' }\n";
- $out .= " }\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";
- $out .= " if (ref(\$i) eq 'ARRAY' && !\@_) { \$r->$elem = \$i; return \$r }\n";
- $sel = "->[\$i]";
- }
- elsif( defined $hashes{$name} ){
- $out .= " my \$i;\n";
- $out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
- $out .= " if (ref(\$i) eq 'HASH' && !\@_) { \$r->$elem = \$i; return \$r }\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 4
-
-=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.
-
-As a special case, when the accessor is called with an array reference
-as the sole argument, this causes an assignment of the whole array element.
-The object reference 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.
-
-As a special case, when the accessor is called with a hash reference
-as the sole argument, this causes an assignment of the whole hash element.
-The object reference 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 not initialized
-by default.
-
-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 an object of the corresponding class,
-or of one of it's subclasses, or a reference to a hash containing named
-arguments to be passed to the element's constructor.
-
-See Example 3 below for an example of initialization.
-
-=head1 EXAMPLES
-
-=over 4
-
-=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 class may be specified as
-an object of that class, or as a reference to a hash of initializers
-that are 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 => Breed->new(name=>'short-hair', cross=>1),
- or: 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 Damian Conway, 2001-09-10, v0.62.
-
- Modified implicit construction of nested objects.
- Now will also take an object ref instead of requiring a hash ref.
- Also default initializes nested object attributes to undef, rather
- than calling object constructor without args
- Original over-helpfulness was fraught with problems:
- * the class's constructor might not be called 'new'
- * the class might not have a hash-like-arguments constructor
- * the class might not have a no-argument constructor
- * "recursive" data structures didn't work well:
- package Person;
- struct { mother => 'Person', father => 'Person'};
-
-
-Modified by Casey West, 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/Master/perltl/lib/Config.pm b/Master/perltl/lib/Config.pm
deleted file mode 100644
index c5b8bd0be9c..00000000000
--- a/Master/perltl/lib/Config.pm
+++ /dev/null
@@ -1,8895 +0,0 @@
-package Config;
-use Exporter ();
-@EXPORT = qw(%Config);
-@EXPORT_OK = qw(myconfig config_sh config_vars);
-
-# Define our own import method to avoid pulling in the full Exporter:
-sub import {
- my $pkg = shift;
- @_ = @EXPORT unless @_;
- my @func = grep {$_ ne '%Config'} @_;
- local $Exporter::ExportLevel = 1;
- Exporter::import('Config', @func) if @func;
- return if @func == @_;
- my $callpkg = caller(0);
- *{"$callpkg\::Config"} = \%Config;
-}
-
-die "Perl lib version (v5.8.0) doesn't match executable version ($])"
- unless $^V;
-
-$^V eq v5.8.0
- or die "Perl lib version (v5.8.0) doesn't match executable version (" .
- (sprintf "v%vd",$^V) . ")";
-
-# This file was created by configpm when Perl was built. Any changes
-# made to this file will be lost the next time perl is built.
-
-## Configured by: popineau@ANSIBLE
-### Target system: WIN32
-
-my $config_sh = <<'!END!';
-archlibexp='c:\Local\Perl\lib'
-archname='MSWin32-x86-multi-thread'
-cc='cl'
-ccflags='-nologo -GF -W3 -MD -DNDEBUG -O2xtb2 -G6 -GL -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX'
-cppflags='-DWIN32'
-dlsrc='dl_win32.xs'
-dynamic_ext='Storable Encode XS/Typemap B/C IO MIME/Base64 Devel/Peek Opcode Time/HiRes attrs ByteLoader PerlIO/scalar Unicode/Normalize re B XS/APItest Encode/Unicode SDBM_File PerlIO/via PerlIO/encoding Fcntl Sys/Hostname Digest/MD5 Devel/PPPort POSIX Filter/Util/Call Socket threads/shared Data/Dumper List/Util threads File/Glob Devel/DProf Cwd'
-extensions='Storable Encode XS/Typemap B/C IO MIME/Base64 Devel/Peek Opcode Time/HiRes attrs ByteLoader PerlIO/scalar Unicode/Normalize re B XS/APItest Encode/Unicode SDBM_File PerlIO/via PerlIO/encoding Fcntl Sys/Hostname Digest/MD5 Devel/PPPort POSIX Filter/Util/Call Socket threads/shared Data/Dumper List/Util threads File/Glob Devel/DProf Cwd'
-installarchlib='c:\Local\Perl\lib'
-installprivlib='c:\Local\Perl\lib'
-libpth='..\..\texk\msvc\lib'
-libs=' oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib'
-osname='MSWin32'
-osvers='4.0'
-prefix='c:\Local\Perl'
-privlibexp='c:\Local\Perl\lib'
-sharpbang='#!'
-shsharp='true'
-sig_name='ZERO HUP INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE ALRM TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD'
-sig_num='0 1 2 21 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20 0'
-so='dll'
-startsh='#!/bin/sh'
-static_ext=' '
-Author=''
-Date='$Date'
-Header=''
-Id='$Id'
-Locker=''
-Log='$Log'
-PERL_API_REVISION='5'
-PERL_API_SUBVERSION='0'
-PERL_API_VERSION='8'
-PERL_CONFIG_SH='true'
-PERL_PATCHLEVEL='8'
-PERL_REVISION='5'
-PERL_SUBVERSION='0'
-PERL_VERSION='8'
-RCSfile='$RCSfile'
-Revision='$Revision'
-Source=''
-State=''
-_a='.lib'
-_exe='.exe'
-_o='.obj'
-afs='false'
-afsroot='/afs'
-alignbytes='8'
-ansi2knr=''
-aphostname=''
-api_revision='5'
-api_subversion='0'
-api_version='8'
-api_versionstring='5.8.0'
-ar='lib'
-archlib='c:\Local\Perl\lib'
-archname64=''
-archobjs=''
-asctime_r_proto='0'
-awk='awk'
-baserev='5'
-bash=''
-bin='c:\Local\Perl\bin'
-binexp='c:\Local\Perl\bin'
-bison=''
-byacc='byacc'
-byteorder='1234'
-c=''
-castflags='0'
-cat='type'
-cccdlflags=' '
-ccdlflags=' '
-ccflags_uselargefiles=''
-ccname=''
-ccsymbols=''
-ccversion=''
-cf_by='popineau'
-cf_email='popineau@ANSIBLE'
-cf_time='Mon Aug 18 21:40:53 2003'
-charsize='1'
-chgrp=''
-chmod=''
-chown=''
-clocktype='clock_t'
-comm=''
-compress=''
-contains='grep'
-cp='copy'
-cpio=''
-cpp='cl -nologo -E'
-cpp_stuff='42'
-cppccsymbols=''
-cpplast=''
-cppminus=''
-cpprun='cl -nologo -E'
-cppstdin='cppstdin'
-cppsymbols=''
-crypt_r_proto='0'
-cryptlib=''
-csh='undef'
-ctermid_r_proto='0'
-ctime_r_proto='0'
-d_Gconvert='sprintf((b),"%.*g",(n),(x))'
-d_PRIEUldbl='undef'
-d_PRIFUldbl='undef'
-d_PRIGUldbl='undef'
-d_PRIXU64='undef'
-d_PRId64='undef'
-d_PRIeldbl='undef'
-d_PRIfldbl='undef'
-d_PRIgldbl='undef'
-d_PRIi64='undef'
-d_PRIo64='undef'
-d_PRIu64='undef'
-d_PRIx64='undef'
-d_SCNfldbl='undef'
-d__fwalk='undef'
-d_access='define'
-d_accessx='undef'
-d_alarm='define'
-d_archlib='define'
-d_asctime_r='undef'
-d_atolf='undef'
-d_atoll='undef'
-d_attribut='undef'
-d_bcmp='undef'
-d_bcopy='undef'
-d_bsd='define'
-d_bsdgetpgrp='undef'
-d_bsdsetpgrp='undef'
-d_bzero='undef'
-d_casti32='undef'
-d_castneg='define'
-d_charvspr='undef'
-d_chown='undef'
-d_chroot='undef'
-d_chsize='define'
-d_class='undef'
-d_closedir='define'
-d_cmsghdr_s='undef'
-d_const='define'
-d_crypt='undef'
-d_crypt_r='undef'
-d_csh='undef'
-d_ctermid_r='undef'
-d_ctime_r='undef'
-d_cuserid='undef'
-d_dbl_dig='define'
-d_dbminitproto='undef'
-d_difftime='define'
-d_dirfd='undef'
-d_dirnamlen='define'
-d_dlerror='define'
-d_dlopen='define'
-d_dlsymun='undef'
-d_dosuid='undef'
-d_drand48_r='undef'
-d_drand48proto='undef'
-d_dup2='define'
-d_eaccess='undef'
-d_endgrent='undef'
-d_endgrent_r='undef'
-d_endhent='undef'
-d_endhostent_r='undef'
-d_endnent='undef'
-d_endnetent_r='undef'
-d_endpent='undef'
-d_endprotoent_r='undef'
-d_endpwent='undef'
-d_endpwent_r='undef'
-d_endsent='undef'
-d_endservent_r='undef'
-d_eofnblk='define'
-d_eunice='undef'
-d_fchdir='undef'
-d_fchmod='undef'
-d_fchown='undef'
-d_fcntl='undef'
-d_fcntl_can_lock='undef'
-d_fd_macros='define'
-d_fd_set='define'
-d_fds_bits='define'
-d_fgetpos='define'
-d_finite='undef'
-d_finitel='undef'
-d_flexfnam='define'
-d_flock='define'
-d_flockproto='define'
-d_fork='undef'
-d_fp_class='undef'
-d_fpathconf='undef'
-d_fpclass='undef'
-d_fpclassify='undef'
-d_fpclassl='undef'
-d_fpos64_t='undef'
-d_frexpl='undef'
-d_fs_data_s='undef'
-d_fseeko='undef'
-d_fsetpos='define'
-d_fstatfs='undef'
-d_fstatvfs='undef'
-d_fsync='undef'
-d_ftello='undef'
-d_ftime='define'
-d_getcwd='define'
-d_getespwnam='undef'
-d_getfsstat='undef'
-d_getgrent='undef'
-d_getgrent_r='undef'
-d_getgrgid_r='undef'
-d_getgrnam_r='undef'
-d_getgrps='undef'
-d_gethbyaddr='define'
-d_gethbyname='define'
-d_gethent='undef'
-d_gethname='define'
-d_gethostbyaddr_r='undef'
-d_gethostbyname_r='undef'
-d_gethostent_r='undef'
-d_gethostprotos='define'
-d_getitimer='undef'
-d_getlogin='define'
-d_getlogin_r='undef'
-d_getmnt='undef'
-d_getmntent='undef'
-d_getnbyaddr='undef'
-d_getnbyname='undef'
-d_getnent='undef'
-d_getnetbyaddr_r='undef'
-d_getnetbyname_r='undef'
-d_getnetent_r='undef'
-d_getnetprotos='undef'
-d_getpagsz='undef'
-d_getpbyname='define'
-d_getpbynumber='define'
-d_getpent='undef'
-d_getpgid='undef'
-d_getpgrp2='undef'
-d_getpgrp='undef'
-d_getppid='undef'
-d_getprior='undef'
-d_getprotobyname_r='undef'
-d_getprotobynumber_r='undef'
-d_getprotoent_r='undef'
-d_getprotoprotos='define'
-d_getprpwnam='undef'
-d_getpwent='undef'
-d_getpwent_r='undef'
-d_getpwnam_r='undef'
-d_getpwuid_r='undef'
-d_getsbyname='define'
-d_getsbyport='define'
-d_getsent='undef'
-d_getservbyname_r='undef'
-d_getservbyport_r='undef'
-d_getservent_r='undef'
-d_getservprotos='define'
-d_getspnam='undef'
-d_getspnam_r='undef'
-d_gettimeod='define'
-d_gmtime_r='undef'
-d_gnulibc='undef'
-d_grpasswd='undef'
-d_hasmntopt='undef'
-d_htonl='define'
-d_index='undef'
-d_inetaton='undef'
-d_int64_t='undef'
-d_isascii='define'
-d_isfinite='undef'
-d_isinf='undef'
-d_isnan='define'
-d_isnanl='undef'
-d_killpg='undef'
-d_lchown='undef'
-d_ldbl_dig='define'
-d_link='define'
-d_localtime_r='undef'
-d_locconv='define'
-d_lockf='undef'
-d_longdbl='define'
-d_longlong='undef'
-d_lseekproto='define'
-d_lstat='undef'
-d_madvise='undef'
-d_mblen='define'
-d_mbstowcs='define'
-d_mbtowc='define'
-d_memchr='define'
-d_memcmp='define'
-d_memcpy='define'
-d_memmove='define'
-d_memset='define'
-d_mkdir='define'
-d_mkdtemp='undef'
-d_mkfifo='undef'
-d_mkstemp='undef'
-d_mkstemps='undef'
-d_mktime='define'
-d_mmap='undef'
-d_modfl='undef'
-d_modfl_pow32_bug='undef'
-d_mprotect='undef'
-d_msg='undef'
-d_msg_ctrunc='undef'
-d_msg_dontroute='undef'
-d_msg_oob='undef'
-d_msg_peek='undef'
-d_msg_proxy='undef'
-d_msgctl='undef'
-d_msgget='undef'
-d_msghdr_s='undef'
-d_msgrcv='undef'
-d_msgsnd='undef'
-d_msync='undef'
-d_munmap='undef'
-d_mymalloc='undef'
-d_nice='undef'
-d_nl_langinfo='undef'
-d_nv_preserves_uv='define'
-d_off64_t='undef'
-d_old_pthread_create_joinable='undef'
-d_oldpthreads='undef'
-d_oldsock='undef'
-d_open3='undef'
-d_pathconf='undef'
-d_pause='define'
-d_perl_otherlibdirs='undef'
-d_phostname='undef'
-d_pipe='define'
-d_poll='undef'
-d_portable='define'
-d_procselfexe='undef'
-d_pthread_atfork='undef'
-d_pthread_yield='undef'
-d_pwage='undef'
-d_pwchange='undef'
-d_pwclass='undef'
-d_pwcomment='undef'
-d_pwexpire='undef'
-d_pwgecos='undef'
-d_pwpasswd='undef'
-d_pwquota='undef'
-d_qgcvt='undef'
-d_quad='undef'
-d_random_r='undef'
-d_readdir64_r='undef'
-d_readdir='define'
-d_readdir_r='undef'
-d_readlink='undef'
-d_readv='undef'
-d_recvmsg='undef'
-d_rename='define'
-d_rewinddir='define'
-d_rmdir='define'
-d_safebcpy='undef'
-d_safemcpy='undef'
-d_sanemcmp='define'
-d_sbrkproto='undef'
-d_sched_yield='undef'
-d_scm_rights='undef'
-d_seekdir='define'
-d_select='define'
-d_sem='undef'
-d_semctl='undef'
-d_semctl_semid_ds='undef'
-d_semctl_semun='undef'
-d_semget='undef'
-d_semop='undef'
-d_sendmsg='undef'
-d_setegid='undef'
-d_seteuid='undef'
-d_setgrent='undef'
-d_setgrent_r='undef'
-d_setgrps='undef'
-d_sethent='undef'
-d_sethostent_r='undef'
-d_setitimer='undef'
-d_setlinebuf='undef'
-d_setlocale='define'
-d_setlocale_r='undef'
-d_setnent='undef'
-d_setnetent_r='undef'
-d_setpent='undef'
-d_setpgid='undef'
-d_setpgrp2='undef'
-d_setpgrp='undef'
-d_setprior='undef'
-d_setproctitle='undef'
-d_setprotoent_r='undef'
-d_setpwent='undef'
-d_setpwent_r='undef'
-d_setregid='undef'
-d_setresgid='undef'
-d_setresuid='undef'
-d_setreuid='undef'
-d_setrgid='undef'
-d_setruid='undef'
-d_setsent='undef'
-d_setservent_r='undef'
-d_setsid='undef'
-d_setvbuf='define'
-d_sfio='undef'
-d_shm='undef'
-d_shmat='undef'
-d_shmatprototype='undef'
-d_shmctl='undef'
-d_shmdt='undef'
-d_shmget='undef'
-d_sigaction='undef'
-d_sigprocmask='undef'
-d_sigsetjmp='undef'
-d_sockatmark='undef'
-d_sockatmarkproto='undef'
-d_socket='define'
-d_socklen_t='undef'
-d_sockpair='undef'
-d_socks5_init='undef'
-d_sqrtl='undef'
-d_srand48_r='undef'
-d_srandom_r='undef'
-d_sresgproto='undef'
-d_sresuproto='undef'
-d_statblks='undef'
-d_statfs_f_flags='undef'
-d_statfs_s='undef'
-d_statvfs='undef'
-d_stdio_cnt_lval='define'
-d_stdio_ptr_lval='define'
-d_stdio_ptr_lval_nochange_cnt='define'
-d_stdio_ptr_lval_sets_cnt='undef'
-d_stdio_stream_array='undef'
-d_stdiobase='define'
-d_stdstdio='define'
-d_strchr='define'
-d_strcoll='define'
-d_strctcpy='define'
-d_strerrm='strerror(e)'
-d_strerror='define'
-d_strerror_r='undef'
-d_strftime='define'
-d_strtod='define'
-d_strtol='define'
-d_strtold='undef'
-d_strtoll='undef'
-d_strtoq='undef'
-d_strtoul='define'
-d_strtoull='undef'
-d_strtouq='undef'
-d_strxfrm='define'
-d_suidsafe='undef'
-d_symlink='undef'
-d_syscall='undef'
-d_syscallproto='undef'
-d_sysconf='undef'
-d_sysernlst=''
-d_syserrlst='define'
-d_system='define'
-d_tcgetpgrp='undef'
-d_tcsetpgrp='undef'
-d_telldir='define'
-d_telldirproto='define'
-d_time='define'
-d_times='define'
-d_tm_tm_gmtoff='undef'
-d_tm_tm_zone='undef'
-d_tmpnam_r='undef'
-d_truncate='undef'
-d_ttyname_r='undef'
-d_tzname='define'
-d_u32align='define'
-d_ualarm='undef'
-d_umask='define'
-d_uname='define'
-d_union_semun='define'
-d_unordered='undef'
-d_usleep='undef'
-d_usleepproto='undef'
-d_ustat='undef'
-d_vendorarch='undef'
-d_vendorbin='undef'
-d_vendorlib='undef'
-d_vfork='undef'
-d_void_closedir='undef'
-d_voidsig='define'
-d_voidtty=''
-d_volatile='define'
-d_vprintf='define'
-d_wait4='undef'
-d_waitpid='define'
-d_wcstombs='define'
-d_wctomb='define'
-d_writev='undef'
-d_xenix='undef'
-date='date'
-db_hashtype='int'
-db_prefixtype='int'
-db_version_major='0'
-db_version_minor='0'
-db_version_patch='0'
-defvoidused='15'
-direntrytype='struct direct'
-dlext='dll'
-doublesize='8'
-drand01='(rand()/(double)((unsigned)1<<RANDBITS))'
-drand48_r_proto='0'
-eagain='EAGAIN'
-ebcdic='undef'
-echo='echo'
-egrep='egrep'
-emacs=''
-endgrent_r_proto='0'
-endhostent_r_proto='0'
-endnetent_r_proto='0'
-endprotoent_r_proto='0'
-endpwent_r_proto='0'
-endservent_r_proto='0'
-eunicefix=':'
-exe_ext='.exe'
-expr='expr'
-extras=''
-fflushNULL='define'
-fflushall='undef'
-find='find'
-firstmakefile='makefile'
-flex=''
-fpossize='8'
-fpostype='fpos_t'
-freetype='void'
-full_ar=''
-full_csh=''
-full_sed=''
-gccosandvers=''
-gccversion=''
-getgrent_r_proto='0'
-getgrgid_r_proto='0'
-getgrnam_r_proto='0'
-gethostbyaddr_r_proto='0'
-gethostbyname_r_proto='0'
-gethostent_r_proto='0'
-getlogin_r_proto='0'
-getnetbyaddr_r_proto='0'
-getnetbyname_r_proto='0'
-getnetent_r_proto='0'
-getprotobyname_r_proto='0'
-getprotobynumber_r_proto='0'
-getprotoent_r_proto='0'
-getpwent_r_proto='0'
-getpwnam_r_proto='0'
-getpwuid_r_proto='0'
-getservbyname_r_proto='0'
-getservbyport_r_proto='0'
-getservent_r_proto='0'
-getspnam_r_proto='0'
-gidformat='"ld"'
-gidsign='-1'
-gidsize='4'
-gidtype='gid_t'
-glibpth='/usr/shlib /lib/pa1.1 /usr/lib/large /lib /usr/lib /usr/lib/386 /lib/386 /lib/large /usr/lib/small /lib/small /usr/ccs/lib /usr/ucblib /usr/shlib '
-gmake='gmake'
-gmtime_r_proto='0'
-grep='grep'
-groupcat=''
-groupstype='gid_t'
-gzip='gzip'
-h_fcntl='false'
-h_sysfile='true'
-hint='recommended'
-hostcat='ypcat hosts'
-i16size='2'
-i16type='short'
-i32size='4'
-i32type='long'
-i64size='8'
-i64type='__int64'
-i8size='1'
-i8type='char'
-i_arpainet='define'
-i_bsdioctl=''
-i_crypt='undef'
-i_db='undef'
-i_dbm='undef'
-i_dirent='define'
-i_dld='undef'
-i_dlfcn='define'
-i_fcntl='define'
-i_float='define'
-i_fp='undef'
-i_fp_class='undef'
-i_gdbm='undef'
-i_grp='undef'
-i_ieeefp='undef'
-i_inttypes='undef'
-i_langinfo='undef'
-i_libutil='undef'
-i_limits='define'
-i_locale='define'
-i_machcthr='undef'
-i_malloc='define'
-i_math='define'
-i_memory='undef'
-i_mntent='undef'
-i_ndbm='undef'
-i_netdb='undef'
-i_neterrno='undef'
-i_netinettcp='undef'
-i_niin='undef'
-i_poll='undef'
-i_prot='undef'
-i_pthread='undef'
-i_pwd='undef'
-i_rpcsvcdbm='define'
-i_sfio='undef'
-i_sgtty='undef'
-i_shadow='undef'
-i_socks='undef'
-i_stdarg='define'
-i_stddef='define'
-i_stdlib='define'
-i_string='define'
-i_sunmath='undef'
-i_sysaccess='undef'
-i_sysdir='undef'
-i_sysfile='undef'
-i_sysfilio='define'
-i_sysin='undef'
-i_sysioctl='undef'
-i_syslog='undef'
-i_sysmman='undef'
-i_sysmode='undef'
-i_sysmount='undef'
-i_sysndir='undef'
-i_sysparam='undef'
-i_sysresrc='undef'
-i_syssecrt='undef'
-i_sysselct='undef'
-i_syssockio='undef'
-i_sysstat='define'
-i_sysstatfs='undef'
-i_sysstatvfs='undef'
-i_systime='undef'
-i_systimek='undef'
-i_systimes='undef'
-i_systypes='define'
-i_sysuio='undef'
-i_sysun='undef'
-i_sysutsname='undef'
-i_sysvfs='undef'
-i_syswait='undef'
-i_termio='undef'
-i_termios='undef'
-i_time='define'
-i_unistd='undef'
-i_ustat='undef'
-i_utime='define'
-i_values='undef'
-i_varargs='undef'
-i_varhdr='varargs.h'
-i_vfork='undef'
-ignore_versioned_solibs=''
-inc_version_list=''
-inc_version_list_init='0'
-incpath='..\..\texk\msvc\include'
-inews=''
-installbin='c:\Local\Perl\bin'
-installhtmldir='c:\Local\Perl\html'
-installhtmlhelpdir='c:\Local\Perl\htmlhelp'
-installman1dir='c:\Local\Perl\man\man1'
-installman3dir='c:\Local\Perl\man\man3'
-installprefix='c:\Local\Perl'
-installprefixexp='c:\Local\Perl'
-installscript='c:\Local\Perl\bin'
-installsitearch='c:\Local\Perl\site\lib'
-installsitebin='c:\Local\Perl\bin'
-installsitelib='c:\Local\Perl\site\lib'
-installstyle='lib'
-installusrbinperl='undef'
-installvendorarch=''
-installvendorbin=''
-installvendorlib=''
-intsize='4'
-issymlink=''
-ivdformat='"ld"'
-ivsize='4'
-ivtype='long'
-known_extensions='B B/C ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Encode/Byte Encode/CN Encode/EBCDIC Encode/JP Encode/KR Encode/Symbol Encode/TW Encode/Unicode Errno Fcntl File/Glob Filter/Util/Call IO List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Thread Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared'
-ksh=''
-ld='link'
-lddlflags='-dll -nologo -nodefaultlib -release -LTCG -libpath:"c:\Local\Perl\lib\CORE" -machine:x86'
-ldflags='-nologo -nodefaultlib -release -LTCG -libpath:"c:\Local\Perl\lib\CORE" -machine:x86'
-ldflags_uselargefiles=''
-ldlibpthname=''
-less='less'
-lib_ext='.lib'
-libc='msvcrt.lib'
-libperl='perl58.lib'
-libsdirs=''
-libsfiles=''
-libsfound=''
-libspath=''
-libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
-line='line'
-lint=''
-lkflags=''
-ln=''
-lns='copy'
-localtime_r_proto='0'
-locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
-loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
-longdblsize='10'
-longlongsize='8'
-longsize='4'
-lp=''
-lpr=''
-ls='dir'
-lseeksize='4'
-lseektype='off_t'
-mail=''
-mailx=''
-make='nmake'
-make_set_make='#'
-mallocobj='malloc.o'
-mallocsrc='malloc.c'
-malloctype='void *'
-man1dir='c:\Local\Perl\man\man1'
-man1direxp='c:\Local\Perl\man\man1'
-man1ext='1'
-man3dir='c:\Local\Perl\man\man3'
-man3direxp='c:\Local\Perl\man\man3'
-man3ext='3'
-mips_type=''
-mkdir='mkdir'
-mmaptype='void *'
-modetype='mode_t'
-more='more /e'
-multiarch='undef'
-mv=''
-myarchname='MSWin32'
-mydomain=''
-myhostname=''
-myuname=''
-n='-n'
-need_va_copy='undef'
-netdb_hlen_type='int'
-netdb_host_type='char *'
-netdb_name_type='char *'
-netdb_net_type='long'
-nm=''
-nm_opt=''
-nm_so_opt=''
-nonxs_ext='Encode/TW Encode/Byte Errno Encode/KR Encode/EBCDIC Encode/JP Encode/Symbol Encode/CN'
-nroff=''
-nvEUformat='"E"'
-nvFUformat='"F"'
-nvGUformat='"G"'
-nv_preserves_uv_bits='32'
-nveformat='"e"'
-nvfformat='"f"'
-nvgformat='"g"'
-nvsize='8'
-nvtype='double'
-o_nonblock='O_NONBLOCK'
-obj_ext='.obj'
-old_pthread_create_joinable=''
-optimize='-MD -DNDEBUG -O2xtb2 -G6 -GL'
-orderlib='false'
-otherlibdirs=''
-package='perl5'
-pager='more /e'
-passcat=''
-patchlevel=''
-path_sep=';'
-perl5=''
-perl='perl'
-perladmin=''
-perllibs=' oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib'
-perlpath='c:\Local\Perl\bin\perl.exe'
-pg=''
-phostname='hostname'
-pidtype='int'
-plibpth=''
-pm_apiversion='5.005'
-pmake=''
-pr=''
-prefixexp='c:'
-privlib='c:\Local\Perl\lib'
-procselfexe=''
-prototype='define'
-ptrsize='4'
-quadkind='5'
-quadtype='__int64'
-randbits='15'
-randfunc='rand'
-random_r_proto='0'
-randseedtype='unsigned'
-ranlib='rem'
-rd_nodata='-1'
-readdir64_r_proto='0'
-readdir_r_proto='0'
-revision='5'
-rm='del'
-rmail=''
-runnm='true'
-sPRIEUldbl='"E"'
-sPRIFUldbl='"F"'
-sPRIGUldbl='"G"'
-sPRIXU64='"lX"'
-sPRId64='"ld"'
-sPRIeldbl='"e"'
-sPRIfldbl='"f"'
-sPRIgldbl='"g"'
-sPRIi64='"li"'
-sPRIo64='"lo"'
-sPRIu64='"lu"'
-sPRIx64='"lx"'
-sSCNfldbl='"f"'
-sched_yield=''
-scriptdir='c:\Local\Perl\bin'
-scriptdirexp='c:\Local\Perl\bin'
-sed='sed'
-seedfunc='srand'
-selectminbits='32'
-selecttype='Perl_fd_set *'
-sendmail='blat'
-setgrent_r_proto='0'
-sethostent_r_proto='0'
-setlocale_r_proto='0'
-setnetent_r_proto='0'
-setprotoent_r_proto='0'
-setpwent_r_proto='0'
-setservent_r_proto='0'
-sh='cmd /x /c'
-shar=''
-shmattype='void *'
-shortsize='2'
-shrpenv=''
-sig_count='26'
-sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
-sig_num_init='0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0'
-sig_size='27'
-signal_t='void'
-sitearch='c:\Local\Perl\site\lib'
-sitearchexp='c:\Local\Perl\site\lib'
-sitebin='c:\Local\Perl\site\bin'
-sitebinexp='c:\Local\Perl\site\bin'
-sitelib='c:\Local\Perl\site\lib'
-sitelib_stem=''
-sitelibexp='c:\Local\Perl\site\lib'
-siteprefix='c:\Local\Perl\site'
-siteprefixexp='c:\Local\Perl\site'
-sizesize='4'
-sizetype='size_t'
-sleep=''
-smail=''
-sockethdr=''
-socketlib=''
-socksizetype='int'
-sort='sort'
-spackage='Perl5'
-spitshell=''
-srand48_r_proto='0'
-srandom_r_proto='0'
-src=''
-ssizetype='int'
-startperl='#!perl'
-stdchar='char'
-stdio_base='((fp)->_base)'
-stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)'
-stdio_cnt='((fp)->_cnt)'
-stdio_filbuf=''
-stdio_ptr='((fp)->_ptr)'
-stdio_stream_array=''
-strerror_r_proto='0'
-strings='/usr/include/string.h'
-submit=''
-subversion=''
-sysman='/usr/man/man1'
-tail=''
-tar=''
-targetarch=''
-tbl=''
-tee=''
-test=''
-timeincl='/usr/include/sys/time.h '
-timetype='time_t'
-tmpnam_r_proto='0'
-touch='touch'
-tr=''
-trnl='\012'
-troff=''
-ttyname_r_proto='0'
-u16size='2'
-u16type='unsigned short'
-u32size='4'
-u32type='unsigned long'
-u64size='8'
-u64type='unsigned __int64'
-u8size='1'
-u8type='unsigned char'
-uidformat='"ld"'
-uidsign='-1'
-uidsize='4'
-uidtype='uid_t'
-uname='uname'
-uniq='uniq'
-uquadtype='unsigned __int64'
-use5005threads='undef'
-use64bitall='undef'
-use64bitint='undef'
-usecrosscompile='undef'
-usedl='define'
-useithreads='define'
-uselargefiles='undef'
-uselongdouble='undef'
-usemorebits='undef'
-usemultiplicity='define'
-usemymalloc='n'
-usenm='false'
-useopcode='true'
-useperlio='define'
-useposix='true'
-usereentrant='undef'
-usesfio='false'
-useshrplib='yes'
-usesocks='undef'
-usethreads='undef'
-usevendorprefix='undef'
-usevfork='false'
-usrinc='/usr/include'
-uuname=''
-uvXUformat='"lX"'
-uvoformat='"lo"'
-uvsize='4'
-uvtype='unsigned long'
-uvuformat='"lu"'
-uvxformat='"lx"'
-vendorarch=''
-vendorarchexp=''
-vendorbin=''
-vendorbinexp=''
-vendorlib=''
-vendorlib_stem=''
-vendorlibexp=''
-vendorprefix=''
-vendorprefixexp=''
-version='5.8.0'
-version_patchlevel_string='version 8 subversion 0'
-versiononly='undef'
-vi=''
-voidflags='15'
-xlibpth='/usr/lib/386 /lib/386'
-xs_apiversion='5.6.0'
-zcat=''
-zip='zip'
-!END!
-
-my $summary = <<'!END!';
-Summary of my $package (revision $baserev $version_patchlevel_string) configuration:
- Platform:
- osname=$osname, osvers=$osvers, archname=$archname
- uname='$myuname'
- config_args='$config_args'
- hint=$hint, useposix=$useposix, d_sigaction=$d_sigaction
- usethreads=$usethreads use5005threads=$use5005threads useithreads=$useithreads usemultiplicity=$usemultiplicity
- useperlio=$useperlio d_sfio=$d_sfio uselargefiles=$uselargefiles usesocks=$usesocks
- use64bitint=$use64bitint use64bitall=$use64bitall uselongdouble=$uselongdouble
- usemymalloc=$usemymalloc, bincompat5005=undef
- Compiler:
- cc='$cc', ccflags ='$ccflags',
- optimize='$optimize',
- cppflags='$cppflags'
- ccversion='$ccversion', gccversion='$gccversion', gccosandvers='$gccosandvers'
- intsize=$intsize, longsize=$longsize, ptrsize=$ptrsize, doublesize=$doublesize, byteorder=$byteorder
- d_longlong=$d_longlong, longlongsize=$longlongsize, d_longdbl=$d_longdbl, longdblsize=$longdblsize
- ivtype='$ivtype', ivsize=$ivsize, nvtype='$nvtype', nvsize=$nvsize, Off_t='$lseektype', lseeksize=$lseeksize
- alignbytes=$alignbytes, prototype=$prototype
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
- libs=$libs
- perllibs=$perllibs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- gnulibc_version='$gnulibc_version'
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
- cccdlflags='$cccdlflags', lddlflags='$lddlflags'
-
-!END!
-my $summary_expanded = 0;
-
-sub myconfig {
- return $summary if $summary_expanded;
- $summary =~ s{\$(\w+)}
- { my $c = $Config{$1}; defined($c) ? $c : 'undef' }ge;
- $summary_expanded = 1;
- $summary;
-}
-
-sub FETCH {
- # check for cached value (which may be undef so we use exists not defined)
- return $_[0]->{$_[1]} if (exists $_[0]->{$_[1]});
-
- # Search for it in the big string
- my($value, $start, $marker, $quote_type);
-
- $quote_type = "'";
- # Virtual entries.
- if ($_[1] eq 'byteorder') {
- # byteorder does exist on its own but we overlay a virtual
- # dynamically recomputed value.
- my $t = $Config{ivtype};
- my $s = $Config{ivsize};
- my $f = $t eq 'long' ? 'L!' : $s == 8 ? 'Q': 'I';
- if ($s == 4 || $s == 8) {
- my $i = 0;
- foreach my $c (reverse(2..$s)) { $i |= ord($c); $i <<= 8 }
- $i |= ord(1);
- $value = join('', unpack('a'x$s, pack($f, $i)));
- } else {
- $value = '?'x$s;
- }
- } elsif ($_[1] =~ /^((?:cc|ld)flags|libs(?:wanted)?)_nolargefiles/) {
- # These are purely virtual, they do not exist, but need to
- # be computed on demand for largefile-incapable extensions.
- my $key = "${1}_uselargefiles";
- $value = $Config{$1};
- my $withlargefiles = $Config{$key};
- if ($key =~ /^(?:cc|ld)flags_/) {
- $value =~ s/\Q$withlargefiles\E\b//;
- } elsif ($key =~ /^libs/) {
- my @lflibswanted = split(' ', $Config{libswanted_uselargefiles});
- if (@lflibswanted) {
- my %lflibswanted;
- @lflibswanted{@lflibswanted} = ();
- if ($key =~ /^libs_/) {
- my @libs = grep { /^-l(.+)/ &&
- not exists $lflibswanted{$1} }
- split(' ', $Config{libs});
- $Config{libs} = join(' ', @libs);
- } elsif ($key =~ /^libswanted_/) {
- my @libswanted = grep { not exists $lflibswanted{$_} }
- split(' ', $Config{libswanted});
- $Config{libswanted} = join(' ', @libswanted);
- }
- }
- }
- } else {
- $marker = "$_[1]=";
- # return undef unless (($value) = $config_sh =~ m/^$_[1]='(.*)'\s*$/m);
- # Check for the common case, ' delimeted
- $start = index($config_sh, "\n$marker$quote_type");
- # If that failed, check for " delimited
- if ($start == -1) {
- $quote_type = '"';
- $start = index($config_sh, "\n$marker$quote_type");
- }
- return undef if ( ($start == -1) && # in case it's first
- (substr($config_sh, 0, length($marker)) ne $marker) );
- if ($start == -1) {
- # It's the very first thing we found. Skip $start forward
- # and figure out the quote mark after the =.
- $start = length($marker) + 1;
- $quote_type = substr($config_sh, $start - 1, 1);
- }
- else {
- $start += length($marker) + 2;
- }
- $value = substr($config_sh, $start,
- index($config_sh, "$quote_type\n", $start) - $start);
- }
- # If we had a double-quote, we'd better eval it so escape
- # sequences and such can be interpolated. Since the incoming
- # value is supposed to follow shell rules and not perl rules,
- # we escape any perl variable markers
- if ($quote_type eq '"') {
- $value =~ s/\$/\\\$/g;
- $value =~ s/\@/\\\@/g;
- eval "\$value = \"$value\"";
- }
- #$value = sprintf($value) if $quote_type eq '"';
- # So we can say "if $Config{'foo'}".
- $value = undef if $value eq 'undef';
- $_[0]->{$_[1]} = $value; # cache it
- return $value;
-}
-
-my $prevpos = 0;
-
-sub FIRSTKEY {
- $prevpos = 0;
- # my($key) = $config_sh =~ m/^(.*?)=/;
- substr($config_sh, 0, index($config_sh, '=') );
- # $key;
-}
-
-sub NEXTKEY {
- # Find out how the current key's quoted so we can skip to its end.
- my $quote = substr($config_sh, index($config_sh, "=", $prevpos)+1, 1);
- my $pos = index($config_sh, qq($quote\n), $prevpos) + 2;
- my $len = index($config_sh, "=", $pos) - $pos;
- $prevpos = $pos;
- $len > 0 ? substr($config_sh, $pos, $len) : undef;
-}
-
-sub EXISTS {
- # exists($_[0]->{$_[1]}) or $config_sh =~ m/^$_[1]=/m;
- exists($_[0]->{$_[1]}) or
- index($config_sh, "\n$_[1]='") != -1 or
- substr($config_sh, 0, length($_[1])+2) eq "$_[1]='" or
- index($config_sh, "\n$_[1]=\"") != -1 or
- substr($config_sh, 0, length($_[1])+2) eq "$_[1]=\"" or
- $_[1] =~ /^(?:(?:cc|ld)flags|libs(?:wanted)?)_nolargefiles$/;
-}
-
-sub STORE { die "\%Config::Config is read-only\n" }
-sub DELETE { &STORE }
-sub CLEAR { &STORE }
-
-
-sub config_sh {
- $config_sh
-}
-
-sub config_re {
- my $re = shift;
- my @matches = grep /^$re=/, split /^/, $config_sh;
- @matches ? (print @matches) : print "$re: not found\n";
-}
-
-sub config_vars {
- foreach(@_){
- config_re($_), next if /\W/;
- my $v=(exists $Config{$_}) ? $Config{$_} : 'UNKNOWN';
- $v='undef' unless defined $v;
- print "$_='$v';\n";
- }
-}
-
-sub TIEHASH { bless {} }
-
-# avoid Config..Exporter..UNIVERSAL search for DESTROY then AUTOLOAD
-sub DESTROY { }
-
-tie %Config, 'Config';
-
-1;
-__END__
-
-=head1 NAME
-
-Config - access Perl configuration information
-
-=head1 SYNOPSIS
-
- use Config;
- if ($Config{'cc'} =~ /gcc/) {
- print "built by gcc\n";
- }
-
- use Config qw(myconfig config_sh config_vars);
-
- print myconfig();
-
- print config_sh();
-
- config_vars(qw(osname archname));
-
-
-=head1 DESCRIPTION
-
-The Config module contains all the information that was available to
-the C<Configure> program at Perl build time (over 900 values).
-
-Shell variables from the F<config.sh> file (written by Configure) are
-stored in the readonly-variable C<%Config>, indexed by their names.
-
-Values stored in config.sh as 'undef' are returned as undefined
-values. The perl C<exists> function can be used to check if a
-named variable exists.
-
-=over 4
-
-=item myconfig()
-
-Returns a textual summary of the major perl configuration values.
-See also C<-V> in L<perlrun/Switches>.
-
-=item config_sh()
-
-Returns the entire perl configuration information in the form of the
-original config.sh shell variable assignment script.
-
-=item config_vars(@names)
-
-Prints to STDOUT the values of the named configuration variable. Each is
-printed on a separate line in the form:
-
- name='value';
-
-Names which are unknown are output as C<name='UNKNOWN';>.
-See also C<-V:name> in L<perlrun/Switches>.
-
-=back
-
-=head1 EXAMPLE
-
-Here's a more sophisticated example of using %Config:
-
- use Config;
- use strict;
-
- my %sig_num;
- my @sig_name;
- unless($Config{sig_name} && $Config{sig_num}) {
- die "No sigs?";
- } else {
- my @names = split ' ', $Config{sig_name};
- @sig_num{@names} = split ' ', $Config{sig_num};
- foreach (@names) {
- $sig_name[$sig_num{$_}] ||= $_;
- }
- }
-
- print "signal #17 = $sig_name[17]\n";
- if ($sig_num{ALRM}) {
- print "SIGALRM is $sig_num{ALRM}\n";
- }
-
-=head1 WARNING
-
-Because this information is not stored within the perl executable
-itself it is possible (but unlikely) that the information does not
-relate to the actual perl binary which is being used to access it.
-
-The Config module is installed into the architecture and version
-specific library directory ($Config{installarchlib}) and it checks the
-perl version number when loaded.
-
-The values stored in config.sh may be either single-quoted or
-double-quoted. Double-quoted strings are handy for those cases where you
-need to include escape sequences in the strings. To avoid runtime variable
-interpolation, any C<$> and C<@> characters are replaced by C<\$> and
-C<\@>, respectively. This isn't foolproof, of course, so don't embed C<\$>
-or C<\@> in double-quoted strings unless you're willing to deal with the
-consequences. (The slashes will end up escaped and the C<$> or C<@> will
-trigger variable interpolation)
-
-=head1 GLOSSARY
-
-Most C<Config> variables are determined by the C<Configure> script
-on platforms supported by it (which is most UNIX platforms). Some
-platforms have custom-made C<Config> variables, and may thus not have
-some of the variables described below, or may have extraneous variables
-specific to that particular port. See the port specific documentation
-in such cases.
-
-=head2 _
-
-=over 4
-
-=item C<_a>
-
-From F<Unix.U>:
-
-This variable defines the extension used for ordinary library files.
-For unix, it is F<.a>. The F<.> is included. Other possible
-values include F<.lib>.
-
-=item C<_exe>
-
-From F<Unix.U>:
-
-This variable defines the extension used for executable files.
-C<DJGPP>, Cygwin and F<OS/2> use F<.exe>. Stratus C<VOS> uses F<.pm>.
-On operating systems which do not require a specific extension
-for executable files, this variable is empty.
-
-=item C<_o>
-
-From F<Unix.U>:
-
-This variable defines the extension used for object files.
-For unix, it is F<.o>. The F<.> is included. Other possible
-values include F<.obj>.
-
-=back
-
-=head2 a
-
-=over 4
-
-=item C<afs>
-
-From F<afs.U>:
-
-This variable is set to C<true> if C<AFS> (Andrew File System) is used
-on the system, C<false> otherwise. It is possible to override this
-with a hint value or command line option, but you'd better know
-what you are doing.
-
-=item C<afsroot>
-
-From F<afs.U>:
-
-This variable is by default set to F</afs>. In the unlikely case
-this is not the correct root, it is possible to override this with
-a hint value or command line option. This will be used in subsequent
-tests for AFSness in the Perl configure and test process.
-
-=item C<alignbytes>
-
-From F<alignbytes.U>:
-
-This variable holds the number of bytes required to align a
-double-- or a long double when applicable. Usual values are
-2, 4 and 8. The default is eight, for safety.
-
-=item C<ansi2knr>
-
-From F<ansi2knr.U>:
-
-This variable is set if the user needs to run ansi2knr.
-Currently, this is not supported, so we just abort.
-
-=item C<aphostname>
-
-From F<d_gethname.U>:
-
-This variable contains the command which can be used to compute the
-host name. The command is fully qualified by its absolute path, to make
-it safe when used by a process with super-user privileges.
-
-=item C<api_revision>
-
-From F<patchlevel.U>:
-
-The three variables, api_revision, api_version, and
-api_subversion, specify the version of the oldest perl binary
-compatible with the present perl. In a full version string
-such as F<5.6.1>, api_revision is the C<5>.
-Prior to 5.5.640, the format was a floating point number,
-like 5.00563.
-
-F<perl.c>:incpush() and F<lib/lib.pm> will automatically search in
-F<$sitelib/.>. for older directories back to the limit specified
-by these api_ variables. This is only useful if you have a
-perl library directory tree structured like the default one.
-See C<INSTALL> for how this works. The versioned site_perl
-directory was introduced in 5.005, so that is the lowest
-possible value. The version list appropriate for the current
-system is determined in F<inc_version_list.U>.
-
-C<XXX> To do: Since compatibility can depend on compile time
-options (such as bincompat, longlong, etc.) it should
-(perhaps) be set by Configure, but currently it isn't.
-Currently, we read a hard-wired value from F<patchlevel.h>.
-Perhaps what we ought to do is take the hard-wired value from
-F<patchlevel.h> but then modify it if the current Configure
-options warrant. F<patchlevel.h> then would use an #ifdef guard.
-
-=item C<api_subversion>
-
-From F<patchlevel.U>:
-
-The three variables, api_revision, api_version, and
-api_subversion, specify the version of the oldest perl binary
-compatible with the present perl. In a full version string
-such as F<5.6.1>, api_subversion is the C<1>. See api_revision for
-full details.
-
-=item C<api_version>
-
-From F<patchlevel.U>:
-
-The three variables, api_revision, api_version, and
-api_subversion, specify the version of the oldest perl binary
-compatible with the present perl. In a full version string
-such as F<5.6.1>, api_version is the C<6>. See api_revision for
-full details. As a special case, 5.5.0 is rendered in the
-old-style as 5.005. (In the 5.005_0x maintenance series,
-this was the only versioned directory in $sitelib.)
-
-=item C<api_versionstring>
-
-From F<patchlevel.U>:
-
-This variable combines api_revision, api_version, and
-api_subversion in a format such as 5.6.1 (or 5_6_1) suitable
-for use as a directory name. This is filesystem dependent.
-
-=item C<ar>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the ar program. After Configure runs,
-the value is reset to a plain C<ar> and is not useful.
-
-=item C<archlib>
-
-From F<archlib.U>:
-
-This variable holds the name of the directory in which the user wants
-to put architecture-dependent public library files for $package.
-It is most often a local directory such as F</usr/local/lib>.
-Programs using this variable must be prepared to deal
-with filename expansion.
-
-=item C<archlibexp>
-
-From F<archlib.U>:
-
-This variable is the same as the archlib variable, but is
-filename expanded at configuration time, for convenient use.
-
-=item C<archname64>
-
-From F<use64bits.U>:
-
-This variable is used for the 64-bitness part of $archname.
-
-=item C<archname>
-
-From F<archname.U>:
-
-This variable is a short name to characterize the current
-architecture. It is used mainly to construct the default archlib.
-
-=item C<archobjs>
-
-From F<Unix.U>:
-
-This variable defines any additional objects that must be linked
-in with the program on this architecture. On unix, it is usually
-empty. It is typically used to include emulations of unix calls
-or other facilities. For perl on F<OS/2>, for example, this would
-include F<os2/os2.obj>.
-
-=item C<asctime_r_proto>
-
-From F<d_asctime_r.U>:
-
-This variable encodes the prototype of asctime_r.
-It is zero if d_asctime_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_asctime_r
-is defined.
-
-=item C<awk>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the awk program. After Configure runs,
-the value is reset to a plain C<awk> and is not useful.
-
-=back
-
-=head2 b
-
-=over 4
-
-=item C<baserev>
-
-From F<baserev.U>:
-
-The base revision level of this package, from the F<.package> file.
-
-=item C<bash>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<bin>
-
-From F<bin.U>:
-
-This variable holds the name of the directory in which the user wants
-to put publicly executable images for the package in question. It
-is most often a local directory such as F</usr/local/bin>. Programs using
-this variable must be prepared to deal with F<~name> substitution.
-
-=item C<binexp>
-
-From F<bin.U>:
-
-This is the same as the bin variable, but is filename expanded at
-configuration time, for use in your makefiles.
-
-=item C<bison>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the bison program. After Configure runs,
-the value is reset to a plain C<bison> and is not useful.
-
-=item C<byacc>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the byacc program. After Configure runs,
-the value is reset to a plain C<byacc> and is not useful.
-
-=item C<byteorder>
-
-From F<byteorder.U>:
-
-This variable holds the byte order in a C<UV>. In the following,
-larger digits indicate more significance. The variable byteorder
-is either 4321 on a big-endian machine, or 1234 on a little-endian,
-or 87654321 on a Cray ... or 3412 with weird order !
-
-=back
-
-=head2 c
-
-=over 4
-
-=item C<c>
-
-From F<n.U>:
-
-This variable contains the \c string if that is what causes the echo
-command to suppress newline. Otherwise it is null. Correct usage is
-$echo $n "prompt for a question: $c".
-
-=item C<castflags>
-
-From F<d_castneg.U>:
-
-This variable contains a flag that precise difficulties the
-compiler has casting odd floating values to unsigned long:
-0 = ok
-1 = couldn't cast < 0
-2 = couldn't cast >= 0x80000000
-4 = couldn't cast in argument expression list
-
-=item C<cat>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the cat program. After Configure runs,
-the value is reset to a plain C<cat> and is not useful.
-
-=item C<cc>
-
-From F<cc.U>:
-
-This variable holds the name of a command to execute a C compiler which
-can resolve multiple global references that happen to have the same
-name. Usual values are C<cc> and C<gcc>.
-Fervent C<ANSI> compilers may be called C<c89>. C<AIX> has xlc.
-
-=item C<cccdlflags>
-
-From F<dlsrc.U>:
-
-This variable contains any special flags that might need to be
-passed with C<cc -c> to compile modules to be used to create a shared
-library that will be used for dynamic loading. For hpux, this
-should be +z. It is up to the makefile to use it.
-
-=item C<ccdlflags>
-
-From F<dlsrc.U>:
-
-This variable contains any special flags that might need to be
-passed to cc to link with a shared library for dynamic loading.
-It is up to the makefile to use it. For sunos 4.1, it should
-be empty.
-
-=item C<ccflags>
-
-From F<ccflags.U>:
-
-This variable contains any additional C compiler flags desired by
-the user. It is up to the Makefile to use this.
-
-=item C<ccflags_uselargefiles>
-
-From F<uselfs.U>:
-
-This variable contains the compiler flags needed by large file builds
-and added to ccflags by hints files.
-
-=item C<ccname>
-
-From F<Checkcc.U>:
-
-This can set either by hints files or by Configure. If using
-gcc, this is gcc, and if not, usually equal to cc, unimpressive, no?
-Some platforms, however, make good use of this by storing the
-flavor of the C compiler being used here. For example if using
-the Sun WorkShop suite, ccname will be C<workshop>.
-
-=item C<ccsymbols>
-
-From F<Cppsym.U>:
-
-The variable contains the symbols defined by the C compiler alone.
-The symbols defined by cpp or by cc when it calls cpp are not in
-this list, see cppsymbols and cppccsymbols.
-The list is a space-separated list of symbol=value tokens.
-
-=item C<ccversion>
-
-From F<Checkcc.U>:
-
-This can set either by hints files or by Configure. If using
-a (non-gcc) vendor cc, this variable may contain a version for
-the compiler.
-
-=item C<cf_by>
-
-From F<cf_who.U>:
-
-Login name of the person who ran the Configure script and answered the
-questions. This is used to tag both F<config.sh> and F<config_h.SH>.
-
-=item C<cf_email>
-
-From F<cf_email.U>:
-
-Electronic mail address of the person who ran Configure. This can be
-used by units that require the user's e-mail, like F<MailList.U>.
-
-=item C<cf_time>
-
-From F<cf_who.U>:
-
-Holds the output of the C<date> command when the configuration file was
-produced. This is used to tag both F<config.sh> and F<config_h.SH>.
-
-=item C<charsize>
-
-From F<charsize.U>:
-
-This variable contains the value of the C<CHARSIZE> symbol, which
-indicates to the C program how many bytes there are in a character.
-
-=item C<chgrp>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<chmod>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the chmod program. After Configure runs,
-the value is reset to a plain C<chmod> and is not useful.
-
-=item C<chown>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<clocktype>
-
-From F<d_times.U>:
-
-This variable holds the type returned by times(). It can be long,
-or clock_t on C<BSD> sites (in which case <sys/types.h> should be
-included).
-
-=item C<comm>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the comm program. After Configure runs,
-the value is reset to a plain C<comm> and is not useful.
-
-=item C<compress>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<contains>
-
-From F<contains.U>:
-
-This variable holds the command to do a grep with a proper return
-status. On most sane systems it is simply C<grep>. On insane systems
-it is a grep followed by a cat followed by a test. This variable
-is primarily for the use of other Configure units.
-
-=item C<cp>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the cp program. After Configure runs,
-the value is reset to a plain C<cp> and is not useful.
-
-=item C<cpio>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<cpp>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the cpp program. After Configure runs,
-the value is reset to a plain C<cpp> and is not useful.
-
-=item C<cpp_stuff>
-
-From F<cpp_stuff.U>:
-
-This variable contains an identification of the catenation mechanism
-used by the C preprocessor.
-
-=item C<cppccsymbols>
-
-From F<Cppsym.U>:
-
-The variable contains the symbols defined by the C compiler
-when it calls cpp. The symbols defined by the cc alone or cpp
-alone are not in this list, see ccsymbols and cppsymbols.
-The list is a space-separated list of symbol=value tokens.
-
-=item C<cppflags>
-
-From F<ccflags.U>:
-
-This variable holds the flags that will be passed to the C pre-
-processor. It is up to the Makefile to use it.
-
-=item C<cpplast>
-
-From F<cppstdin.U>:
-
-This variable has the same functionality as cppminus, only it applies
-to cpprun and not cppstdin.
-
-=item C<cppminus>
-
-From F<cppstdin.U>:
-
-This variable contains the second part of the string which will invoke
-the C preprocessor on the standard input and produce to standard
-output. This variable will have the value C<-> if cppstdin needs
-a minus to specify standard input, otherwise the value is "".
-
-=item C<cpprun>
-
-From F<cppstdin.U>:
-
-This variable contains the command which will invoke a C preprocessor
-on standard input and put the output to stdout. It is guaranteed not
-to be a wrapper and may be a null string if no preprocessor can be
-made directly available. This preprocessor might be different from the
-one used by the C compiler. Don't forget to append cpplast after the
-preprocessor options.
-
-=item C<cppstdin>
-
-From F<cppstdin.U>:
-
-This variable contains the command which will invoke the C
-preprocessor on standard input and put the output to stdout.
-It is primarily used by other Configure units that ask about
-preprocessor symbols.
-
-=item C<cppsymbols>
-
-From F<Cppsym.U>:
-
-The variable contains the symbols defined by the C preprocessor
-alone. The symbols defined by cc or by cc when it calls cpp are
-not in this list, see ccsymbols and cppccsymbols.
-The list is a space-separated list of symbol=value tokens.
-
-=item C<crypt_r_proto>
-
-From F<d_crypt_r.U>:
-
-This variable encodes the prototype of crypt_r.
-It is zero if d_crypt_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_crypt_r
-is defined.
-
-=item C<cryptlib>
-
-From F<d_crypt.U>:
-
-This variable holds -lcrypt or the path to a F<libcrypt.a> archive if
-the crypt() function is not defined in the standard C library. It is
-up to the Makefile to use this.
-
-=item C<csh>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the csh program. After Configure runs,
-the value is reset to a plain C<csh> and is not useful.
-
-=item C<ctermid_r_proto>
-
-From F<d_ctermid_r.U>:
-
-This variable encodes the prototype of ctermid_r.
-It is zero if d_ctermid_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_ctermid_r
-is defined.
-
-=item C<ctime_r_proto>
-
-From F<d_ctime_r.U>:
-
-This variable encodes the prototype of ctime_r.
-It is zero if d_ctime_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_ctime_r
-is defined.
-
-=back
-
-=head2 d
-
-=over 4
-
-=item C<d__fwalk>
-
-From F<d__fwalk.U>:
-
-This variable conditionally defines C<HAS__FWALK> if _fwalk() is
-available to apply a function to all the file handles.
-
-=item C<d_access>
-
-From F<d_access.U>:
-
-This variable conditionally defines C<HAS_ACCESS> if the access() system
-call is available to check for access permissions using real IDs.
-
-=item C<d_accessx>
-
-From F<d_accessx.U>:
-
-This variable conditionally defines the C<HAS_ACCESSX> symbol, which
-indicates to the C program that the accessx() routine is available.
-
-=item C<d_alarm>
-
-From F<d_alarm.U>:
-
-This variable conditionally defines the C<HAS_ALARM> symbol, which
-indicates to the C program that the alarm() routine is available.
-
-=item C<d_archlib>
-
-From F<archlib.U>:
-
-This variable conditionally defines C<ARCHLIB> to hold the pathname
-of architecture-dependent library files for $package. If
-$archlib is the same as $privlib, then this is set to undef.
-
-=item C<d_asctime_r>
-
-From F<d_asctime_r.U>:
-
-This variable conditionally defines the C<HAS_ASCTIME_R> symbol,
-which indicates to the C program that the asctime_r()
-routine is available.
-
-=item C<d_atolf>
-
-From F<atolf.U>:
-
-This variable conditionally defines the C<HAS_ATOLF> symbol, which
-indicates to the C program that the atolf() routine is available.
-
-=item C<d_atoll>
-
-From F<atoll.U>:
-
-This variable conditionally defines the C<HAS_ATOLL> symbol, which
-indicates to the C program that the atoll() routine is available.
-
-=item C<d_attribut>
-
-From F<d_attribut.U>:
-
-This variable conditionally defines C<HASATTRIBUTE>, which
-indicates the C compiler can check for function attributes,
-such as printf formats.
-
-=item C<d_bcmp>
-
-From F<d_bcmp.U>:
-
-This variable conditionally defines the C<HAS_BCMP> symbol if
-the bcmp() routine is available to compare strings.
-
-=item C<d_bcopy>
-
-From F<d_bcopy.U>:
-
-This variable conditionally defines the C<HAS_BCOPY> symbol if
-the bcopy() routine is available to copy strings.
-
-=item C<d_bsd>
-
-From F<Guess.U>:
-
-This symbol conditionally defines the symbol C<BSD> when running on a
-C<BSD> system.
-
-=item C<d_bsdgetpgrp>
-
-From F<d_getpgrp.U>:
-
-This variable conditionally defines C<USE_BSD_GETPGRP> if
-getpgrp needs one arguments whereas C<USG> one needs none.
-
-=item C<d_bsdsetpgrp>
-
-From F<d_setpgrp.U>:
-
-This variable conditionally defines C<USE_BSD_SETPGRP> if
-setpgrp needs two arguments whereas C<USG> one needs none.
-See also d_setpgid for a C<POSIX> interface.
-
-=item C<d_bzero>
-
-From F<d_bzero.U>:
-
-This variable conditionally defines the C<HAS_BZERO> symbol if
-the bzero() routine is available to set memory to 0.
-
-=item C<d_casti32>
-
-From F<d_casti32.U>:
-
-This variable conditionally defines CASTI32, which indicates
-whether the C compiler can cast large floats to 32-bit ints.
-
-=item C<d_castneg>
-
-From F<d_castneg.U>:
-
-This variable conditionally defines C<CASTNEG>, which indicates
-wether the C compiler can cast negative float to unsigned.
-
-=item C<d_charvspr>
-
-From F<d_vprintf.U>:
-
-This variable conditionally defines C<CHARVSPRINTF> if this system
-has vsprintf returning type (char*). The trend seems to be to
-declare it as "int vsprintf()".
-
-=item C<d_chown>
-
-From F<d_chown.U>:
-
-This variable conditionally defines the C<HAS_CHOWN> symbol, which
-indicates to the C program that the chown() routine is available.
-
-=item C<d_chroot>
-
-From F<d_chroot.U>:
-
-This variable conditionally defines the C<HAS_CHROOT> symbol, which
-indicates to the C program that the chroot() routine is available.
-
-=item C<d_chsize>
-
-From F<d_chsize.U>:
-
-This variable conditionally defines the C<CHSIZE> symbol, which
-indicates to the C program that the chsize() routine is available
-to truncate files. You might need a -lx to get this routine.
-
-=item C<d_class>
-
-From F<d_class.U>:
-
-This variable conditionally defines the C<HAS_CLASS> symbol, which
-indicates to the C program that the class() routine is available.
-
-=item C<d_closedir>
-
-From F<d_closedir.U>:
-
-This variable conditionally defines C<HAS_CLOSEDIR> if closedir() is
-available.
-
-=item C<d_cmsghdr_s>
-
-From F<d_cmsghdr_s.U>:
-
-This variable conditionally defines the C<HAS_STRUCT_CMSGHDR> symbol,
-which indicates that the struct cmsghdr is supported.
-
-=item C<d_const>
-
-From F<d_const.U>:
-
-This variable conditionally defines the C<HASCONST> symbol, which
-indicates to the C program that this C compiler knows about the
-const type.
-
-=item C<d_crypt>
-
-From F<d_crypt.U>:
-
-This variable conditionally defines the C<CRYPT> symbol, which
-indicates to the C program that the crypt() routine is available
-to encrypt passwords and the like.
-
-=item C<d_crypt_r>
-
-From F<d_crypt_r.U>:
-
-This variable conditionally defines the C<HAS_CRYPT_R> symbol,
-which indicates to the C program that the crypt_r()
-routine is available.
-
-=item C<d_csh>
-
-From F<d_csh.U>:
-
-This variable conditionally defines the C<CSH> symbol, which
-indicates to the C program that the C-shell exists.
-
-=item C<d_ctermid_r>
-
-From F<d_ctermid_r.U>:
-
-This variable conditionally defines the C<HAS_CTERMID_R> symbol,
-which indicates to the C program that the ctermid_r()
-routine is available.
-
-=item C<d_ctime_r>
-
-From F<d_ctime_r.U>:
-
-This variable conditionally defines the C<HAS_CTIME_R> symbol,
-which indicates to the C program that the ctime_r()
-routine is available.
-
-=item C<d_cuserid>
-
-From F<d_cuserid.U>:
-
-This variable conditionally defines the C<HAS_CUSERID> symbol, which
-indicates to the C program that the cuserid() routine is available
-to get character login names.
-
-=item C<d_dbl_dig>
-
-From F<d_dbl_dig.U>:
-
-This variable conditionally defines d_dbl_dig if this system's
-header files provide C<DBL_DIG>, which is the number of significant
-digits in a double precision number.
-
-=item C<d_dbminitproto>
-
-From F<d_dbminitproto.U>:
-
-This variable conditionally defines the C<HAS_DBMINIT_PROTO> symbol,
-which indicates to the C program that the system provides
-a prototype for the dbminit() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_difftime>
-
-From F<d_difftime.U>:
-
-This variable conditionally defines the C<HAS_DIFFTIME> symbol, which
-indicates to the C program that the difftime() routine is available.
-
-=item C<d_dirfd>
-
-From F<d_dirfd.U>:
-
-This variable conditionally defines the C<HAS_DIRFD> constant,
-which indicates to the C program that dirfd() is available
-to return the file descriptor of a directory stream.
-
-=item C<d_dirnamlen>
-
-From F<i_dirent.U>:
-
-This variable conditionally defines C<DIRNAMLEN>, which indicates
-to the C program that the length of directory entry names is
-provided by a d_namelen field.
-
-=item C<d_dlerror>
-
-From F<d_dlerror.U>:
-
-This variable conditionally defines the C<HAS_DLERROR> symbol, which
-indicates to the C program that the dlerror() routine is available.
-
-=item C<d_dlopen>
-
-From F<d_dlopen.U>:
-
-This variable conditionally defines the C<HAS_DLOPEN> symbol, which
-indicates to the C program that the dlopen() routine is available.
-
-=item C<d_dlsymun>
-
-From F<d_dlsymun.U>:
-
-This variable conditionally defines C<DLSYM_NEEDS_UNDERSCORE>, which
-indicates that we need to prepend an underscore to the symbol
-name before calling dlsym().
-
-=item C<d_dosuid>
-
-From F<d_dosuid.U>:
-
-This variable conditionally defines the symbol C<DOSUID>, which
-tells the C program that it should insert setuid emulation code
-on hosts which have setuid #! scripts disabled.
-
-=item C<d_drand48_r>
-
-From F<d_drand48_r.U>:
-
-This variable conditionally defines the HAS_DRAND48_R symbol,
-which indicates to the C program that the drand48_r()
-routine is available.
-
-=item C<d_drand48proto>
-
-From F<d_drand48proto.U>:
-
-This variable conditionally defines the HAS_DRAND48_PROTO symbol,
-which indicates to the C program that the system provides
-a prototype for the drand48() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_dup2>
-
-From F<d_dup2.U>:
-
-This variable conditionally defines HAS_DUP2 if dup2() is
-available to duplicate file descriptors.
-
-=item C<d_eaccess>
-
-From F<d_eaccess.U>:
-
-This variable conditionally defines the C<HAS_EACCESS> symbol, which
-indicates to the C program that the eaccess() routine is available.
-
-=item C<d_endgrent>
-
-From F<d_endgrent.U>:
-
-This variable conditionally defines the C<HAS_ENDGRENT> symbol, which
-indicates to the C program that the endgrent() routine is available
-for sequential access of the group database.
-
-=item C<d_endgrent_r>
-
-From F<d_endgrent_r.U>:
-
-This variable conditionally defines the C<HAS_ENDGRENT_R> symbol,
-which indicates to the C program that the endgrent_r()
-routine is available.
-
-=item C<d_endhent>
-
-From F<d_endhent.U>:
-
-This variable conditionally defines C<HAS_ENDHOSTENT> if endhostent() is
-available to close whatever was being used for host queries.
-
-=item C<d_endhostent_r>
-
-From F<d_endhostent_r.U>:
-
-This variable conditionally defines the C<HAS_ENDHOSTENT_R> symbol,
-which indicates to the C program that the endhostent_r()
-routine is available.
-
-=item C<d_endnent>
-
-From F<d_endnent.U>:
-
-This variable conditionally defines C<HAS_ENDNETENT> if endnetent() is
-available to close whatever was being used for network queries.
-
-=item C<d_endnetent_r>
-
-From F<d_endnetent_r.U>:
-
-This variable conditionally defines the C<HAS_ENDNETENT_R> symbol,
-which indicates to the C program that the endnetent_r()
-routine is available.
-
-=item C<d_endpent>
-
-From F<d_endpent.U>:
-
-This variable conditionally defines C<HAS_ENDPROTOENT> if endprotoent() is
-available to close whatever was being used for protocol queries.
-
-=item C<d_endprotoent_r>
-
-From F<d_endprotoent_r.U>:
-
-This variable conditionally defines the C<HAS_ENDPROTOENT_R> symbol,
-which indicates to the C program that the endprotoent_r()
-routine is available.
-
-=item C<d_endpwent>
-
-From F<d_endpwent.U>:
-
-This variable conditionally defines the C<HAS_ENDPWENT> symbol, which
-indicates to the C program that the endpwent() routine is available
-for sequential access of the passwd database.
-
-=item C<d_endpwent_r>
-
-From F<d_endpwent_r.U>:
-
-This variable conditionally defines the C<HAS_ENDPWENT_R> symbol,
-which indicates to the C program that the endpwent_r()
-routine is available.
-
-=item C<d_endsent>
-
-From F<d_endsent.U>:
-
-This variable conditionally defines C<HAS_ENDSERVENT> if endservent() is
-available to close whatever was being used for service queries.
-
-=item C<d_endservent_r>
-
-From F<d_endservent_r.U>:
-
-This variable conditionally defines the C<HAS_ENDSERVENT_R> symbol,
-which indicates to the C program that the endservent_r()
-routine is available.
-
-=item C<d_eofnblk>
-
-From F<nblock_io.U>:
-
-This variable conditionally defines C<EOF_NONBLOCK> if C<EOF> can be seen
-when reading from a non-blocking I/O source.
-
-=item C<d_eunice>
-
-From F<Guess.U>:
-
-This variable conditionally defines the symbols C<EUNICE> and C<VAX>, which
-alerts the C program that it must deal with ideosyncracies of C<VMS>.
-
-=item C<d_fchdir>
-
-From F<d_fchdir.U>:
-
-This variable conditionally defines the C<HAS_FCHDIR> symbol, which
-indicates to the C program that the fchdir() routine is available.
-
-=item C<d_fchmod>
-
-From F<d_fchmod.U>:
-
-This variable conditionally defines the C<HAS_FCHMOD> symbol, which
-indicates to the C program that the fchmod() routine is available
-to change mode of opened files.
-
-=item C<d_fchown>
-
-From F<d_fchown.U>:
-
-This variable conditionally defines the C<HAS_FCHOWN> symbol, which
-indicates to the C program that the fchown() routine is available
-to change ownership of opened files.
-
-=item C<d_fcntl>
-
-From F<d_fcntl.U>:
-
-This variable conditionally defines the C<HAS_FCNTL> symbol, and indicates
-whether the fcntl() function exists
-
-=item C<d_fcntl_can_lock>
-
-From F<d_fcntl_can_lock.U>:
-
-This variable conditionally defines the C<FCNTL_CAN_LOCK> symbol
-and indicates whether file locking with fcntl() works.
-
-=item C<d_fd_macros>
-
-From F<d_fd_set.U>:
-
-This variable contains the eventual value of the C<HAS_FD_MACROS> symbol,
-which indicates if your C compiler knows about the macros which
-manipulate an fd_set.
-
-=item C<d_fd_set>
-
-From F<d_fd_set.U>:
-
-This variable contains the eventual value of the C<HAS_FD_SET> symbol,
-which indicates if your C compiler knows about the fd_set typedef.
-
-=item C<d_fds_bits>
-
-From F<d_fd_set.U>:
-
-This variable contains the eventual value of the C<HAS_FDS_BITS> symbol,
-which indicates if your fd_set typedef contains the fds_bits member.
-If you have an fd_set typedef, but the dweebs who installed it did
-a half-fast job and neglected to provide the macros to manipulate
-an fd_set, C<HAS_FDS_BITS> will let us know how to fix the gaffe.
-
-=item C<d_fgetpos>
-
-From F<d_fgetpos.U>:
-
-This variable conditionally defines C<HAS_FGETPOS> if fgetpos() is
-available to get the file position indicator.
-
-=item C<d_finite>
-
-From F<d_finite.U>:
-
-This variable conditionally defines the C<HAS_FINITE> symbol, which
-indicates to the C program that the finite() routine is available.
-
-=item C<d_finitel>
-
-From F<d_finitel.U>:
-
-This variable conditionally defines the C<HAS_FINITEL> symbol, which
-indicates to the C program that the finitel() routine is available.
-
-=item C<d_flexfnam>
-
-From F<d_flexfnam.U>:
-
-This variable conditionally defines the C<FLEXFILENAMES> symbol, which
-indicates that the system supports filenames longer than 14 characters.
-
-=item C<d_flock>
-
-From F<d_flock.U>:
-
-This variable conditionally defines C<HAS_FLOCK> if flock() is
-available to do file locking.
-
-=item C<d_flockproto>
-
-From F<d_flockproto.U>:
-
-This variable conditionally defines the C<HAS_FLOCK_PROTO> symbol,
-which indicates to the C program that the system provides
-a prototype for the flock() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_fork>
-
-From F<d_fork.U>:
-
-This variable conditionally defines the C<HAS_FORK> symbol, which
-indicates to the C program that the fork() routine is available.
-
-=item C<d_fp_class>
-
-From F<d_fp_class.U>:
-
-This variable conditionally defines the C<HAS_FP_CLASS> symbol, which
-indicates to the C program that the fp_class() routine is available.
-
-=item C<d_fpathconf>
-
-From F<d_pathconf.U>:
-
-This variable conditionally defines the C<HAS_FPATHCONF> symbol, which
-indicates to the C program that the pathconf() routine is available
-to determine file-system related limits and options associated
-with a given open file descriptor.
-
-=item C<d_fpclass>
-
-From F<d_fpclass.U>:
-
-This variable conditionally defines the C<HAS_FPCLASS> symbol, which
-indicates to the C program that the fpclass() routine is available.
-
-=item C<d_fpclassify>
-
-From F<d_fpclassify.U>:
-
-This variable conditionally defines the C<HAS_FPCLASSIFY> symbol, which
-indicates to the C program that the fpclassify() routine is available.
-
-=item C<d_fpclassl>
-
-From F<d_fpclassl.U>:
-
-This variable conditionally defines the C<HAS_FPCLASSL> symbol, which
-indicates to the C program that the fpclassl() routine is available.
-
-=item C<d_fpos64_t>
-
-From F<d_fpos64_t.U>:
-
-This symbol will be defined if the C compiler supports fpos64_t.
-
-=item C<d_frexpl>
-
-From F<d_frexpl.U>:
-
-This variable conditionally defines the C<HAS_FREXPL> symbol, which
-indicates to the C program that the frexpl() routine is available.
-
-=item C<d_fs_data_s>
-
-From F<d_fs_data_s.U>:
-
-This variable conditionally defines the C<HAS_STRUCT_FS_DATA> symbol,
-which indicates that the struct fs_data is supported.
-
-=item C<d_fseeko>
-
-From F<d_fseeko.U>:
-
-This variable conditionally defines the C<HAS_FSEEKO> symbol, which
-indicates to the C program that the fseeko() routine is available.
-
-=item C<d_fsetpos>
-
-From F<d_fsetpos.U>:
-
-This variable conditionally defines C<HAS_FSETPOS> if fsetpos() is
-available to set the file position indicator.
-
-=item C<d_fstatfs>
-
-From F<d_fstatfs.U>:
-
-This variable conditionally defines the C<HAS_FSTATFS> symbol, which
-indicates to the C program that the fstatfs() routine is available.
-
-=item C<d_fstatvfs>
-
-From F<d_statvfs.U>:
-
-This variable conditionally defines the C<HAS_FSTATVFS> symbol, which
-indicates to the C program that the fstatvfs() routine is available.
-
-=item C<d_fsync>
-
-From F<d_fsync.U>:
-
-This variable conditionally defines the C<HAS_FSYNC> symbol, which
-indicates to the C program that the fsync() routine is available.
-
-=item C<d_ftello>
-
-From F<d_ftello.U>:
-
-This variable conditionally defines the C<HAS_FTELLO> symbol, which
-indicates to the C program that the ftello() routine is available.
-
-=item C<d_ftime>
-
-From F<d_ftime.U>:
-
-This variable conditionally defines the C<HAS_FTIME> symbol, which indicates
-that the ftime() routine exists. The ftime() routine is basically
-a sub-second accuracy clock.
-
-=item C<d_Gconvert>
-
-From F<d_gconvert.U>:
-
-This variable holds what Gconvert is defined as to convert
-floating point numbers into strings. By default, Configure
-sets C<this> macro to use the first of gconvert, gcvt, or sprintf
-that pass sprintf-%g-like behaviour tests. If perl is using
-long doubles, the macro uses the first of the following
-functions that pass Configure's tests: qgcvt, sprintf (if
-Configure knows how to make sprintf format long doubles--see
-sPRIgldbl), gconvert, gcvt, and sprintf (casting to double).
-The gconvert_preference and gconvert_ld_preference variables
-can be used to alter Configure's preferences, for doubles and
-long doubles, respectively. If present, they contain a
-space-separated list of one or more of the above function
-names in the order they should be tried.
-
-d_Gconvert may be set to override Configure with a platform-
-specific function. If this function expects a double, a
-different value may need to be set by the F<uselongdouble.cbu>
-call-back unit so that long doubles can be formatted without
-loss of precision.
-
-=item C<d_getcwd>
-
-From F<d_getcwd.U>:
-
-This variable conditionally defines the C<HAS_GETCWD> symbol, which
-indicates to the C program that the getcwd() routine is available
-to get the current working directory.
-
-=item C<d_getespwnam>
-
-From F<d_getespwnam.U>:
-
-This variable conditionally defines C<HAS_GETESPWNAM> if getespwnam() is
-available to retrieve enchanced (shadow) password entries by name.
-
-=item C<d_getfsstat>
-
-From F<d_getfsstat.U>:
-
-This variable conditionally defines the C<HAS_GETFSSTAT> symbol, which
-indicates to the C program that the getfsstat() routine is available.
-
-=item C<d_getgrent>
-
-From F<d_getgrent.U>:
-
-This variable conditionally defines the C<HAS_GETGRENT> symbol, which
-indicates to the C program that the getgrent() routine is available
-for sequential access of the group database.
-
-=item C<d_getgrent_r>
-
-From F<d_getgrent_r.U>:
-
-This variable conditionally defines the C<HAS_GETGRENT_R> symbol,
-which indicates to the C program that the getgrent_r()
-routine is available.
-
-=item C<d_getgrgid_r>
-
-From F<d_getgrgid_r.U>:
-
-This variable conditionally defines the C<HAS_GETGRGID_R> symbol,
-which indicates to the C program that the getgrgid_r()
-routine is available.
-
-=item C<d_getgrnam_r>
-
-From F<d_getgrnam_r.U>:
-
-This variable conditionally defines the C<HAS_GETGRNAM_R> symbol,
-which indicates to the C program that the getgrnam_r()
-routine is available.
-
-=item C<d_getgrps>
-
-From F<d_getgrps.U>:
-
-This variable conditionally defines the C<HAS_GETGROUPS> symbol, which
-indicates to the C program that the getgroups() routine is available
-to get the list of process groups.
-
-=item C<d_gethbyaddr>
-
-From F<d_gethbyad.U>:
-
-This variable conditionally defines the C<HAS_GETHOSTBYADDR> symbol, which
-indicates to the C program that the gethostbyaddr() routine is available
-to look up hosts by their C<IP> addresses.
-
-=item C<d_gethbyname>
-
-From F<d_gethbynm.U>:
-
-This variable conditionally defines the C<HAS_GETHOSTBYNAME> symbol, which
-indicates to the C program that the gethostbyname() routine is available
-to look up host names in some data base or other.
-
-=item C<d_gethent>
-
-From F<d_gethent.U>:
-
-This variable conditionally defines C<HAS_GETHOSTENT> if gethostent() is
-available to look up host names in some data base or another.
-
-=item C<d_gethname>
-
-From F<d_gethname.U>:
-
-This variable conditionally defines the C<HAS_GETHOSTNAME> symbol, which
-indicates to the C program that the gethostname() routine may be
-used to derive the host name.
-
-=item C<d_gethostbyaddr_r>
-
-From F<d_gethostbyaddr_r.U>:
-
-This variable conditionally defines the C<HAS_GETHOSTBYADDR_R> symbol,
-which indicates to the C program that the gethostbyaddr_r()
-routine is available.
-
-=item C<d_gethostbyname_r>
-
-From F<d_gethostbyname_r.U>:
-
-This variable conditionally defines the C<HAS_GETHOSTBYNAME_R> symbol,
-which indicates to the C program that the gethostbyname_r()
-routine is available.
-
-=item C<d_gethostent_r>
-
-From F<d_gethostent_r.U>:
-
-This variable conditionally defines the C<HAS_GETHOSTENT_R> symbol,
-which indicates to the C program that the gethostent_r()
-routine is available.
-
-=item C<d_gethostprotos>
-
-From F<d_gethostprotos.U>:
-
-This variable conditionally defines the C<HAS_GETHOST_PROTOS> symbol,
-which indicates to the C program that <netdb.h> supplies
-prototypes for the various gethost*() functions.
-See also F<netdbtype.U> for probing for various netdb types.
-
-=item C<d_getitimer>
-
-From F<d_getitimer.U>:
-
-This variable conditionally defines the C<HAS_GETITIMER> symbol, which
-indicates to the C program that the getitimer() routine is available.
-
-=item C<d_getlogin>
-
-From F<d_getlogin.U>:
-
-This variable conditionally defines the C<HAS_GETLOGIN> symbol, which
-indicates to the C program that the getlogin() routine is available
-to get the login name.
-
-=item C<d_getlogin_r>
-
-From F<d_getlogin_r.U>:
-
-This variable conditionally defines the C<HAS_GETLOGIN_R> symbol,
-which indicates to the C program that the getlogin_r()
-routine is available.
-
-=item C<d_getmnt>
-
-From F<d_getmnt.U>:
-
-This variable conditionally defines the C<HAS_GETMNT> symbol, which
-indicates to the C program that the getmnt() routine is available
-to retrieve one or more mount info blocks by filename.
-
-=item C<d_getmntent>
-
-From F<d_getmntent.U>:
-
-This variable conditionally defines the C<HAS_GETMNTENT> symbol, which
-indicates to the C program that the getmntent() routine is available
-to iterate through mounted files to get their mount info.
-
-=item C<d_getnbyaddr>
-
-From F<d_getnbyad.U>:
-
-This variable conditionally defines the C<HAS_GETNETBYADDR> symbol, which
-indicates to the C program that the getnetbyaddr() routine is available
-to look up networks by their C<IP> addresses.
-
-=item C<d_getnbyname>
-
-From F<d_getnbynm.U>:
-
-This variable conditionally defines the C<HAS_GETNETBYNAME> symbol, which
-indicates to the C program that the getnetbyname() routine is available
-to look up networks by their names.
-
-=item C<d_getnent>
-
-From F<d_getnent.U>:
-
-This variable conditionally defines C<HAS_GETNETENT> if getnetent() is
-available to look up network names in some data base or another.
-
-=item C<d_getnetbyaddr_r>
-
-From F<d_getnetbyaddr_r.U>:
-
-This variable conditionally defines the C<HAS_GETNETBYADDR_R> symbol,
-which indicates to the C program that the getnetbyaddr_r()
-routine is available.
-
-=item C<d_getnetbyname_r>
-
-From F<d_getnetbyname_r.U>:
-
-This variable conditionally defines the C<HAS_GETNETBYNAME_R> symbol,
-which indicates to the C program that the getnetbyname_r()
-routine is available.
-
-=item C<d_getnetent_r>
-
-From F<d_getnetent_r.U>:
-
-This variable conditionally defines the C<HAS_GETNETENT_R> symbol,
-which indicates to the C program that the getnetent_r()
-routine is available.
-
-=item C<d_getnetprotos>
-
-From F<d_getnetprotos.U>:
-
-This variable conditionally defines the C<HAS_GETNET_PROTOS> symbol,
-which indicates to the C program that <netdb.h> supplies
-prototypes for the various getnet*() functions.
-See also F<netdbtype.U> for probing for various netdb types.
-
-=item C<d_getpagsz>
-
-From F<d_getpagsz.U>:
-
-This variable conditionally defines C<HAS_GETPAGESIZE> if getpagesize()
-is available to get the system page size.
-
-=item C<d_getpbyname>
-
-From F<d_getprotby.U>:
-
-This variable conditionally defines the C<HAS_GETPROTOBYNAME>
-symbol, which indicates to the C program that the
-getprotobyname() routine is available to look up protocols
-by their name.
-
-=item C<d_getpbynumber>
-
-From F<d_getprotby.U>:
-
-This variable conditionally defines the C<HAS_GETPROTOBYNUMBER>
-symbol, which indicates to the C program that the
-getprotobynumber() routine is available to look up protocols
-by their number.
-
-=item C<d_getpent>
-
-From F<d_getpent.U>:
-
-This variable conditionally defines C<HAS_GETPROTOENT> if getprotoent() is
-available to look up protocols in some data base or another.
-
-=item C<d_getpgid>
-
-From F<d_getpgid.U>:
-
-This variable conditionally defines the C<HAS_GETPGID> symbol, which
-indicates to the C program that the getpgid(pid) function
-is available to get the process group id.
-
-=item C<d_getpgrp2>
-
-From F<d_getpgrp2.U>:
-
-This variable conditionally defines the HAS_GETPGRP2 symbol, which
-indicates to the C program that the getpgrp2() (as in F<DG/C<UX>>) routine
-is available to get the current process group.
-
-=item C<d_getpgrp>
-
-From F<d_getpgrp.U>:
-
-This variable conditionally defines C<HAS_GETPGRP> if getpgrp() is
-available to get the current process group.
-
-=item C<d_getppid>
-
-From F<d_getppid.U>:
-
-This variable conditionally defines the C<HAS_GETPPID> symbol, which
-indicates to the C program that the getppid() routine is available
-to get the parent process C<ID>.
-
-=item C<d_getprior>
-
-From F<d_getprior.U>:
-
-This variable conditionally defines C<HAS_GETPRIORITY> if getpriority()
-is available to get a process's priority.
-
-=item C<d_getprotobyname_r>
-
-From F<d_getprotobyname_r.U>:
-
-This variable conditionally defines the C<HAS_GETPROTOBYNAME_R> symbol,
-which indicates to the C program that the getprotobyname_r()
-routine is available.
-
-=item C<d_getprotobynumber_r>
-
-From F<d_getprotobynumber_r.U>:
-
-This variable conditionally defines the C<HAS_GETPROTOBYNUMBER_R> symbol,
-which indicates to the C program that the getprotobynumber_r()
-routine is available.
-
-=item C<d_getprotoent_r>
-
-From F<d_getprotoent_r.U>:
-
-This variable conditionally defines the C<HAS_GETPROTOENT_R> symbol,
-which indicates to the C program that the getprotoent_r()
-routine is available.
-
-=item C<d_getprotoprotos>
-
-From F<d_getprotoprotos.U>:
-
-This variable conditionally defines the C<HAS_GETPROTO_PROTOS> symbol,
-which indicates to the C program that <netdb.h> supplies
-prototypes for the various getproto*() functions.
-See also F<netdbtype.U> for probing for various netdb types.
-
-=item C<d_getprpwnam>
-
-From F<d_getprpwnam.U>:
-
-This variable conditionally defines C<HAS_GETPRPWNAM> if getprpwnam() is
-available to retrieve protected (shadow) password entries by name.
-
-=item C<d_getpwent>
-
-From F<d_getpwent.U>:
-
-This variable conditionally defines the C<HAS_GETPWENT> symbol, which
-indicates to the C program that the getpwent() routine is available
-for sequential access of the passwd database.
-
-=item C<d_getpwent_r>
-
-From F<d_getpwent_r.U>:
-
-This variable conditionally defines the C<HAS_GETPWENT_R> symbol,
-which indicates to the C program that the getpwent_r()
-routine is available.
-
-=item C<d_getpwnam_r>
-
-From F<d_getpwnam_r.U>:
-
-This variable conditionally defines the C<HAS_GETPWNAM_R> symbol,
-which indicates to the C program that the getpwnam_r()
-routine is available.
-
-=item C<d_getpwuid_r>
-
-From F<d_getpwuid_r.U>:
-
-This variable conditionally defines the C<HAS_GETPWUID_R> symbol,
-which indicates to the C program that the getpwuid_r()
-routine is available.
-
-=item C<d_getsbyname>
-
-From F<d_getsrvby.U>:
-
-This variable conditionally defines the C<HAS_GETSERVBYNAME>
-symbol, which indicates to the C program that the
-getservbyname() routine is available to look up services
-by their name.
-
-=item C<d_getsbyport>
-
-From F<d_getsrvby.U>:
-
-This variable conditionally defines the C<HAS_GETSERVBYPORT>
-symbol, which indicates to the C program that the
-getservbyport() routine is available to look up services
-by their port.
-
-=item C<d_getsent>
-
-From F<d_getsent.U>:
-
-This variable conditionally defines C<HAS_GETSERVENT> if getservent() is
-available to look up network services in some data base or another.
-
-=item C<d_getservbyname_r>
-
-From F<d_getservbyname_r.U>:
-
-This variable conditionally defines the C<HAS_GETSERVBYNAME_R> symbol,
-which indicates to the C program that the getservbyname_r()
-routine is available.
-
-=item C<d_getservbyport_r>
-
-From F<d_getservbyport_r.U>:
-
-This variable conditionally defines the C<HAS_GETSERVBYPORT_R> symbol,
-which indicates to the C program that the getservbyport_r()
-routine is available.
-
-=item C<d_getservent_r>
-
-From F<d_getservent_r.U>:
-
-This variable conditionally defines the C<HAS_GETSERVENT_R> symbol,
-which indicates to the C program that the getservent_r()
-routine is available.
-
-=item C<d_getservprotos>
-
-From F<d_getservprotos.U>:
-
-This variable conditionally defines the C<HAS_GETSERV_PROTOS> symbol,
-which indicates to the C program that <netdb.h> supplies
-prototypes for the various getserv*() functions.
-See also F<netdbtype.U> for probing for various netdb types.
-
-=item C<d_getspnam>
-
-From F<d_getspnam.U>:
-
-This variable conditionally defines C<HAS_GETSPNAM> if getspnam() is
-available to retrieve SysV shadow password entries by name.
-
-=item C<d_getspnam_r>
-
-From F<d_getspnam_r.U>:
-
-This variable conditionally defines the C<HAS_GETSPNAM_R> symbol,
-which indicates to the C program that the getspnam_r()
-routine is available.
-
-=item C<d_gettimeod>
-
-From F<d_ftime.U>:
-
-This variable conditionally defines the C<HAS_GETTIMEOFDAY> symbol, which
-indicates that the gettimeofday() system call exists (to obtain a
-sub-second accuracy clock). You should probably include <sys/resource.h>.
-
-=item C<d_gmtime_r>
-
-From F<d_gmtime_r.U>:
-
-This variable conditionally defines the C<HAS_GMTIME_R> symbol,
-which indicates to the C program that the gmtime_r()
-routine is available.
-
-=item C<d_gnulibc>
-
-From F<d_gnulibc.U>:
-
-Defined if we're dealing with the C<GNU> C Library.
-
-=item C<d_grpasswd>
-
-From F<i_grp.U>:
-
-This variable conditionally defines C<GRPASSWD>, which indicates
-that struct group in <grp.h> contains gr_passwd.
-
-=item C<d_hasmntopt>
-
-From F<d_hasmntopt.U>:
-
-This variable conditionally defines the C<HAS_HASMNTOPT> symbol, which
-indicates to the C program that the hasmntopt() routine is available
-to query the mount options of file systems.
-
-=item C<d_htonl>
-
-From F<d_htonl.U>:
-
-This variable conditionally defines C<HAS_HTONL> if htonl() and its
-friends are available to do network order byte swapping.
-
-=item C<d_index>
-
-From F<d_strchr.U>:
-
-This variable conditionally defines C<HAS_INDEX> if index() and
-rindex() are available for string searching.
-
-=item C<d_inetaton>
-
-From F<d_inetaton.U>:
-
-This variable conditionally defines the C<HAS_INET_ATON> symbol, which
-indicates to the C program that the inet_aton() function is available
-to parse C<IP> address C<dotted-quad> strings.
-
-=item C<d_int64_t>
-
-From F<d_int64_t.U>:
-
-This symbol will be defined if the C compiler supports int64_t.
-
-=item C<d_isascii>
-
-From F<d_isascii.U>:
-
-This variable conditionally defines the C<HAS_ISASCII> constant,
-which indicates to the C program that isascii() is available.
-
-=item C<d_isfinite>
-
-From F<d_isfinite.U>:
-
-This variable conditionally defines the C<HAS_ISFINITE> symbol, which
-indicates to the C program that the isfinite() routine is available.
-
-=item C<d_isinf>
-
-From F<d_isinf.U>:
-
-This variable conditionally defines the C<HAS_ISINF> symbol, which
-indicates to the C program that the isinf() routine is available.
-
-=item C<d_isnan>
-
-From F<d_isnan.U>:
-
-This variable conditionally defines the C<HAS_ISNAN> symbol, which
-indicates to the C program that the isnan() routine is available.
-
-=item C<d_isnanl>
-
-From F<d_isnanl.U>:
-
-This variable conditionally defines the C<HAS_ISNANL> symbol, which
-indicates to the C program that the isnanl() routine is available.
-
-=item C<d_killpg>
-
-From F<d_killpg.U>:
-
-This variable conditionally defines the C<HAS_KILLPG> symbol, which
-indicates to the C program that the killpg() routine is available
-to kill process groups.
-
-=item C<d_lchown>
-
-From F<d_lchown.U>:
-
-This variable conditionally defines the C<HAS_LCHOWN> symbol, which
-indicates to the C program that the lchown() routine is available
-to operate on a symbolic link (instead of following the link).
-
-=item C<d_ldbl_dig>
-
-From F<d_ldbl_dig.U>:
-
-This variable conditionally defines d_ldbl_dig if this system's
-header files provide C<LDBL_DIG>, which is the number of significant
-digits in a long double precision number.
-
-=item C<d_link>
-
-From F<d_link.U>:
-
-This variable conditionally defines C<HAS_LINK> if link() is
-available to create hard links.
-
-=item C<d_localtime_r>
-
-From F<d_localtime_r.U>:
-
-This variable conditionally defines the C<HAS_LOCALTIME_R> symbol,
-which indicates to the C program that the localtime_r()
-routine is available.
-
-=item C<d_locconv>
-
-From F<d_locconv.U>:
-
-This variable conditionally defines C<HAS_LOCALECONV> if localeconv() is
-available for numeric and monetary formatting conventions.
-
-=item C<d_lockf>
-
-From F<d_lockf.U>:
-
-This variable conditionally defines C<HAS_LOCKF> if lockf() is
-available to do file locking.
-
-=item C<d_longdbl>
-
-From F<d_longdbl.U>:
-
-This variable conditionally defines C<HAS_LONG_DOUBLE> if
-the long double type is supported.
-
-=item C<d_longlong>
-
-From F<d_longlong.U>:
-
-This variable conditionally defines C<HAS_LONG_LONG> if
-the long long type is supported.
-
-=item C<d_lseekproto>
-
-From F<d_lseekproto.U>:
-
-This variable conditionally defines the C<HAS_LSEEK_PROTO> symbol,
-which indicates to the C program that the system provides
-a prototype for the lseek() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_lstat>
-
-From F<d_lstat.U>:
-
-This variable conditionally defines C<HAS_LSTAT> if lstat() is
-available to do file stats on symbolic links.
-
-=item C<d_madvise>
-
-From F<d_madvise.U>:
-
-This variable conditionally defines C<HAS_MADVISE> if madvise() is
-available to map a file into memory.
-
-=item C<d_mblen>
-
-From F<d_mblen.U>:
-
-This variable conditionally defines the C<HAS_MBLEN> symbol, which
-indicates to the C program that the mblen() routine is available
-to find the number of bytes in a multibye character.
-
-=item C<d_mbstowcs>
-
-From F<d_mbstowcs.U>:
-
-This variable conditionally defines the C<HAS_MBSTOWCS> symbol, which
-indicates to the C program that the mbstowcs() routine is available
-to convert a multibyte string into a wide character string.
-
-=item C<d_mbtowc>
-
-From F<d_mbtowc.U>:
-
-This variable conditionally defines the C<HAS_MBTOWC> symbol, which
-indicates to the C program that the mbtowc() routine is available
-to convert multibyte to a wide character.
-
-=item C<d_memchr>
-
-From F<d_memchr.U>:
-
-This variable conditionally defines the C<HAS_MEMCHR> symbol, which
-indicates to the C program that the memchr() routine is available
-to locate characters within a C string.
-
-=item C<d_memcmp>
-
-From F<d_memcmp.U>:
-
-This variable conditionally defines the C<HAS_MEMCMP> symbol, which
-indicates to the C program that the memcmp() routine is available
-to compare blocks of memory.
-
-=item C<d_memcpy>
-
-From F<d_memcpy.U>:
-
-This variable conditionally defines the C<HAS_MEMCPY> symbol, which
-indicates to the C program that the memcpy() routine is available
-to copy blocks of memory.
-
-=item C<d_memmove>
-
-From F<d_memmove.U>:
-
-This variable conditionally defines the C<HAS_MEMMOVE> symbol, which
-indicates to the C program that the memmove() routine is available
-to copy potentatially overlapping blocks of memory.
-
-=item C<d_memset>
-
-From F<d_memset.U>:
-
-This variable conditionally defines the C<HAS_MEMSET> symbol, which
-indicates to the C program that the memset() routine is available
-to set blocks of memory.
-
-=item C<d_mkdir>
-
-From F<d_mkdir.U>:
-
-This variable conditionally defines the C<HAS_MKDIR> symbol, which
-indicates to the C program that the mkdir() routine is available
-to create F<directories.>.
-
-=item C<d_mkdtemp>
-
-From F<d_mkdtemp.U>:
-
-This variable conditionally defines the C<HAS_MKDTEMP> symbol, which
-indicates to the C program that the mkdtemp() routine is available
-to exclusively create a uniquely named temporary directory.
-
-=item C<d_mkfifo>
-
-From F<d_mkfifo.U>:
-
-This variable conditionally defines the C<HAS_MKFIFO> symbol, which
-indicates to the C program that the mkfifo() routine is available.
-
-=item C<d_mkstemp>
-
-From F<d_mkstemp.U>:
-
-This variable conditionally defines the C<HAS_MKSTEMP> symbol, which
-indicates to the C program that the mkstemp() routine is available
-to exclusively create and open a uniquely named temporary file.
-
-=item C<d_mkstemps>
-
-From F<d_mkstemps.U>:
-
-This variable conditionally defines the C<HAS_MKSTEMPS> symbol, which
-indicates to the C program that the mkstemps() routine is available
-to exclusively create and open a uniquely named (with a suffix)
-temporary file.
-
-=item C<d_mktime>
-
-From F<d_mktime.U>:
-
-This variable conditionally defines the C<HAS_MKTIME> symbol, which
-indicates to the C program that the mktime() routine is available.
-
-=item C<d_mmap>
-
-From F<d_mmap.U>:
-
-This variable conditionally defines C<HAS_MMAP> if mmap() is
-available to map a file into memory.
-
-=item C<d_modfl>
-
-From F<d_modfl.U>:
-
-This variable conditionally defines the C<HAS_MODFL> symbol, which
-indicates to the C program that the modfl() routine is available.
-
-=item C<d_modfl_pow32_bug>
-
-From F<d_modfl.U>:
-
-This variable conditionally defines the HAS_MODFL_POW32_BUG symbol,
-which indicates that modfl() is broken for long doubles >= pow(2, 32).
-For example from 4294967303.150000 one would get 4294967302.000000
-and 1.150000. The bug has been seen in certain versions of glibc,
-release 2.2.2 is known to be okay.
-
-=item C<d_mprotect>
-
-From F<d_mprotect.U>:
-
-This variable conditionally defines C<HAS_MPROTECT> if mprotect() is
-available to modify the access protection of a memory mapped file.
-
-=item C<d_msg>
-
-From F<d_msg.U>:
-
-This variable conditionally defines the C<HAS_MSG> symbol, which
-indicates that the entire msg*(2) library is present.
-
-=item C<d_msg_ctrunc>
-
-From F<d_socket.U>:
-
-This variable conditionally defines the C<HAS_MSG_CTRUNC> symbol,
-which indicates that the C<MSG_CTRUNC> is available. #ifdef is
-not enough because it may be an enum, glibc has been known to do this.
-
-=item C<d_msg_dontroute>
-
-From F<d_socket.U>:
-
-This variable conditionally defines the C<HAS_MSG_DONTROUTE> symbol,
-which indicates that the C<MSG_DONTROUTE> is available. #ifdef is
-not enough because it may be an enum, glibc has been known to do this.
-
-=item C<d_msg_oob>
-
-From F<d_socket.U>:
-
-This variable conditionally defines the C<HAS_MSG_OOB> symbol,
-which indicates that the C<MSG_OOB> is available. #ifdef is
-not enough because it may be an enum, glibc has been known to do this.
-
-=item C<d_msg_peek>
-
-From F<d_socket.U>:
-
-This variable conditionally defines the C<HAS_MSG_PEEK> symbol,
-which indicates that the C<MSG_PEEK> is available. #ifdef is
-not enough because it may be an enum, glibc has been known to do this.
-
-=item C<d_msg_proxy>
-
-From F<d_socket.U>:
-
-This variable conditionally defines the C<HAS_MSG_PROXY> symbol,
-which indicates that the C<MSG_PROXY> is available. #ifdef is
-not enough because it may be an enum, glibc has been known to do this.
-
-=item C<d_msgctl>
-
-From F<d_msgctl.U>:
-
-This variable conditionally defines the C<HAS_MSGCTL> symbol, which
-indicates to the C program that the msgctl() routine is available.
-
-=item C<d_msgget>
-
-From F<d_msgget.U>:
-
-This variable conditionally defines the C<HAS_MSGGET> symbol, which
-indicates to the C program that the msgget() routine is available.
-
-=item C<d_msghdr_s>
-
-From F<d_msghdr_s.U>:
-
-This variable conditionally defines the C<HAS_STRUCT_MSGHDR> symbol,
-which indicates that the struct msghdr is supported.
-
-=item C<d_msgrcv>
-
-From F<d_msgrcv.U>:
-
-This variable conditionally defines the C<HAS_MSGRCV> symbol, which
-indicates to the C program that the msgrcv() routine is available.
-
-=item C<d_msgsnd>
-
-From F<d_msgsnd.U>:
-
-This variable conditionally defines the C<HAS_MSGSND> symbol, which
-indicates to the C program that the msgsnd() routine is available.
-
-=item C<d_msync>
-
-From F<d_msync.U>:
-
-This variable conditionally defines C<HAS_MSYNC> if msync() is
-available to synchronize a mapped file.
-
-=item C<d_munmap>
-
-From F<d_munmap.U>:
-
-This variable conditionally defines C<HAS_MUNMAP> if munmap() is
-available to unmap a region mapped by mmap().
-
-=item C<d_mymalloc>
-
-From F<mallocsrc.U>:
-
-This variable conditionally defines C<MYMALLOC> in case other parts
-of the source want to take special action if C<MYMALLOC> is used.
-This may include different sorts of profiling or error detection.
-
-=item C<d_nice>
-
-From F<d_nice.U>:
-
-This variable conditionally defines the C<HAS_NICE> symbol, which
-indicates to the C program that the nice() routine is available.
-
-=item C<d_nl_langinfo>
-
-From F<d_nl_langinfo.U>:
-
-This variable conditionally defines the C<HAS_NL_LANGINFO> symbol, which
-indicates to the C program that the nl_langinfo() routine is available.
-
-=item C<d_nv_preserves_uv>
-
-From F<perlxv.U>:
-
-This variable indicates whether a variable of type nvtype
-can preserve all the bits a variable of type uvtype.
-
-=item C<d_off64_t>
-
-From F<d_off64_t.U>:
-
-This symbol will be defined if the C compiler supports off64_t.
-
-=item C<d_old_pthread_create_joinable>
-
-From F<d_pthrattrj.U>:
-
-This variable conditionally defines pthread_create_joinable.
-undef if F<pthread.h> defines C<PTHREAD_CREATE_JOINABLE>.
-
-=item C<d_oldpthreads>
-
-From F<usethreads.U>:
-
-This variable conditionally defines the C<OLD_PTHREADS_API> symbol,
-and indicates that Perl should be built to use the old
-draft C<POSIX> threads C<API>. This is only potentially meaningful if
-usethreads is set.
-
-=item C<d_oldsock>
-
-From F<d_socket.U>:
-
-This variable conditionally defines the C<OLDSOCKET> symbol, which
-indicates that the C<BSD> socket interface is based on 4.1c and not 4.2.
-
-=item C<d_open3>
-
-From F<d_open3.U>:
-
-This variable conditionally defines the HAS_OPEN3 manifest constant,
-which indicates to the C program that the 3 argument version of
-the open(2) function is available.
-
-=item C<d_pathconf>
-
-From F<d_pathconf.U>:
-
-This variable conditionally defines the C<HAS_PATHCONF> symbol, which
-indicates to the C program that the pathconf() routine is available
-to determine file-system related limits and options associated
-with a given filename.
-
-=item C<d_pause>
-
-From F<d_pause.U>:
-
-This variable conditionally defines the C<HAS_PAUSE> symbol, which
-indicates to the C program that the pause() routine is available
-to suspend a process until a signal is received.
-
-=item C<d_perl_otherlibdirs>
-
-From F<otherlibdirs.U>:
-
-This variable conditionally defines C<PERL_OTHERLIBDIRS>, which
-contains a colon-separated set of paths for the perl binary to
-include in @C<INC>. See also otherlibdirs.
-
-=item C<d_phostname>
-
-From F<d_gethname.U>:
-
-This variable conditionally defines the C<HAS_PHOSTNAME> symbol, which
-contains the shell command which, when fed to popen(), may be
-used to derive the host name.
-
-=item C<d_pipe>
-
-From F<d_pipe.U>:
-
-This variable conditionally defines the C<HAS_PIPE> symbol, which
-indicates to the C program that the pipe() routine is available
-to create an inter-process channel.
-
-=item C<d_poll>
-
-From F<d_poll.U>:
-
-This variable conditionally defines the C<HAS_POLL> symbol, which
-indicates to the C program that the poll() routine is available
-to poll active file descriptors.
-
-=item C<d_portable>
-
-From F<d_portable.U>:
-
-This variable conditionally defines the C<PORTABLE> symbol, which
-indicates to the C program that it should not assume that it is
-running on the machine it was compiled on.
-
-=item C<d_PRId64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRId64 symbol, which
-indiciates that stdio has a symbol to print 64-bit decimal numbers.
-
-=item C<d_PRIeldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indiciates that stdio has a symbol to print long doubles.
-
-=item C<d_PRIEUldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indiciates that stdio has a symbol to print long doubles.
-The C<U> in the name is to separate this from d_PRIeldbl so that even
-case-blind systems can see the difference.
-
-=item C<d_PRIfldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indiciates that stdio has a symbol to print long doubles.
-
-=item C<d_PRIFUldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indiciates that stdio has a symbol to print long doubles.
-The C<U> in the name is to separate this from d_PRIfldbl so that even
-case-blind systems can see the difference.
-
-=item C<d_PRIgldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indiciates that stdio has a symbol to print long doubles.
-
-=item C<d_PRIGUldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indiciates that stdio has a symbol to print long doubles.
-The C<U> in the name is to separate this from d_PRIgldbl so that even
-case-blind systems can see the difference.
-
-=item C<d_PRIi64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRIi64 symbol, which
-indiciates that stdio has a symbol to print 64-bit decimal numbers.
-
-=item C<d_PRIo64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRIo64 symbol, which
-indiciates that stdio has a symbol to print 64-bit octal numbers.
-
-=item C<d_PRIu64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRIu64 symbol, which
-indiciates that stdio has a symbol to print 64-bit unsigned decimal
-numbers.
-
-=item C<d_PRIx64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRIx64 symbol, which
-indiciates that stdio has a symbol to print 64-bit hexadecimal numbers.
-
-=item C<d_PRIXU64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRIXU64 symbol, which
-indiciates that stdio has a symbol to print 64-bit hExADECimAl numbers.
-The C<U> in the name is to separate this from d_PRIx64 so that even
-case-blind systems can see the difference.
-
-=item C<d_procselfexe>
-
-From F<d_procselfexe.U>:
-
-Defined if $procselfexe is symlink to the absolute
-pathname of the executing program.
-
-=item C<d_pthread_atfork>
-
-From F<d_pthread_atfork.U>:
-
-This variable conditionally defines the C<HAS_PTHREAD_ATFORK> symbol,
-which indicates to the C program that the pthread_atfork()
-routine is available.
-
-=item C<d_pthread_yield>
-
-From F<d_pthread_y.U>:
-
-This variable conditionally defines the C<HAS_PTHREAD_YIELD>
-symbol if the pthread_yield routine is available to yield
-the execution of the current thread.
-
-=item C<d_pwage>
-
-From F<i_pwd.U>:
-
-This variable conditionally defines C<PWAGE>, which indicates
-that struct passwd contains pw_age.
-
-=item C<d_pwchange>
-
-From F<i_pwd.U>:
-
-This variable conditionally defines C<PWCHANGE>, which indicates
-that struct passwd contains pw_change.
-
-=item C<d_pwclass>
-
-From F<i_pwd.U>:
-
-This variable conditionally defines C<PWCLASS>, which indicates
-that struct passwd contains pw_class.
-
-=item C<d_pwcomment>
-
-From F<i_pwd.U>:
-
-This variable conditionally defines C<PWCOMMENT>, which indicates
-that struct passwd contains pw_comment.
-
-=item C<d_pwexpire>
-
-From F<i_pwd.U>:
-
-This variable conditionally defines C<PWEXPIRE>, which indicates
-that struct passwd contains pw_expire.
-
-=item C<d_pwgecos>
-
-From F<i_pwd.U>:
-
-This variable conditionally defines C<PWGECOS>, which indicates
-that struct passwd contains pw_gecos.
-
-=item C<d_pwpasswd>
-
-From F<i_pwd.U>:
-
-This variable conditionally defines C<PWPASSWD>, which indicates
-that struct passwd contains pw_passwd.
-
-=item C<d_pwquota>
-
-From F<i_pwd.U>:
-
-This variable conditionally defines C<PWQUOTA>, which indicates
-that struct passwd contains pw_quota.
-
-=item C<d_qgcvt>
-
-From F<d_qgcvt.U>:
-
-This variable conditionally defines the C<HAS_QGCVT> symbol, which
-indicates to the C program that the qgcvt() routine is available.
-
-=item C<d_quad>
-
-From F<quadtype.U>:
-
-This variable, if defined, tells that there's a 64-bit integer type,
-quadtype.
-
-=item C<d_random_r>
-
-From F<d_random_r.U>:
-
-This variable conditionally defines the C<HAS_RANDOM_R> symbol,
-which indicates to the C program that the random_r()
-routine is available.
-
-=item C<d_readdir64_r>
-
-From F<d_readdir64_r.U>:
-
-This variable conditionally defines the HAS_READDIR64_R symbol,
-which indicates to the C program that the readdir64_r()
-routine is available.
-
-=item C<d_readdir>
-
-From F<d_readdir.U>:
-
-This variable conditionally defines C<HAS_READDIR> if readdir() is
-available to read directory entries.
-
-=item C<d_readdir_r>
-
-From F<d_readdir_r.U>:
-
-This variable conditionally defines the C<HAS_READDIR_R> symbol,
-which indicates to the C program that the readdir_r()
-routine is available.
-
-=item C<d_readlink>
-
-From F<d_readlink.U>:
-
-This variable conditionally defines the C<HAS_READLINK> symbol, which
-indicates to the C program that the readlink() routine is available
-to read the value of a symbolic link.
-
-=item C<d_readv>
-
-From F<d_readv.U>:
-
-This variable conditionally defines the C<HAS_READV> symbol, which
-indicates to the C program that the readv() routine is available.
-
-=item C<d_recvmsg>
-
-From F<d_recvmsg.U>:
-
-This variable conditionally defines the C<HAS_RECVMSG> symbol, which
-indicates to the C program that the recvmsg() routine is available.
-
-=item C<d_rename>
-
-From F<d_rename.U>:
-
-This variable conditionally defines the C<HAS_RENAME> symbol, which
-indicates to the C program that the rename() routine is available
-to rename files.
-
-=item C<d_rewinddir>
-
-From F<d_readdir.U>:
-
-This variable conditionally defines C<HAS_REWINDDIR> if rewinddir() is
-available.
-
-=item C<d_rmdir>
-
-From F<d_rmdir.U>:
-
-This variable conditionally defines C<HAS_RMDIR> if rmdir() is
-available to remove directories.
-
-=item C<d_safebcpy>
-
-From F<d_safebcpy.U>:
-
-This variable conditionally defines the C<HAS_SAFE_BCOPY> symbol if
-the bcopy() routine can do overlapping copies. Normally, you
-should probably use memmove().
-
-=item C<d_safemcpy>
-
-From F<d_safemcpy.U>:
-
-This variable conditionally defines the C<HAS_SAFE_MEMCPY> symbol if
-the memcpy() routine can do overlapping copies.
-For overlapping copies, memmove() should be used, if available.
-
-=item C<d_sanemcmp>
-
-From F<d_sanemcmp.U>:
-
-This variable conditionally defines the C<HAS_SANE_MEMCMP> symbol if
-the memcpy() routine is available and can be used to compare relative
-magnitudes of chars with their high bits set.
-
-=item C<d_sbrkproto>
-
-From F<d_sbrkproto.U>:
-
-This variable conditionally defines the C<HAS_SBRK_PROTO> symbol,
-which indicates to the C program that the system provides
-a prototype for the sbrk() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_sched_yield>
-
-From F<d_pthread_y.U>:
-
-This variable conditionally defines the C<HAS_SCHED_YIELD>
-symbol if the sched_yield routine is available to yield
-the execution of the current thread.
-
-=item C<d_scm_rights>
-
-From F<d_socket.U>:
-
-This variable conditionally defines the C<HAS_SCM_RIGHTS> symbol,
-which indicates that the C<SCM_RIGHTS> is available. #ifdef is
-not enough because it may be an enum, glibc has been known to do this.
-
-=item C<d_SCNfldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indiciates that stdio has a symbol to scan long doubles.
-
-=item C<d_seekdir>
-
-From F<d_readdir.U>:
-
-This variable conditionally defines C<HAS_SEEKDIR> if seekdir() is
-available.
-
-=item C<d_select>
-
-From F<d_select.U>:
-
-This variable conditionally defines C<HAS_SELECT> if select() is
-available to select active file descriptors. A <sys/time.h>
-inclusion may be necessary for the timeout field.
-
-=item C<d_sem>
-
-From F<d_sem.U>:
-
-This variable conditionally defines the C<HAS_SEM> symbol, which
-indicates that the entire sem*(2) library is present.
-
-=item C<d_semctl>
-
-From F<d_semctl.U>:
-
-This variable conditionally defines the C<HAS_SEMCTL> symbol, which
-indicates to the C program that the semctl() routine is available.
-
-=item C<d_semctl_semid_ds>
-
-From F<d_union_semun.U>:
-
-This variable conditionally defines C<USE_SEMCTL_SEMID_DS>, which
-indicates that struct semid_ds * is to be used for semctl C<IPC_STAT>.
-
-=item C<d_semctl_semun>
-
-From F<d_union_semun.U>:
-
-This variable conditionally defines C<USE_SEMCTL_SEMUN>, which
-indicates that union semun is to be used for semctl C<IPC_STAT>.
-
-=item C<d_semget>
-
-From F<d_semget.U>:
-
-This variable conditionally defines the C<HAS_SEMGET> symbol, which
-indicates to the C program that the semget() routine is available.
-
-=item C<d_semop>
-
-From F<d_semop.U>:
-
-This variable conditionally defines the C<HAS_SEMOP> symbol, which
-indicates to the C program that the semop() routine is available.
-
-=item C<d_sendmsg>
-
-From F<d_sendmsg.U>:
-
-This variable conditionally defines the C<HAS_SENDMSG> symbol, which
-indicates to the C program that the sendmsg() routine is available.
-
-=item C<d_setegid>
-
-From F<d_setegid.U>:
-
-This variable conditionally defines the C<HAS_SETEGID> symbol, which
-indicates to the C program that the setegid() routine is available
-to change the effective gid of the current program.
-
-=item C<d_seteuid>
-
-From F<d_seteuid.U>:
-
-This variable conditionally defines the C<HAS_SETEUID> symbol, which
-indicates to the C program that the seteuid() routine is available
-to change the effective uid of the current program.
-
-=item C<d_setgrent>
-
-From F<d_setgrent.U>:
-
-This variable conditionally defines the C<HAS_SETGRENT> symbol, which
-indicates to the C program that the setgrent() routine is available
-for initializing sequential access to the group database.
-
-=item C<d_setgrent_r>
-
-From F<d_setgrent_r.U>:
-
-This variable conditionally defines the C<HAS_SETGRENT_R> symbol,
-which indicates to the C program that the setgrent_r()
-routine is available.
-
-=item C<d_setgrps>
-
-From F<d_setgrps.U>:
-
-This variable conditionally defines the C<HAS_SETGROUPS> symbol, which
-indicates to the C program that the setgroups() routine is available
-to set the list of process groups.
-
-=item C<d_sethent>
-
-From F<d_sethent.U>:
-
-This variable conditionally defines C<HAS_SETHOSTENT> if sethostent() is
-available.
-
-=item C<d_sethostent_r>
-
-From F<d_sethostent_r.U>:
-
-This variable conditionally defines the C<HAS_SETHOSTENT_R> symbol,
-which indicates to the C program that the sethostent_r()
-routine is available.
-
-=item C<d_setitimer>
-
-From F<d_setitimer.U>:
-
-This variable conditionally defines the C<HAS_SETITIMER> symbol, which
-indicates to the C program that the setitimer() routine is available.
-
-=item C<d_setlinebuf>
-
-From F<d_setlnbuf.U>:
-
-This variable conditionally defines the C<HAS_SETLINEBUF> symbol, which
-indicates to the C program that the setlinebuf() routine is available
-to change stderr or stdout from block-buffered or unbuffered to a
-line-buffered mode.
-
-=item C<d_setlocale>
-
-From F<d_setlocale.U>:
-
-This variable conditionally defines C<HAS_SETLOCALE> if setlocale() is
-available to handle locale-specific ctype implementations.
-
-=item C<d_setlocale_r>
-
-From F<d_setlocale_r.U>:
-
-This variable conditionally defines the C<HAS_SETLOCALE_R> symbol,
-which indicates to the C program that the setlocale_r()
-routine is available.
-
-=item C<d_setnent>
-
-From F<d_setnent.U>:
-
-This variable conditionally defines C<HAS_SETNETENT> if setnetent() is
-available.
-
-=item C<d_setnetent_r>
-
-From F<d_setnetent_r.U>:
-
-This variable conditionally defines the C<HAS_SETNETENT_R> symbol,
-which indicates to the C program that the setnetent_r()
-routine is available.
-
-=item C<d_setpent>
-
-From F<d_setpent.U>:
-
-This variable conditionally defines C<HAS_SETPROTOENT> if setprotoent() is
-available.
-
-=item C<d_setpgid>
-
-From F<d_setpgid.U>:
-
-This variable conditionally defines the C<HAS_SETPGID> symbol if the
-setpgid(pid, gpid) function is available to set process group C<ID>.
-
-=item C<d_setpgrp2>
-
-From F<d_setpgrp2.U>:
-
-This variable conditionally defines the HAS_SETPGRP2 symbol, which
-indicates to the C program that the setpgrp2() (as in F<DG/C<UX>>) routine
-is available to set the current process group.
-
-=item C<d_setpgrp>
-
-From F<d_setpgrp.U>:
-
-This variable conditionally defines C<HAS_SETPGRP> if setpgrp() is
-available to set the current process group.
-
-=item C<d_setprior>
-
-From F<d_setprior.U>:
-
-This variable conditionally defines C<HAS_SETPRIORITY> if setpriority()
-is available to set a process's priority.
-
-=item C<d_setproctitle>
-
-From F<d_setproctitle.U>:
-
-This variable conditionally defines the C<HAS_SETPROCTITLE> symbol,
-which indicates to the C program that the setproctitle() routine
-is available.
-
-=item C<d_setprotoent_r>
-
-From F<d_setprotoent_r.U>:
-
-This variable conditionally defines the C<HAS_SETPROTOENT_R> symbol,
-which indicates to the C program that the setprotoent_r()
-routine is available.
-
-=item C<d_setpwent>
-
-From F<d_setpwent.U>:
-
-This variable conditionally defines the C<HAS_SETPWENT> symbol, which
-indicates to the C program that the setpwent() routine is available
-for initializing sequential access to the passwd database.
-
-=item C<d_setpwent_r>
-
-From F<d_setpwent_r.U>:
-
-This variable conditionally defines the C<HAS_SETPWENT_R> symbol,
-which indicates to the C program that the setpwent_r()
-routine is available.
-
-=item C<d_setregid>
-
-From F<d_setregid.U>:
-
-This variable conditionally defines C<HAS_SETREGID> if setregid() is
-available to change the real and effective gid of the current
-process.
-
-=item C<d_setresgid>
-
-From F<d_setregid.U>:
-
-This variable conditionally defines C<HAS_SETRESGID> if setresgid() is
-available to change the real, effective and saved gid of the current
-process.
-
-=item C<d_setresuid>
-
-From F<d_setreuid.U>:
-
-This variable conditionally defines C<HAS_SETREUID> if setresuid() is
-available to change the real, effective and saved uid of the current
-process.
-
-=item C<d_setreuid>
-
-From F<d_setreuid.U>:
-
-This variable conditionally defines C<HAS_SETREUID> if setreuid() is
-available to change the real and effective uid of the current
-process.
-
-=item C<d_setrgid>
-
-From F<d_setrgid.U>:
-
-This variable conditionally defines the C<HAS_SETRGID> symbol, which
-indicates to the C program that the setrgid() routine is available
-to change the real gid of the current program.
-
-=item C<d_setruid>
-
-From F<d_setruid.U>:
-
-This variable conditionally defines the C<HAS_SETRUID> symbol, which
-indicates to the C program that the setruid() routine is available
-to change the real uid of the current program.
-
-=item C<d_setsent>
-
-From F<d_setsent.U>:
-
-This variable conditionally defines C<HAS_SETSERVENT> if setservent() is
-available.
-
-=item C<d_setservent_r>
-
-From F<d_setservent_r.U>:
-
-This variable conditionally defines the C<HAS_SETSERVENT_R> symbol,
-which indicates to the C program that the setservent_r()
-routine is available.
-
-=item C<d_setsid>
-
-From F<d_setsid.U>:
-
-This variable conditionally defines C<HAS_SETSID> if setsid() is
-available to set the process group C<ID>.
-
-=item C<d_setvbuf>
-
-From F<d_setvbuf.U>:
-
-This variable conditionally defines the C<HAS_SETVBUF> symbol, which
-indicates to the C program that the setvbuf() routine is available
-to change buffering on an open stdio stream.
-
-=item C<d_sfio>
-
-From F<d_sfio.U>:
-
-This variable conditionally defines the C<USE_SFIO> symbol,
-and indicates whether sfio is available (and should be used).
-
-=item C<d_shm>
-
-From F<d_shm.U>:
-
-This variable conditionally defines the C<HAS_SHM> symbol, which
-indicates that the entire shm*(2) library is present.
-
-=item C<d_shmat>
-
-From F<d_shmat.U>:
-
-This variable conditionally defines the C<HAS_SHMAT> symbol, which
-indicates to the C program that the shmat() routine is available.
-
-=item C<d_shmatprototype>
-
-From F<d_shmat.U>:
-
-This variable conditionally defines the C<HAS_SHMAT_PROTOTYPE>
-symbol, which indicates that F<sys/shm.h> has a prototype for
-shmat.
-
-=item C<d_shmctl>
-
-From F<d_shmctl.U>:
-
-This variable conditionally defines the C<HAS_SHMCTL> symbol, which
-indicates to the C program that the shmctl() routine is available.
-
-=item C<d_shmdt>
-
-From F<d_shmdt.U>:
-
-This variable conditionally defines the C<HAS_SHMDT> symbol, which
-indicates to the C program that the shmdt() routine is available.
-
-=item C<d_shmget>
-
-From F<d_shmget.U>:
-
-This variable conditionally defines the C<HAS_SHMGET> symbol, which
-indicates to the C program that the shmget() routine is available.
-
-=item C<d_sigaction>
-
-From F<d_sigaction.U>:
-
-This variable conditionally defines the C<HAS_SIGACTION> symbol, which
-indicates that the Vr4 sigaction() routine is available.
-
-=item C<d_sigprocmask>
-
-From F<d_sigprocmask.U>:
-
-This variable conditionally defines C<HAS_SIGPROCMASK>
-if sigprocmask() is available to examine or change the signal mask
-of the calling process.
-
-=item C<d_sigsetjmp>
-
-From F<d_sigsetjmp.U>:
-
-This variable conditionally defines the C<HAS_SIGSETJMP> symbol,
-which indicates that the sigsetjmp() routine is available to
-call setjmp() and optionally save the process's signal mask.
-
-=item C<d_sockatmark>
-
-From F<d_sockatmark.U>:
-
-This variable conditionally defines the C<HAS_SOCKATMARK> symbol, which
-indicates to the C program that the sockatmark() routine is available.
-
-=item C<d_sockatmarkproto>
-
-From F<d_sockatmarkproto.U>:
-
-This variable conditionally defines the C<HAS_SOCKATMARK_PROTO> symbol,
-which indicates to the C program that the system provides
-a prototype for the sockatmark() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_socket>
-
-From F<d_socket.U>:
-
-This variable conditionally defines C<HAS_SOCKET>, which indicates
-that the C<BSD> socket interface is supported.
-
-=item C<d_socklen_t>
-
-From F<d_socklen_t.U>:
-
-This symbol will be defined if the C compiler supports socklen_t.
-
-=item C<d_sockpair>
-
-From F<d_socket.U>:
-
-This variable conditionally defines the C<HAS_SOCKETPAIR> symbol, which
-indicates that the C<BSD> socketpair() is supported.
-
-=item C<d_socks5_init>
-
-From F<d_socks5_init.U>:
-
-This variable conditionally defines the HAS_SOCKS5_INIT symbol, which
-indicates to the C program that the socks5_init() routine is available.
-
-=item C<d_sqrtl>
-
-From F<d_sqrtl.U>:
-
-This variable conditionally defines the C<HAS_SQRTL> symbol, which
-indicates to the C program that the sqrtl() routine is available.
-
-=item C<d_srand48_r>
-
-From F<d_srand48_r.U>:
-
-This variable conditionally defines the HAS_SRAND48_R symbol,
-which indicates to the C program that the srand48_r()
-routine is available.
-
-=item C<d_srandom_r>
-
-From F<d_srandom_r.U>:
-
-This variable conditionally defines the C<HAS_SRANDOM_R> symbol,
-which indicates to the C program that the srandom_r()
-routine is available.
-
-=item C<d_sresgproto>
-
-From F<d_sresgproto.U>:
-
-This variable conditionally defines the C<HAS_SETRESGID_PROTO> symbol,
-which indicates to the C program that the system provides
-a prototype for the setresgid() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_sresuproto>
-
-From F<d_sresuproto.U>:
-
-This variable conditionally defines the C<HAS_SETRESUID_PROTO> symbol,
-which indicates to the C program that the system provides
-a prototype for the setresuid() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_statblks>
-
-From F<d_statblks.U>:
-
-This variable conditionally defines C<USE_STAT_BLOCKS>
-if this system has a stat structure declaring
-st_blksize and st_blocks.
-
-=item C<d_statfs_f_flags>
-
-From F<d_statfs_f_flags.U>:
-
-This variable conditionally defines the C<HAS_STRUCT_STATFS_F_FLAGS>
-symbol, which indicates to struct statfs from has f_flags member.
-This kind of struct statfs is coming from F<sys/mount.h> (C<BSD>),
-not from F<sys/statfs.h> (C<SYSV>).
-
-=item C<d_statfs_s>
-
-From F<d_statfs_s.U>:
-
-This variable conditionally defines the C<HAS_STRUCT_STATFS> symbol,
-which indicates that the struct statfs is supported.
-
-=item C<d_statvfs>
-
-From F<d_statvfs.U>:
-
-This variable conditionally defines the C<HAS_STATVFS> symbol, which
-indicates to the C program that the statvfs() routine is available.
-
-=item C<d_stdio_cnt_lval>
-
-From F<d_stdstdio.U>:
-
-This variable conditionally defines C<STDIO_CNT_LVALUE> if the
-C<FILE_cnt> macro can be used as an lvalue.
-
-=item C<d_stdio_ptr_lval>
-
-From F<d_stdstdio.U>:
-
-This variable conditionally defines C<STDIO_PTR_LVALUE> if the
-C<FILE_ptr> macro can be used as an lvalue.
-
-=item C<d_stdio_ptr_lval_nochange_cnt>
-
-From F<d_stdstdio.U>:
-
-This symbol is defined if using the C<FILE_ptr> macro as an lvalue
-to increase the pointer by n leaves File_cnt(fp) unchanged.
-
-=item C<d_stdio_ptr_lval_sets_cnt>
-
-From F<d_stdstdio.U>:
-
-This symbol is defined if using the C<FILE_ptr> macro as an lvalue
-to increase the pointer by n has the side effect of decreasing the
-value of File_cnt(fp) by n.
-
-=item C<d_stdio_stream_array>
-
-From F<stdio_streams.U>:
-
-This variable tells whether there is an array holding
-the stdio streams.
-
-=item C<d_stdiobase>
-
-From F<d_stdstdio.U>:
-
-This variable conditionally defines C<USE_STDIO_BASE> if this system
-has a C<FILE> structure declaring a usable _base field (or equivalent)
-in F<stdio.h>.
-
-=item C<d_stdstdio>
-
-From F<d_stdstdio.U>:
-
-This variable conditionally defines C<USE_STDIO_PTR> if this system
-has a C<FILE> structure declaring usable _ptr and _cnt fields (or
-equivalent) in F<stdio.h>.
-
-=item C<d_strchr>
-
-From F<d_strchr.U>:
-
-This variable conditionally defines C<HAS_STRCHR> if strchr() and
-strrchr() are available for string searching.
-
-=item C<d_strcoll>
-
-From F<d_strcoll.U>:
-
-This variable conditionally defines C<HAS_STRCOLL> if strcoll() is
-available to compare strings using collating information.
-
-=item C<d_strctcpy>
-
-From F<d_strctcpy.U>:
-
-This variable conditionally defines the C<USE_STRUCT_COPY> symbol, which
-indicates to the C program that this C compiler knows how to copy
-structures.
-
-=item C<d_strerrm>
-
-From F<d_strerror.U>:
-
-This variable holds what Strerrr is defined as to translate an error
-code condition into an error message string. It could be C<strerror>
-or a more C<complex> macro emulating strrror with sys_errlist[], or the
-C<unknown> string when both strerror and sys_errlist are missing.
-
-=item C<d_strerror>
-
-From F<d_strerror.U>:
-
-This variable conditionally defines C<HAS_STRERROR> if strerror() is
-available to translate error numbers to strings.
-
-=item C<d_strerror_r>
-
-From F<d_strerror_r.U>:
-
-This variable conditionally defines the C<HAS_STRERROR_R> symbol,
-which indicates to the C program that the strerror_r()
-routine is available.
-
-=item C<d_strftime>
-
-From F<d_strftime.U>:
-
-This variable conditionally defines the C<HAS_STRFTIME> symbol, which
-indicates to the C program that the strftime() routine is available.
-
-=item C<d_strtod>
-
-From F<d_strtod.U>:
-
-This variable conditionally defines the C<HAS_STRTOD> symbol, which
-indicates to the C program that the strtod() routine is available
-to provide better numeric string conversion than atof().
-
-=item C<d_strtol>
-
-From F<d_strtol.U>:
-
-This variable conditionally defines the C<HAS_STRTOL> symbol, which
-indicates to the C program that the strtol() routine is available
-to provide better numeric string conversion than atoi() and friends.
-
-=item C<d_strtold>
-
-From F<d_strtold.U>:
-
-This variable conditionally defines the C<HAS_STRTOLD> symbol, which
-indicates to the C program that the strtold() routine is available.
-
-=item C<d_strtoll>
-
-From F<d_strtoll.U>:
-
-This variable conditionally defines the C<HAS_STRTOLL> symbol, which
-indicates to the C program that the strtoll() routine is available.
-
-=item C<d_strtoq>
-
-From F<d_strtoq.U>:
-
-This variable conditionally defines the C<HAS_STRTOQ> symbol, which
-indicates to the C program that the strtoq() routine is available.
-
-=item C<d_strtoul>
-
-From F<d_strtoul.U>:
-
-This variable conditionally defines the C<HAS_STRTOUL> symbol, which
-indicates to the C program that the strtoul() routine is available
-to provide conversion of strings to unsigned long.
-
-=item C<d_strtoull>
-
-From F<d_strtoull.U>:
-
-This variable conditionally defines the C<HAS_STRTOULL> symbol, which
-indicates to the C program that the strtoull() routine is available.
-
-=item C<d_strtouq>
-
-From F<d_strtouq.U>:
-
-This variable conditionally defines the C<HAS_STRTOUQ> symbol, which
-indicates to the C program that the strtouq() routine is available.
-
-=item C<d_strxfrm>
-
-From F<d_strxfrm.U>:
-
-This variable conditionally defines C<HAS_STRXFRM> if strxfrm() is
-available to transform strings.
-
-=item C<d_suidsafe>
-
-From F<d_dosuid.U>:
-
-This variable conditionally defines C<SETUID_SCRIPTS_ARE_SECURE_NOW>
-if setuid scripts can be secure. This test looks in F</dev/fd/>.
-
-=item C<d_symlink>
-
-From F<d_symlink.U>:
-
-This variable conditionally defines the C<HAS_SYMLINK> symbol, which
-indicates to the C program that the symlink() routine is available
-to create symbolic links.
-
-=item C<d_syscall>
-
-From F<d_syscall.U>:
-
-This variable conditionally defines C<HAS_SYSCALL> if syscall() is
-available call arbitrary system calls.
-
-=item C<d_syscallproto>
-
-From F<d_syscallproto.U>:
-
-This variable conditionally defines the C<HAS_SYSCALL_PROTO> symbol,
-which indicates to the C program that the system provides
-a prototype for the syscall() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_sysconf>
-
-From F<d_sysconf.U>:
-
-This variable conditionally defines the C<HAS_SYSCONF> symbol, which
-indicates to the C program that the sysconf() routine is available
-to determine system related limits and options.
-
-=item C<d_sysernlst>
-
-From F<d_strerror.U>:
-
-This variable conditionally defines C<HAS_SYS_ERRNOLIST> if sys_errnolist[]
-is available to translate error numbers to the symbolic name.
-
-=item C<d_syserrlst>
-
-From F<d_strerror.U>:
-
-This variable conditionally defines C<HAS_SYS_ERRLIST> if sys_errlist[] is
-available to translate error numbers to strings.
-
-=item C<d_system>
-
-From F<d_system.U>:
-
-This variable conditionally defines C<HAS_SYSTEM> if system() is
-available to issue a shell command.
-
-=item C<d_tcgetpgrp>
-
-From F<d_tcgtpgrp.U>:
-
-This variable conditionally defines the C<HAS_TCGETPGRP> symbol, which
-indicates to the C program that the tcgetpgrp() routine is available.
-to get foreground process group C<ID>.
-
-=item C<d_tcsetpgrp>
-
-From F<d_tcstpgrp.U>:
-
-This variable conditionally defines the C<HAS_TCSETPGRP> symbol, which
-indicates to the C program that the tcsetpgrp() routine is available
-to set foreground process group C<ID>.
-
-=item C<d_telldir>
-
-From F<d_readdir.U>:
-
-This variable conditionally defines C<HAS_TELLDIR> if telldir() is
-available.
-
-=item C<d_telldirproto>
-
-From F<d_telldirproto.U>:
-
-This variable conditionally defines the C<HAS_TELLDIR_PROTO> symbol,
-which indicates to the C program that the system provides
-a prototype for the telldir() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_time>
-
-From F<d_time.U>:
-
-This variable conditionally defines the C<HAS_TIME> symbol, which indicates
-that the time() routine exists. The time() routine is normaly
-provided on C<UNIX> systems.
-
-=item C<d_times>
-
-From F<d_times.U>:
-
-This variable conditionally defines the C<HAS_TIMES> symbol, which indicates
-that the times() routine exists. The times() routine is normaly
-provided on C<UNIX> systems. You may have to include <sys/times.h>.
-
-=item C<d_tm_tm_gmtoff>
-
-From F<i_time.U>:
-
-This variable conditionally defines C<HAS_TM_TM_GMTOFF>, which indicates
-indicates to the C program that the struct tm has the tm_gmtoff field.
-
-=item C<d_tm_tm_zone>
-
-From F<i_time.U>:
-
-This variable conditionally defines C<HAS_TM_TM_ZONE>, which indicates
-indicates to the C program that the struct tm has the tm_zone field.
-
-=item C<d_tmpnam_r>
-
-From F<d_tmpnam_r.U>:
-
-This variable conditionally defines the C<HAS_TMPNAM_R> symbol,
-which indicates to the C program that the tmpnam_r()
-routine is available.
-
-=item C<d_truncate>
-
-From F<d_truncate.U>:
-
-This variable conditionally defines C<HAS_TRUNCATE> if truncate() is
-available to truncate files.
-
-=item C<d_ttyname_r>
-
-From F<d_ttyname_r.U>:
-
-This variable conditionally defines the C<HAS_TTYNAME_R> symbol,
-which indicates to the C program that the ttyname_r()
-routine is available.
-
-=item C<d_tzname>
-
-From F<d_tzname.U>:
-
-This variable conditionally defines C<HAS_TZNAME> if tzname[] is
-available to access timezone names.
-
-=item C<d_u32align>
-
-From F<d_u32align.U>:
-
-This variable tells whether you must access character data
-through U32-aligned pointers.
-
-=item C<d_ualarm>
-
-From F<d_ualarm.U>:
-
-This variable conditionally defines the C<HAS_UALARM> symbol, which
-indicates to the C program that the ualarm() routine is available.
-
-=item C<d_umask>
-
-From F<d_umask.U>:
-
-This variable conditionally defines the C<HAS_UMASK> symbol, which
-indicates to the C program that the umask() routine is available.
-to set and get the value of the file creation mask.
-
-=item C<d_uname>
-
-From F<d_gethname.U>:
-
-This variable conditionally defines the C<HAS_UNAME> symbol, which
-indicates to the C program that the uname() routine may be
-used to derive the host name.
-
-=item C<d_union_semun>
-
-From F<d_union_semun.U>:
-
-This variable conditionally defines C<HAS_UNION_SEMUN> if the
-union semun is defined by including <sys/sem.h>.
-
-=item C<d_unordered>
-
-From F<d_unordered.U>:
-
-This variable conditionally defines the C<HAS_UNORDERED> symbol, which
-indicates to the C program that the unordered() routine is available.
-
-=item C<d_usleep>
-
-From F<d_usleep.U>:
-
-This variable conditionally defines C<HAS_USLEEP> if usleep() is
-available to do high granularity sleeps.
-
-=item C<d_usleepproto>
-
-From F<d_usleepproto.U>:
-
-This variable conditionally defines the C<HAS_USLEEP_PROTO> symbol,
-which indicates to the C program that the system provides
-a prototype for the usleep() function. Otherwise, it is
-up to the program to supply one.
-
-=item C<d_ustat>
-
-From F<d_ustat.U>:
-
-This variable conditionally defines C<HAS_USTAT> if ustat() is
-available to query file system statistics by dev_t.
-
-=item C<d_vendorarch>
-
-From F<vendorarch.U>:
-
-This variable conditionally defined C<PERL_VENDORARCH>.
-
-=item C<d_vendorbin>
-
-From F<vendorbin.U>:
-
-This variable conditionally defines C<PERL_VENDORBIN>.
-
-=item C<d_vendorlib>
-
-From F<vendorlib.U>:
-
-This variable conditionally defines C<PERL_VENDORLIB>.
-
-=item C<d_vfork>
-
-From F<d_vfork.U>:
-
-This variable conditionally defines the C<HAS_VFORK> symbol, which
-indicates the vfork() routine is available.
-
-=item C<d_void_closedir>
-
-From F<d_closedir.U>:
-
-This variable conditionally defines C<VOID_CLOSEDIR> if closedir()
-does not return a value.
-
-=item C<d_voidsig>
-
-From F<d_voidsig.U>:
-
-This variable conditionally defines C<VOIDSIG> if this system
-declares "void (*signal(...))()" in F<signal.h>. The old way was to
-declare it as "int (*signal(...))()".
-
-=item C<d_voidtty>
-
-From F<i_sysioctl.U>:
-
-This variable conditionally defines C<USE_IOCNOTTY> to indicate that the
-ioctl() call with C<TIOCNOTTY> should be used to void tty association.
-Otherwise (on C<USG> probably), it is enough to close the standard file
-decriptors and do a setpgrp().
-
-=item C<d_volatile>
-
-From F<d_volatile.U>:
-
-This variable conditionally defines the C<HASVOLATILE> symbol, which
-indicates to the C program that this C compiler knows about the
-volatile declaration.
-
-=item C<d_vprintf>
-
-From F<d_vprintf.U>:
-
-This variable conditionally defines the C<HAS_VPRINTF> symbol, which
-indicates to the C program that the vprintf() routine is available
-to printf with a pointer to an argument list.
-
-=item C<d_wait4>
-
-From F<d_wait4.U>:
-
-This variable conditionally defines the HAS_WAIT4 symbol, which
-indicates the wait4() routine is available.
-
-=item C<d_waitpid>
-
-From F<d_waitpid.U>:
-
-This variable conditionally defines C<HAS_WAITPID> if waitpid() is
-available to wait for child process.
-
-=item C<d_wcstombs>
-
-From F<d_wcstombs.U>:
-
-This variable conditionally defines the C<HAS_WCSTOMBS> symbol, which
-indicates to the C program that the wcstombs() routine is available
-to convert wide character strings to multibyte strings.
-
-=item C<d_wctomb>
-
-From F<d_wctomb.U>:
-
-This variable conditionally defines the C<HAS_WCTOMB> symbol, which
-indicates to the C program that the wctomb() routine is available
-to convert a wide character to a multibyte.
-
-=item C<d_writev>
-
-From F<d_writev.U>:
-
-This variable conditionally defines the C<HAS_WRITEV> symbol, which
-indicates to the C program that the writev() routine is available.
-
-=item C<d_xenix>
-
-From F<Guess.U>:
-
-This variable conditionally defines the symbol C<XENIX>, which alerts
-the C program that it runs under Xenix.
-
-=item C<date>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the date program. After Configure runs,
-the value is reset to a plain C<date> and is not useful.
-
-=item C<db_hashtype>
-
-From F<i_db.U>:
-
-This variable contains the type of the hash structure element
-in the <db.h> header file. In older versions of C<DB>, it was
-int, while in newer ones it is u_int32_t.
-
-=item C<db_prefixtype>
-
-From F<i_db.U>:
-
-This variable contains the type of the prefix structure element
-in the <db.h> header file. In older versions of C<DB>, it was
-int, while in newer ones it is size_t.
-
-=item C<db_version_major>
-
-From F<i_db.U>:
-
-This variable contains the major version number of
-Berkeley C<DB> found in the <db.h> header file.
-
-=item C<db_version_minor>
-
-From F<i_db.U>:
-
-This variable contains the minor version number of
-Berkeley C<DB> found in the <db.h> header file.
-For C<DB> version 1 this is always 0.
-
-=item C<db_version_patch>
-
-From F<i_db.U>:
-
-This variable contains the patch version number of
-Berkeley C<DB> found in the <db.h> header file.
-For C<DB> version 1 this is always 0.
-
-=item C<defvoidused>
-
-From F<voidflags.U>:
-
-This variable contains the default value of the C<VOIDUSED> symbol (15).
-
-=item C<direntrytype>
-
-From F<i_dirent.U>:
-
-This symbol is set to C<struct direct> or C<struct dirent> depending on
-whether dirent is available or not. You should use this pseudo type to
-portably declare your directory entries.
-
-=item C<dlext>
-
-From F<dlext.U>:
-
-This variable contains the extension that is to be used for the
-dynamically loaded modules that perl generaties.
-
-=item C<dlsrc>
-
-From F<dlsrc.U>:
-
-This variable contains the name of the dynamic loading file that
-will be used with the package.
-
-=item C<doublesize>
-
-From F<doublesize.U>:
-
-This variable contains the value of the C<DOUBLESIZE> symbol, which
-indicates to the C program how many bytes there are in a double.
-
-=item C<drand01>
-
-From F<randfunc.U>:
-
-Indicates the macro to be used to generate normalized
-random numbers. Uses randfunc, often divided by
-(double) (((unsigned long) 1 << randbits)) in order to
-normalize the result.
-In C programs, the macro C<Drand01> is mapped to drand01.
-
-=item C<drand48_r_proto>
-
-From F<d_drand48_r.U>:
-
-This variable encodes the prototype of drand48_r.
-It is zero if d_drand48_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_drand48_r
-is defined.
-
-=item C<dynamic_ext>
-
-From F<Extensions.U>:
-
-This variable holds a list of C<XS> extension files we want to
-link dynamically into the package. It is used by Makefile.
-
-=back
-
-=head2 e
-
-=over 4
-
-=item C<eagain>
-
-From F<nblock_io.U>:
-
-This variable bears the symbolic errno code set by read() when no
-data is present on the file and non-blocking I/O was enabled (otherwise,
-read() blocks naturally).
-
-=item C<ebcdic>
-
-From F<ebcdic.U>:
-
-This variable conditionally defines C<EBCDIC> if this
-system uses C<EBCDIC> encoding. Among other things, this
-means that the character ranges are not contiguous.
-See F<trnl.U>
-
-=item C<echo>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the echo program. After Configure runs,
-the value is reset to a plain C<echo> and is not useful.
-
-=item C<egrep>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the egrep program. After Configure runs,
-the value is reset to a plain C<egrep> and is not useful.
-
-=item C<emacs>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<endgrent_r_proto>
-
-From F<d_endgrent_r.U>:
-
-This variable encodes the prototype of endgrent_r.
-It is zero if d_endgrent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_endgrent_r
-is defined.
-
-=item C<endhostent_r_proto>
-
-From F<d_endhostent_r.U>:
-
-This variable encodes the prototype of endhostent_r.
-It is zero if d_endhostent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_endhostent_r
-is defined.
-
-=item C<endnetent_r_proto>
-
-From F<d_endnetent_r.U>:
-
-This variable encodes the prototype of endnetent_r.
-It is zero if d_endnetent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_endnetent_r
-is defined.
-
-=item C<endprotoent_r_proto>
-
-From F<d_endprotoent_r.U>:
-
-This variable encodes the prototype of endprotoent_r.
-It is zero if d_endprotoent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_endprotoent_r
-is defined.
-
-=item C<endpwent_r_proto>
-
-From F<d_endpwent_r.U>:
-
-This variable encodes the prototype of endpwent_r.
-It is zero if d_endpwent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_endpwent_r
-is defined.
-
-=item C<endservent_r_proto>
-
-From F<d_endservent_r.U>:
-
-This variable encodes the prototype of endservent_r.
-It is zero if d_endservent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_endservent_r
-is defined.
-
-=item C<eunicefix>
-
-From F<Init.U>:
-
-When running under Eunice this variable contains a command which will
-convert a shell script to the proper form of text file for it to be
-executable by the shell. On other systems it is a no-op.
-
-=item C<exe_ext>
-
-From F<Unix.U>:
-
-This is an old synonym for _exe.
-
-=item C<expr>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the expr program. After Configure runs,
-the value is reset to a plain C<expr> and is not useful.
-
-=item C<extensions>
-
-From F<Extensions.U>:
-
-This variable holds a list of all extension files (both C<XS> and
-non-xs linked into the package. It is propagated to F<Config.pm>
-and is typically used to test whether a particular extesion
-is available.
-
-=item C<extras>
-
-From F<Extras.U>:
-
-This variable holds a list of extra modules to install.
-
-=back
-
-=head2 f
-
-=over 4
-
-=item C<fflushall>
-
-From F<fflushall.U>:
-
-This symbol, if defined, tells that to flush
-all pending stdio output one must loop through all
-the stdio file handles stored in an array and fflush them.
-Note that if fflushNULL is defined, fflushall will not
-even be probed for and will be left undefined.
-
-=item C<fflushNULL>
-
-From F<fflushall.U>:
-
-This symbol, if defined, tells that fflush(C<NULL>) does flush
-all pending stdio output.
-
-=item C<find>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<firstmakefile>
-
-From F<Unix.U>:
-
-This variable defines the first file searched by make. On unix,
-it is makefile (then Makefile). On case-insensitive systems,
-it might be something else. This is only used to deal with
-convoluted make depend tricks.
-
-=item C<flex>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<fpossize>
-
-From F<fpossize.U>:
-
-This variable contains the size of a fpostype in bytes.
-
-=item C<fpostype>
-
-From F<fpostype.U>:
-
-This variable defines Fpos_t to be something like fpos_t, long,
-uint, or whatever type is used to declare file positions in libc.
-
-=item C<freetype>
-
-From F<mallocsrc.U>:
-
-This variable contains the return type of free(). It is usually
-void, but occasionally int.
-
-=item C<from>
-
-From F<Cross.U>:
-
-This variable contains the command used by Configure
-to copy files from the target host. Useful and available
-only during Perl build.
-The string C<:> if not cross-compiling.
-
-=item C<full_ar>
-
-From F<Loc_ar.U>:
-
-This variable contains the full pathname to C<ar>, whether or
-not the user has specified C<portability>. This is only used
-in the F<Makefile.SH>.
-
-=item C<full_csh>
-
-From F<d_csh.U>:
-
-This variable contains the full pathname to C<csh>, whether or
-not the user has specified C<portability>. This is only used
-in the compiled C program, and we assume that all systems which
-can share this executable will have the same full pathname to
-F<csh.>
-
-=item C<full_sed>
-
-From F<Loc_sed.U>:
-
-This variable contains the full pathname to C<sed>, whether or
-not the user has specified C<portability>. This is only used
-in the compiled C program, and we assume that all systems which
-can share this executable will have the same full pathname to
-F<sed.>
-
-=back
-
-=head2 g
-
-=over 4
-
-=item C<gccosandvers>
-
-From F<gccvers.U>:
-
-If C<GNU> cc (gcc) is used, this variable the operating system and
-version used to compile the gcc. It is set to '' if not gcc,
-or if nothing useful can be parsed as the os version.
-
-=item C<gccversion>
-
-From F<gccvers.U>:
-
-If C<GNU> cc (gcc) is used, this variable holds C<1> or C<2> to
-indicate whether the compiler is version 1 or 2. This is used in
-setting some of the default cflags. It is set to '' if not gcc.
-
-=item C<getgrent_r_proto>
-
-From F<d_getgrent_r.U>:
-
-This variable encodes the prototype of getgrent_r.
-It is zero if d_getgrent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getgrent_r
-is defined.
-
-=item C<getgrgid_r_proto>
-
-From F<d_getgrgid_r.U>:
-
-This variable encodes the prototype of getgrgid_r.
-It is zero if d_getgrgid_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getgrgid_r
-is defined.
-
-=item C<getgrnam_r_proto>
-
-From F<d_getgrnam_r.U>:
-
-This variable encodes the prototype of getgrnam_r.
-It is zero if d_getgrnam_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getgrnam_r
-is defined.
-
-=item C<gethostbyaddr_r_proto>
-
-From F<d_gethostbyaddr_r.U>:
-
-This variable encodes the prototype of gethostbyaddr_r.
-It is zero if d_gethostbyaddr_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_gethostbyaddr_r
-is defined.
-
-=item C<gethostbyname_r_proto>
-
-From F<d_gethostbyname_r.U>:
-
-This variable encodes the prototype of gethostbyname_r.
-It is zero if d_gethostbyname_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_gethostbyname_r
-is defined.
-
-=item C<gethostent_r_proto>
-
-From F<d_gethostent_r.U>:
-
-This variable encodes the prototype of gethostent_r.
-It is zero if d_gethostent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_gethostent_r
-is defined.
-
-=item C<getlogin_r_proto>
-
-From F<d_getlogin_r.U>:
-
-This variable encodes the prototype of getlogin_r.
-It is zero if d_getlogin_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getlogin_r
-is defined.
-
-=item C<getnetbyaddr_r_proto>
-
-From F<d_getnetbyaddr_r.U>:
-
-This variable encodes the prototype of getnetbyaddr_r.
-It is zero if d_getnetbyaddr_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getnetbyaddr_r
-is defined.
-
-=item C<getnetbyname_r_proto>
-
-From F<d_getnetbyname_r.U>:
-
-This variable encodes the prototype of getnetbyname_r.
-It is zero if d_getnetbyname_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getnetbyname_r
-is defined.
-
-=item C<getnetent_r_proto>
-
-From F<d_getnetent_r.U>:
-
-This variable encodes the prototype of getnetent_r.
-It is zero if d_getnetent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getnetent_r
-is defined.
-
-=item C<getprotobyname_r_proto>
-
-From F<d_getprotobyname_r.U>:
-
-This variable encodes the prototype of getprotobyname_r.
-It is zero if d_getprotobyname_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getprotobyname_r
-is defined.
-
-=item C<getprotobynumber_r_proto>
-
-From F<d_getprotobynumber_r.U>:
-
-This variable encodes the prototype of getprotobynumber_r.
-It is zero if d_getprotobynumber_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getprotobynumber_r
-is defined.
-
-=item C<getprotoent_r_proto>
-
-From F<d_getprotoent_r.U>:
-
-This variable encodes the prototype of getprotoent_r.
-It is zero if d_getprotoent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getprotoent_r
-is defined.
-
-=item C<getpwent_r_proto>
-
-From F<d_getpwent_r.U>:
-
-This variable encodes the prototype of getpwent_r.
-It is zero if d_getpwent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getpwent_r
-is defined.
-
-=item C<getpwnam_r_proto>
-
-From F<d_getpwnam_r.U>:
-
-This variable encodes the prototype of getpwnam_r.
-It is zero if d_getpwnam_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getpwnam_r
-is defined.
-
-=item C<getpwuid_r_proto>
-
-From F<d_getpwuid_r.U>:
-
-This variable encodes the prototype of getpwuid_r.
-It is zero if d_getpwuid_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getpwuid_r
-is defined.
-
-=item C<getservbyname_r_proto>
-
-From F<d_getservbyname_r.U>:
-
-This variable encodes the prototype of getservbyname_r.
-It is zero if d_getservbyname_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getservbyname_r
-is defined.
-
-=item C<getservbyport_r_proto>
-
-From F<d_getservbyport_r.U>:
-
-This variable encodes the prototype of getservbyport_r.
-It is zero if d_getservbyport_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getservbyport_r
-is defined.
-
-=item C<getservent_r_proto>
-
-From F<d_getservent_r.U>:
-
-This variable encodes the prototype of getservent_r.
-It is zero if d_getservent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getservent_r
-is defined.
-
-=item C<getspnam_r_proto>
-
-From F<d_getspnam_r.U>:
-
-This variable encodes the prototype of getspnam_r.
-It is zero if d_getspnam_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_getspnam_r
-is defined.
-
-=item C<gidformat>
-
-From F<gidf.U>:
-
-This variable contains the format string used for printing a Gid_t.
-
-=item C<gidsign>
-
-From F<gidsign.U>:
-
-This variable contains the signedness of a gidtype.
-1 for unsigned, -1 for signed.
-
-=item C<gidsize>
-
-From F<gidsize.U>:
-
-This variable contains the size of a gidtype in bytes.
-
-=item C<gidtype>
-
-From F<gidtype.U>:
-
-This variable defines Gid_t to be something like gid_t, int,
-ushort, or whatever type is used to declare the return type
-of getgid(). Typically, it is the type of group ids in the kernel.
-
-=item C<glibpth>
-
-From F<libpth.U>:
-
-This variable holds the general path (space-separated) used to
-find libraries. It may contain directories that do not exist on
-this platform, libpth is the cleaned-up version.
-
-=item C<gmake>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the gmake program. After Configure runs,
-the value is reset to a plain C<gmake> and is not useful.
-
-=item C<gmtime_r_proto>
-
-From F<d_gmtime_r.U>:
-
-This variable encodes the prototype of gmtime_r.
-It is zero if d_gmtime_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_gmtime_r
-is defined.
-
-=item C<gnulibc_version>
-
-From F<d_gnulibc.U>:
-
-This variable contains the version number of the C<GNU> C library.
-It is usually something like F<2.2.5>. It is a plain '' if this
-is not the C<GNU> C library, or if the version is unknown.
-
-=item C<grep>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the grep program. After Configure runs,
-the value is reset to a plain C<grep> and is not useful.
-
-=item C<groupcat>
-
-From F<nis.U>:
-
-This variable contains a command that produces the text of the
-F</etc/group> file. This is normally "cat F</etc/group>", but can be
-"ypcat group" when C<NIS> is used.
-On some systems, such as os390, there may be no equivalent
-command, in which case this variable is unset.
-
-=item C<groupstype>
-
-From F<groupstype.U>:
-
-This variable defines Groups_t to be something like gid_t, int,
-ushort, or whatever type is used for the second argument to
-getgroups() and setgroups(). Usually, this is the same as
-gidtype (gid_t), but sometimes it isn't.
-
-=item C<gzip>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the gzip program. After Configure runs,
-the value is reset to a plain C<gzip> and is not useful.
-
-=back
-
-=head2 h
-
-=over 4
-
-=item C<h_fcntl>
-
-From F<h_fcntl.U>:
-
-This is variable gets set in various places to tell i_fcntl that
-<fcntl.h> should be included.
-
-=item C<h_sysfile>
-
-From F<h_sysfile.U>:
-
-This is variable gets set in various places to tell i_sys_file that
-<sys/file.h> should be included.
-
-=item C<hint>
-
-From F<Oldconfig.U>:
-
-Gives the type of hints used for previous answers. May be one of
-C<default>, C<recommended> or C<previous>.
-
-=item C<hostcat>
-
-From F<nis.U>:
-
-This variable contains a command that produces the text of the
-F</etc/hosts> file. This is normally "cat F</etc/hosts>", but can be
-"ypcat hosts" when C<NIS> is used.
-On some systems, such as os390, there may be no equivalent
-command, in which case this variable is unset.
-
-=back
-
-=head2 i
-
-=over 4
-
-=item C<i16size>
-
-From F<perlxv.U>:
-
-This variable is the size of an I16 in bytes.
-
-=item C<i16type>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's I16.
-
-=item C<i32size>
-
-From F<perlxv.U>:
-
-This variable is the size of an I32 in bytes.
-
-=item C<i32type>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's I32.
-
-=item C<i64size>
-
-From F<perlxv.U>:
-
-This variable is the size of an I64 in bytes.
-
-=item C<i64type>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's I64.
-
-=item C<i8size>
-
-From F<perlxv.U>:
-
-This variable is the size of an I8 in bytes.
-
-=item C<i8type>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's I8.
-
-=item C<i_arpainet>
-
-From F<i_arpainet.U>:
-
-This variable conditionally defines the C<I_ARPA_INET> symbol,
-and indicates whether a C program should include <arpa/inet.h>.
-
-=item C<i_bsdioctl>
-
-From F<i_sysioctl.U>:
-
-This variable conditionally defines the C<I_SYS_BSDIOCTL> symbol, which
-indicates to the C program that <sys/bsdioctl.h> exists and should
-be included.
-
-=item C<i_crypt>
-
-From F<i_crypt.U>:
-
-This variable conditionally defines the C<I_CRYPT> symbol, and indicates
-whether a C program should include <crypt.h>.
-
-=item C<i_db>
-
-From F<i_db.U>:
-
-This variable conditionally defines the C<I_DB> symbol, and indicates
-whether a C program may include Berkeley's C<DB> include file <db.h>.
-
-=item C<i_dbm>
-
-From F<i_dbm.U>:
-
-This variable conditionally defines the C<I_DBM> symbol, which
-indicates to the C program that <dbm.h> exists and should
-be included.
-
-=item C<i_dirent>
-
-From F<i_dirent.U>:
-
-This variable conditionally defines C<I_DIRENT>, which indicates
-to the C program that it should include <dirent.h>.
-
-=item C<i_dld>
-
-From F<i_dld.U>:
-
-This variable conditionally defines the C<I_DLD> symbol, which
-indicates to the C program that <dld.h> (C<GNU> dynamic loading)
-exists and should be included.
-
-=item C<i_dlfcn>
-
-From F<i_dlfcn.U>:
-
-This variable conditionally defines the C<I_DLFCN> symbol, which
-indicates to the C program that <dlfcn.h> exists and should
-be included.
-
-=item C<i_fcntl>
-
-From F<i_fcntl.U>:
-
-This variable controls the value of C<I_FCNTL> (which tells
-the C program to include <fcntl.h>).
-
-=item C<i_float>
-
-From F<i_float.U>:
-
-This variable conditionally defines the C<I_FLOAT> symbol, and indicates
-whether a C program may include <float.h> to get symbols like C<DBL_MAX>
-or C<DBL_MIN>, F<i.e>. machine dependent floating point values.
-
-=item C<i_fp>
-
-From F<i_fp.U>:
-
-This variable conditionally defines the C<I_FP> symbol, and indicates
-whether a C program should include <fp.h>.
-
-=item C<i_fp_class>
-
-From F<i_fp_class.U>:
-
-This variable conditionally defines the C<I_FP_CLASS> symbol, and indicates
-whether a C program should include <fp_class.h>.
-
-=item C<i_gdbm>
-
-From F<i_gdbm.U>:
-
-This variable conditionally defines the C<I_GDBM> symbol, which
-indicates to the C program that <gdbm.h> exists and should
-be included.
-
-=item C<i_grp>
-
-From F<i_grp.U>:
-
-This variable conditionally defines the C<I_GRP> symbol, and indicates
-whether a C program should include <grp.h>.
-
-=item C<i_ieeefp>
-
-From F<i_ieeefp.U>:
-
-This variable conditionally defines the C<I_IEEEFP> symbol, and indicates
-whether a C program should include <ieeefp.h>.
-
-=item C<i_inttypes>
-
-From F<i_inttypes.U>:
-
-This variable conditionally defines the C<I_INTTYPES> symbol,
-and indicates whether a C program should include <inttypes.h>.
-
-=item C<i_langinfo>
-
-From F<i_langinfo.U>:
-
-This variable conditionally defines the C<I_LANGINFO> symbol,
-and indicates whether a C program should include <langinfo.h>.
-
-=item C<i_libutil>
-
-From F<i_libutil.U>:
-
-This variable conditionally defines the C<I_LIBUTIL> symbol, and indicates
-whether a C program should include <libutil.h>.
-
-=item C<i_limits>
-
-From F<i_limits.U>:
-
-This variable conditionally defines the C<I_LIMITS> symbol, and indicates
-whether a C program may include <limits.h> to get symbols like C<WORD_BIT>
-and friends.
-
-=item C<i_locale>
-
-From F<i_locale.U>:
-
-This variable conditionally defines the C<I_LOCALE> symbol,
-and indicates whether a C program should include <locale.h>.
-
-=item C<i_machcthr>
-
-From F<i_machcthr.U>:
-
-This variable conditionally defines the C<I_MACH_CTHREADS> symbol,
-and indicates whether a C program should include <mach/cthreads.h>.
-
-=item C<i_malloc>
-
-From F<i_malloc.U>:
-
-This variable conditionally defines the C<I_MALLOC> symbol, and indicates
-whether a C program should include <malloc.h>.
-
-=item C<i_math>
-
-From F<i_math.U>:
-
-This variable conditionally defines the C<I_MATH> symbol, and indicates
-whether a C program may include <math.h>.
-
-=item C<i_memory>
-
-From F<i_memory.U>:
-
-This variable conditionally defines the C<I_MEMORY> symbol, and indicates
-whether a C program should include <memory.h>.
-
-=item C<i_mntent>
-
-From F<i_mntent.U>:
-
-This variable conditionally defines the C<I_MNTENT> symbol, and indicates
-whether a C program should include <mntent.h>.
-
-=item C<i_ndbm>
-
-From F<i_ndbm.U>:
-
-This variable conditionally defines the C<I_NDBM> symbol, which
-indicates to the C program that <ndbm.h> exists and should
-be included.
-
-=item C<i_netdb>
-
-From F<i_netdb.U>:
-
-This variable conditionally defines the C<I_NETDB> symbol, and indicates
-whether a C program should include <netdb.h>.
-
-=item C<i_neterrno>
-
-From F<i_neterrno.U>:
-
-This variable conditionally defines the C<I_NET_ERRNO> symbol, which
-indicates to the C program that <net/errno.h> exists and should
-be included.
-
-=item C<i_netinettcp>
-
-From F<i_netinettcp.U>:
-
-This variable conditionally defines the C<I_NETINET_TCP> symbol,
-and indicates whether a C program should include <netinet/tcp.h>.
-
-=item C<i_niin>
-
-From F<i_niin.U>:
-
-This variable conditionally defines C<I_NETINET_IN>, which indicates
-to the C program that it should include <netinet/in.h>. Otherwise,
-you may try <sys/in.h>.
-
-=item C<i_poll>
-
-From F<i_poll.U>:
-
-This variable conditionally defines the C<I_POLL> symbol, and indicates
-whether a C program should include <poll.h>.
-
-=item C<i_prot>
-
-From F<i_prot.U>:
-
-This variable conditionally defines the C<I_PROT> symbol, and indicates
-whether a C program should include <prot.h>.
-
-=item C<i_pthread>
-
-From F<i_pthread.U>:
-
-This variable conditionally defines the C<I_PTHREAD> symbol,
-and indicates whether a C program should include <pthread.h>.
-
-=item C<i_pwd>
-
-From F<i_pwd.U>:
-
-This variable conditionally defines C<I_PWD>, which indicates
-to the C program that it should include <pwd.h>.
-
-=item C<i_rpcsvcdbm>
-
-From F<i_dbm.U>:
-
-This variable conditionally defines the C<I_RPCSVC_DBM> symbol, which
-indicates to the C program that <rpcsvc/dbm.h> exists and should
-be included. Some System V systems might need this instead of <dbm.h>.
-
-=item C<i_sfio>
-
-From F<i_sfio.U>:
-
-This variable conditionally defines the C<I_SFIO> symbol,
-and indicates whether a C program should include <sfio.h>.
-
-=item C<i_sgtty>
-
-From F<i_termio.U>:
-
-This variable conditionally defines the C<I_SGTTY> symbol, which
-indicates to the C program that it should include <sgtty.h> rather
-than <termio.h>.
-
-=item C<i_shadow>
-
-From F<i_shadow.U>:
-
-This variable conditionally defines the C<I_SHADOW> symbol, and indicates
-whether a C program should include <shadow.h>.
-
-=item C<i_socks>
-
-From F<i_socks.U>:
-
-This variable conditionally defines the C<I_SOCKS> symbol, and indicates
-whether a C program should include <socks.h>.
-
-=item C<i_stdarg>
-
-From F<i_varhdr.U>:
-
-This variable conditionally defines the C<I_STDARG> symbol, which
-indicates to the C program that <stdarg.h> exists and should
-be included.
-
-=item C<i_stddef>
-
-From F<i_stddef.U>:
-
-This variable conditionally defines the C<I_STDDEF> symbol, which
-indicates to the C program that <stddef.h> exists and should
-be included.
-
-=item C<i_stdlib>
-
-From F<i_stdlib.U>:
-
-This variable conditionally defines the C<I_STDLIB> symbol, which
-indicates to the C program that <stdlib.h> exists and should
-be included.
-
-=item C<i_string>
-
-From F<i_string.U>:
-
-This variable conditionally defines the C<I_STRING> symbol, which
-indicates that <string.h> should be included rather than <strings.h>.
-
-=item C<i_sunmath>
-
-From F<i_sunmath.U>:
-
-This variable conditionally defines the C<I_SUNMATH> symbol, and indicates
-whether a C program should include <sunmath.h>.
-
-=item C<i_sysaccess>
-
-From F<i_sysaccess.U>:
-
-This variable conditionally defines the C<I_SYS_ACCESS> symbol,
-and indicates whether a C program should include <sys/access.h>.
-
-=item C<i_sysdir>
-
-From F<i_sysdir.U>:
-
-This variable conditionally defines the C<I_SYS_DIR> symbol, and indicates
-whether a C program should include <sys/dir.h>.
-
-=item C<i_sysfile>
-
-From F<i_sysfile.U>:
-
-This variable conditionally defines the C<I_SYS_FILE> symbol, and indicates
-whether a C program should include <sys/file.h> to get C<R_OK> and friends.
-
-=item C<i_sysfilio>
-
-From F<i_sysioctl.U>:
-
-This variable conditionally defines the C<I_SYS_FILIO> symbol, which
-indicates to the C program that <sys/filio.h> exists and should
-be included in preference to <sys/ioctl.h>.
-
-=item C<i_sysin>
-
-From F<i_niin.U>:
-
-This variable conditionally defines C<I_SYS_IN>, which indicates
-to the C program that it should include <sys/in.h> instead of
-<netinet/in.h>.
-
-=item C<i_sysioctl>
-
-From F<i_sysioctl.U>:
-
-This variable conditionally defines the C<I_SYS_IOCTL> symbol, which
-indicates to the C program that <sys/ioctl.h> exists and should
-be included.
-
-=item C<i_syslog>
-
-From F<i_syslog.U>:
-
-This variable conditionally defines the C<I_SYSLOG> symbol,
-and indicates whether a C program should include <syslog.h>.
-
-=item C<i_sysmman>
-
-From F<i_sysmman.U>:
-
-This variable conditionally defines the C<I_SYS_MMAN> symbol, and
-indicates whether a C program should include <sys/mman.h>.
-
-=item C<i_sysmode>
-
-From F<i_sysmode.U>:
-
-This variable conditionally defines the C<I_SYSMODE> symbol,
-and indicates whether a C program should include <sys/mode.h>.
-
-=item C<i_sysmount>
-
-From F<i_sysmount.U>:
-
-This variable conditionally defines the C<I_SYSMOUNT> symbol,
-and indicates whether a C program should include <sys/mount.h>.
-
-=item C<i_sysndir>
-
-From F<i_sysndir.U>:
-
-This variable conditionally defines the C<I_SYS_NDIR> symbol, and indicates
-whether a C program should include <sys/ndir.h>.
-
-=item C<i_sysparam>
-
-From F<i_sysparam.U>:
-
-This variable conditionally defines the C<I_SYS_PARAM> symbol, and indicates
-whether a C program should include <sys/param.h>.
-
-=item C<i_sysresrc>
-
-From F<i_sysresrc.U>:
-
-This variable conditionally defines the C<I_SYS_RESOURCE> symbol,
-and indicates whether a C program should include <sys/resource.h>.
-
-=item C<i_syssecrt>
-
-From F<i_syssecrt.U>:
-
-This variable conditionally defines the C<I_SYS_SECURITY> symbol,
-and indicates whether a C program should include <sys/security.h>.
-
-=item C<i_sysselct>
-
-From F<i_sysselct.U>:
-
-This variable conditionally defines C<I_SYS_SELECT>, which indicates
-to the C program that it should include <sys/select.h> in order to
-get the definition of struct timeval.
-
-=item C<i_syssockio>
-
-From F<i_sysioctl.U>:
-
-This variable conditionally defines C<I_SYS_SOCKIO> to indicate to the
-C program that socket ioctl codes may be found in <sys/sockio.h>
-instead of <sys/ioctl.h>.
-
-=item C<i_sysstat>
-
-From F<i_sysstat.U>:
-
-This variable conditionally defines the C<I_SYS_STAT> symbol,
-and indicates whether a C program should include <sys/stat.h>.
-
-=item C<i_sysstatfs>
-
-From F<i_sysstatfs.U>:
-
-This variable conditionally defines the C<I_SYSSTATFS> symbol,
-and indicates whether a C program should include <sys/statfs.h>.
-
-=item C<i_sysstatvfs>
-
-From F<i_sysstatvfs.U>:
-
-This variable conditionally defines the C<I_SYSSTATVFS> symbol,
-and indicates whether a C program should include <sys/statvfs.h>.
-
-=item C<i_systime>
-
-From F<i_time.U>:
-
-This variable conditionally defines C<I_SYS_TIME>, which indicates
-to the C program that it should include <sys/time.h>.
-
-=item C<i_systimek>
-
-From F<i_time.U>:
-
-This variable conditionally defines C<I_SYS_TIME_KERNEL>, which
-indicates to the C program that it should include <sys/time.h>
-with C<KERNEL> defined.
-
-=item C<i_systimes>
-
-From F<i_systimes.U>:
-
-This variable conditionally defines the C<I_SYS_TIMES> symbol, and indicates
-whether a C program should include <sys/times.h>.
-
-=item C<i_systypes>
-
-From F<i_systypes.U>:
-
-This variable conditionally defines the C<I_SYS_TYPES> symbol,
-and indicates whether a C program should include <sys/types.h>.
-
-=item C<i_sysuio>
-
-From F<i_sysuio.U>:
-
-This variable conditionally defines the C<I_SYSUIO> symbol, and indicates
-whether a C program should include <sys/uio.h>.
-
-=item C<i_sysun>
-
-From F<i_sysun.U>:
-
-This variable conditionally defines C<I_SYS_UN>, which indicates
-to the C program that it should include <sys/un.h> to get C<UNIX>
-domain socket definitions.
-
-=item C<i_sysutsname>
-
-From F<i_sysutsname.U>:
-
-This variable conditionally defines the C<I_SYSUTSNAME> symbol,
-and indicates whether a C program should include <sys/utsname.h>.
-
-=item C<i_sysvfs>
-
-From F<i_sysvfs.U>:
-
-This variable conditionally defines the C<I_SYSVFS> symbol,
-and indicates whether a C program should include <sys/vfs.h>.
-
-=item C<i_syswait>
-
-From F<i_syswait.U>:
-
-This variable conditionally defines C<I_SYS_WAIT>, which indicates
-to the C program that it should include <sys/wait.h>.
-
-=item C<i_termio>
-
-From F<i_termio.U>:
-
-This variable conditionally defines the C<I_TERMIO> symbol, which
-indicates to the C program that it should include <termio.h> rather
-than <sgtty.h>.
-
-=item C<i_termios>
-
-From F<i_termio.U>:
-
-This variable conditionally defines the C<I_TERMIOS> symbol, which
-indicates to the C program that the C<POSIX> <termios.h> file is
-to be included.
-
-=item C<i_time>
-
-From F<i_time.U>:
-
-This variable conditionally defines C<I_TIME>, which indicates
-to the C program that it should include <time.h>.
-
-=item C<i_unistd>
-
-From F<i_unistd.U>:
-
-This variable conditionally defines the C<I_UNISTD> symbol, and indicates
-whether a C program should include <unistd.h>.
-
-=item C<i_ustat>
-
-From F<i_ustat.U>:
-
-This variable conditionally defines the C<I_USTAT> symbol, and indicates
-whether a C program should include <ustat.h>.
-
-=item C<i_utime>
-
-From F<i_utime.U>:
-
-This variable conditionally defines the C<I_UTIME> symbol, and indicates
-whether a C program should include <utime.h>.
-
-=item C<i_values>
-
-From F<i_values.U>:
-
-This variable conditionally defines the C<I_VALUES> symbol, and indicates
-whether a C program may include <values.h> to get symbols like C<MAXLONG>
-and friends.
-
-=item C<i_varargs>
-
-From F<i_varhdr.U>:
-
-This variable conditionally defines C<I_VARARGS>, which indicates
-to the C program that it should include <varargs.h>.
-
-=item C<i_varhdr>
-
-From F<i_varhdr.U>:
-
-Contains the name of the header to be included to get va_dcl definition.
-Typically one of F<varargs.h> or F<stdarg.h>.
-
-=item C<i_vfork>
-
-From F<i_vfork.U>:
-
-This variable conditionally defines the C<I_VFORK> symbol, and indicates
-whether a C program should include F<vfork.h>.
-
-=item C<ignore_versioned_solibs>
-
-From F<libs.U>:
-
-This variable should be non-empty if non-versioned shared
-libraries (F<libfoo.so.x.y>) are to be ignored (because they
-cannot be linked against).
-
-=item C<inc_version_list>
-
-From F<inc_version_list.U>:
-
-This variable specifies the list of subdirectories in over
-which F<perl.c>:incpush() and F<lib/lib.pm> will automatically
-search when adding directories to @C<INC>. The elements in
-the list are separated by spaces. This is only useful
-if you have a perl library directory tree structured like the
-default one. See C<INSTALL> for how this works. The versioned
-site_perl directory was introduced in 5.005, so that is the
-lowest possible value.
-
-=item C<inc_version_list_init>
-
-From F<inc_version_list.U>:
-
-This variable holds the same list as inc_version_list, but
-each item is enclosed in double quotes and separated by commas,
-suitable for use in the C<PERL_INC_VERSION_LIST> initialization.
-
-=item C<incpath>
-
-From F<usrinc.U>:
-
-This variable must preceed the normal include path to get hte
-right one, as in F<$F<incpath/usr/include>> or F<$F<incpath/usr/lib>>.
-Value can be "" or F</bsd43> on mips.
-
-=item C<inews>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<installarchlib>
-
-From F<archlib.U>:
-
-This variable is really the same as archlibexp but may differ on
-those systems using C<AFS>. For extra portability, only this variable
-should be used in makefiles.
-
-=item C<installbin>
-
-From F<bin.U>:
-
-This variable is the same as binexp unless C<AFS> is running in which case
-the user is explicitely prompted for it. This variable should always
-be used in your makefiles for maximum portability.
-
-=item C<installman1dir>
-
-From F<man1dir.U>:
-
-This variable is really the same as man1direxp, unless you are using
-C<AFS> in which case it points to the read/write location whereas
-man1direxp only points to the read-only access location. For extra
-portability, you should only use this variable within your makefiles.
-
-=item C<installman3dir>
-
-From F<man3dir.U>:
-
-This variable is really the same as man3direxp, unless you are using
-C<AFS> in which case it points to the read/write location whereas
-man3direxp only points to the read-only access location. For extra
-portability, you should only use this variable within your makefiles.
-
-=item C<installprefix>
-
-From F<installprefix.U>:
-
-This variable holds the name of the directory below which
-"make install" will install the package. For most users, this
-is the same as prefix. However, it is useful for
-installing the software into a different (usually temporary)
-location after which it can be bundled up and moved somehow
-to the final location specified by prefix.
-
-=item C<installprefixexp>
-
-From F<installprefix.U>:
-
-This variable holds the full absolute path of installprefix
-with all F<~>-expansion done.
-
-=item C<installprivlib>
-
-From F<privlib.U>:
-
-This variable is really the same as privlibexp but may differ on
-those systems using C<AFS>. For extra portability, only this variable
-should be used in makefiles.
-
-=item C<installscript>
-
-From F<scriptdir.U>:
-
-This variable is usually the same as scriptdirexp, unless you are on
-a system running C<AFS>, in which case they may differ slightly. You
-should always use this variable within your makefiles for portability.
-
-=item C<installsitearch>
-
-From F<sitearch.U>:
-
-This variable is really the same as sitearchexp but may differ on
-those systems using C<AFS>. For extra portability, only this variable
-should be used in makefiles.
-
-=item C<installsitebin>
-
-From F<sitebin.U>:
-
-This variable is usually the same as sitebinexp, unless you are on
-a system running C<AFS>, in which case they may differ slightly. You
-should always use this variable within your makefiles for portability.
-
-=item C<installsitelib>
-
-From F<sitelib.U>:
-
-This variable is really the same as sitelibexp but may differ on
-those systems using C<AFS>. For extra portability, only this variable
-should be used in makefiles.
-
-=item C<installstyle>
-
-From F<installstyle.U>:
-
-This variable describes the C<style> of the perl installation.
-This is intended to be useful for tools that need to
-manipulate entire perl distributions. Perl itself doesn't use
-this to find its libraries -- the library directories are
-stored directly in F<Config.pm>. Currently, there are only two
-styles: C<lib> and F<lib/perl5>. The default library locations
-(e.g. privlib, sitelib) are either F<$prefix/lib> or
-F<$prefix/lib/perl5>. The former is useful if $prefix is a
-directory dedicated to perl (e.g. F</opt/perl>), while the latter
-is useful if $prefix is shared by many packages, e.g. if
-$prefix=F</usr/local>.
-
-This may later be extended to include other information, so
-be careful with pattern-matching on the results.
-
-For compatibility with F<perl5.005> and earlier, the default
-setting is based on whether or not $prefix contains the string
-C<perl>.
-
-=item C<installusrbinperl>
-
-From F<instubperl.U>:
-
-This variable tells whether Perl should be installed also as
-F</usr/bin/perl> in addition to
-F<$installbin/perl>
-
-=item C<installvendorarch>
-
-From F<vendorarch.U>:
-
-This variable is really the same as vendorarchexp but may differ on
-those systems using C<AFS>. For extra portability, only this variable
-should be used in makefiles.
-
-=item C<installvendorbin>
-
-From F<vendorbin.U>:
-
-This variable is really the same as vendorbinexp but may differ on
-those systems using C<AFS>. For extra portability, only this variable
-should be used in makefiles.
-
-=item C<installvendorlib>
-
-From F<vendorlib.U>:
-
-This variable is really the same as vendorlibexp but may differ on
-those systems using C<AFS>. For extra portability, only this variable
-should be used in makefiles.
-
-=item C<intsize>
-
-From F<intsize.U>:
-
-This variable contains the value of the C<INTSIZE> symbol, which
-indicates to the C program how many bytes there are in an int.
-
-=item C<issymlink>
-
-From F<issymlink.U>:
-
-This variable holds the test command to test for a symbolic link
-(if they are supported). Typical values include C<test -h> and
-C<test -L>.
-
-=item C<ivdformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<IV> as a signed decimal integer.
-
-=item C<ivsize>
-
-From F<perlxv.U>:
-
-This variable is the size of an C<IV> in bytes.
-
-=item C<ivtype>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's C<IV>.
-
-=back
-
-=head2 k
-
-=over 4
-
-=item C<known_extensions>
-
-From F<Extensions.U>:
-
-This variable holds a list of all C<XS> extensions included in
-the package.
-
-=item C<ksh>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=back
-
-=head2 l
-
-=over 4
-
-=item C<ld>
-
-From F<dlsrc.U>:
-
-This variable indicates the program to be used to link
-libraries for dynamic loading. On some systems, it is C<ld>.
-On C<ELF> systems, it should be $cc. Mostly, we'll try to respect
-the hint file setting.
-
-=item C<lddlflags>
-
-From F<dlsrc.U>:
-
-This variable contains any special flags that might need to be
-passed to $ld to create a shared library suitable for dynamic
-loading. It is up to the makefile to use it. For hpux, it
-should be C<-b>. For sunos 4.1, it is empty.
-
-=item C<ldflags>
-
-From F<ccflags.U>:
-
-This variable contains any additional C loader flags desired by
-the user. It is up to the Makefile to use this.
-
-=item C<ldflags_uselargefiles>
-
-From F<uselfs.U>:
-
-This variable contains the loader flags needed by large file builds
-and added to ldflags by hints files.
-
-=item C<ldlibpthname>
-
-From F<libperl.U>:
-
-This variable holds the name of the shared library
-search path, often C<LD_LIBRARY_PATH>. To get an empty
-string, the hints file must set this to C<none>.
-
-=item C<less>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the less program. After Configure runs,
-the value is reset to a plain C<less> and is not useful.
-
-=item C<lib_ext>
-
-From F<Unix.U>:
-
-This is an old synonym for _a.
-
-=item C<libc>
-
-From F<libc.U>:
-
-This variable contains the location of the C library.
-
-=item C<libperl>
-
-From F<libperl.U>:
-
-The perl executable is obtained by linking F<perlmain.c> with
-libperl, any static extensions (usually just DynaLoader),
-and any other libraries needed on this system. libperl
-is usually F<libperl.a>, but can also be F<libperl.so.xxx> if
-the user wishes to build a perl executable with a shared
-library.
-
-=item C<libpth>
-
-From F<libpth.U>:
-
-This variable holds the general path (space-separated) used to find
-libraries. It is intended to be used by other units.
-
-=item C<libs>
-
-From F<libs.U>:
-
-This variable holds the additional libraries we want to use.
-It is up to the Makefile to deal with it. The list can be empty.
-
-=item C<libsdirs>
-
-From F<libs.U>:
-
-This variable holds the directory names aka dirnames of the libraries
-we found and accepted, duplicates are removed.
-
-=item C<libsfiles>
-
-From F<libs.U>:
-
-This variable holds the filenames aka basenames of the libraries
-we found and accepted.
-
-=item C<libsfound>
-
-From F<libs.U>:
-
-This variable holds the full pathnames of the libraries
-we found and accepted.
-
-=item C<libspath>
-
-From F<libs.U>:
-
-This variable holds the directory names probed for libraries.
-
-=item C<libswanted>
-
-From F<Myinit.U>:
-
-This variable holds a list of all the libraries we want to
-search. The order is chosen to pick up the c library
-ahead of ucb or bsd libraries for SVR4.
-
-=item C<libswanted_uselargefiles>
-
-From F<uselfs.U>:
-
-This variable contains the libraries needed by large file builds
-and added to ldflags by hints files. It is a space separated list
-of the library names without the C<lib> prefix or any suffix, just
-like F<libswanted.>.
-
-=item C<line>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<lint>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<lkflags>
-
-From F<ccflags.U>:
-
-This variable contains any additional C partial linker flags desired by
-the user. It is up to the Makefile to use this.
-
-=item C<ln>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the ln program. After Configure runs,
-the value is reset to a plain C<ln> and is not useful.
-
-=item C<lns>
-
-From F<lns.U>:
-
-This variable holds the name of the command to make
-symbolic links (if they are supported). It can be used
-in the Makefile. It is either C<ln -s> or C<ln>
-
-=item C<localtime_r_proto>
-
-From F<d_localtime_r.U>:
-
-This variable encodes the prototype of localtime_r.
-It is zero if d_localtime_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_localtime_r
-is defined.
-
-=item C<locincpth>
-
-From F<ccflags.U>:
-
-This variable contains a list of additional directories to be
-searched by the compiler. The appropriate C<-I> directives will
-be added to ccflags. This is intended to simplify setting
-local directories from the Configure command line.
-It's not much, but it parallels the loclibpth stuff in F<libpth.U>.
-
-=item C<loclibpth>
-
-From F<libpth.U>:
-
-This variable holds the paths (space-separated) used to find local
-libraries. It is prepended to libpth, and is intended to be easily
-set from the command line.
-
-=item C<longdblsize>
-
-From F<d_longdbl.U>:
-
-This variable contains the value of the C<LONG_DOUBLESIZE> symbol, which
-indicates to the C program how many bytes there are in a long double,
-if this system supports long doubles.
-
-=item C<longlongsize>
-
-From F<d_longlong.U>:
-
-This variable contains the value of the C<LONGLONGSIZE> symbol, which
-indicates to the C program how many bytes there are in a long long,
-if this system supports long long.
-
-=item C<longsize>
-
-From F<intsize.U>:
-
-This variable contains the value of the C<LONGSIZE> symbol, which
-indicates to the C program how many bytes there are in a long.
-
-=item C<lp>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<lpr>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<ls>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the ls program. After Configure runs,
-the value is reset to a plain C<ls> and is not useful.
-
-=item C<lseeksize>
-
-From F<lseektype.U>:
-
-This variable defines lseektype to be something like off_t, long,
-or whatever type is used to declare lseek offset's type in the
-kernel (which also appears to be lseek's return type).
-
-=item C<lseektype>
-
-From F<lseektype.U>:
-
-This variable defines lseektype to be something like off_t, long,
-or whatever type is used to declare lseek offset's type in the
-kernel (which also appears to be lseek's return type).
-
-=back
-
-=head2 m
-
-=over 4
-
-=item C<mail>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<mailx>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<make>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the make program. After Configure runs,
-the value is reset to a plain C<make> and is not useful.
-
-=item C<make_set_make>
-
-From F<make.U>:
-
-Some versions of C<make> set the variable C<MAKE>. Others do not.
-This variable contains the string to be included in F<Makefile.SH>
-so that C<MAKE> is set if needed, and not if not needed.
-Possible values are:
-make_set_make=C<#> # If your make program handles this for you,
-make_set_make=C<MAKE=$make> # if it doesn't.
-I used a comment character so that we can distinguish a
-C<set> value (from a previous F<config.sh> or Configure C<-D> option)
-from an uncomputed value.
-
-=item C<mallocobj>
-
-From F<mallocsrc.U>:
-
-This variable contains the name of the F<malloc.o> that this package
-generates, if that F<malloc.o> is preferred over the system malloc.
-Otherwise the value is null. This variable is intended for generating
-Makefiles. See mallocsrc.
-
-=item C<mallocsrc>
-
-From F<mallocsrc.U>:
-
-This variable contains the name of the F<malloc.c> that comes with
-the package, if that F<malloc.c> is preferred over the system malloc.
-Otherwise the value is null. This variable is intended for generating
-Makefiles.
-
-=item C<malloctype>
-
-From F<mallocsrc.U>:
-
-This variable contains the kind of ptr returned by malloc and realloc.
-
-=item C<man1dir>
-
-From F<man1dir.U>:
-
-This variable contains the name of the directory in which manual
-source pages are to be put. It is the responsibility of the
-F<Makefile.SH> to get the value of this into the proper command.
-You must be prepared to do the F<~name> expansion yourself.
-
-=item C<man1direxp>
-
-From F<man1dir.U>:
-
-This variable is the same as the man1dir variable, but is filename
-expanded at configuration time, for convenient use in makefiles.
-
-=item C<man1ext>
-
-From F<man1dir.U>:
-
-This variable contains the extension that the manual page should
-have: one of C<n>, C<l>, or C<1>. The Makefile must supply the F<.>.
-See man1dir.
-
-=item C<man3dir>
-
-From F<man3dir.U>:
-
-This variable contains the name of the directory in which manual
-source pages are to be put. It is the responsibility of the
-F<Makefile.SH> to get the value of this into the proper command.
-You must be prepared to do the F<~name> expansion yourself.
-
-=item C<man3direxp>
-
-From F<man3dir.U>:
-
-This variable is the same as the man3dir variable, but is filename
-expanded at configuration time, for convenient use in makefiles.
-
-=item C<man3ext>
-
-From F<man3dir.U>:
-
-This variable contains the extension that the manual page should
-have: one of C<n>, C<l>, or C<3>. The Makefile must supply the F<.>.
-See man3dir.
-
-=back
-
-=head2 M
-
-=over 4
-
-=item C<Mcc>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the Mcc program. After Configure runs,
-the value is reset to a plain C<Mcc> and is not useful.
-
-=item C<mips_type>
-
-From F<usrinc.U>:
-
-This variable holds the environment type for the mips system.
-Possible values are "BSD 4.3" and "System V".
-
-=item C<mkdir>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the mkdir program. After Configure runs,
-the value is reset to a plain C<mkdir> and is not useful.
-
-=item C<mmaptype>
-
-From F<d_mmap.U>:
-
-This symbol contains the type of pointer returned by mmap()
-(and simultaneously the type of the first argument).
-It can be C<void *> or C<caddr_t>.
-
-=item C<modetype>
-
-From F<modetype.U>:
-
-This variable defines modetype to be something like mode_t,
-int, unsigned short, or whatever type is used to declare file
-modes for system calls.
-
-=item C<more>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the more program. After Configure runs,
-the value is reset to a plain C<more> and is not useful.
-
-=item C<multiarch>
-
-From F<multiarch.U>:
-
-This variable conditionally defines the C<MULTIARCH> symbol
-which signifies the presence of multiplatform files.
-This is normally set by hints files.
-
-=item C<mv>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<myarchname>
-
-From F<archname.U>:
-
-This variable holds the architecture name computed by Configure in
-a previous run. It is not intended to be perused by any user and
-should never be set in a hint file.
-
-=item C<mydomain>
-
-From F<myhostname.U>:
-
-This variable contains the eventual value of the C<MYDOMAIN> symbol,
-which is the domain of the host the program is going to run on.
-The domain must be appended to myhostname to form a complete host name.
-The dot comes with mydomain, and need not be supplied by the program.
-
-=item C<myhostname>
-
-From F<myhostname.U>:
-
-This variable contains the eventual value of the C<MYHOSTNAME> symbol,
-which is the name of the host the program is going to run on.
-The domain is not kept with hostname, but must be gotten from mydomain.
-The dot comes with mydomain, and need not be supplied by the program.
-
-=item C<myuname>
-
-From F<Oldconfig.U>:
-
-The output of C<uname -a> if available, otherwise the hostname. On Xenix,
-pseudo variables assignments in the output are stripped, thank you. The
-whole thing is then lower-cased.
-
-=back
-
-=head2 n
-
-=over 4
-
-=item C<n>
-
-From F<n.U>:
-
-This variable contains the C<-n> flag if that is what causes the echo
-command to suppress newline. Otherwise it is null. Correct usage is
-$echo $n "prompt for a question: $c".
-
-=item C<need_va_copy>
-
-From F<need_va_copy.U>:
-
-This symbol, if defined, indicates that the system stores
-the variable argument list datatype, va_list, in a format
-that cannot be copied by simple assignment, so that some
-other means must be used when copying is required.
-As such systems vary in their provision (or non-provision)
-of copying mechanisms, F<handy.h> defines a platform-
-C<independent> macro, Perl_va_copy(src, dst), to do the job.
-
-=item C<netdb_hlen_type>
-
-From F<netdbtype.U>:
-
-This variable holds the type used for the 2nd argument to
-gethostbyaddr(). Usually, this is int or size_t or unsigned.
-This is only useful if you have gethostbyaddr(), naturally.
-
-=item C<netdb_host_type>
-
-From F<netdbtype.U>:
-
-This variable holds the type used for the 1st argument to
-gethostbyaddr(). Usually, this is char * or void *, possibly
-with or without a const prefix.
-This is only useful if you have gethostbyaddr(), naturally.
-
-=item C<netdb_name_type>
-
-From F<netdbtype.U>:
-
-This variable holds the type used for the argument to
-gethostbyname(). Usually, this is char * or const char *.
-This is only useful if you have gethostbyname(), naturally.
-
-=item C<netdb_net_type>
-
-From F<netdbtype.U>:
-
-This variable holds the type used for the 1st argument to
-getnetbyaddr(). Usually, this is int or long.
-This is only useful if you have getnetbyaddr(), naturally.
-
-=item C<nm>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the nm program. After Configure runs,
-the value is reset to a plain C<nm> and is not useful.
-
-=item C<nm_opt>
-
-From F<usenm.U>:
-
-This variable holds the options that may be necessary for nm.
-
-=item C<nm_so_opt>
-
-From F<usenm.U>:
-
-This variable holds the options that may be necessary for nm
-to work on a shared library but that can not be used on an
-archive library. Currently, this is only used by Linux, where
-nm --dynamic is *required* to get symbols from an C<ELF> library which
-has been stripped, but nm --dynamic is *fatal* on an archive library.
-Maybe Linux should just always set usenm=false.
-
-=item C<nonxs_ext>
-
-From F<Extensions.U>:
-
-This variable holds a list of all non-xs extensions included
-in the package. All of them will be built.
-
-=item C<nroff>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the nroff program. After Configure runs,
-the value is reset to a plain C<nroff> and is not useful.
-
-=item C<nv_preserves_uv_bits>
-
-From F<perlxv.U>:
-
-This variable indicates how many of bits type uvtype
-a variable nvtype can preserve.
-
-=item C<nveformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<NV> using %e-ish floating point format.
-
-=item C<nvEUformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<NV> using %E-ish floating point format.
-
-=item C<nvfformat>
-
-From F<perlxvf.U>:
-
-This variable confains the format string used for printing
-a Perl C<NV> using %f-ish floating point format.
-
-=item C<nvFUformat>
-
-From F<perlxvf.U>:
-
-This variable confains the format string used for printing
-a Perl C<NV> using %F-ish floating point format.
-
-=item C<nvgformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<NV> using %g-ish floating point format.
-
-=item C<nvGUformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<NV> using %G-ish floating point format.
-
-=item C<nvsize>
-
-From F<perlxv.U>:
-
-This variable is the size of an C<NV> in bytes.
-
-=item C<nvtype>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's C<NV>.
-
-=back
-
-=head2 o
-
-=over 4
-
-=item C<o_nonblock>
-
-From F<nblock_io.U>:
-
-This variable bears the symbol value to be used during open() or fcntl()
-to turn on non-blocking I/O for a file descriptor. If you wish to switch
-between blocking and non-blocking, you may try ioctl(C<FIOSNBIO>) instead,
-but that is only supported by some devices.
-
-=item C<obj_ext>
-
-From F<Unix.U>:
-
-This is an old synonym for _o.
-
-=item C<old_pthread_create_joinable>
-
-From F<d_pthrattrj.U>:
-
-This variable defines the constant to use for creating joinable
-(aka undetached) pthreads. Unused if F<pthread.h> defines
-C<PTHREAD_CREATE_JOINABLE>. If used, possible values are
-C<PTHREAD_CREATE_UNDETACHED> and C<__UNDETACHED>.
-
-=item C<optimize>
-
-From F<ccflags.U>:
-
-This variable contains any F<optimizer/debugger> flag that should be used.
-It is up to the Makefile to use it.
-
-=item C<orderlib>
-
-From F<orderlib.U>:
-
-This variable is C<true> if the components of libraries must be ordered
-(with `lorder $* | tsort`) before placing them in an archive. Set to
-C<false> if ranlib or ar can generate random libraries.
-
-=item C<osname>
-
-From F<Oldconfig.U>:
-
-This variable contains the operating system name (e.g. sunos,
-solaris, hpux, etc.). It can be useful later on for setting
-defaults. Any spaces are replaced with underscores. It is set
-to a null string if we can't figure it out.
-
-=item C<osvers>
-
-From F<Oldconfig.U>:
-
-This variable contains the operating system version (e.g.
-4.1.3, 5.2, etc.). It is primarily used for helping select
-an appropriate hints file, but might be useful elsewhere for
-setting defaults. It is set to '' if we can't figure it out.
-We try to be flexible about how much of the version number
-to keep, e.g. if 4.1.1, 4.1.2, and 4.1.3 are essentially the
-same for this package, hints files might just be F<os_4.0> or
-F<os_4.1>, etc., not keeping separate files for each little release.
-
-=item C<otherlibdirs>
-
-From F<otherlibdirs.U>:
-
-This variable contains a colon-separated set of paths for the perl
-binary to search for additional library files or modules.
-These directories will be tacked to the end of @C<INC>.
-Perl will automatically search below each path for version-
-and architecture-specific directories. See inc_version_list
-for more details.
-A value of C< > means C<none> and is used to preserve this value
-for the next run through Configure.
-
-=back
-
-=head2 p
-
-=over 4
-
-=item C<package>
-
-From F<package.U>:
-
-This variable contains the name of the package being constructed.
-It is primarily intended for the use of later Configure units.
-
-=item C<pager>
-
-From F<pager.U>:
-
-This variable contains the name of the preferred pager on the system.
-Usual values are (the full pathnames of) more, less, pg, or cat.
-
-=item C<passcat>
-
-From F<nis.U>:
-
-This variable contains a command that produces the text of the
-F</etc/passwd> file. This is normally "cat F</etc/passwd>", but can be
-"ypcat passwd" when C<NIS> is used.
-On some systems, such as os390, there may be no equivalent
-command, in which case this variable is unset.
-
-=item C<patchlevel>
-
-From F<patchlevel.U>:
-
-The patchlevel level of this package.
-The value of patchlevel comes from the F<patchlevel.h> file.
-In a version number such as 5.6.1, this is the C<6>.
-In F<patchlevel.h>, this is referred to as C<PERL_VERSION>.
-
-=item C<path_sep>
-
-From F<Unix.U>:
-
-This is an old synonym for p_ in F<Head.U>, the character
-used to separate elements in the command shell search C<PATH>.
-
-=item C<perl5>
-
-From F<perl5.U>:
-
-This variable contains the full path (if any) to a previously
-installed F<perl5.005> or later suitable for running the script
-to determine inc_version_list.
-
-=item C<perl>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<perl_patchlevel>
-
-From F<patchlevel.U>:
-
-This is the Perl patch level, a numeric change identifier,
-as defined by whichever source code maintenance system
-is used to maintain the patches; currently Perforce.
-It does not correlate with the Perl version numbers or
-the maintenance versus development dichotomy except
-by also being increasing.
-
-=back
-
-=head2 P
-
-=over 4
-
-=item C<PERL_REVISION>
-
-From F<Oldsyms.U>:
-
-In a Perl version number such as 5.6.2, this is the 5.
-This value is manually set in F<patchlevel.h>
-
-=item C<PERL_SUBVERSION>
-
-From F<Oldsyms.U>:
-
-In a Perl version number such as 5.6.2, this is the 2.
-Values greater than 50 represent potentially unstable
-development subversions.
-This value is manually set in F<patchlevel.h>
-
-=item C<PERL_VERSION>
-
-From F<Oldsyms.U>:
-
-In a Perl version number such as 5.6.2, this is the 6.
-This value is manually set in F<patchlevel.h>
-
-=item C<perladmin>
-
-From F<perladmin.U>:
-
-Electronic mail address of the perl5 administrator.
-
-=item C<perllibs>
-
-From F<End.U>:
-
-The list of libraries needed by Perl only (any libraries needed
-by extensions only will by dropped, if using dynamic loading).
-
-=item C<perlpath>
-
-From F<perlpath.U>:
-
-This variable contains the eventual value of the C<PERLPATH> symbol,
-which contains the name of the perl interpreter to be used in
-shell scripts and in the "eval C<exec>" idiom. This variable is
-not necessarily the pathname of the file containing the perl
-interpreter; you must append the executable extension (_exe) if
-it is not already present. Note that Perl code that runs during
-the Perl build process cannot reference this variable, as Perl
-may not have been installed, or even if installed, may be a
-different version of Perl.
-
-=item C<pg>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the pg program. After Configure runs,
-the value is reset to a plain C<pg> and is not useful.
-
-=item C<phostname>
-
-From F<myhostname.U>:
-
-This variable contains the eventual value of the C<PHOSTNAME> symbol,
-which is a command that can be fed to popen() to get the host name.
-The program should probably not presume that the domain is or isn't
-there already.
-
-=item C<pidtype>
-
-From F<pidtype.U>:
-
-This variable defines C<PIDTYPE> to be something like pid_t, int,
-ushort, or whatever type is used to declare process ids in the kernel.
-
-=item C<plibpth>
-
-From F<libpth.U>:
-
-Holds the private path used by Configure to find out the libraries.
-Its value is prepend to libpth. This variable takes care of special
-machines, like the mips. Usually, it should be empty.
-
-=item C<pm_apiversion>
-
-From F<xs_apiversion.U>:
-
-This variable contains the version of the oldest perl
-compatible with the present perl. (That is, pure perl modules
-written for $pm_apiversion will still work for the current
-version). F<perl.c>:incpush() and F<lib/lib.pm> will automatically
-search in $sitelib for older directories across major versions
-back to pm_apiversion. This is only useful if you have a perl
-library directory tree structured like the default one. The
-versioned site_perl library was introduced in 5.005, so that's
-the default setting for this variable. It's hard to imagine
-it changing before Perl6. It is included here for symmetry
-with xs_apiveprsion -- the searching algorithms will
-(presumably) be similar.
-See the C<INSTALL> file for how this works.
-
-=item C<pmake>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<pr>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<prefix>
-
-From F<prefix.U>:
-
-This variable holds the name of the directory below which the
-user will install the package. Usually, this is F</usr/local>, and
-executables go in F</usr/local/bin>, library stuff in F</usr/local/lib>,
-man pages in F</usr/local/man>, etc. It is only used to set defaults
-for things in F<bin.U>, F<mansrc.U>, F<privlib.U>, or F<scriptdir.U>.
-
-=item C<prefixexp>
-
-From F<prefix.U>:
-
-This variable holds the full absolute path of the directory below
-which the user will install the package. Derived from prefix.
-
-=item C<privlib>
-
-From F<privlib.U>:
-
-This variable contains the eventual value of the C<PRIVLIB> symbol,
-which is the name of the private library for this package. It may
-have a F<~> on the front. It is up to the makefile to eventually create
-this directory while performing installation (with F<~> substitution).
-
-=item C<privlibexp>
-
-From F<privlib.U>:
-
-This variable is the F<~name> expanded version of privlib, so that you
-may use it directly in Makefiles or shell scripts.
-
-=item C<procselfexe>
-
-From F<d_procselfexe.U>:
-
-If d_procselfexe is defined, $procselfexe is the filename
-of the symbolic link pointing to the absolute pathname of
-the executing program.
-
-=item C<prototype>
-
-From F<prototype.U>:
-
-This variable holds the eventual value of C<CAN_PROTOTYPE>, which
-indicates the C compiler can handle funciton prototypes.
-
-=item C<ptrsize>
-
-From F<ptrsize.U>:
-
-This variable contains the value of the C<PTRSIZE> symbol, which
-indicates to the C program how many bytes there are in a pointer.
-
-=back
-
-=head2 q
-
-=over 4
-
-=item C<quadkind>
-
-From F<quadtype.U>:
-
-This variable, if defined, encodes the type of a quad:
-1 = int, 2 = long, 3 = long long, 4 = int64_t.
-
-=item C<quadtype>
-
-From F<quadtype.U>:
-
-This variable defines Quad_t to be something like long, int,
-long long, int64_t, or whatever type is used for 64-bit integers.
-
-=back
-
-=head2 r
-
-=over 4
-
-=item C<randbits>
-
-From F<randfunc.U>:
-
-Indicates how many bits are produced by the function used to
-generate normalized random numbers.
-
-=item C<randfunc>
-
-From F<randfunc.U>:
-
-Indicates the name of the random number function to use.
-Values include drand48, random, and rand. In C programs,
-the C<Drand01> macro is defined to generate uniformly distributed
-random numbers over the range [0., 1.[ (see drand01 and nrand).
-
-=item C<random_r_proto>
-
-From F<d_random_r.U>:
-
-This variable encodes the prototype of random_r.
-It is zero if d_random_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_random_r
-is defined.
-
-=item C<randseedtype>
-
-From F<randfunc.U>:
-
-Indicates the type of the argument of the seedfunc.
-
-=item C<ranlib>
-
-From F<orderlib.U>:
-
-This variable is set to the pathname of the ranlib program, if it is
-needed to generate random libraries. Set to C<:> if ar can generate
-random libraries or if random libraries are not supported
-
-=item C<rd_nodata>
-
-From F<nblock_io.U>:
-
-This variable holds the return code from read() when no data is
-present. It should be -1, but some systems return 0 when C<O_NDELAY> is
-used, which is a shame because you cannot make the difference between
-no data and an F<EOF.>. Sigh!
-
-=item C<readdir64_r_proto>
-
-From F<d_readdir64_r.U>:
-
-This variable encodes the prototype of readdir64_r.
-It is zero if d_readdir64_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_readdir64_r
-is defined.
-
-=item C<readdir_r_proto>
-
-From F<d_readdir_r.U>:
-
-This variable encodes the prototype of readdir_r.
-It is zero if d_readdir_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_readdir_r
-is defined.
-
-=item C<revision>
-
-From F<patchlevel.U>:
-
-The value of revision comes from the F<patchlevel.h> file.
-In a version number such as 5.6.1, this is the C<5>.
-In F<patchlevel.h>, this is referred to as C<PERL_REVISION>.
-
-=item C<rm>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the rm program. After Configure runs,
-the value is reset to a plain C<rm> and is not useful.
-
-=item C<rmail>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<run>
-
-From F<Cross.U>:
-
-This variable contains the command used by Configure
-to copy and execute a cross-compiled executable in the
-target host. Useful and available only during Perl build.
-Empty string '' if not cross-compiling.
-
-=item C<runnm>
-
-From F<usenm.U>:
-
-This variable contains C<true> or C<false> depending whether the
-nm extraction should be performed or not, according to the value
-of usenm and the flags on the Configure command line.
-
-=back
-
-=head2 s
-
-=over 4
-
-=item C<sched_yield>
-
-From F<d_pthread_y.U>:
-
-This variable defines the way to yield the execution
-of the current thread.
-
-=item C<scriptdir>
-
-From F<scriptdir.U>:
-
-This variable holds the name of the directory in which the user wants
-to put publicly scripts for the package in question. It is either
-the same directory as for binaries, or a special one that can be
-mounted across different architectures, like F</usr/share>. Programs
-must be prepared to deal with F<~name> expansion.
-
-=item C<scriptdirexp>
-
-From F<scriptdir.U>:
-
-This variable is the same as scriptdir, but is filename expanded
-at configuration time, for programs not wanting to bother with it.
-
-=item C<sed>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the sed program. After Configure runs,
-the value is reset to a plain C<sed> and is not useful.
-
-=item C<seedfunc>
-
-From F<randfunc.U>:
-
-Indicates the random number generating seed function.
-Values include srand48, srandom, and srand.
-
-=item C<selectminbits>
-
-From F<selectminbits.U>:
-
-This variable holds the minimum number of bits operated by select.
-That is, if you do select(n, ...), how many bits at least will be
-cleared in the masks if some activity is detected. Usually this
-is either n or 32*ceil(F<n/32>), especially many little-endians do
-the latter. This is only useful if you have select(), naturally.
-
-=item C<selecttype>
-
-From F<selecttype.U>:
-
-This variable holds the type used for the 2nd, 3rd, and 4th
-arguments to select. Usually, this is C<fd_set *>, if C<HAS_FD_SET>
-is defined, and C<int *> otherwise. This is only useful if you
-have select(), naturally.
-
-=item C<sendmail>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<setgrent_r_proto>
-
-From F<d_setgrent_r.U>:
-
-This variable encodes the prototype of setgrent_r.
-It is zero if d_setgrent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_setgrent_r
-is defined.
-
-=item C<sethostent_r_proto>
-
-From F<d_sethostent_r.U>:
-
-This variable encodes the prototype of sethostent_r.
-It is zero if d_sethostent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_sethostent_r
-is defined.
-
-=item C<setlocale_r_proto>
-
-From F<d_setlocale_r.U>:
-
-This variable encodes the prototype of setlocale_r.
-It is zero if d_setlocale_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_setlocale_r
-is defined.
-
-=item C<setnetent_r_proto>
-
-From F<d_setnetent_r.U>:
-
-This variable encodes the prototype of setnetent_r.
-It is zero if d_setnetent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_setnetent_r
-is defined.
-
-=item C<setprotoent_r_proto>
-
-From F<d_setprotoent_r.U>:
-
-This variable encodes the prototype of setprotoent_r.
-It is zero if d_setprotoent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_setprotoent_r
-is defined.
-
-=item C<setpwent_r_proto>
-
-From F<d_setpwent_r.U>:
-
-This variable encodes the prototype of setpwent_r.
-It is zero if d_setpwent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_setpwent_r
-is defined.
-
-=item C<setservent_r_proto>
-
-From F<d_setservent_r.U>:
-
-This variable encodes the prototype of setservent_r.
-It is zero if d_setservent_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_setservent_r
-is defined.
-
-=item C<sh>
-
-From F<sh.U>:
-
-This variable contains the full pathname of the shell used
-on this system to execute Bourne shell scripts. Usually, this will be
-F</bin/sh>, though it's possible that some systems will have F</bin/ksh>,
-F</bin/pdksh>, F</bin/ash>, F</bin/bash>, or even something such as
-D:F</bin/sh.exe>.
-This unit comes before F<Options.U>, so you can't set sh with a C<-D>
-option, though you can override this (and startsh)
-with C<-O -Dsh=F</bin/whatever> -Dstartsh=whatever>
-
-=item C<shar>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<sharpbang>
-
-From F<spitshell.U>:
-
-This variable contains the string #! if this system supports that
-construct.
-
-=item C<shmattype>
-
-From F<d_shmat.U>:
-
-This symbol contains the type of pointer returned by shmat().
-It can be C<void *> or C<char *>.
-
-=item C<shortsize>
-
-From F<intsize.U>:
-
-This variable contains the value of the C<SHORTSIZE> symbol which
-indicates to the C program how many bytes there are in a short.
-
-=item C<shrpenv>
-
-From F<libperl.U>:
-
-If the user builds a shared F<libperl.so>, then we need to tell the
-C<perl> executable where it will be able to find the installed F<libperl.so>.
-One way to do this on some systems is to set the environment variable
-C<LD_RUN_PATH> to the directory that will be the final location of the
-shared F<libperl.so>. The makefile can use this with something like
-$shrpenv $(C<CC>) -o perl F<perlmain.o> $libperl $libs
-Typical values are
-shrpenv="env C<LD_RUN_PATH>=F<$archlibexp/C<CORE>>"
-or
-shrpenv=''
-See the main perl F<Makefile.SH> for actual working usage.
-Alternatively, we might be able to use a command line option such
-as -R F<$archlibexp/C<CORE>> (Solaris) or -Wl,-rpath
-F<$archlibexp/C<CORE>> (Linux).
-
-=item C<shsharp>
-
-From F<spitshell.U>:
-
-This variable tells further Configure units whether your sh can
-handle # comments.
-
-=item C<sig_count>
-
-From F<sig_name.U>:
-
-This variable holds a number larger than the largest valid
-signal number. This is usually the same as the C<NSIG> macro.
-
-=item C<sig_name>
-
-From F<sig_name.U>:
-
-This variable holds the signal names, space separated. The leading
-C<SIG> in signal name is removed. A C<ZERO> is prepended to the
-list. This is currently not used.
-
-=item C<sig_name_init>
-
-From F<sig_name.U>:
-
-This variable holds the signal names, enclosed in double quotes and
-separated by commas, suitable for use in the C<SIG_NAME> definition
-below. A C<ZERO> is prepended to the list, and the list is
-terminated with a plain 0. The leading C<SIG> in signal names
-is removed. See sig_num.
-
-=item C<sig_num>
-
-From F<sig_name.U>:
-
-This variable holds the signal numbers, space separated. A C<ZERO> is
-prepended to the list (corresponding to the fake C<SIGZERO>), and
-the list is terminated with a 0. Those numbers correspond to
-the value of the signal listed in the same place within the
-sig_name list.
-
-=item C<sig_num_init>
-
-From F<sig_name.U>:
-
-This variable holds the signal numbers, enclosed in double quotes and
-separated by commas, suitable for use in the C<SIG_NUM> definition
-below. A C<ZERO> is prepended to the list, and the list is
-terminated with a plain 0.
-
-=item C<sig_size>
-
-From F<sig_name.U>:
-
-This variable contains the number of elements of the sig_name
-and sig_num arrays, excluding the final C<NULL> entry.
-
-=item C<signal_t>
-
-From F<d_voidsig.U>:
-
-This variable holds the type of the signal handler (void or int).
-
-=item C<sitearch>
-
-From F<sitearch.U>:
-
-This variable contains the eventual value of the C<SITEARCH> symbol,
-which is the name of the private library for this package. It may
-have a F<~> on the front. It is up to the makefile to eventually create
-this directory while performing installation (with F<~> substitution).
-The standard distribution will put nothing in this directory.
-After perl has been installed, users may install their own local
-architecture-dependent modules in this directory with
-MakeMaker F<Makefile.PL>
-or equivalent. See C<INSTALL> for details.
-
-=item C<sitearchexp>
-
-From F<sitearch.U>:
-
-This variable is the F<~name> expanded version of sitearch, so that you
-may use it directly in Makefiles or shell scripts.
-
-=item C<sitebin>
-
-From F<sitebin.U>:
-
-This variable holds the name of the directory in which the user wants
-to put add-on publicly executable files for the package in question. It
-is most often a local directory such as F</usr/local/bin>. Programs using
-this variable must be prepared to deal with F<~name> substitution.
-The standard distribution will put nothing in this directory.
-After perl has been installed, users may install their own local
-executables in this directory with
-MakeMaker F<Makefile.PL>
-or equivalent. See C<INSTALL> for details.
-
-=item C<sitebinexp>
-
-From F<sitebin.U>:
-
-This is the same as the sitebin variable, but is filename expanded at
-configuration time, for use in your makefiles.
-
-=item C<sitelib>
-
-From F<sitelib.U>:
-
-This variable contains the eventual value of the C<SITELIB> symbol,
-which is the name of the private library for this package. It may
-have a F<~> on the front. It is up to the makefile to eventually create
-this directory while performing installation (with F<~> substitution).
-The standard distribution will put nothing in this directory.
-After perl has been installed, users may install their own local
-architecture-independent modules in this directory with
-MakeMaker F<Makefile.PL>
-or equivalent. See C<INSTALL> for details.
-
-=item C<sitelib_stem>
-
-From F<sitelib.U>:
-
-This variable is $sitelibexp with any trailing version-specific component
-removed. The elements in inc_version_list (F<inc_version_list.U>) can
-be tacked onto this variable to generate a list of directories to search.
-
-=item C<sitelibexp>
-
-From F<sitelib.U>:
-
-This variable is the F<~name> expanded version of sitelib, so that you
-may use it directly in Makefiles or shell scripts.
-
-=item C<siteprefix>
-
-From F<siteprefix.U>:
-
-This variable holds the full absolute path of the directory below
-which the user will install add-on packages.
-See C<INSTALL> for usage and examples.
-
-=item C<siteprefixexp>
-
-From F<siteprefix.U>:
-
-This variable holds the full absolute path of the directory below
-which the user will install add-on packages. Derived from siteprefix.
-
-=item C<sizesize>
-
-From F<sizesize.U>:
-
-This variable contains the size of a sizetype in bytes.
-
-=item C<sizetype>
-
-From F<sizetype.U>:
-
-This variable defines sizetype to be something like size_t,
-unsigned long, or whatever type is used to declare length
-parameters for string functions.
-
-=item C<sleep>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<smail>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<so>
-
-From F<so.U>:
-
-This variable holds the extension used to identify shared libraries
-(also known as shared objects) on the system. Usually set to C<so>.
-
-=item C<sockethdr>
-
-From F<d_socket.U>:
-
-This variable has any cpp C<-I> flags needed for socket support.
-
-=item C<socketlib>
-
-From F<d_socket.U>:
-
-This variable has the names of any libraries needed for socket support.
-
-=item C<socksizetype>
-
-From F<socksizetype.U>:
-
-This variable holds the type used for the size argument
-for various socket calls like accept. Usual values include
-socklen_t, size_t, and int.
-
-=item C<sort>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the sort program. After Configure runs,
-the value is reset to a plain C<sort> and is not useful.
-
-=item C<spackage>
-
-From F<package.U>:
-
-This variable contains the name of the package being constructed,
-with the first letter uppercased, F<i.e>. suitable for starting
-sentences.
-
-=item C<spitshell>
-
-From F<spitshell.U>:
-
-This variable contains the command necessary to spit out a runnable
-shell on this system. It is either cat or a grep C<-v> for # comments.
-
-=item C<sPRId64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit decimal numbers (format C<d>) for output.
-
-=item C<sPRIeldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<e>) for output.
-
-=item C<sPRIEUldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<E>) for output.
-The C<U> in the name is to separate this from sPRIeldbl so that even
-case-blind systems can see the difference.
-
-=item C<sPRIfldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<f>) for output.
-
-=item C<sPRIFUldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<F>) for output.
-The C<U> in the name is to separate this from sPRIfldbl so that even
-case-blind systems can see the difference.
-
-=item C<sPRIgldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<g>) for output.
-
-=item C<sPRIGUldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<G>) for output.
-The C<U> in the name is to separate this from sPRIgldbl so that even
-case-blind systems can see the difference.
-
-=item C<sPRIi64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit decimal numbers (format C<i>) for output.
-
-=item C<sPRIo64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit octal numbers (format C<o>) for output.
-
-=item C<sPRIu64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit unsigned decimal numbers (format C<u>) for output.
-
-=item C<sPRIx64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit hexadecimal numbers (format C<x>) for output.
-
-=item C<sPRIXU64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit hExADECimAl numbers (format C<X>) for output.
-The C<U> in the name is to separate this from sPRIx64 so that even
-case-blind systems can see the difference.
-
-=item C<srand48_r_proto>
-
-From F<d_srand48_r.U>:
-
-This variable encodes the prototype of srand48_r.
-It is zero if d_srand48_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_srand48_r
-is defined.
-
-=item C<srandom_r_proto>
-
-From F<d_srandom_r.U>:
-
-This variable encodes the prototype of srandom_r.
-It is zero if d_srandom_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_srandom_r
-is defined.
-
-=item C<src>
-
-From F<src.U>:
-
-This variable holds the path to the package source. It is up to
-the Makefile to use this variable and set C<VPATH> accordingly to
-find the sources remotely.
-
-=item C<sSCNfldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<f>) for input.
-
-=item C<ssizetype>
-
-From F<ssizetype.U>:
-
-This variable defines ssizetype to be something like ssize_t,
-long or int. It is used by functions that return a count
-of bytes or an error condition. It must be a signed type.
-We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
-
-=item C<startperl>
-
-From F<startperl.U>:
-
-This variable contains the string to put on the front of a perl
-script to make sure (hopefully) that it runs with perl and not some
-shell. Of course, that leading line must be followed by the classical
-perl idiom:
-eval 'exec perl -S $0 ${1+C<$@>}'
-if $running_under_some_shell;
-to guarantee perl startup should the shell execute the script. Note
-that this magic incatation is not understood by csh.
-
-=item C<startsh>
-
-From F<startsh.U>:
-
-This variable contains the string to put on the front of a shell
-script to make sure (hopefully) that it runs with sh and not some
-other shell.
-
-=item C<static_ext>
-
-From F<Extensions.U>:
-
-This variable holds a list of C<XS> extension files we want to
-link statically into the package. It is used by Makefile.
-
-=item C<stdchar>
-
-From F<stdchar.U>:
-
-This variable conditionally defines C<STDCHAR> to be the type of char
-used in F<stdio.h>. It has the values "unsigned char" or C<char>.
-
-=item C<stdio_base>
-
-From F<d_stdstdio.U>:
-
-This variable defines how, given a C<FILE> pointer, fp, to access the
-_base field (or equivalent) of F<stdio.h>'s C<FILE> structure. This will
-be used to define the macro FILE_base(fp).
-
-=item C<stdio_bufsiz>
-
-From F<d_stdstdio.U>:
-
-This variable defines how, given a C<FILE> pointer, fp, to determine
-the number of bytes store in the I/O buffer pointer to by the
-_base field (or equivalent) of F<stdio.h>'s C<FILE> structure. This will
-be used to define the macro FILE_bufsiz(fp).
-
-=item C<stdio_cnt>
-
-From F<d_stdstdio.U>:
-
-This variable defines how, given a C<FILE> pointer, fp, to access the
-_cnt field (or equivalent) of F<stdio.h>'s C<FILE> structure. This will
-be used to define the macro FILE_cnt(fp).
-
-=item C<stdio_filbuf>
-
-From F<d_stdstdio.U>:
-
-This variable defines how, given a C<FILE> pointer, fp, to tell
-stdio to refill its internal buffers (?). This will
-be used to define the macro FILE_filbuf(fp).
-
-=item C<stdio_ptr>
-
-From F<d_stdstdio.U>:
-
-This variable defines how, given a C<FILE> pointer, fp, to access the
-_ptr field (or equivalent) of F<stdio.h>'s C<FILE> structure. This will
-be used to define the macro FILE_ptr(fp).
-
-=item C<stdio_stream_array>
-
-From F<stdio_streams.U>:
-
-This variable tells the name of the array holding the stdio streams.
-Usual values include _iob, __iob, and __sF.
-
-=item C<strerror_r_proto>
-
-From F<d_strerror_r.U>:
-
-This variable encodes the prototype of strerror_r.
-It is zero if d_strerror_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_strerror_r
-is defined.
-
-=item C<strings>
-
-From F<i_string.U>:
-
-This variable holds the full path of the string header that will be
-used. Typically F</usr/include/string.h> or F</usr/include/strings.h>.
-
-=item C<submit>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<subversion>
-
-From F<patchlevel.U>:
-
-The subversion level of this package.
-The value of subversion comes from the F<patchlevel.h> file.
-In a version number such as 5.6.1, this is the C<1>.
-In F<patchlevel.h>, this is referred to as C<PERL_SUBVERSION>.
-This is unique to perl.
-
-=item C<sysman>
-
-From F<sysman.U>:
-
-This variable holds the place where the manual is located on this
-system. It is not the place where the user wants to put his manual
-pages. Rather it is the place where Configure may look to find manual
-for unix commands (section 1 of the manual usually). See mansrc.
-
-=back
-
-=head2 t
-
-=over 4
-
-=item C<tail>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<tar>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<targetarch>
-
-From F<Cross.U>:
-
-If cross-compiling, this variable contains the target architecture.
-If not, this will be empty.
-
-=item C<tbl>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<tee>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<test>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the test program. After Configure runs,
-the value is reset to a plain C<test> and is not useful.
-
-=item C<timeincl>
-
-From F<i_time.U>:
-
-This variable holds the full path of the included time header(s).
-
-=item C<timetype>
-
-From F<d_time.U>:
-
-This variable holds the type returned by time(). It can be long,
-or time_t on C<BSD> sites (in which case <sys/types.h> should be
-included). Anyway, the type Time_t should be used.
-
-=item C<tmpnam_r_proto>
-
-From F<d_tmpnam_r.U>:
-
-This variable encodes the prototype of tmpnam_r.
-It is zero if d_tmpnam_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_tmpnam_r
-is defined.
-
-=item C<to>
-
-From F<Cross.U>:
-
-This variable contains the command used by Configure
-to copy to from the target host. Useful and available
-only during Perl build.
-The string C<:> if not cross-compiling.
-
-=item C<touch>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the touch program. After Configure runs,
-the value is reset to a plain C<touch> and is not useful.
-
-=item C<tr>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the tr program. After Configure runs,
-the value is reset to a plain C<tr> and is not useful.
-
-=item C<trnl>
-
-From F<trnl.U>:
-
-This variable contains the value to be passed to the tr(1)
-command to transliterate a newline. Typical values are
-C<\012> and C<\n>. This is needed for C<EBCDIC> systems where
-newline is not necessarily C<\012>.
-
-=item C<troff>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<ttyname_r_proto>
-
-From F<d_ttyname_r.U>:
-
-This variable encodes the prototype of ttyname_r.
-It is zero if d_ttyname_r is undef, and one of the
-C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_ttyname_r
-is defined.
-
-=back
-
-=head2 u
-
-=over 4
-
-=item C<u16size>
-
-From F<perlxv.U>:
-
-This variable is the size of an U16 in bytes.
-
-=item C<u16type>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's U16.
-
-=item C<u32size>
-
-From F<perlxv.U>:
-
-This variable is the size of an U32 in bytes.
-
-=item C<u32type>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's U32.
-
-=item C<u64size>
-
-From F<perlxv.U>:
-
-This variable is the size of an U64 in bytes.
-
-=item C<u64type>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's U64.
-
-=item C<u8size>
-
-From F<perlxv.U>:
-
-This variable is the size of an U8 in bytes.
-
-=item C<u8type>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's U8.
-
-=item C<uidformat>
-
-From F<uidf.U>:
-
-This variable contains the format string used for printing a Uid_t.
-
-=item C<uidsign>
-
-From F<uidsign.U>:
-
-This variable contains the signedness of a uidtype.
-1 for unsigned, -1 for signed.
-
-=item C<uidsize>
-
-From F<uidsize.U>:
-
-This variable contains the size of a uidtype in bytes.
-
-=item C<uidtype>
-
-From F<uidtype.U>:
-
-This variable defines Uid_t to be something like uid_t, int,
-ushort, or whatever type is used to declare user ids in the kernel.
-
-=item C<uname>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the uname program. After Configure runs,
-the value is reset to a plain C<uname> and is not useful.
-
-=item C<uniq>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the uniq program. After Configure runs,
-the value is reset to a plain C<uniq> and is not useful.
-
-=item C<uquadtype>
-
-From F<quadtype.U>:
-
-This variable defines Uquad_t to be something like unsigned long,
-unsigned int, unsigned long long, uint64_t, or whatever type is
-used for 64-bit integers.
-
-=item C<use5005threads>
-
-From F<usethreads.U>:
-
-This variable conditionally defines the USE_5005THREADS symbol,
-and indicates that Perl should be built to use the 5.005-based
-threading implementation.
-
-=item C<use64bitall>
-
-From F<use64bits.U>:
-
-This variable conditionally defines the USE_64_BIT_ALL symbol,
-and indicates that 64-bit integer types should be used
-when available. The maximal possible
-64-bitness is employed: LP64 or ILP64, meaning that you will
-be able to use more than 2 gigabytes of memory. This mode is
-even more binary incompatible than USE_64_BIT_INT. You may not
-be able to run the resulting executable in a 32-bit C<CPU> at all or
-you may need at least to reboot your C<OS> to 64-bit mode.
-
-=item C<use64bitint>
-
-From F<use64bits.U>:
-
-This variable conditionally defines the USE_64_BIT_INT symbol,
-and indicates that 64-bit integer types should be used
-when available. The minimal possible 64-bitness
-is employed, just enough to get 64-bit integers into Perl.
-This may mean using for example "long longs", while your memory
-may still be limited to 2 gigabytes.
-
-=item C<usecrosscompile>
-
-From F<Cross.U>:
-
-This variable conditionally defines the C<USE_CROSS_COMPILE> symbol,
-and indicates that Perl has been cross-compiled.
-
-=item C<usedl>
-
-From F<dlsrc.U>:
-
-This variable indicates if the system supports dynamic
-loading of some sort. See also dlsrc and dlobj.
-
-=item C<useithreads>
-
-From F<usethreads.U>:
-
-This variable conditionally defines the C<USE_ITHREADS> symbol,
-and indicates that Perl should be built to use the interpreter-based
-threading implementation.
-
-=item C<uselargefiles>
-
-From F<uselfs.U>:
-
-This variable conditionally defines the C<USE_LARGE_FILES> symbol,
-and indicates that large file interfaces should be used when
-available.
-
-=item C<uselongdouble>
-
-From F<uselongdbl.U>:
-
-This variable conditionally defines the C<USE_LONG_DOUBLE> symbol,
-and indicates that long doubles should be used when available.
-
-=item C<usemorebits>
-
-From F<usemorebits.U>:
-
-This variable conditionally defines the C<USE_MORE_BITS> symbol,
-and indicates that explicit 64-bit interfaces and long doubles
-should be used when available.
-
-=item C<usemultiplicity>
-
-From F<usemultiplicity.U>:
-
-This variable conditionally defines the C<MULTIPLICITY> symbol,
-and indicates that Perl should be built to use multiplicity.
-
-=item C<usemymalloc>
-
-From F<mallocsrc.U>:
-
-This variable contains y if the malloc that comes with this package
-is desired over the system's version of malloc. People often include
-special versions of malloc for effiency, but such versions are often
-less portable. See also mallocsrc and mallocobj.
-If this is C<y>, then -lmalloc is removed from $libs.
-
-=item C<usenm>
-
-From F<usenm.U>:
-
-This variable contains C<true> or C<false> depending whether the
-nm extraction is wanted or not.
-
-=item C<useopcode>
-
-From F<Extensions.U>:
-
-This variable holds either C<true> or C<false> to indicate
-whether the Opcode extension should be used. The sole
-use for this currently is to allow an easy mechanism
-for users to skip the Opcode extension from the Configure
-command line.
-
-=item C<useperlio>
-
-From F<useperlio.U>:
-
-This variable conditionally defines the C<USE_PERLIO> symbol,
-and indicates that the PerlIO abstraction should be
-used throughout.
-
-=item C<useposix>
-
-From F<Extensions.U>:
-
-This variable holds either C<true> or C<false> to indicate
-whether the C<POSIX> extension should be used. The sole
-use for this currently is to allow an easy mechanism
-for hints files to indicate that C<POSIX> will not compile
-on a particular system.
-
-=item C<usereentrant>
-
-From F<usethreads.U>:
-
-This variable conditionally defines the C<USE_REENTRANT_API> symbol,
-which indicates that the thread code may try to use the various
-_r versions of library functions. This is only potentially
-meaningful if usethreads is set and is very experimental, it is
-not even prompted for.
-
-=item C<usesfio>
-
-From F<d_sfio.U>:
-
-This variable is set to true when the user agrees to use sfio.
-It is set to false when sfio is not available or when the user
-explicitely requests not to use sfio. It is here primarily so
-that command-line settings can override the auto-detection of
-d_sfio without running into a "WHOA THERE".
-
-=item C<useshrplib>
-
-From F<libperl.U>:
-
-This variable is set to C<yes> if the user wishes
-to build a shared libperl, and C<no> otherwise.
-
-=item C<usesocks>
-
-From F<usesocks.U>:
-
-This variable conditionally defines the C<USE_SOCKS> symbol,
-and indicates that Perl should be built to use C<SOCKS>.
-
-=item C<usethreads>
-
-From F<usethreads.U>:
-
-This variable conditionally defines the C<USE_THREADS> symbol,
-and indicates that Perl should be built to use threads.
-
-=item C<usevendorprefix>
-
-From F<vendorprefix.U>:
-
-This variable tells whether the vendorprefix
-and consequently other vendor* paths are in use.
-
-=item C<usevfork>
-
-From F<d_vfork.U>:
-
-This variable is set to true when the user accepts to use vfork.
-It is set to false when no vfork is available or when the user
-explicitely requests not to use vfork.
-
-=item C<usrinc>
-
-From F<usrinc.U>:
-
-This variable holds the path of the include files, which is
-usually F</usr/include>. It is mainly used by other Configure units.
-
-=item C<uuname>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<uvoformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<UV> as an unsigned octal integer.
-
-=item C<uvsize>
-
-From F<perlxv.U>:
-
-This variable is the size of a C<UV> in bytes.
-
-=item C<uvtype>
-
-From F<perlxv.U>:
-
-This variable contains the C type used for Perl's C<UV>.
-
-=item C<uvuformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<UV> as an unsigned decimal integer.
-
-=item C<uvxformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<UV> as an unsigned hexadecimal integer in lowercase abcdef.
-
-=item C<uvXUformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<UV> as an unsigned hexadecimal integer in uppercase C<ABCDEF>.
-
-=back
-
-=head2 v
-
-=over 4
-
-=item C<vendorarch>
-
-From F<vendorarch.U>:
-
-This variable contains the value of the C<PERL_VENDORARCH> symbol.
-It may have a F<~> on the front.
-The standard distribution will put nothing in this directory.
-Vendors who distribute perl may wish to place their own
-architecture-dependent modules and extensions in this directory with
-MakeMaker F<Makefile.PL> C<INSTALLDIRS>=vendor
-or equivalent. See C<INSTALL> for details.
-
-=item C<vendorarchexp>
-
-From F<vendorarch.U>:
-
-This variable is the F<~name> expanded version of vendorarch, so that you
-may use it directly in Makefiles or shell scripts.
-
-=item C<vendorbin>
-
-From F<vendorbin.U>:
-
-This variable contains the eventual value of the C<VENDORBIN> symbol.
-It may have a F<~> on the front.
-The standard distribution will put nothing in this directory.
-Vendors who distribute perl may wish to place additional
-binaries in this directory with
-MakeMaker F<Makefile.PL> C<INSTALLDIRS>=vendor
-or equivalent. See C<INSTALL> for details.
-
-=item C<vendorbinexp>
-
-From F<vendorbin.U>:
-
-This variable is the F<~name> expanded version of vendorbin, so that you
-may use it directly in Makefiles or shell scripts.
-
-=item C<vendorlib>
-
-From F<vendorlib.U>:
-
-This variable contains the eventual value of the C<VENDORLIB> symbol,
-which is the name of the private library for this package.
-The standard distribution will put nothing in this directory.
-Vendors who distribute perl may wish to place their own
-modules in this directory with
-MakeMaker F<Makefile.PL> C<INSTALLDIRS>=vendor
-or equivalent. See C<INSTALL> for details.
-
-=item C<vendorlib_stem>
-
-From F<vendorlib.U>:
-
-This variable is $vendorlibexp with any trailing version-specific component
-removed. The elements in inc_version_list (F<inc_version_list.U>) can
-be tacked onto this variable to generate a list of directories to search.
-
-=item C<vendorlibexp>
-
-From F<vendorlib.U>:
-
-This variable is the F<~name> expanded version of vendorlib, so that you
-may use it directly in Makefiles or shell scripts.
-
-=item C<vendorprefix>
-
-From F<vendorprefix.U>:
-
-This variable holds the full absolute path of the directory below
-which the vendor will install add-on packages.
-See C<INSTALL> for usage and examples.
-
-=item C<vendorprefixexp>
-
-From F<vendorprefix.U>:
-
-This variable holds the full absolute path of the directory below
-which the vendor will install add-on packages. Derived from vendorprefix.
-
-=item C<version>
-
-From F<patchlevel.U>:
-
-The full version number of this package, such as 5.6.1 (or 5_6_1).
-This combines revision, patchlevel, and subversion to get the
-full version number, including any possible subversions.
-This is suitable for use as a directory name, and hence is
-filesystem dependent.
-
-=item C<version_patchlevel_string>
-
-From F<patchlevel.U>:
-
-This is a string combining version, subversion and
-perl_patchlevel (if perl_patchlevel is non-zero).
-It is typically something like
-'version 7 subversion 1' or
-'version 7 subversion 1 patchlevel 11224'
-It is computed here to avoid duplication of code in F<myconfig.SH>
-and F<lib/Config.pm>.
-
-=item C<versiononly>
-
-From F<versiononly.U>:
-
-If set, this symbol indicates that only the version-specific
-components of a perl installation should be installed.
-This may be useful for making a test installation of a new
-version without disturbing the existing installation.
-Setting versiononly is equivalent to setting installperl's -v option.
-In particular, the non-versioned scripts and programs such as
-a2p, c2ph, h2xs, pod2*, and perldoc are not installed
-(see C<INSTALL> for a more complete list). Nor are the man
-pages installed.
-Usually, this is undef.
-
-=item C<vi>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<voidflags>
-
-From F<voidflags.U>:
-
-This variable contains the eventual value of the C<VOIDFLAGS> symbol,
-which indicates how much support of the void type is given by this
-compiler. See C<VOIDFLAGS> for more info.
-
-=back
-
-=head2 x
-
-=over 4
-
-=item C<xlibpth>
-
-From F<libpth.U>:
-
-This variable holds extra path (space-separated) used to find
-libraries on this platform, for example C<CPU>-specific libraries
-(on multi-C<CPU> platforms) may be listed here.
-
-=item C<xs_apiversion>
-
-From F<xs_apiversion.U>:
-
-This variable contains the version of the oldest perl binary
-compatible with the present perl. F<perl.c>:incpush() and
-F<lib/lib.pm> will automatically search in $sitearch for older
-directories across major versions back to xs_apiversion.
-This is only useful if you have a perl library directory tree
-structured like the default one.
-See C<INSTALL> for how this works.
-The versioned site_perl directory was introduced in 5.005,
-so that is the lowest possible value.
-Since this can depend on compile time options
-it is set by Configure. Other non-default sources
-of potential incompatibility, such as multiplicity, threads,
-debugging, 64bits, sfio, etc., are not checked for currently,
-though in principle we could go snooping around in old
-F<Config.pm> files.
-
-=back
-
-=head2 y
-
-=over 4
-
-=item C<yacc>
-
-From F<yacc.U>:
-
-This variable holds the name of the compiler compiler we
-want to use in the Makefile. It can be yacc, byacc, or bison -y.
-
-=item C<yaccflags>
-
-From F<yacc.U>:
-
-This variable contains any additional yacc flags desired by the
-user. It is up to the Makefile to use this.
-
-=back
-
-=head2 z
-
-=over 4
-
-=item C<zcat>
-
-From F<Loc.U>:
-
-This variable is defined but not used by Configure.
-The value is a plain '' and is not useful.
-
-=item C<zip>
-
-From F<Loc.U>:
-
-This variable is used internally by Configure to determine the
-full pathname (if any) of the zip program. After Configure runs,
-the value is reset to a plain C<zip> and is not useful.
-
-
-=back
-
-=head1 NOTE
-
-This module contains a good example of how to use tie to implement a
-cache and an example of how to make a tied variable readonly to those
-outside of it.
-
-=cut
-
diff --git a/Master/perltl/lib/Cwd.pm b/Master/perltl/lib/Cwd.pm
deleted file mode 100644
index 8b00543e1e9..00000000000
--- a/Master/perltl/lib/Cwd.pm
+++ /dev/null
@@ -1,570 +0,0 @@
-package Cwd;
-use 5.006;
-
-=head1 NAME
-
-Cwd - get pathname of current working directory
-
-=head1 SYNOPSIS
-
- use Cwd;
- my $dir = getcwd;
-
- use Cwd 'abs_path';
- my $abs_path = abs_path($file);
-
-=head1 DESCRIPTION
-
-This module provides functions for determining the pathname of the
-current working directory. It is recommended that getcwd (or another
-*cwd() function) be used in I<all> code to ensure portability.
-
-By default, it exports the functions cwd(), getcwd(), fastcwd(), and
-fastgetcwd() into the caller's namespace.
-
-
-=head2 getcwd and friends
-
-Each of these functions are called without arguments and return the
-absolute path of the current working directory.
-
-=over 4
-
-=item getcwd
-
- my $cwd = getcwd();
-
-Returns the current working directory.
-
-Re-implements the getcwd(3) (or getwd(3)) functions in Perl.
-
-Taint-safe.
-
-=item cwd
-
- my $cwd = cwd();
-
-The cwd() is the most natural form for the current architecture. For
-most systems it is identical to `pwd` (but without the trailing line
-terminator).
-
-Taint-safe.
-
-=item fastcwd
-
- my $cwd = fastcwd();
-
-A more dangerous version of getcwd(), but potentially faster.
-
-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.
-
-=item fastgetcwd
-
- my $cwd = fastgetcwd();
-
-The fastgetcwd() function is provided as a synonym for cwd().
-
-=back
-
-
-=head2 abs_path and friends
-
-These functions are exported only on request. They each take a single
-argument and return the absolute pathname for it.
-
-=over 4
-
-=item abs_path
-
- my $abs_path = abs_path($file);
-
-Uses the same algorithm as getcwd(). Symbolic links and relative-path
-components ("." and "..") are resolved to return the canonical
-pathname, just like realpath(3).
-
-Taint-safe.
-
-=item realpath
-
- my $abs_path = realpath($file);
-
-A synonym for abs_path().
-
-Taint-safe.
-
-=item fast_abs_path
-
- my $abs_path = fast_abs_path($file);
-
-A more dangerous, but potentially faster version of abs_path.
-
-This function is B<Not> taint-safe : you can't use it in programs
-that work under taint mode.
-
-=back
-
-=head2 $ENV{PWD}
-
-If you ask to override your chdir() built-in function,
-
- use Cwd qw(chdir);
-
-then your PWD environment variable will be kept up to date. Note that
-it will only be kept up to date if all packages which use chdir import
-it from Cwd.
-
-
-=head1 NOTES
-
-=over 4
-
-=item *
-
-Since the path seperators are different on some operating systems ('/'
-on Unix, ':' on MacPerl, etc...) we recommend you use the File::Spec
-modules wherever portability is a concern.
-
-=item *
-
-Actually, on Mac OS, the C<getcwd()>, C<fastgetcwd()> and C<fastcwd()>
-functions are all aliases for the C<cwd()> function, which, on Mac OS,
-calls `pwd`. Likewise, the C<abs_path()> function is an alias for
-C<fast_abs_path()>.
-
-=back
-
-=head1 SEE ALSO
-
-L<File::chdir>
-
-=cut
-
-use strict;
-
-use Carp;
-
-our $VERSION = '2.06';
-
-use base qw/ Exporter /;
-our @EXPORT = qw(cwd getcwd fastcwd fastgetcwd);
-our @EXPORT_OK = qw(chdir abs_path fast_abs_path realpath fast_realpath);
-
-# sys_cwd may keep the builtin command
-
-# All the functionality of this module may provided by builtins,
-# there is no sense to process the rest of the file.
-# The best choice may be to have this in BEGIN, but how to return from BEGIN?
-
-if ($^O eq 'os2' && defined &sys_cwd && defined &sys_abspath) {
- local $^W = 0;
- *cwd = \&sys_cwd;
- *getcwd = \&cwd;
- *fastgetcwd = \&cwd;
- *fastcwd = \&cwd;
- *abs_path = \&sys_abspath;
- *fast_abs_path = \&abs_path;
- *realpath = \&abs_path;
- *fast_realpath = \&abs_path;
- return 1;
-}
-
-eval {
- require XSLoader;
- undef *Cwd::fastcwd; # avoid redefinition warning
- XSLoader::load('Cwd');
-};
-
-
-# Find the pwd command in the expected locations. We assume these
-# are safe. This prevents _backtick_pwd() consulting $ENV{PATH}
-# so everything works under taint mode.
-my $pwd_cmd;
-foreach my $try (qw(/bin/pwd /usr/bin/pwd)) {
- if( -x $try ) {
- $pwd_cmd = $try;
- last;
- }
-}
-$pwd_cmd ||= 'pwd';
-
-# The 'natural and safe form' for UNIX (pwd may be setuid root)
-sub _backtick_pwd {
- local @ENV{qw(PATH IFS CDPATH ENV BASH_ENV)};
- my $cwd = `$pwd_cmd`;
- # Belt-and-suspenders in case someone said "undef $/".
- local $/ = "\n";
- # `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' || (defined $ENV{PATH} &&
- 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.
- # Untaint it then check that we landed where we started.
- $path =~ /^(.*)\z/s # untaint
- && CORE::chdir($1) or 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;
-}
-
-
-# In case the XS version doesn't load.
-*abs_path = \&_perl_abs_path unless defined &abs_path;
-sub _perl_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();
- require File::Spec;
- my $path = @_ ? shift : File::Spec->curdir;
- CORE::chdir($path) || croak "Cannot chdir to $path: $!";
- my $realpath = getcwd();
- -d $cwd && 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 {
- local $ENV{PATH} = '';
- local $ENV{CDPATH} = '';
- local $ENV{ENV} = '';
- $ENV{'PWD'} = `/usr/bin/fullpath -t`;
- chop $ENV{'PWD'};
- return $ENV{'PWD'};
-}
-
-sub _qnx_abs_path {
- local $ENV{PATH} = '';
- local $ENV{CDPATH} = '';
- local $ENV{ENV} = '';
- 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;
- *realpath = \&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 =~ m/^(?:qnx|nto)$/ ) {
- *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;
- }
-}
-
-
-1;
diff --git a/Master/perltl/lib/Data/Dumper.pm b/Master/perltl/lib/Data/Dumper.pm
deleted file mode 100644
index 189ad007cbc..00000000000
--- a/Master/perltl/lib/Data/Dumper.pm
+++ /dev/null
@@ -1,1160 +0,0 @@
-#
-# Data/Dumper.pm
-#
-# convert perl data structures into perl syntax suitable for both printing
-# and eval
-#
-# Documentation at the __END__
-#
-
-package Data::Dumper;
-
-$VERSION = '2.12';
-
-#$| = 1;
-
-use 5.006_001;
-require Exporter;
-use XSLoader ();
-require overload;
-
-use Carp;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(Dumper);
-@EXPORT_OK = qw(DumperX);
-
-XSLoader::load 'Data::Dumper';
-
-# module vars and their defaults
-$Indent = 2 unless defined $Indent;
-$Purity = 0 unless defined $Purity;
-$Pad = "" unless defined $Pad;
-$Varname = "VAR" unless defined $Varname;
-$Useqq = 0 unless defined $Useqq;
-$Terse = 0 unless defined $Terse;
-$Freezer = "" unless defined $Freezer;
-$Toaster = "" unless defined $Toaster;
-$Deepcopy = 0 unless defined $Deepcopy;
-$Quotekeys = 1 unless defined $Quotekeys;
-$Bless = "bless" unless defined $Bless;
-#$Expdepth = 0 unless defined $Expdepth;
-$Maxdepth = 0 unless defined $Maxdepth;
-$Useperl = 0 unless defined $Useperl;
-$Sortkeys = 0 unless defined $Sortkeys;
-$Deparse = 0 unless defined $Deparse;
-
-#
-# expects an arrayref of values to be dumped.
-# can optionally pass an arrayref of names for the values.
-# names must have leading $ sign stripped. begin the name with *
-# to cause output of arrays and hashes rather than refs.
-#
-sub new {
- my($c, $v, $n) = @_;
-
- croak "Usage: PACKAGE->new(ARRAYREF, [ARRAYREF])"
- unless (defined($v) && (ref($v) eq 'ARRAY'));
- $n = [] unless (defined($n) && (ref($v) eq 'ARRAY'));
-
- my($s) = {
- level => 0, # current recursive depth
- indent => $Indent, # various styles of indenting
- pad => $Pad, # all lines prefixed by this string
- xpad => "", # padding-per-level
- apad => "", # added padding for hash keys n such
- sep => "", # list separator
- seen => {}, # local (nested) refs (id => [name, val])
- todump => $v, # values to dump []
- names => $n, # optional names for values []
- varname => $Varname, # prefix to use for tagging nameless ones
- purity => $Purity, # degree to which output is evalable
- useqq => $Useqq, # use "" for strings (backslashitis ensues)
- terse => $Terse, # avoid name output (where feasible)
- freezer => $Freezer, # name of Freezer method for objects
- toaster => $Toaster, # name of method to revive objects
- deepcopy => $Deepcopy, # dont cross-ref, except to stop recursion
- quotekeys => $Quotekeys, # quote hash keys
- 'bless' => $Bless, # keyword to use for "bless"
-# expdepth => $Expdepth, # cutoff depth for explicit dumping
- maxdepth => $Maxdepth, # depth beyond which we give up
- useperl => $Useperl, # use the pure Perl implementation
- sortkeys => $Sortkeys, # flag or filter for sorting hash keys
- deparse => $Deparse, # use B::Deparse for coderefs
- };
-
- if ($Indent > 0) {
- $s->{xpad} = " ";
- $s->{sep} = "\n";
- }
- return bless($s, $c);
-}
-
-#
-# add-to or query the table of already seen references
-#
-sub Seen {
- my($s, $g) = @_;
- if (defined($g) && (ref($g) eq 'HASH')) {
- my($k, $v, $id);
- while (($k, $v) = each %$g) {
- if (defined $v and ref $v) {
- ($id) = (overload::StrVal($v) =~ /\((.*)\)$/);
- if ($k =~ /^[*](.*)$/) {
- $k = (ref $v eq 'ARRAY') ? ( "\\\@" . $1 ) :
- (ref $v eq 'HASH') ? ( "\\\%" . $1 ) :
- (ref $v eq 'CODE') ? ( "\\\&" . $1 ) :
- ( "\$" . $1 ) ;
- }
- elsif ($k !~ /^\$/) {
- $k = "\$" . $k;
- }
- $s->{seen}{$id} = [$k, $v];
- }
- else {
- carp "Only refs supported, ignoring non-ref item \$$k";
- }
- }
- return $s;
- }
- else {
- return map { @$_ } values %{$s->{seen}};
- }
-}
-
-#
-# set or query the values to be dumped
-#
-sub Values {
- my($s, $v) = @_;
- if (defined($v) && (ref($v) eq 'ARRAY')) {
- $s->{todump} = [@$v]; # make a copy
- return $s;
- }
- else {
- return @{$s->{todump}};
- }
-}
-
-#
-# set or query the names of the values to be dumped
-#
-sub Names {
- my($s, $n) = @_;
- if (defined($n) && (ref($n) eq 'ARRAY')) {
- $s->{names} = [@$n]; # make a copy
- return $s;
- }
- else {
- return @{$s->{names}};
- }
-}
-
-sub DESTROY {}
-
-sub Dump {
- return &Dumpxs
- unless $Data::Dumper::Useperl || (ref($_[0]) && $_[0]->{useperl}) ||
- $Data::Dumper::Useqq || (ref($_[0]) && $_[0]->{useqq}) ||
- $Data::Dumper::Deparse || (ref($_[0]) && $_[0]->{deparse});
- return &Dumpperl;
-}
-
-#
-# dump the refs in the current dumper object.
-# expects same args as new() if called via package name.
-#
-sub Dumpperl {
- my($s) = shift;
- my(@out, $val, $name);
- my($i) = 0;
- local(@post);
-
- $s = $s->new(@_) unless ref $s;
-
- for $val (@{$s->{todump}}) {
- my $out = "";
- @post = ();
- $name = $s->{names}[$i++];
- if (defined $name) {
- if ($name =~ /^[*](.*)$/) {
- if (defined $val) {
- $name = (ref $val eq 'ARRAY') ? ( "\@" . $1 ) :
- (ref $val eq 'HASH') ? ( "\%" . $1 ) :
- (ref $val eq 'CODE') ? ( "\*" . $1 ) :
- ( "\$" . $1 ) ;
- }
- else {
- $name = "\$" . $1;
- }
- }
- elsif ($name !~ /^\$/) {
- $name = "\$" . $name;
- }
- }
- else {
- $name = "\$" . $s->{varname} . $i;
- }
-
- my $valstr;
- {
- local($s->{apad}) = $s->{apad};
- $s->{apad} .= ' ' x (length($name) + 3) if $s->{indent} >= 2;
- $valstr = $s->_dump($val, $name);
- }
-
- $valstr = "$name = " . $valstr . ';' if @post or !$s->{terse};
- $out .= $s->{pad} . $valstr . $s->{sep};
- $out .= $s->{pad} . join(';' . $s->{sep} . $s->{pad}, @post)
- . ';' . $s->{sep} if @post;
-
- push @out, $out;
- }
- return wantarray ? @out : join('', @out);
-}
-
-#
-# twist, toil and turn;
-# and recurse, of course.
-# sometimes sordidly;
-# and curse if no recourse.
-#
-sub _dump {
- my($s, $val, $name) = @_;
- my($sname);
- my($out, $realpack, $realtype, $type, $ipad, $id, $blesspad);
-
- $type = ref $val;
- $out = "";
-
- if ($type) {
-
- # prep it, if it looks like an object
- if (my $freezer = $s->{freezer}) {
- $val->$freezer() if UNIVERSAL::can($val, $freezer);
- }
-
- ($realpack, $realtype, $id) =
- (overload::StrVal($val) =~ /^(?:(.*)\=)?([^=]*)\(([^\(]*)\)$/);
-
- # if it has a name, we need to either look it up, or keep a tab
- # on it so we know when we hit it later
- if (defined($name) and length($name)) {
- # keep a tab on it so that we dont fall into recursive pit
- if (exists $s->{seen}{$id}) {
-# if ($s->{expdepth} < $s->{level}) {
- if ($s->{purity} and $s->{level} > 0) {
- $out = ($realtype eq 'HASH') ? '{}' :
- ($realtype eq 'ARRAY') ? '[]' :
- 'do{my $o}' ;
- push @post, $name . " = " . $s->{seen}{$id}[0];
- }
- else {
- $out = $s->{seen}{$id}[0];
- if ($name =~ /^([\@\%])/) {
- my $start = $1;
- if ($out =~ /^\\$start/) {
- $out = substr($out, 1);
- }
- else {
- $out = $start . '{' . $out . '}';
- }
- }
- }
- return $out;
-# }
- }
- else {
- # store our name
- $s->{seen}{$id} = [ (($name =~ /^[@%]/) ? ('\\' . $name ) :
- ($realtype eq 'CODE' and
- $name =~ /^[*](.*)$/) ? ('\\&' . $1 ) :
- $name ),
- $val ];
- }
- }
-
- if ($realpack and $realpack eq 'Regexp') {
- $out = "$val";
- $out =~ s,/,\\/,g;
- return "qr/$out/";
- }
-
- # If purity is not set and maxdepth is set, then check depth:
- # if we have reached maximum depth, return the string
- # representation of the thing we are currently examining
- # at this depth (i.e., 'Foo=ARRAY(0xdeadbeef)').
- if (!$s->{purity}
- and $s->{maxdepth} > 0
- and $s->{level} >= $s->{maxdepth})
- {
- return qq['$val'];
- }
-
- # we have a blessed ref
- if ($realpack) {
- $out = $s->{'bless'} . '( ';
- $blesspad = $s->{apad};
- $s->{apad} .= ' ' if ($s->{indent} >= 2);
- }
-
- $s->{level}++;
- $ipad = $s->{xpad} x $s->{level};
-
- if ($realtype eq 'SCALAR' || $realtype eq 'REF') {
- if ($realpack) {
- $out .= 'do{\\(my $o = ' . $s->_dump($$val, "\${$name}") . ')}';
- }
- else {
- $out .= '\\' . $s->_dump($$val, "\${$name}");
- }
- }
- elsif ($realtype eq 'GLOB') {
- $out .= '\\' . $s->_dump($$val, "*{$name}");
- }
- elsif ($realtype eq 'ARRAY') {
- my($v, $pad, $mname);
- my($i) = 0;
- $out .= ($name =~ /^\@/) ? '(' : '[';
- $pad = $s->{sep} . $s->{pad} . $s->{apad};
- ($name =~ /^\@(.*)$/) ? ($mname = "\$" . $1) :
- # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
- ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
- ($mname = $name . '->');
- $mname .= '->' if $mname =~ /^\*.+\{[A-Z]+\}$/;
- for $v (@$val) {
- $sname = $mname . '[' . $i . ']';
- $out .= $pad . $ipad . '#' . $i if $s->{indent} >= 3;
- $out .= $pad . $ipad . $s->_dump($v, $sname);
- $out .= "," if $i++ < $#$val;
- }
- $out .= $pad . ($s->{xpad} x ($s->{level} - 1)) if $i;
- $out .= ($name =~ /^\@/) ? ')' : ']';
- }
- elsif ($realtype eq 'HASH') {
- my($k, $v, $pad, $lpad, $mname);
- $out .= ($name =~ /^\%/) ? '(' : '{';
- $pad = $s->{sep} . $s->{pad} . $s->{apad};
- $lpad = $s->{apad};
- ($name =~ /^\%(.*)$/) ? ($mname = "\$" . $1) :
- # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
- ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
- ($mname = $name . '->');
- $mname .= '->' if $mname =~ /^\*.+\{[A-Z]+\}$/;
- my ($sortkeys, $keys, $key) = ("$s->{sortkeys}");
- if ($sortkeys) {
- if (ref($s->{sortkeys}) eq 'CODE') {
- $keys = $s->{sortkeys}($val);
- unless (ref($keys) eq 'ARRAY') {
- carp "Sortkeys subroutine did not return ARRAYREF";
- $keys = [];
- }
- }
- else {
- $keys = [ sort keys %$val ];
- }
- }
- while (($k, $v) = ! $sortkeys ? (each %$val) :
- @$keys ? ($key = shift(@$keys), $val->{$key}) :
- () )
- {
- my $nk = $s->_dump($k, "");
- $nk = $1 if !$s->{quotekeys} and $nk =~ /^[\"\']([A-Za-z_]\w*)[\"\']$/;
- $sname = $mname . '{' . $nk . '}';
- $out .= $pad . $ipad . $nk . " => ";
-
- # temporarily alter apad
- $s->{apad} .= (" " x (length($nk) + 4)) if $s->{indent} >= 2;
- $out .= $s->_dump($val->{$k}, $sname) . ",";
- $s->{apad} = $lpad if $s->{indent} >= 2;
- }
- if (substr($out, -1) eq ',') {
- chop $out;
- $out .= $pad . ($s->{xpad} x ($s->{level} - 1));
- }
- $out .= ($name =~ /^\%/) ? ')' : '}';
- }
- elsif ($realtype eq 'CODE') {
- if ($s->{deparse}) {
- require B::Deparse;
- my $sub = 'sub ' . (B::Deparse->new)->coderef2text($val);
- $pad = $s->{sep} . $s->{pad} . $s->{xpad} . $s->{apad} . ' ';
- $sub =~ s/\n/$pad/gse;
- $out .= $sub;
- } else {
- $out .= 'sub { "DUMMY" }';
- carp "Encountered CODE ref, using dummy placeholder" if $s->{purity};
- }
- }
- else {
- croak "Can\'t handle $realtype type.";
- }
-
- if ($realpack) { # we have a blessed ref
- $out .= ', \'' . $realpack . '\'' . ' )';
- $out .= '->' . $s->{toaster} . '()' if $s->{toaster} ne '';
- $s->{apad} = $blesspad;
- }
- $s->{level}--;
-
- }
- else { # simple scalar
-
- my $ref = \$_[1];
- # first, catalog the scalar
- if ($name ne '') {
- ($id) = ("$ref" =~ /\(([^\(]*)\)$/);
- if (exists $s->{seen}{$id}) {
- if ($s->{seen}{$id}[2]) {
- $out = $s->{seen}{$id}[0];
- #warn "[<$out]\n";
- return "\${$out}";
- }
- }
- else {
- #warn "[>\\$name]\n";
- $s->{seen}{$id} = ["\\$name", $ref];
- }
- }
- if (ref($ref) eq 'GLOB' or "$ref" =~ /=GLOB\([^()]+\)$/) { # glob
- my $name = substr($val, 1);
- if ($name =~ /^[A-Za-z_][\w:]*$/) {
- $name =~ s/^main::/::/;
- $sname = $name;
- }
- else {
- $sname = $s->_dump($name, "");
- $sname = '{' . $sname . '}';
- }
- if ($s->{purity}) {
- my $k;
- local ($s->{level}) = 0;
- for $k (qw(SCALAR ARRAY HASH)) {
- my $gval = *$val{$k};
- next unless defined $gval;
- next if $k eq "SCALAR" && ! defined $$gval; # always there
-
- # _dump can push into @post, so we hold our place using $postlen
- my $postlen = scalar @post;
- $post[$postlen] = "\*$sname = ";
- local ($s->{apad}) = " " x length($post[$postlen]) if $s->{indent} >= 2;
- $post[$postlen] .= $s->_dump($gval, "\*$sname\{$k\}");
- }
- }
- $out .= '*' . $sname;
- }
- elsif (!defined($val)) {
- $out .= "undef";
- }
- elsif ($val =~ /^(?:0|-?[1-9]\d{0,8})\z/) { # safe decimal number
- $out .= $val;
- }
- else { # string
- if ($s->{useqq} or $val =~ tr/\0-\377//c) {
- # Fall back to qq if there's unicode
- $out .= qquote($val, $s->{useqq});
- }
- else {
- $val =~ s/([\\\'])/\\$1/g;
- $out .= '\'' . $val . '\'';
- }
- }
- }
- if ($id) {
- # if we made it this far, $id was added to seen list at current
- # level, so remove it to get deep copies
- if ($s->{deepcopy}) {
- delete($s->{seen}{$id});
- }
- elsif ($name) {
- $s->{seen}{$id}[2] = 1;
- }
- }
- return $out;
-}
-
-#
-# non-OO style of earlier version
-#
-sub Dumper {
- return Data::Dumper->Dump([@_]);
-}
-
-# compat stub
-sub DumperX {
- return Data::Dumper->Dumpxs([@_], []);
-}
-
-sub Dumpf { return Data::Dumper->Dump(@_) }
-
-sub Dumpp { print Data::Dumper->Dump(@_) }
-
-#
-# reset the "seen" cache
-#
-sub Reset {
- my($s) = shift;
- $s->{seen} = {};
- return $s;
-}
-
-sub Indent {
- my($s, $v) = @_;
- if (defined($v)) {
- if ($v == 0) {
- $s->{xpad} = "";
- $s->{sep} = "";
- }
- else {
- $s->{xpad} = " ";
- $s->{sep} = "\n";
- }
- $s->{indent} = $v;
- return $s;
- }
- else {
- return $s->{indent};
- }
-}
-
-sub Pad {
- my($s, $v) = @_;
- defined($v) ? (($s->{pad} = $v), return $s) : $s->{pad};
-}
-
-sub Varname {
- my($s, $v) = @_;
- defined($v) ? (($s->{varname} = $v), return $s) : $s->{varname};
-}
-
-sub Purity {
- my($s, $v) = @_;
- defined($v) ? (($s->{purity} = $v), return $s) : $s->{purity};
-}
-
-sub Useqq {
- my($s, $v) = @_;
- defined($v) ? (($s->{useqq} = $v), return $s) : $s->{useqq};
-}
-
-sub Terse {
- my($s, $v) = @_;
- defined($v) ? (($s->{terse} = $v), return $s) : $s->{terse};
-}
-
-sub Freezer {
- my($s, $v) = @_;
- defined($v) ? (($s->{freezer} = $v), return $s) : $s->{freezer};
-}
-
-sub Toaster {
- my($s, $v) = @_;
- defined($v) ? (($s->{toaster} = $v), return $s) : $s->{toaster};
-}
-
-sub Deepcopy {
- my($s, $v) = @_;
- defined($v) ? (($s->{deepcopy} = $v), return $s) : $s->{deepcopy};
-}
-
-sub Quotekeys {
- my($s, $v) = @_;
- defined($v) ? (($s->{quotekeys} = $v), return $s) : $s->{quotekeys};
-}
-
-sub Bless {
- my($s, $v) = @_;
- defined($v) ? (($s->{'bless'} = $v), return $s) : $s->{'bless'};
-}
-
-sub Maxdepth {
- my($s, $v) = @_;
- defined($v) ? (($s->{'maxdepth'} = $v), return $s) : $s->{'maxdepth'};
-}
-
-sub Useperl {
- my($s, $v) = @_;
- defined($v) ? (($s->{'useperl'} = $v), return $s) : $s->{'useperl'};
-}
-
-sub Sortkeys {
- my($s, $v) = @_;
- defined($v) ? (($s->{'sortkeys'} = $v), return $s) : $s->{'sortkeys'};
-}
-
-sub Deparse {
- my($s, $v) = @_;
- defined($v) ? (($s->{'deparse'} = $v), return $s) : $s->{'deparse'};
-}
-
-# used by qquote below
-my %esc = (
- "\a" => "\\a",
- "\b" => "\\b",
- "\t" => "\\t",
- "\n" => "\\n",
- "\f" => "\\f",
- "\r" => "\\r",
- "\e" => "\\e",
-);
-
-# put a string value in double quotes
-sub qquote {
- local($_) = shift;
- s/([\\\"\@\$])/\\$1/g;
- my $bytes; { use bytes; $bytes = length }
- s/([^\x00-\x7f])/'\x{'.sprintf("%x",ord($1)).'}'/ge if $bytes > length;
- return qq("$_") unless
- /[^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~]/; # fast exit
-
- my $high = shift || "";
- s/([\a\b\t\n\f\r\e])/$esc{$1}/g;
-
- if (ord('^')==94) { # ascii
- # no need for 3 digits in escape for these
- s/([\0-\037])(?!\d)/'\\'.sprintf('%o',ord($1))/eg;
- s/([\0-\037\177])/'\\'.sprintf('%03o',ord($1))/eg;
- # all but last branch below not supported --BEHAVIOR SUBJECT TO CHANGE--
- if ($high eq "iso8859") {
- s/([\200-\240])/'\\'.sprintf('%o',ord($1))/eg;
- } elsif ($high eq "utf8") {
-# use utf8;
-# $str =~ s/([^\040-\176])/sprintf "\\x{%04x}", ord($1)/ge;
- } elsif ($high eq "8bit") {
- # leave it as it is
- } else {
- s/([\200-\377])/'\\'.sprintf('%03o',ord($1))/eg;
- s/([^\040-\176])/sprintf "\\x{%04x}", ord($1)/ge;
- }
- }
- else { # ebcdic
- s{([^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~])(?!\d)}
- {my $v = ord($1); '\\'.sprintf(($v <= 037 ? '%o' : '%03o'), $v)}eg;
- s{([^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~])}
- {'\\'.sprintf('%03o',ord($1))}eg;
- }
-
- return qq("$_");
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Data::Dumper - stringified perl data structures, suitable for both printing and C<eval>
-
-=head1 SYNOPSIS
-
- use Data::Dumper;
-
- # simple procedural interface
- print Dumper($foo, $bar);
-
- # extended usage with names
- print Data::Dumper->Dump([$foo, $bar], [qw(foo *ary)]);
-
- # configuration variables
- {
- local $Data::Dump::Purity = 1;
- eval Data::Dumper->Dump([$foo, $bar], [qw(foo *ary)]);
- }
-
- # OO usage
- $d = Data::Dumper->new([$foo, $bar], [qw(foo *ary)]);
- ...
- print $d->Dump;
- ...
- $d->Purity(1)->Terse(1)->Deepcopy(1);
- eval $d->Dump;
-
-
-=head1 DESCRIPTION
-
-Given a list of scalars or reference variables, writes out their contents in
-perl syntax. The references can also be objects. The contents of each
-variable is output in a single Perl statement. Handles self-referential
-structures correctly.
-
-The return value can be C<eval>ed to get back an identical copy of the
-original reference structure.
-
-Any references that are the same as one of those passed in will be named
-C<$VAR>I<n> (where I<n> is a numeric suffix), and other duplicate references
-to substructures within C<$VAR>I<n> will be appropriately labeled using arrow
-notation. You can specify names for individual values to be dumped if you
-use the C<Dump()> method, or you can change the default C<$VAR> prefix to
-something else. See C<$Data::Dumper::Varname> and C<$Data::Dumper::Terse>
-below.
-
-The default output of self-referential structures can be C<eval>ed, but the
-nested references to C<$VAR>I<n> will be undefined, since a recursive
-structure cannot be constructed using one Perl statement. You should set the
-C<Purity> flag to 1 to get additional statements that will correctly fill in
-these references.
-
-In the extended usage form, the references to be dumped can be given
-user-specified names. If a name begins with a C<*>, the output will
-describe the dereferenced type of the supplied reference for hashes and
-arrays, and coderefs. Output of names will be avoided where possible if
-the C<Terse> flag is set.
-
-In many cases, methods that are used to set the internal state of the
-object will return the object itself, so method calls can be conveniently
-chained together.
-
-Several styles of output are possible, all controlled by setting
-the C<Indent> flag. See L<Configuration Variables or Methods> below
-for details.
-
-
-=head2 Methods
-
-=over 4
-
-=item I<PACKAGE>->new(I<ARRAYREF [>, I<ARRAYREF]>)
-
-Returns a newly created C<Data::Dumper> object. The first argument is an
-anonymous array of values to be dumped. The optional second argument is an
-anonymous array of names for the values. The names need not have a leading
-C<$> sign, and must be comprised of alphanumeric characters. You can begin
-a name with a C<*> to specify that the dereferenced type must be dumped
-instead of the reference itself, for ARRAY and HASH references.
-
-The prefix specified by C<$Data::Dumper::Varname> will be used with a
-numeric suffix if the name for a value is undefined.
-
-Data::Dumper will catalog all references encountered while dumping the
-values. Cross-references (in the form of names of substructures in perl
-syntax) will be inserted at all possible points, preserving any structural
-interdependencies in the original set of values. Structure traversal is
-depth-first, and proceeds in order from the first supplied value to
-the last.
-
-=item I<$OBJ>->Dump I<or> I<PACKAGE>->Dump(I<ARRAYREF [>, I<ARRAYREF]>)
-
-Returns the stringified form of the values stored in the object (preserving
-the order in which they were supplied to C<new>), subject to the
-configuration options below. In a list context, it returns a list
-of strings corresponding to the supplied values.
-
-The second form, for convenience, simply calls the C<new> method on its
-arguments before dumping the object immediately.
-
-=item I<$OBJ>->Seen(I<[HASHREF]>)
-
-Queries or adds to the internal table of already encountered references.
-You must use C<Reset> to explicitly clear the table if needed. Such
-references are not dumped; instead, their names are inserted wherever they
-are encountered subsequently. This is useful especially for properly
-dumping subroutine references.
-
-Expects an anonymous hash of name => value pairs. Same rules apply for names
-as in C<new>. If no argument is supplied, will return the "seen" list of
-name => value pairs, in a list context. Otherwise, returns the object
-itself.
-
-=item I<$OBJ>->Values(I<[ARRAYREF]>)
-
-Queries or replaces the internal array of values that will be dumped.
-When called without arguments, returns the values. Otherwise, returns the
-object itself.
-
-=item I<$OBJ>->Names(I<[ARRAYREF]>)
-
-Queries or replaces the internal array of user supplied names for the values
-that will be dumped. When called without arguments, returns the names.
-Otherwise, returns the object itself.
-
-=item I<$OBJ>->Reset
-
-Clears the internal table of "seen" references and returns the object
-itself.
-
-=back
-
-=head2 Functions
-
-=over 4
-
-=item Dumper(I<LIST>)
-
-Returns the stringified form of the values in the list, subject to the
-configuration options below. The values will be named C<$VAR>I<n> in the
-output, where I<n> is a numeric suffix. Will return a list of strings
-in a list context.
-
-=back
-
-=head2 Configuration Variables or Methods
-
-Several configuration variables can be used to control the kind of output
-generated when using the procedural interface. These variables are usually
-C<local>ized in a block so that other parts of the code are not affected by
-the change.
-
-These variables determine the default state of the object created by calling
-the C<new> method, but cannot be used to alter the state of the object
-thereafter. The equivalent method names should be used instead to query
-or set the internal state of the object.
-
-The method forms return the object itself when called with arguments,
-so that they can be chained together nicely.
-
-=over 4
-
-=item $Data::Dumper::Indent I<or> I<$OBJ>->Indent(I<[NEWVAL]>)
-
-Controls the style of indentation. It can be set to 0, 1, 2 or 3. Style 0
-spews output without any newlines, indentation, or spaces between list
-items. It is the most compact format possible that can still be called
-valid perl. Style 1 outputs a readable form with newlines but no fancy
-indentation (each level in the structure is simply indented by a fixed
-amount of whitespace). Style 2 (the default) outputs a very readable form
-which takes into account the length of hash keys (so the hash value lines
-up). Style 3 is like style 2, but also annotates the elements of arrays
-with their index (but the comment is on its own line, so array output
-consumes twice the number of lines). Style 2 is the default.
-
-=item $Data::Dumper::Purity I<or> I<$OBJ>->Purity(I<[NEWVAL]>)
-
-Controls the degree to which the output can be C<eval>ed to recreate the
-supplied reference structures. Setting it to 1 will output additional perl
-statements that will correctly recreate nested references. The default is
-0.
-
-=item $Data::Dumper::Pad I<or> I<$OBJ>->Pad(I<[NEWVAL]>)
-
-Specifies the string that will be prefixed to every line of the output.
-Empty string by default.
-
-=item $Data::Dumper::Varname I<or> I<$OBJ>->Varname(I<[NEWVAL]>)
-
-Contains the prefix to use for tagging variable names in the output. The
-default is "VAR".
-
-=item $Data::Dumper::Useqq I<or> I<$OBJ>->Useqq(I<[NEWVAL]>)
-
-When set, enables the use of double quotes for representing string values.
-Whitespace other than space will be represented as C<[\n\t\r]>, "unsafe"
-characters will be backslashed, and unprintable characters will be output as
-quoted octal integers. Since setting this variable imposes a performance
-penalty, the default is 0. C<Dump()> will run slower if this flag is set,
-since the fast XSUB implementation doesn't support it yet.
-
-=item $Data::Dumper::Terse I<or> I<$OBJ>->Terse(I<[NEWVAL]>)
-
-When set, Data::Dumper will emit single, non-self-referential values as
-atoms/terms rather than statements. This means that the C<$VAR>I<n> names
-will be avoided where possible, but be advised that such output may not
-always be parseable by C<eval>.
-
-=item $Data::Dumper::Freezer I<or> $I<OBJ>->Freezer(I<[NEWVAL]>)
-
-Can be set to a method name, or to an empty string to disable the feature.
-Data::Dumper will invoke that method via the object before attempting to
-stringify it. This method can alter the contents of the object (if, for
-instance, it contains data allocated from C), and even rebless it in a
-different package. The client is responsible for making sure the specified
-method can be called via the object, and that the object ends up containing
-only perl data types after the method has been called. Defaults to an empty
-string.
-
-=item $Data::Dumper::Toaster I<or> $I<OBJ>->Toaster(I<[NEWVAL]>)
-
-Can be set to a method name, or to an empty string to disable the feature.
-Data::Dumper will emit a method call for any objects that are to be dumped
-using the syntax C<bless(DATA, CLASS)-E<gt>METHOD()>. Note that this means that
-the method specified will have to perform any modifications required on the
-object (like creating new state within it, and/or reblessing it in a
-different package) and then return it. The client is responsible for making
-sure the method can be called via the object, and that it returns a valid
-object. Defaults to an empty string.
-
-=item $Data::Dumper::Deepcopy I<or> $I<OBJ>->Deepcopy(I<[NEWVAL]>)
-
-Can be set to a boolean value to enable deep copies of structures.
-Cross-referencing will then only be done when absolutely essential
-(i.e., to break reference cycles). Default is 0.
-
-=item $Data::Dumper::Quotekeys I<or> $I<OBJ>->Quotekeys(I<[NEWVAL]>)
-
-Can be set to a boolean value to control whether hash keys are quoted.
-A false value will avoid quoting hash keys when it looks like a simple
-string. Default is 1, which will always enclose hash keys in quotes.
-
-=item $Data::Dumper::Bless I<or> $I<OBJ>->Bless(I<[NEWVAL]>)
-
-Can be set to a string that specifies an alternative to the C<bless>
-builtin operator used to create objects. A function with the specified
-name should exist, and should accept the same arguments as the builtin.
-Default is C<bless>.
-
-=item $Data::Dumper::Maxdepth I<or> $I<OBJ>->Maxdepth(I<[NEWVAL]>)
-
-Can be set to a positive integer that specifies the depth beyond which
-which we don't venture into a structure. Has no effect when
-C<Data::Dumper::Purity> is set. (Useful in debugger when we often don't
-want to see more than enough). Default is 0, which means there is
-no maximum depth.
-
-=item $Data::Dumper::Useperl I<or> $I<OBJ>->Useperl(I<[NEWVAL]>)
-
-Can be set to a boolean value which controls whether the pure Perl
-implementation of C<Data::Dumper> is used. The C<Data::Dumper> module is
-a dual implementation, with almost all functionality written in both
-pure Perl and also in XS ('C'). Since the XS version is much faster, it
-will always be used if possible. This option lets you override the
-default behavior, usually for testing purposes only. Default is 0, which
-means the XS implementation will be used if possible.
-
-=item $Data::Dumper::Sortkeys I<or> $I<OBJ>->Sortkeys(I<[NEWVAL]>)
-
-Can be set to a boolean value to control whether hash keys are dumped in
-sorted order. A true value will cause the keys of all hashes to be
-dumped in Perl's default sort order. Can also be set to a subroutine
-reference which will be called for each hash that is dumped. In this
-case C<Data::Dumper> will call the subroutine once for each hash,
-passing it the reference of the hash. The purpose of the subroutine is
-to return a reference to an array of the keys that will be dumped, in
-the order that they should be dumped. Using this feature, you can
-control both the order of the keys, and which keys are actually used. In
-other words, this subroutine acts as a filter by which you can exclude
-certain keys from being dumped. Default is 0, which means that hash keys
-are not sorted.
-
-=item $Data::Dumper::Deparse I<or> $I<OBJ>->Deparse(I<[NEWVAL]>)
-
-Can be set to a boolean value to control whether code references are
-turned into perl source code. If set to a true value, C<B::Deparse>
-will be used to get the source of the code reference. Using this option
-will force using the Perl implementation of the dumper, since the fast
-XSUB implementation doesn't support it.
-
-Caution : use this option only if you know that your coderefs will be
-properly reconstructed by C<B::Deparse>.
-
-=back
-
-=head2 Exports
-
-=over 4
-
-=item Dumper
-
-=back
-
-=head1 EXAMPLES
-
-Run these code snippets to get a quick feel for the behavior of this
-module. When you are through with these examples, you may want to
-add or change the various configuration variables described above,
-to see their behavior. (See the testsuite in the Data::Dumper
-distribution for more examples.)
-
-
- use Data::Dumper;
-
- package Foo;
- sub new {bless {'a' => 1, 'b' => sub { return "foo" }}, $_[0]};
-
- package Fuz; # a weird REF-REF-SCALAR object
- sub new {bless \($_ = \ 'fu\'z'), $_[0]};
-
- package main;
- $foo = Foo->new;
- $fuz = Fuz->new;
- $boo = [ 1, [], "abcd", \*foo,
- {1 => 'a', 023 => 'b', 0x45 => 'c'},
- \\"p\q\'r", $foo, $fuz];
-
- ########
- # simple usage
- ########
-
- $bar = eval(Dumper($boo));
- print($@) if $@;
- print Dumper($boo), Dumper($bar); # pretty print (no array indices)
-
- $Data::Dumper::Terse = 1; # don't output names where feasible
- $Data::Dumper::Indent = 0; # turn off all pretty print
- print Dumper($boo), "\n";
-
- $Data::Dumper::Indent = 1; # mild pretty print
- print Dumper($boo);
-
- $Data::Dumper::Indent = 3; # pretty print with array indices
- print Dumper($boo);
-
- $Data::Dumper::Useqq = 1; # print strings in double quotes
- print Dumper($boo);
-
-
- ########
- # recursive structures
- ########
-
- @c = ('c');
- $c = \@c;
- $b = {};
- $a = [1, $b, $c];
- $b->{a} = $a;
- $b->{b} = $a->[1];
- $b->{c} = $a->[2];
- print Data::Dumper->Dump([$a,$b,$c], [qw(a b c)]);
-
-
- $Data::Dumper::Purity = 1; # fill in the holes for eval
- print Data::Dumper->Dump([$a, $b], [qw(*a b)]); # print as @a
- print Data::Dumper->Dump([$b, $a], [qw(*b a)]); # print as %b
-
-
- $Data::Dumper::Deepcopy = 1; # avoid cross-refs
- print Data::Dumper->Dump([$b, $a], [qw(*b a)]);
-
-
- $Data::Dumper::Purity = 0; # avoid cross-refs
- print Data::Dumper->Dump([$b, $a], [qw(*b a)]);
-
- ########
- # deep structures
- ########
-
- $a = "pearl";
- $b = [ $a ];
- $c = { 'b' => $b };
- $d = [ $c ];
- $e = { 'd' => $d };
- $f = { 'e' => $e };
- print Data::Dumper->Dump([$f], [qw(f)]);
-
- $Data::Dumper::Maxdepth = 3; # no deeper than 3 refs down
- print Data::Dumper->Dump([$f], [qw(f)]);
-
-
- ########
- # object-oriented usage
- ########
-
- $d = Data::Dumper->new([$a,$b], [qw(a b)]);
- $d->Seen({'*c' => $c}); # stash a ref without printing it
- $d->Indent(3);
- print $d->Dump;
- $d->Reset->Purity(0); # empty the seen cache
- print join "----\n", $d->Dump;
-
-
- ########
- # persistence
- ########
-
- package Foo;
- sub new { bless { state => 'awake' }, shift }
- sub Freeze {
- my $s = shift;
- print STDERR "preparing to sleep\n";
- $s->{state} = 'asleep';
- return bless $s, 'Foo::ZZZ';
- }
-
- package Foo::ZZZ;
- sub Thaw {
- my $s = shift;
- print STDERR "waking up\n";
- $s->{state} = 'awake';
- return bless $s, 'Foo';
- }
-
- package Foo;
- use Data::Dumper;
- $a = Foo->new;
- $b = Data::Dumper->new([$a], ['c']);
- $b->Freezer('Freeze');
- $b->Toaster('Thaw');
- $c = $b->Dump;
- print $c;
- $d = eval $c;
- print Data::Dumper->Dump([$d], ['d']);
-
-
- ########
- # symbol substitution (useful for recreating CODE refs)
- ########
-
- sub foo { print "foo speaking\n" }
- *other = \&foo;
- $bar = [ \&other ];
- $d = Data::Dumper->new([\&other,$bar],['*other','bar']);
- $d->Seen({ '*foo' => \&foo });
- print $d->Dump;
-
-
- ########
- # sorting and filtering hash keys
- ########
-
- $Data::Dumper::Sortkeys = \&my_filter;
- my $foo = { map { (ord, "$_$_$_") } 'I'..'Q' };
- my $bar = { %$foo };
- my $baz = { reverse %$foo };
- print Dumper [ $foo, $bar, $baz ];
-
- sub my_filter {
- my ($hash) = @_;
- # return an array ref containing the hash keys to dump
- # in the order that you want them to be dumped
- return [
- # Sort the keys of %$foo in reverse numeric order
- $hash eq $foo ? (sort {$b <=> $a} keys %$hash) :
- # Only dump the odd number keys of %$bar
- $hash eq $bar ? (grep {$_ % 2} keys %$hash) :
- # Sort keys in default order for all other hashes
- (sort keys %$hash)
- ];
- }
-
-=head1 BUGS
-
-Due to limitations of Perl subroutine call semantics, you cannot pass an
-array or hash. Prepend it with a C<\> to pass its reference instead. This
-will be remedied in time, now that Perl has subroutine prototypes.
-For now, you need to use the extended usage form, and prepend the
-name with a C<*> to output it as a hash or array.
-
-C<Data::Dumper> cheats with CODE references. If a code reference is
-encountered in the structure being processed (and if you haven't set
-the C<Deparse> flag), an anonymous subroutine that
-contains the string '"DUMMY"' will be inserted in its place, and a warning
-will be printed if C<Purity> is set. You can C<eval> the result, but bear
-in mind that the anonymous sub that gets created is just a placeholder.
-Someday, perl will have a switch to cache-on-demand the string
-representation of a compiled piece of code, I hope. If you have prior
-knowledge of all the code refs that your data structures are likely
-to have, you can use the C<Seen> method to pre-seed the internal reference
-table and make the dumped output point to them, instead. See L<EXAMPLES>
-above.
-
-The C<Useqq> and C<Deparse> flags makes Dump() run slower, since the
-XSUB implementation does not support them.
-
-SCALAR objects have the weirdest looking C<bless> workaround.
-
-
-=head1 AUTHOR
-
-Gurusamy Sarathy gsar@activestate.com
-
-Copyright (c) 1996-98 Gurusamy Sarathy. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-
-=head1 VERSION
-
-Version 2.12 (unreleased)
-
-=head1 SEE ALSO
-
-perl(1)
-
-=cut
diff --git a/Master/perltl/lib/Digest/MD5.pm b/Master/perltl/lib/Digest/MD5.pm
deleted file mode 100644
index 372e007cb70..00000000000
--- a/Master/perltl/lib/Digest/MD5.pm
+++ /dev/null
@@ -1,279 +0,0 @@
-package Digest::MD5;
-
-use strict;
-use vars qw($VERSION @ISA @EXPORT_OK);
-
-$VERSION = '2.20'; # $Date: 2002/05/06 05:15:09 $
-
-require Exporter;
-*import = \&Exporter::import;
-@EXPORT_OK = qw(md5 md5_hex md5_base64);
-
-require DynaLoader;
-@ISA=qw(DynaLoader);
-
-eval {
- Digest::MD5->bootstrap($VERSION);
-};
-if ($@) {
- my $olderr = $@;
- eval {
- # Try to load the pure perl version
- require Digest::Perl::MD5;
-
- Digest::Perl::MD5->import(qw(md5 md5_hex md5_base64));
- push(@ISA, "Digest::Perl::MD5"); # make OO interface work
- };
- if ($@) {
- # restore the original error
- die $olderr;
- }
-}
-else {
- *reset = \&new;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Digest::MD5 - Perl interface to the MD5 Algorithm
-
-=head1 SYNOPSIS
-
- # Functional style
- use Digest::MD5 qw(md5 md5_hex md5_base64);
-
- $digest = md5($data);
- $digest = md5_hex($data);
- $digest = md5_base64($data);
-
- # OO style
- use Digest::MD5;
-
- $ctx = Digest::MD5->new;
-
- $ctx->add($data);
- $ctx->addfile(*FILE);
-
- $digest = $ctx->digest;
- $digest = $ctx->hexdigest;
- $digest = $ctx->b64digest;
-
-=head1 DESCRIPTION
-
-The C<Digest::MD5> module allows you to use the RSA Data Security
-Inc. MD5 Message Digest algorithm from within Perl programs. The
-algorithm takes as input a message of arbitrary length and produces as
-output a 128-bit "fingerprint" or "message digest" of the input.
-
-The C<Digest::MD5> module provide a procedural interface for simple
-use, as well as an object oriented interface that can handle messages
-of arbitrary length and which can read files directly.
-
-A binary digest will be 16 bytes long. A hex digest will be 32
-characters long. A base64 digest will be 22 characters long.
-
-=head1 FUNCTIONS
-
-The following functions can be exported from the C<Digest::MD5>
-module. No functions are exported by default.
-
-=over 4
-
-=item md5($data,...)
-
-This function will concatenate all arguments, calculate the MD5 digest
-of this "message", and return it in binary form.
-
-=item md5_hex($data,...)
-
-Same as md5(), but will return the digest in hexadecimal form.
-
-=item md5_base64($data,...)
-
-Same as md5(), but will return the digest as a base64 encoded string.
-
-The base64 encoded string returned is not padded to be a multiple of 4
-bytes long. If you want interoperability with other base64 encoded
-md5 digests you might want to append the string "==" to the result.
-
-=back
-
-=head1 METHODS
-
-The following methods are available:
-
-=over 4
-
-=item $md5 = Digest::MD5->new
-
-The constructor returns a new C<Digest::MD5> object which encapsulate
-the state of the MD5 message-digest algorithm. You can add data to
-the object and finally ask for the digest.
-
-If called as an instance method (i.e. $md5->new) it will just reset the
-state the object to the state of a newly created object. No new
-object is created in this case.
-
-=item $md5->reset
-
-This is just an alias for $md5->new.
-
-=item $md5->add($data,...)
-
-The $data provided as argument are appended to the message we
-calculate the digest for. The return value is the $md5 object itself.
-
-=item $md5->addfile($io_handle)
-
-The $io_handle is read until EOF and the content is appended to the
-message we calculate the digest for. The return value is the $md5
-object itself.
-
-In most cases you want to make sure that the $io_handle is set up to
-be in binmode().
-
-=item $md5->digest
-
-Return the binary digest for the message.
-
-Note that the C<digest> operation is effectively a destructive,
-read-once operation. Once it has been performed, the C<Digest::MD5>
-object is automatically C<reset> and can be used to calculate another
-digest value.
-
-=item $md5->hexdigest
-
-Same as $md5->digest, but will return the digest in hexadecimal form.
-
-=item $md5->b64digest
-
-Same as $md5->digest, but will return the digest as a base64 encoded
-string.
-
-The base64 encoded string returned is not padded to be a multiple of 4
-bytes long. If you want interoperability with other base64 encoded
-md5 digests you might want to append the string "==" to the result.
-
-=back
-
-
-=head1 EXAMPLES
-
-The simplest way to use this library is to import the md5_hex()
-function (or one of its cousins):
-
- use Digest::MD5 qw(md5_hex);
- print "Digest is ", md5_hex("foobarbaz"), "\n";
-
-The above example would print out the message
-
- Digest is 6df23dc03f9b54cc38a0fc1483df6e21
-
-provided that the implementation is working correctly. The same
-checksum can also be calculated in OO style:
-
- use Digest::MD5;
-
- $md5 = Digest::MD5->new;
- $md5->add('foo', 'bar');
- $md5->add('baz');
- $digest = $md5->hexdigest;
-
- print "Digest is $digest\n";
-
-With OO style you can break the message arbitrary. This means that we
-are no longer limited to have space for the whole message in memory, i.e.
-we can handle messages of any size.
-
-This is useful when calculating checksum for files:
-
- use Digest::MD5;
-
- my $file = shift || "/etc/passwd";
- open(FILE, $file) or die "Can't open '$file': $!";
- binmode(FILE);
-
- $md5 = Digest::MD5->new;
- while (<FILE>) {
- $md5->add($_);
- }
- close(FILE);
- print $md5->b64digest, " $file\n";
-
-Or we can use the builtin addfile method for more efficient reading of
-the file:
-
- use Digest::MD5;
-
- my $file = shift || "/etc/passwd";
- open(FILE, $file) or die "Can't open '$file': $!";
- binmode(FILE);
-
- print Digest::MD5->new->addfile(*FILE)->hexdigest, " $file\n";
-
-=head1 SEE ALSO
-
-L<Digest>,
-L<Digest::MD2>,
-L<Digest::SHA1>,
-L<Digest::HMAC>
-
-L<md5sum(1)>
-
-RFC 1321
-
-=head1 COPYRIGHT
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
- Copyright 1998-2002 Gisle Aas.
- Copyright 1995-1996 Neil Winton.
- Copyright 1991-1992 RSA Data Security, Inc.
-
-The MD5 algorithm is defined in RFC 1321. The basic C code
-implementing the algorithm is derived from that in the RFC and is
-covered by the following copyright:
-
-=over 4
-
-=item
-
-Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
-
-=back
-
-This copyright does not prohibit distribution of any version of Perl
-containing this extension under the terms of the GNU or Artistic
-licenses.
-
-=head1 AUTHORS
-
-The original MD5 interface was written by Neil Winton
-(C<N.Winton@axion.bt.co.uk>).
-
-This release was made by Gisle Aas <gisle@ActiveState.com>
-
-=cut
diff --git a/Master/perltl/lib/DynaLoader.pm b/Master/perltl/lib/DynaLoader.pm
deleted file mode 100644
index da7923e2bc2..00000000000
--- a/Master/perltl/lib/DynaLoader.pm
+++ /dev/null
@@ -1,826 +0,0 @@
-
-# Generated from DynaLoader.pm.PL
-
-package DynaLoader;
-
-# And Gandalf said: 'Many folk like to know beforehand what is to
-# be set on the table; but those who have laboured to prepare the
-# feast like to keep their secret; for wonder makes the words of
-# praise louder.'
-
-# (Quote from Tolkien suggested by Anno Siegel.)
-#
-# See pod text at end of file for documentation.
-# See also ext/DynaLoader/README in source tree for other information.
-#
-# Tim.Bunce@ig.co.uk, August 1994
-
-use vars qw($VERSION *AUTOLOAD);
-
-$VERSION = 1.04; # avoid typo warning
-
-require AutoLoader;
-*AUTOLOAD = \&AutoLoader::AUTOLOAD;
-
-use Config;
-
-# 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;
-
-# enable debug/trace messages from DynaLoader perl code
-$dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug;
-
-#
-# Flags to alter dl_load_file behaviour. Assigned bits:
-# 0x01 make symbols available for linking later dl_load_file's.
-# (only known to work on Solaris 2 using dlopen(RTLD_GLOBAL))
-# (ignored under VMS; effect is built-in to image linking)
-#
-# This is called as a class method $module->dl_load_flags. The
-# definition here will be inherited and result on "default" loading
-# behaviour unless a sub-class of DynaLoader defines its own version.
-#
-
-sub dl_load_flags { 0x00 }
-
-# ($dl_dlext, $dlsrc)
-# = @Config::Config{'dlext', 'dlsrc'};
- ($dl_dlext, $dlsrc) = ('dll','dl_win32.xs')
-;
-# Some systems need special handling to expand file specifications
-# (VMS support by Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>)
-# See dl_expandspec() for more details. Should be harmless but
-# inefficient to define on systems that don't need it.
-$Is_VMS = $^O eq 'VMS';
-$do_expand = $Is_VMS;
-$Is_MacOS = $^O eq 'MacOS';
-
-my $Mac_FS;
-$Mac_FS = eval { require Mac::FileSpec::Unixish } if $Is_MacOS;
-
-@dl_require_symbols = (); # names of symbols we need
-@dl_resolve_using = (); # names of files to link with
-@dl_library_path = (); # path to look for files
-
-#XSLoader.pm may have added elements before we were required
-#@dl_librefs = (); # things we have loaded
-#@dl_modules = (); # Modules we have loaded
-
-# This is a fix to support DLD's unfortunate desire to relink -lc
-@dl_resolve_using = dl_findfile('-lc') if $dlsrc eq "dl_dld.xs";
-
-# Initialise @dl_library_path with the 'standard' library path
-# for this platform as determined by Configure.
-
-push(@dl_library_path, split(' ', $Config::Config{libpth}));
-
-
-my $ldlibpthname = $Config::Config{ldlibpthname};
-my $ldlibpthname_defined = defined $Config::Config{ldlibpthname};
-my $pthsep = $Config::Config{path_sep};
-
-# Add to @dl_library_path any extra directories we can gather from environment
-# during runtime.
-
-if ($ldlibpthname_defined &&
- exists $ENV{$ldlibpthname}) {
- push(@dl_library_path, split(/$pthsep/, $ENV{$ldlibpthname}));
-}
-
-# E.g. HP-UX supports both its native SHLIB_PATH *and* LD_LIBRARY_PATH.
-
-if ($ldlibpthname_defined &&
- $ldlibpthname ne 'LD_LIBRARY_PATH' &&
- exists $ENV{LD_LIBRARY_PATH}) {
- push(@dl_library_path, split(/$pthsep/, $ENV{LD_LIBRARY_PATH}));
-}
-
-
-# No prizes for guessing why we don't say 'bootstrap DynaLoader;' here.
-# NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB
-boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) &&
- !defined(&dl_error);
-
-if ($dl_debug) {
- print STDERR "DynaLoader.pm loaded (@INC, @dl_library_path)\n";
- print STDERR "DynaLoader not linked into this perl\n"
- unless defined(&boot_DynaLoader);
-}
-
-1; # End of main code
-
-
-sub croak { require Carp; Carp::croak(@_) }
-
-sub bootstrap_inherit {
- my $module = $_[0];
- local *isa = *{"$module\::ISA"};
- local @isa = (@isa, 'DynaLoader');
- # Cannot goto due to delocalization. Will report errors on a wrong line?
- bootstrap(@_);
-}
-
-# The bootstrap function cannot be autoloaded (without complications)
-# so we define it here:
-
-sub bootstrap {
- # use local vars to enable $module.bs script to edit values
- local(@args) = @_;
- local($module) = $args[0];
- local(@dirs, $file);
-
- unless ($module) {
- require Carp;
- Carp::confess("Usage: DynaLoader::bootstrap(module)");
- }
-
- # A common error on platforms which don't support dynamic loading.
- # Since it's fatal and potentially confusing we give a detailed message.
- croak("Can't load module $module, dynamic loading not available in this perl.\n".
- " (You may need to build a new perl executable which either supports\n".
- " dynamic loading or has the $module module statically linked into it.)\n")
- unless defined(&dl_load_file);
-
- my @modparts = split(/::/,$module);
- 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.
- $modfname = &mod2fname(\@modparts) if defined &mod2fname;
-
- # Truncate the module name to 8.3 format for NetWare
- if (($^O eq 'NetWare') && (length($modfname) > 8)) {
- $modfname = substr($modfname, 0, 8);
- }
-
- my $modpname = join(($Is_MacOS ? ':' : '/'),@modparts);
-
- print STDERR "DynaLoader::bootstrap for $module ",
- ($Is_MacOS
- ? "(:auto:$modpname:$modfname.$dl_dlext)\n" :
- "(auto/$modpname/$modfname.$dl_dlext)\n")
- if $dl_debug;
-
- foreach (@INC) {
- chop($_ = VMS::Filespec::unixpath($_)) if $Is_VMS;
- my $dir;
- if ($Is_MacOS) {
- my $path = $_;
- if ($Mac_FS && ! -d $path) {
- $path = Mac::FileSpec::Unixish::nativize($path);
- }
- $path .= ":" unless /:$/;
- $dir = "${path}auto:$modpname";
- } else {
- $dir = "$_/auto/$modpname";
- }
-
- next unless -d $dir; # skip over uninteresting directories
-
- # check for common cases to avoid autoload of dl_findfile
- my $try = $Is_MacOS ? "$dir:$modfname.$dl_dlext" : "$dir/$modfname.$dl_dlext";
- last if $file = ($do_expand) ? dl_expandspec($try) : ((-f $try) && $try);
-
- # no luck here, save dir for possible later dl_findfile search
- push @dirs, $dir;
- }
- # last resort, let dl_findfile have a go in all known locations
- $file = dl_findfile(map("-L$_",@dirs,@INC), $modfname) unless $file;
-
- croak("Can't locate loadable object for module $module in \@INC (\@INC contains: @INC)")
- unless $file; # wording similar to error from 'require'
-
- $file = uc($file) if $Is_VMS && $Config::Config{d_vms_case_sensitive_symbols};
- my $bootname = "boot_$module";
- $bootname =~ s/\W/_/g;
- @dl_require_symbols = ($bootname);
-
- # Execute optional '.bootstrap' perl script for this module.
- # The .bs file can be used to configure @dl_resolve_using etc to
- # match the needs of the individual module on this architecture.
- my $bs = $file;
- $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library
- if (-s $bs) { # only read file if it's not empty
- print STDERR "BS: $bs ($^O, $dlsrc)\n" if $dl_debug;
- eval { do $bs; };
- warn "$bs: $@\n" if $@;
- }
-
- my $boot_symbol_ref;
-
- if ($^O eq 'darwin') {
- if ($boot_symbol_ref = dl_find_symbol(0, $bootname)) {
- goto boot; #extension library has already been loaded, e.g. darwin
- }
- }
-
- # Many dynamic extension loading problems will appear to come from
- # this section of code: XYZ failed at line 123 of DynaLoader.pm.
- # Often these errors are actually occurring in the initialisation
- # C code of the extension XS file. Perl reports the error as being
- # in this perl code simply because this was the last perl code
- # it executed.
-
- my $libref = dl_load_file($file, $module->dl_load_flags) or
- croak("Can't load '$file' for module $module: ".dl_error());
-
- push(@dl_librefs,$libref); # record loaded object
-
- my @unresolved = dl_undef_symbols();
- if (@unresolved) {
- require Carp;
- Carp::carp("Undefined symbols present after loading $file: @unresolved\n");
- }
-
- $boot_symbol_ref = dl_find_symbol($libref, $bootname) or
- croak("Can't find '$bootname' symbol in $file\n");
-
- push(@dl_modules, $module); # record loaded module
-
- boot:
- my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file);
-
- # See comment block above
- &$xs(@args);
-}
-
-
-#sub _check_file { # private utility to handle dl_expandspec vs -f tests
-# my($file) = @_;
-# return $file if (!$do_expand && -f $file); # the common case
-# return $file if ( $do_expand && ($file=dl_expandspec($file)));
-# return undef;
-#}
-
-
-# Let autosplit and the autoloader deal with these functions:
-__END__
-
-
-sub dl_findfile {
- # Read ext/DynaLoader/DynaLoader.doc for detailed information.
- # This function does not automatically consider the architecture
- # or the perl library auto directories.
- my (@args) = @_;
- my (@dirs, $dir); # which directories to search
- my (@found); # full paths to real files we have found
- my $dl_ext= 'dll'; # $Config::Config{'dlext'} suffix for perl extensions
- my $dl_so = 'dll'; # $Config::Config{'so'} suffix for shared libraries
-
- print STDERR "dl_findfile(@args)\n" if $dl_debug;
-
- # accumulate directories but process files as they appear
- arg: foreach(@args) {
- # Special fast case: full filepath requires no search
- if ($Is_VMS && m%[:>/\]]% && -f $_) {
- push(@found,dl_expandspec(VMS::Filespec::vmsify($_)));
- last arg unless wantarray;
- next;
- }
- elsif ($Is_MacOS) {
- if (m/:/ && -f $_) {
- push(@found,$_);
- last arg unless wantarray;
- }
- }
- elsif (m:/: && -f $_ && !$do_expand) {
- push(@found,$_);
- last arg unless wantarray;
- next;
- }
-
- # Deal with directories first:
- # Using a -L prefix is the preferred option (faster and more robust)
- if (m:^-L:) { s/^-L//; push(@dirs, $_); next; }
-
- if ($Is_MacOS) {
- # Otherwise we try to try to spot directories by a heuristic
- # (this is a more complicated issue than it first appears)
- if (m/:/ && -d $_) { push(@dirs, $_); next; }
- # Only files should get this far...
- my(@names, $name); # what filenames to look for
- s/^-l//;
- push(@names, $_);
- foreach $dir (@dirs, @dl_library_path) {
- next unless -d $dir;
- $dir =~ s/^([^:]+)$/:$1/;
- $dir =~ s/:$//;
- foreach $name (@names) {
- my($file) = "$dir:$name";
- print STDERR " checking in $dir for $name\n" if $dl_debug;
- if (-f $file) {
- push(@found, $file);
- next arg; # no need to look any further
- }
- }
- }
- next;
- }
-
- # Otherwise we try to try to spot directories by a heuristic
- # (this is a more complicated issue than it first appears)
- if (m:/: && -d $_) { push(@dirs, $_); next; }
-
- # VMS: we may be using native VMS directory syntax instead of
- # Unix emulation, so check this as well
- if ($Is_VMS && /[:>\]]/ && -d $_) { push(@dirs, $_); next; }
-
- # Only files should get this far...
- my(@names, $name); # what filenames to look for
- if (m:-l: ) { # convert -lname to appropriate library name
- s/-l//;
- push(@names,"lib$_.$dl_so");
- push(@names,"lib$_.a");
- } else { # Umm, a bare name. Try various alternatives:
- # these should be ordered with the most likely first
- push(@names,"$_.$dl_ext") unless m/\.$dl_ext$/o;
- push(@names,"$_.$dl_so") unless m/\.$dl_so$/o;
- push(@names,"lib$_.$dl_so") unless m:/:;
- push(@names,"$_.a") if !m/\.a$/ and $dlsrc eq "dl_dld.xs";
- push(@names, $_);
- }
- foreach $dir (@dirs, @dl_library_path) {
- next unless -d $dir;
- chop($dir = VMS::Filespec::unixpath($dir)) if $Is_VMS;
- foreach $name (@names) {
- my($file) = "$dir/$name";
- print STDERR " checking in $dir for $name\n" if $dl_debug;
- $file = ($do_expand) ? dl_expandspec($file) : (-f $file && $file);
- #$file = _check_file($file);
- if ($file) {
- push(@found, $file);
- next arg; # no need to look any further
- }
- }
- }
- }
- if ($dl_debug) {
- foreach(@dirs) {
- print STDERR " dl_findfile ignored non-existent directory: $_\n" unless -d $_;
- }
- print STDERR "dl_findfile found: @found\n";
- }
- return $found[0] unless wantarray;
- @found;
-}
-
-
-sub dl_expandspec {
- my($spec) = @_;
- # Optional function invoked if DynaLoader.pm sets $do_expand.
- # Most systems do not require or use this function.
- # Some systems may implement it in the dl_*.xs file in which case
- # this autoload version will not be called but is harmless.
-
- # This function is designed to deal with systems which treat some
- # 'filenames' in a special way. For example VMS 'Logical Names'
- # (something like unix environment variables - but different).
- # This function should recognise such names and expand them into
- # full file paths.
- # Must return undef if $spec is invalid or file does not exist.
-
- my $file = $spec; # default output to input
-
- if ($Is_VMS) { # dl_expandspec should be defined in dl_vms.xs
- require Carp;
- Carp::croak("dl_expandspec: should be defined in XS file!\n");
- } else {
- return undef unless -f $file;
- }
- print STDERR "dl_expandspec($spec) => $file\n" if $dl_debug;
- $file;
-}
-
-sub dl_find_symbol_anywhere
-{
- my $sym = shift;
- my $libref;
- foreach $libref (@dl_librefs) {
- my $symref = dl_find_symbol($libref,$sym);
- return $symref if $symref;
- }
- return undef;
-}
-
-=head1 NAME
-
-DynaLoader - Dynamically load C libraries into Perl code
-
-dl_error(), dl_findfile(), dl_expandspec(), dl_load_file(), dl_unload_file(), dl_find_symbol(), dl_find_symbol_anywhere(), dl_undef_symbols(), dl_install_xsub(), dl_load_flags(), bootstrap() - routines used by DynaLoader modules
-
-=head1 SYNOPSIS
-
- package YourPackage;
- require DynaLoader;
- @ISA = qw(... DynaLoader ...);
- bootstrap YourPackage;
-
- # optional method for 'global' loading
- sub dl_load_flags { 0x01 }
-
-
-=head1 DESCRIPTION
-
-This document defines a standard generic interface to the dynamic
-linking mechanisms available on many platforms. Its primary purpose is
-to implement automatic dynamic loading of Perl modules.
-
-This document serves as both a specification for anyone wishing to
-implement the DynaLoader for a new platform and as a guide for
-anyone wishing to use the DynaLoader directly in an application.
-
-The DynaLoader is designed to be a very simple high-level
-interface that is sufficiently general to cover the requirements
-of SunOS, HP-UX, NeXT, Linux, VMS and other platforms.
-
-It is also hoped that the interface will cover the needs of OS/2, NT
-etc and also allow pseudo-dynamic linking (using C<ld -A> at runtime).
-
-It must be stressed that the DynaLoader, by itself, is practically
-useless for accessing non-Perl libraries because it provides almost no
-Perl-to-C 'glue'. There is, for example, no mechanism for calling a C
-library function or supplying arguments. A C::DynaLib module
-is available from CPAN sites which performs that function for some
-common system types. And since the year 2000, there's also Inline::C,
-a module that allows you to write Perl subroutines in C. Also available
-from your local CPAN site.
-
-DynaLoader Interface Summary
-
- @dl_library_path
- @dl_resolve_using
- @dl_require_symbols
- $dl_debug
- @dl_librefs
- @dl_modules
- Implemented in:
- bootstrap($modulename) Perl
- @filepaths = dl_findfile(@names) Perl
- $flags = $modulename->dl_load_flags Perl
- $symref = dl_find_symbol_anywhere($symbol) Perl
-
- $libref = dl_load_file($filename, $flags) C
- $status = dl_unload_file($libref) C
- $symref = dl_find_symbol($libref, $symbol) C
- @symbols = dl_undef_symbols() C
- dl_install_xsub($name, $symref [, $filename]) C
- $message = dl_error C
-
-=over 4
-
-=item @dl_library_path
-
-The standard/default list of directories in which dl_findfile() will
-search for libraries etc. Directories are searched in order:
-$dl_library_path[0], [1], ... etc
-
-@dl_library_path is initialised to hold the list of 'normal' directories
-(F</usr/lib>, etc) determined by B<Configure> (C<$Config{'libpth'}>). This should
-ensure portability across a wide range of platforms.
-
-@dl_library_path should also be initialised with any other directories
-that can be determined from the environment at runtime (such as
-LD_LIBRARY_PATH for SunOS).
-
-After initialisation @dl_library_path can be manipulated by an
-application using push and unshift before calling dl_findfile().
-Unshift can be used to add directories to the front of the search order
-either to save search time or to override libraries with the same name
-in the 'normal' directories.
-
-The load function that dl_load_file() calls may require an absolute
-pathname. The dl_findfile() function and @dl_library_path can be
-used to search for and return the absolute pathname for the
-library/object that you wish to load.
-
-=item @dl_resolve_using
-
-A list of additional libraries or other shared objects which can be
-used to resolve any undefined symbols that might be generated by a
-later call to load_file().
-
-This is only required on some platforms which do not handle dependent
-libraries automatically. For example the Socket Perl extension
-library (F<auto/Socket/Socket.so>) contains references to many socket
-functions which need to be resolved when it's loaded. Most platforms
-will automatically know where to find the 'dependent' library (e.g.,
-F</usr/lib/libsocket.so>). A few platforms need to be told the
-location of the dependent library explicitly. Use @dl_resolve_using
-for this.
-
-Example usage:
-
- @dl_resolve_using = dl_findfile('-lsocket');
-
-=item @dl_require_symbols
-
-A list of one or more symbol names that are in the library/object file
-to be dynamically loaded. This is only required on some platforms.
-
-=item @dl_librefs
-
-An array of the handles returned by successful calls to dl_load_file(),
-made by bootstrap, in the order in which they were loaded.
-Can be used with dl_find_symbol() to look for a symbol in any of
-the loaded files.
-
-=item @dl_modules
-
-An array of module (package) names that have been bootstrap'ed.
-
-=item dl_error()
-
-Syntax:
-
- $message = dl_error();
-
-Error message text from the last failed DynaLoader function. Note
-that, similar to errno in unix, a successful function call does not
-reset this message.
-
-Implementations should detect the error as soon as it occurs in any of
-the other functions and save the corresponding message for later
-retrieval. This will avoid problems on some platforms (such as SunOS)
-where the error message is very temporary (e.g., dlerror()).
-
-=item $dl_debug
-
-Internal debugging messages are enabled when $dl_debug is set true.
-Currently setting $dl_debug only affects the Perl side of the
-DynaLoader. These messages should help an application developer to
-resolve any DynaLoader usage problems.
-
-$dl_debug is set to C<$ENV{'PERL_DL_DEBUG'}> if defined.
-
-For the DynaLoader developer/porter there is a similar debugging
-variable added to the C code (see dlutils.c) and enabled if Perl was
-built with the B<-DDEBUGGING> flag. This can also be set via the
-PERL_DL_DEBUG environment variable. Set to 1 for minimal information or
-higher for more.
-
-=item dl_findfile()
-
-Syntax:
-
- @filepaths = dl_findfile(@names)
-
-Determine the full paths (including file suffix) of one or more
-loadable files given their generic names and optionally one or more
-directories. Searches directories in @dl_library_path by default and
-returns an empty list if no files were found.
-
-Names can be specified in a variety of platform independent forms. Any
-names in the form B<-lname> are converted into F<libname.*>, where F<.*> is
-an appropriate suffix for the platform.
-
-If a name does not already have a suitable prefix and/or suffix then
-the corresponding file will be searched for by trying combinations of
-prefix and suffix appropriate to the platform: "$name.o", "lib$name.*"
-and "$name".
-
-If any directories are included in @names they are searched before
-@dl_library_path. Directories may be specified as B<-Ldir>. Any other
-names are treated as filenames to be searched for.
-
-Using arguments of the form C<-Ldir> and C<-lname> is recommended.
-
-Example:
-
- @dl_resolve_using = dl_findfile(qw(-L/usr/5lib -lposix));
-
-
-=item dl_expandspec()
-
-Syntax:
-
- $filepath = dl_expandspec($spec)
-
-Some unusual systems, such as VMS, require special filename handling in
-order to deal with symbolic names for files (i.e., VMS's Logical Names).
-
-To support these systems a dl_expandspec() function can be implemented
-either in the F<dl_*.xs> file or code can be added to the autoloadable
-dl_expandspec() function in F<DynaLoader.pm>. See F<DynaLoader.pm> for
-more information.
-
-=item dl_load_file()
-
-Syntax:
-
- $libref = dl_load_file($filename, $flags)
-
-Dynamically load $filename, which must be the path to a shared object
-or library. An opaque 'library reference' is returned as a handle for
-the loaded object. Returns undef on error.
-
-The $flags argument to alters dl_load_file behaviour.
-Assigned bits:
-
- 0x01 make symbols available for linking later dl_load_file's.
- (only known to work on Solaris 2 using dlopen(RTLD_GLOBAL))
- (ignored under VMS; this is a normal part of image linking)
-
-(On systems that provide a handle for the loaded object such as SunOS
-and HPUX, $libref will be that handle. On other systems $libref will
-typically be $filename or a pointer to a buffer containing $filename.
-The application should not examine or alter $libref in any way.)
-
-This is the function that does the real work. It should use the
-current values of @dl_require_symbols and @dl_resolve_using if required.
-
- SunOS: dlopen($filename)
- HP-UX: shl_load($filename)
- Linux: dld_create_reference(@dl_require_symbols); dld_link($filename)
- NeXT: rld_load($filename, @dl_resolve_using)
- VMS: lib$find_image_symbol($filename,$dl_require_symbols[0])
-
-(The dlopen() function is also used by Solaris and some versions of
-Linux, and is a common choice when providing a "wrapper" on other
-mechanisms as is done in the OS/2 port.)
-
-=item dl_unload_file()
-
-Syntax:
-
- $status = dl_unload_file($libref)
-
-Dynamically unload $libref, which must be an opaque 'library reference' as
-returned from dl_load_file. Returns one on success and zero on failure.
-
-This function is optional and may not necessarily be provided on all platforms.
-If it is defined, it is called automatically when the interpreter exits for
-every shared object or library loaded by DynaLoader::bootstrap. All such
-library references are stored in @dl_librefs by DynaLoader::Bootstrap as it
-loads the libraries. The files are unloaded in last-in, first-out order.
-
-This unloading is usually necessary when embedding a shared-object perl (e.g.
-one configured with -Duseshrplib) within a larger application, and the perl
-interpreter is created and destroyed several times within the lifetime of the
-application. In this case it is possible that the system dynamic linker will
-unload and then subsequently reload the shared libperl without relocating any
-references to it from any files DynaLoaded by the previous incarnation of the
-interpreter. As a result, any shared objects opened by DynaLoader may point to
-a now invalid 'ghost' of the libperl shared object, causing apparently random
-memory corruption and crashes. This behaviour is most commonly seen when using
-Apache and mod_perl built with the APXS mechanism.
-
- SunOS: dlclose($libref)
- HP-UX: ???
- Linux: ???
- NeXT: ???
- VMS: ???
-
-(The dlclose() function is also used by Solaris and some versions of
-Linux, and is a common choice when providing a "wrapper" on other
-mechanisms as is done in the OS/2 port.)
-
-=item dl_loadflags()
-
-Syntax:
-
- $flags = dl_loadflags $modulename;
-
-Designed to be a method call, and to be overridden by a derived class
-(i.e. a class which has DynaLoader in its @ISA). The definition in
-DynaLoader itself returns 0, which produces standard behavior from
-dl_load_file().
-
-=item dl_find_symbol()
-
-Syntax:
-
- $symref = dl_find_symbol($libref, $symbol)
-
-Return the address of the symbol $symbol or C<undef> if not found. If the
-target system has separate functions to search for symbols of different
-types then dl_find_symbol() should search for function symbols first and
-then other types.
-
-The exact manner in which the address is returned in $symref is not
-currently defined. The only initial requirement is that $symref can
-be passed to, and understood by, dl_install_xsub().
-
- SunOS: dlsym($libref, $symbol)
- HP-UX: shl_findsym($libref, $symbol)
- Linux: dld_get_func($symbol) and/or dld_get_symbol($symbol)
- NeXT: rld_lookup("_$symbol")
- VMS: lib$find_image_symbol($libref,$symbol)
-
-
-=item dl_find_symbol_anywhere()
-
-Syntax:
-
- $symref = dl_find_symbol_anywhere($symbol)
-
-Applies dl_find_symbol() to the members of @dl_librefs and returns
-the first match found.
-
-=item dl_undef_symbols()
-
-Example
-
- @symbols = dl_undef_symbols()
-
-Return a list of symbol names which remain undefined after load_file().
-Returns C<()> if not known. Don't worry if your platform does not provide
-a mechanism for this. Most do not need it and hence do not provide it,
-they just return an empty list.
-
-
-=item dl_install_xsub()
-
-Syntax:
-
- dl_install_xsub($perl_name, $symref [, $filename])
-
-Create a new Perl external subroutine named $perl_name using $symref as
-a pointer to the function which implements the routine. This is simply
-a direct call to newXSUB(). Returns a reference to the installed
-function.
-
-The $filename parameter is used by Perl to identify the source file for
-the function if required by die(), caller() or the debugger. If
-$filename is not defined then "DynaLoader" will be used.
-
-
-=item bootstrap()
-
-Syntax:
-
-bootstrap($module)
-
-This is the normal entry point for automatic dynamic loading in Perl.
-
-It performs the following actions:
-
-=over 8
-
-=item *
-
-locates an auto/$module directory by searching @INC
-
-=item *
-
-uses dl_findfile() to determine the filename to load
-
-=item *
-
-sets @dl_require_symbols to C<("boot_$module")>
-
-=item *
-
-executes an F<auto/$module/$module.bs> file if it exists
-(typically used to add to @dl_resolve_using any files which
-are required to load the module on the current platform)
-
-=item *
-
-calls dl_load_flags() to determine how to load the file.
-
-=item *
-
-calls dl_load_file() to load the file
-
-=item *
-
-calls dl_undef_symbols() and warns if any symbols are undefined
-
-=item *
-
-calls dl_find_symbol() for "boot_$module"
-
-=item *
-
-calls dl_install_xsub() to install it as "${module}::bootstrap"
-
-=item *
-
-calls &{"${module}::bootstrap"} to bootstrap the module (actually
-it uses the function reference returned by dl_install_xsub for speed)
-
-=back
-
-=back
-
-
-=head1 AUTHOR
-
-Tim Bunce, 11 August 1994.
-
-This interface is based on the work and comments of (in no particular
-order): Larry Wall, Robert Sanders, Dean Roehrich, Jeff Okamoto, Anno
-Siegel, Thomas Neumann, Paul Marquess, Charles Bailey, myself and others.
-
-Larry Wall designed the elegant inherited bootstrap mechanism and
-implemented the first Perl 5 dynamic loader using it.
-
-Solaris global loading added by Nick Ing-Simmons with design/coding
-assistance from Tim Bunce, January 1996.
-
-=cut
diff --git a/Master/perltl/lib/Errno.pm b/Master/perltl/lib/Errno.pm
deleted file mode 100644
index e23fdf215d2..00000000000
--- a/Master/perltl/lib/Errno.pm
+++ /dev/null
@@ -1,221 +0,0 @@
-#
-# This file is auto-generated. ***ANY*** changes here will be lost
-#
-
-package Errno;
-our (@EXPORT_OK,%EXPORT_TAGS,@ISA,$VERSION,%errno,$AUTOLOAD);
-use Exporter ();
-use Config;
-use strict;
-
-"$Config{'archname'}-$Config{'osvers'}" eq
-"MSWin32-x86-multi-thread-4.0" or
- die "Errno architecture (MSWin32-x86-multi-thread-4.0) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})";
-
-$VERSION = "1.09_00";
-$VERSION = eval $VERSION;
-@ISA = qw(Exporter);
-
-@EXPORT_OK = qw(EROFS ESHUTDOWN EPROTONOSUPPORT ENFILE ENOLCK
- EADDRINUSE ECONNABORTED EBADF EDEADLK ENOTDIR EINVAL ENOTTY EXDEV
- ELOOP ECONNREFUSED EISCONN EFBIG ECONNRESET EPFNOSUPPORT ENOENT
- EDISCON EWOULDBLOCK EDOM EMSGSIZE EDESTADDRREQ ENOTSOCK EIO ENOSPC
- EINPROGRESS ENOBUFS ERANGE EADDRNOTAVAIL EAFNOSUPPORT ENOSYS EINTR
- EHOSTDOWN EREMOTE EILSEQ ENOMEM ENOTCONN ENETUNREACH EPIPE ESTALE
- EDQUOT EUSERS EOPNOTSUPP ESPIPE EALREADY EMFILE ENAMETOOLONG EACCES
- ENOEXEC EISDIR EPROCLIM EBUSY E2BIG EPERM EEXIST ETOOMANYREFS
- ESOCKTNOSUPPORT ETIMEDOUT ENXIO ESRCH ENODEV EFAULT EAGAIN EMLINK
- EDEADLOCK ENOPROTOOPT ECHILD ENETDOWN EHOSTUNREACH EPROTOTYPE
- ENETRESET ENOTEMPTY);
-
-%EXPORT_TAGS = (
- POSIX => [qw(
- E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY
- EBADF EBUSY ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK
- EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH
- EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK
- EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS
- ENODEV ENOENT ENOEXEC ENOLCK ENOMEM ENOPROTOOPT ENOSPC ENOSYS ENOTCONN
- ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM EPFNOSUPPORT
- EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE EROFS
- ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS
- EUSERS EWOULDBLOCK EXDEV
- )]
-);
-
-sub EPERM () { 1 }
-sub ENOENT () { 2 }
-sub ESRCH () { 3 }
-sub EINTR () { 4 }
-sub EIO () { 5 }
-sub ENXIO () { 6 }
-sub E2BIG () { 7 }
-sub ENOEXEC () { 8 }
-sub EBADF () { 9 }
-sub ECHILD () { 10 }
-sub EAGAIN () { 11 }
-sub ENOMEM () { 12 }
-sub EACCES () { 13 }
-sub EFAULT () { 14 }
-sub EBUSY () { 16 }
-sub EEXIST () { 17 }
-sub EXDEV () { 18 }
-sub ENODEV () { 19 }
-sub ENOTDIR () { 20 }
-sub EISDIR () { 21 }
-sub EINVAL () { 22 }
-sub ENFILE () { 23 }
-sub EMFILE () { 24 }
-sub ENOTTY () { 25 }
-sub EFBIG () { 27 }
-sub ENOSPC () { 28 }
-sub ESPIPE () { 29 }
-sub EROFS () { 30 }
-sub EMLINK () { 31 }
-sub EPIPE () { 32 }
-sub EDOM () { 33 }
-sub ERANGE () { 34 }
-sub EDEADLK () { 36 }
-sub EDEADLOCK () { 36 }
-sub ENAMETOOLONG () { 38 }
-sub ENOLCK () { 39 }
-sub ENOSYS () { 40 }
-sub ENOTEMPTY () { 41 }
-sub EILSEQ () { 42 }
-sub EWOULDBLOCK () { 10035 }
-sub EINPROGRESS () { 10036 }
-sub EALREADY () { 10037 }
-sub ENOTSOCK () { 10038 }
-sub EDESTADDRREQ () { 10039 }
-sub EMSGSIZE () { 10040 }
-sub EPROTOTYPE () { 10041 }
-sub ENOPROTOOPT () { 10042 }
-sub EPROTONOSUPPORT () { 10043 }
-sub ESOCKTNOSUPPORT () { 10044 }
-sub EOPNOTSUPP () { 10045 }
-sub EPFNOSUPPORT () { 10046 }
-sub EAFNOSUPPORT () { 10047 }
-sub EADDRINUSE () { 10048 }
-sub EADDRNOTAVAIL () { 10049 }
-sub ENETDOWN () { 10050 }
-sub ENETUNREACH () { 10051 }
-sub ENETRESET () { 10052 }
-sub ECONNABORTED () { 10053 }
-sub ECONNRESET () { 10054 }
-sub ENOBUFS () { 10055 }
-sub EISCONN () { 10056 }
-sub ENOTCONN () { 10057 }
-sub ESHUTDOWN () { 10058 }
-sub ETOOMANYREFS () { 10059 }
-sub ETIMEDOUT () { 10060 }
-sub ECONNREFUSED () { 10061 }
-sub ELOOP () { 10062 }
-sub EHOSTDOWN () { 10064 }
-sub EHOSTUNREACH () { 10065 }
-sub EPROCLIM () { 10067 }
-sub EUSERS () { 10068 }
-sub EDQUOT () { 10069 }
-sub ESTALE () { 10070 }
-sub EREMOTE () { 10071 }
-sub EDISCON () { 10101 }
-
-sub TIEHASH { bless [] }
-
-sub FETCH {
- my ($self, $errname) = @_;
- my $proto = prototype("Errno::$errname");
- my $errno = "";
- if (defined($proto) && $proto eq "") {
- no strict 'refs';
- $errno = &$errname;
- $errno = 0 unless $! == $errno;
- }
- return $errno;
-}
-
-sub STORE {
- require Carp;
- Carp::confess("ERRNO hash is read only!");
-}
-
-*CLEAR = \&STORE;
-*DELETE = \&STORE;
-
-sub NEXTKEY {
- my($k,$v);
- while(($k,$v) = each %Errno::) {
- my $proto = prototype("Errno::$k");
- last if (defined($proto) && $proto eq "");
- }
- $k
-}
-
-sub FIRSTKEY {
- my $s = scalar keys %Errno::; # initialize iterator
- goto &NEXTKEY;
-}
-
-sub EXISTS {
- my ($self, $errname) = @_;
- my $proto = prototype($errname);
- defined($proto) && $proto eq "";
-}
-
-tie %!, __PACKAGE__;
-
-1;
-__END__
-
-=head1 NAME
-
-Errno - System errno constants
-
-=head1 SYNOPSIS
-
- use Errno qw(EINTR EIO :POSIX);
-
-=head1 DESCRIPTION
-
-C<Errno> defines and conditionally exports all the error constants
-defined in your system C<errno.h> include file. It has a single export
-tag, C<:POSIX>, which will export all POSIX defined error numbers.
-
-C<Errno> also makes C<%!> magic such that each element of C<%!> has a
-non-zero value only if C<$!> is set to that value. For example:
-
- use Errno;
-
- unless (open(FH, "/fangorn/spouse")) {
- if ($!{ENOENT}) {
- warn "Get a wife!\n";
- } else {
- warn "This path is barred: $!";
- }
- }
-
-If a specified constant C<EFOO> does not exist on the system, C<$!{EFOO}>
-returns C<"">. You may use C<exists $!{EFOO}> to check whether the
-constant is available on the system.
-
-=head1 CAVEATS
-
-Importing a particular constant may not be very portable, because the
-import will fail on platforms that do not have that constant. A more
-portable way to set C<$!> to a valid value is to use:
-
- if (exists &Errno::EFOO) {
- $! = &Errno::EFOO;
- }
-
-=head1 AUTHOR
-
-Graham Barr <gbarr@pobox.com>
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-8 Graham Barr. All rights reserved.
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
-
diff --git a/Master/perltl/lib/Exporter.pm b/Master/perltl/lib/Exporter.pm
deleted file mode 100644
index 8b8d4c49392..00000000000
--- a/Master/perltl/lib/Exporter.pm
+++ /dev/null
@@ -1,416 +0,0 @@
-package Exporter;
-
-require 5.006;
-
-# Be lean.
-#use strict;
-#no strict 'refs';
-
-our $Debug = 0;
-our $ExportLevel = 0;
-our $Verbose ||= 0;
-our $VERSION = '5.566';
-$Carp::Internal{Exporter} = 1;
-
-sub as_heavy {
- require Exporter::Heavy;
- # Unfortunately, this does not work if the caller is aliased as *name = \&foo
- # Thus the need to create a lot of identical subroutines
- my $c = (caller(1))[3];
- $c =~ s/.*:://;
- \&{"Exporter::Heavy::heavy_$c"};
-}
-
-sub export {
- goto &{as_heavy()};
-}
-
-sub import {
- my $pkg = shift;
- my $callpkg = caller($ExportLevel);
-
- # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-(
- my($exports, $export_cache, $fail)
- = (\@{"$pkg\::EXPORT"}, \%{"$pkg\::EXPORT"}, \@{"$pkg\::EXPORT_FAIL"});
- return export $pkg, $callpkg, @_
- if $Verbose or $Debug or @$fail > 1;
- my $args = @_ or @_ = @$exports;
-
- local $_;
- if ($args and not %$export_cache) {
- s/^&//, $export_cache->{$_} = 1
- foreach (@$exports, @{"$pkg\::EXPORT_OK"});
- }
- my $heavy;
- # Try very hard not to use {} and hence have to enter scope on the foreach
- # We bomb out of the loop with last as soon as heavy is set.
- if ($args or $fail) {
- ($heavy = (/\W/ or $args and not exists $export_cache->{$_}
- or @$fail and $_ eq $fail->[0])) and last
- foreach (@_);
- } else {
- ($heavy = /\W/) and last
- foreach (@_);
- }
- return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy;
- local $SIG{__WARN__} =
- sub {require Carp; &Carp::carp};
- # shortcut for the common case of no type character
- *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_;
-}
-
-# Default methods
-
-sub export_fail {
- my $self = shift;
- @_;
-}
-
-# Unfortunately, caller(1)[3] "does not work" if the caller is aliased as
-# *name = \&foo. Thus the need to create a lot of identical subroutines
-# Otherwise we could have aliased them to export().
-
-sub export_to_level {
- goto &{as_heavy()};
-}
-
-sub export_tags {
- goto &{as_heavy()};
-}
-
-sub export_ok_tags {
- goto &{as_heavy()};
-}
-
-sub require_version {
- goto &{as_heavy()};
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Exporter - Implements default import method for modules
-
-=head1 SYNOPSIS
-
-In module YourModule.pm:
-
- package YourModule;
- require Exporter;
- @ISA = qw(Exporter);
- @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
-
-In other files which wish to use YourModule:
-
- use ModuleName qw(frobnicate); # import listed symbols
- frobnicate ($left, $right) # calls YourModule::frobnicate
-
-=head1 DESCRIPTION
-
-The Exporter module implements an C<import> method which allows a module
-to export functions and variables to its users' namespaces. Many modules
-use Exporter rather than implementing their own C<import> method because
-Exporter provides a highly flexible interface, with an implementation optimised
-for the common case.
-
-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
-
-If you are only exporting function names it is recommended to omit the
-ampersand, as the implementation is faster this way.
-
-=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->(@args); # Call it as a function
- $obj->$subref(@args); # Use it as a method
-
-However if you use them for methods it is up to you to figure out
-how to make inheritance work.)
-
-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. For function and
-method names use barewords in preference to names prefixed with
-ampersands for the export lists.
-
-Other module design guidelines can be found in L<perlmod>.
-
-=head2 How to Import
-
-In other files which wish to use your module there are three basic ways for
-them to load your module and import its symbols:
-
-=over 4
-
-=item C<use ModuleName;>
-
-This imports all the symbols from ModuleName's @EXPORT into the namespace
-of the C<use> statement.
-
-=item C<use ModuleName ();>
-
-This causes perl to load your module but does not import any symbols.
-
-=item C<use ModuleName qw(...);>
-
-This imports only the symbols listed by the caller into their namespace.
-All listed symbols must be in your @EXPORT or @EXPORT_OK, else an error
-occurs. The advanced export features of Exporter are accessed like this,
-but with list entries that are syntactically distinct from symbol names.
-
-=back
-
-Unless you want to use its advanced features, this is probably all you
-need to know to use Exporter.
-
-=head1 Advanced features
-
-=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 Exporter's import method
-
-Exporter has a special method, 'export_to_level' which is used in situations
-where you can't directly call Exporter'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.
-
-=head2 Generating combined tags
-
-If several symbol categories exist in %EXPORT_TAGS, it's usually
-useful to create the utility ":all" to simplify "use" statements.
-
-The simplest way to do this is:
-
- %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);
-
- # add all the other ":class" tags to the ":all" class,
- # deleting duplicates
- {
- my %seen;
-
- push @{$EXPORT_TAGS{all}},
- grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS;
- }
-
-CGI.pm creates an ":all" tag which contains some (but not really
-all) of its categories. That could be done with one small
-change:
-
- # add some of the other ":class" tags to the ":all" class,
- # deleting duplicates
- {
- my %seen;
-
- push @{$EXPORT_TAGS{all}},
- grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}}
- foreach qw/html2 html3 netscape form cgi internal/;
- }
-
-Note that the tag names in %EXPORT_TAGS don't have the leading ':'.
-
-=head2 C<AUTOLOAD>ed Constants
-
-Many modules make use of C<AUTOLOAD>ing for constant subroutines to
-avoid having to compile and waste memory on rarely used values (see
-L<perlsub> for details on constant subroutines). Calls to such
-constant subroutines are not optimized away at compile time because
-they can't be checked at compile time for constancy.
-
-Even if a prototype is available at compile time, the body of the
-subroutine is not (it hasn't been C<AUTOLOAD>ed yet). perl needs to
-examine both the C<()> prototype and the body of a subroutine at
-compile time to detect that it can safely replace calls to that
-subroutine with the constant value.
-
-A workaround for this is to call the constants once in a C<BEGIN> block:
-
- package My ;
-
- use Socket ;
-
- foo( SO_LINGER ); ## SO_LINGER NOT optimized away; called at runtime
- BEGIN { SO_LINGER }
- foo( SO_LINGER ); ## SO_LINGER optimized away at compile time.
-
-This forces the C<AUTOLOAD> for C<SO_LINGER> to take place before
-SO_LINGER is encountered later in C<My> package.
-
-If you are writing a package that C<AUTOLOAD>s, consider forcing
-an C<AUTOLOAD> for any constants explicitly imported by other packages
-or which are usually used when your package is C<use>d.
-
-=cut
diff --git a/Master/perltl/lib/Exporter/Heavy.pm b/Master/perltl/lib/Exporter/Heavy.pm
deleted file mode 100644
index 3bdc4b4f204..00000000000
--- a/Master/perltl/lib/Exporter/Heavy.pm
+++ /dev/null
@@ -1,232 +0,0 @@
-package Exporter::Heavy;
-
-use strict;
-no strict 'refs';
-
-# On one line so MakeMaker will see it.
-require Exporter; our $VERSION = $Exporter::VERSION;
-$Carp::Internal{"Exporter::Heavy"} = 1;
-our $Verbose;
-
-=head1 NAME
-
-Exporter::Heavy - Exporter guts
-
-=head1 SYNOPSIS
-
-(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);
- my($exports, $export_cache) = (\@{"${pkg}::EXPORT"},
- \%{"${pkg}::EXPORT"});
-
- if (@imports) {
- if (!%$export_cache) {
- s/^&// foreach @$exports;
- @{$export_cache}{@$exports} = (1) x @$exports;
- my $ok = \@{"${pkg}::EXPORT_OK"};
- if (@$ok) {
- s/^&// foreach @$ok;
- @{$export_cache}{@$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 %$export_cache 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;
- }
-
- my @carp;
- foreach $sym (@imports) {
- if (!$export_cache->{$sym}) {
- if ($sym =~ m/^\d/) {
- $pkg->VERSION($sym); # inherit from UNIVERSAL
- # 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/^&// || !$export_cache->{$sym}) {
- # accumulate the non-exports
- push @carp,
- qq["$sym" is not exported by the $pkg module\n];
- $oops++;
- }
- }
- }
- if ($oops) {
- require Carp;
- Carp::croak("@{carp}Can't continue after import errors");
- }
- }
- else {
- @imports = @$exports;
- }
-
- my($fail, $fail_cache) = (\@{"${pkg}::EXPORT_FAIL"},
- \%{"${pkg}::EXPORT_FAIL"});
-
- if (@$fail) {
- if (!%$fail_cache) {
- # Build cache of symbols. Optimise the lookup by adding
- # barewords twice... both with and without a leading &.
- # (Technique could be applied to $export_cache at cost of memory)
- my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @$fail;
- warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Verbose;
- @{$fail_cache}{@expanded} = (1) x @expanded;
- }
- my @failed;
- foreach $sym (@imports) { push(@failed, $sym) if $fail_cache->{$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 = ();
- my $export_tags = \%{"${pkg}::EXPORT_TAGS"};
- push(@{"${pkg}::$var"},
- map { $export_tags->{$_} ? @{$export_tags->{$_}}
- : scalar(push(@nontag,$_),$_) }
- (@$syms) ? @$syms : keys %$export_tags);
- if (@nontag and $^W) {
- # This may change to a die one day
- require Carp;
- Carp::carp(join(", ", @nontag)." are not tags of $pkg");
- }
-}
-
-sub heavy_require_version {
- my($self, $wanted) = @_;
- my $pkg = ref $self || $self;
- return ${pkg}->VERSION($wanted);
-}
-
-sub heavy_export_tags {
- _push_tags((caller)[0], "EXPORT", \@_);
-}
-
-sub heavy_export_ok_tags {
- _push_tags((caller)[0], "EXPORT_OK", \@_);
-}
-
-1;
diff --git a/Master/perltl/lib/Fcntl.pm b/Master/perltl/lib/Fcntl.pm
deleted file mode 100644
index 6e4236713de..00000000000
--- a/Master/perltl/lib/Fcntl.pm
+++ /dev/null
@@ -1,216 +0,0 @@
-package Fcntl;
-
-=head1 NAME
-
-Fcntl - load the C Fcntl.h defines
-
-=head1 SYNOPSIS
-
- use Fcntl;
- use Fcntl qw(:DEFAULT :flock);
-
-=head1 DESCRIPTION
-
-This module is just a translation of the C F<fnctl.h> file.
-Unlike the old mechanism of requiring a translated F<fnctl.ph>
-file, this uses the B<h2xs> program (see the Perl source distribution)
-and your native C compiler. This means that it has a
-far more likely chance of getting the numbers right.
-
-=head1 NOTE
-
-Only C<#define> symbols get translated; you must still correctly
-pack up your own arguments to pass as args for locking functions, etc.
-
-=head1 EXPORTED SYMBOLS
-
-By default your system's F_* and O_* constants (eg, F_DUPFD and
-O_CREAT) and the FD_CLOEXEC constant are exported into your namespace.
-
-You can request that the flock() constants (LOCK_SH, LOCK_EX, LOCK_NB
-and LOCK_UN) be provided by using the tag C<:flock>. See L<Exporter>.
-
-You can request that the old constants (FAPPEND, FASYNC, FCREAT,
-FDEFER, FEXCL, FNDELAY, FNONBLOCK, FSYNC, FTRUNC) be provided for
-compatibility reasons by using the tag C<:Fcompat>. For new
-applications the newer versions of these constants are suggested
-(O_APPEND, O_ASYNC, O_CREAT, O_DEFER, O_EXCL, O_NDELAY, O_NONBLOCK,
-O_SYNC, O_TRUNC).
-
-For ease of use also the SEEK_* constants (for seek() and sysseek(),
-e.g. SEEK_END) and the S_I* constants (for chmod() and stat()) are
-available for import. They can be imported either separately or using
-the tags C<:seek> and C<:mode>.
-
-Please refer to your native fcntl(2), open(2), fseek(3), lseek(2)
-(equal to Perl's seek() and sysseek(), respectively), and chmod(2)
-documentation to see what constants are implemented in your system.
-
-See L<perlopentut> to learn about the uses of the O_* constants
-with sysopen().
-
-See L<perlfunc/seek> and L<perlfunc/sysseek> about the SEEK_* constants.
-
-See L<perlfunc/stat> about the S_I* constants.
-
-=cut
-
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $AUTOLOAD);
-
-require Exporter;
-use XSLoader ();
-@ISA = qw(Exporter);
-$VERSION = "1.04";
-# Items to export into callers namespace by default
-# (move infrequently used names to @EXPORT_OK below)
-@EXPORT =
- qw(
- FD_CLOEXEC
- F_ALLOCSP
- F_ALLOCSP64
- F_COMPAT
- F_DUP2FD
- F_DUPFD
- F_EXLCK
- F_FREESP
- F_FREESP64
- F_FSYNC
- F_FSYNC64
- F_GETFD
- F_GETFL
- F_GETLK
- F_GETLK64
- F_GETOWN
- F_NODNY
- F_POSIX
- F_RDACC
- F_RDDNY
- F_RDLCK
- F_RWACC
- F_RWDNY
- F_SETFD
- F_SETFL
- F_SETLK
- F_SETLK64
- F_SETLKW
- F_SETLKW64
- F_SETOWN
- F_SHARE
- F_SHLCK
- F_UNLCK
- F_UNSHARE
- F_WRACC
- F_WRDNY
- F_WRLCK
- O_ACCMODE
- O_ALIAS
- O_APPEND
- O_ASYNC
- O_BINARY
- O_CREAT
- O_DEFER
- O_DIRECT
- O_DIRECTORY
- O_DSYNC
- O_EXCL
- O_EXLOCK
- O_LARGEFILE
- O_NDELAY
- O_NOCTTY
- O_NOFOLLOW
- O_NOINHERIT
- O_NONBLOCK
- O_RANDOM
- O_RAW
- O_RDONLY
- O_RDWR
- O_RSRC
- O_RSYNC
- O_SEQUENTIAL
- O_SHLOCK
- O_SYNC
- O_TEMPORARY
- O_TEXT
- O_TRUNC
- O_WRONLY
- );
-
-# Other items we are prepared to export if requested
-@EXPORT_OK = qw(
- FAPPEND
- FASYNC
- FCREAT
- FDEFER
- FDSYNC
- FEXCL
- FLARGEFILE
- FNDELAY
- FNONBLOCK
- FRSYNC
- FSYNC
- FTRUNC
- LOCK_EX
- LOCK_NB
- LOCK_SH
- LOCK_UN
- S_ISUID S_ISGID S_ISVTX S_ISTXT
- _S_IFMT S_IFREG S_IFDIR S_IFLNK
- S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT
- S_IRUSR S_IWUSR S_IXUSR S_IRWXU
- S_IRGRP S_IWGRP S_IXGRP S_IRWXG
- S_IROTH S_IWOTH S_IXOTH S_IRWXO
- S_IREAD S_IWRITE S_IEXEC
- &S_ISREG &S_ISDIR &S_ISLNK &S_ISSOCK &S_ISBLK &S_ISCHR &S_ISFIFO
- &S_ISWHT &S_ISENFMT &S_IFMT &S_IMODE
- SEEK_SET
- SEEK_CUR
- SEEK_END
-);
-# Named groups of exports
-%EXPORT_TAGS = (
- 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)],
- 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE
- FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)],
- 'seek' => [qw(SEEK_SET SEEK_CUR SEEK_END)],
- 'mode' => [qw(S_ISUID S_ISGID S_ISVTX S_ISTXT
- _S_IFMT S_IFREG S_IFDIR S_IFLNK
- S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT
- S_IRUSR S_IWUSR S_IXUSR S_IRWXU
- S_IRGRP S_IWGRP S_IXGRP S_IRWXG
- S_IROTH S_IWOTH S_IXOTH S_IRWXO
- S_IREAD S_IWRITE S_IEXEC
- S_ISREG S_ISDIR S_ISLNK S_ISSOCK
- S_ISBLK S_ISCHR S_ISFIFO
- S_ISWHT S_ISENFMT
- S_IFMT S_IMODE
- )],
-);
-
-sub S_IFMT { @_ ? ( $_[0] & _S_IFMT() ) : _S_IFMT() }
-sub S_IMODE { $_[0] & 07777 }
-
-sub S_ISREG { ( $_[0] & _S_IFMT() ) == S_IFREG() }
-sub S_ISDIR { ( $_[0] & _S_IFMT() ) == S_IFDIR() }
-sub S_ISLNK { ( $_[0] & _S_IFMT() ) == S_IFLNK() }
-sub S_ISSOCK { ( $_[0] & _S_IFMT() ) == S_IFSOCK() }
-sub S_ISBLK { ( $_[0] & _S_IFMT() ) == S_IFBLK() }
-sub S_ISCHR { ( $_[0] & _S_IFMT() ) == S_IFCHR() }
-sub S_ISFIFO { ( $_[0] & _S_IFMT() ) == S_IFIFO() }
-sub S_ISWHT { ( $_[0] & _S_IFMT() ) == S_IFWHT() }
-sub S_ISENFMT { ( $_[0] & _S_IFMT() ) == S_IFENFMT() }
-
-sub AUTOLOAD {
- (my $constname = $AUTOLOAD) =~ s/.*:://;
- die "&Fcntl::constant not defined" if $constname eq 'constant';
- my ($error, $val) = constant($constname);
- if ($error) {
- my (undef,$file,$line) = caller;
- die "$error at $file line $line.\n";
- }
- *$AUTOLOAD = sub { $val };
- goto &$AUTOLOAD;
-}
-
-XSLoader::load 'Fcntl', $VERSION;
-
-1;
diff --git a/Master/perltl/lib/File/Basename.pm b/Master/perltl/lib/File/Basename.pm
deleted file mode 100644
index f2ef495cddf..00000000000
--- a/Master/perltl/lib/File/Basename.pm
+++ /dev/null
@@ -1,289 +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",qr{\.pm});
- fileparse_set_fstype("VMS");
- $basename = basename("lib/File/Basename.pm",qr{\.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 can be a qr-quoted pattern (or a string which 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',
- qr{\.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',
- qr{\..*});
-
-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.006;
-use warnings;
-our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase);
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(fileparse fileparse_set_fstype basename dirname);
-$VERSION = "2.71";
-
-
-# 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) = @_;
- unless (defined $fullname) {
- require Carp;
- Carp::croak "fileparse(): need a valid pathname";
- }
- 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 =~ /^os2/i) {
- ($dirpath,$basename) = ($fullname =~ m#^((?:.*[:\\/])?)(.*)#s);
- $dirpath = './' unless $dirpath; # Can't be 0
- $dirpath .= '/' unless $dirpath =~ m#[\\/]\z#;
- }
- elsif ($fstype =~ /^MacOS/si) {
- ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/s);
- $dirpath = ':' unless $dirpath;
- }
- 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 ||= ''; # should always be defined
- $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 =~ /MS(DOS|Win32)|os2/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/Master/perltl/lib/File/Compare.pm b/Master/perltl/lib/File/Compare.pm
deleted file mode 100644
index 0b73d7c7657..00000000000
--- a/Master/perltl/lib/File/Compare.pm
+++ /dev/null
@@ -1,178 +0,0 @@
-package File::Compare;
-
-use 5.006;
-use strict;
-use warnings;
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Too_Big);
-
-require Exporter;
-use Carp;
-
-$VERSION = '1.1003';
-@ISA = qw(Exporter);
-@EXPORT = qw(compare);
-@EXPORT_OK = qw(cmp compare_text);
-
-$Too_Big = 1024 * 1024 * 2;
-
-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 and its sibling functions 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/Master/perltl/lib/File/Copy.pm b/Master/perltl/lib/File/Copy.pm
deleted file mode 100644
index 08da5e5d31e..00000000000
--- a/Master/perltl/lib/File/Copy.pm
+++ /dev/null
@@ -1,443 +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.006;
-use strict;
-use warnings;
-use Carp;
-use File::Spec;
-use Config;
-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.05';
-
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(copy move);
-@EXPORT_OK = qw(cp mv);
-
-$Too_Big = 1024 * 1024 * 2;
-
-my $macfiles;
-if ($^O eq 'MacOS') {
- $macfiles = eval { require Mac::MoreFiles };
- warn 'Mac::MoreFiles could not be loaded; using non-native syscopy'
- if $^W;
-}
-
-sub _catname {
- my($from, $to) = @_;
- if (not defined &basename) {
- require File::Basename;
- import File::Basename 'basename';
- }
-
- if ($^O eq 'MacOS') {
- # a partial dir name that's valid only in the cwd (e.g. 'tmp')
- $to = ':' . $to if $to !~ /:/;
- }
-
- return File::Spec->catfile($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 eq $to) { # works for references, too
- croak("'$from' and '$to' are identical (not copied)");
- }
-
- if ($Config{d_symlink} && $Config{d_readlink} &&
- !($^O eq 'Win32' || $^O eq 'os2' || $^O eq 'vms')) {
- no warnings 'io'; # don't warn if -l on filehandle
- if ((-e $from && -l $from) || (-e $to && -l $to)) {
- my @fs = stat($from);
- my @ts = stat($to);
- if (@fs && @ts && $fs[0] == $ts[0] && $fs[1] == $ts[1]) {
- croak("'$from' and '$to' are identical (not copied)");
- }
- }
- }
-
- 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')
- && !($from_a_handle && $^O eq 'NetWare')
- )
- {
- return syscopy($from, $to);
- }
-
- my $closefrom = 0;
- my $closeto = 0;
- my ($size, $status, $r, $buf);
- local($\) = '';
-
- my $from_h;
- if ($from_a_handle) {
- $from_h = $from;
- } else {
- $from = _protect($from) if $from =~ /^\s/s;
- $from_h = \do { local *FH };
- open($from_h, "< $from\0") or goto fail_open1;
- binmode $from_h or die "($!,$^E)";
- $closefrom = 1;
- }
-
- my $to_h;
- if ($to_a_handle) {
- $to_h = $to;
- } else {
- $to = _protect($to) if $to =~ /^\s/s;
- $to_h = \do { local *FH };
- open($to_h,"> $to\0") or goto fail_open2;
- binmode $to_h or die "($!,$^E)";
- $closeto = 1;
- }
-
- if (@_) {
- $size = shift(@_) + 0;
- croak("Bad buffer size for copy: $size\n") unless ($size > 0);
- } else {
- $size = tied(*$from_h) ? 0 : -s $from_h || 0;
- $size = 1024 if ($size < 512);
- $size = $Too_Big if ($size > $Too_Big);
- }
-
- $! = 0;
- for (;;) {
- my ($r, $w, $t);
- defined($r = sysread($from_h, $buf, $size))
- or goto fail_inner;
- last unless $r;
- for ($w = 0; $w < $r; $w += $t) {
- $t = syswrite($to_h, $buf, $r - $w, $w)
- or goto fail_inner;
- }
- }
-
- close($to_h) || goto fail_open2 if $closeto;
- close($from_h) || 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_h;
- $! = $status unless $!;
- }
- fail_open2:
- if ($closefrom) {
- $status = $!;
- $! = 0;
- close $from_h;
- $! = $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 ($macfiles) {
- *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). Trying to copy a file on top
-of itself is a fatal error.
-
-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, which doesn't preserve OS-specific attributes. 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>.
-
-On Mac OS (Classic), C<syscopy> calls C<Mac::MoreFiles::FSpFileCopy>,
-if available.
-
-=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 NOTES
-
-=over 4
-
-=item *
-
-On Mac OS (Classic), the path separator is ':', not '/', and the
-current directory is denoted as ':', not '.'. You should be careful
-about specifying relative pathnames. While a full path always begins
-with a volume name, a relative pathname should always begin with a
-':'. If specifying a volume name only, a trailing ':' is required.
-
-E.g.
-
- copy("file1", "tmp"); # creates the file 'tmp' in the current directory
- copy("file1", ":tmp:"); # creates :tmp:file1
- copy("file1", ":tmp"); # same as above
- copy("file1", "tmp"); # same as above, if 'tmp' is a directory (but don't do
- # that, since it may cause confusion, see example #1)
- copy("file1", "tmp:file1"); # error, since 'tmp:' is not a volume
- copy("file1", ":tmp:file1"); # ok, partial path
- copy("file1", "DataHD:"); # creates DataHD:file1
-
- move("MacintoshHD:fileA", "DataHD:fileB"); # moves (don't copies) files from one
- # volume to another
-
-=back
-
-=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/Master/perltl/lib/File/Find.pm b/Master/perltl/lib/File/Find.pm
deleted file mode 100644
index 72fd195c9b0..00000000000
--- a/Master/perltl/lib/File/Find.pm
+++ /dev/null
@@ -1,1212 +0,0 @@
-package File::Find;
-use 5.006;
-use strict;
-use warnings;
-use warnings::register;
-our $VERSION = '1.04';
-require Exporter;
-require Cwd;
-
-=head1 NAME
-
-File::Find - Traverse a directory tree.
-
-=head1 SYNOPSIS
-
- use File::Find;
- find(\&wanted, @directories_to_seach);
- sub wanted { ... }
-
- use File::Find;
- finddepth(\&wanted, @directories_to_search);
- sub wanted { ... }
-
- use File::Find;
- find({ wanted => \&process, follow => 1 }, '.');
-
-=head1 DESCRIPTION
-
-These are functions for searching through directory trees doing work
-on each file found similar to the Unix I<find> command. File::Find
-exports two functions, C<find> and C<finddepth>. They work similarly
-but have subtle differences.
-
-=over 4
-
-=item B<find>
-
- find(\&wanted, @directories);
- find(\%options, @directories);
-
-find() does a breadth-first search over the given @directories in the
-order they are given. In essense, it works from the top down.
-
-For each file or directory found the &wanted subroutine is called (see
-below for details). Additionally, for each directory found it will go
-into that directory and continue the search.
-
-=item B<finddepth>
-
- finddepth(\&wanted, @directories);
- finddepth(\%options, @directories);
-
-finddepth() works just like find() except it does a depth-first search.
-It works from the bottom of the directory tree up.
-
-=back
-
-=head2 %options
-
-The first argument to find() is either a hash reference describing the
-operations to be performed for each file, or a code reference. The
-code reference is described in L<The wanted function> below.
-
-Here are the possible keys for the hash:
-
-=over 3
-
-=item C<wanted>
-
-The value should be a code reference. This code reference is
-described in L<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 =E<gt> 1 }> in the first argument of find().
-
-=item C<preprocess>
-
-The value should be a code reference. This code reference is used to
-preprocess the current directory. The name of currently processed
-directory is in $File::Find::dir. Your preprocessing function is
-called after readdir() but before the loop that calls the wanted()
-function. It is called with a list of strings (actually file/directory
-names) and is expected to return a list of strings. The code can be
-used to sort the file/directory names alphabetically, numerically,
-or to filter out directory entries based on their name alone. When
-I<follow> or I<follow_fast> are in effect, C<preprocess> is a no-op.
-
-=item C<postprocess>
-
-The value should be a code reference. It is invoked just before leaving
-the currently processed 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. When I<follow> or I<follow_fast> are in effect, C<postprocess> is a
-no-op.
-
-=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
-directories but to proceed normally otherwise.
-
-=item C<dangling_symlinks>
-
-If true and a code reference, will be called with the symbolic link
-name and the directory it lives in as arguments. Otherwise, if true
-and warnings are on, warning "symbolic_link_name is a dangling
-symbolic link\n" will be issued. If false, the dangling symbolic link
-will be silently ignored.
-
-=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 chdir'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. If this option is used while
-not in taint-mode, C<untaint> is a no-op.
-
-=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 parentheses are vital.
-
-=item C<untaint_skip>
-
-If set, a directory which fails the I<untaint_pattern> is skipped,
-including all its sub-directories. The default is to 'die' in such a case.
-
-=back
-
-=head2 The wanted function
-
-The wanted() function does whatever verifications you want on each
-file and directory. It takes no arguments but rather does its work
-through a collection of variables.
-
-=over 4
-
-=item C<$File::Find::dir> is the current directory name,
-
-=item C<$_> is the current filename within that directory
-
-=item C<$File::Find::name> is the complete pathname to the file.
-
-=back
-
-Don't modify these variables.
-
-For example, when examining the file /some/path/foo.ext you will have:
-
- $File::Find::dir = /some/path/
- $_ = foo.ext
- $File::Find::name = /some/path/foo.ext
-
-You are chdir()'d toC<$File::Find::dir> when the function is called,
-unless C<no_chdir> was specified. Note that when changing to
-directories is in effect the root directory (F</>) is a somewhat
-special case inasmuch as the concatenation of C<$File::Find::dir>,
-C<'/'> and C<$_> is not literally equal to C<$File::Find::name>. The
-table below summarizes all variants:
-
- $File::Find::name $File::Find::dir $_
- default / / .
- no_chdir=>0 /etc / etc
- /etc/x /etc x
-
- no_chdir=>1 / / /
- /etc / /etc
- /etc/x /etc /etc/x
-
-
-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);
- }
-
-Notice the C<_> in the above C<int(-M _)>: the C<_> is a magical
-filehandle that caches the information from the preceding
-stat(), lstat(), or filetest.
-
-Here's another interesting wanted function. It will find all symbolic
-links 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 WARNINGS
-
-If you run your program with the C<-w> switch, or if you use the
-C<warnings> pragma, File::Find will report warnings for several weird
-situations. You can disable these warnings by putting the statement
-
- no warnings 'File::Find';
-
-in the appropriate scope. See L<perllexwarn> for more info about lexical
-warnings.
-
-=head1 CAVEAT
-
-=over 2
-
-=item $dont_use_nlink
-
-You can set the variable C<$File::Find::dont_use_nlink> to 1, if you want to
-force File::Find to always stat directories. This was used for file systems
-that do not have an C<nlink> count matching the number of sub-directories.
-Examples are ISO-9660 (CD-ROM), AFS, HPFS (OS/2 file system), FAT (DOS file
-system) and a couple of others.
-
-You shouldn't need to set this variable, since File::Find should now detect
-such file systems on-the-fly and switch itself to using stat. This works even
-for parts of your file system, like a mounted CD-ROM.
-
-If you do set C<$File::Find::dont_use_nlink> to 1, you will notice slow-downs.
-
-=item symlinks
-
-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.
-
-=back
-
-=head1 NOTES
-
-=over 4
-
-=item *
-
-Mac OS (Classic) users should note a few differences:
-
-=over 4
-
-=item *
-
-The path separator is ':', not '/', and the current directory is denoted
-as ':', not '.'. You should be careful about specifying relative pathnames.
-While a full path always begins with a volume name, a relative pathname
-should always begin with a ':'. If specifying a volume name only, a
-trailing ':' is required.
-
-=item *
-
-C<$File::Find::dir> is guaranteed to end with a ':'. If C<$_>
-contains the name of a directory, that name may or may not end with a
-':'. Likewise, C<$File::Find::name>, which contains the complete
-pathname to that directory, and C<$File::Find::fullname>, which holds
-the absolute pathname of that directory with all symbolic links resolved,
-may or may not end with a ':'.
-
-=item *
-
-The default C<untaint_pattern> (see above) on Mac OS is set to
-C<qr|^(.+)$|>. Note that the parentheses are vital.
-
-=item *
-
-The invisible system file "Icon\015" is ignored. While this file may
-appear in every directory, there are some more invisible system files
-on every volume, which are all located at the volume root level (i.e.
-"MacintoshHD:"). These system files are B<not> excluded automatically.
-Your filter may use the following code to recognize invisible files or
-directories (requires Mac::Files):
-
- use Mac::Files;
-
- # invisible() -- returns 1 if file/directory is invisible,
- # 0 if it's visible or undef if an error occurred
-
- sub invisible($) {
- my $file = shift;
- my ($fileCat, $fileInfo);
- my $invisible_flag = 1 << 14;
-
- if ( $fileCat = FSpGetCatInfo($file) ) {
- if ($fileInfo = $fileCat->ioFlFndrInfo() ) {
- return (($fileInfo->fdFlags & $invisible_flag) && 1);
- }
- }
- return undef;
- }
-
-Generally, invisible files are system files, unless an odd application
-decides to use invisible files for its own purposes. To distinguish
-such files from system files, you have to look at the B<type> and B<creator>
-file attributes. The MacPerl built-in functions C<GetFileInfo(FILE)> and
-C<SetFileInfo(CREATOR, TYPE, FILES)> offer access to these attributes
-(see MacPerl.pm for details).
-
-Files that appear on the desktop actually reside in an (hidden) directory
-named "Desktop Folder" on the particular disk volume. Note that, although
-all desktop files appear to be on the same "virtual" desktop, each disk
-volume actually maintains its own "Desktop Folder" directory.
-
-=back
-
-=back
-
-=head1 HISTORY
-
-File::Find used to produce incorrect results if called recursively.
-During the development of perl 5.8 this bug was fixed.
-The first fixed version of File::Find was 1.01.
-
-=cut
-
-our @ISA = qw(Exporter);
-our @EXPORT = qw(find finddepth);
-
-
-use strict;
-my $Is_VMS;
-my $Is_MacOS;
-
-require File::Basename;
-require File::Spec;
-
-# Should ideally be my() not our() but local() currently
-# refuses to operate on lexicals
-
-our %SLnkSeen;
-our ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow,
- $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat,
- $pre_process, $post_process, $dangling_symlinks);
-
-sub contract_name {
- my ($cdir,$fn) = @_;
-
- return substr($cdir,0,rindex($cdir,'/')) if $fn eq $File::Find::current_dir;
-
- $cdir = substr($cdir,0,rindex($cdir,'/')+1);
-
- $fn =~ s|^\./||;
-
- my $abs_name= $cdir . $fn;
-
- if (substr($fn,0,3) eq '../') {
- 1 while $abs_name =~ s!/[^/]*/\.\./!/!;
- }
-
- return $abs_name;
-}
-
-# return the absolute name of a directory or file
-sub contract_name_Mac {
- my ($cdir,$fn) = @_;
- my $abs_name;
-
- if ($fn =~ /^(:+)(.*)$/) { # valid pathname starting with a ':'
-
- my $colon_count = length ($1);
- if ($colon_count == 1) {
- $abs_name = $cdir . $2;
- return $abs_name;
- }
- else {
- # need to move up the tree, but
- # only if it's not a volume name
- for (my $i=1; $i<$colon_count; $i++) {
- unless ($cdir =~ /^[^:]+:$/) { # volume name
- $cdir =~ s/[^:]+:$//;
- }
- else {
- return undef;
- }
- }
- $abs_name = $cdir . $2;
- return $abs_name;
- }
-
- }
- else {
-
- # $fn may be a valid path to a directory or file or (dangling)
- # symlink, without a leading ':'
- if ( (-e $fn) || (-l $fn) ) {
- if ($fn =~ /^[^:]+:/) { # a volume name like DataHD:*
- return $fn; # $fn is already an absolute path
- }
- else {
- $abs_name = $cdir . $fn;
- return $abs_name;
- }
- }
- else { # argh!, $fn is not a valid directory/file
- return undef;
- }
- }
-}
-
-sub PathCombine($$) {
- my ($Base,$Name) = @_;
- my $AbsName;
-
- if ($Is_MacOS) {
- # $Name is the resolved symlink (always a full path on MacOS),
- # i.e. there's no need to call contract_name_Mac()
- $AbsName = $Name;
-
- # (simple) check for recursion
- if ( ( $Base =~ /^$AbsName/) && (-d $AbsName) ) { # recursion
- return undef;
- }
- }
- else {
- 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 && defined $DEV && $SLnkSeen{$DEV, $INO}++) {
- if ( ($follow_skip < 1) || ((-d _) && ($follow_skip < 2)) ) {
- die "$AbsName encountered a second time";
- }
- else {
- return undef;
- }
- }
-
- return $AbsName;
-}
-
-our($dir, $name, $fullname, $prune);
-sub _find_dir_symlnk($$$);
-sub _find_dir($$$);
-
-# check whether or not a scalar variable is tainted
-# (code straight from the Camel, 3rd ed., page 561)
-sub is_tainted_pp {
- my $arg = shift;
- my $nada = substr($arg, 0, 0); # zero-length
- local $@;
- eval { eval "# $nada" };
- return length($@) != 0;
-}
-
-sub _find_opt {
- my $wanted = shift;
- die "invalid top directory" unless defined $_[0];
-
- # This function must local()ize everything because callbacks may
- # call find() or finddepth()
-
- local %SLnkSeen;
- local ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow,
- $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat,
- $pre_process, $post_process, $dangling_symlinks);
- local($dir, $name, $fullname, $prune);
-
- my $cwd = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::getcwd();
- my $cwd_untainted = $cwd;
- my $check_t_cwd = 1;
- $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};
- $dangling_symlinks = $wanted->{dangling_symlinks};
-
- # for compatibility reasons (find.pl, find2perl)
- local 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;
-
- my ($abs_dir, $Is_Dir);
-
- Proc_Top_Item:
- foreach my $TOP (@_) {
- my $top_item = $TOP;
-
- if ($Is_MacOS) {
- ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item;
- $top_item = ":$top_item"
- if ( (-d _) && ( $top_item !~ /:/ ) );
- }
- else {
- $top_item =~ s|/\z|| unless $top_item eq '/';
- ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item;
- }
-
- $Is_Dir= 0;
-
- if ($follow) {
-
- if ($Is_MacOS) {
- $cwd = "$cwd:" unless ($cwd =~ /:$/); # for safety
-
- if ($top_item eq $File::Find::current_dir) {
- $abs_dir = $cwd;
- }
- else {
- $abs_dir = contract_name_Mac($cwd, $top_item);
- unless (defined $abs_dir) {
- warnings::warnif "Can't determine absolute path for $top_item (No such file or directory)\n";
- next Proc_Top_Item;
- }
- }
-
- }
- else {
- if (substr($top_item,0,1) eq '/') {
- $abs_dir = $top_item;
- }
- elsif ($top_item eq $File::Find::current_dir) {
- $abs_dir = $cwd;
- }
- else { # care about any ../
- $abs_dir = contract_name("$cwd/",$top_item);
- }
- }
- $abs_dir= Follow_SymLink($abs_dir);
- unless (defined $abs_dir) {
- if ($dangling_symlinks) {
- if (ref $dangling_symlinks eq 'CODE') {
- $dangling_symlinks->($top_item, $cwd);
- } else {
- warnings::warnif "$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) {
- warnings::warnif "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)) {
- if ($Is_MacOS) {
- ($dir,$_) = (':', $top_item); # $File::Find::dir, $_
- }
- else {
- ($dir,$_) = ('./', $top_item);
- }
- }
-
- $abs_dir = $dir;
- if (( $untaint ) && (is_tainted($dir) )) {
- ( $abs_dir ) = $dir =~ m|$untaint_pat|;
- unless (defined $abs_dir) {
- if ($untaint_skip == 0) {
- die "directory $dir is still tainted";
- }
- else {
- next Proc_Top_Item;
- }
- }
- }
-
- unless ($no_chdir || chdir $abs_dir) {
- warnings::warnif "Couldn't chdir $abs_dir: $!\n";
- next Proc_Top_Item;
- }
-
- $name = $abs_dir . $_; # $File::Find::name
-
- { $wanted_callback->() }; # protect against wild "next"
-
- }
-
- unless ( $no_chdir ) {
- if ( ($check_t_cwd) && (($untaint) && (is_tainted($cwd) )) ) {
- ( $cwd_untainted ) = $cwd =~ m|$untaint_pat|;
- unless (defined $cwd_untainted) {
- die "insecure cwd in find(depth)";
- }
- $check_t_cwd = 0;
- }
- unless (chdir $cwd_untainted) {
- die "Can't cd to $cwd: $!\n";
- }
- }
- }
-}
-
-# 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;
- my $dir_rel = $File::Find::current_dir;
- my $tainted = 0;
- my $no_nlink;
-
- if ($Is_MacOS) {
- $dir_pref= ($p_dir =~ /:$/) ? $p_dir : "$p_dir:"; # preface
- }
- else {
- $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" );
- }
-
- local ($dir, $name, $prune, *DIR);
-
- unless ( $no_chdir || ($p_dir eq $File::Find::current_dir)) {
- my $udir = $p_dir;
- if (( $untaint ) && (is_tainted($p_dir) )) {
- ( $udir ) = $p_dir =~ m|$untaint_pat|;
- unless (defined $udir) {
- if ($untaint_skip == 0) {
- die "directory $p_dir is still tainted";
- }
- else {
- return;
- }
- }
- }
- unless (chdir $udir) {
- warnings::warnif "Can't cd to $udir: $!\n";
- return;
- }
- }
-
- # push the starting directory
- push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
-
- if ($Is_MacOS) {
- $p_dir = $dir_pref; # ensure trailing ':'
- }
-
- while (defined $SE) {
- unless ($bydepth) {
- $dir= $p_dir; # $File::Find::dir
- $name= $dir_name; # $File::Find::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 || ($dir_rel eq $File::Find::current_dir)) {
- my $udir= $dir_rel;
- if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_rel) )) ) {
- ( $udir ) = $dir_rel =~ m|$untaint_pat|;
- unless (defined $udir) {
- if ($untaint_skip == 0) {
- if ($Is_MacOS) {
- die "directory ($p_dir) $dir_rel is still tainted";
- }
- else {
- die "directory (" . ($p_dir ne '/' ? $p_dir : '') . "/) $dir_rel is still tainted";
- }
- } else { # $untaint_skip == 1
- next;
- }
- }
- }
- unless (chdir $udir) {
- if ($Is_MacOS) {
- warnings::warnif "Can't cd to ($p_dir) $udir: $!\n";
- }
- else {
- warnings::warnif "Can't cd to (" .
- ($p_dir ne '/' ? $p_dir : '') . "/) $udir: $!\n";
- }
- next;
- }
- $CdLvl++;
- }
-
- if ($Is_MacOS) {
- $dir_name = "$dir_name:" unless ($dir_name =~ /:$/);
- }
-
- $dir= $dir_name; # $File::Find::dir
-
- # Get the list of files in the current directory.
- unless (opendir DIR, ($no_chdir ? $dir_name : $File::Find::current_dir)) {
- warnings::warnif "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;
-
- # default: use whatever was specifid
- # (if $nlink >= 2, and $avoid_nlink == 0, this will switch back)
- $no_nlink = $avoid_nlink;
- # if dir has wrong nlink count, force switch to slower stat method
- $no_nlink = 1 if ($nlink < 2);
-
- if ($nlink == 2 && !$no_nlink) {
- # This dir has no subdirectories.
- for my $FN (@filenames) {
- next if $FN =~ $File::Find::skip_pattern;
-
- $name = $dir_pref . $FN; # $File::Find::name
- $_ = ($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 =~ $File::Find::skip_pattern;
- if ($subcount > 0 || $no_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; # $File::Find::name
- $_= ($no_chdir ? $name : $FN); # $_
- { $wanted_callback->() }; # protect against wild "next"
- }
- }
- else {
- $name = $dir_pref . $FN; # $File::Find::name
- $_= ($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;
- if ($Is_MacOS) {
- $tmp = (':' x ($CdLvl-$Level)) . ':';
- }
- else {
- $tmp = join('/',('..') x ($CdLvl-$Level));
- }
- die "Can't cd to $dir_name" . $tmp
- unless chdir ($tmp);
- $CdLvl = $Level;
- }
-
- if ($Is_MacOS) {
- # $pdir always has a trailing ':', except for the starting dir,
- # where $dir_rel eq ':'
- $dir_name = "$p_dir$dir_rel";
- $dir_pref = "$dir_name:";
- }
- else {
- $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
- $dir_pref = "$dir_name/";
- }
-
- if ( $nlink == -2 ) {
- $name = $dir = $p_dir; # $File::Find::name / dir
- $_ = $File::Find::current_dir;
- $post_process->(); # End-of-directory processing
- }
- elsif ( $nlink < 0 ) { # must be finddepth, report dirname now
- $name = $dir_name;
- if ($Is_MacOS) {
- if ($dir_rel eq ':') { # must be the top dir, where we started
- $name =~ s|:$||; # $File::Find::name
- $p_dir = "$p_dir:" unless ($p_dir =~ /:$/);
- }
- $dir = $p_dir; # $File::Find::dir
- $_ = ($no_chdir ? $name : $dir_rel); # $_
- }
- else {
- if ( substr($name,-2) eq '/.' ) {
- substr($name, length($name) == 2 ? -1 : -2) = '';
- }
- $dir = $p_dir;
- $_ = ($no_chdir ? $dir_name : $dir_rel );
- if ( substr($_,-2) eq '/.' ) {
- substr($_, length($_) == 2 ? -1 : -2) = '';
- }
- }
- { $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) = @_; # $dir_loc is the absolute directory
- my @Stack;
- my @filenames;
- my $new_loc;
- my $updir_loc = $dir_loc; # untainted parent directory
- my $SE = [];
- my $dir_name = $p_dir;
- my $dir_pref;
- my $loc_pref;
- my $dir_rel = $File::Find::current_dir;
- my $byd_flag; # flag for pending stack entry if $bydepth
- my $tainted = 0;
- my $ok = 1;
-
- if ($Is_MacOS) {
- $dir_pref = ($p_dir =~ /:$/) ? "$p_dir" : "$p_dir:";
- $loc_pref = ($dir_loc =~ /:$/) ? "$dir_loc" : "$dir_loc:";
- } else {
- $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" );
- $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" );
- }
-
- local ($dir, $name, $fullname, $prune, *DIR);
-
- unless ($no_chdir) {
- # untaint the topdir
- if (( $untaint ) && (is_tainted($dir_loc) )) {
- ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; # parent dir, now untainted
- # once untainted, $updir_loc is pushed on the stack (as parent directory);
- # hence, we don't need to untaint the parent directory every time we chdir
- # to it later
- unless (defined $updir_loc) {
- if ($untaint_skip == 0) {
- die "directory $dir_loc is still tainted";
- }
- else {
- return;
- }
- }
- }
- $ok = chdir($updir_loc) unless ($p_dir eq $File::Find::current_dir);
- unless ($ok) {
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- return;
- }
- }
-
- push @Stack,[$dir_loc,$updir_loc,$p_dir,$dir_rel,-1] if $bydepth;
-
- if ($Is_MacOS) {
- $p_dir = $dir_pref; # ensure trailing ':'
- }
-
- while (defined $SE) {
-
- unless ($bydepth) {
- # change (back) to parent directory (always untainted)
- unless ($no_chdir) {
- unless (chdir $updir_loc) {
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- next;
- }
- }
- $dir= $p_dir; # $File::Find::dir
- $name= $dir_name; # $File::Find::name
- $_= ($no_chdir ? $dir_name : $dir_rel ); # $_
- $fullname= $dir_loc; # $File::Find::fullname
- # 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 || ($dir_rel eq $File::Find::current_dir)) {
- $updir_loc = $dir_loc;
- if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_loc) )) ) {
- # untaint $dir_loc, what will be pushed on the stack as (untainted) parent dir
- ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|;
- unless (defined $updir_loc) {
- if ($untaint_skip == 0) {
- die "directory $dir_loc is still tainted";
- }
- else {
- next;
- }
- }
- }
- unless (chdir $updir_loc) {
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- next;
- }
- }
-
- if ($Is_MacOS) {
- $dir_name = "$dir_name:" unless ($dir_name =~ /:$/);
- }
-
- $dir = $dir_name; # $File::Find::dir
-
- # Get the list of files in the current directory.
- unless (opendir DIR, ($no_chdir ? $dir_loc : $File::Find::current_dir)) {
- warnings::warnif "Can't opendir($dir_loc): $!\n";
- next;
- }
- @filenames = readdir DIR;
- closedir(DIR);
-
- for my $FN (@filenames) {
- next if $FN =~ $File::Find::skip_pattern;
-
- # 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,$updir_loc,$dir_name,$FN,1];
- }
- else {
- $fullname = $new_loc; # $File::Find::fullname
- $name = $dir_pref . $FN; # $File::Find::name
- $_ = ($no_chdir ? $name : $FN); # $_
- { $wanted_callback->() }; # protect against wild "next"
- }
- }
-
- }
- continue {
- while (defined($SE = pop @Stack)) {
- ($dir_loc, $updir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE;
- if ($Is_MacOS) {
- # $p_dir always has a trailing ':', except for the starting dir,
- # where $dir_rel eq ':'
- $dir_name = "$p_dir$dir_rel";
- $dir_pref = "$dir_name:";
- $loc_pref = ($dir_loc =~ /:$/) ? $dir_loc : "$dir_loc:";
- }
- else {
- $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 || ($dir_rel eq $File::Find::current_dir)) {
- unless (chdir $updir_loc) { # $updir_loc (parent dir) is always untainted
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- next;
- }
- }
- $fullname = $dir_loc; # $File::Find::fullname
- $name = $dir_name; # $File::Find::name
- if ($Is_MacOS) {
- if ($dir_rel eq ':') { # must be the top dir, where we started
- $name =~ s|:$||; # $File::Find::name
- $p_dir = "$p_dir:" unless ($p_dir =~ /:$/);
- }
- $dir = $p_dir; # $File::Find::dir
- $_ = ($no_chdir ? $name : $dir_rel); # $_
- }
- else {
- if ( substr($name,-2) eq '/.' ) {
- substr($name, length($name) == 2 ? -1 : -2) = ''; # $File::Find::name
- }
- $dir = $p_dir; # $File::Find::dir
- $_ = ($no_chdir ? $dir_name : $dir_rel); # $_
- if ( substr($_,-2) eq '/.' ) {
- substr($_, length($_) == 2 ? -1 : -2) = '';
- }
- }
-
- lstat($_); # make sure file tests with '_' work
- { $wanted_callback->() }; # protect against wild "next"
- }
- else {
- push @Stack,[$dir_loc, $updir_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} = $File::Find::untaint_pattern
- 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), @_);
-}
-
-sub finddepth {
- my $wanted = wrap_wanted(shift);
- $wanted->{bydepth} = 1;
- _find_opt($wanted, @_);
-}
-
-# default
-$File::Find::skip_pattern = qr/^\.{1,2}\z/;
-$File::Find::untaint_pattern = qr|^([-+@\w./]+)$|;
-
-# 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;
-}
-elsif ($^O eq 'MacOS') {
- $Is_MacOS = 1;
- $File::Find::dont_use_nlink = 1;
- $File::Find::skip_pattern = qr/^Icon\015\z/;
- $File::Find::untaint_pattern = qr|^(.+)$|;
-}
-
-# this _should_ work properly on all platforms
-# where File::Find can be expected to work
-$File::Find::current_dir = File::Spec->curdir || '.';
-
-$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' || $^O eq 'qnx' ||
- $^O eq 'nto';
-
-# 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'});
-}
-
-# We need a function that checks if a scalar is tainted. Either use the
-# Scalar::Util module's tainted() function or our (slower) pure Perl
-# fallback is_tainted_pp()
-{
- local $@;
- eval { require Scalar::Util };
- *is_tainted = $@ ? \&is_tainted_pp : \&Scalar::Util::tainted;
-}
-
-1;
diff --git a/Master/perltl/lib/File/Glob.pm b/Master/perltl/lib/File/Glob.pm
deleted file mode 100644
index a704b567bb0..00000000000
--- a/Master/perltl/lib/File/Glob.pm
+++ /dev/null
@@ -1,465 +0,0 @@
-package File::Glob;
-
-use strict;
-our($VERSION, @ISA, @EXPORT_OK, @EXPORT_FAIL, %EXPORT_TAGS,
- $AUTOLOAD, $DEFAULT_FLAGS);
-
-use XSLoader ();
-
-@ISA = qw(Exporter);
-
-# NOTE: The glob() export is only here for compatibility with 5.6.0.
-# csh_glob() should not be used directly, unless you know what you're doing.
-
-@EXPORT_OK = qw(
- csh_glob
- bsd_glob
- glob
- GLOB_ABEND
- GLOB_ALPHASORT
- GLOB_ALTDIRFUNC
- GLOB_BRACE
- GLOB_CSH
- GLOB_ERR
- GLOB_ERROR
- GLOB_LIMIT
- GLOB_MARK
- GLOB_NOCASE
- GLOB_NOCHECK
- GLOB_NOMAGIC
- GLOB_NOSORT
- GLOB_NOSPACE
- GLOB_QUOTE
- GLOB_TILDE
-);
-
-%EXPORT_TAGS = (
- 'glob' => [ qw(
- GLOB_ABEND
- GLOB_ALPHASORT
- GLOB_ALTDIRFUNC
- GLOB_BRACE
- GLOB_CSH
- GLOB_ERR
- GLOB_ERROR
- GLOB_LIMIT
- GLOB_MARK
- GLOB_NOCASE
- GLOB_NOCHECK
- GLOB_NOMAGIC
- GLOB_NOSORT
- GLOB_NOSPACE
- GLOB_QUOTE
- GLOB_TILDE
- glob
- bsd_glob
- ) ],
-);
-
-$VERSION = '1.01';
-
-sub import {
- require Exporter;
- my $i = 1;
- while ($i < @_) {
- if ($_[$i] =~ /^:(case|nocase|globally)$/) {
- splice(@_, $i, 1);
- $DEFAULT_FLAGS &= ~GLOB_NOCASE() if $1 eq 'case';
- $DEFAULT_FLAGS |= GLOB_NOCASE() if $1 eq 'nocase';
- if ($1 eq 'globally') {
- local $^W;
- *CORE::GLOBAL::glob = \&File::Glob::csh_glob;
- }
- next;
- }
- ++$i;
- }
- goto &Exporter::import;
-}
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function. If a constant is not found then control is passed
- # to the AUTOLOAD in AutoLoader.
-
- my $constname;
- ($constname = $AUTOLOAD) =~ s/.*:://;
- my ($error, $val) = constant($constname);
- if ($error) {
- require Carp;
- Carp::croak($error);
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-XSLoader::load 'File::Glob', $VERSION;
-
-# Preloaded methods go here.
-
-sub GLOB_ERROR {
- return (constant('GLOB_ERROR'))[1];
-}
-
-sub GLOB_CSH () {
- GLOB_BRACE()
- | GLOB_NOMAGIC()
- | GLOB_QUOTE()
- | GLOB_TILDE()
- | GLOB_ALPHASORT()
-}
-
-$DEFAULT_FLAGS = GLOB_CSH();
-if ($^O =~ /^(?:MSWin32|VMS|os2|dos|riscos|MacOS)$/) {
- $DEFAULT_FLAGS |= GLOB_NOCASE();
-}
-
-# Autoload methods go after =cut, and are processed by the autosplit program.
-
-sub bsd_glob {
- my ($pat,$flags) = @_;
- $flags = $DEFAULT_FLAGS if @_ < 2;
- return doglob($pat,$flags);
-}
-
-# File::Glob::glob() is deprecated because its prototype is different from
-# CORE::glob() (use bsd_glob() instead)
-sub glob {
- goto &bsd_glob;
-}
-
-## borrowed heavily from gsar's File::DosGlob
-my %iter;
-my %entries;
-
-sub csh_glob {
- my $pat = shift;
- my $cxix = shift;
- my @pat;
-
- # glob without args defaults to $_
- $pat = $_ unless defined $pat;
-
- # extract patterns
- $pat =~ s/^\s+//; # Protect against empty elements in
- $pat =~ s/\s+$//; # things like < *.c> and <*.c >.
- # These alone shouldn't trigger ParseWords.
- if ($pat =~ /\s/) {
- # XXX this is needed for compatibility with the csh
- # implementation in Perl. Need to support a flag
- # to disable this behavior.
- require Text::ParseWords;
- @pat = Text::ParseWords::parse_line('\s+',0,$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) {
- if (@pat) {
- $entries{$cxix} = [ map { doglob($_, $DEFAULT_FLAGS) } @pat ];
- }
- else {
- $entries{$cxix} = [ doglob($pat, $DEFAULT_FLAGS) ];
- }
- }
-
- # 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;
- }
- }
-}
-
-1;
-__END__
-
-=head1 NAME
-
-File::Glob - Perl extension for BSD glob routine
-
-=head1 SYNOPSIS
-
- use File::Glob ':glob';
- @list = bsd_glob('*.[ch]');
- $homedir = bsd_glob('~gnat', GLOB_TILDE | GLOB_ERR);
- if (GLOB_ERROR) {
- # an error occurred reading $homedir
- }
-
- ## override the core glob (CORE::glob() does this automatically
- ## by default anyway, since v5.6.0)
- use File::Glob ':globally';
- my @sources = <*.{c,h,y}>
-
- ## override the core glob, forcing case sensitivity
- use File::Glob qw(:globally :case);
- my @sources = <*.{c,h,y}>
-
- ## override the core glob forcing case insensitivity
- use File::Glob qw(:globally :nocase);
- my @sources = <*.{c,h,y}>
-
-=head1 DESCRIPTION
-
-File::Glob::bsd_glob() implements the FreeBSD glob(3) routine, which is
-a superset of the POSIX glob() (described in IEEE Std 1003.2 "POSIX.2").
-bsd_glob() takes a mandatory C<pattern> argument, and an optional
-C<flags> argument, and returns a list of filenames matching the
-pattern, with interpretation of the pattern modified by the C<flags>
-variable.
-
-Since v5.6.0, Perl's CORE::glob() is implemented in terms of bsd_glob().
-Note that they don't share the same prototype--CORE::glob() only accepts
-a single argument. Due to historical reasons, CORE::glob() will also
-split its argument on whitespace, treating it as multiple patterns,
-whereas bsd_glob() considers them as one pattern.
-
-The POSIX defined flags for bsd_glob() are:
-
-=over 4
-
-=item C<GLOB_ERR>
-
-Force bsd_glob() to return an error when it encounters a directory it
-cannot open or read. Ordinarily bsd_glob() continues to find matches.
-
-=item C<GLOB_LIMIT>
-
-Make bsd_glob() return an error (GLOB_NOSPACE) when the pattern expands
-to a size bigger than the system constant C<ARG_MAX> (usually found in
-limits.h). If your system does not define this constant, bsd_glob() uses
-C<sysconf(_SC_ARG_MAX)> or C<_POSIX_ARG_MAX> where available (in that
-order). You can inspect these values using the standard C<POSIX>
-extension.
-
-=item C<GLOB_MARK>
-
-Each pathname that is a directory that matches the pattern has a slash
-appended.
-
-=item C<GLOB_NOCASE>
-
-By default, file names are assumed to be case sensitive; this flag
-makes bsd_glob() treat case differences as not significant.
-
-=item C<GLOB_NOCHECK>
-
-If the pattern does not match any pathname, then bsd_glob() returns a list
-consisting of only the pattern. If C<GLOB_QUOTE> is set, its effect
-is present in the pattern returned.
-
-=item C<GLOB_NOSORT>
-
-By default, the pathnames are sorted in ascending ASCII order; this
-flag prevents that sorting (speeding up bsd_glob()).
-
-=back
-
-The FreeBSD extensions to the POSIX standard are the following flags:
-
-=over 4
-
-=item C<GLOB_BRACE>
-
-Pre-process the string to expand C<{pat,pat,...}> strings like csh(1).
-The pattern '{}' is left unexpanded for historical reasons (and csh(1)
-does the same thing to ease typing of find(1) patterns).
-
-=item C<GLOB_NOMAGIC>
-
-Same as C<GLOB_NOCHECK> but it only returns the pattern if it does not
-contain any of the special characters "*", "?" or "[". C<NOMAGIC> is
-provided to simplify implementing the historic csh(1) globbing
-behaviour and should probably not be used anywhere else.
-
-=item C<GLOB_QUOTE>
-
-Use the backslash ('\') character for quoting: every occurrence of a
-backslash followed by a character in the pattern is replaced by that
-character, avoiding any special interpretation of the character.
-(But see below for exceptions on DOSISH systems).
-
-=item C<GLOB_TILDE>
-
-Expand patterns that start with '~' to user name home directories.
-
-=item C<GLOB_CSH>
-
-For convenience, C<GLOB_CSH> is a synonym for
-C<GLOB_BRACE | GLOB_NOMAGIC | GLOB_QUOTE | GLOB_TILDE | GLOB_ALPHASORT>.
-
-=back
-
-The POSIX provided C<GLOB_APPEND>, C<GLOB_DOOFFS>, and the FreeBSD
-extensions C<GLOB_ALTDIRFUNC>, and C<GLOB_MAGCHAR> flags have not been
-implemented in the Perl version because they involve more complex
-interaction with the underlying C structures.
-
-The following flag has been added in the Perl implementation for
-csh compatibility:
-
-=over 4
-
-=item C<GLOB_ALPHASORT>
-
-If C<GLOB_NOSORT> is not in effect, sort filenames is alphabetical
-order (case does not matter) rather than in ASCII order.
-
-=back
-
-=head1 DIAGNOSTICS
-
-bsd_glob() returns a list of matching paths, possibly zero length. If an
-error occurred, &File::Glob::GLOB_ERROR will be non-zero and C<$!> will be
-set. &File::Glob::GLOB_ERROR is guaranteed to be zero if no error occurred,
-or one of the following values otherwise:
-
-=over 4
-
-=item C<GLOB_NOSPACE>
-
-An attempt to allocate memory failed.
-
-=item C<GLOB_ABEND>
-
-The glob was stopped because an error was encountered.
-
-=back
-
-In the case where bsd_glob() has found some matching paths, but is
-interrupted by an error, it will return a list of filenames B<and>
-set &File::Glob::ERROR.
-
-Note that bsd_glob() deviates from POSIX and FreeBSD glob(3) behaviour
-by not considering C<ENOENT> and C<ENOTDIR> as errors - bsd_glob() will
-continue processing despite those errors, unless the C<GLOB_ERR> flag is
-set.
-
-Be aware that all filenames returned from File::Glob are tainted.
-
-=head1 NOTES
-
-=over 4
-
-=item *
-
-If you want to use multiple patterns, e.g. C<bsd_glob "a* b*">, you should
-probably throw them in a set as in C<bsd_glob "{a*,b*}">. This is because
-the argument to bsd_glob() isn't subjected to parsing by the C shell.
-Remember that you can use a backslash to escape things.
-
-=item *
-
-On DOSISH systems, backslash is a valid directory separator character.
-In this case, use of backslash as a quoting character (via GLOB_QUOTE)
-interferes with the use of backslash as a directory separator. The
-best (simplest, most portable) solution is to use forward slashes for
-directory separators, and backslashes for quoting. However, this does
-not match "normal practice" on these systems. As a concession to user
-expectation, therefore, backslashes (under GLOB_QUOTE) only quote the
-glob metacharacters '[', ']', '{', '}', '-', '~', and backslash itself.
-All other backslashes are passed through unchanged.
-
-=item *
-
-Win32 users should use the real slash. If you really want to use
-backslashes, consider using Sarathy's File::DosGlob, which comes with
-the standard Perl distribution.
-
-=item *
-
-Mac OS (Classic) users should note a few differences. Since
-Mac OS is not Unix, when the glob code encounters a tilde glob (e.g.
-~user) and the C<GLOB_TILDE> flag is used, it simply returns that
-pattern without doing any expansion.
-
-Glob on Mac OS is case-insensitive by default (if you don't use any
-flags). If you specify any flags at all and still want glob
-to be case-insensitive, you must include C<GLOB_NOCASE> in the flags.
-
-The path separator is ':' (aka colon), not '/' (aka slash). Mac OS users
-should be careful about specifying relative pathnames. While a full path
-always begins with a volume name, a relative pathname should always
-begin with a ':'. If specifying a volume name only, a trailing ':' is
-required.
-
-The specification of pathnames in glob patterns adheres to the usual Mac
-OS conventions: The path separator is a colon ':', not a slash '/'. A
-full path always begins with a volume name. A relative pathname on Mac
-OS must always begin with a ':', except when specifying a file or
-directory name in the current working directory, where the leading colon
-is optional. If specifying a volume name only, a trailing ':' is
-required. Due to these rules, a glob like E<lt>*:E<gt> will find all
-mounted volumes, while a glob like E<lt>*E<gt> or E<lt>:*E<gt> will find
-all files and directories in the current directory.
-
-Note that updirs in the glob pattern are resolved before the matching begins,
-i.e. a pattern like "*HD:t?p::a*" will be matched as "*HD:a*". Note also,
-that a single trailing ':' in the pattern is ignored (unless it's a volume
-name pattern like "*HD:"), i.e. a glob like E<lt>:*:E<gt> will find both
-directories I<and> files (and not, as one might expect, only directories).
-You can, however, use the C<GLOB_MARK> flag to distinguish (without a file
-test) directory names from file names.
-
-If the C<GLOB_MARK> flag is set, all directory paths will have a ':' appended.
-Since a directory like 'lib:' is I<not> a valid I<relative> path on Mac OS,
-both a leading and a trailing colon will be added, when the directory name in
-question doesn't contain any colons (e.g. 'lib' becomes ':lib:').
-
-=back
-
-=head1 AUTHOR
-
-The Perl interface was written by Nathan Torkington E<lt>gnat@frii.comE<gt>,
-and is released under the artistic license. Further modifications were
-made by Greg Bacon E<lt>gbacon@cs.uah.eduE<gt>, Gurusamy Sarathy
-E<lt>gsar@activestate.comE<gt>, and Thomas Wegner
-E<lt>wegner_thomas@yahoo.comE<gt>. The C glob code has the
-following copyright:
-
- Copyright (c) 1989, 1993 The Regents of the University of California.
- All rights reserved.
-
- This code is derived from software contributed to Berkeley by
- Guido van Rossum.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.
-
-=cut
diff --git a/Master/perltl/lib/File/Path.pm b/Master/perltl/lib/File/Path.pm
deleted file mode 100644
index 46af24fdb20..00000000000
--- a/Master/perltl/lib/File/Path.pm
+++ /dev/null
@@ -1,267 +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.
-
-If a system error prevents a directory from being created, then the
-C<mkpath> function throws a fatal error with C<Carp::croak>. This error
-can be trapped with an C<eval> block:
-
- eval { mkpath($dir) };
- if ($@) {
- print "Couldn't create $dir: $@";
- }
-
-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.006;
-use Carp;
-use File::Basename ();
-use Exporter ();
-use strict;
-use warnings;
-
-our $VERSION = "1.05";
-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) {
- no strict 'refs';
- if (!defined ${"\cTAINT"} or ${"\cTAINT"}) {
- # Blindly untaint dir names
- @files = map { /^(.*)$/s ; $1 } readdir $d;
- } else {
- @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/Master/perltl/lib/File/Spec.pm b/Master/perltl/lib/File/Spec.pm
deleted file mode 100644
index 529e34fe84a..00000000000
--- a/Master/perltl/lib/File/Spec.pm
+++ /dev/null
@@ -1,292 +0,0 @@
-package File::Spec;
-
-use strict;
-our(@ISA, $VERSION);
-
-$VERSION = 0.83 ;
-
-my %module = (MacOS => 'Mac',
- MSWin32 => 'Win32',
- os2 => 'OS2',
- VMS => 'VMS',
- epoc => 'Epoc',
- NetWare => 'Win32', # Yes, File::Spec::Win32 works on NetWare.
- dos => 'OS2', # Yes, File::Spec::OS2 works on DJGPP.
- cygwin => 'Cygwin');
-
-
-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 be 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.
-
-=head1 METHODS
-
-=over 2
-
-=item canonpath
-
-No physical check on the filesystem, but a logical cleanup of a
-path.
-
- $cpath = File::Spec->canonpath( $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 :-)
-
- $path = File::Spec->catdir( @directories );
-
-=item catfile
-
-Concatenate one or more directory names and a filename to form a
-complete path ending with a filename
-
- $path = File::Spec->catfile( @directories, $filename );
-
-=item curdir
-
-Returns a string representation of the current directory.
-
- $curdir = File::Spec->curdir();
-
-=item devnull
-
-Returns a string representation of the null device.
-
- $devnull = File::Spec->devnull();
-
-=item rootdir
-
-Returns a string representation of the root directory.
-
- $rootdir = File::Spec->rootdir();
-
-=item tmpdir
-
-Returns a string representation of the first writable directory from a
-list of possible temporary directories. Returns "" if no writable
-temporary directories are found. The list of directories checked
-depends on the platform; e.g. File::Spec::Unix checks $ENV{TMPDIR} and
-/tmp.
-
- $tmpdir = File::Spec->tmpdir();
-
-=item updir
-
-Returns a string representation of the parent directory.
-
- $updir = File::Spec->updir();
-
-=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.)
-
- @paths = File::Spec->no_upwards( @paths );
-
-=item case_tolerant
-
-Returns a true or false value indicating, respectively, that alphabetic
-is not or is significant when comparing file specifications.
-
- $is_case_tolerant = File::Spec->case_tolerant();
-
-=item file_name_is_absolute
-
-Takes as argument a path and returns true if it is an absolute path.
-
- $is_absolute = File::Spec->file_name_is_absolute( $path );
-
-This does not consult the local filesystem on Unix, Win32, OS/2, or
-Mac OS (Classic). It does consult the working environment for VMS
-(see L<File::Spec::VMS/file_name_is_absolute>).
-
-=item path
-
-Takes no argument, returns the environment variable PATH as an array.
-
- @PATH = File::Spec->path();
-
-=item join
-
-join is the same as catfile.
-
-=item splitpath
-
-Splits a path in to volume, directory, and filename portions. On systems
-with no concept of volume, returns undef for volume.
-
- ($volume,$directories,$file) = File::Spec->splitpath( $path );
- ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
-
-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.
-
-=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.
-
-=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.
-
- $full_path = File::Spec->catpath( $volume, $directory, $file );
-
-=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()|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()|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()|Cwd>.
-
-No checks against the filesystem are made. On VMS, there is
-interaction with the working environment, as logicals and
-macros are expanded.
-
-Based on code written by Shigio Yamaguchi.
-
-=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()|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()|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 VMS, there is
-interaction with the working environment, as logicals and
-macros are expanded.
-
-Based on code written by Shigio Yamaguchi.
-
-=back
-
-For further information, please see L<File::Spec::Unix>,
-L<File::Spec::Mac>, L<File::Spec::OS2>, L<File::Spec::Win32>, or
-L<File::Spec::VMS>.
-
-=head1 SEE ALSO
-
-L<File::Spec::Unix>, L<File::Spec::Mac>, L<File::Spec::OS2>,
-L<File::Spec::Win32>, L<File::Spec::VMS>, L<File::Spec::Functions>,
-L<ExtUtils::MakeMaker>
-
-=head1 AUTHORS
-
-Kenneth Albanowski <kjahds@kjahds.com>, Andy Dougherty
-<doughera@lafcol.lafayette.edu>, Andreas KE<ouml>nig
-<A.Koenig@franz.ww.TU-Berlin.DE>, Tim Bunce <Tim.Bunce@ig.co.uk.
-VMS support by Charles Bailey <bailey@newman.upenn.edu>.
-OS/2 support by Ilya Zakharevich <ilya@math.ohio-state.edu>.
-Mac support by Paul Schinder <schinder@pobox.com>, and Thomas Wegner
-<wegner_thomas@yahoo.com>. abs2rel() and rel2abs() written by Shigio
-Yamaguchi <shigio@tamacom.com>, modified by Barrie Slaymaker
-<barries@slaysys.com>. splitpath(), splitdir(), catpath() and
-catdir() by Barrie Slaymaker.
diff --git a/Master/perltl/lib/File/Spec/Functions.pm b/Master/perltl/lib/File/Spec/Functions.pm
deleted file mode 100644
index 38c898c5d8f..00000000000
--- a/Master/perltl/lib/File/Spec/Functions.pm
+++ /dev/null
@@ -1,109 +0,0 @@
-package File::Spec::Functions;
-
-use File::Spec;
-use strict;
-
-use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-
-$VERSION = '1.3';
-
-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
- case_tolerant
-);
-
-%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
- case_tolerant
-
-All the functions may be imported using the C<:ALL> tag.
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-File::Spec, File::Spec::Unix, File::Spec::Mac, File::Spec::OS2,
-File::Spec::Win32, File::Spec::VMS, ExtUtils::MakeMaker
-
-=cut
-
diff --git a/Master/perltl/lib/File/Spec/Unix.pm b/Master/perltl/lib/File/Spec/Unix.pm
deleted file mode 100644
index 87ee5051022..00000000000
--- a/Master/perltl/lib/File/Spec/Unix.pm
+++ /dev/null
@@ -1,482 +0,0 @@
-package File::Spec::Unix;
-
-use strict;
-our($VERSION);
-
-$VERSION = '1.4';
-
-use Cwd;
-
-=head1 NAME
-
-File::Spec::Unix - File::Spec for Unix, base for other File::Spec modules
-
-=head1 SYNOPSIS
-
- require File::Spec::Unix; # Done automatically by File::Spec
-
-=head1 DESCRIPTION
-
-Methods for manipulating file specifications. Other File::Spec
-modules, such as File::Spec::Mac, inherit from File::Spec::Unix and
-override specific methods.
-
-=head1 METHODS
-
-=over 2
-
-=item canonpath()
-
-No physical check on the filesystem, but a logical cleanup of a
-path. On UNIX eliminates successive slashes and successive "/.".
-
- $cpath = File::Spec->canonpath( $path ) ;
-
-=cut
-
-sub canonpath {
- my ($self,$path) = @_;
-
- # Handle POSIX-style node names beginning with double slash (qnx, nto)
- # Handle network path names beginning with double slash (cygwin)
- # (POSIX says: "a pathname that begins with two successive slashes
- # may be interpreted in an implementation-defined manner, although
- # more than two leading slashes shall be treated as a single slash.")
- my $node = '';
- if ( $^O =~ m/^(?:qnx|nto|cygwin)$/ && $path =~ s:^(//[^/]+)(/|\z):/:s ) {
- $node = $1;
- }
- # This used to be
- # $path =~ s|/+|/|g unless($^O eq 'cygwin');
- # but that made tests 29, 30, 35, 46, and 213 (as of #13272) to fail
- # (Mainly because trailing "" directories didn't get stripped).
- # Why would cygwin avoid collapsing multiple slashes into one? --jhi
- $path =~ s|/+|/|g; # xx////xx -> xx/xx
- $path =~ s@(/\.)+(/|\Z(?!\n))@/@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 "$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 = @_;
- 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
-
-Since perl 5.8.0, if running under taint mode, and if $ENV{TMPDIR}
-is tainted, it is not used.
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- my @dirlist = ($ENV{TMPDIR}, "/tmp");
- {
- no strict 'refs';
- if (${"\cTAINT"}) { # Check for taint mode on perl >= 5.8.0
- require Scalar::Util;
- shift @dirlist if Scalar::Util::tainted($ENV{TMPDIR});
- }
- }
- foreach (@dirlist) {
- 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, OS/2 or Mac
-OS (Classic). 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.
-
-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 needed (though if the directory portion doesn't start with
-'/' it is not added). 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()|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()|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()|Cwd>.
-
-No checks against the filesystem are made. 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()|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()|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 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/Master/perltl/lib/File/Spec/Win32.pm b/Master/perltl/lib/File/Spec/Win32.pm
deleted file mode 100644
index 186052bb4d8..00000000000
--- a/Master/perltl/lib/File/Spec/Win32.pm
+++ /dev/null
@@ -1,370 +0,0 @@
-package File::Spec::Win32;
-
-use strict;
-use Cwd;
-use vars qw(@ISA $VERSION);
-require File::Spec::Unix;
-
-$VERSION = '1.3';
-
-@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 4
-
-=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}
- SYS:/temp
- C:/temp
- /tmp
- /
-
-The SYS:/temp is preferred in Novell NetWare.
-
-Since Perl 5.8.0, if running under taint mode, and if the environment
-variables are tainted, they are not used.
-
-=cut
-
-my $tmpdir;
-sub tmpdir {
- return $tmpdir if defined $tmpdir;
- my $self = shift;
- my @dirlist = (@ENV{qw(TMPDIR TEMP TMP)}, qw(C:/temp /tmp /));
- {
- no strict 'refs';
- if (${"\cTAINT"}) { # Check for taint mode on perl >= 5.8.0
- require Scalar::Util;
- @dirlist = grep { ! Scalar::Util::tainted $_ } @dirlist;
- }
- }
- foreach (@dirlist) {
- 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()|File::Spec/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 ( !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 ( undef, $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" ;
- }
-
- return $self->canonpath(
- $self->catpath( "", $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
-
-=head2 Note For File::Spec::Win32 Maintainers
-
-Novell NetWare inherits its File::Spec behaviour from File::Spec::Win32.
-
-=head1 SEE ALSO
-
-L<File::Spec>
-
-=cut
-
-1;
diff --git a/Master/perltl/lib/File/Temp.pm b/Master/perltl/lib/File/Temp.pm
deleted file mode 100644
index 6f351dfa6ce..00000000000
--- a/Master/perltl/lib/File/Temp.pm
+++ /dev/null
@@ -1,1876 +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, Windows and
-Mac OS (Classic). 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.13';
-
-# 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;
-
-unless ($^O eq 'MacOS') {
- 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;
-unless ($^O eq 'MacOS') {
- 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 (i.e. the directory template) 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) if defined $umask;
-
- # Opened successfully - return file handle and name
- return ($fh, $path);
-
- } else {
- # Reset umask
- umask($umask) if defined $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) if defined $umask;
-
- return undef, $path;
- } else {
-
- # Reset umask
- umask($umask) if defined $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 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' || $^O eq 'MacOS') {
- 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' || $^O eq 'MacOS') {
- 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, create 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);
- }
- if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) {
- # dir name has a trailing ':'
- ++$suffixlen;
- }
-
- 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);
- }
- if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) {
- # dir name has a trailing ':'
- ++$suffixlen;
- }
- 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/Master/perltl/lib/FindBin.pm b/Master/perltl/lib/FindBin.pm
deleted file mode 100644
index 8be9cb6b5af..00000000000
--- a/Master/perltl/lib/FindBin.pm
+++ /dev/null
@@ -1,183 +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 ISSUES
-
-If there are two modules using C<FindBin> from different directories
-under the same interpreter, this won't work. Since C<FindBin> uses
-C<BEGIN> block, it'll be executed only once, and only the first caller
-will get it right. This is a problem under mod_perl and other persistent
-Perl environments, where you shouldn't use this module. Which also means
-that you should avoid using C<FindBin> in modules that you plan to put
-on CPAN. The only way to make sure that C<FindBin> will work is to force
-the C<BEGIN> block to be executed again:
-
- delete $INC{'FindBin.pm'};
- require FindBin;
-
-=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.43";
-
-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 $dosish = ($^O eq 'MSWin32' or $^O eq 'os2');
- unless(($script =~ m#/# || ($dosish && $script =~ m#\\#))
- && -f $script)
- {
- my $dir;
- foreach $dir (File::Spec->path)
- {
- my $scr = File::Spec->catfile($dir, $script);
- if(-r $scr && (!$dosish || -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/Master/perltl/lib/Getopt/Long.pm b/Master/perltl/lib/Getopt/Long.pm
deleted file mode 100644
index 7e1663d557a..00000000000
--- a/Master/perltl/lib/Getopt/Long.pm
+++ /dev/null
@@ -1,2048 +0,0 @@
-# GetOpt::Long.pm -- Universal options parsing
-
-package Getopt::Long;
-
-# RCS Status : $Id: GetoptLong.pm,v 2.58 2002-06-20 09:32:09+02 jv Exp $
-# Author : Johan Vromans
-# Created On : Tue Sep 11 15:00:12 1990
-# Last Modified By: Johan Vromans
-# Last Modified On: Thu Jun 20 07:48:05 2002
-# Update Count : 1083
-# Status : Released
-
-################ Copyright ################
-
-# This program is Copyright 1990,2002 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 = 2.32;
-# For testing versions only.
-use vars qw($VERSION_STRING);
-$VERSION_STRING = "2.32";
-
-use Exporter;
-
-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 ParseOptionSpec ($$);
-sub OptCtl ($);
-sub FindOption ($$$$);
-
-################ 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;
-
-# 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 {
- 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} ) {
- 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
- die(__PACKAGE__.": unhandled attributes: ".
- join(" ", sort(keys(%atts)))."\n");
- }
-
- $self;
-}
-
-sub configure {
- my ($self) = shift;
-
- # Restore settings, merge new settings in.
- my $save = Getopt::Long::Configure ($self->{settings}, @_);
-
- # Restore orig config and save the new config.
- $self->{settings} = Getopt::Long::Configure ($save);
-}
-
-sub getoptions {
- my ($self) = shift;
-
- # Restore config settings.
- my $save = Getopt::Long::Configure ($self->{settings});
-
- # Call main routine.
- my $ret = 0;
- $Getopt::Long::caller = $self->{caller_pkg};
-
- eval {
- # Locally set exception handler to default, otherwise it will
- # be called implicitly here, and again explicitly when we try
- # to deliver the messages.
- local ($SIG{__DIE__}) = '__DEFAULT__';
- $ret = Getopt::Long::GetOptions (@_);
- };
-
- # Restore saved settings.
- Getopt::Long::Configure ($save);
-
- # Handle errors and return value.
- die ($@) if $@;
- return $ret;
-}
-
-package Getopt::Long;
-
-# Indices in option control info.
-# Note that ParseOptions uses the fields directly. Search for 'hard-wired'.
-use constant CTL_TYPE => 0;
-#use constant CTL_TYPE_FLAG => '';
-#use constant CTL_TYPE_NEG => '!';
-#use constant CTL_TYPE_INCR => '+';
-#use constant CTL_TYPE_INT => 'i';
-#use constant CTL_TYPE_INTINC => 'I';
-#use constant CTL_TYPE_XINT => 'o';
-#use constant CTL_TYPE_FLOAT => 'f';
-#use constant CTL_TYPE_STRING => 's';
-
-use constant CTL_CNAME => 1;
-
-use constant CTL_MAND => 2;
-
-use constant CTL_DEST => 3;
- use constant CTL_DEST_SCALAR => 0;
- use constant CTL_DEST_ARRAY => 1;
- use constant CTL_DEST_HASH => 2;
- use constant CTL_DEST_CODE => 3;
-
-use constant CTL_DEFAULT => 4;
-
-# FFU.
-#use constant CTL_RANGE => ;
-#use constant CTL_REPEAT => ;
-
-sub GetOptions {
-
- my @optionlist = @_; # local copy of the option descriptions
- my $argend = '--'; # option list terminator
- my %opctl = (); # table of option specs
- my $pkg = $caller || (caller)[0]; # current context
- # Needed if linkage is omitted.
- my @ret = (); # accum for non-options
- my %linkage; # linkage
- my $userlinkage; # user supplied HASH
- my $opt; # current option
- my $prefix = $genprefix; # current prefix
-
- $error = '';
-
- print STDERR ("GetOpt::Long $Getopt::Long::VERSION (",
- '$Revision: 2.58 $', ") ",
- "called from package \"$pkg\".",
- "\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 ( @optionlist && 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 && $optionlist[0] =~ /^\W+$/
- && !($optionlist[0] eq '<>'
- && @optionlist > 0
- && ref($optionlist[1])) ) {
- $prefix = shift (@optionlist);
- # Turn into regexp. Needs to be parenthesized!
- $prefix =~ s/(\W)/\\$1/g;
- $prefix = "([" . $prefix . "])";
- print STDERR ("=> prefix=\"$prefix\"\n") if $debug;
- }
-
- # Verify correctness of optionlist.
- %opctl = ();
- while ( @optionlist ) {
- my $opt = shift (@optionlist);
-
- # Strip leading prefix so people can specify "--foo=i" if they like.
- $opt = $+ if $opt =~ /^$prefix+(.*)$/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";
- # Kill the linkage (to avoid another error).
- shift (@optionlist)
- if @optionlist && ref($optionlist[0]);
- next;
- }
- $linkage{'<>'} = shift (@optionlist);
- next;
- }
-
- # Parse option spec.
- my ($name, $orig) = ParseOptionSpec ($opt, \%opctl);
- unless ( defined $name ) {
- # Failed. $orig contains the error message. Sorry for the abuse.
- $error .= $orig;
- # Kill the linkage (to avoid another error).
- shift (@optionlist)
- if @optionlist && ref($optionlist[0]);
- next;
- }
-
- # 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->{$orig} &&
- ref($userlinkage->{$orig}) ) {
- print STDERR ("=> found userlinkage for \"$orig\": ",
- "$userlinkage->{$orig}\n")
- if $debug;
- unshift (@optionlist, $userlinkage->{$orig});
- }
- 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 \"$orig\" to $optionlist[0]\n")
- if $debug;
- my $rl = ref($linkage{$orig} = shift (@optionlist));
-
- if ( $rl eq "ARRAY" ) {
- $opctl{$name}[CTL_DEST] = CTL_DEST_ARRAY;
- }
- elsif ( $rl eq "HASH" ) {
- $opctl{$name}[CTL_DEST] = CTL_DEST_HASH;
- }
- elsif ( $rl eq "SCALAR" || $rl eq "CODE" ) {
- # Ok.
- }
- else {
- $error .= "Invalid option linkage for \"$opt\"\n";
- }
- }
- else {
- # Link to global $opt_XXX variable.
- # Make sure a valid perl identifier results.
- my $ov = $orig;
- $ov =~ s/\W/_/g;
- if ( $opctl{$name}[CTL_DEST] == CTL_DEST_ARRAY ) {
- print STDERR ("=> link \"$orig\" to \@$pkg","::opt_$ov\n")
- if $debug;
- eval ("\$linkage{\$orig} = \\\@".$pkg."::opt_$ov;");
- }
- elsif ( $opctl{$name}[CTL_DEST] == CTL_DEST_HASH ) {
- print STDERR ("=> link \"$orig\" to \%$pkg","::opt_$ov\n")
- if $debug;
- eval ("\$linkage{\$orig} = \\\%".$pkg."::opt_$ov;");
- }
- else {
- print STDERR ("=> link \"$orig\" to \$$pkg","::opt_$ov\n")
- if $debug;
- eval ("\$linkage{\$orig} = \\\$".$pkg."::opt_$ov;");
- }
- }
- }
-
- # Bail out if errors found.
- die ($error) if $error;
- $error = 0;
-
- # Show the options tables if debugging.
- if ( $debug ) {
- my ($arrow, $k, $v);
- $arrow = "=> ";
- while ( ($k,$v) = each(%opctl) ) {
- print STDERR ($arrow, "\$opctl{$k} = $v ", OptCtl($v), "\n");
- $arrow = " ";
- }
- }
-
- # Process argument list
- my $goon = 1;
- while ( $goon && @ARGV > 0 ) {
-
- # Get next argument.
- $opt = shift (@ARGV);
- print STDERR ("=> arg \"", $opt, "\"\n") if $debug;
-
- # Double dash is option list terminator.
- last if $opt eq $argend;
-
- # Look it up.
- my $tryopt = $opt;
- my $found; # success status
- my $key; # key (if hash type)
- my $arg; # option argument
- my $ctl; # the opctl entry
-
- ($found, $opt, $ctl, $arg, $key) =
- FindOption ($prefix, $argend, $opt, \%opctl);
-
- if ( $found ) {
-
- # FindOption undefines $opt in case of errors.
- next unless defined $opt;
-
- if ( defined $arg ) {
-
- # Get the canonical name.
- print STDERR ("=> cname for \"$opt\" is ") if $debug;
- $opt = $ctl->[CTL_CNAME];
- print STDERR ("\"$ctl->[CTL_CNAME]\"\n") if $debug;
-
- if ( defined $linkage{$opt} ) {
- print STDERR ("=> ref(\$L{$opt}) -> ",
- ref($linkage{$opt}), "\n") if $debug;
-
- if ( ref($linkage{$opt}) eq 'SCALAR' ) {
- if ( $ctl->[CTL_TYPE] eq '+' ) {
- 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\"",
- $ctl->[CTL_DEST] == CTL_DEST_HASH ? ", \"$key\"" : "",
- ", \"$arg\")\n")
- if $debug;
- my $eval_error = do {
- local $@;
- local $SIG{__DIE__} = '__DEFAULT__';
- eval {
- &{$linkage{$opt}}($opt,
- $ctl->[CTL_DEST] == CTL_DEST_HASH ? ($key) : (),
- $arg);
- };
- $@;
- };
- print STDERR ("=> die($eval_error)\n")
- if $debug && $eval_error ne '';
- if ( $eval_error =~ /^!/ ) {
- if ( $eval_error =~ /^!FINISH\b/ ) {
- $goon = 0;
- }
- }
- elsif ( $eval_error ne '' ) {
- warn ($eval_error);
- $error++;
- }
- }
- else {
- print STDERR ("Invalid REF type \"", ref($linkage{$opt}),
- "\" in linkage\n");
- die("Getopt::Long -- internal error!\n");
- }
- }
- # No entry in linkage means entry in userlinkage.
- elsif ( $ctl->[CTL_DEST] == CTL_DEST_ARRAY ) {
- 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 ( $ctl->[CTL_DEST] == CTL_DEST_HASH ) {
- 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 ( $ctl->[CTL_TYPE] eq '+' ) {
- 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{'<>'})) ) {
- print STDERR ("=> &L{$tryopt}(\"$tryopt\")\n")
- if $debug;
- my $eval_error = do {
- local $@;
- local $SIG{__DIE__} = '__DEFAULT__';
- eval { &$cb ($tryopt) };
- $@;
- };
- print STDERR ("=> die($eval_error)\n")
- if $debug && $eval_error ne '';
- if ( $eval_error =~ /^!/ ) {
- if ( $eval_error =~ /^!FINISH\b/ ) {
- $goon = 0;
- }
- }
- elsif ( $eval_error ne '' ) {
- warn ($eval_error);
- $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 ( @ret && $order == $PERMUTE ) {
- # Push back accumulated arguments
- print STDERR ("=> restoring \"", join('" "', @ret), "\"\n")
- if $debug;
- unshift (@ARGV, @ret);
- }
-
- return ($error == 0);
-}
-
-# A readable representation of what's in an optbl.
-sub OptCtl ($) {
- my ($v) = @_;
- my @v = map { defined($_) ? ($_) : ("<undef>") } @$v;
- "[".
- join(",",
- "\"$v[CTL_TYPE]\"",
- "\"$v[CTL_CNAME]\"",
- $v[CTL_MAND] ? "O" : "M",
- ("\$","\@","\%","\&")[$v[CTL_DEST] || 0],
- "\"$v[CTL_DEFAULT]\"",
-# $v[CTL_RANGE] || '',
-# $v[CTL_REPEAT] || '',
- ). "]";
-}
-
-# Parse an option specification and fill the tables.
-sub ParseOptionSpec ($$) {
- my ($opt, $opctl) = @_;
-
- # Match option spec.
- if ( $opt !~ m;^
- (
- # Option name
- (?: \w+[-\w]* )
- # Alias names, or "?"
- (?: \| (?: \? | \w[-\w]* )? )*
- )?
- (
- # Either modifiers ...
- [!+]
- |
- # ... or a value/dest specification
- [=:] [ionfs] [@%]?
- |
- # ... or an optional-with-default spec
- : (?: -?\d+ | \+ ) [@%]?
- )?
- $;x ) {
- return (undef, "Error in option spec: \"$opt\"\n");
- }
-
- my ($names, $spec) = ($1, $2);
- $spec = '' unless defined $spec;
-
- # $orig 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 $orig;
-
- my @names;
- if ( defined $names ) {
- @names = split (/\|/, $names);
- $orig = $names[0];
- }
- else {
- @names = ('');
- $orig = '';
- }
-
- # Construct the opctl entries.
- my $entry;
- if ( $spec eq '' || $spec eq '+' || $spec eq '!' ) {
- # Fields are hard-wired here.
- $entry = [$spec,$orig,0,CTL_DEST_SCALAR,undef];
- }
- elsif ( $spec =~ /:(-?\d+|\+)([@%])?/ ) {
- my $def = $1;
- my $dest = $2;
- my $type = $def eq '+' ? 'I' : 'i';
- $dest ||= '$';
- $dest = $dest eq '@' ? CTL_DEST_ARRAY
- : $dest eq '%' ? CTL_DEST_HASH : CTL_DEST_SCALAR;
- # Fields are hard-wired here.
- $entry = [$type,$orig,0,$dest,$def eq '+' ? undef : $def];
- }
- else {
- my ($mand, $type, $dest) = $spec =~ /([=:])([ionfs])([@%])?/;
- $type = 'i' if $type eq 'n';
- $dest ||= '$';
- $dest = $dest eq '@' ? CTL_DEST_ARRAY
- : $dest eq '%' ? CTL_DEST_HASH : CTL_DEST_SCALAR;
- # Fields are hard-wired here.
- $entry = [$type,$orig,$mand eq '=',$dest,undef];
- }
-
- # Process all names. First is canonical, the rest are aliases.
- my $dups = '';
- foreach ( @names ) {
-
- $_ = lc ($_)
- if $ignorecase > (($bundling && length($_) == 1) ? 1 : 0);
-
- if ( exists $opctl->{$_} ) {
- $dups .= "Duplicate specification \"$opt\" for option \"$_\"\n";
- }
-
- if ( $spec eq '!' ) {
- $opctl->{"no$_"} = $entry;
- $opctl->{$_} = [@$entry];
- $opctl->{$_}->[CTL_TYPE] = '';
- }
- else {
- $opctl->{$_} = $entry;
- }
- }
-
- if ( $dups && $^W ) {
- foreach ( split(/\n+/, $dups) ) {
- warn($_."\n");
- }
- }
- ($names[0], $orig);
-}
-
-# Option lookup.
-sub FindOption ($$$$) {
-
- # returns (1, $opt, $ctl, $arg, $key) if okay,
- # returns (1, undef) if option in error,
- # returns (0) otherwise.
-
- my ($prefix, $argend, $opt, $opctl) = @_;
-
- print STDERR ("=> find \"$opt\"\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; # value supplied with --opt=value
- my $rest; # remainder from unbundling
-
- # If it is a long option, it may include the value.
- # With getopt_compat, only if not bundling.
- if ( ($starter eq "--"
- || ($getopt_compat && ($bundling == 0 || $bundling == 2)))
- && $opt =~ /^([^=]+)=(.*)$/s ) {
- $opt = $1;
- $optarg = $2;
- print STDERR ("=> option \"", $opt,
- "\", optarg = \"$optarg\"\n") if $debug;
- }
-
- #### Look it up ###
-
- my $tryopt = $opt; # option to try
-
- if ( $bundling && $starter eq '-' ) {
-
- # To try overrides, obey case ignore.
- $tryopt = $ignorecase ? lc($opt) : $opt;
-
- # If bundling == 2, long options can override bundles.
- if ( $bundling == 2 && length($tryopt) > 1
- && defined ($opctl->{$tryopt}) ) {
- print STDERR ("=> $starter$tryopt overrides unbundling\n")
- if $debug;
- }
- else {
- $tryopt = $opt;
- # 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 '';
- }
- }
-
- # Try auto-abbreviation.
- elsif ( $autoabbrev ) {
- # Sort the possible long option names.
- my @names = sort(keys (%$opctl));
- # Downcase if allowed.
- $opt = lc ($opt) if $ignorecase;
- $tryopt = $opt;
- # 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 ) {
- $_ = $opctl->{$_}->[CTL_CNAME]
- if defined $opctl->{$_}->[CTL_CNAME];
- $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++;
- return (1, undef);
- }
- @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.
- my $ctl = $opctl->{$tryopt};
- unless ( defined $ctl ) {
- return (0) if $passthrough;
- warn ("Unknown option: ", $opt, "\n");
- $error++;
- return (1, undef);
- }
- # Apparently valid.
- $opt = $tryopt;
- print STDERR ("=> found ", OptCtl($ctl),
- " for \"", $opt, "\"\n") if $debug;
-
- #### Determine argument status ####
-
- # If it is an option w/o argument, we're almost finished with it.
- my $type = $ctl->[CTL_TYPE];
- my $arg;
-
- 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 '+' ) {
- # Supply explicit value.
- $arg = 1;
- }
- else {
- $opt =~ s/^no//i; # strip NO prefix
- $arg = 0; # supply explicit value
- }
- unshift (@ARGV, $starter.$rest) if defined $rest;
- return (1, $opt, $ctl, $arg);
- }
-
- # Get mandatory status and type info.
- my $mand = $ctl->[CTL_MAND];
-
- # Check if there is an option argument available.
- if ( $gnu_compat && defined $optarg && $optarg eq '' ) {
- return (1, $opt, $ctl, $type eq 's' ? '' : 0) unless $mand;
- $optarg = 0 unless $type eq 's';
- }
-
- # 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 ) {
- return (0) if $passthrough;
- warn ("Option ", $opt, " requires an argument\n");
- $error++;
- return (1, undef);
- }
- if ( $type eq 'I' ) {
- # Fake incremental type.
- my @c = @$ctl;
- $c[CTL_TYPE] = '+';
- return (1, $opt, \@c, 1);
- }
- return (1, $opt, $ctl,
- defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] :
- $type eq 's' ? '' : 0);
- }
-
- # 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.
- my $key;
- if ($ctl->[CTL_DEST] == CTL_DEST_HASH && defined $arg) {
- ($key, $arg) = ($arg =~ /^([^=]*)=(.*)$/s) ? ($1, $2)
- : ($arg, defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] : 1);
- }
-
- #### Check if the argument is valid for this option ####
-
- if ( $type eq 's' ) { # string
- # A mandatory string takes anything.
- return (1, $opt, $ctl, $arg, $key) if $mand;
-
- # An optional string takes almost anything.
- return (1, $opt, $ctl, $arg, $key)
- if defined $optarg || defined $rest;
- return (1, $opt, $ctl, $arg, $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 'i' # numeric/integer
- || $type eq 'I' # numeric/integer w/ incr default
- || $type eq 'o' ) { # dec/oct/hex/bin value
-
- my $o_valid =
- $type eq 'o' ? "[-+]?[1-9][0-9]*|0x[0-9a-f]+|0b[01]+|0[0-7]*"
- : "[-+]?[0-9]+";
-
- if ( $bundling && defined $rest && $rest =~ /^($o_valid)(.*)$/si ) {
- $arg = $1;
- $rest = $2;
- $arg = ($type eq 'o' && $arg =~ /^0/) ? oct($arg) : 0+$arg;
- unshift (@ARGV, $starter.$rest) if defined $rest && $rest ne '';
- }
- elsif ( $arg =~ /^($o_valid)$/si ) {
- $arg = ($type eq 'o' && $arg =~ /^0/) ? oct($arg) : 0+$arg;
- }
- else {
- if ( defined $optarg || $mand ) {
- if ( $passthrough ) {
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg)
- unless defined $optarg;
- return (0);
- }
- warn ("Value \"", $arg, "\" invalid for option ",
- $opt, " (",
- $type eq 'o' ? "extended " : '',
- "number expected)\n");
- $error++;
- # Push back.
- unshift (@ARGV, $starter.$rest) if defined $rest;
- return (1, undef);
- }
- else {
- # Push back.
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg);
- if ( $type eq 'I' ) {
- # Fake incremental type.
- my @c = @$ctl;
- $c[CTL_TYPE] = '+';
- return (1, $opt, \@c, 1);
- }
- # Supply default value.
- $arg = defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] : 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 ) {
- 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++;
- # Push back.
- unshift (@ARGV, $starter.$rest) if defined $rest;
- return (1, undef);
- }
- else {
- # Push back.
- unshift (@ARGV, defined $rest ? $starter.$rest : $arg);
- # Supply default value.
- $arg = 0.0;
- }
- }
- }
- else {
- die("GetOpt::Long internal error (Can't happen)\n");
- }
- return (1, $opt, $ctl, $arg, $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;
- $order = $PERMUTE;
- }
- }
- 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/; };
- die("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
- }
- elsif ( $try =~ /^prefix_pattern=(.+)$/ && $action ) {
- $genprefix = $1;
- # Parenthesize if needed.
- $genprefix = "(" . $genprefix . ")"
- unless $genprefix =~ /^\(.*\)$/;
- eval { '' =~ /$genprefix/; };
- die("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
- }
- elsif ( $try eq 'debug' ) {
- $debug = $action;
- }
- else {
- die("Getopt::Long: unknown config parameter \"$opt\"")
- }
- }
- $prevconfig;
-}
-
-# Deprecated name.
-sub config (@) {
- Configure (@_);
-}
-
-################ Documentation ################
-
-=head1 NAME
-
-Getopt::Long - Extended processing of command line options
-
-=head1 SYNOPSIS
-
- use Getopt::Long;
- my $data = "file.dat";
- my $length = 24;
- my $verbose;
- $result = GetOptions ("length=i" => \$length, # numeric
- "file=s" => \$data, # string
- "verbose" => \$verbose); # flag
-
-=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 an 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 or three arguments. The first
-argument is the name of the option. For a scalar or array destination,
-the second argument is the value to be stored. For a hash destination,
-the second arguments is the key to the hash, and the third argument
-the value to be stored. 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 4
-
-=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 4
-
-=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 o
-
-Extended integer, Perl style. This can be either an optional leading
-plus or minus sign, followed by a sequence of digits, or an octal
-string (a zero, optionally followed by '0', '1', .. '7'), or a
-hexadecimal string (C<0x> followed by '0' .. '9', 'a' .. 'f', case
-insensitive), or a binary string (C<0b> followed by a series of '0'
-and '1').
-
-=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.
-
-=item : I<number> [ I<desttype> ]
-
-Like C<:i>, but if the value is omitted, the I<number> will be assigned.
-
-=item : + [ I<desttype> ]
-
-Like C<:i>, but if the value is omitted, the current value for the
-option will be incremented.
-
-=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...];
-
-=head2 Thread Safety
-
-Getopt::Long is thread safe when using ithreads as of Perl 5.8. It is
-I<not> thread safe when using the older (experimental and now
-obsolete) threads implementation that was added to Perl 5.005.
-
-=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 callback
-
-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 one parameter: the argument name.
-
-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 callback 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
-
-This will call the callback routine for arg1 and arg2, and then
-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 bundles with C<->.
-
-Note that, if you have options C<a>, C<l> and C<all>, and
-auto_abbrev enabled, possible arguments and option settings are:
-
- using argument sets option(s)
- ------------------------------------------
- -a, --a a
- -l, --l l
- -al, -la, -ala, -all,... a, l
- --al, --all all
-
-The suprising part is that C<--a> sets option C<a> (due to auto
-completion), not C<all>.
-
-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. If,
-however, bundling is enabled as well, single character options will be
-treated case-sensitive.
-
-With C<ignore_case>, option specifications for options that only
-differ in case, e.g., C<"foo"> and C<"Foo">, will be flagged as
-duplicates.
-
-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'.
-
-=head2 GetOptions does not split the command line correctly
-
-The command line is not split by GetOptions, but by the command line
-interpreter (CLI). On Unix, this is the shell. On Windows, it is
-COMMAND.COM or CMD.EXE. Other operating systems have other CLIs.
-
-It is important to know that these CLIs may behave different when the
-command line contains special characters, in particular quotes or
-backslashes. For example, with Unix shells you can use single quotes
-(C<'>) and double quotes (C<">) to group words together. The following
-alternatives are equivalent on Unix:
-
- "two words"
- 'two words'
- two\ words
-
-In case of doubt, insert the following statement in front of your Perl
-program:
-
- print STDERR (join("|",@ARGV),"\n");
-
-to verify how your CLI passes the arguments to the program.
-
-=head2 How do I put a "-?" option into a Getopt::Long?
-
-You can only obtain this using an alias, and Getopt::Long of at least
-version 2.13.
-
- use Getopt::Long;
- GetOptions ("help|?"); # -help and -? will both set $opt_help
-
-=head1 AUTHOR
-
-Johan Vromans <jvromans@squirrel.nl>
-
-=head1 COPYRIGHT AND DISCLAIMER
-
-This program is Copyright 2002,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
-
diff --git a/Master/perltl/lib/IO.pm b/Master/perltl/lib/IO.pm
deleted file mode 100644
index 0087530c7e6..00000000000
--- a/Master/perltl/lib/IO.pm
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-
-package IO;
-
-use XSLoader ();
-use Carp;
-
-$VERSION = "1.20";
-XSLoader::load 'IO', $VERSION;
-
-sub import {
- shift;
- my @l = @_ ? @_ : qw(Handle Seekable File Pipe Socket Dir);
-
- eval join("", map { "require IO::" . (/(\w+)/)[0] . ";\n" } @l)
- or croak $@;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-IO - load various IO modules
-
-=head1 SYNOPSIS
-
- use IO;
-
-=head1 DESCRIPTION
-
-C<IO> provides a simple mechanism to load some of the IO modules at one go.
-Currently this includes:
-
- IO::Handle
- IO::Seekable
- IO::File
- IO::Pipe
- IO::Socket
- IO::Dir
-
-For more information on any of these modules, please see its respective
-documentation.
-
-=cut
-
diff --git a/Master/perltl/lib/IO/File.pm b/Master/perltl/lib/IO/File.pm
deleted file mode 100644
index d5520cbd933..00000000000
--- a/Master/perltl/lib/IO/File.pm
+++ /dev/null
@@ -1,169 +0,0 @@
-#
-
-package IO::File;
-
-=head1 NAME
-
-IO::File - supply object methods for filehandles
-
-=head1 SYNOPSIS
-
- use IO::File;
-
- $fh = new IO::File;
- if ($fh->open("< file")) {
- print <$fh>;
- $fh->close;
- }
-
- $fh = new IO::File "> file";
- if (defined $fh) {
- print $fh "bar\n";
- $fh->close;
- }
-
- $fh = new IO::File "file", "r";
- if (defined $fh) {
- print <$fh>;
- undef $fh; # automatically closes the file
- }
-
- $fh = new IO::File "file", O_WRONLY|O_APPEND;
- if (defined $fh) {
- print $fh "corge\n";
-
- $pos = $fh->getpos;
- $fh->setpos($pos);
-
- undef $fh; # automatically closes the file
- }
-
- autoflush STDOUT 1;
-
-=head1 DESCRIPTION
-
-C<IO::File> inherits from C<IO::Handle> and C<IO::Seekable>. It extends
-these classes with methods that are specific to file handles.
-
-=head1 CONSTRUCTOR
-
-=over 4
-
-=item new ( FILENAME [,MODE [,PERMS]] )
-
-Creates an C<IO::File>. If it receives any parameters, they are passed to
-the method C<open>; if the open fails, the object is destroyed. Otherwise,
-it is returned to the caller.
-
-=item new_tmpfile
-
-Creates an C<IO::File> opened for read/write on a newly created temporary
-file. On systems where this is possible, the temporary file is anonymous
-(i.e. it is unlinked after creation, but held open). If the temporary
-file cannot be created or opened, the C<IO::File> object is destroyed.
-Otherwise, it is returned to the caller.
-
-=back
-
-=head1 METHODS
-
-=over 4
-
-=item open( FILENAME [,MODE [,PERMS]] )
-
-C<open> accepts one, two or three parameters. With one parameter,
-it is just a front end for the built-in C<open> function. With two or three
-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<IO::File::open> receives a Perl mode string ("E<gt>", "+E<lt>", etc.)
-or an ANSI C fopen() mode string ("w", "r+", etc.), it uses the basic
-Perl C<open> operator (but protects any special characters).
-
-If C<IO::File::open> is given a numeric mode, it passes that mode
-and the optional permissions value to the Perl C<sysopen> operator.
-The permissions default to 0666.
-
-For convenience, C<IO::File> exports the O_XXX constants from the
-Fcntl module, if this module is available.
-
-=back
-
-=head1 SEE ALSO
-
-L<perlfunc>,
-L<perlop/"I/O Operators">,
-L<IO::Handle>
-L<IO::Seekable>
-
-=head1 HISTORY
-
-Derived from FileHandle.pm by Graham Barr E<lt>F<gbarr@pobox.com>E<gt>.
-
-=cut
-
-use 5.006_001;
-use strict;
-our($VERSION, @EXPORT, @EXPORT_OK, @ISA);
-use Carp;
-use Symbol;
-use SelectSaver;
-use IO::Seekable;
-use File::Spec;
-
-require Exporter;
-
-@ISA = qw(IO::Handle IO::Seekable Exporter);
-
-$VERSION = "1.09";
-
-@EXPORT = @IO::Seekable::EXPORT;
-
-eval {
- # Make all Fcntl O_XXX constants available for importing
- require Fcntl;
- my @O = grep /^O_/, @Fcntl::EXPORT;
- Fcntl->import(@O); # first we import what we want to export
- push(@EXPORT, @O);
-};
-
-################################################
-## Constructor
-##
-
-sub new {
- my $type = shift;
- my $class = ref($type) || $type || "IO::File";
- @_ >= 0 && @_ <= 3
- or croak "usage: new $class [FILENAME [,MODE [,PERMS]]]";
- my $fh = $class->SUPER::new();
- if (@_) {
- $fh->open(@_)
- or return undef;
- }
- $fh;
-}
-
-################################################
-## Open
-##
-
-sub open {
- @_ >= 2 && @_ <= 4 or croak 'usage: $fh->open(FILENAME [,MODE [,PERMS]])';
- my ($fh, $file) = @_;
- if (@_ > 2) {
- my ($mode, $perms) = @_[2, 3];
- if ($mode =~ /^\d+$/) {
- defined $perms or $perms = 0666;
- return sysopen($fh, $file, $mode, $perms);
- }
- if (! File::Spec->file_name_is_absolute($file)) {
- $file = File::Spec->catfile(File::Spec->curdir(),$file);
- }
- $file = IO::Handle::_open_mode_string($mode) . " $file\0";
- }
- open($fh, $file);
-}
-
-1;
diff --git a/Master/perltl/lib/IO/Handle.pm b/Master/perltl/lib/IO/Handle.pm
deleted file mode 100644
index 81bec5a6c1a..00000000000
--- a/Master/perltl/lib/IO/Handle.pm
+++ /dev/null
@@ -1,613 +0,0 @@
-
-package IO::Handle;
-
-=head1 NAME
-
-IO::Handle - supply object methods for I/O handles
-
-=head1 SYNOPSIS
-
- use IO::Handle;
-
- $io = new IO::Handle;
- if ($io->fdopen(fileno(STDIN),"r")) {
- print $io->getline;
- $io->close;
- }
-
- $io = new IO::Handle;
- if ($io->fdopen(fileno(STDOUT),"w")) {
- $io->print("Some text\n");
- }
-
- use IO::Handle '_IOLBF';
- $io->setvbuf($buffer_var, _IOLBF, 1024);
-
- undef $io; # automatically closes the file if it's open
-
- autoflush STDOUT 1;
-
-=head1 DESCRIPTION
-
-C<IO::Handle> is the base class for all other IO handle classes. It is
-not intended that objects of C<IO::Handle> would be created directly,
-but instead C<IO::Handle> is inherited from by several other classes
-in the IO hierarchy.
-
-If you are reading this documentation, looking for a replacement for
-the C<FileHandle> package, then I suggest you read the documentation
-for C<IO::File> too.
-
-=head1 CONSTRUCTOR
-
-=over 4
-
-=item new ()
-
-Creates a new C<IO::Handle> object.
-
-=item new_from_fd ( FD, MODE )
-
-Creates an C<IO::Handle> like C<new> does.
-It requires two parameters, which are passed to the method C<fdopen>;
-if the fdopen fails, the object is destroyed. Otherwise, it is returned
-to the caller.
-
-=back
-
-=head1 METHODS
-
-See L<perlfunc> for complete descriptions of each of the following
-supported C<IO::Handle> methods, which are just front ends for the
-corresponding built-in functions:
-
- $io->close
- $io->eof
- $io->fileno
- $io->format_write( [FORMAT_NAME] )
- $io->getc
- $io->read ( BUF, LEN, [OFFSET] )
- $io->print ( ARGS )
- $io->printf ( FMT, [ARGS] )
- $io->stat
- $io->sysread ( BUF, LEN, [OFFSET] )
- $io->syswrite ( BUF, [LEN, [OFFSET]] )
- $io->truncate ( LEN )
-
-See L<perlvar> for complete descriptions of each of the following
-supported C<IO::Handle> methods. All of them return the previous
-value of the attribute and takes an optional single argument that when
-given will set the value. If no argument is given the previous value
-is unchanged (except for $io->autoflush will actually turn ON
-autoflush by default).
-
- $io->autoflush ( [BOOL] ) $|
- $io->format_page_number( [NUM] ) $%
- $io->format_lines_per_page( [NUM] ) $=
- $io->format_lines_left( [NUM] ) $-
- $io->format_name( [STR] ) $~
- $io->format_top_name( [STR] ) $^
- $io->input_line_number( [NUM]) $.
-
-The following methods are not supported on a per-filehandle basis.
-
- IO::Handle->format_line_break_characters( [STR] ) $:
- IO::Handle->format_formfeed( [STR]) $^L
- IO::Handle->output_field_separator( [STR] ) $,
- IO::Handle->output_record_separator( [STR] ) $\
-
- IO::Handle->input_record_separator( [STR] ) $/
-
-Furthermore, for doing normal I/O you might need these:
-
-=over 4
-
-=item $io->fdopen ( FD, MODE )
-
-C<fdopen> is like an ordinary C<open> except that its first parameter
-is not a filename but rather a file handle name, an IO::Handle object,
-or a file descriptor number.
-
-=item $io->opened
-
-Returns true if the object is currently a valid file descriptor, false
-otherwise.
-
-=item $io->getline
-
-This works like <$io> 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 $io->getlines
-
-This works like <$io> 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.
-
-=item $io->ungetc ( ORD )
-
-Pushes a character with the given ordinal value back onto the given
-handle's input stream. Only one character of pushback per handle is
-guaranteed.
-
-=item $io->write ( BUF, LEN [, OFFSET ] )
-
-This C<write> is like C<write> found in C, that is it is the
-opposite of read. The wrapper for the perl C<write> function is
-called C<format_write>.
-
-=item $io->error
-
-Returns a true value if the given handle has experienced any errors
-since it was opened or since the last call to C<clearerr>, or if the
-handle is invalid. It only returns false for a valid handle with no
-outstanding errors.
-
-=item $io->clearerr
-
-Clear the given handle's error indicator. Returns -1 if the handle is
-invalid, 0 otherwise.
-
-=item $io->sync
-
-C<sync> synchronizes a file's in-memory state with that on the
-physical medium. C<sync> does not operate at the perlio api level, but
-operates on the file descriptor (similar to sysread, sysseek and
-systell). This means that any data held at the perlio api level will not
-be synchronized. To synchronize data that is buffered at the perlio api
-level you must use the flush method. C<sync> is not implemented on all
-platforms. Returns "0 but true" on success, C<undef> on error, C<undef>
-for an invalid handle. See L<fsync(3c)>.
-
-=item $io->flush
-
-C<flush> causes perl to flush any buffered data at the perlio api level.
-Any unread data in the buffer will be discarded, and any unwritten data
-will be written to the underlying file descriptor. Returns "0 but true"
-on success, C<undef> on error.
-
-=item $io->printflush ( ARGS )
-
-Turns on autoflush, print ARGS and then restores the autoflush status of the
-C<IO::Handle> object. Returns the return value from print.
-
-=item $io->blocking ( [ BOOL ] )
-
-If called with an argument C<blocking> will turn on non-blocking IO if
-C<BOOL> is false, and turn it off if C<BOOL> is true.
-
-C<blocking> will return the value of the previous setting, or the
-current setting if C<BOOL> is not given.
-
-If an error occurs C<blocking> will return undef and C<$!> will be set.
-
-=back
-
-
-If the C functions setbuf() and/or setvbuf() are available, then
-C<IO::Handle::setbuf> and C<IO::Handle::setvbuf> set the buffering
-policy for an IO::Handle. The calling sequences for the Perl functions
-are the same as their C counterparts--including the constants C<_IOFBF>,
-C<_IOLBF>, and C<_IONBF> for setvbuf()--except that the buffer parameter
-specifies a scalar variable to use as a buffer. You should only
-change the buffer before any I/O, or immediately after calling flush.
-
-WARNING: A variable used as a buffer by C<setbuf> or C<setvbuf> B<must not
-be modified> in any way until the IO::Handle is closed or C<setbuf> or
-C<setvbuf> is called again, or memory corruption may result! Remember that
-the order of global destruction is undefined, so even if your buffer
-variable remains in scope until program termination, it may be undefined
-before the file IO::Handle is closed. Note that you need to import the
-constants C<_IOFBF>, C<_IOLBF>, and C<_IONBF> explicitly. Like C, setbuf
-returns nothing. setvbuf returns "0 but true", on success, C<undef> on
-failure.
-
-Lastly, there is a special method for working under B<-T> and setuid/gid
-scripts:
-
-=over 4
-
-=item $io->untaint
-
-Marks the object as taint-clean, and as such data read from it will also
-be considered taint-clean. Note that this is a very trusting action to
-take, and appropriate consideration for the data source and potential
-vulnerability should be kept in mind. Returns 0 on success, -1 if setting
-the taint-clean flag failed. (eg invalid handle)
-
-=back
-
-=head1 NOTE
-
-An C<IO::Handle> object is a reference to a symbol/GLOB reference (see
-the C<Symbol> package). Some modules that
-inherit from C<IO::Handle> may want to keep object related variables
-in the hash table part of the GLOB. In an attempt to prevent modules
-trampling on each other I propose the that any such module should prefix
-its variables with its own name separated by _'s. For example the IO::Socket
-module keeps a C<timeout> variable in 'io_socket_timeout'.
-
-=head1 SEE ALSO
-
-L<perlfunc>,
-L<perlop/"I/O Operators">,
-L<IO::File>
-
-=head1 BUGS
-
-Due to backwards compatibility, all filehandles resemble objects
-of class C<IO::Handle>, or actually classes derived from that class.
-They actually aren't. Which means you can't derive your own
-class from C<IO::Handle> and inherit those methods.
-
-=head1 HISTORY
-
-Derived from FileHandle.pm by Graham Barr E<lt>F<gbarr@pobox.com>E<gt>
-
-=cut
-
-use 5.006_001;
-use strict;
-our($VERSION, @EXPORT_OK, @ISA);
-use Carp;
-use Symbol;
-use SelectSaver;
-use IO (); # Load the XS module
-
-require Exporter;
-@ISA = qw(Exporter);
-
-$VERSION = "1.21_00";
-$VERSION = eval $VERSION;
-
-@EXPORT_OK = qw(
- 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
- format_write
-
- print
- printf
- getline
- getlines
-
- printflush
- flush
-
- SEEK_SET
- SEEK_CUR
- SEEK_END
- _IOFBF
- _IOLBF
- _IONBF
-);
-
-################################################
-## Constructors, destructors.
-##
-
-sub new {
- my $class = ref($_[0]) || $_[0] || "IO::Handle";
- @_ == 1 or croak "usage: new $class";
- my $io = gensym;
- bless $io, $class;
-}
-
-sub new_from_fd {
- my $class = ref($_[0]) || $_[0] || "IO::Handle";
- @_ == 3 or croak "usage: new_from_fd $class FD, MODE";
- my $io = gensym;
- shift;
- IO::Handle::fdopen($io, @_)
- or return undef;
- bless $io, $class;
-}
-
-#
-# There is no need for DESTROY to do anything, because when the
-# last reference to an IO object is gone, Perl automatically
-# closes its associated files (if any). However, to avoid any
-# attempts to autoload DESTROY, we here define it to do nothing.
-#
-sub DESTROY {}
-
-
-################################################
-## Open and close.
-##
-
-sub _open_mode_string {
- my ($mode) = @_;
- $mode =~ /^\+?(<|>>?)$/
- or $mode =~ s/^r(\+?)$/$1</
- or $mode =~ s/^w(\+?)$/$1>/
- or $mode =~ s/^a(\+?)$/$1>>/
- or croak "IO::Handle: bad open mode: $mode";
- $mode;
-}
-
-sub fdopen {
- @_ == 3 or croak 'usage: $io->fdopen(FD, MODE)';
- my ($io, $fd, $mode) = @_;
- local(*GLOB);
-
- if (ref($fd) && "".$fd =~ /GLOB\(/o) {
- # It's a glob reference; Alias it as we cannot get name of anon GLOBs
- my $n = qualify(*GLOB);
- *GLOB = *{*$fd};
- $fd = $n;
- } elsif ($fd =~ m#^\d+$#) {
- # It's an FD number; prefix with "=".
- $fd = "=$fd";
- }
-
- open($io, _open_mode_string($mode) . '&' . $fd)
- ? $io : undef;
-}
-
-sub close {
- @_ == 1 or croak 'usage: $io->close()';
- my($io) = @_;
-
- close($io);
-}
-
-################################################
-## Normal I/O functions.
-##
-
-# flock
-# select
-
-sub opened {
- @_ == 1 or croak 'usage: $io->opened()';
- defined fileno($_[0]);
-}
-
-sub fileno {
- @_ == 1 or croak 'usage: $io->fileno()';
- fileno($_[0]);
-}
-
-sub getc {
- @_ == 1 or croak 'usage: $io->getc()';
- getc($_[0]);
-}
-
-sub eof {
- @_ == 1 or croak 'usage: $io->eof()';
- eof($_[0]);
-}
-
-sub print {
- @_ or croak 'usage: $io->print(ARGS)';
- my $this = shift;
- print $this @_;
-}
-
-sub printf {
- @_ >= 2 or croak 'usage: $io->printf(FMT,[ARGS])';
- my $this = shift;
- printf $this @_;
-}
-
-sub getline {
- @_ == 1 or croak 'usage: $io->getline()';
- my $this = shift;
- return scalar <$this>;
-}
-
-*gets = \&getline; # deprecated
-
-sub getlines {
- @_ == 1 or croak 'usage: $io->getlines()';
- wantarray or
- croak 'Can\'t call $io->getlines in a scalar context, use $io->getline';
- my $this = shift;
- return <$this>;
-}
-
-sub truncate {
- @_ == 2 or croak 'usage: $io->truncate(LEN)';
- truncate($_[0], $_[1]);
-}
-
-sub read {
- @_ == 3 || @_ == 4 or croak 'usage: $io->read(BUF, LEN [, OFFSET])';
- read($_[0], $_[1], $_[2], $_[3] || 0);
-}
-
-sub sysread {
- @_ == 3 || @_ == 4 or croak 'usage: $io->sysread(BUF, LEN [, OFFSET])';
- sysread($_[0], $_[1], $_[2], $_[3] || 0);
-}
-
-sub write {
- @_ >= 2 && @_ <= 4 or croak 'usage: $io->write(BUF [, LEN [, OFFSET]])';
- local($\) = "";
- $_[2] = length($_[1]) unless defined $_[2];
- print { $_[0] } substr($_[1], $_[3] || 0, $_[2]);
-}
-
-sub syswrite {
- @_ >= 2 && @_ <= 4 or croak 'usage: $io->syswrite(BUF [, LEN [, OFFSET]])';
- if (defined($_[2])) {
- syswrite($_[0], $_[1], $_[2], $_[3] || 0);
- } else {
- syswrite($_[0], $_[1]);
- }
-}
-
-sub stat {
- @_ == 1 or croak 'usage: $io->stat()';
- stat($_[0]);
-}
-
-################################################
-## State modification functions.
-##
-
-sub autoflush {
- my $old = new SelectSaver qualify($_[0], caller);
- my $prev = $|;
- $| = @_ > 1 ? $_[1] : 1;
- $prev;
-}
-
-sub output_field_separator {
- carp "output_field_separator is not supported on a per-handle basis"
- if ref($_[0]);
- my $prev = $,;
- $, = $_[1] if @_ > 1;
- $prev;
-}
-
-sub output_record_separator {
- carp "output_record_separator is not supported on a per-handle basis"
- if ref($_[0]);
- my $prev = $\;
- $\ = $_[1] if @_ > 1;
- $prev;
-}
-
-sub input_record_separator {
- carp "input_record_separator is not supported on a per-handle basis"
- if ref($_[0]);
- my $prev = $/;
- $/ = $_[1] if @_ > 1;
- $prev;
-}
-
-sub input_line_number {
- local $.;
- my $tell = tell qualify($_[0], caller) if ref($_[0]);
- my $prev = $.;
- $. = $_[1] if @_ > 1;
- $prev;
-}
-
-sub format_page_number {
- my $old = new SelectSaver qualify($_[0], caller) if ref($_[0]);
- my $prev = $%;
- $% = $_[1] if @_ > 1;
- $prev;
-}
-
-sub format_lines_per_page {
- my $old = new SelectSaver qualify($_[0], caller) if ref($_[0]);
- my $prev = $=;
- $= = $_[1] if @_ > 1;
- $prev;
-}
-
-sub format_lines_left {
- my $old = new SelectSaver qualify($_[0], caller) if ref($_[0]);
- my $prev = $-;
- $- = $_[1] if @_ > 1;
- $prev;
-}
-
-sub format_name {
- my $old = new SelectSaver qualify($_[0], caller) if ref($_[0]);
- my $prev = $~;
- $~ = qualify($_[1], caller) if @_ > 1;
- $prev;
-}
-
-sub format_top_name {
- my $old = new SelectSaver qualify($_[0], caller) if ref($_[0]);
- my $prev = $^;
- $^ = qualify($_[1], caller) if @_ > 1;
- $prev;
-}
-
-sub format_line_break_characters {
- carp "format_line_break_characters is not supported on a per-handle basis"
- if ref($_[0]);
- my $prev = $:;
- $: = $_[1] if @_ > 1;
- $prev;
-}
-
-sub format_formfeed {
- carp "format_formfeed is not supported on a per-handle basis"
- if ref($_[0]);
- my $prev = $^L;
- $^L = $_[1] if @_ > 1;
- $prev;
-}
-
-sub formline {
- my $io = shift;
- my $picture = shift;
- local($^A) = $^A;
- local($\) = "";
- formline($picture, @_);
- print $io $^A;
-}
-
-sub format_write {
- @_ < 3 || croak 'usage: $io->write( [FORMAT_NAME] )';
- if (@_ == 2) {
- my ($io, $fmt) = @_;
- my $oldfmt = $io->format_name($fmt);
- CORE::write($io);
- $io->format_name($oldfmt);
- } else {
- CORE::write($_[0]);
- }
-}
-
-# XXX undocumented
-sub fcntl {
- @_ == 3 || croak 'usage: $io->fcntl( OP, VALUE );';
- my ($io, $op) = @_;
- return fcntl($io, $op, $_[2]);
-}
-
-# XXX undocumented
-sub ioctl {
- @_ == 3 || croak 'usage: $io->ioctl( OP, VALUE );';
- my ($io, $op) = @_;
- return ioctl($io, $op, $_[2]);
-}
-
-# this sub is for compatability with older releases of IO that used
-# a sub called constant to detemine if a constant existed -- GMB
-#
-# The SEEK_* and _IO?BF constants were the only constants at that time
-# any new code should just chech defined(&CONSTANT_NAME)
-
-sub constant {
- no strict 'refs';
- my $name = shift;
- (($name =~ /^(SEEK_(SET|CUR|END)|_IO[FLN]BF)$/) && defined &{$name})
- ? &{$name}() : undef;
-}
-
-
-# so that flush.pl can be deprecated
-
-sub printflush {
- my $io = shift;
- my $old = new SelectSaver qualify($io, caller) if ref($io);
- local $| = 1;
- if(ref($io)) {
- print $io @_;
- }
- else {
- print @_;
- }
-}
-
-1;
diff --git a/Master/perltl/lib/IO/Seekable.pm b/Master/perltl/lib/IO/Seekable.pm
deleted file mode 100644
index 2ddee4d53ce..00000000000
--- a/Master/perltl/lib/IO/Seekable.pm
+++ /dev/null
@@ -1,128 +0,0 @@
-#
-
-package IO::Seekable;
-
-=head1 NAME
-
-IO::Seekable - supply seek based methods for I/O objects
-
-=head1 SYNOPSIS
-
- use IO::Seekable;
- package IO::Something;
- @ISA = qw(IO::Seekable);
-
-=head1 DESCRIPTION
-
-C<IO::Seekable> does not have a constructor of its own as it is intended to
-be inherited by other C<IO::Handle> based objects. It provides methods
-which allow seeking of the file descriptors.
-
-=over 4
-
-=item $io->getpos
-
-Returns an opaque value that represents the current position of the
-IO::File, or C<undef> if this is not possible (eg an unseekable stream such
-as a terminal, pipe or socket). If the fgetpos() function is available in
-your C library it is used to implements getpos, else perl emulates getpos
-using C's ftell() function.
-
-=item $io->setpos
-
-Uses the value of a previous getpos call to return to a previously visited
-position. Returns "0 but true" on success, C<undef> on failure.
-
-=back
-
-See L<perlfunc> for complete descriptions of each of the following
-supported C<IO::Seekable> methods, which are just front ends for the
-corresponding built-in functions:
-
-=over 4
-
-=item $io->seek ( POS, WHENCE )
-
-Seek the IO::File to position POS, relative to WHENCE:
-
-=over 8
-
-=item WHENCE=0 (SEEK_SET)
-
-POS is absolute position. (Seek relative to the start of the file)
-
-=item WHENCE=1 (SEEK_CUR)
-
-POS is an offset from the current position. (Seek relative to current)
-
-=item WHENCE=2 (SEEK_END)
-
-POS is an offset from the end of the file. (Seek relative to end)
-
-=back
-
-The SEEK_* constants can be imported from the C<Fcntl> module if you
-don't wish to use the numbers C<0> C<1> or C<2> in your code.
-
-Returns C<1> upon success, C<0> otherwise.
-
-=item $io->sysseek( POS, WHENCE )
-
-Similar to $io->seek, but sets the IO::File's position using the system
-call lseek(2) directly, so will confuse most perl IO operators except
-sysread and syswrite (see L<perlfunc> for full details)
-
-Returns the new position, or C<undef> on failure. A position
-of zero is returned as the string C<"0 but true">
-
-=item $io->tell
-
-Returns the IO::File's current position, or -1 on error.
-
-=back
-
-=head1 SEE ALSO
-
-L<perlfunc>,
-L<perlop/"I/O Operators">,
-L<IO::Handle>
-L<IO::File>
-
-=head1 HISTORY
-
-Derived from FileHandle.pm by Graham Barr E<lt>gbarr@pobox.comE<gt>
-
-=cut
-
-use 5.006_001;
-use Carp;
-use strict;
-our($VERSION, @EXPORT, @ISA);
-use IO::Handle ();
-# XXX we can't get these from IO::Handle or we'll get prototype
-# mismatch warnings on C<use POSIX; use IO::File;> :-(
-use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END);
-require Exporter;
-
-@EXPORT = qw(SEEK_SET SEEK_CUR SEEK_END);
-@ISA = qw(Exporter);
-
-$VERSION = "1.08_00";
-$VERSION = eval $VERSION;
-
-sub seek {
- @_ == 3 or croak 'usage: $io->seek(POS, WHENCE)';
- seek($_[0], $_[1], $_[2]);
-}
-
-sub sysseek {
- @_ == 3 or croak 'usage: $io->sysseek(POS, WHENCE)';
- sysseek($_[0], $_[1], $_[2]);
-}
-
-sub tell {
- @_ == 1 or croak 'usage: $io->tell()';
- tell($_[0]);
-}
-
-1;
diff --git a/Master/perltl/lib/List/Util.pm b/Master/perltl/lib/List/Util.pm
deleted file mode 100644
index 7686ffe82cd..00000000000
--- a/Master/perltl/lib/List/Util.pm
+++ /dev/null
@@ -1,194 +0,0 @@
-# List::Util.pm
-#
-# Copyright (c) 1997-2001 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package List::Util;
-
-require Exporter;
-require DynaLoader;
-
-our @ISA = qw(Exporter DynaLoader);
-our @EXPORT_OK = qw(first min max minstr maxstr reduce sum shuffle);
-our $VERSION = "1.07_00";
-our $XS_VERSION = $VERSION;
-$VERSION = eval $VERSION;
-
-bootstrap List::Util $XS_VERSION;
-
-1;
-
-__END__
-
-=head1 NAME
-
-List::Util - A selection of general-utility list subroutines
-
-=head1 SYNOPSIS
-
- use List::Util qw(first max maxstr min minstr reduce shuffle sum);
-
-=head1 DESCRIPTION
-
-C<List::Util> contains a selection of subroutines that people have
-expressed would be nice to have in the perl core, but the usage would
-not really be high enough to warrant the use of a keyword, and the size
-so small such that being individual extensions would be wasteful.
-
-By default C<List::Util> does not export any subroutines. The
-subroutines defined are
-
-=over 4
-
-=item first BLOCK LIST
-
-Similar to C<grep> in that it evaluates BLOCK setting C<$_> to each element
-of LIST in turn. C<first> returns the first element where the result from
-BLOCK is a true value. If BLOCK never returns true or LIST was empty then
-C<undef> is returned.
-
- $foo = first { defined($_) } @list # first defined value in @list
- $foo = first { $_ > $value } @list # first value in @list which
- # is greater than $value
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { defined($a) ? $a : wanted($b) ? $b : undef } undef, @list
-
-for example wanted() could be defined() which would return the first
-defined value in @list
-
-=item max LIST
-
-Returns the entry in the list with the highest numerical value. If the
-list is empty then C<undef> is returned.
-
- $foo = max 1..10 # 10
- $foo = max 3,9,12 # 12
- $foo = max @bar, @baz # whatever
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { $a > $b ? $a : $b } 1..10
-
-=item maxstr LIST
-
-Similar to C<max>, but treats all the entries in the list as strings
-and returns the highest string as defined by the C<gt> operator.
-If the list is empty then C<undef> is returned.
-
- $foo = maxstr 'A'..'Z' # 'Z'
- $foo = maxstr "hello","world" # "world"
- $foo = maxstr @bar, @baz # whatever
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { $a gt $b ? $a : $b } 'A'..'Z'
-
-=item min LIST
-
-Similar to C<max> but returns the entry in the list with the lowest
-numerical value. If the list is empty then C<undef> is returned.
-
- $foo = min 1..10 # 1
- $foo = min 3,9,12 # 3
- $foo = min @bar, @baz # whatever
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { $a < $b ? $a : $b } 1..10
-
-=item minstr LIST
-
-Similar to C<min>, but treats all the entries in the list as strings
-and returns the lowest string as defined by the C<lt> operator.
-If the list is empty then C<undef> is returned.
-
- $foo = minstr 'A'..'Z' # 'A'
- $foo = minstr "hello","world" # "hello"
- $foo = minstr @bar, @baz # whatever
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { $a lt $b ? $a : $b } 'A'..'Z'
-
-=item reduce BLOCK LIST
-
-Reduces LIST by calling BLOCK multiple times, setting C<$a> and C<$b>
-each time. The first call will be with C<$a> and C<$b> set to the first
-two elements of the list, subsequent calls will be done by
-setting C<$a> to the result of the previous call and C<$b> to the next
-element in the list.
-
-Returns the result of the last call to BLOCK. If LIST is empty then
-C<undef> is returned. If LIST only contains one element then that
-element is returned and BLOCK is not executed.
-
- $foo = reduce { $a < $b ? $a : $b } 1..10 # min
- $foo = reduce { $a lt $b ? $a : $b } 'aa'..'zz' # minstr
- $foo = reduce { $a + $b } 1 .. 10 # sum
- $foo = reduce { $a . $b } @bar # concat
-
-=item shuffle LIST
-
-Returns the elements of LIST in a random order
-
- @cards = shuffle 0..51 # 0..51 in a random order
-
-=item sum LIST
-
-Returns the sum of all the elements in LIST.
-
- $foo = sum 1..10 # 55
- $foo = sum 3,9,12 # 24
- $foo = sum @bar, @baz # whatever
-
-This function could be implemented using C<reduce> like this
-
- $foo = reduce { $a + $b } 1..10
-
-=back
-
-=head1 KNOWN BUGS
-
-With perl versions prior to 5.005 there are some cases where reduce
-will return an incorrect result. This will show up as test 7 of
-reduce.t failing.
-
-=head1 SUGGESTED ADDITIONS
-
-The following are additions that have been requested, but I have been reluctant
-to add due to them being very simple to implement in perl
-
- # One argument is true
-
- sub any { $_ && return 1 for @_; 0 }
-
- # All arguments are true
-
- sub all { $_ || return 0 for @_; 1 }
-
- # All arguments are false
-
- sub none { $_ && return 0 for @_; 1 }
-
- # One argument is false
-
- sub notall { $_ || return 1 for @_; 0 }
-
- # How many elements are true
-
- sub true { scalar grep { $_ } @_ }
-
- # How many elements are false
-
- sub false { scalar grep { !$_ } @_ }
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-2001 Graham Barr <gbarr@pobox.com>. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/perltl/lib/POSIX.pm b/Master/perltl/lib/POSIX.pm
deleted file mode 100644
index 05634f01322..00000000000
--- a/Master/perltl/lib/POSIX.pm
+++ /dev/null
@@ -1,950 +0,0 @@
-package POSIX;
-
-our(@ISA, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD) = ();
-
-use AutoLoader;
-
-use XSLoader ();
-
-our $VERSION = "1.05" ;
-
-# Grandfather old foo_h form to new :foo_h form
-my $loaded;
-
-sub import {
- load_imports() unless $loaded++;
- my $this = shift;
- my @list = map { m/^\w+_h$/ ? ":$_" : $_ } @_;
- local $Exporter::ExportLevel = 1;
- Exporter::import($this,@list);
-}
-
-sub croak { require Carp; goto &Carp::croak }
-# declare usage to assist AutoLoad
-sub usage;
-
-XSLoader::load 'POSIX', $VERSION;
-
-my %NON_CONSTS = (map {($_,1)}
- qw(S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG WEXITSTATUS
- WIFEXITED WIFSIGNALED WIFSTOPPED WSTOPSIG WTERMSIG));
-
-sub AUTOLOAD {
- if ($AUTOLOAD =~ /::(_?[a-z])/) {
- # require AutoLoader;
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD
- }
- local $! = 0;
- my $constname = $AUTOLOAD;
- $constname =~ s/.*:://;
- if ($NON_CONSTS{$constname}) {
- my ($val, $error) = &int_macro_int($constname, $_[0]);
- croak $error if $error;
- *$AUTOLOAD = sub { &int_macro_int($constname, $_[0]) };
- } else {
- my ($error, $val) = constant($constname);
- croak $error if $error;
- *$AUTOLOAD = sub { $val };
- }
-
- goto &$AUTOLOAD;
-}
-
-sub POSIX::SigAction::new {
- bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3] || 0}, $_[0];
-}
-
-1;
-__END__
-
-sub usage {
- my ($mess) = @_;
- croak "Usage: POSIX::$mess";
-}
-
-sub redef {
- my ($mess) = @_;
- croak "Use method $mess instead";
-}
-
-sub unimpl {
- my ($mess) = @_;
- $mess =~ s/xxx//;
- croak "Unimplemented: POSIX::$mess";
-}
-
-sub assert {
- usage "assert(expr)" if @_ != 1;
- if (!$_[0]) {
- croak "Assertion failed";
- }
-}
-
-sub tolower {
- usage "tolower(string)" if @_ != 1;
- lc($_[0]);
-}
-
-sub toupper {
- usage "toupper(string)" if @_ != 1;
- uc($_[0]);
-}
-
-sub closedir {
- usage "closedir(dirhandle)" if @_ != 1;
- CORE::closedir($_[0]);
-}
-
-sub opendir {
- usage "opendir(directory)" if @_ != 1;
- my $dirhandle;
- CORE::opendir($dirhandle, $_[0])
- ? $dirhandle
- : undef;
-}
-
-sub readdir {
- usage "readdir(dirhandle)" if @_ != 1;
- CORE::readdir($_[0]);
-}
-
-sub rewinddir {
- usage "rewinddir(dirhandle)" if @_ != 1;
- CORE::rewinddir($_[0]);
-}
-
-sub errno {
- usage "errno()" if @_ != 0;
- $! + 0;
-}
-
-sub creat {
- usage "creat(filename, mode)" if @_ != 2;
- &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[1]);
-}
-
-sub fcntl {
- usage "fcntl(filehandle, cmd, arg)" if @_ != 3;
- CORE::fcntl($_[0], $_[1], $_[2]);
-}
-
-sub getgrgid {
- usage "getgrgid(gid)" if @_ != 1;
- CORE::getgrgid($_[0]);
-}
-
-sub getgrnam {
- usage "getgrnam(name)" if @_ != 1;
- CORE::getgrnam($_[0]);
-}
-
-sub atan2 {
- usage "atan2(x,y)" if @_ != 2;
- CORE::atan2($_[0], $_[1]);
-}
-
-sub cos {
- usage "cos(x)" if @_ != 1;
- CORE::cos($_[0]);
-}
-
-sub exp {
- usage "exp(x)" if @_ != 1;
- CORE::exp($_[0]);
-}
-
-sub fabs {
- usage "fabs(x)" if @_ != 1;
- CORE::abs($_[0]);
-}
-
-sub log {
- usage "log(x)" if @_ != 1;
- CORE::log($_[0]);
-}
-
-sub pow {
- usage "pow(x,exponent)" if @_ != 2;
- $_[0] ** $_[1];
-}
-
-sub sin {
- usage "sin(x)" if @_ != 1;
- CORE::sin($_[0]);
-}
-
-sub sqrt {
- usage "sqrt(x)" if @_ != 1;
- CORE::sqrt($_[0]);
-}
-
-sub getpwnam {
- usage "getpwnam(name)" if @_ != 1;
- CORE::getpwnam($_[0]);
-}
-
-sub getpwuid {
- usage "getpwuid(uid)" if @_ != 1;
- CORE::getpwuid($_[0]);
-}
-
-sub longjmp {
- unimpl "longjmp() is C-specific: use die instead";
-}
-
-sub setjmp {
- unimpl "setjmp() is C-specific: use eval {} instead";
-}
-
-sub siglongjmp {
- unimpl "siglongjmp() is C-specific: use die instead";
-}
-
-sub sigsetjmp {
- unimpl "sigsetjmp() is C-specific: use eval {} instead";
-}
-
-sub kill {
- usage "kill(pid, sig)" if @_ != 2;
- CORE::kill $_[1], $_[0];
-}
-
-sub raise {
- usage "raise(sig)" if @_ != 1;
- CORE::kill $_[0], $$; # Is this good enough?
-}
-
-sub offsetof {
- unimpl "offsetof() is C-specific, stopped";
-}
-
-sub clearerr {
- redef "IO::Handle::clearerr()";
-}
-
-sub fclose {
- redef "IO::Handle::close()";
-}
-
-sub fdopen {
- redef "IO::Handle::new_from_fd()";
-}
-
-sub feof {
- redef "IO::Handle::eof()";
-}
-
-sub fgetc {
- redef "IO::Handle::getc()";
-}
-
-sub fgets {
- redef "IO::Handle::gets()";
-}
-
-sub fileno {
- redef "IO::Handle::fileno()";
-}
-
-sub fopen {
- redef "IO::File::open()";
-}
-
-sub fprintf {
- unimpl "fprintf() is C-specific--use printf instead";
-}
-
-sub fputc {
- unimpl "fputc() is C-specific--use print instead";
-}
-
-sub fputs {
- unimpl "fputs() is C-specific--use print instead";
-}
-
-sub fread {
- unimpl "fread() is C-specific--use read instead";
-}
-
-sub freopen {
- unimpl "freopen() is C-specific--use open instead";
-}
-
-sub fscanf {
- unimpl "fscanf() is C-specific--use <> and regular expressions instead";
-}
-
-sub fseek {
- redef "IO::Seekable::seek()";
-}
-
-sub ferror {
- redef "IO::Handle::error()";
-}
-
-sub fflush {
- redef "IO::Handle::flush()";
-}
-
-sub fgetpos {
- redef "IO::Seekable::getpos()";
-}
-
-sub fsetpos {
- redef "IO::Seekable::setpos()";
-}
-
-sub ftell {
- redef "IO::Seekable::tell()";
-}
-
-sub fwrite {
- unimpl "fwrite() is C-specific--use print instead";
-}
-
-sub getc {
- usage "getc(handle)" if @_ != 1;
- CORE::getc($_[0]);
-}
-
-sub getchar {
- usage "getchar()" if @_ != 0;
- CORE::getc(STDIN);
-}
-
-sub gets {
- usage "gets()" if @_ != 0;
- scalar <STDIN>;
-}
-
-sub perror {
- print STDERR "@_: " if @_;
- print STDERR $!,"\n";
-}
-
-sub printf {
- usage "printf(pattern, args...)" if @_ < 1;
- CORE::printf STDOUT @_;
-}
-
-sub putc {
- unimpl "putc() is C-specific--use print instead";
-}
-
-sub putchar {
- unimpl "putchar() is C-specific--use print instead";
-}
-
-sub puts {
- unimpl "puts() is C-specific--use print instead";
-}
-
-sub remove {
- usage "remove(filename)" if @_ != 1;
- CORE::unlink($_[0]);
-}
-
-sub rename {
- usage "rename(oldfilename, newfilename)" if @_ != 2;
- CORE::rename($_[0], $_[1]);
-}
-
-sub rewind {
- usage "rewind(filehandle)" if @_ != 1;
- CORE::seek($_[0],0,0);
-}
-
-sub scanf {
- unimpl "scanf() is C-specific--use <> and regular expressions instead";
-}
-
-sub sprintf {
- usage "sprintf(pattern,args)" if @_ == 0;
- CORE::sprintf(shift,@_);
-}
-
-sub sscanf {
- unimpl "sscanf() is C-specific--use regular expressions instead";
-}
-
-sub tmpfile {
- redef "IO::File::new_tmpfile()";
-}
-
-sub ungetc {
- redef "IO::Handle::ungetc()";
-}
-
-sub vfprintf {
- unimpl "vfprintf() is C-specific";
-}
-
-sub vprintf {
- unimpl "vprintf() is C-specific";
-}
-
-sub vsprintf {
- unimpl "vsprintf() is C-specific";
-}
-
-sub abs {
- usage "abs(x)" if @_ != 1;
- CORE::abs($_[0]);
-}
-
-sub atexit {
- unimpl "atexit() is C-specific: use END {} instead";
-}
-
-sub atof {
- unimpl "atof() is C-specific, stopped";
-}
-
-sub atoi {
- unimpl "atoi() is C-specific, stopped";
-}
-
-sub atol {
- unimpl "atol() is C-specific, stopped";
-}
-
-sub bsearch {
- unimpl "bsearch() not supplied";
-}
-
-sub calloc {
- unimpl "calloc() is C-specific, stopped";
-}
-
-sub div {
- unimpl "div() is C-specific, stopped";
-}
-
-sub exit {
- usage "exit(status)" if @_ != 1;
- CORE::exit($_[0]);
-}
-
-sub free {
- unimpl "free() is C-specific, stopped";
-}
-
-sub getenv {
- usage "getenv(name)" if @_ != 1;
- $ENV{$_[0]};
-}
-
-sub labs {
- unimpl "labs() is C-specific, use abs instead";
-}
-
-sub ldiv {
- unimpl "ldiv() is C-specific, use / and int instead";
-}
-
-sub malloc {
- unimpl "malloc() is C-specific, stopped";
-}
-
-sub qsort {
- unimpl "qsort() is C-specific, use sort instead";
-}
-
-sub rand {
- unimpl "rand() is non-portable, use Perl's rand instead";
-}
-
-sub realloc {
- unimpl "realloc() is C-specific, stopped";
-}
-
-sub srand {
- unimpl "srand()";
-}
-
-sub system {
- usage "system(command)" if @_ != 1;
- CORE::system($_[0]);
-}
-
-sub memchr {
- unimpl "memchr() is C-specific, use index() instead";
-}
-
-sub memcmp {
- unimpl "memcmp() is C-specific, use eq instead";
-}
-
-sub memcpy {
- unimpl "memcpy() is C-specific, use = instead";
-}
-
-sub memmove {
- unimpl "memmove() is C-specific, use = instead";
-}
-
-sub memset {
- unimpl "memset() is C-specific, use x instead";
-}
-
-sub strcat {
- unimpl "strcat() is C-specific, use .= instead";
-}
-
-sub strchr {
- unimpl "strchr() is C-specific, use index() instead";
-}
-
-sub strcmp {
- unimpl "strcmp() is C-specific, use eq instead";
-}
-
-sub strcpy {
- unimpl "strcpy() is C-specific, use = instead";
-}
-
-sub strcspn {
- unimpl "strcspn() is C-specific, use regular expressions instead";
-}
-
-sub strerror {
- usage "strerror(errno)" if @_ != 1;
- local $! = $_[0];
- $! . "";
-}
-
-sub strlen {
- unimpl "strlen() is C-specific, use length instead";
-}
-
-sub strncat {
- unimpl "strncat() is C-specific, use .= instead";
-}
-
-sub strncmp {
- unimpl "strncmp() is C-specific, use eq instead";
-}
-
-sub strncpy {
- unimpl "strncpy() is C-specific, use = instead";
-}
-
-sub strpbrk {
- unimpl "strpbrk() is C-specific, stopped";
-}
-
-sub strrchr {
- unimpl "strrchr() is C-specific, use rindex() instead";
-}
-
-sub strspn {
- unimpl "strspn() is C-specific, stopped";
-}
-
-sub strstr {
- usage "strstr(big, little)" if @_ != 2;
- CORE::index($_[0], $_[1]);
-}
-
-sub strtok {
- unimpl "strtok() is C-specific, stopped";
-}
-
-sub chmod {
- usage "chmod(mode, filename)" if @_ != 2;
- CORE::chmod($_[0], $_[1]);
-}
-
-sub fstat {
- usage "fstat(fd)" if @_ != 1;
- local *TMP;
- CORE::open(TMP, "<&$_[0]"); # Gross.
- my @l = CORE::stat(TMP);
- CORE::close(TMP);
- @l;
-}
-
-sub mkdir {
- usage "mkdir(directoryname, mode)" if @_ != 2;
- CORE::mkdir($_[0], $_[1]);
-}
-
-sub stat {
- usage "stat(filename)" if @_ != 1;
- CORE::stat($_[0]);
-}
-
-sub umask {
- usage "umask(mask)" if @_ != 1;
- CORE::umask($_[0]);
-}
-
-sub wait {
- usage "wait()" if @_ != 0;
- CORE::wait();
-}
-
-sub waitpid {
- usage "waitpid(pid, options)" if @_ != 2;
- CORE::waitpid($_[0], $_[1]);
-}
-
-sub gmtime {
- usage "gmtime(time)" if @_ != 1;
- CORE::gmtime($_[0]);
-}
-
-sub localtime {
- usage "localtime(time)" if @_ != 1;
- CORE::localtime($_[0]);
-}
-
-sub time {
- usage "time()" if @_ != 0;
- CORE::time;
-}
-
-sub alarm {
- usage "alarm(seconds)" if @_ != 1;
- CORE::alarm($_[0]);
-}
-
-sub chdir {
- usage "chdir(directory)" if @_ != 1;
- CORE::chdir($_[0]);
-}
-
-sub chown {
- usage "chown(filename, uid, gid)" if @_ != 3;
- CORE::chown($_[0], $_[1], $_[2]);
-}
-
-sub execl {
- unimpl "execl() is C-specific, stopped";
-}
-
-sub execle {
- unimpl "execle() is C-specific, stopped";
-}
-
-sub execlp {
- unimpl "execlp() is C-specific, stopped";
-}
-
-sub execv {
- unimpl "execv() is C-specific, stopped";
-}
-
-sub execve {
- unimpl "execve() is C-specific, stopped";
-}
-
-sub execvp {
- unimpl "execvp() is C-specific, stopped";
-}
-
-sub fork {
- usage "fork()" if @_ != 0;
- CORE::fork;
-}
-
-sub getegid {
- usage "getegid()" if @_ != 0;
- $) + 0;
-}
-
-sub geteuid {
- usage "geteuid()" if @_ != 0;
- $> + 0;
-}
-
-sub getgid {
- usage "getgid()" if @_ != 0;
- $( + 0;
-}
-
-sub getgroups {
- usage "getgroups()" if @_ != 0;
- my %seen;
- grep(!$seen{$_}++, split(' ', $) ));
-}
-
-sub getlogin {
- usage "getlogin()" if @_ != 0;
- CORE::getlogin();
-}
-
-sub getpgrp {
- usage "getpgrp()" if @_ != 0;
- CORE::getpgrp;
-}
-
-sub getpid {
- usage "getpid()" if @_ != 0;
- $$;
-}
-
-sub getppid {
- usage "getppid()" if @_ != 0;
- CORE::getppid;
-}
-
-sub getuid {
- usage "getuid()" if @_ != 0;
- $<;
-}
-
-sub isatty {
- usage "isatty(filehandle)" if @_ != 1;
- -t $_[0];
-}
-
-sub link {
- usage "link(oldfilename, newfilename)" if @_ != 2;
- CORE::link($_[0], $_[1]);
-}
-
-sub rmdir {
- usage "rmdir(directoryname)" if @_ != 1;
- CORE::rmdir($_[0]);
-}
-
-sub setbuf {
- redef "IO::Handle::setbuf()";
-}
-
-sub setvbuf {
- redef "IO::Handle::setvbuf()";
-}
-
-sub sleep {
- usage "sleep(seconds)" if @_ != 1;
- $_[0] - CORE::sleep($_[0]);
-}
-
-sub unlink {
- usage "unlink(filename)" if @_ != 1;
- CORE::unlink($_[0]);
-}
-
-sub utime {
- usage "utime(filename, atime, mtime)" if @_ != 3;
- CORE::utime($_[1], $_[2], $_[0]);
-}
-
-sub load_imports {
-%EXPORT_TAGS = (
-
- assert_h => [qw(assert NDEBUG)],
-
- ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower
- isprint ispunct isspace isupper isxdigit tolower toupper)],
-
- dirent_h => [],
-
- errno_h => [qw(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT
- EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED
- ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT
- EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS
- EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK
- EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH
- ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM
- ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR
- ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM
- EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE
- ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT
- ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY
- EUSERS EWOULDBLOCK EXDEV errno)],
-
- fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK
- F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK
- O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK
- O_RDONLY O_RDWR O_TRUNC O_WRONLY
- creat
- SEEK_CUR SEEK_END SEEK_SET
- S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID
- S_IWGRP S_IWOTH S_IWUSR)],
-
- float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG
- DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP
- DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP
- FLT_DIG FLT_EPSILON FLT_MANT_DIG
- FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP
- FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP
- FLT_RADIX FLT_ROUNDS
- LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG
- LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP
- LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP)],
-
- grp_h => [],
-
- limits_h => [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX
- INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON
- MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX
- PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN
- SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX
- ULONG_MAX USHRT_MAX _POSIX_ARG_MAX _POSIX_CHILD_MAX
- _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT
- _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX
- _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX
- _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)],
-
- locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES
- LC_MONETARY LC_NUMERIC LC_TIME NULL
- localeconv setlocale)],
-
- math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod
- frexp ldexp log10 modf pow sinh tan tanh)],
-
- pwd_h => [],
-
- setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)],
-
- signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK
- SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM
- SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL
- SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN
- SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK SIG_DFL SIG_ERR
- SIG_IGN SIG_SETMASK SIG_UNBLOCK raise sigaction signal
- sigpending sigprocmask sigsuspend)],
-
- stdarg_h => [],
-
- stddef_h => [qw(NULL offsetof)],
-
- stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid
- L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET
- STREAM_MAX TMP_MAX stderr stdin stdout
- clearerr fclose fdopen feof ferror fflush fgetc fgetpos
- fgets fopen fprintf fputc fputs fread freopen
- fscanf fseek fsetpos ftell fwrite getchar gets
- perror putc putchar puts remove rewind
- scanf setbuf setvbuf sscanf tmpfile tmpnam
- ungetc vfprintf vprintf vsprintf)],
-
- stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX
- abort atexit atof atoi atol bsearch calloc div
- free getenv labs ldiv malloc mblen mbstowcs mbtowc
- qsort realloc strtod strtol strtoul wcstombs wctomb)],
-
- string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat
- strchr strcmp strcoll strcpy strcspn strerror strlen
- strncat strncmp strncpy strpbrk strrchr strspn strstr
- strtok strxfrm)],
-
- sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG
- S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR
- fstat mkfifo)],
-
- sys_times_h => [],
-
- sys_types_h => [],
-
- sys_utsname_h => [qw(uname)],
-
- sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED
- WNOHANG WSTOPSIG WTERMSIG WUNTRACED)],
-
- termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400
- B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL
- CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK
- ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR
- INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST
- PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION
- TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW
- TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART
- VSTOP VSUSP VTIME
- cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain
- tcflow tcflush tcgetattr tcsendbreak tcsetattr )],
-
- time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime
- difftime mktime strftime tzset tzname)],
-
- unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET
- STDERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK
- _PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON
- _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX
- _PC_PIPE_BUF _PC_VDISABLE _POSIX_CHOWN_RESTRICTED
- _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS
- _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX
- _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL
- _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS
- _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
- _exit access ctermid cuserid
- dup2 dup execl execle execlp execv execve execvp
- fpathconf getcwd getegid geteuid getgid getgroups
- getpid getuid isatty lseek pathconf pause setgid setpgid
- setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)],
-
- utime_h => [],
-
-);
-
-# Exporter::export_tags();
-for (values %EXPORT_TAGS) {
- push @EXPORT, @$_;
-}
-
-@EXPORT_OK = qw(
- abs
- alarm
- atan2
- chdir
- chmod
- chown
- close
- closedir
- cos
- exit
- exp
- fcntl
- fileno
- fork
- getc
- getgrgid
- getgrnam
- getlogin
- getpgrp
- getppid
- getpwnam
- getpwuid
- gmtime
- isatty
- kill
- link
- localtime
- log
- mkdir
- nice
- open
- opendir
- pipe
- printf
- rand
- read
- readdir
- rename
- rewinddir
- rmdir
- sin
- sleep
- sprintf
- sqrt
- srand
- stat
- system
- time
- times
- umask
- unlink
- utime
- wait
- waitpid
- write
-);
-
-require Exporter;
-}
diff --git a/Master/perltl/lib/SDBM_File.pm b/Master/perltl/lib/SDBM_File.pm
deleted file mode 100644
index ee82a54145d..00000000000
--- a/Master/perltl/lib/SDBM_File.pm
+++ /dev/null
@@ -1,116 +0,0 @@
-package SDBM_File;
-
-use strict;
-use warnings;
-
-require Tie::Hash;
-use XSLoader ();
-
-our @ISA = qw(Tie::Hash);
-our $VERSION = "1.03" ;
-
-XSLoader::load 'SDBM_File', $VERSION;
-
-1;
-
-__END__
-
-=head1 NAME
-
-SDBM_File - Tied access to sdbm files
-
-=head1 SYNOPSIS
-
- use Fcntl; # For O_RDWR, O_CREAT, etc.
- use SDBM_File;
-
- tie(%h, 'SDBM_File', 'filename', O_RDWR|O_CREAT, 0666)
- or die "Couldn't tie SDBM file 'filename': $!; aborting";
-
- # Now read and change the hash
- $h{newkey} = newvalue;
- print $h{oldkey};
- ...
-
- untie %h;
-
-=head1 DESCRIPTION
-
-C<SDBM_File> establishes a connection between a Perl hash variable and
-a file in SDBM_File format;. You can manipulate the data in the file
-just as if it were in a Perl hash, but when your program exits, the
-data will remain in the file, to be used the next time your program
-runs.
-
-Use C<SDBM_File> with the Perl built-in C<tie> function to establish
-the connection between the variable and the file. The arguments to
-C<tie> should be:
-
-=over 4
-
-=item 1.
-
-The hash variable you want to tie.
-
-=item 2.
-
-The string C<"SDBM_File">. (Ths tells Perl to use the C<SDBM_File>
-package to perform the functions of the hash.)
-
-=item 3.
-
-The name of the file you want to tie to the hash.
-
-=item 4.
-
-Flags. Use one of:
-
-=over 2
-
-=item C<O_RDONLY>
-
-Read-only access to the data in the file.
-
-=item C<O_WRONLY>
-
-Write-only access to the data in the file.
-
-=item C<O_RDWR>
-
-Both read and write access.
-
-=back
-
-If you want to create the file if it does not exist, add C<O_CREAT> to
-any of these, as in the example. If you omit C<O_CREAT> and the file
-does not already exist, the C<tie> call will fail.
-
-=item 5.
-
-The default permissions to use if a new file is created. The actual
-permissions will be modified by the user's umask, so you should
-probably use 0666 here. (See L<perlfunc/umask>.)
-
-=back
-
-=head1 DIAGNOSTICS
-
-On failure, the C<tie> call returns an undefined value and probably
-sets C<$!> to contain the reason the file could not be tied.
-
-=head2 C<sdbm store returned -1, errno 22, key "..." at ...>
-
-This warning is emmitted when you try to store a key or a value that
-is too long. It means that the change was not recorded in the
-database. See BUGS AND WARNINGS below.
-
-=head1 BUGS AND WARNINGS
-
-There are a number of limits on the size of the data that you can
-store in the SDBM file. The most important is that the length of a
-key, plus the length of its associated value, may not exceed 1008
-bytes.
-
-See L<perlfunc/tie>, L<perldbmfilter>, L<Fcntl>
-
-=cut
diff --git a/Master/perltl/lib/Scalar/Util.pm b/Master/perltl/lib/Scalar/Util.pm
deleted file mode 100644
index e518a4c445a..00000000000
--- a/Master/perltl/lib/Scalar/Util.pm
+++ /dev/null
@@ -1,170 +0,0 @@
-# Scalar::Util.pm
-#
-# Copyright (c) 1997-2001 Graham Barr <gbarr@pobox.com>. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package Scalar::Util;
-
-require Exporter;
-require List::Util; # List::Util loads the XS
-
-our @ISA = qw(Exporter);
-our @EXPORT_OK = qw(blessed dualvar reftype weaken isweak tainted readonly openhandle);
-our $VERSION = $List::Util::VERSION;
-
-sub openhandle ($) {
- my $fh = shift;
- my $rt = reftype($fh) || '';
-
- return defined(fileno($fh)) ? $fh : undef
- if $rt eq 'IO';
-
- if (reftype(\$fh) eq 'GLOB') { # handle openhandle(*DATA)
- $fh = \(my $tmp=$fh);
- }
- elsif ($rt ne 'GLOB') {
- return undef;
- }
-
- (tied(*$fh) or defined(fileno($fh)))
- ? $fh : undef;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Scalar::Util - A selection of general-utility scalar subroutines
-
-=head1 SYNOPSIS
-
- use Scalar::Util qw(blessed dualvar isweak readonly reftype tainted weaken);
-
-=head1 DESCRIPTION
-
-C<Scalar::Util> contains a selection of subroutines that people have
-expressed would be nice to have in the perl core, but the usage would
-not really be high enough to warrant the use of a keyword, and the size
-so small such that being individual extensions would be wasteful.
-
-By default C<Scalar::Util> does not export any subroutines. The
-subroutines defined are
-
-=over 4
-
-=item blessed EXPR
-
-If EXPR evaluates to a blessed reference the name of the package
-that it is blessed into is returned. Otherwise C<undef> is returned.
-
- $scalar = "foo";
- $class = blessed $scalar; # undef
-
- $ref = [];
- $class = blessed $ref; # undef
-
- $obj = bless [], "Foo";
- $class = blessed $obj; # "Foo"
-
-=item dualvar NUM, STRING
-
-Returns a scalar that has the value NUM in a numeric context and the
-value STRING in a string context.
-
- $foo = dualvar 10, "Hello";
- $num = $foo + 2; # 12
- $str = $foo . " world"; # Hello world
-
-=item isweak EXPR
-
-If EXPR is a scalar which is a weak reference the result is true.
-
- $ref = \$foo;
- $weak = isweak($ref); # false
- weaken($ref);
- $weak = isweak($ref); # true
-
-=item openhandle FH
-
-Returns FH if FH may be used as a filehandle and is open, or FH is a tied
-handle. Otherwise C<undef> is returned.
-
- $fh = openhandle(*STDIN); # \*STDIN
- $fh = openhandle(\*STDIN); # \*STDIN
- $fh = openhandle(*NOTOPEN); # undef
- $fh = openhandle("scalar"); # undef
-
-=item readonly SCALAR
-
-Returns true if SCALAR is readonly.
-
- sub foo { readonly($_[0]) }
-
- $readonly = foo($bar); # false
- $readonly = foo(0); # true
-
-=item reftype EXPR
-
-If EXPR evaluates to a reference the type of the variable referenced
-is returned. Otherwise C<undef> is returned.
-
- $type = reftype "string"; # undef
- $type = reftype \$var; # SCALAR
- $type = reftype []; # ARRAY
-
- $obj = bless {}, "Foo";
- $type = reftype $obj; # HASH
-
-=item tainted EXPR
-
-Return true if the result of EXPR is tainted
-
- $taint = tainted("constant"); # false
- $taint = tainted($ENV{PWD}); # true if running under -T
-
-=item weaken REF
-
-REF will be turned into a weak reference. This means that it will not
-hold a reference count on the object it references. Also when the reference
-count on that object reaches zero, REF will be set to undef.
-
-This is useful for keeping copies of references , but you don't want to
-prevent the object being DESTROY-ed at its usual time.
-
- {
- my $var;
- $ref = \$var;
- weaken($ref); # Make $ref a weak reference
- }
- # $ref is now undef
-
-=back
-
-=head1 KNOWN BUGS
-
-There is a bug in perl5.6.0 with UV's that are >= 1<<31. This will
-show up as tests 8 and 9 of dualvar.t failing
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-2001 Graham Barr <gbarr@pobox.com>. All rights reserved.
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-Except weaken and isweak which are
-
-Copyright (c) 1999 Tuomas J. Lukka <lukka@iki.fi>. All rights reserved.
-This program is free software; you can redistribute it and/or modify it
-under the same terms as perl itself.
-
-=head1 BLATANT PLUG
-
-The weaken and isweak subroutines in this module and the patch to the core Perl
-were written in connection with the APress book `Tuomas J. Lukka's Definitive
-Guide to Object-Oriented Programming in Perl', to avoid explaining why certain
-things would have to be done in cumbersome ways.
-
-=cut
diff --git a/Master/perltl/lib/SelectSaver.pm b/Master/perltl/lib/SelectSaver.pm
deleted file mode 100644
index 08104f47d4c..00000000000
--- a/Master/perltl/lib/SelectSaver.pm
+++ /dev/null
@@ -1,54 +0,0 @@
-package SelectSaver;
-
-our $VERSION = '1.00';
-
-=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/Master/perltl/lib/Symbol.pm b/Master/perltl/lib/Symbol.pm
deleted file mode 100644
index 98fb6763fe6..00000000000
--- a/Master/perltl/lib/Symbol.pm
+++ /dev/null
@@ -1,162 +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
-
- # replace *FOO{IO} handle but not $FOO, %FOO, etc.
- *FOO = geniosym;
-
- 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::geniosym> creates an anonymous IO handle. This can be
-assigned into an existing glob without affecting the non-IO portions
-of the glob.
-
-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.005; }
-
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(gensym ungensym qualify qualify_to_ref);
-@EXPORT_OK = qw(delete_package geniosym);
-
-$VERSION = 1.04;
-
-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 geniosym () {
- my $sym = gensym();
- # force the IO slot to be filled
- select(select $sym);
- *$sym{IO};
-}
-
-sub ungensym ($) {}
-
-sub qualify ($;$) {
- my ($name) = @_;
- if (!ref($name) && index($name, '::') == -1 && index($name, "'") == -1) {
- my $pkg;
- # Global names: special character, "^xyz", or other.
- if ($name =~ /^(([^a-z])|(\^[a-z_]+))\z/i || $global{$name}) {
- # RGS 2001-11-05 : translate leading ^X to control-char
- $name =~ s/^\^([a-z_])/'qq(\c'.$1.')'/eei;
- $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/Master/perltl/lib/Term/Cap.pm b/Master/perltl/lib/Term/Cap.pm
deleted file mode 100644
index 03d2573d853..00000000000
--- a/Master/perltl/lib/Term/Cap.pm
+++ /dev/null
@@ -1,651 +0,0 @@
-package Term::Cap;
-
-use Carp;
-use strict;
-
-use vars qw($VERSION $VMS_TERMCAP);
-use vars qw($termpat $state $first $entry);
-
-$VERSION = '1.07';
-
-# Version undef: Thu Dec 14 20:02:42 CST 1995 by sanders@bsdi.com
-# Version 1.00: Thu Nov 30 23:34:29 EST 2000 by schwern@pobox.com
-# [PATCH] $VERSION crusade, strict, tests, etc... all over lib/
-# Version 1.01: Wed May 23 00:00:00 CST 2001 by d-lewart@uiuc.edu
-# Avoid warnings in Tgetent and Tputs
-# Version 1.02: Sat Nov 17 13:50:39 GMT 2001 by jns@gellyfish.com
-# Altered layout of the POD
-# Added Test::More to PREREQ_PM in Makefile.PL
-# Fixed no argument Tgetent()
-# Version 1.03: Wed Nov 28 10:09:38 GMT 2001
-# VMS Support from Charles Lane <lane@DUPHY4.Physics.Drexel.Edu>
-# Version 1.04: Thu Nov 29 16:22:03 GMT 2001
-# Fixed warnings in test
-# Version 1.05: Mon Dec 3 15:33:49 GMT 2001
-# Don't try to fall back on infocmp if it's not there. From chromatic.
-# Version 1.06: Thu Dec 6 18:43:22 GMT 2001
-# Preload the default VMS termcap from Charles Lane
-# Don't carp at setting OSPEED unless warnings are on.
-# Version 1.07: Wed Jan 2 21:35:09 GMT 2002
-# Sanity check on infocmp output from Norton Allen
-# Repaired INSTALLDIRS thanks to Michael Schwern
-
-# 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.
-
-More information on the terminal capabilities will be found in the
-termcap manpage on most Unix-like systems.
-
-=head2 METHODS
-
-=over 4
-
-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.
-
-
-=cut
-
-# Preload the default VMS termcap.
-# If a different termcap is required then the text of one can be supplied
-# in $Term::Cap::VMS_TERMCAP before Tgetent is called.
-
-if ( $^O eq 'VMS') {
- chomp (my @entry = <DATA>);
- $VMS_TERMCAP = join '', @entry;
-}
-
-# 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
- return grep(-f, @termcap_path);
-}
-
-=item 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>.
-
-The 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.
-
-The extracted termcap entry is available in the object
-as C<$self-E<gt>{TERMCAP}>.
-
-It takes a hash reference as an argument with two optional keys:
-
-=over 2
-
-=item OSPEED
-
-The terminal output bit rate (often mistakenly called the baud rate)
-for this terminal - if not set a warning will be generated
-and it will be defaulted to 9600. I<OSPEED> can be be specified as
-either a POSIX termios/SYSV termio speeds (where 9600 equals 9600) or
-an old DSD-style speed ( where 13 equals 9600).
-
-
-=item TERM
-
-The terminal type whose termcap entry will be used - if not supplied it will
-default to $ENV{TERM}: if that is not set then B<Tgetent> will croak.
-
-=back
-
-It calls C<croak> on failure.
-
-=cut
-
-sub Tgetent { ## public -- static method
- my $class = shift;
- my ($self) = @_;
-
- $self = {} unless defined $self;
- bless $self, $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}) {
- if ( $^W ) {
- 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();
-
- unless (@termcap_path || $entry)
- {
- # last resort--fake up a termcap from terminfo
- local $ENV{TERM} = $term;
-
- if ( $^O eq 'VMS' ) {
- $entry = $VMS_TERMCAP;
- }
- else {
- if ( grep { -x "$_/infocmp" } split /:/, $ENV{PATH} ) {
- eval
- {
- my $tmp = `infocmp -C 2>/dev/null`;
-
- if (( $tmp !~ m%^/%s ) && ( $tmp =~ /(^|\|)${termpat}[:|]/s)) {
- $entry = $tmp;
- }
- };
- }
- }
- }
-
- 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 .= $_ if $_;
- };
-
- 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 (defined $field && $field =~ /^(\w\w)$/) {
- $self->{'_' . $field} = 1 unless defined $self->{'_' . $1};
- # print STDERR "DEBUG: flag $1\n";
- }
- elsif (defined $field && $field =~ /^(\w\w)\@/) {
- $self->{'_' . $1} = "";
- # print STDERR "DEBUG: unset $1\n";
- }
- elsif (defined $field && $field =~ /^(\w\w)#(.*)/) {
- $self->{'_' . $1} = $2 unless defined $self->{'_' . $1};
- # print STDERR "DEBUG: numeric $1 = $2\n";
- }
- elsif (defined $field && $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);
-
-=item B<Tpad>
-
-Outputs a literal string with appropriate padding for the current terminal.
-
-It takes three arguments:
-
-=over 2
-
-=item B<$string>
-
-The literal string to be output. If it starts with a number and an optional
-'*' then the padding will be increased by an amount relative to this number,
-if the '*' is present then this amount will me multiplied by $cnt. This part
-of $string is removed before output/
-
-=item B<$cnt>
-
-Will be used to modify the padding applied to string as described above.
-
-=item B<$FH>
-
-An optional filehandle (or IO::Handle ) that output will be printed to.
-
-=back
-
-The padded $string is returned.
-
-=cut
-
-sub Tpad { ## public
- my $self = shift;
- my($string, $cnt, $FH) = @_;
- my($decr, $ms);
-
- if (defined $string && $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);
-
-=item B<Tputs>
-
-Output the string for the given capability padded as appropriate without
-any parameter substitution.
-
-It takes three arguments:
-
-=over 2
-
-=item B<$cap>
-
-The capability whose string is to be output.
-
-=item B<$cnt>
-
-A count passed to Tpad to modify the padding applied to the output string.
-If $cnt is zero or one then the resulting string will be cached.
-
-=item B<$FH>
-
-An optional filehandle (or IO::Handle ) that output will be printed to.
-
-=back
-
-The appropriate string for the capability will be returned.
-
-=cut
-
-sub Tputs { ## public
- my $self = shift;
- my($cap, $cnt, $FH) = @_;
- my $string;
-
- $cnt = 0 unless $cnt;
-
- if ($cnt > 1) {
- $string = Tpad($self, $self->{'_' . $cap}, $cnt);
- } else {
- # cache result because Tpad can be slow
- unless (exists $self->{$cap}) {
- $self->{$cap} = exists $self->{"_$cap"} ?
- Tpad($self, $self->{"_$cap"}, 1) : undef;
- }
- $string = $self->{$cap};
- }
- print $FH $string if $FH;
- $string;
-}
-
-# $terminal->Tgoto($cap, $col, $row, $FH);
-
-=item B<Tgoto>
-
-B<Tgoto> decodes a cursor addressing string with the given parameters.
-
-There are four arguments:
-
-=over 2
-
-=item B<$cap>
-
-The name of the capability to be output.
-
-=item B<$col>
-
-The first value to be substituted in the output string ( usually the column
-in a cursor addressing capability )
-
-=item B<$row>
-
-The second value to be substituted in the output string (usually the row
-in cursor addressing capabilities)
-
-=item B<$FH>
-
-An optional filehandle (or IO::Handle ) to which the output string will be
-printed.
-
-=back
-
-Substitutions are made with $col and $row in the output string with the
-following sprintf() line formats:
-
- %% 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)
-
-The output string will be returned.
-
-=cut
-
-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/);
-
-=item B<Trequire>
-
-Takes a list of capabilities as an argument and will croak if one is not
-found.
-
-=cut
-
-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;
-}
-
-=back
-
-=head1 EXAMPLES
-
- use Term::Cap;
-
- # 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);
-
-=head1 COPYRIGHT AND LICENSE
-
-Please see the README file in distribution.
-
-=head1 AUTHOR
-
-This module is part of the core Perl distribution and is also maintained
-for CPAN by Jonathan Stowe <jns@gellyfish.com>.
-
-=head1 SEE ALSO
-
-termcap(5)
-
-=cut
-
-# Below is a default entry for systems where there are terminals but no
-# termcap
-1;
-__DATA__
-vt220|vt200|DEC VT220 in vt100 emulation mode:
-am:mi:xn:xo:
-co#80:li#24:
-RA=\E[?7l:SA=\E[?7h:
-ac=kkllmmjjnnwwqquuttvvxx:ae=\E(B:al=\E[L:as=\E(0:
-bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:
-cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=\E[B:
-ei=\E[4l:ho=\E[H:im=\E[4h:
-is=\E[1;24r\E[24;1H:
-nd=\E[C:
-kd=\E[B::kl=\E[D:kr=\E[C:ku=\E[A:le=^H:
-mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:
-kb=\0177:
-r2=\E>\E[24;1H\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E=:rc=\E8:
-sc=\E7:se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:
-ue=\E[24m:up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:
-
diff --git a/Master/perltl/lib/Text/ParseWords.pm b/Master/perltl/lib/Text/ParseWords.pm
deleted file mode 100644
index 6949c459378..00000000000
--- a/Master/perltl/lib/Text/ParseWords.pm
+++ /dev/null
@@ -1,263 +0,0 @@
-package Text::ParseWords;
-
-use vars qw($VERSION @ISA @EXPORT $PERL_SINGLE_QUOTE);
-$VERSION = "3.21";
-
-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;
- use re 'taint'; # if it's tainted, leave it as such
-
- 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/Master/perltl/lib/Text/Tabs.pm b/Master/perltl/lib/Text/Tabs.pm
deleted file mode 100644
index b26f8f40548..00000000000
--- a/Master/perltl/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/Master/perltl/lib/Text/Wrap.pm b/Master/perltl/lib/Text/Wrap.pm
deleted file mode 100644
index 8dd1f6c2512..00000000000
--- a/Master/perltl/lib/Text/Wrap.pm
+++ /dev/null
@@ -1,211 +0,0 @@
-package Text::Wrap;
-
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(wrap fill);
-@EXPORT_OK = qw($columns $break $huge);
-
-$VERSION = 2001.0929;
-
-use vars qw($VERSION $columns $debug $break $huge $unexpand $tabstop
- $separator);
-use strict;
-
-BEGIN {
- $columns = 76; # <= screen width
- $debug = 0;
- $break = '\s';
- $huge = 'wrap'; # alternatively: 'die' or 'overflow'
- $unexpand = 1;
- $tabstop = 8;
- $separator = "\n";
-}
-
-use Text::Tabs qw(expand unexpand);
-
-sub wrap
-{
- my ($ip, $xp, @t) = @_;
-
- local($Text::Tabs::tabstop) = $tabstop;
- 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 = "";
-
- use re 'taint';
-
- pos($t) = 0;
- while ($t !~ /\G\s*\Z/gc) {
- if ($t =~ /\G([^\n]{0,$ll})($break|\z)/xmgc) {
- $r .= $unexpand
- ? unexpand($nl . $lead . $1)
- : $nl . $lead . $1;
- $remainder = $2;
- } elsif ($huge eq 'wrap' && $t =~ /\G([^\n]{$ll})/gc) {
- $r .= $unexpand
- ? unexpand($nl . $lead . $1)
- : $nl . $lead . $1;
- $remainder = $separator;
- } elsif ($huge eq 'overflow' && $t =~ /\G([^\n]*?)($break|\z)/xmgc) {
- $r .= $unexpand
- ? unexpand($nl . $lead . $1)
- : $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 = $separator;
- }
- $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
-
-C<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.
-
-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().
-
-=head1 OVERRIDES
-
-C<Text::Wrap::wrap()> has a number of variables that control its behavior.
-Because other modules might be using C<Text::Wrap::wrap()> it is suggested
-that you leave these variables alone! If you can't do that, then
-use C<local($Text::Wrap::VARIABLE) = YOURVALUE> when you change the
-values so that the original value is restored. This C<local()> trick
-will not work if you import the variable into your own namespace.
-
-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>.
-
-It is possible to control which characters terminate words by
-modifying C<$Text::Wrap::break>. Set this to a string such as
-C<'[\s:]'> (to break before spaces or colons) or a pre-compiled regexp
-such as C<qr/[\s']/> (to break before spaces or apostrophes). The
-default is simply C<'\s'>; that is, words are terminated by spaces.
-(This means, among other things, that trailing punctuation such as
-full stops or commas stay with the word they are "attached" to.)
-
-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.
-
-C<Text::Wrap::wrap()> starts its work by expanding all the tabs in its
-input into spaces. The last thing it does it to turn spaces back
-into tabs. If you do not want tabs in your results, set
-C<$Text::Wrap::unexapand> to a false value. Likewise if you do not
-want to use 8-character tabstops, set C<$Text::Wrap::tabstop> to
-the number of characters you do want for your tabstops.
-
-If you want to separate your lines with something other than C<\n>
-then set C<$Text::Wrap::seporator> to your preference.
-
-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.
-
-Historical notes: '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/Master/perltl/lib/Tie/Hash.pm b/Master/perltl/lib/Tie/Hash.pm
deleted file mode 100644
index 282006984b9..00000000000
--- a/Master/perltl/lib/Tie/Hash.pm
+++ /dev/null
@@ -1,243 +0,0 @@
-package Tie::Hash;
-
-our $VERSION = '1.00';
-
-=head1 NAME
-
-Tie::Hash, Tie::StdHash, Tie::ExtraHash - 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
- # Accessors access the storage in %{$_[0]};
- # TIEHANDLE should return a reference to the actual storage
- sub DELETE { ... }
-
- package NewExtraHash;
- require Tie::Hash;
-
- @ISA = (Tie::ExtraHash);
-
- # All methods provided by default, define only those needing overrides
- # Accessors access the storage in %{$_[0][0]};
- # TIEHANDLE should return an array reference with the first element being
- # the reference to the actual storage
- sub DELETE {
- $_[0][1]->('del', $_[0][0], $_[1]); # Call the report writer
- delete $_[0][0]->{$_[1]}; # $_[0]->SUPER::DELETE($_[1]) }
-
-
- package main;
-
- tie %new_hash, 'NewHash';
- tie %new_std_hash, 'NewStdHash';
- tie %new_extra_hash, 'NewExtraHash',
- sub {warn "Doing \U$_[1]\E of $_[2].\n"};
-
-=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> and
-B<Tie::ExtraHash> packages
-provide most methods for hashes described in L<perltie> (the exceptions
-are C<UNTIE> and C<DESTROY>). They cause tied hashes to behave exactly like standard hashes,
-and allow for selective overwriting of methods. B<Tie::Hash> grandfathers the
-C<new> method: it is used if C<TIEHASH> is not defined
-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 4
-
-=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 first key in the hash.
-
-=item NEXTKEY this, lastkey
-
-Return the next key in 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 Inheriting from B<Tie::StdHash>
-
-The accessor methods assume that the actual storage for the data in the tied
-hash is in the hash referenced by C<tied(%tiedhash)>. Thus overwritten
-C<TIEHANDLE> method should return a hash reference, and the remaining methods
-should operate on the hash referenced by the first argument:
-
- package ReportHash;
- our @ISA = 'Tie::StdHash';
-
- sub TIEHASH {
- my $storage = bless {}, shift;
- warn "New ReportHash created, stored in $storage.\n";
- $storage
- }
- sub STORE {
- warn "Storing data with key $_[1] at $_[0].\n";
- $_[0]{$_[1]} = $_[2]
- }
-
-
-=head1 Inheriting from B<Tie::ExtraHash>
-
-The accessor methods assume that the actual storage for the data in the tied
-hash is in the hash referenced by C<(tied(%tiedhash))[0]>. Thus overwritten
-C<TIEHANDLE> method should return an array reference with the first
-element being a hash reference, and the remaining methods should operate on the
-hash C<< %{ $_[0]->[0] } >>:
-
- package ReportHash;
- our @ISA = 'Tie::StdHash';
-
- sub TIEHASH {
- my $storage = bless {}, shift;
- warn "New ReportHash created, stored in $storage.\n";
- [$storage, @_]
- }
- sub STORE {
- warn "Storing data with key $_[1] at $_[0].\n";
- $_[0][0]{$_[1]} = $_[2]
- }
-
-The default C<TIEHANDLE> method stores "extra" arguments to tie() starting
-from offset 1 in the array referenced by C<tied(%tiedhash)>; this is the
-same storage algorithm as in TIEHASH subroutine above. Hence, a typical
-package inheriting from B<Tie::ExtraHash> does not need to overwrite this
-method.
-
-=head1 C<UNTIE> and C<DESTROY>
-
-The methods C<UNTIE> and C<DESTROY> are not defined in B<Tie::Hash>,
-B<Tie::StdHash>, or B<Tie::ExtraHash>. Tied hashes do not require
-presense of these methods, but if defined, the methods will be called in
-proper time, see L<perltie>.
-
-If needed, these methods should be defined by the package inheriting from
-B<Tie::Hash>, B<Tie::StdHash>, or B<Tie::ExtraHash>.
-
-=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); # would inherit new() only
-
-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]} = () }
-
-package Tie::ExtraHash;
-
-sub TIEHASH { my $p = shift; bless [{}, @_], $p }
-sub STORE { $_[0][0]{$_[1]} = $_[2] }
-sub FETCH { $_[0][0]{$_[1]} }
-sub FIRSTKEY { my $a = scalar keys %{$_[0][0]}; each %{$_[0][0]} }
-sub NEXTKEY { each %{$_[0][0]} }
-sub EXISTS { exists $_[0][0]->{$_[1]} }
-sub DELETE { delete $_[0][0]->{$_[1]} }
-sub CLEAR { %{$_[0][0]} = () }
-
-1;
diff --git a/Master/perltl/lib/Tie/Scalar.pm b/Master/perltl/lib/Tie/Scalar.pm
deleted file mode 100644
index c23c12187a8..00000000000
--- a/Master/perltl/lib/Tie/Scalar.pm
+++ /dev/null
@@ -1,140 +0,0 @@
-package Tie::Scalar;
-
-our $VERSION = '1.00';
-
-=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 4
-
-=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 ($pkg->can('new') and $pkg ne __PACKAGE__) {
- 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/Master/perltl/lib/Time/HiRes.pm b/Master/perltl/lib/Time/HiRes.pm
deleted file mode 100644
index 63375320408..00000000000
--- a/Master/perltl/lib/Time/HiRes.pm
+++ /dev/null
@@ -1,357 +0,0 @@
-package Time::HiRes;
-
-use strict;
-use vars qw($VERSION $XS_VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD);
-
-require Exporter;
-use XSLoader;
-
-@ISA = qw(Exporter);
-
-@EXPORT = qw( );
-@EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval
- getitimer setitimer ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF);
-
-$VERSION = '1.20_00';
-$XS_VERSION = $VERSION;
-$VERSION = eval $VERSION;
-
-sub AUTOLOAD {
- my $constname;
- ($constname= $AUTOLOAD) =~ s/.*:://;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($!) {
- my ($pack,$file,$line) = caller;
- die "Your vendor has not defined Time::HiRes macro $constname, used at $file line $line.\n";
- }
- {
- no strict 'refs';
- *$AUTOLOAD = sub { $val };
- }
- goto &$AUTOLOAD;
-}
-
-XSLoader::load 'Time::HiRes', $XS_VERSION;
-
-# Preloaded methods go here.
-
-sub tv_interval {
- # probably could have been done in C
- my ($a, $b) = @_;
- $b = [gettimeofday()] unless defined($b);
- (${$b}[0] - ${$a}[0]) + ((${$b}[1] - ${$a}[1]) / 1_000_000);
-}
-
-# Autoload methods go after =cut, and are processed by the autosplit program.
-
-1;
-__END__
-
-=head1 NAME
-
-Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers
-
-=head1 SYNOPSIS
-
- use Time::HiRes qw( usleep ualarm gettimeofday tv_interval );
-
- usleep ($microseconds);
-
- ualarm ($microseconds);
- ualarm ($microseconds, $interval_microseconds);
-
- $t0 = [gettimeofday];
- ($seconds, $microseconds) = gettimeofday;
-
- $elapsed = tv_interval ( $t0, [$seconds, $microseconds]);
- $elapsed = tv_interval ( $t0, [gettimeofday]);
- $elapsed = tv_interval ( $t0 );
-
- use Time::HiRes qw ( time alarm sleep );
-
- $now_fractions = time;
- sleep ($floating_seconds);
- alarm ($floating_seconds);
- alarm ($floating_seconds, $floating_interval);
-
- use Time::HiRes qw( setitimer getitimer
- ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF );
-
- setitimer ($which, $floating_seconds, $floating_interval );
- getitimer ($which);
-
-=head1 DESCRIPTION
-
-The C<Time::HiRes> module implements a Perl interface to the usleep,
-ualarm, gettimeofday, and setitimer/getitimer system calls. See the
-EXAMPLES section below and the test scripts for usage; see your system
-documentation for the description of the underlying usleep, ualarm,
-gettimeofday, and setitimer/getitimer calls.
-
-If your system lacks gettimeofday(2) or an emulation of it you don't
-get gettimeofday() or the one-arg form of tv_interval().
-If you don't have usleep(3) or select(2) you don't get usleep()
-or sleep(). If your system don't have ualarm(3) or setitimer(2) you
-don't get ualarm() or alarm(). If you try to import an unimplemented
-function in the C<use> statement it will fail at compile time.
-
-The following functions can be imported from this module.
-No functions are exported by default.
-
-=over 4
-
-=item gettimeofday ()
-
-In array context returns a 2 element array with the seconds and
-microseconds since the epoch. In scalar context returns floating
-seconds like Time::HiRes::time() (see below).
-
-=item usleep ( $useconds )
-
-Sleeps for the number of microseconds specified. Returns the number
-of microseconds actually slept. Can sleep for more than one second
-unlike the usleep system call. See also Time::HiRes::sleep() below.
-
-=item ualarm ( $useconds [, $interval_useconds ] )
-
-Issues a ualarm call; interval_useconds is optional and will be 0 if
-unspecified, resulting in alarm-like behaviour.
-
-=item tv_interval
-
-C<tv_interval ( $ref_to_gettimeofday [, $ref_to_later_gettimeofday] )>
-
-Returns the floating seconds between the two times, which should have
-been returned by gettimeofday(). If the second argument is omitted,
-then the current time is used.
-
-=item time ()
-
-Returns a floating seconds since the epoch. This function can be
-imported, resulting in a nice drop-in replacement for the C<time>
-provided with core Perl, see the EXAMPLES below.
-
-B<NOTE 1>: this higher resolution timer can return values either less or
-more than the core time(), depending on whether your platforms rounds
-the higher resolution timer values up, down, or to the nearest to get
-the core time(), but naturally the difference should be never more than
-half a second.
-
-B<NOTE 2>: Since Sunday, September 9th, 2001 at 01:46:40 AM GMT
-(when the time() seconds since epoch rolled over to 1_000_000_000),
-the default floating point format of Perl and the seconds since epoch
-have conspired to produce an apparent bug: if you print the value of
-Time::HiRes::time() you seem to be getting only five decimals, not six
-as promised (microseconds). Not to worry, the microseconds are there
-(assuming your platform supports such granularity). What is going on
-is that the default floating point format of Perl only outputs 15
-digits. In this case that means ten digits before the decimal
-separator and five after. To see the microseconds you can use either
-printf/sprintf with C<%.6f>, or the gettimeofday() function in list
-context, which will give you the seconds and microseconds as two
-separate values.
-
-=item sleep ( $floating_seconds )
-
-Sleeps for the specified amount of seconds. Returns the number of
-seconds actually slept (a floating point value). This function can be
-imported, resulting in a nice drop-in replacement for the C<sleep>
-provided with perl, see the EXAMPLES below.
-
-=item alarm ( $floating_seconds [, $interval_floating_seconds ] )
-
-The SIGALRM signal is sent after the specfified number of seconds.
-Implemented using ualarm(). The $interval_floating_seconds argument
-is optional and will be 0 if unspecified, resulting in alarm()-like
-behaviour. This function can be imported, resulting in a nice drop-in
-replacement for the C<alarm> provided with perl, see the EXAMPLES below.
-
-=item setitimer
-
-C<setitimer ( $which, $floating_seconds [, $interval_floating_seconds ] )>
-
-Start up an interval timer: after a certain time, a signal arrives,
-and more signals may keep arriving at certain intervals. To disable
-a timer, use time of zero. If interval is set to zero (or unspecified),
-the timer is disabled B<after> the next delivered signal.
-
-Use of interval timers may interfere with alarm(), sleep(), and usleep().
-In standard-speak the "interaction is unspecified", which means that
-I<anything> may happen: it may work, it may not.
-
-In scalar context, the remaining time in the timer is returned.
-
-In list context, both the remaining time and the interval are returned.
-
-There are three interval timers: the $which can be ITIMER_REAL,
-ITIMER_VIRTUAL, or ITIMER_PROF.
-
-ITIMER_REAL results in alarm()-like behavior. Time is counted in
-I<real time>, that is, wallclock time. SIGALRM is delivered when
-the timer expires.
-
-ITIMER_VIRTUAL counts time in (process) I<virtual time>, that is, only
-when the process is running. In multiprocessor/user/CPU systems this
-may be more or less than real or wallclock time. (This time is also
-known as the I<user time>.) SIGVTALRM is delivered when the timer expires.
-
-ITIMER_PROF counts time when either the process virtual time or when
-the operating system is running on behalf of the process (such as
-I/O). (This time is also known as the I<system time>.) (Collectively
-these times are also known as the I<CPU time>.) SIGPROF is delivered
-when the timer expires. SIGPROF can interrupt system calls.
-
-The semantics of interval timers for multithreaded programs are
-system-specific, and some systems may support additional interval
-timers. See your setitimer() documentation.
-
-=item getitimer ( $which )
-
-Return the remaining time in the interval timer specified by $which.
-
-In scalar context, the remaining time is returned.
-
-In list context, both the remaining time and the interval are returned.
-The interval is always what you put in using setitimer().
-
-=back
-
-=head1 EXAMPLES
-
- use Time::HiRes qw(usleep ualarm gettimeofday tv_interval);
-
- $microseconds = 750_000;
- usleep $microseconds;
-
- # signal alarm in 2.5s & every .1s thereafter
- ualarm 2_500_000, 100_000;
-
- # get seconds and microseconds since the epoch
- ($s, $usec) = gettimeofday;
-
- # measure elapsed time
- # (could also do by subtracting 2 gettimeofday return values)
- $t0 = [gettimeofday];
- # do bunch of stuff here
- $t1 = [gettimeofday];
- # do more stuff here
- $t0_t1 = tv_interval $t0, $t1;
-
- $elapsed = tv_interval ($t0, [gettimeofday]);
- $elapsed = tv_interval ($t0); # equivalent code
-
- #
- # replacements for time, alarm and sleep that know about
- # floating seconds
- #
- use Time::HiRes;
- $now_fractions = Time::HiRes::time;
- Time::HiRes::sleep (2.5);
- Time::HiRes::alarm (10.6666666);
-
- use Time::HiRes qw ( time alarm sleep );
- $now_fractions = time;
- sleep (2.5);
- alarm (10.6666666);
-
- # Arm an interval timer to go off first at 10 seconds and
- # after that every 2.5 seconds, in process virtual time
-
- use Time::HiRes qw ( setitimer ITIMER_VIRTUAL time );
-
- $SIG{VTLARM} = sub { print time, "\n" };
- setitimer(ITIMER_VIRTUAL, 10, 2.5);
-
-=head1 C API
-
-In addition to the perl API described above, a C API is available for
-extension writers. The following C functions are available in the
-modglobal hash:
-
- name C prototype
- --------------- ----------------------
- Time::NVtime double (*)()
- Time::U2time void (*)(UV ret[2])
-
-Both functions return equivalent information (like C<gettimeofday>)
-but with different representations. The names C<NVtime> and C<U2time>
-were selected mainly because they are operating system independent.
-(C<gettimeofday> is Un*x-centric.)
-
-Here is an example of using NVtime from C:
-
- double (*myNVtime)();
- SV **svp = hv_fetch(PL_modglobal, "Time::NVtime", 12, 0);
- if (!svp) croak("Time::HiRes is required");
- if (!SvIOK(*svp)) croak("Time::NVtime isn't a function pointer");
- myNVtime = INT2PTR(double(*)(), SvIV(*svp));
- printf("The current time is: %f\n", (*myNVtime)());
-
-=head1 CAVEATS
-
-Notice that the core time() maybe rounding rather than truncating.
-What this means that the core time() may be giving time one second
-later than gettimeofday(), also known as Time::HiRes::time().
-
-=head1 AUTHORS
-
-D. Wegscheid <wegscd@whirlpool.com>
-R. Schertler <roderick@argon.org>
-J. Hietaniemi <jhi@iki.fi>
-G. Aas <gisle@aas.no>
-
-=head1 REVISION
-
-$Id: HiRes.pm,v 1.20 1999/03/16 02:26:13 wegscd Exp $
-
-$Log: HiRes.pm,v $
-Revision 1.20 1999/03/16 02:26:13 wegscd
-Add documentation for NVTime and U2Time.
-
-Revision 1.19 1998/09/30 02:34:42 wegscd
-No changes, bump version.
-
-Revision 1.18 1998/07/07 02:41:35 wegscd
-No changes, bump version.
-
-Revision 1.17 1998/07/02 01:45:13 wegscd
-Bump version to 1.17
-
-Revision 1.16 1997/11/13 02:06:36 wegscd
-version bump to accomodate HiRes.xs fix.
-
-Revision 1.15 1997/11/11 02:17:59 wegscd
-POD editing, courtesy of Gisle Aas.
-
-Revision 1.14 1997/11/06 03:14:35 wegscd
-Update version # for Makefile.PL and HiRes.xs changes.
-
-Revision 1.13 1997/11/05 05:36:25 wegscd
-change version # for Makefile.pl and HiRes.xs changes.
-
-Revision 1.12 1997/10/13 20:55:33 wegscd
-Force a new version for Makefile.PL changes.
-
-Revision 1.11 1997/09/05 19:59:33 wegscd
-New version to bump version for README and Makefile.PL fixes.
-Fix bad RCS log.
-
-Revision 1.10 1997/05/23 01:11:38 wegscd
-Conditional compilation; EXPORT_FAIL fixes.
-
-Revision 1.2 1996/12/30 13:28:40 wegscd
-Update documentation for what to do when missing ualarm() and friends.
-
-Revision 1.1 1996/10/17 20:53:31 wegscd
-Fix =head1 being next to __END__ so pod2man works
-
-Revision 1.0 1996/09/03 18:25:15 wegscd
-Initial revision
-
-=head1 COPYRIGHT
-
-Copyright (c) 1996-1997 Douglas E. Wegscheid.
-All rights reserved. This program is free software; you can
-redistribute it and/or modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/perltl/lib/Time/Local.pm b/Master/perltl/lib/Time/Local.pm
deleted file mode 100644
index faef1d78694..00000000000
--- a/Master/perltl/lib/Time/Local.pm
+++ /dev/null
@@ -1,255 +0,0 @@
-package Time::Local;
-use 5.006;
-require Exporter;
-use Carp;
-use Config;
-use strict;
-use integer;
-
-our $VERSION = '1.04';
-our @ISA = qw( Exporter );
-our @EXPORT = qw( timegm timelocal );
-our @EXPORT_OK = qw( timegm_nocheck timelocal_nocheck );
-
-my @MonthDays = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
-
-# Determine breakpoint for rolling century
-my $ThisYear = (localtime())[5];
-my $Breakpoint = ($ThisYear + 50) % 100;
-my $NextCentury = $ThisYear - $ThisYear % 100;
- $NextCentury += 100 if $Breakpoint < 50;
-my $Century = $NextCentury - 100;
-my $SecOff = 0;
-
-my (%Options, %Cheat);
-
-my $MaxInt = ((1<<(8 * $Config{intsize} - 2))-1)*2 + 1;
-my $MaxDay = int(($MaxInt-43200)/86400)-1;
-
-# Determine the EPOC day for this machine
-my $Epoc = 0;
-if ($^O eq 'vos') {
-# work around posix-977 -- VOS doesn't handle dates in
-# the range 1970-1980.
- $Epoc = _daygm((0, 0, 0, 1, 0, 70, 4, 0));
-}
-elsif ($^O eq 'MacOS') {
- no integer;
-
- $MaxDay *=2 if $^O eq 'MacOS'; # time_t unsigned ... quick hack?
- # MacOS time() is seconds since 1 Jan 1904, localtime
- # so we need to calculate an offset to apply later
- $Epoc = 693901;
- $SecOff = timelocal(localtime(0)) - timelocal(gmtime(0));
- $Epoc += _daygm(gmtime(0));
-}
-else {
- $Epoc = _daygm(gmtime(0));
-}
-
-%Cheat=(); # clear the cache as epoc has changed
-
-sub _daygm {
- $_[3] + ($Cheat{pack("ss",@_[4,5])} ||= do {
- my $month = ($_[4] + 10) % 12;
- my $year = $_[5] + 1900 - $month/10;
- 365*$year + $year/4 - $year/100 + $year/400 + ($month*306 + 5)/10 - $Epoc
- });
-}
-
-
-sub _timegm {
- my $sec = $SecOff + $_[0] + 60 * $_[1] + 3600 * $_[2];
-
- no integer;
-
- $sec + 86400 * &_daygm;
-}
-
-
-sub timegm {
- my ($sec,$min,$hour,$mday,$month,$year) = @_;
-
- if ($year >= 1000) {
- $year -= 1900;
- }
- elsif ($year < 100 and $year >= 0) {
- $year += ($year > $Breakpoint) ? $Century : $NextCentury;
- }
-
- unless ($Options{no_range_check}) {
- if (abs($year) >= 0x7fff) {
- $year += 1900;
- croak "Cannot handle date ($sec, $min, $hour, $mday, $month, $year)";
- }
-
- croak "Month '$month' out of range 0..11" if $month > 11 or $month < 0;
-
- my $md = $MonthDays[$month];
- ++$md unless $month != 1 or $year % 4 or !($year % 400);
-
- croak "Day '$mday' out of range 1..$md" if $mday > $md or $mday < 1;
- croak "Hour '$hour' out of range 0..23" if $hour > 23 or $hour < 0;
- croak "Minute '$min' out of range 0..59" if $min > 59 or $min < 0;
- croak "Second '$sec' out of range 0..59" if $sec > 59 or $sec < 0;
- }
-
- my $days = _daygm(undef, undef, undef, $mday, $month, $year);
-
- unless ($Options{no_range_check} or abs($days) < $MaxDay) {
- $year += 1900;
- croak "Cannot handle date ($sec, $min, $hour, $mday, $month, $year)";
- }
-
- $sec += $SecOff + 60*$min + 3600*$hour;
-
- no integer;
-
- $sec + 86400*$days;
-}
-
-
-sub timegm_nocheck {
- local $Options{no_range_check} = 1;
- &timegm;
-}
-
-
-sub timelocal {
- no integer;
- my $ref_t = &timegm;
- my $loc_t = _timegm(localtime($ref_t));
-
- # Is there a timezone offset from GMT or are we done
- my $zone_off = $ref_t - $loc_t
- or return $loc_t;
-
- # Adjust for timezone
- $loc_t = $ref_t + $zone_off;
-
- # Are we close to a DST change or are we done
- my $dst_off = $ref_t - _timegm(localtime($loc_t))
- or return $loc_t;
-
- # Adjust for DST change
- $loc_t + $dst_off;
-}
-
-
-sub timelocal_nocheck {
- local $Options{no_range_check} = 1;
- &timelocal;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Time::Local - efficiently compute time from local and GMT time
-
-=head1 SYNOPSIS
-
- $time = timelocal($sec,$min,$hour,$mday,$mon,$year);
- $time = timegm($sec,$min,$hour,$mday,$mon,$year);
-
-=head1 DESCRIPTION
-
-These routines are the inverse of built-in perl functions 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. The value for the day of the month is the actual day
-(ie 1..31), while the month is the number of months since January (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, $hour, $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
-are calculated using a mathematical formula. Unlike other algorithms
-that do multiple calls to gmtime().
-
-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.
-
-=head1 BUGS
-
-The whole scheme for interpreting two-digit years can be considered a bug.
-
-The proclivity to croak() is probably a bug.
-
-=cut
-
diff --git a/Master/perltl/lib/UNIVERSAL.pm b/Master/perltl/lib/UNIVERSAL.pm
deleted file mode 100644
index 92b4fcd352a..00000000000
--- a/Master/perltl/lib/UNIVERSAL.pm
+++ /dev/null
@@ -1,118 +0,0 @@
-package UNIVERSAL;
-
-our $VERSION = '1.00';
-
-# 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 can't be fixed without breaking code. Note that we
-# *don't* set @ISA here, don't want all classes/objects inheriting from
-# Exporter. It's bad enough that all classes have a import() method
-# whenever UNIVERSAL.pm is loaded.
-require Exporter;
-*import = \&Exporter::import;
-@EXPORT_OK = qw(isa can VERSION);
-
-1;
-__END__
-
-=head1 NAME
-
-UNIVERSAL - base class for ALL classes (blessed references)
-
-=head1 SYNOPSIS
-
- $is_io = $fd->isa("IO::Handle");
- $is_io = Class->isa("IO::Handle");
-
- $sub = $obj->can("print");
- $sub = Class->can("print");
-
- use UNIVERSAL qw( isa can VERSION );
- $yes = isa $ref, "HASH" ;
- $sub = can $ref, "fandango" ;
- $ver = VERSION $obj ;
-
-=head1 DESCRIPTION
-
-C<UNIVERSAL> is the base class which all bless references will inherit from,
-see L<perlobj>.
-
-C<UNIVERSAL> provides the following methods and functions:
-
-=over 4
-
-=item $obj->isa( TYPE ), CLASS->isa( TYPE ), isa( VAL, TYPE )
-
- C<TYPE> is a package name
- $obj is a blessed reference or a string containing a package name
- C<CLASS> is a package name
- C<VAL> is any of the above or an unblessed reference
-
-When used as an instance or class method (C<$obj->isa( TYPE )>), C<isa>
-returns I<true> if $obj is blessed into package C<TYPE> or inherits from
-package C<TYPE>.
-
-When used as a class method (C<CLASS->isa( TYPE )>; sometimes referred to as a
-static method), C<isa> returns I<true> if C<CLASS> inherits from (or is itself)
-the name of the package C<TYPE> or inherits from package C<TYPE>.
-
-When used as a function, like
-
- use UNIVERSAL qw( isa ) ;
- $yes = isa $h, "HASH";
- $yes = isa "Foo", "Bar";
-
-or
-
- require UNIVERSAL ;
- $yes = UNIVERSAL::isa $a, "ARRAY";
-
-, C<isa> returns I<true> in the same cases as above and also if C<VAL> is an
-unblessed reference to a perl variable of type C<TYPE>, such as "HASH",
-"ARRAY", or "Regexp".
-
-=item $obj->can( METHOD ), CLASS->can( METHOD ), can( VAL, METHOD )
-
-C<can> checks if the object or class 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. This includes methods inherited or imported by C<$obj>, C<CLASS>, or
-C<VAL>.
-
-C<can> cannot know whether an object will be able to provide a method
-through AUTOLOAD, so a return value of I<undef> does not necessarily mean
-the object will not be able to handle the method call. To get around
-this some module authors use a forward declaration (see L<perlsub>)
-for methods they will handle via AUTOLOAD. For such 'dummy' subs, C<can>
-will still return a code reference, which, when called, will fall through
-to the AUTOLOAD. If no suitable AUTOLOAD is provided, calling the coderef
-will cause an error.
-
-C<can> can be called as a class (static) method, an object method, or a
-function.
-
-When used as a function, if C<VAL> is a blessed reference or package name 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.
-
-=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 class (static) method, an object method or
-or a function.
-
-
-=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/Master/perltl/lib/XSLoader.pm b/Master/perltl/lib/XSLoader.pm
deleted file mode 100644
index c5b3300a458..00000000000
--- a/Master/perltl/lib/XSLoader.pm
+++ /dev/null
@@ -1,138 +0,0 @@
-# Generated from XSLoader.pm.PL (resolved %Config::Config value)
-
-package XSLoader;
-
-# And Gandalf said: 'Many folk like to know beforehand what is to
-# be set on the table; but those who have laboured to prepare the
-# feast like to keep their secret; for wonder makes the words of
-# praise louder.'
-
-# (Quote from Tolkien sugested by Anno Siegel.)
-#
-# See pod text at end of file for documentation.
-# See also ext/DynaLoader/README in source tree for other information.
-#
-# Tim.Bunce@ig.co.uk, August 1994
-
-$VERSION = "0.01"; # avoid typo warning
-
-# enable debug/trace messages from DynaLoader perl code
-# $dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug;
-
- my $dl_dlext = 'dll';
-
-package DynaLoader;
-
-# No prizes for guessing why we don't say 'bootstrap DynaLoader;' here.
-# NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB
-boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) &&
- !defined(&dl_error);
-package XSLoader;
-
-1; # End of main code
-
-# The bootstrap function cannot be autoloaded (without complications)
-# so we define it here:
-
-sub load {
- package DynaLoader;
-
- my($module) = $_[0];
-
- # work with static linking too
- my $b = "$module\::bootstrap";
- goto &$b if defined &$b;
-
- goto retry unless $module and defined &dl_load_file;
-
- my @modparts = split(/::/,$module);
- my $modfname = $modparts[-1];
-
- my $modpname = join('/',@modparts);
- my $modlibname = (caller())[1];
- my $c = @modparts;
- $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename
- my $file = "$modlibname/auto/$modpname/$modfname.$dl_dlext";
-
-# print STDERR "XSLoader::load for $module ($file)\n" if $dl_debug;
-
- my $bs = $file;
- $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library
-
- goto retry if not -f $file or -s $bs;
-
- my $bootname = "boot_$module";
- $bootname =~ s/\W/_/g;
- @dl_require_symbols = ($bootname);
-
- my $boot_symbol_ref;
-
- if ($^O eq 'darwin') {
- if ($boot_symbol_ref = dl_find_symbol(0, $bootname)) {
- goto boot; #extension library has already been loaded, e.g. darwin
- }
- }
-
- # Many dynamic extension loading problems will appear to come from
- # this section of code: XYZ failed at line 123 of DynaLoader.pm.
- # Often these errors are actually occurring in the initialisation
- # C code of the extension XS file. Perl reports the error as being
- # in this perl code simply because this was the last perl code
- # it executed.
-
- my $libref = dl_load_file($file, 0) or do {
- require Carp;
- Carp::croak("Can't load '$file' for module $module: " . dl_error());
- };
- push(@dl_librefs,$libref); # record loaded object
-
- my @unresolved = dl_undef_symbols();
- if (@unresolved) {
- require Carp;
- Carp::carp("Undefined symbols present after loading $file: @unresolved\n");
- }
-
- $boot_symbol_ref = dl_find_symbol($libref, $bootname) or do {
- require Carp;
- Carp::croak("Can't find '$bootname' symbol in $file\n");
- };
-
- push(@dl_modules, $module); # record loaded module
-
- boot:
- my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file);
-
- # See comment block above
- return &$xs(@_);
-
- retry:
- require DynaLoader;
- goto &DynaLoader::bootstrap_inherit;
-}
-
-__END__
-
-=head1 NAME
-
-XSLoader - Dynamically load C libraries into Perl code
-
-=head1 SYNOPSIS
-
- package YourPackage;
- use XSLoader;
-
- XSLoader::load 'YourPackage', @args;
-
-=head1 DESCRIPTION
-
-This module defines a standard I<simplified> interface to the dynamic
-linking mechanisms available on many platforms. Its primary purpose is
-to implement cheap automatic dynamic loading of Perl modules.
-
-For more complicated interface see L<DynaLoader>.
-
-=head1 AUTHOR
-
-Ilya Zakharevich: extraction from DynaLoader.
-
-=cut
diff --git a/Master/perltl/lib/attributes.pm b/Master/perltl/lib/attributes.pm
deleted file mode 100644
index 2dacd02751e..00000000000
--- a/Master/perltl/lib/attributes.pm
+++ /dev/null
@@ -1,414 +0,0 @@
-package attributes;
-
-our $VERSION = 0.05;
-
-@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 attributes }
-
-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 = 1;
- 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 ();
- my ($x,@y,%z);
- attributes::->import(__PACKAGE__, \$x, 'Bent');
- attributes::->import(__PACKAGE__, \@y, 'Bent');
- attributes::->import(__PACKAGE__, \%z, 'Bent');
- ($x,@y,%z) = 1;
-
-Yes, that's a lot of expansion.
-
-B<WARNING>: attribute declarations for variables are still evolving.
-The semantics and interfaces of such declarations could change 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 subroutine attributes happens at compile time.
-Variable attributes in C<our> declarations are also applied at compile time.
-However, C<my> variables get their attributes applied at run-time.
-This means that you have to I<reach> the run-time component of the C<my>
-before those attributes will get applied. For example:
-
- my $x : Bent = 42 if 0;
-
-will neither assign 42 to $x I<nor> will it apply the C<Bent> attribute
-to the variable.
-
-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
-
-For global variables there is C<unique> attribute: see L<perlfunc/our>.
-
-=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 ();
- attributes::->import(Canine => \$spot, "Watchful");
-
-=item 2.
-
-Code:
-
- package Felis;
- my $cat : Nervous;
-
-Effect:
-
- use attributes ();
- attributes::->import(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/Master/perltl/lib/auto/B/B.dll b/Master/perltl/lib/auto/B/B.dll
deleted file mode 100644
index 78e25799a7e..00000000000
--- a/Master/perltl/lib/auto/B/B.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/Cwd/Cwd.dll b/Master/perltl/lib/auto/Cwd/Cwd.dll
deleted file mode 100644
index e06e55e5288..00000000000
--- a/Master/perltl/lib/auto/Cwd/Cwd.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/Data/Dumper/Dumper.dll b/Master/perltl/lib/auto/Data/Dumper/Dumper.dll
deleted file mode 100644
index f6bbfbc9e70..00000000000
--- a/Master/perltl/lib/auto/Data/Dumper/Dumper.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/Digest/MD5/MD5.dll b/Master/perltl/lib/auto/Digest/MD5/MD5.dll
deleted file mode 100644
index 4892ae02cec..00000000000
--- a/Master/perltl/lib/auto/Digest/MD5/MD5.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/DynaLoader/autosplit.ix b/Master/perltl/lib/auto/DynaLoader/autosplit.ix
deleted file mode 100644
index d7605efa074..00000000000
--- a/Master/perltl/lib/auto/DynaLoader/autosplit.ix
+++ /dev/null
@@ -1,8 +0,0 @@
-# Index created by AutoSplit for ../LIB\DynaLoader.pm
-# (file acts as timestamp)
-package DynaLoader;
-sub dl_findfile ;
-sub dl_expandspec ;
-sub dl_find_symbol_anywhere
-;
-1;
diff --git a/Master/perltl/lib/auto/DynaLoader/dl_expandspec.al b/Master/perltl/lib/auto/DynaLoader/dl_expandspec.al
deleted file mode 100644
index 2943afff245..00000000000
--- a/Master/perltl/lib/auto/DynaLoader/dl_expandspec.al
+++ /dev/null
@@ -1,34 +0,0 @@
-# NOTE: Derived from ../LIB\DynaLoader.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package DynaLoader;
-
-#line 373 "../LIB\DynaLoader.pm (autosplit into ..\lib\auto\DynaLoader\dl_expandspec.al)"
-sub dl_expandspec {
- my($spec) = @_;
- # Optional function invoked if DynaLoader.pm sets $do_expand.
- # Most systems do not require or use this function.
- # Some systems may implement it in the dl_*.xs file in which case
- # this autoload version will not be called but is harmless.
-
- # This function is designed to deal with systems which treat some
- # 'filenames' in a special way. For example VMS 'Logical Names'
- # (something like unix environment variables - but different).
- # This function should recognise such names and expand them into
- # full file paths.
- # Must return undef if $spec is invalid or file does not exist.
-
- my $file = $spec; # default output to input
-
- if ($Is_VMS) { # dl_expandspec should be defined in dl_vms.xs
- require Carp;
- Carp::croak("dl_expandspec: should be defined in XS file!\n");
- } else {
- return undef unless -f $file;
- }
- print STDERR "dl_expandspec($spec) => $file\n" if $dl_debug;
- $file;
-}
-
-# end of DynaLoader::dl_expandspec
-1;
diff --git a/Master/perltl/lib/auto/DynaLoader/dl_find_symbol_anywhere.al b/Master/perltl/lib/auto/DynaLoader/dl_find_symbol_anywhere.al
deleted file mode 100644
index b4a6ad15f09..00000000000
--- a/Master/perltl/lib/auto/DynaLoader/dl_find_symbol_anywhere.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from ../LIB\DynaLoader.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package DynaLoader;
-
-#line 399 "../LIB\DynaLoader.pm (autosplit into ..\lib\auto\DynaLoader\dl_find_symbol_anywhere.al)"
-sub dl_find_symbol_anywhere
-{
- my $sym = shift;
- my $libref;
- foreach $libref (@dl_librefs) {
- my $symref = dl_find_symbol($libref,$sym);
- return $symref if $symref;
- }
- return undef;
-}
-
-1;
-# end of DynaLoader::dl_find_symbol_anywhere
diff --git a/Master/perltl/lib/auto/DynaLoader/dl_findfile.al b/Master/perltl/lib/auto/DynaLoader/dl_findfile.al
deleted file mode 100644
index d91cf60d194..00000000000
--- a/Master/perltl/lib/auto/DynaLoader/dl_findfile.al
+++ /dev/null
@@ -1,115 +0,0 @@
-# NOTE: Derived from ../LIB\DynaLoader.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package DynaLoader;
-
-#line 265 "../LIB\DynaLoader.pm (autosplit into ..\lib\auto\DynaLoader\dl_findfile.al)"
-sub dl_findfile {
- # Read ext/DynaLoader/DynaLoader.doc for detailed information.
- # This function does not automatically consider the architecture
- # or the perl library auto directories.
- my (@args) = @_;
- my (@dirs, $dir); # which directories to search
- my (@found); # full paths to real files we have found
- my $dl_ext= 'dll'; # $Config::Config{'dlext'} suffix for perl extensions
- my $dl_so = 'dll'; # $Config::Config{'so'} suffix for shared libraries
-
- print STDERR "dl_findfile(@args)\n" if $dl_debug;
-
- # accumulate directories but process files as they appear
- arg: foreach(@args) {
- # Special fast case: full filepath requires no search
- if ($Is_VMS && m%[:>/\]]% && -f $_) {
- push(@found,dl_expandspec(VMS::Filespec::vmsify($_)));
- last arg unless wantarray;
- next;
- }
- elsif ($Is_MacOS) {
- if (m/:/ && -f $_) {
- push(@found,$_);
- last arg unless wantarray;
- }
- }
- elsif (m:/: && -f $_ && !$do_expand) {
- push(@found,$_);
- last arg unless wantarray;
- next;
- }
-
- # Deal with directories first:
- # Using a -L prefix is the preferred option (faster and more robust)
- if (m:^-L:) { s/^-L//; push(@dirs, $_); next; }
-
- if ($Is_MacOS) {
- # Otherwise we try to try to spot directories by a heuristic
- # (this is a more complicated issue than it first appears)
- if (m/:/ && -d $_) { push(@dirs, $_); next; }
- # Only files should get this far...
- my(@names, $name); # what filenames to look for
- s/^-l//;
- push(@names, $_);
- foreach $dir (@dirs, @dl_library_path) {
- next unless -d $dir;
- $dir =~ s/^([^:]+)$/:$1/;
- $dir =~ s/:$//;
- foreach $name (@names) {
- my($file) = "$dir:$name";
- print STDERR " checking in $dir for $name\n" if $dl_debug;
- if (-f $file) {
- push(@found, $file);
- next arg; # no need to look any further
- }
- }
- }
- next;
- }
-
- # Otherwise we try to try to spot directories by a heuristic
- # (this is a more complicated issue than it first appears)
- if (m:/: && -d $_) { push(@dirs, $_); next; }
-
- # VMS: we may be using native VMS directory syntax instead of
- # Unix emulation, so check this as well
- if ($Is_VMS && /[:>\]]/ && -d $_) { push(@dirs, $_); next; }
-
- # Only files should get this far...
- my(@names, $name); # what filenames to look for
- if (m:-l: ) { # convert -lname to appropriate library name
- s/-l//;
- push(@names,"lib$_.$dl_so");
- push(@names,"lib$_.a");
- } else { # Umm, a bare name. Try various alternatives:
- # these should be ordered with the most likely first
- push(@names,"$_.$dl_ext") unless m/\.$dl_ext$/o;
- push(@names,"$_.$dl_so") unless m/\.$dl_so$/o;
- push(@names,"lib$_.$dl_so") unless m:/:;
- push(@names,"$_.a") if !m/\.a$/ and $dlsrc eq "dl_dld.xs";
- push(@names, $_);
- }
- foreach $dir (@dirs, @dl_library_path) {
- next unless -d $dir;
- chop($dir = VMS::Filespec::unixpath($dir)) if $Is_VMS;
- foreach $name (@names) {
- my($file) = "$dir/$name";
- print STDERR " checking in $dir for $name\n" if $dl_debug;
- $file = ($do_expand) ? dl_expandspec($file) : (-f $file && $file);
- #$file = _check_file($file);
- if ($file) {
- push(@found, $file);
- next arg; # no need to look any further
- }
- }
- }
- }
- if ($dl_debug) {
- foreach(@dirs) {
- print STDERR " dl_findfile ignored non-existent directory: $_\n" unless -d $_;
- }
- print STDERR "dl_findfile found: @found\n";
- }
- return $found[0] unless wantarray;
- @found;
-}
-
-# end of DynaLoader::dl_findfile
-1;
diff --git a/Master/perltl/lib/auto/Fcntl/Fcntl.dll b/Master/perltl/lib/auto/Fcntl/Fcntl.dll
deleted file mode 100644
index 5cea87d315c..00000000000
--- a/Master/perltl/lib/auto/Fcntl/Fcntl.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/File/Glob/Glob.dll b/Master/perltl/lib/auto/File/Glob/Glob.dll
deleted file mode 100644
index 0ba64866dd3..00000000000
--- a/Master/perltl/lib/auto/File/Glob/Glob.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/IO/IO.dll b/Master/perltl/lib/auto/IO/IO.dll
deleted file mode 100644
index 60d92c3a6c0..00000000000
--- a/Master/perltl/lib/auto/IO/IO.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/List/Util/Util.dll b/Master/perltl/lib/auto/List/Util/Util.dll
deleted file mode 100644
index efb06c7f240..00000000000
--- a/Master/perltl/lib/auto/List/Util/Util.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/POSIX/POSIX.dll b/Master/perltl/lib/auto/POSIX/POSIX.dll
deleted file mode 100644
index 2e090c5e742..00000000000
--- a/Master/perltl/lib/auto/POSIX/POSIX.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/POSIX/abs.al b/Master/perltl/lib/auto/POSIX/abs.al
deleted file mode 100644
index 298fd61df5c..00000000000
--- a/Master/perltl/lib/auto/POSIX/abs.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 391 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\abs.al)"
-sub abs {
- usage "abs(x)" if @_ != 1;
- CORE::abs($_[0]);
-}
-
-# end of POSIX::abs
-1;
diff --git a/Master/perltl/lib/auto/POSIX/alarm.al b/Master/perltl/lib/auto/POSIX/alarm.al
deleted file mode 100644
index 3be4c8dc908..00000000000
--- a/Master/perltl/lib/auto/POSIX/alarm.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 608 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\alarm.al)"
-sub alarm {
- usage "alarm(seconds)" if @_ != 1;
- CORE::alarm($_[0]);
-}
-
-# end of POSIX::alarm
-1;
diff --git a/Master/perltl/lib/auto/POSIX/assert.al b/Master/perltl/lib/auto/POSIX/assert.al
deleted file mode 100644
index def2f62f767..00000000000
--- a/Master/perltl/lib/auto/POSIX/assert.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 77 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\assert.al)"
-sub assert {
- usage "assert(expr)" if @_ != 1;
- if (!$_[0]) {
- croak "Assertion failed";
- }
-}
-
-# end of POSIX::assert
-1;
diff --git a/Master/perltl/lib/auto/POSIX/atan2.al b/Master/perltl/lib/auto/POSIX/atan2.al
deleted file mode 100644
index 30795e97c4b..00000000000
--- a/Master/perltl/lib/auto/POSIX/atan2.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 142 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\atan2.al)"
-sub atan2 {
- usage "atan2(x,y)" if @_ != 2;
- CORE::atan2($_[0], $_[1]);
-}
-
-# end of POSIX::atan2
-1;
diff --git a/Master/perltl/lib/auto/POSIX/atexit.al b/Master/perltl/lib/auto/POSIX/atexit.al
deleted file mode 100644
index f8e4e9ef393..00000000000
--- a/Master/perltl/lib/auto/POSIX/atexit.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 396 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\atexit.al)"
-sub atexit {
- unimpl "atexit() is C-specific: use END {} instead";
-}
-
-# end of POSIX::atexit
-1;
diff --git a/Master/perltl/lib/auto/POSIX/atof.al b/Master/perltl/lib/auto/POSIX/atof.al
deleted file mode 100644
index 731267c6b40..00000000000
--- a/Master/perltl/lib/auto/POSIX/atof.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 400 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\atof.al)"
-sub atof {
- unimpl "atof() is C-specific, stopped";
-}
-
-# end of POSIX::atof
-1;
diff --git a/Master/perltl/lib/auto/POSIX/atoi.al b/Master/perltl/lib/auto/POSIX/atoi.al
deleted file mode 100644
index a48dc6c29c3..00000000000
--- a/Master/perltl/lib/auto/POSIX/atoi.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 404 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\atoi.al)"
-sub atoi {
- unimpl "atoi() is C-specific, stopped";
-}
-
-# end of POSIX::atoi
-1;
diff --git a/Master/perltl/lib/auto/POSIX/atol.al b/Master/perltl/lib/auto/POSIX/atol.al
deleted file mode 100644
index ba2278ca041..00000000000
--- a/Master/perltl/lib/auto/POSIX/atol.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 408 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\atol.al)"
-sub atol {
- unimpl "atol() is C-specific, stopped";
-}
-
-# end of POSIX::atol
-1;
diff --git a/Master/perltl/lib/auto/POSIX/autosplit.ix b/Master/perltl/lib/auto/POSIX/autosplit.ix
deleted file mode 100644
index 7f244a3fb86..00000000000
--- a/Master/perltl/lib/auto/POSIX/autosplit.ix
+++ /dev/null
@@ -1,153 +0,0 @@
-# Index created by AutoSplit for ..\..\lib\POSIX.pm
-# (file acts as timestamp)
-package POSIX;
-sub usage ;
-sub redef ;
-sub unimpl ;
-sub assert ;
-sub tolower ;
-sub toupper ;
-sub closedir ;
-sub opendir ;
-sub readdir ;
-sub rewinddir ;
-sub errno ;
-sub creat ;
-sub fcntl ;
-sub getgrgid ;
-sub getgrnam ;
-sub atan2 ;
-sub cos ;
-sub exp ;
-sub fabs ;
-sub log ;
-sub pow ;
-sub sin ;
-sub sqrt ;
-sub getpwnam ;
-sub getpwuid ;
-sub longjmp ;
-sub setjmp ;
-sub siglongjmp ;
-sub sigsetjmp ;
-sub kill ;
-sub raise ;
-sub offsetof ;
-sub clearerr ;
-sub fclose ;
-sub fdopen ;
-sub feof ;
-sub fgetc ;
-sub fgets ;
-sub fileno ;
-sub fopen ;
-sub fprintf ;
-sub fputc ;
-sub fputs ;
-sub fread ;
-sub freopen ;
-sub fscanf ;
-sub fseek ;
-sub ferror ;
-sub fflush ;
-sub fgetpos ;
-sub fsetpos ;
-sub ftell ;
-sub fwrite ;
-sub getc ;
-sub getchar ;
-sub gets ;
-sub perror ;
-sub printf ;
-sub putc ;
-sub putchar ;
-sub puts ;
-sub remove ;
-sub rename ;
-sub rewind ;
-sub scanf ;
-sub sprintf ;
-sub sscanf ;
-sub tmpfile ;
-sub ungetc ;
-sub vfprintf ;
-sub vprintf ;
-sub vsprintf ;
-sub abs ;
-sub atexit ;
-sub atof ;
-sub atoi ;
-sub atol ;
-sub bsearch ;
-sub calloc ;
-sub div ;
-sub exit ;
-sub free ;
-sub getenv ;
-sub labs ;
-sub ldiv ;
-sub malloc ;
-sub qsort ;
-sub rand ;
-sub realloc ;
-sub srand ;
-sub system ;
-sub memchr ;
-sub memcmp ;
-sub memcpy ;
-sub memmove ;
-sub memset ;
-sub strcat ;
-sub strchr ;
-sub strcmp ;
-sub strcpy ;
-sub strcspn ;
-sub strerror ;
-sub strlen ;
-sub strncat ;
-sub strncmp ;
-sub strncpy ;
-sub strpbrk ;
-sub strrchr ;
-sub strspn ;
-sub strstr ;
-sub strtok ;
-sub chmod ;
-sub fstat ;
-sub mkdir ;
-sub stat ;
-sub umask ;
-sub wait ;
-sub waitpid ;
-sub gmtime ;
-sub localtime ;
-sub time ;
-sub alarm ;
-sub chdir ;
-sub chown ;
-sub execl ;
-sub execle ;
-sub execlp ;
-sub execv ;
-sub execve ;
-sub execvp ;
-sub fork ;
-sub getegid ;
-sub geteuid ;
-sub getgid ;
-sub getgroups ;
-sub getlogin ;
-sub getpgrp ;
-sub getpid ;
-sub getppid ;
-sub getuid ;
-sub isatty ;
-sub link ;
-sub rmdir ;
-sub setbuf ;
-sub setvbuf ;
-sub sleep ;
-sub unlink ;
-sub utime ;
-sub load_imports ;
-1;
diff --git a/Master/perltl/lib/auto/POSIX/bsearch.al b/Master/perltl/lib/auto/POSIX/bsearch.al
deleted file mode 100644
index ae569040e00..00000000000
--- a/Master/perltl/lib/auto/POSIX/bsearch.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 412 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\bsearch.al)"
-sub bsearch {
- unimpl "bsearch() not supplied";
-}
-
-# end of POSIX::bsearch
-1;
diff --git a/Master/perltl/lib/auto/POSIX/calloc.al b/Master/perltl/lib/auto/POSIX/calloc.al
deleted file mode 100644
index 8375767c30b..00000000000
--- a/Master/perltl/lib/auto/POSIX/calloc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 416 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\calloc.al)"
-sub calloc {
- unimpl "calloc() is C-specific, stopped";
-}
-
-# end of POSIX::calloc
-1;
diff --git a/Master/perltl/lib/auto/POSIX/chdir.al b/Master/perltl/lib/auto/POSIX/chdir.al
deleted file mode 100644
index 7ebaad5aa95..00000000000
--- a/Master/perltl/lib/auto/POSIX/chdir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 613 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\chdir.al)"
-sub chdir {
- usage "chdir(directory)" if @_ != 1;
- CORE::chdir($_[0]);
-}
-
-# end of POSIX::chdir
-1;
diff --git a/Master/perltl/lib/auto/POSIX/chmod.al b/Master/perltl/lib/auto/POSIX/chmod.al
deleted file mode 100644
index e57badcb3dd..00000000000
--- a/Master/perltl/lib/auto/POSIX/chmod.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 554 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\chmod.al)"
-sub chmod {
- usage "chmod(mode, filename)" if @_ != 2;
- CORE::chmod($_[0], $_[1]);
-}
-
-# end of POSIX::chmod
-1;
diff --git a/Master/perltl/lib/auto/POSIX/chown.al b/Master/perltl/lib/auto/POSIX/chown.al
deleted file mode 100644
index cfc23f0b072..00000000000
--- a/Master/perltl/lib/auto/POSIX/chown.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 618 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\chown.al)"
-sub chown {
- usage "chown(filename, uid, gid)" if @_ != 3;
- CORE::chown($_[0], $_[1], $_[2]);
-}
-
-# end of POSIX::chown
-1;
diff --git a/Master/perltl/lib/auto/POSIX/clearerr.al b/Master/perltl/lib/auto/POSIX/clearerr.al
deleted file mode 100644
index 8c3b70743cb..00000000000
--- a/Master/perltl/lib/auto/POSIX/clearerr.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 222 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\clearerr.al)"
-sub clearerr {
- redef "IO::Handle::clearerr()";
-}
-
-# end of POSIX::clearerr
-1;
diff --git a/Master/perltl/lib/auto/POSIX/closedir.al b/Master/perltl/lib/auto/POSIX/closedir.al
deleted file mode 100644
index 7ecdf46af31..00000000000
--- a/Master/perltl/lib/auto/POSIX/closedir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 94 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\closedir.al)"
-sub closedir {
- usage "closedir(dirhandle)" if @_ != 1;
- CORE::closedir($_[0]);
-}
-
-# end of POSIX::closedir
-1;
diff --git a/Master/perltl/lib/auto/POSIX/cos.al b/Master/perltl/lib/auto/POSIX/cos.al
deleted file mode 100644
index 17a90b50286..00000000000
--- a/Master/perltl/lib/auto/POSIX/cos.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 147 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\cos.al)"
-sub cos {
- usage "cos(x)" if @_ != 1;
- CORE::cos($_[0]);
-}
-
-# end of POSIX::cos
-1;
diff --git a/Master/perltl/lib/auto/POSIX/creat.al b/Master/perltl/lib/auto/POSIX/creat.al
deleted file mode 100644
index 4645b72ab0e..00000000000
--- a/Master/perltl/lib/auto/POSIX/creat.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 122 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\creat.al)"
-sub creat {
- usage "creat(filename, mode)" if @_ != 2;
- &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[1]);
-}
-
-# end of POSIX::creat
-1;
diff --git a/Master/perltl/lib/auto/POSIX/div.al b/Master/perltl/lib/auto/POSIX/div.al
deleted file mode 100644
index 272d1d23bbb..00000000000
--- a/Master/perltl/lib/auto/POSIX/div.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 420 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\div.al)"
-sub div {
- unimpl "div() is C-specific, stopped";
-}
-
-# end of POSIX::div
-1;
diff --git a/Master/perltl/lib/auto/POSIX/errno.al b/Master/perltl/lib/auto/POSIX/errno.al
deleted file mode 100644
index 5195ab1efe1..00000000000
--- a/Master/perltl/lib/auto/POSIX/errno.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 117 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\errno.al)"
-sub errno {
- usage "errno()" if @_ != 0;
- $! + 0;
-}
-
-# end of POSIX::errno
-1;
diff --git a/Master/perltl/lib/auto/POSIX/execl.al b/Master/perltl/lib/auto/POSIX/execl.al
deleted file mode 100644
index 4f0e27566e8..00000000000
--- a/Master/perltl/lib/auto/POSIX/execl.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 623 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execl.al)"
-sub execl {
- unimpl "execl() is C-specific, stopped";
-}
-
-# end of POSIX::execl
-1;
diff --git a/Master/perltl/lib/auto/POSIX/execle.al b/Master/perltl/lib/auto/POSIX/execle.al
deleted file mode 100644
index 303af430e07..00000000000
--- a/Master/perltl/lib/auto/POSIX/execle.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 627 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execle.al)"
-sub execle {
- unimpl "execle() is C-specific, stopped";
-}
-
-# end of POSIX::execle
-1;
diff --git a/Master/perltl/lib/auto/POSIX/execlp.al b/Master/perltl/lib/auto/POSIX/execlp.al
deleted file mode 100644
index 772f718e44e..00000000000
--- a/Master/perltl/lib/auto/POSIX/execlp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 631 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execlp.al)"
-sub execlp {
- unimpl "execlp() is C-specific, stopped";
-}
-
-# end of POSIX::execlp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/execv.al b/Master/perltl/lib/auto/POSIX/execv.al
deleted file mode 100644
index 85b211db4ab..00000000000
--- a/Master/perltl/lib/auto/POSIX/execv.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 635 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execv.al)"
-sub execv {
- unimpl "execv() is C-specific, stopped";
-}
-
-# end of POSIX::execv
-1;
diff --git a/Master/perltl/lib/auto/POSIX/execve.al b/Master/perltl/lib/auto/POSIX/execve.al
deleted file mode 100644
index 919580cbed1..00000000000
--- a/Master/perltl/lib/auto/POSIX/execve.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 639 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execve.al)"
-sub execve {
- unimpl "execve() is C-specific, stopped";
-}
-
-# end of POSIX::execve
-1;
diff --git a/Master/perltl/lib/auto/POSIX/execvp.al b/Master/perltl/lib/auto/POSIX/execvp.al
deleted file mode 100644
index f55f8495f8d..00000000000
--- a/Master/perltl/lib/auto/POSIX/execvp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 643 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\execvp.al)"
-sub execvp {
- unimpl "execvp() is C-specific, stopped";
-}
-
-# end of POSIX::execvp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/exit.al b/Master/perltl/lib/auto/POSIX/exit.al
deleted file mode 100644
index b03a880d66a..00000000000
--- a/Master/perltl/lib/auto/POSIX/exit.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 424 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\exit.al)"
-sub exit {
- usage "exit(status)" if @_ != 1;
- CORE::exit($_[0]);
-}
-
-# end of POSIX::exit
-1;
diff --git a/Master/perltl/lib/auto/POSIX/exp.al b/Master/perltl/lib/auto/POSIX/exp.al
deleted file mode 100644
index d15d24f1128..00000000000
--- a/Master/perltl/lib/auto/POSIX/exp.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 152 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\exp.al)"
-sub exp {
- usage "exp(x)" if @_ != 1;
- CORE::exp($_[0]);
-}
-
-# end of POSIX::exp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fabs.al b/Master/perltl/lib/auto/POSIX/fabs.al
deleted file mode 100644
index 2f5cbce7501..00000000000
--- a/Master/perltl/lib/auto/POSIX/fabs.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 157 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fabs.al)"
-sub fabs {
- usage "fabs(x)" if @_ != 1;
- CORE::abs($_[0]);
-}
-
-# end of POSIX::fabs
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fclose.al b/Master/perltl/lib/auto/POSIX/fclose.al
deleted file mode 100644
index 1b4f7192da9..00000000000
--- a/Master/perltl/lib/auto/POSIX/fclose.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 226 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fclose.al)"
-sub fclose {
- redef "IO::Handle::close()";
-}
-
-# end of POSIX::fclose
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fcntl.al b/Master/perltl/lib/auto/POSIX/fcntl.al
deleted file mode 100644
index 0d8692e6cd7..00000000000
--- a/Master/perltl/lib/auto/POSIX/fcntl.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 127 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fcntl.al)"
-sub fcntl {
- usage "fcntl(filehandle, cmd, arg)" if @_ != 3;
- CORE::fcntl($_[0], $_[1], $_[2]);
-}
-
-# end of POSIX::fcntl
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fdopen.al b/Master/perltl/lib/auto/POSIX/fdopen.al
deleted file mode 100644
index cc4b68b4df0..00000000000
--- a/Master/perltl/lib/auto/POSIX/fdopen.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 230 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fdopen.al)"
-sub fdopen {
- redef "IO::Handle::new_from_fd()";
-}
-
-# end of POSIX::fdopen
-1;
diff --git a/Master/perltl/lib/auto/POSIX/feof.al b/Master/perltl/lib/auto/POSIX/feof.al
deleted file mode 100644
index 2aa0580f31e..00000000000
--- a/Master/perltl/lib/auto/POSIX/feof.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 234 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\feof.al)"
-sub feof {
- redef "IO::Handle::eof()";
-}
-
-# end of POSIX::feof
-1;
diff --git a/Master/perltl/lib/auto/POSIX/ferror.al b/Master/perltl/lib/auto/POSIX/ferror.al
deleted file mode 100644
index 864c11609a6..00000000000
--- a/Master/perltl/lib/auto/POSIX/ferror.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 282 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\ferror.al)"
-sub ferror {
- redef "IO::Handle::error()";
-}
-
-# end of POSIX::ferror
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fflush.al b/Master/perltl/lib/auto/POSIX/fflush.al
deleted file mode 100644
index d4084b44569..00000000000
--- a/Master/perltl/lib/auto/POSIX/fflush.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 286 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fflush.al)"
-sub fflush {
- redef "IO::Handle::flush()";
-}
-
-# end of POSIX::fflush
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fgetc.al b/Master/perltl/lib/auto/POSIX/fgetc.al
deleted file mode 100644
index 55c6951da44..00000000000
--- a/Master/perltl/lib/auto/POSIX/fgetc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 238 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fgetc.al)"
-sub fgetc {
- redef "IO::Handle::getc()";
-}
-
-# end of POSIX::fgetc
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fgetpos.al b/Master/perltl/lib/auto/POSIX/fgetpos.al
deleted file mode 100644
index e354fdf5a4f..00000000000
--- a/Master/perltl/lib/auto/POSIX/fgetpos.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 290 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fgetpos.al)"
-sub fgetpos {
- redef "IO::Seekable::getpos()";
-}
-
-# end of POSIX::fgetpos
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fgets.al b/Master/perltl/lib/auto/POSIX/fgets.al
deleted file mode 100644
index adb96ebfed6..00000000000
--- a/Master/perltl/lib/auto/POSIX/fgets.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 242 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fgets.al)"
-sub fgets {
- redef "IO::Handle::gets()";
-}
-
-# end of POSIX::fgets
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fileno.al b/Master/perltl/lib/auto/POSIX/fileno.al
deleted file mode 100644
index 2b9ef0d0f0b..00000000000
--- a/Master/perltl/lib/auto/POSIX/fileno.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 246 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fileno.al)"
-sub fileno {
- redef "IO::Handle::fileno()";
-}
-
-# end of POSIX::fileno
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fopen.al b/Master/perltl/lib/auto/POSIX/fopen.al
deleted file mode 100644
index 8a85034722b..00000000000
--- a/Master/perltl/lib/auto/POSIX/fopen.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 250 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fopen.al)"
-sub fopen {
- redef "IO::File::open()";
-}
-
-# end of POSIX::fopen
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fork.al b/Master/perltl/lib/auto/POSIX/fork.al
deleted file mode 100644
index e7a7de97948..00000000000
--- a/Master/perltl/lib/auto/POSIX/fork.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 647 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fork.al)"
-sub fork {
- usage "fork()" if @_ != 0;
- CORE::fork;
-}
-
-# end of POSIX::fork
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fprintf.al b/Master/perltl/lib/auto/POSIX/fprintf.al
deleted file mode 100644
index bdcebf38760..00000000000
--- a/Master/perltl/lib/auto/POSIX/fprintf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 254 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fprintf.al)"
-sub fprintf {
- unimpl "fprintf() is C-specific--use printf instead";
-}
-
-# end of POSIX::fprintf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fputc.al b/Master/perltl/lib/auto/POSIX/fputc.al
deleted file mode 100644
index 9233e689600..00000000000
--- a/Master/perltl/lib/auto/POSIX/fputc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 258 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fputc.al)"
-sub fputc {
- unimpl "fputc() is C-specific--use print instead";
-}
-
-# end of POSIX::fputc
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fputs.al b/Master/perltl/lib/auto/POSIX/fputs.al
deleted file mode 100644
index 885cf9e4bb3..00000000000
--- a/Master/perltl/lib/auto/POSIX/fputs.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 262 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fputs.al)"
-sub fputs {
- unimpl "fputs() is C-specific--use print instead";
-}
-
-# end of POSIX::fputs
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fread.al b/Master/perltl/lib/auto/POSIX/fread.al
deleted file mode 100644
index ca411635f63..00000000000
--- a/Master/perltl/lib/auto/POSIX/fread.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 266 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fread.al)"
-sub fread {
- unimpl "fread() is C-specific--use read instead";
-}
-
-# end of POSIX::fread
-1;
diff --git a/Master/perltl/lib/auto/POSIX/free.al b/Master/perltl/lib/auto/POSIX/free.al
deleted file mode 100644
index 83ce0402725..00000000000
--- a/Master/perltl/lib/auto/POSIX/free.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 429 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\free.al)"
-sub free {
- unimpl "free() is C-specific, stopped";
-}
-
-# end of POSIX::free
-1;
diff --git a/Master/perltl/lib/auto/POSIX/freopen.al b/Master/perltl/lib/auto/POSIX/freopen.al
deleted file mode 100644
index cefb9db1dab..00000000000
--- a/Master/perltl/lib/auto/POSIX/freopen.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 270 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\freopen.al)"
-sub freopen {
- unimpl "freopen() is C-specific--use open instead";
-}
-
-# end of POSIX::freopen
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fscanf.al b/Master/perltl/lib/auto/POSIX/fscanf.al
deleted file mode 100644
index 452877452c6..00000000000
--- a/Master/perltl/lib/auto/POSIX/fscanf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 274 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fscanf.al)"
-sub fscanf {
- unimpl "fscanf() is C-specific--use <> and regular expressions instead";
-}
-
-# end of POSIX::fscanf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fseek.al b/Master/perltl/lib/auto/POSIX/fseek.al
deleted file mode 100644
index ffefc229066..00000000000
--- a/Master/perltl/lib/auto/POSIX/fseek.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 278 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fseek.al)"
-sub fseek {
- redef "IO::Seekable::seek()";
-}
-
-# end of POSIX::fseek
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fsetpos.al b/Master/perltl/lib/auto/POSIX/fsetpos.al
deleted file mode 100644
index f43fc57c18a..00000000000
--- a/Master/perltl/lib/auto/POSIX/fsetpos.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 294 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fsetpos.al)"
-sub fsetpos {
- redef "IO::Seekable::setpos()";
-}
-
-# end of POSIX::fsetpos
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fstat.al b/Master/perltl/lib/auto/POSIX/fstat.al
deleted file mode 100644
index cd05ea95007..00000000000
--- a/Master/perltl/lib/auto/POSIX/fstat.al
+++ /dev/null
@@ -1,17 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 559 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fstat.al)"
-sub fstat {
- usage "fstat(fd)" if @_ != 1;
- local *TMP;
- CORE::open(TMP, "<&$_[0]"); # Gross.
- my @l = CORE::stat(TMP);
- CORE::close(TMP);
- @l;
-}
-
-# end of POSIX::fstat
-1;
diff --git a/Master/perltl/lib/auto/POSIX/ftell.al b/Master/perltl/lib/auto/POSIX/ftell.al
deleted file mode 100644
index dd6c347c710..00000000000
--- a/Master/perltl/lib/auto/POSIX/ftell.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 298 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\ftell.al)"
-sub ftell {
- redef "IO::Seekable::tell()";
-}
-
-# end of POSIX::ftell
-1;
diff --git a/Master/perltl/lib/auto/POSIX/fwrite.al b/Master/perltl/lib/auto/POSIX/fwrite.al
deleted file mode 100644
index d51037b1d17..00000000000
--- a/Master/perltl/lib/auto/POSIX/fwrite.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 302 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fwrite.al)"
-sub fwrite {
- unimpl "fwrite() is C-specific--use print instead";
-}
-
-# end of POSIX::fwrite
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getc.al b/Master/perltl/lib/auto/POSIX/getc.al
deleted file mode 100644
index 318c4bd6b0f..00000000000
--- a/Master/perltl/lib/auto/POSIX/getc.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 306 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getc.al)"
-sub getc {
- usage "getc(handle)" if @_ != 1;
- CORE::getc($_[0]);
-}
-
-# end of POSIX::getc
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getchar.al b/Master/perltl/lib/auto/POSIX/getchar.al
deleted file mode 100644
index eb1344fa4cc..00000000000
--- a/Master/perltl/lib/auto/POSIX/getchar.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 311 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getchar.al)"
-sub getchar {
- usage "getchar()" if @_ != 0;
- CORE::getc(STDIN);
-}
-
-# end of POSIX::getchar
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getegid.al b/Master/perltl/lib/auto/POSIX/getegid.al
deleted file mode 100644
index 6234a682aae..00000000000
--- a/Master/perltl/lib/auto/POSIX/getegid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 652 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getegid.al)"
-sub getegid {
- usage "getegid()" if @_ != 0;
- $) + 0;
-}
-
-# end of POSIX::getegid
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getenv.al b/Master/perltl/lib/auto/POSIX/getenv.al
deleted file mode 100644
index 7ca5395c458..00000000000
--- a/Master/perltl/lib/auto/POSIX/getenv.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 433 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getenv.al)"
-sub getenv {
- usage "getenv(name)" if @_ != 1;
- $ENV{$_[0]};
-}
-
-# end of POSIX::getenv
-1;
diff --git a/Master/perltl/lib/auto/POSIX/geteuid.al b/Master/perltl/lib/auto/POSIX/geteuid.al
deleted file mode 100644
index 829472d16ae..00000000000
--- a/Master/perltl/lib/auto/POSIX/geteuid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 657 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\geteuid.al)"
-sub geteuid {
- usage "geteuid()" if @_ != 0;
- $> + 0;
-}
-
-# end of POSIX::geteuid
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getgid.al b/Master/perltl/lib/auto/POSIX/getgid.al
deleted file mode 100644
index b9f60fcea02..00000000000
--- a/Master/perltl/lib/auto/POSIX/getgid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 662 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getgid.al)"
-sub getgid {
- usage "getgid()" if @_ != 0;
- $( + 0;
-}
-
-# end of POSIX::getgid
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getgrgid.al b/Master/perltl/lib/auto/POSIX/getgrgid.al
deleted file mode 100644
index be95e0badbb..00000000000
--- a/Master/perltl/lib/auto/POSIX/getgrgid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 132 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getgrgid.al)"
-sub getgrgid {
- usage "getgrgid(gid)" if @_ != 1;
- CORE::getgrgid($_[0]);
-}
-
-# end of POSIX::getgrgid
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getgrnam.al b/Master/perltl/lib/auto/POSIX/getgrnam.al
deleted file mode 100644
index 8cda0521600..00000000000
--- a/Master/perltl/lib/auto/POSIX/getgrnam.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 137 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getgrnam.al)"
-sub getgrnam {
- usage "getgrnam(name)" if @_ != 1;
- CORE::getgrnam($_[0]);
-}
-
-# end of POSIX::getgrnam
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getgroups.al b/Master/perltl/lib/auto/POSIX/getgroups.al
deleted file mode 100644
index e3a31459b38..00000000000
--- a/Master/perltl/lib/auto/POSIX/getgroups.al
+++ /dev/null
@@ -1,14 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 667 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getgroups.al)"
-sub getgroups {
- usage "getgroups()" if @_ != 0;
- my %seen;
- grep(!$seen{$_}++, split(' ', $) ));
-}
-
-# end of POSIX::getgroups
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getlogin.al b/Master/perltl/lib/auto/POSIX/getlogin.al
deleted file mode 100644
index 3b9259b5f95..00000000000
--- a/Master/perltl/lib/auto/POSIX/getlogin.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 673 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getlogin.al)"
-sub getlogin {
- usage "getlogin()" if @_ != 0;
- CORE::getlogin();
-}
-
-# end of POSIX::getlogin
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getpgrp.al b/Master/perltl/lib/auto/POSIX/getpgrp.al
deleted file mode 100644
index b4771bcd799..00000000000
--- a/Master/perltl/lib/auto/POSIX/getpgrp.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 678 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getpgrp.al)"
-sub getpgrp {
- usage "getpgrp()" if @_ != 0;
- CORE::getpgrp;
-}
-
-# end of POSIX::getpgrp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getpid.al b/Master/perltl/lib/auto/POSIX/getpid.al
deleted file mode 100644
index b85b2304d38..00000000000
--- a/Master/perltl/lib/auto/POSIX/getpid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 683 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getpid.al)"
-sub getpid {
- usage "getpid()" if @_ != 0;
- $$;
-}
-
-# end of POSIX::getpid
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getppid.al b/Master/perltl/lib/auto/POSIX/getppid.al
deleted file mode 100644
index 66b4877dc31..00000000000
--- a/Master/perltl/lib/auto/POSIX/getppid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 688 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getppid.al)"
-sub getppid {
- usage "getppid()" if @_ != 0;
- CORE::getppid;
-}
-
-# end of POSIX::getppid
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getpwnam.al b/Master/perltl/lib/auto/POSIX/getpwnam.al
deleted file mode 100644
index 89538d13b37..00000000000
--- a/Master/perltl/lib/auto/POSIX/getpwnam.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 182 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getpwnam.al)"
-sub getpwnam {
- usage "getpwnam(name)" if @_ != 1;
- CORE::getpwnam($_[0]);
-}
-
-# end of POSIX::getpwnam
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getpwuid.al b/Master/perltl/lib/auto/POSIX/getpwuid.al
deleted file mode 100644
index 27c8642d36b..00000000000
--- a/Master/perltl/lib/auto/POSIX/getpwuid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 187 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getpwuid.al)"
-sub getpwuid {
- usage "getpwuid(uid)" if @_ != 1;
- CORE::getpwuid($_[0]);
-}
-
-# end of POSIX::getpwuid
-1;
diff --git a/Master/perltl/lib/auto/POSIX/gets.al b/Master/perltl/lib/auto/POSIX/gets.al
deleted file mode 100644
index ba8caa9cc5e..00000000000
--- a/Master/perltl/lib/auto/POSIX/gets.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 316 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\gets.al)"
-sub gets {
- usage "gets()" if @_ != 0;
- scalar <STDIN>;
-}
-
-# end of POSIX::gets
-1;
diff --git a/Master/perltl/lib/auto/POSIX/getuid.al b/Master/perltl/lib/auto/POSIX/getuid.al
deleted file mode 100644
index c3a7a1e993f..00000000000
--- a/Master/perltl/lib/auto/POSIX/getuid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 693 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\getuid.al)"
-sub getuid {
- usage "getuid()" if @_ != 0;
- $<;
-}
-
-# end of POSIX::getuid
-1;
diff --git a/Master/perltl/lib/auto/POSIX/gmtime.al b/Master/perltl/lib/auto/POSIX/gmtime.al
deleted file mode 100644
index 4f4b26f658a..00000000000
--- a/Master/perltl/lib/auto/POSIX/gmtime.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 593 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\gmtime.al)"
-sub gmtime {
- usage "gmtime(time)" if @_ != 1;
- CORE::gmtime($_[0]);
-}
-
-# end of POSIX::gmtime
-1;
diff --git a/Master/perltl/lib/auto/POSIX/isatty.al b/Master/perltl/lib/auto/POSIX/isatty.al
deleted file mode 100644
index aff49f6fa73..00000000000
--- a/Master/perltl/lib/auto/POSIX/isatty.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 698 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\isatty.al)"
-sub isatty {
- usage "isatty(filehandle)" if @_ != 1;
- -t $_[0];
-}
-
-# end of POSIX::isatty
-1;
diff --git a/Master/perltl/lib/auto/POSIX/kill.al b/Master/perltl/lib/auto/POSIX/kill.al
deleted file mode 100644
index ed4544cd1b8..00000000000
--- a/Master/perltl/lib/auto/POSIX/kill.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 208 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\kill.al)"
-sub kill {
- usage "kill(pid, sig)" if @_ != 2;
- CORE::kill $_[1], $_[0];
-}
-
-# end of POSIX::kill
-1;
diff --git a/Master/perltl/lib/auto/POSIX/labs.al b/Master/perltl/lib/auto/POSIX/labs.al
deleted file mode 100644
index cb2aee982ec..00000000000
--- a/Master/perltl/lib/auto/POSIX/labs.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 438 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\labs.al)"
-sub labs {
- unimpl "labs() is C-specific, use abs instead";
-}
-
-# end of POSIX::labs
-1;
diff --git a/Master/perltl/lib/auto/POSIX/ldiv.al b/Master/perltl/lib/auto/POSIX/ldiv.al
deleted file mode 100644
index e30e8dddbb6..00000000000
--- a/Master/perltl/lib/auto/POSIX/ldiv.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 442 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\ldiv.al)"
-sub ldiv {
- unimpl "ldiv() is C-specific, use / and int instead";
-}
-
-# end of POSIX::ldiv
-1;
diff --git a/Master/perltl/lib/auto/POSIX/link.al b/Master/perltl/lib/auto/POSIX/link.al
deleted file mode 100644
index 7f2cc18847f..00000000000
--- a/Master/perltl/lib/auto/POSIX/link.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 703 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\link.al)"
-sub link {
- usage "link(oldfilename, newfilename)" if @_ != 2;
- CORE::link($_[0], $_[1]);
-}
-
-# end of POSIX::link
-1;
diff --git a/Master/perltl/lib/auto/POSIX/load_imports.al b/Master/perltl/lib/auto/POSIX/load_imports.al
deleted file mode 100644
index 5659bce963d..00000000000
--- a/Master/perltl/lib/auto/POSIX/load_imports.al
+++ /dev/null
@@ -1,224 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 736 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\load_imports.al)"
-sub load_imports {
-%EXPORT_TAGS = (
-
- assert_h => [qw(assert NDEBUG)],
-
- ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower
- isprint ispunct isspace isupper isxdigit tolower toupper)],
-
- dirent_h => [],
-
- errno_h => [qw(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT
- EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED
- ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT
- EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS
- EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK
- EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH
- ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM
- ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR
- ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM
- EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE
- ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT
- ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY
- EUSERS EWOULDBLOCK EXDEV errno)],
-
- fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK
- F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK
- O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK
- O_RDONLY O_RDWR O_TRUNC O_WRONLY
- creat
- SEEK_CUR SEEK_END SEEK_SET
- S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID
- S_IWGRP S_IWOTH S_IWUSR)],
-
- float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG
- DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP
- DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP
- FLT_DIG FLT_EPSILON FLT_MANT_DIG
- FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP
- FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP
- FLT_RADIX FLT_ROUNDS
- LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG
- LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP
- LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP)],
-
- grp_h => [],
-
- limits_h => [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX
- INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON
- MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX
- PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN
- SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX
- ULONG_MAX USHRT_MAX _POSIX_ARG_MAX _POSIX_CHILD_MAX
- _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT
- _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX
- _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX
- _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)],
-
- locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES
- LC_MONETARY LC_NUMERIC LC_TIME NULL
- localeconv setlocale)],
-
- math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod
- frexp ldexp log10 modf pow sinh tan tanh)],
-
- pwd_h => [],
-
- setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)],
-
- signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK
- SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM
- SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL
- SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN
- SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK SIG_DFL SIG_ERR
- SIG_IGN SIG_SETMASK SIG_UNBLOCK raise sigaction signal
- sigpending sigprocmask sigsuspend)],
-
- stdarg_h => [],
-
- stddef_h => [qw(NULL offsetof)],
-
- stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid
- L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET
- STREAM_MAX TMP_MAX stderr stdin stdout
- clearerr fclose fdopen feof ferror fflush fgetc fgetpos
- fgets fopen fprintf fputc fputs fread freopen
- fscanf fseek fsetpos ftell fwrite getchar gets
- perror putc putchar puts remove rewind
- scanf setbuf setvbuf sscanf tmpfile tmpnam
- ungetc vfprintf vprintf vsprintf)],
-
- stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX
- abort atexit atof atoi atol bsearch calloc div
- free getenv labs ldiv malloc mblen mbstowcs mbtowc
- qsort realloc strtod strtol strtoul wcstombs wctomb)],
-
- string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat
- strchr strcmp strcoll strcpy strcspn strerror strlen
- strncat strncmp strncpy strpbrk strrchr strspn strstr
- strtok strxfrm)],
-
- sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG
- S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR
- fstat mkfifo)],
-
- sys_times_h => [],
-
- sys_types_h => [],
-
- sys_utsname_h => [qw(uname)],
-
- sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED
- WNOHANG WSTOPSIG WTERMSIG WUNTRACED)],
-
- termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400
- B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL
- CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK
- ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR
- INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST
- PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION
- TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW
- TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART
- VSTOP VSUSP VTIME
- cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain
- tcflow tcflush tcgetattr tcsendbreak tcsetattr )],
-
- time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime
- difftime mktime strftime tzset tzname)],
-
- unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET
- STDERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK
- _PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON
- _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX
- _PC_PIPE_BUF _PC_VDISABLE _POSIX_CHOWN_RESTRICTED
- _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS
- _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX
- _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL
- _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS
- _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
- _exit access ctermid cuserid
- dup2 dup execl execle execlp execv execve execvp
- fpathconf getcwd getegid geteuid getgid getgroups
- getpid getuid isatty lseek pathconf pause setgid setpgid
- setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)],
-
- utime_h => [],
-
-);
-
-# Exporter::export_tags();
-for (values %EXPORT_TAGS) {
- push @EXPORT, @$_;
-}
-
-@EXPORT_OK = qw(
- abs
- alarm
- atan2
- chdir
- chmod
- chown
- close
- closedir
- cos
- exit
- exp
- fcntl
- fileno
- fork
- getc
- getgrgid
- getgrnam
- getlogin
- getpgrp
- getppid
- getpwnam
- getpwuid
- gmtime
- isatty
- kill
- link
- localtime
- log
- mkdir
- nice
- open
- opendir
- pipe
- printf
- rand
- read
- readdir
- rename
- rewinddir
- rmdir
- sin
- sleep
- sprintf
- sqrt
- srand
- stat
- system
- time
- times
- umask
- unlink
- utime
- wait
- waitpid
- write
-);
-
-require Exporter;
-}
-
-1;
-# end of POSIX::load_imports
diff --git a/Master/perltl/lib/auto/POSIX/localtime.al b/Master/perltl/lib/auto/POSIX/localtime.al
deleted file mode 100644
index 327eec0044c..00000000000
--- a/Master/perltl/lib/auto/POSIX/localtime.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 598 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\localtime.al)"
-sub localtime {
- usage "localtime(time)" if @_ != 1;
- CORE::localtime($_[0]);
-}
-
-# end of POSIX::localtime
-1;
diff --git a/Master/perltl/lib/auto/POSIX/log.al b/Master/perltl/lib/auto/POSIX/log.al
deleted file mode 100644
index b04b0689863..00000000000
--- a/Master/perltl/lib/auto/POSIX/log.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 162 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\log.al)"
-sub log {
- usage "log(x)" if @_ != 1;
- CORE::log($_[0]);
-}
-
-# end of POSIX::log
-1;
diff --git a/Master/perltl/lib/auto/POSIX/longjmp.al b/Master/perltl/lib/auto/POSIX/longjmp.al
deleted file mode 100644
index 2edb512681b..00000000000
--- a/Master/perltl/lib/auto/POSIX/longjmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 192 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\longjmp.al)"
-sub longjmp {
- unimpl "longjmp() is C-specific: use die instead";
-}
-
-# end of POSIX::longjmp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/malloc.al b/Master/perltl/lib/auto/POSIX/malloc.al
deleted file mode 100644
index c7afafcbb7a..00000000000
--- a/Master/perltl/lib/auto/POSIX/malloc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 446 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\malloc.al)"
-sub malloc {
- unimpl "malloc() is C-specific, stopped";
-}
-
-# end of POSIX::malloc
-1;
diff --git a/Master/perltl/lib/auto/POSIX/memchr.al b/Master/perltl/lib/auto/POSIX/memchr.al
deleted file mode 100644
index 8de2367abd2..00000000000
--- a/Master/perltl/lib/auto/POSIX/memchr.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 471 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\memchr.al)"
-sub memchr {
- unimpl "memchr() is C-specific, use index() instead";
-}
-
-# end of POSIX::memchr
-1;
diff --git a/Master/perltl/lib/auto/POSIX/memcmp.al b/Master/perltl/lib/auto/POSIX/memcmp.al
deleted file mode 100644
index 91169494c1d..00000000000
--- a/Master/perltl/lib/auto/POSIX/memcmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 475 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\memcmp.al)"
-sub memcmp {
- unimpl "memcmp() is C-specific, use eq instead";
-}
-
-# end of POSIX::memcmp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/memcpy.al b/Master/perltl/lib/auto/POSIX/memcpy.al
deleted file mode 100644
index 39afe5ecfd9..00000000000
--- a/Master/perltl/lib/auto/POSIX/memcpy.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 479 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\memcpy.al)"
-sub memcpy {
- unimpl "memcpy() is C-specific, use = instead";
-}
-
-# end of POSIX::memcpy
-1;
diff --git a/Master/perltl/lib/auto/POSIX/memmove.al b/Master/perltl/lib/auto/POSIX/memmove.al
deleted file mode 100644
index 14643d3610b..00000000000
--- a/Master/perltl/lib/auto/POSIX/memmove.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 483 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\memmove.al)"
-sub memmove {
- unimpl "memmove() is C-specific, use = instead";
-}
-
-# end of POSIX::memmove
-1;
diff --git a/Master/perltl/lib/auto/POSIX/memset.al b/Master/perltl/lib/auto/POSIX/memset.al
deleted file mode 100644
index ea5df704a5e..00000000000
--- a/Master/perltl/lib/auto/POSIX/memset.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 487 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\memset.al)"
-sub memset {
- unimpl "memset() is C-specific, use x instead";
-}
-
-# end of POSIX::memset
-1;
diff --git a/Master/perltl/lib/auto/POSIX/mkdir.al b/Master/perltl/lib/auto/POSIX/mkdir.al
deleted file mode 100644
index b3ce65784b5..00000000000
--- a/Master/perltl/lib/auto/POSIX/mkdir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 568 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\mkdir.al)"
-sub mkdir {
- usage "mkdir(directoryname, mode)" if @_ != 2;
- CORE::mkdir($_[0], $_[1]);
-}
-
-# end of POSIX::mkdir
-1;
diff --git a/Master/perltl/lib/auto/POSIX/offsetof.al b/Master/perltl/lib/auto/POSIX/offsetof.al
deleted file mode 100644
index dc4d5065c1d..00000000000
--- a/Master/perltl/lib/auto/POSIX/offsetof.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 218 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\offsetof.al)"
-sub offsetof {
- unimpl "offsetof() is C-specific, stopped";
-}
-
-# end of POSIX::offsetof
-1;
diff --git a/Master/perltl/lib/auto/POSIX/opendir.al b/Master/perltl/lib/auto/POSIX/opendir.al
deleted file mode 100644
index 40aa101f3ca..00000000000
--- a/Master/perltl/lib/auto/POSIX/opendir.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 99 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\opendir.al)"
-sub opendir {
- usage "opendir(directory)" if @_ != 1;
- my $dirhandle;
- CORE::opendir($dirhandle, $_[0])
- ? $dirhandle
- : undef;
-}
-
-# end of POSIX::opendir
-1;
diff --git a/Master/perltl/lib/auto/POSIX/perror.al b/Master/perltl/lib/auto/POSIX/perror.al
deleted file mode 100644
index 2f65bc3a0cf..00000000000
--- a/Master/perltl/lib/auto/POSIX/perror.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 321 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\perror.al)"
-sub perror {
- print STDERR "@_: " if @_;
- print STDERR $!,"\n";
-}
-
-# end of POSIX::perror
-1;
diff --git a/Master/perltl/lib/auto/POSIX/pow.al b/Master/perltl/lib/auto/POSIX/pow.al
deleted file mode 100644
index 5f199d5fb29..00000000000
--- a/Master/perltl/lib/auto/POSIX/pow.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 167 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\pow.al)"
-sub pow {
- usage "pow(x,exponent)" if @_ != 2;
- $_[0] ** $_[1];
-}
-
-# end of POSIX::pow
-1;
diff --git a/Master/perltl/lib/auto/POSIX/printf.al b/Master/perltl/lib/auto/POSIX/printf.al
deleted file mode 100644
index 8c27863f9d9..00000000000
--- a/Master/perltl/lib/auto/POSIX/printf.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 326 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\printf.al)"
-sub printf {
- usage "printf(pattern, args...)" if @_ < 1;
- CORE::printf STDOUT @_;
-}
-
-# end of POSIX::printf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/putc.al b/Master/perltl/lib/auto/POSIX/putc.al
deleted file mode 100644
index 773c795c192..00000000000
--- a/Master/perltl/lib/auto/POSIX/putc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 331 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\putc.al)"
-sub putc {
- unimpl "putc() is C-specific--use print instead";
-}
-
-# end of POSIX::putc
-1;
diff --git a/Master/perltl/lib/auto/POSIX/putchar.al b/Master/perltl/lib/auto/POSIX/putchar.al
deleted file mode 100644
index b9ca943a724..00000000000
--- a/Master/perltl/lib/auto/POSIX/putchar.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 335 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\putchar.al)"
-sub putchar {
- unimpl "putchar() is C-specific--use print instead";
-}
-
-# end of POSIX::putchar
-1;
diff --git a/Master/perltl/lib/auto/POSIX/puts.al b/Master/perltl/lib/auto/POSIX/puts.al
deleted file mode 100644
index 3b2dd7d90a6..00000000000
--- a/Master/perltl/lib/auto/POSIX/puts.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 339 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\puts.al)"
-sub puts {
- unimpl "puts() is C-specific--use print instead";
-}
-
-# end of POSIX::puts
-1;
diff --git a/Master/perltl/lib/auto/POSIX/qsort.al b/Master/perltl/lib/auto/POSIX/qsort.al
deleted file mode 100644
index eb9c6d3586a..00000000000
--- a/Master/perltl/lib/auto/POSIX/qsort.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 450 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\qsort.al)"
-sub qsort {
- unimpl "qsort() is C-specific, use sort instead";
-}
-
-# end of POSIX::qsort
-1;
diff --git a/Master/perltl/lib/auto/POSIX/raise.al b/Master/perltl/lib/auto/POSIX/raise.al
deleted file mode 100644
index 1399c31f800..00000000000
--- a/Master/perltl/lib/auto/POSIX/raise.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 213 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\raise.al)"
-sub raise {
- usage "raise(sig)" if @_ != 1;
- CORE::kill $_[0], $$; # Is this good enough?
-}
-
-# end of POSIX::raise
-1;
diff --git a/Master/perltl/lib/auto/POSIX/rand.al b/Master/perltl/lib/auto/POSIX/rand.al
deleted file mode 100644
index 0a8b3982e3a..00000000000
--- a/Master/perltl/lib/auto/POSIX/rand.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 454 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\rand.al)"
-sub rand {
- unimpl "rand() is non-portable, use Perl's rand instead";
-}
-
-# end of POSIX::rand
-1;
diff --git a/Master/perltl/lib/auto/POSIX/readdir.al b/Master/perltl/lib/auto/POSIX/readdir.al
deleted file mode 100644
index 3c2e72fd0a0..00000000000
--- a/Master/perltl/lib/auto/POSIX/readdir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 107 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\readdir.al)"
-sub readdir {
- usage "readdir(dirhandle)" if @_ != 1;
- CORE::readdir($_[0]);
-}
-
-# end of POSIX::readdir
-1;
diff --git a/Master/perltl/lib/auto/POSIX/realloc.al b/Master/perltl/lib/auto/POSIX/realloc.al
deleted file mode 100644
index 28efa2ccec5..00000000000
--- a/Master/perltl/lib/auto/POSIX/realloc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 458 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\realloc.al)"
-sub realloc {
- unimpl "realloc() is C-specific, stopped";
-}
-
-# end of POSIX::realloc
-1;
diff --git a/Master/perltl/lib/auto/POSIX/redef.al b/Master/perltl/lib/auto/POSIX/redef.al
deleted file mode 100644
index 0265989b228..00000000000
--- a/Master/perltl/lib/auto/POSIX/redef.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 66 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\redef.al)"
-sub redef {
- my ($mess) = @_;
- croak "Use method $mess instead";
-}
-
-# end of POSIX::redef
-1;
diff --git a/Master/perltl/lib/auto/POSIX/remove.al b/Master/perltl/lib/auto/POSIX/remove.al
deleted file mode 100644
index e07b2fc0bd3..00000000000
--- a/Master/perltl/lib/auto/POSIX/remove.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 343 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\remove.al)"
-sub remove {
- usage "remove(filename)" if @_ != 1;
- CORE::unlink($_[0]);
-}
-
-# end of POSIX::remove
-1;
diff --git a/Master/perltl/lib/auto/POSIX/rename.al b/Master/perltl/lib/auto/POSIX/rename.al
deleted file mode 100644
index 10e8447f8b8..00000000000
--- a/Master/perltl/lib/auto/POSIX/rename.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 348 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\rename.al)"
-sub rename {
- usage "rename(oldfilename, newfilename)" if @_ != 2;
- CORE::rename($_[0], $_[1]);
-}
-
-# end of POSIX::rename
-1;
diff --git a/Master/perltl/lib/auto/POSIX/rewind.al b/Master/perltl/lib/auto/POSIX/rewind.al
deleted file mode 100644
index 5d7bc6fc17c..00000000000
--- a/Master/perltl/lib/auto/POSIX/rewind.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 353 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\rewind.al)"
-sub rewind {
- usage "rewind(filehandle)" if @_ != 1;
- CORE::seek($_[0],0,0);
-}
-
-# end of POSIX::rewind
-1;
diff --git a/Master/perltl/lib/auto/POSIX/rewinddir.al b/Master/perltl/lib/auto/POSIX/rewinddir.al
deleted file mode 100644
index 04ba2209b07..00000000000
--- a/Master/perltl/lib/auto/POSIX/rewinddir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 112 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\rewinddir.al)"
-sub rewinddir {
- usage "rewinddir(dirhandle)" if @_ != 1;
- CORE::rewinddir($_[0]);
-}
-
-# end of POSIX::rewinddir
-1;
diff --git a/Master/perltl/lib/auto/POSIX/rmdir.al b/Master/perltl/lib/auto/POSIX/rmdir.al
deleted file mode 100644
index 983a2262e9a..00000000000
--- a/Master/perltl/lib/auto/POSIX/rmdir.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 708 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\rmdir.al)"
-sub rmdir {
- usage "rmdir(directoryname)" if @_ != 1;
- CORE::rmdir($_[0]);
-}
-
-# end of POSIX::rmdir
-1;
diff --git a/Master/perltl/lib/auto/POSIX/scanf.al b/Master/perltl/lib/auto/POSIX/scanf.al
deleted file mode 100644
index 20774a6e869..00000000000
--- a/Master/perltl/lib/auto/POSIX/scanf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 358 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\scanf.al)"
-sub scanf {
- unimpl "scanf() is C-specific--use <> and regular expressions instead";
-}
-
-# end of POSIX::scanf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/setbuf.al b/Master/perltl/lib/auto/POSIX/setbuf.al
deleted file mode 100644
index 3dee5e3eb99..00000000000
--- a/Master/perltl/lib/auto/POSIX/setbuf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 713 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\setbuf.al)"
-sub setbuf {
- redef "IO::Handle::setbuf()";
-}
-
-# end of POSIX::setbuf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/setjmp.al b/Master/perltl/lib/auto/POSIX/setjmp.al
deleted file mode 100644
index 81cddb9ed62..00000000000
--- a/Master/perltl/lib/auto/POSIX/setjmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 196 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\setjmp.al)"
-sub setjmp {
- unimpl "setjmp() is C-specific: use eval {} instead";
-}
-
-# end of POSIX::setjmp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/setvbuf.al b/Master/perltl/lib/auto/POSIX/setvbuf.al
deleted file mode 100644
index db1a791cb2c..00000000000
--- a/Master/perltl/lib/auto/POSIX/setvbuf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 717 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\setvbuf.al)"
-sub setvbuf {
- redef "IO::Handle::setvbuf()";
-}
-
-# end of POSIX::setvbuf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/siglongjmp.al b/Master/perltl/lib/auto/POSIX/siglongjmp.al
deleted file mode 100644
index bfbf9916c52..00000000000
--- a/Master/perltl/lib/auto/POSIX/siglongjmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 200 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\siglongjmp.al)"
-sub siglongjmp {
- unimpl "siglongjmp() is C-specific: use die instead";
-}
-
-# end of POSIX::siglongjmp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/sigsetjmp.al b/Master/perltl/lib/auto/POSIX/sigsetjmp.al
deleted file mode 100644
index ef8ad5ec087..00000000000
--- a/Master/perltl/lib/auto/POSIX/sigsetjmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 204 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sigsetjmp.al)"
-sub sigsetjmp {
- unimpl "sigsetjmp() is C-specific: use eval {} instead";
-}
-
-# end of POSIX::sigsetjmp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/sin.al b/Master/perltl/lib/auto/POSIX/sin.al
deleted file mode 100644
index 97501e7fc5d..00000000000
--- a/Master/perltl/lib/auto/POSIX/sin.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 172 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sin.al)"
-sub sin {
- usage "sin(x)" if @_ != 1;
- CORE::sin($_[0]);
-}
-
-# end of POSIX::sin
-1;
diff --git a/Master/perltl/lib/auto/POSIX/sleep.al b/Master/perltl/lib/auto/POSIX/sleep.al
deleted file mode 100644
index ed44ef67ceb..00000000000
--- a/Master/perltl/lib/auto/POSIX/sleep.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 721 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sleep.al)"
-sub sleep {
- usage "sleep(seconds)" if @_ != 1;
- $_[0] - CORE::sleep($_[0]);
-}
-
-# end of POSIX::sleep
-1;
diff --git a/Master/perltl/lib/auto/POSIX/sprintf.al b/Master/perltl/lib/auto/POSIX/sprintf.al
deleted file mode 100644
index dc02870b96a..00000000000
--- a/Master/perltl/lib/auto/POSIX/sprintf.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 362 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sprintf.al)"
-sub sprintf {
- usage "sprintf(pattern,args)" if @_ == 0;
- CORE::sprintf(shift,@_);
-}
-
-# end of POSIX::sprintf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/sqrt.al b/Master/perltl/lib/auto/POSIX/sqrt.al
deleted file mode 100644
index def6780521d..00000000000
--- a/Master/perltl/lib/auto/POSIX/sqrt.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 177 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sqrt.al)"
-sub sqrt {
- usage "sqrt(x)" if @_ != 1;
- CORE::sqrt($_[0]);
-}
-
-# end of POSIX::sqrt
-1;
diff --git a/Master/perltl/lib/auto/POSIX/srand.al b/Master/perltl/lib/auto/POSIX/srand.al
deleted file mode 100644
index 6f4a41042b3..00000000000
--- a/Master/perltl/lib/auto/POSIX/srand.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 462 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\srand.al)"
-sub srand {
- unimpl "srand()";
-}
-
-# end of POSIX::srand
-1;
diff --git a/Master/perltl/lib/auto/POSIX/sscanf.al b/Master/perltl/lib/auto/POSIX/sscanf.al
deleted file mode 100644
index fe5d61fe665..00000000000
--- a/Master/perltl/lib/auto/POSIX/sscanf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 367 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\sscanf.al)"
-sub sscanf {
- unimpl "sscanf() is C-specific--use regular expressions instead";
-}
-
-# end of POSIX::sscanf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/stat.al b/Master/perltl/lib/auto/POSIX/stat.al
deleted file mode 100644
index eb483e18f70..00000000000
--- a/Master/perltl/lib/auto/POSIX/stat.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 573 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\stat.al)"
-sub stat {
- usage "stat(filename)" if @_ != 1;
- CORE::stat($_[0]);
-}
-
-# end of POSIX::stat
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strcat.al b/Master/perltl/lib/auto/POSIX/strcat.al
deleted file mode 100644
index ed3e4fe582c..00000000000
--- a/Master/perltl/lib/auto/POSIX/strcat.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 491 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strcat.al)"
-sub strcat {
- unimpl "strcat() is C-specific, use .= instead";
-}
-
-# end of POSIX::strcat
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strchr.al b/Master/perltl/lib/auto/POSIX/strchr.al
deleted file mode 100644
index 7802d2dc57d..00000000000
--- a/Master/perltl/lib/auto/POSIX/strchr.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 495 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strchr.al)"
-sub strchr {
- unimpl "strchr() is C-specific, use index() instead";
-}
-
-# end of POSIX::strchr
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strcmp.al b/Master/perltl/lib/auto/POSIX/strcmp.al
deleted file mode 100644
index 07127207853..00000000000
--- a/Master/perltl/lib/auto/POSIX/strcmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 499 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strcmp.al)"
-sub strcmp {
- unimpl "strcmp() is C-specific, use eq instead";
-}
-
-# end of POSIX::strcmp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strcpy.al b/Master/perltl/lib/auto/POSIX/strcpy.al
deleted file mode 100644
index fc48c859e2e..00000000000
--- a/Master/perltl/lib/auto/POSIX/strcpy.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 503 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strcpy.al)"
-sub strcpy {
- unimpl "strcpy() is C-specific, use = instead";
-}
-
-# end of POSIX::strcpy
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strcspn.al b/Master/perltl/lib/auto/POSIX/strcspn.al
deleted file mode 100644
index 1347dc79fd3..00000000000
--- a/Master/perltl/lib/auto/POSIX/strcspn.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 507 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strcspn.al)"
-sub strcspn {
- unimpl "strcspn() is C-specific, use regular expressions instead";
-}
-
-# end of POSIX::strcspn
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strerror.al b/Master/perltl/lib/auto/POSIX/strerror.al
deleted file mode 100644
index 55dcb64350c..00000000000
--- a/Master/perltl/lib/auto/POSIX/strerror.al
+++ /dev/null
@@ -1,14 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 511 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strerror.al)"
-sub strerror {
- usage "strerror(errno)" if @_ != 1;
- local $! = $_[0];
- $! . "";
-}
-
-# end of POSIX::strerror
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strlen.al b/Master/perltl/lib/auto/POSIX/strlen.al
deleted file mode 100644
index f417d1755aa..00000000000
--- a/Master/perltl/lib/auto/POSIX/strlen.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 517 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strlen.al)"
-sub strlen {
- unimpl "strlen() is C-specific, use length instead";
-}
-
-# end of POSIX::strlen
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strncat.al b/Master/perltl/lib/auto/POSIX/strncat.al
deleted file mode 100644
index bb890c89858..00000000000
--- a/Master/perltl/lib/auto/POSIX/strncat.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 521 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strncat.al)"
-sub strncat {
- unimpl "strncat() is C-specific, use .= instead";
-}
-
-# end of POSIX::strncat
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strncmp.al b/Master/perltl/lib/auto/POSIX/strncmp.al
deleted file mode 100644
index f8f0b2b5f84..00000000000
--- a/Master/perltl/lib/auto/POSIX/strncmp.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 525 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strncmp.al)"
-sub strncmp {
- unimpl "strncmp() is C-specific, use eq instead";
-}
-
-# end of POSIX::strncmp
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strncpy.al b/Master/perltl/lib/auto/POSIX/strncpy.al
deleted file mode 100644
index a9680b90514..00000000000
--- a/Master/perltl/lib/auto/POSIX/strncpy.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 529 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strncpy.al)"
-sub strncpy {
- unimpl "strncpy() is C-specific, use = instead";
-}
-
-# end of POSIX::strncpy
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strpbrk.al b/Master/perltl/lib/auto/POSIX/strpbrk.al
deleted file mode 100644
index 18e7fa29bcf..00000000000
--- a/Master/perltl/lib/auto/POSIX/strpbrk.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 533 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strpbrk.al)"
-sub strpbrk {
- unimpl "strpbrk() is C-specific, stopped";
-}
-
-# end of POSIX::strpbrk
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strrchr.al b/Master/perltl/lib/auto/POSIX/strrchr.al
deleted file mode 100644
index 8a0ad300422..00000000000
--- a/Master/perltl/lib/auto/POSIX/strrchr.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 537 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strrchr.al)"
-sub strrchr {
- unimpl "strrchr() is C-specific, use rindex() instead";
-}
-
-# end of POSIX::strrchr
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strspn.al b/Master/perltl/lib/auto/POSIX/strspn.al
deleted file mode 100644
index 162341b05a3..00000000000
--- a/Master/perltl/lib/auto/POSIX/strspn.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 541 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strspn.al)"
-sub strspn {
- unimpl "strspn() is C-specific, stopped";
-}
-
-# end of POSIX::strspn
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strstr.al b/Master/perltl/lib/auto/POSIX/strstr.al
deleted file mode 100644
index c99a491a780..00000000000
--- a/Master/perltl/lib/auto/POSIX/strstr.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 545 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strstr.al)"
-sub strstr {
- usage "strstr(big, little)" if @_ != 2;
- CORE::index($_[0], $_[1]);
-}
-
-# end of POSIX::strstr
-1;
diff --git a/Master/perltl/lib/auto/POSIX/strtok.al b/Master/perltl/lib/auto/POSIX/strtok.al
deleted file mode 100644
index a574fde27ed..00000000000
--- a/Master/perltl/lib/auto/POSIX/strtok.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 550 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\strtok.al)"
-sub strtok {
- unimpl "strtok() is C-specific, stopped";
-}
-
-# end of POSIX::strtok
-1;
diff --git a/Master/perltl/lib/auto/POSIX/system.al b/Master/perltl/lib/auto/POSIX/system.al
deleted file mode 100644
index 976f439cc35..00000000000
--- a/Master/perltl/lib/auto/POSIX/system.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 466 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\system.al)"
-sub system {
- usage "system(command)" if @_ != 1;
- CORE::system($_[0]);
-}
-
-# end of POSIX::system
-1;
diff --git a/Master/perltl/lib/auto/POSIX/time.al b/Master/perltl/lib/auto/POSIX/time.al
deleted file mode 100644
index 3f90c0a999d..00000000000
--- a/Master/perltl/lib/auto/POSIX/time.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 603 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\time.al)"
-sub time {
- usage "time()" if @_ != 0;
- CORE::time;
-}
-
-# end of POSIX::time
-1;
diff --git a/Master/perltl/lib/auto/POSIX/tmpfile.al b/Master/perltl/lib/auto/POSIX/tmpfile.al
deleted file mode 100644
index a64d2aff625..00000000000
--- a/Master/perltl/lib/auto/POSIX/tmpfile.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 371 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\tmpfile.al)"
-sub tmpfile {
- redef "IO::File::new_tmpfile()";
-}
-
-# end of POSIX::tmpfile
-1;
diff --git a/Master/perltl/lib/auto/POSIX/tolower.al b/Master/perltl/lib/auto/POSIX/tolower.al
deleted file mode 100644
index 8ec7b584813..00000000000
--- a/Master/perltl/lib/auto/POSIX/tolower.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 84 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\tolower.al)"
-sub tolower {
- usage "tolower(string)" if @_ != 1;
- lc($_[0]);
-}
-
-# end of POSIX::tolower
-1;
diff --git a/Master/perltl/lib/auto/POSIX/toupper.al b/Master/perltl/lib/auto/POSIX/toupper.al
deleted file mode 100644
index efc3c3ebeac..00000000000
--- a/Master/perltl/lib/auto/POSIX/toupper.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 89 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\toupper.al)"
-sub toupper {
- usage "toupper(string)" if @_ != 1;
- uc($_[0]);
-}
-
-# end of POSIX::toupper
-1;
diff --git a/Master/perltl/lib/auto/POSIX/umask.al b/Master/perltl/lib/auto/POSIX/umask.al
deleted file mode 100644
index 6812329253e..00000000000
--- a/Master/perltl/lib/auto/POSIX/umask.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 578 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\umask.al)"
-sub umask {
- usage "umask(mask)" if @_ != 1;
- CORE::umask($_[0]);
-}
-
-# end of POSIX::umask
-1;
diff --git a/Master/perltl/lib/auto/POSIX/ungetc.al b/Master/perltl/lib/auto/POSIX/ungetc.al
deleted file mode 100644
index b384b46b9d2..00000000000
--- a/Master/perltl/lib/auto/POSIX/ungetc.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 375 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\ungetc.al)"
-sub ungetc {
- redef "IO::Handle::ungetc()";
-}
-
-# end of POSIX::ungetc
-1;
diff --git a/Master/perltl/lib/auto/POSIX/unimpl.al b/Master/perltl/lib/auto/POSIX/unimpl.al
deleted file mode 100644
index b700d3d95b4..00000000000
--- a/Master/perltl/lib/auto/POSIX/unimpl.al
+++ /dev/null
@@ -1,14 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 71 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\unimpl.al)"
-sub unimpl {
- my ($mess) = @_;
- $mess =~ s/xxx//;
- croak "Unimplemented: POSIX::$mess";
-}
-
-# end of POSIX::unimpl
-1;
diff --git a/Master/perltl/lib/auto/POSIX/unlink.al b/Master/perltl/lib/auto/POSIX/unlink.al
deleted file mode 100644
index f8a44b79620..00000000000
--- a/Master/perltl/lib/auto/POSIX/unlink.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 726 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\unlink.al)"
-sub unlink {
- usage "unlink(filename)" if @_ != 1;
- CORE::unlink($_[0]);
-}
-
-# end of POSIX::unlink
-1;
diff --git a/Master/perltl/lib/auto/POSIX/usage.al b/Master/perltl/lib/auto/POSIX/usage.al
deleted file mode 100644
index e81f8619b5e..00000000000
--- a/Master/perltl/lib/auto/POSIX/usage.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 61 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\usage.al)"
-sub usage {
- my ($mess) = @_;
- croak "Usage: POSIX::$mess";
-}
-
-# end of POSIX::usage
-1;
diff --git a/Master/perltl/lib/auto/POSIX/utime.al b/Master/perltl/lib/auto/POSIX/utime.al
deleted file mode 100644
index 5ddf502f8cf..00000000000
--- a/Master/perltl/lib/auto/POSIX/utime.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 731 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\utime.al)"
-sub utime {
- usage "utime(filename, atime, mtime)" if @_ != 3;
- CORE::utime($_[1], $_[2], $_[0]);
-}
-
-# end of POSIX::utime
-1;
diff --git a/Master/perltl/lib/auto/POSIX/vfprintf.al b/Master/perltl/lib/auto/POSIX/vfprintf.al
deleted file mode 100644
index 561853cc60f..00000000000
--- a/Master/perltl/lib/auto/POSIX/vfprintf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 379 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\vfprintf.al)"
-sub vfprintf {
- unimpl "vfprintf() is C-specific";
-}
-
-# end of POSIX::vfprintf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/vprintf.al b/Master/perltl/lib/auto/POSIX/vprintf.al
deleted file mode 100644
index aa597c30eaa..00000000000
--- a/Master/perltl/lib/auto/POSIX/vprintf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 383 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\vprintf.al)"
-sub vprintf {
- unimpl "vprintf() is C-specific";
-}
-
-# end of POSIX::vprintf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/vsprintf.al b/Master/perltl/lib/auto/POSIX/vsprintf.al
deleted file mode 100644
index fcc93ff270b..00000000000
--- a/Master/perltl/lib/auto/POSIX/vsprintf.al
+++ /dev/null
@@ -1,12 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 387 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\vsprintf.al)"
-sub vsprintf {
- unimpl "vsprintf() is C-specific";
-}
-
-# end of POSIX::vsprintf
-1;
diff --git a/Master/perltl/lib/auto/POSIX/wait.al b/Master/perltl/lib/auto/POSIX/wait.al
deleted file mode 100644
index bb11314a208..00000000000
--- a/Master/perltl/lib/auto/POSIX/wait.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 583 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\wait.al)"
-sub wait {
- usage "wait()" if @_ != 0;
- CORE::wait();
-}
-
-# end of POSIX::wait
-1;
diff --git a/Master/perltl/lib/auto/POSIX/waitpid.al b/Master/perltl/lib/auto/POSIX/waitpid.al
deleted file mode 100644
index 2b10e7908b1..00000000000
--- a/Master/perltl/lib/auto/POSIX/waitpid.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from ..\..\lib\POSIX.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package POSIX;
-
-#line 588 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\waitpid.al)"
-sub waitpid {
- usage "waitpid(pid, options)" if @_ != 2;
- CORE::waitpid($_[0], $_[1]);
-}
-
-# end of POSIX::waitpid
-1;
diff --git a/Master/perltl/lib/auto/SDBM_File/SDBM_File.dll b/Master/perltl/lib/auto/SDBM_File/SDBM_File.dll
deleted file mode 100644
index 1b5a3da0bb1..00000000000
--- a/Master/perltl/lib/auto/SDBM_File/SDBM_File.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/Time/HiRes/HiRes.dll b/Master/perltl/lib/auto/Time/HiRes/HiRes.dll
deleted file mode 100644
index 8e0ebb6ac3e..00000000000
--- a/Master/perltl/lib/auto/Time/HiRes/HiRes.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/auto/re/re.dll b/Master/perltl/lib/auto/re/re.dll
deleted file mode 100644
index 6b83e6c3ba1..00000000000
--- a/Master/perltl/lib/auto/re/re.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/lib/base.pm b/Master/perltl/lib/base.pm
deleted file mode 100644
index 37f220f63a9..00000000000
--- a/Master/perltl/lib/base.pm
+++ /dev/null
@@ -1,94 +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.006_001;
-our $VERSION = "1.03";
-
-sub import {
- my $class = shift;
- my $fields_base;
- my $pkg = caller(0);
-
- foreach my $base (@_) {
- next if $pkg->isa($base);
- my $vglob;
- if ($vglob = ${"$base\::"}{VERSION} and *$vglob{SCALAR}) {
- $$vglob = "-1, set by base.pm" unless defined $$vglob;
- } else {
- 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 defined ${"$base\::VERSION"};
- }
- push @{"$pkg\::ISA"}, $base;
-
- # 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/Master/perltl/lib/bytes.pm b/Master/perltl/lib/bytes.pm
deleted file mode 100644
index cd82abc75b5..00000000000
--- a/Master/perltl/lib/bytes.pm
+++ /dev/null
@@ -1,68 +0,0 @@
-package bytes;
-
-our $VERSION = '1.00';
-
-$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
-
-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 UTF-8 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/Master/perltl/lib/bytes_heavy.pl b/Master/perltl/lib/bytes_heavy.pl
deleted file mode 100644
index 47bdbf91b0d..00000000000
--- a/Master/perltl/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/Master/perltl/lib/constant.pm b/Master/perltl/lib/constant.pm
deleted file mode 100644
index 93086d53985..00000000000
--- a/Master/perltl/lib/constant.pm
+++ /dev/null
@@ -1,345 +0,0 @@
-package constant;
-
-use strict;
-use 5.006_00;
-use warnings::register;
-
-our($VERSION, %declared);
-$VERSION = '1.04';
-
-#=======================================================================
-
-# 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 %constants = ();
- my $multiple = ref $_[0];
-
- if ( $multiple ) {
- if (ref $_[0] ne 'HASH') {
- require Carp;
- Carp::croak("Invalid reference type '".ref(shift)."' not 'HASH'");
- }
- %constants = %{+shift};
- } else {
- $constants{+shift} = undef;
- }
-
- foreach my $name ( keys %constants ) {
- 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 ($multiple) {
- my $scalar = $constants{$name};
- *$full_name = sub () { $scalar };
- } else {
- 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 PI => 4 * atan2(1, 1);
- use constant DEBUG => 0;
-
- print "Pi equals ", PI, "...\n" if DEBUG;
-
- use constant {
- SEC => 0,
- MIN => 1,
- HOUR => 2,
- MDAY => 3,
- MON => 4,
- YEAR => 5,
- WDAY => 6,
- YDAY => 7,
- ISDST => 8,
- };
-
- use constant WEEKDAYS => qw(
- Sunday Monday Tuesday Wednesday Thursday Friday Saturday
- );
-
- print "Today is ", (WEEKDAYS)[ (localtime)[WDAY] ], ".\n";
-
-=head1 DESCRIPTION
-
-This will declare a symbol to be a constant with the given 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>.
-
-When a constant is used in an expression, perl replaces it with its
-value at compile time, and may then optimize the expression further.
-In particular, any code in an C<if (CONSTANT)> block will be optimized
-away if the constant is false.
-
-=head1 NOTES
-
-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 ... }>).
-
-Constants defined using this module cannot be interpolated into
-strings like variables. However, concatenation works just fine:
-
- print "Pi equals PI...\n"; # WRONG: does not expand "PI"
- print "Pi equals ".PI."...\n"; # right
-
-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 ARRAY => [ 1,2,3,4 ];
- print ARRAY->[1];
- ARRAY->[1] = " be changed";
- print ARRAY->[1];
-
-Dereferencing constant references incorrectly (such as using an array
-subscript on a constant hash reference, or vice versa) will be trapped at
-compile time.
-
-Constants belong to the package they are defined in. To refer to a
-constant defined in another package, specify the full package name, as
-in C<Some::Package::CONSTANT>. Constants may be exported by modules,
-and may also be called as either class or instance methods, that is,
-as C<< Some::Package->CONSTANT >> or as C<< $obj->CONSTANT >> where
-C<$obj> is an instance of C<Some::Package>. Subclasses may define
-their own constants to override those in their base class.
-
-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.
-
-=head2 List constants
-
-Constants may be lists of more (or less) than one value. A constant
-with no values evaluates to C<undef> in scalar context. Note that
-constants with more than one value do I<not> return their last value in
-scalar context as one might expect. They currently return the number
-of values, but B<this may change in the future>. Do not use constants
-with multiple values in scalar context.
-
-B<NOTE:> This implies that the expression defining the value of a
-constant is evaluated in list context. This may produce surprises:
-
- use constant TIMESTAMP => localtime; # WRONG!
- use constant TIMESTAMP => scalar localtime; # right
-
-The first line above defines C<TIMESTAMP> as a 9-element list, as
-returned by localtime() in list context. To set it to the string
-returned by localtime() in scalar context, an explicit C<scalar>
-keyword is required.
-
-List constants are lists, not arrays. To index or slice them, they
-must be placed in parentheses.
-
- my @workdays = WEEKDAYS[1 .. 5]; # WRONG!
- my @workdays = (WEEKDAYS)[1 .. 5]; # right
-
-=head2 Defining multiple constants at once
-
-Instead of writing multiple C<use constant> statements, you may define
-multiple constants in a single statement by giving, instead of the
-constant name, a reference to a hash where the keys are the names of
-the constants to be defined. Obviously, all constants defined using
-this method must have a single value.
-
- use constant {
- FOO => "A single value",
- BAR => "This", "won't", "work!", # Error!
- };
-
-This is a fundamental limitation of the way hashes are constructed in
-Perl. The error messages produced when this happens will often be
-quite cryptic -- in the worst case there may be none at all, and
-you'll only later find that something is broken.
-
-When defining multiple constants, you cannot use the values of other
-constants defined in the same declaration. This is because the
-calling package doesn't know about any constant within that group
-until I<after> the C<use> statement is finished.
-
- use constant {
- BITMASK => 0xAFBAEBA8,
- NEGMASK => ~BITMASK, # Error!
- };
-
-=head2 Magic constants
-
-Magical 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"
-
-You can't produce a tied constant by giving a tied scalar as the
-value. References to tied variables, however, can be used as
-constants without any problems.
-
-=head1 TECHNICAL NOTES
-
-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.
-
-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 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 a 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.
-
-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<< => >> operator quotes a bareword
-immediately to its left, you have to say C<< CONSTANT() => 'value' >>
-(or simply use a comma in place of the big arrow) instead of
-C<< CONSTANT => 'value' >>.
-
-=head1 AUTHOR
-
-Tom Phoenix, E<lt>F<rootbeer@redcat.com>E<gt>, with help from
-many other folks.
-
-Multiple constant declarations at once added by Casey West,
-E<lt>F<casey@geeknest.com>E<gt>.
-
-Documentation mostly rewritten by Ilmari Karonen,
-E<lt>F<perl@itz.pp.sci.fi>E<gt>.
-
-=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/Master/perltl/lib/fields.pm b/Master/perltl/lib/fields.pm
deleted file mode 100644
index be2a7aedab4..00000000000
--- a/Master/perltl/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.006_001;
-use strict;
-no strict 'refs';
-use warnings::register;
-our(%attr, $VERSION);
-
-$VERSION = "1.02";
-
-# 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/Master/perltl/lib/integer.pm b/Master/perltl/lib/integer.pm
deleted file mode 100644
index caa1ea6951f..00000000000
--- a/Master/perltl/lib/integer.pm
+++ /dev/null
@@ -1,93 +0,0 @@
-package integer;
-
-our $VERSION = '1.00';
-
-=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/Master/perltl/lib/lib.pm b/Master/perltl/lib/lib.pm
deleted file mode 100644
index 83b8d737cd7..00000000000
--- a/Master/perltl/lib/lib.pm
+++ /dev/null
@@ -1,205 +0,0 @@
-package lib;
-
-# THIS FILE IS AUTOMATICALLY GENERATED FROM lib_pm.PL.
-# ANY CHANGES TO THIS FILE WILL BE OVERWRITTEN BY THE NEXT PERL BUILD.
-
-use Config;
-
-use strict;
-
-my $archname = $Config{archname};
-my $version = $Config{version};
-my @inc_version_list = reverse split / /, $Config{inc_version_list};
-
-
-our @ORIG_INC = @INC; # take a handy copy of 'original' value
-our $VERSION = '0.5564';
-my $Is_MacOS = $^O eq 'MacOS';
-my $Mac_FS;
-if ($Is_MacOS) {
- require File::Spec;
- $Mac_FS = eval { require Mac::FileSpec::Unixish };
-}
-
-sub import {
- shift;
-
- my %names;
- foreach (reverse @_) {
- if ($_ eq '') {
- require Carp;
- Carp::carp("Empty compile time value given to use lib");
- }
-
- local $_ = _nativize($_);
-
- 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)
- {
- my $dir = $Is_MacOS
- ? File::Spec->catdir( $_, $incver )
- : "$_/$incver";
- unshift(@INC, $dir) if -d $dir;
- }
- # Put a corresponding archlib directory in front of $_ if it
- # looks like $_ has an archlib directory below it.
- my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir)
- = _get_dirs($_);
- unshift(@INC, $arch_dir) if -d $arch_auto_dir;
- unshift(@INC, $version_dir) if -d $version_dir;
- unshift(@INC, $version_arch_dir) if -d $version_arch_dir;
- }
-
- # remove trailing duplicates
- @INC = grep { ++$names{$_} == 1 } @INC;
- return;
-}
-
-
-sub unimport {
- shift;
-
- my %names;
- foreach (@_) {
- local $_ = _nativize($_);
-
- my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir)
- = _get_dirs($_);
- ++$names{$_};
- ++$names{$arch_dir} if -d $arch_auto_dir;
- ++$names{$version_dir} if -d $version_dir;
- ++$names{$version_arch_dir} if -d $version_arch_dir;
- }
-
- # Remove ALL instances of each named directory.
- @INC = grep { !exists $names{$_} } @INC;
- return;
-}
-
-sub _get_dirs {
- my($dir) = @_;
- my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir);
-
- # we could use this for all platforms in the future, but leave it
- # Mac-only for now, until there is more time for testing it.
- if ($Is_MacOS) {
- $arch_auto_dir = File::Spec->catdir( $_, $archname, 'auto' );
- $arch_dir = File::Spec->catdir( $_, $archname, );
- $version_dir = File::Spec->catdir( $_, $version );
- $version_arch_dir = File::Spec->catdir( $_, $version, $archname );
- } else {
- $arch_auto_dir = "$_/$archname/auto";
- $arch_dir = "$_/$archname";
- $version_dir = "$_/$version";
- $version_arch_dir = "$_/$version/$archname";
- }
- return($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir);
-}
-
-sub _nativize {
- my($dir) = @_;
-
- if ($Is_MacOS && $Mac_FS && ! -d $dir) {
- $dir = Mac::FileSpec::Unixish::nativize($dir);
- $dir .= ":" unless $dir =~ /:$/;
- }
-
- return $dir;
-}
-
-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 CAVEATS
-
-In order to keep lib.pm small and simple, it only works with Unix
-filepaths. This doesn't mean it only works on Unix, but non-Unix
-users must first translate their file paths to Unix conventions.
-
- # VMS users wanting to put [.stuff.moo] into
- # their @INC would write
- use lib 'stuff/moo';
-
-=head1 NOTES
-
-In the future, this module will likely use File::Spec for determining
-paths, as it does now for Mac OS (where Unix-style or Mac-style paths
-work, and Unix-style paths are converted properly to Mac-style paths
-before being added to @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/Master/perltl/lib/newgetopt.pl b/Master/perltl/lib/newgetopt.pl
deleted file mode 100644
index 95eef220fe7..00000000000
--- a/Master/perltl/lib/newgetopt.pl
+++ /dev/null
@@ -1,75 +0,0 @@
-# $Id: newgetopt.pl,v 1.18 2001-09-21 15:34:59+02 jv Exp $
-
-# This library is no longer being maintained, and is included for backward
-# compatibility with Perl 4 programs which may require it.
-# It is now just a wrapper around the Getopt::Long module.
-#
-# In particular, this should not be used as an example of modern Perl
-# programming techniques.
-#
-# Suggested alternative: Getopt::Long
-
-{ 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/Master/perltl/lib/overload.pm b/Master/perltl/lib/overload.pm
deleted file mode 100644
index fb1a0d1236e..00000000000
--- a/Master/perltl/lib/overload.pm
+++ /dev/null
@@ -1,1432 +0,0 @@
-package overload;
-
-our $VERSION = '1.00';
-
-$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 {
- (ref $_[0] && 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 int",
- 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 presence 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", "int"
-
-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.
-
-Note that traditionally the Perl function L<int> rounds to 0, thus for
-floating-point-like types one should follow the same semantic. If
-C<int> is unavailable, it can be autogenerated using the overloading of
-C<0+>.
-
-=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>>.
-
-B<BUGS> Even in list context, the iterator is currently called only
-once and with scalar context.
-
-=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 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,
-which 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 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/Master/perltl/lib/re.pm b/Master/perltl/lib/re.pm
deleted file mode 100644
index 95e25407607..00000000000
--- a/Master/perltl/lib/re.pm
+++ /dev/null
@@ -1,134 +0,0 @@
-package re;
-
-our $VERSION = 0.03;
-
-=head1 NAME
-
-re - Perl pragma to alter regular expression behaviour
-
-=head1 SYNOPSIS
-
- use re 'taint';
- ($x) = ($^X =~ /^(.*)$/s); # $x is tainted here
-
- $pat = '(?{ $foo = 1 })';
- use re 'eval';
- /foo${pat}bar/; # won't fail (when not under -T switch)
-
- {
- no re 'taint'; # the default
- ($x) = ($^X =~ /^(.*)$/s); # $x is not tainted here
-
- no re 'eval'; # the default
- /foo${pat}bar/; # disallowed (with or without -T switch)
- }
-
- use re 'debug'; # NOT lexically scoped (as others are)
- /^(.*)$/s; # output debugging info during
- # compile and run time
-
- use re 'debugcolor'; # same as 'debug', but with colored output
- ...
-
-(We use $^X in these examples because it's tainted by default.)
-
-=head1 DESCRIPTION
-
-When C<use re 'taint'> is in effect, and a tainted string is the target
-of a regex, the regex memories (or values returned by the m// operator
-in list context) are tainted. This feature is useful when regex operations
-on tainted data aren't meant to extract safe substrings, but to perform
-other transformations.
-
-When C<use re 'eval'> is in effect, a regex is allowed to contain
-C<(?{ ... })> zero-width assertions even if regular expression contains
-variable interpolation. That is normally disallowed, since it is a
-potential security risk. Note that this pragma is ignored when the regular
-expression is obtained from tainted data, i.e. evaluation is always
-disallowed with tainted regular expresssions. See L<perlre/(?{ code })>.
-
-For the purpose of this pragma, interpolation of precompiled regular
-expressions (i.e., the result of C<qr//>) is I<not> considered variable
-interpolation. Thus:
-
- /foo${pat}bar/
-
-I<is> allowed if $pat is a precompiled regular expression, even
-if $pat contains C<(?{ ... })> assertions.
-
-When C<use re 'debug'> is in effect, perl emits debugging messages when
-compiling and using regular expressions. The output is the same as that
-obtained by running a C<-DDEBUGGING>-enabled perl interpreter with the
-B<-Dr> switch. It may be quite voluminous depending on the complexity
-of the match. Using C<debugcolor> instead of C<debug> enables a
-form of output that can be used to get a colorful display on terminals
-that understand termcap color sequences. Set C<$ENV{PERL_RE_TC}> to a
-comma-separated list of C<termcap> properties to use for highlighting
-strings on/off, pre-point part on/off.
-See L<perldebug/"Debugging regular expressions"> for additional info.
-
-The directive C<use re 'debug'> is I<not lexically scoped>, as the
-other directives are. It has both compile-time and run-time effects.
-
-See L<perlmodlib/Pragmatic Modules>.
-
-=cut
-
-# N.B. File::Basename contains a literal for 'taint' as a fallback. If
-# taint is changed here, File::Basename must be updated as well.
-my %bitmask = (
-taint => 0x00100000,
-eval => 0x00200000,
-);
-
-sub setcolor {
- eval { # Ignore errors
- require Term::Cap;
-
- my $terminal = Tgetent Term::Cap ({OSPEED => 9600}); # Avoid warning.
- my $props = $ENV{PERL_RE_TC} || 'md,me,so,se,us,ue';
- my @props = split /,/, $props;
- my $colors = join "\t", map {$terminal->Tputs($_,1)} @props;
-
- $colors =~ s/\0//g;
- $ENV{PERL_RE_COLORS} = $colors;
- };
-}
-
-sub bits {
- my $on = shift;
- my $bits = 0;
- unless (@_) {
- require Carp;
- Carp::carp("Useless use of \"re\" pragma");
- }
- foreach my $s (@_){
- if ($s eq 'debug' or $s eq 'debugcolor') {
- setcolor() if $s eq 'debugcolor';
- require XSLoader;
- XSLoader::load('re');
- install() if $on;
- uninstall() unless $on;
- next;
- }
- if (exists $bitmask{$s}) {
- $bits |= $bitmask{$s};
- } else {
- require Carp;
- Carp::carp("Unknown \"re\" subpragma '$s' (known ones are: @{[join(', ', map {qq('$_')} 'debug', 'debugcolor', sort keys %bitmask)]})");
- }
- }
- $bits;
-}
-
-sub import {
- shift;
- $^H |= bits(1, @_);
-}
-
-sub unimport {
- shift;
- $^H &= ~ bits(0, @_);
-}
-
-1;
diff --git a/Master/perltl/lib/strict.pm b/Master/perltl/lib/strict.pm
deleted file mode 100644
index 737cb18b1ad..00000000000
--- a/Master/perltl/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.02";
-
-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/Master/perltl/lib/subs.pm b/Master/perltl/lib/subs.pm
deleted file mode 100644
index e5a9aa8827d..00000000000
--- a/Master/perltl/lib/subs.pm
+++ /dev/null
@@ -1,40 +0,0 @@
-package subs;
-
-our $VERSION = '1.00';
-
-=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/Master/perltl/lib/unicore/ArabLink.pl b/Master/perltl/lib/unicore/ArabLink.pl
deleted file mode 100644
index f68a8af519a..00000000000
--- a/Master/perltl/lib/unicore/ArabLink.pl
+++ /dev/null
@@ -1,49 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-return <<'END';
-0621 U
-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
-066E 066F 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 R
-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
-200D C
-END
diff --git a/Master/perltl/lib/unicore/ArabLnkGrp.pl b/Master/perltl/lib/unicore/ArabLnkGrp.pl
deleted file mode 100644
index 2e766d50a8f..00000000000
--- a/Master/perltl/lib/unicore/ArabLnkGrp.pl
+++ /dev/null
@@ -1,98 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-return <<'END';
-0621 <no shaping>
-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
-066E BEH
-066F QAF
-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 TEH MARBUTA
-06FA SEEN
-06FB SAD
-06FC AIN
-0710 ALAPH
-0712 BETH
-0713 0714 GAMAL
-0715 0716 DALATH RISH
-0717 HE
-0718 SYRIAC 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
-200D <no shaping>
-END
diff --git a/Master/perltl/lib/unicore/Bidirectional.pl b/Master/perltl/lib/unicore/Bidirectional.pl
deleted file mode 100644
index 0fd1fff9321..00000000000
--- a/Master/perltl/lib/unicore/Bidirectional.pl
+++ /dev/null
@@ -1,692 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# 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 0220 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 034F NSM
-0360 036F 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 03F5 L
-03F6 ON
-0400 0482 L
-0483 0486 NSM
-0488 0489 NSM
-048A 04CE L
-04D0 04F5 L
-04F8 04F9 L
-0500 050F 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 066F AL
-0670 NSM
-0671 06D5 AL
-06D6 06DC NSM
-06DD AL
-06DE 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
-07B1 AL
-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 10F8 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
-1700 170C L
-170E 1711 L
-1712 1714 NSM
-1720 1731 L
-1732 1734 NSM
-1735 1736 L
-1740 1751 L
-1752 1753 NSM
-1760 176C L
-176E 1770 L
-1772 1773 NSM
-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 180D NSM
-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 2052 ON
-2057 ON
-205F WS
-2060 2063 BN
-206A 206F BN
-2070 EN
-2071 L
-2074 2079 EN
-207A 207B ET
-207C 207E ON
-207F L
-2080 2089 EN
-208A 208B ET
-208C 208E ON
-20A0 20B1 ET
-20D0 20EA 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
-213D 213F L
-2140 2144 ON
-2145 2149 L
-214A 214B ON
-2153 215F ON
-2160 2183 L
-2190 2211 ON
-2212 2213 ET
-2214 2335 ON
-2336 237A L
-237B 2394 ON
-2395 L
-2396 23CE ON
-2400 2426 ON
-2440 244A ON
-2460 249B EN
-249C 24E9 L
-24EA EN
-24EB 24FE ON
-2500 2613 ON
-2616 2617 ON
-2619 267D ON
-2680 2689 ON
-2701 2704 ON
-2706 2709 ON
-270C 2727 ON
-2729 274B ON
-274D ON
-274F 2752 ON
-2756 ON
-2758 275E ON
-2761 2794 ON
-2798 27AF ON
-27B1 27BE ON
-27D0 27EB ON
-27F0 2AFF 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 303C L
-303D 303F ON
-3041 3096 L
-3099 309A NSM
-309B 309C ON
-309D 309F L
-30A0 ON
-30A1 30FA L
-30FB ON
-30FC 30FF L
-3105 312C L
-3131 318E L
-3190 31B7 L
-31F0 321C L
-3220 3243 L
-3251 325F ON
-3260 327B L
-327F 32B0 L
-32B1 32BF ON
-32C0 32CB L
-32D0 32FE L
-3300 3376 L
-337B 33DD L
-33E0 33FE L
-A000 A48C L
-A490 A4C6 ON
-F900 FA2D L
-FA30 FA6A 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 FDFC AL
-FE00 FE0F NSM
-FE20 FE23 NSM
-FE30 FE46 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 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 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
-10300 1031E L
-10320 10323 L
-10330 1034A L
-10400 10425 L
-10428 1044D L
-1D000 1D0F5 L
-1D100 1D126 L
-1D12A 1D166 L
-1D167 1D169 NSM
-1D16A 1D172 L
-1D173 1D17A BN
-1D17B 1D182 NSM
-1D183 1D184 L
-1D185 1D18B NSM
-1D18C 1D1A9 L
-1D1AA 1D1AD NSM
-1D1AE 1D1DD L
-1D400 1D454 L
-1D456 1D49C L
-1D49E 1D49F L
-1D4A2 L
-1D4A5 1D4A6 L
-1D4A9 1D4AC L
-1D4AE 1D4B9 L
-1D4BB L
-1D4BD 1D4C0 L
-1D4C2 1D4C3 L
-1D4C5 1D505 L
-1D507 1D50A L
-1D50D 1D514 L
-1D516 1D51C L
-1D51E 1D539 L
-1D53B 1D53E L
-1D540 1D544 L
-1D546 L
-1D54A 1D550 L
-1D552 1D6A3 L
-1D6A8 1D7C9 L
-1D7CE 1D7FF EN
-2F800 2FA1D L
-E0001 BN
-E0020 E007F BN
-END
diff --git a/Master/perltl/lib/unicore/Blocks.pl b/Master/perltl/lib/unicore/Blocks.pl
deleted file mode 100644
index 07f2a325cab..00000000000
--- a/Master/perltl/lib/unicore/Blocks.pl
+++ /dev/null
@@ -1,116 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# 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 and Coptic
-0400 04FF Cyrillic
-0500 052F Cyrillic Supplementary
-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
-1700 171F Tagalog
-1720 173F Hanunoo
-1740 175F Buhid
-1760 177F Tagbanwa
-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 Diacritical 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
-27C0 27EF Miscellaneous Mathematical Symbols-A
-27F0 27FF Supplemental Arrows-A
-2800 28FF Braille Patterns
-2900 297F Supplemental Arrows-B
-2980 29FF Miscellaneous Mathematical Symbols-B
-2A00 2AFF Supplemental Mathematical Operators
-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
-31F0 31FF Katakana Phonetic Extensions
-3200 32FF Enclosed CJK Letters and Months
-3300 33FF CJK Compatibility
-3400 4DBF CJK Unified Ideographs Extension A
-4E00 9FFF CJK Unified Ideographs
-A000 A48F Yi Syllables
-A490 A4CF Yi Radicals
-AC00 D7AF Hangul Syllables
-D800 DB7F High Surrogates
-DB80 DBFF High Private Use Surrogates
-DC00 DFFF Low Surrogates
-E000 F8FF Private Use Area
-F900 FAFF CJK Compatibility Ideographs
-FB00 FB4F Alphabetic Presentation Forms
-FB50 FDFF Arabic Presentation Forms-A
-FE00 FE0F Variation Selectors
-FE20 FE2F Combining Half Marks
-FE30 FE4F CJK Compatibility Forms
-FE50 FE6F Small Form Variants
-FE70 FEFF Arabic Presentation Forms-B
-FF00 FFEF Halfwidth and Fullwidth Forms
-FFF0 FFFF Specials
-10300 1032F Old Italic
-10330 1034F Gothic
-10400 1044F Deseret
-1D000 1D0FF Byzantine Musical Symbols
-1D100 1D1FF Musical Symbols
-1D400 1D7FF Mathematical Alphanumeric Symbols
-20000 2A6DF CJK Unified Ideographs Extension B
-2F800 2FA1F CJK Compatibility Ideographs Supplement
-E0000 E007F Tags
-F0000 FFFFF Supplementary Private Use Area-A
-100000 10FFFF Supplementary Private Use Area-B
-END
diff --git a/Master/perltl/lib/unicore/Canonical.pl b/Master/perltl/lib/unicore/Canonical.pl
deleted file mode 100644
index 947fd2b9d5c..00000000000
--- a/Master/perltl/lib/unicore/Canonical.pl
+++ /dev/null
@@ -1,816 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-##
-## Data in this file used by ../utf8_heavy.pl
-##
-
-## Mapping from lc(canonical name) to filename in ./lib
-%utf8::Canonical = (
- alphabetic => 'Alphabet',
-
- # InAlphabeticPresentationForms
- alphabeticpresentationforms => 'InAlphab',
-
- arabic => 'Arabic',
-
- # InArabicPresentationFormsA
- arabicpresentationformsa => 'InArabi3',
-
- # InArabicPresentationFormsB
- arabicpresentationformsb => 'InArabi2',
-
- armenian => 'Armenian',
-
- # InArrows
- arrows => 'InArrows',
-
- # AsciiHexDigit
- asciihexdigit => 'AsciiHex',
-
- # InBasicLatin
- basiclatin => 'InBasicL',
-
- bengali => 'Bengali',
-
- # BidiControl
- bidicontrol => 'BidiCont',
-
- # InBlockElements
- blockelements => 'InBlockE',
-
- bopomofo => 'Bopomofo',
-
- # InBopomofoExtended
- bopomofoextended => 'InBopom2',
-
- # InBoxDrawing
- boxdrawing => 'InBoxDra',
-
- # InBraillePatterns
- braillepatterns => 'InBraill',
-
- buhid => 'Buhid',
-
- # InByzantineMusicalSymbols
- byzantinemusicalsymbols => 'InByzant',
-
- # CanadianAboriginal
- canadianaboriginal => 'Canadian',
-
- cherokee => 'Cherokee',
-
- # InCjkCompatibility
- cjkcompatibility => 'InCjkCom',
-
- # InCjkCompatibilityForms
- cjkcompatibilityforms => 'InCjkCo2',
-
- # InCjkCompatibilityIdeographs
- cjkcompatibilityideographs => 'InCjkCo3',
-
- # InCjkCompatibilityIdeographsSupplement
- cjkcompatibilityideographssupplement => 'InCjkCo4',
-
- # InCjkRadicalsSupplement
- cjkradicalssupplement => 'InCjkRad',
-
- # InCjkSymbolsAndPunctuation
- cjksymbolsandpunctuation => 'InCjkSym',
-
- # InCjkUnifiedIdeographs
- cjkunifiedideographs => 'InCjkUni',
-
- # InCjkUnifiedIdeographsExtensionA
- cjkunifiedideographsextensiona => 'InCjkUn3',
-
- # InCjkUnifiedIdeographsExtensionB
- cjkunifiedideographsextensionb => 'InCjkUn2',
-
- # ClosePunctuation
- closepunctuation => 'Pe',
-
- # InCombiningDiacriticalMarks
- combiningdiacriticalmarks => 'InCombi2',
-
- # InCombiningDiacriticalMarksForSymbols
- combiningdiacriticalmarksforsymbols => 'InCombi3',
-
- # InCombiningHalfMarks
- combininghalfmarks => 'InCombin',
-
- common => 'Common',
-
- # ConnectorPunctuation
- connectorpunctuation => 'Pc',
-
- control => 'Cc',
-
- # InControlPictures
- controlpictures => 'InContro',
-
- # CurrencySymbol
- currencysymbol => 'Sc',
-
- # InCurrencySymbols
- currencysymbols => 'InCurren',
-
- cyrillic => 'Cyrillic',
-
- # InCyrillicSupplementary
- cyrillicsupplementary => 'InCyril2',
-
- dash => 'Dash',
-
- # DashPunctuation
- dashpunctuation => 'Pd',
-
- # DecimalNumber
- decimalnumber => 'Nd',
-
- deprecated => 'Deprecat',
- deseret => 'Deseret',
- devanagari => 'Devanaga',
- diacritic => 'Diacriti',
-
- # InDingbats
- dingbats => 'InDingba',
-
- # InEnclosedAlphanumerics
- enclosedalphanumerics => 'InEnclos',
-
- # InEnclosedCjkLettersAndMonths
- enclosedcjklettersandmonths => 'InEnclo2',
-
- # EnclosingMark
- enclosingmark => 'Me',
-
- ethiopic => 'Ethiopic',
- extender => 'Extender',
-
- # FinalPunctuation
- finalpunctuation => 'Pf',
-
- format => 'Cf',
-
- # InGeneralPunctuation
- generalpunctuation => 'InGenera',
-
- # InGeometricShapes
- geometricshapes => 'InGeomet',
-
- georgian => 'Georgian',
- gothic => 'Gothic',
-
- # GraphemeLink
- graphemelink => 'Grapheme',
-
- greek => 'Greek',
-
- # InGreekAndCoptic
- greekandcoptic => 'InGreekA',
-
- # InGreekExtended
- greekextended => 'InGreekE',
-
- gujarati => 'Gujarati',
- gurmukhi => 'Gurmukhi',
-
- # InHalfwidthAndFullwidthForms
- halfwidthandfullwidthforms => 'InHalfwi',
-
- han => 'Han',
- hangul => 'Hangul',
-
- # InHangulCompatibilityJamo
- hangulcompatibilityjamo => 'InHangu3',
-
- # InHangulJamo
- hanguljamo => 'InHangul',
-
- # InHangulSyllables
- hangulsyllables => 'InHangu2',
-
- hanunoo => 'Hanunoo',
- hebrew => 'Hebrew',
-
- # HexDigit
- hexdigit => 'HexDigit',
-
- # InHighPrivateUseSurrogates
- highprivateusesurrogates => 'InHighPr',
-
- # InHighSurrogates
- highsurrogates => 'InHighSu',
-
- hiragana => 'Hiragana',
- hyphen => 'Hyphen',
-
- # IdContinue
- idcontinue => 'IdContin',
-
- ideographic => 'Ideograp',
-
- # InIdeographicDescriptionCharacters
- ideographicdescriptioncharacters => 'InIdeogr',
-
- # IdsBinaryOperator
- idsbinaryoperator => 'IdsBinar',
-
- # IdStart
- idstart => 'IdStart',
-
- # IdsTrinaryOperator
- idstrinaryoperator => 'IdsTrina',
-
- # InAlphabeticPresentationForms
- inalphabeticpresentationforms => 'InAlphab',
-
- # InArabic
- inarabic => 'InArabic',
-
- # InArabicPresentationFormsA
- inarabicpresentationformsa => 'InArabi3',
-
- # InArabicPresentationFormsB
- inarabicpresentationformsb => 'InArabi2',
-
- # InArmenian
- inarmenian => 'InArmeni',
-
- # InArrows
- inarrows => 'InArrows',
-
- # InBasicLatin
- inbasiclatin => 'InBasicL',
-
- # InBengali
- inbengali => 'InBengal',
-
- # InBlockElements
- inblockelements => 'InBlockE',
-
- # InBopomofo
- inbopomofo => 'InBopomo',
-
- # InBopomofoExtended
- inbopomofoextended => 'InBopom2',
-
- # InBoxDrawing
- inboxdrawing => 'InBoxDra',
-
- # InBraillePatterns
- inbraillepatterns => 'InBraill',
-
- # InBuhid
- inbuhid => 'InBuhid',
-
- # InByzantineMusicalSymbols
- inbyzantinemusicalsymbols => 'InByzant',
-
- # InCherokee
- incherokee => 'InCherok',
-
- # InCjkCompatibility
- incjkcompatibility => 'InCjkCom',
-
- # InCjkCompatibilityForms
- incjkcompatibilityforms => 'InCjkCo2',
-
- # InCjkCompatibilityIdeographs
- incjkcompatibilityideographs => 'InCjkCo3',
-
- # InCjkCompatibilityIdeographsSupplement
- incjkcompatibilityideographssupplement => 'InCjkCo4',
-
- # InCjkRadicalsSupplement
- incjkradicalssupplement => 'InCjkRad',
-
- # InCjkSymbolsAndPunctuation
- incjksymbolsandpunctuation => 'InCjkSym',
-
- # InCjkUnifiedIdeographs
- incjkunifiedideographs => 'InCjkUni',
-
- # InCjkUnifiedIdeographsExtensionA
- incjkunifiedideographsextensiona => 'InCjkUn3',
-
- # InCjkUnifiedIdeographsExtensionB
- incjkunifiedideographsextensionb => 'InCjkUn2',
-
- # InCombiningDiacriticalMarks
- incombiningdiacriticalmarks => 'InCombi2',
-
- # InCombiningDiacriticalMarksForSymbols
- incombiningdiacriticalmarksforsymbols => 'InCombi3',
-
- # InCombiningHalfMarks
- incombininghalfmarks => 'InCombin',
-
- # InControlPictures
- incontrolpictures => 'InContro',
-
- # InCurrencySymbols
- incurrencysymbols => 'InCurren',
-
- # InCyrillic
- incyrillic => 'InCyrill',
-
- # InCyrillicSupplementary
- incyrillicsupplementary => 'InCyril2',
-
- # InDeseret
- indeseret => 'InDesere',
-
- # InDevanagari
- indevanagari => 'InDevana',
-
- # InDingbats
- indingbats => 'InDingba',
-
- # InEnclosedAlphanumerics
- inenclosedalphanumerics => 'InEnclos',
-
- # InEnclosedCjkLettersAndMonths
- inenclosedcjklettersandmonths => 'InEnclo2',
-
- # InEthiopic
- inethiopic => 'InEthiop',
-
- # InGeneralPunctuation
- ingeneralpunctuation => 'InGenera',
-
- # InGeometricShapes
- ingeometricshapes => 'InGeomet',
-
- # InGeorgian
- ingeorgian => 'InGeorgi',
-
- # InGothic
- ingothic => 'InGothic',
-
- # InGreekAndCoptic
- ingreekandcoptic => 'InGreekA',
-
- # InGreekExtended
- ingreekextended => 'InGreekE',
-
- # InGujarati
- ingujarati => 'InGujara',
-
- # InGurmukhi
- ingurmukhi => 'InGurmuk',
-
- # InHalfwidthAndFullwidthForms
- inhalfwidthandfullwidthforms => 'InHalfwi',
-
- # InHangulCompatibilityJamo
- inhangulcompatibilityjamo => 'InHangu3',
-
- # InHangulJamo
- inhanguljamo => 'InHangul',
-
- # InHangulSyllables
- inhangulsyllables => 'InHangu2',
-
- # InHanunoo
- inhanunoo => 'InHanuno',
-
- # InHebrew
- inhebrew => 'InHebrew',
-
- inherited => 'Inherite',
-
- # InHighPrivateUseSurrogates
- inhighprivateusesurrogates => 'InHighPr',
-
- # InHighSurrogates
- inhighsurrogates => 'InHighSu',
-
- # InHiragana
- inhiragana => 'InHiraga',
-
- # InIdeographicDescriptionCharacters
- inideographicdescriptioncharacters => 'InIdeogr',
-
- # InIpaExtensions
- inipaextensions => 'InIpaExt',
-
- # InitialPunctuation
- initialpunctuation => 'Pi',
-
- # InKanbun
- inkanbun => 'InKanbun',
-
- # InKangxiRadicals
- inkangxiradicals => 'InKangxi',
-
- # InKannada
- inkannada => 'InKannad',
-
- # InKatakana
- inkatakana => 'InKataka',
-
- # InKatakanaPhoneticExtensions
- inkatakanaphoneticextensions => 'InKatak2',
-
- # InKhmer
- inkhmer => 'InKhmer',
-
- # InLao
- inlao => 'InLao',
-
- # InLatin1Supplement
- inlatin1supplement => 'InLatin1',
-
- # InLatinExtendedA
- inlatinextendeda => 'InLatin2',
-
- # InLatinExtendedAdditional
- inlatinextendedadditional => 'InLatin3',
-
- # InLatinExtendedB
- inlatinextendedb => 'InLatinE',
-
- # InLetterlikeSymbols
- inletterlikesymbols => 'InLetter',
-
- # InLowSurrogates
- inlowsurrogates => 'InLowSur',
-
- # InMalayalam
- inmalayalam => 'InMalaya',
-
- # InMathematicalAlphanumericSymbols
- inmathematicalalphanumericsymbols => 'InMathe2',
-
- # InMathematicalOperators
- inmathematicaloperators => 'InMathem',
-
- # InMiscellaneousMathematicalSymbolsA
- inmiscellaneousmathematicalsymbolsa => 'InMisce3',
-
- # InMiscellaneousMathematicalSymbolsB
- inmiscellaneousmathematicalsymbolsb => 'InMisce4',
-
- # InMiscellaneousSymbols
- inmiscellaneoussymbols => 'InMiscel',
-
- # InMiscellaneousTechnical
- inmiscellaneoustechnical => 'InMisce2',
-
- # InMongolian
- inmongolian => 'InMongol',
-
- # InMusicalSymbols
- inmusicalsymbols => 'InMusica',
-
- # InMyanmar
- inmyanmar => 'InMyanma',
-
- # InNumberForms
- innumberforms => 'InNumber',
-
- # InOgham
- inogham => 'InOgham',
-
- # InOldItalic
- inolditalic => 'InOldIta',
-
- # InOpticalCharacterRecognition
- inopticalcharacterrecognition => 'InOptica',
-
- # InOriya
- inoriya => 'InOriya',
-
- # InPrivateUseArea
- inprivateusearea => 'InPrivat',
-
- # InRunic
- inrunic => 'InRunic',
-
- # InSinhala
- insinhala => 'InSinhal',
-
- # InSmallFormVariants
- insmallformvariants => 'InSmallF',
-
- # InSpacingModifierLetters
- inspacingmodifierletters => 'InSpacin',
-
- # InSpecials
- inspecials => 'InSpecia',
-
- # InSuperscriptsAndSubscripts
- insuperscriptsandsubscripts => 'InSupers',
-
- # InSupplementalArrowsA
- insupplementalarrowsa => 'InSuppl2',
-
- # InSupplementalArrowsB
- insupplementalarrowsb => 'InSupple',
-
- # InSupplementalMathematicalOperators
- insupplementalmathematicaloperators => 'InSuppl5',
-
- # InSupplementaryPrivateUseAreaA
- insupplementaryprivateuseareaa => 'InSuppl3',
-
- # InSupplementaryPrivateUseAreaB
- insupplementaryprivateuseareab => 'InSuppl4',
-
- # InSyriac
- insyriac => 'InSyriac',
-
- # InTagalog
- intagalog => 'InTagalo',
-
- # InTagbanwa
- intagbanwa => 'InTagban',
-
- # InTags
- intags => 'InTags',
-
- # InTamil
- intamil => 'InTamil',
-
- # InTelugu
- intelugu => 'InTelugu',
-
- # InThaana
- inthaana => 'InThaana',
-
- # InThai
- inthai => 'InThai',
-
- # InTibetan
- intibetan => 'InTibeta',
-
- # InUnifiedCanadianAboriginalSyllabics
- inunifiedcanadianaboriginalsyllabics => 'InUnifie',
-
- # InVariationSelectors
- invariationselectors => 'InVariat',
-
- # InYiRadicals
- inyiradicals => 'InYiRadi',
-
- # InYiSyllables
- inyisyllables => 'InYiSyll',
-
- # InIpaExtensions
- ipaextensions => 'InIpaExt',
-
- # JoinControl
- joincontrol => 'JoinCont',
-
- # InKanbun
- kanbun => 'InKanbun',
-
- # InKangxiRadicals
- kangxiradicals => 'InKangxi',
-
- kannada => 'Kannada',
- katakana => 'Katakana',
-
- # InKatakanaPhoneticExtensions
- katakanaphoneticextensions => 'InKatak2',
-
- khmer => 'Khmer',
- lao => 'Lao',
- latin => 'Latin',
-
- # InLatin1Supplement
- latin1supplement => 'InLatin1',
-
- # InLatinExtendedA
- latinextendeda => 'InLatin2',
-
- # InLatinExtendedAdditional
- latinextendedadditional => 'InLatin3',
-
- # InLatinExtendedB
- latinextendedb => 'InLatinE',
-
- letter => 'L',
-
- # InLetterlikeSymbols
- letterlikesymbols => 'InLetter',
-
- # LetterNumber
- letternumber => 'Nl',
-
- # LineSeparator
- lineseparator => 'Zl',
-
- # LogicalOrderException
- logicalorderexception => 'LogicalO',
-
- lowercase => 'Lowercas',
-
- # LowercaseLetter
- lowercaseletter => 'Ll',
-
- # InLowSurrogates
- lowsurrogates => 'InLowSur',
-
- malayalam => 'Malayala',
- mark => 'M',
- math => 'Math',
-
- # InMathematicalAlphanumericSymbols
- mathematicalalphanumericsymbols => 'InMathe2',
-
- # InMathematicalOperators
- mathematicaloperators => 'InMathem',
-
- # MathSymbol
- mathsymbol => 'Sm',
-
- # InMiscellaneousMathematicalSymbolsA
- miscellaneousmathematicalsymbolsa => 'InMisce3',
-
- # InMiscellaneousMathematicalSymbolsB
- miscellaneousmathematicalsymbolsb => 'InMisce4',
-
- # InMiscellaneousSymbols
- miscellaneoussymbols => 'InMiscel',
-
- # InMiscellaneousTechnical
- miscellaneoustechnical => 'InMisce2',
-
- # ModifierLetter
- modifierletter => 'Lm',
-
- # ModifierSymbol
- modifiersymbol => 'Sk',
-
- mongolian => 'Mongolia',
-
- # InMusicalSymbols
- musicalsymbols => 'InMusica',
-
- myanmar => 'Myanmar',
-
- # NoncharacterCodePoint
- noncharactercodepoint => 'Nonchara',
-
- # NonSpacingMark
- nonspacingmark => 'Mn',
-
- number => 'N',
-
- # InNumberForms
- numberforms => 'InNumber',
-
- ogham => 'Ogham',
-
- # OldItalic
- olditalic => 'OldItali',
-
- # OpenPunctuation
- openpunctuation => 'Ps',
-
- # InOpticalCharacterRecognition
- opticalcharacterrecognition => 'InOptica',
-
- oriya => 'Oriya',
- other => 'C',
-
- # OtherAlphabetic
- otheralphabetic => 'OtherAlp',
-
- # OtherDefaultIgnorableCodePoint
- otherdefaultignorablecodepoint => 'OtherDef',
-
- # OtherGraphemeExtend
- othergraphemeextend => 'OtherGra',
-
- # OtherLetter
- otherletter => 'Lo',
-
- # OtherLowercase
- otherlowercase => 'OtherLow',
-
- # OtherMath
- othermath => 'OtherMat',
-
- # OtherNumber
- othernumber => 'No',
-
- # OtherPunctuation
- otherpunctuation => 'Po',
-
- # OtherSymbol
- othersymbol => 'So',
-
- # OtherUppercase
- otheruppercase => 'OtherUpp',
-
- # ParagraphSeparator
- paragraphseparator => 'Zp',
-
- # PrivateUse
- privateuse => 'Co',
-
- # InPrivateUseArea
- privateusearea => 'InPrivat',
-
- punctuation => 'P',
-
- # QuotationMark
- quotationmark => 'Quotatio',
-
- radical => 'Radical',
- runic => 'Runic',
- separator => 'Z',
- sinhala => 'Sinhala',
-
- # InSmallFormVariants
- smallformvariants => 'InSmallF',
-
- # SoftDotted
- softdotted => 'SoftDott',
-
- # SpaceSeparator
- spaceseparator => 'Zs',
-
- # SpacingMark
- spacingmark => 'Mc',
-
- # InSpacingModifierLetters
- spacingmodifierletters => 'InSpacin',
-
- # InSpecials
- specials => 'InSpecia',
-
- # InSuperscriptsAndSubscripts
- superscriptsandsubscripts => 'InSupers',
-
- # InSupplementalArrowsA
- supplementalarrowsa => 'InSuppl2',
-
- # InSupplementalArrowsB
- supplementalarrowsb => 'InSupple',
-
- # InSupplementalMathematicalOperators
- supplementalmathematicaloperators => 'InSuppl5',
-
- # InSupplementaryPrivateUseAreaA
- supplementaryprivateuseareaa => 'InSuppl3',
-
- # InSupplementaryPrivateUseAreaB
- supplementaryprivateuseareab => 'InSuppl4',
-
- surrogate => 'Cs',
- symbol => 'S',
- syriac => 'Syriac',
- tagalog => 'Tagalog',
- tagbanwa => 'Tagbanwa',
-
- # InTags
- tags => 'InTags',
-
- tamil => 'Tamil',
- telugu => 'Telugu',
-
- # TerminalPunctuation
- terminalpunctuation => 'Terminal',
-
- thaana => 'Thaana',
- thai => 'Thai',
- tibetan => 'Tibetan',
-
- # TitlecaseLetter
- titlecaseletter => 'Lt',
-
- unassigned => 'Cn',
-
- # InUnifiedCanadianAboriginalSyllabics
- unifiedcanadianaboriginalsyllabics => 'InUnifie',
-
- # UnifiedIdeograph
- unifiedideograph => 'UnifiedI',
-
- uppercase => 'Uppercas',
-
- # UppercaseLetter
- uppercaseletter => 'Lu',
-
- # InVariationSelectors
- variationselectors => 'InVariat',
-
- # WhiteSpace
- whitespace => 'WhiteSpa',
-
- yi => 'Yi',
-
- # InYiRadicals
- yiradicals => 'InYiRadi',
-
- # InYiSyllables
- yisyllables => 'InYiSyll',
-
-);
-1
diff --git a/Master/perltl/lib/unicore/Category.pl b/Master/perltl/lib/unicore/Category.pl
deleted file mode 100644
index dba6ad9afc3..00000000000
--- a/Master/perltl/lib/unicore/Category.pl
+++ /dev/null
@@ -1,1732 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# 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
-0220 Lu
-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 034F Mn
-0360 036F 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
-03D8 Lu
-03D9 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
-03F4 Lu
-03F5 Ll
-03F6 Sm
-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
-048A Lu
-048B Ll
-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
-04C5 Lu
-04C6 Ll
-04C7 Lu
-04C8 Ll
-04C9 Lu
-04CA Ll
-04CB Lu
-04CC Ll
-04CD Lu
-04CE 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
-0500 Lu
-0501 Ll
-0502 Lu
-0503 Ll
-0504 Lu
-0505 Ll
-0506 Lu
-0507 Ll
-0508 Lu
-0509 Ll
-050A Lu
-050B Ll
-050C Lu
-050D Ll
-050E Lu
-050F 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
-066E 066F Lo
-0670 Mn
-0671 06D3 Lo
-06D4 Po
-06D5 Lo
-06D6 06DC Mn
-06DD Cf
-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
-07B1 Lo
-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 Lo
-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 10F8 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 Nl
-1700 170C Lo
-170E 1711 Lo
-1712 1714 Mn
-1720 1731 Lo
-1732 1734 Mn
-1735 1736 Po
-1740 1751 Lo
-1752 1753 Mn
-1760 176C Lo
-176E 1770 Lo
-1772 1773 Mn
-1780 17B3 Lo
-17B4 17B6 Mc
-17B7 17BD Mn
-17BE 17C5 Mc
-17C6 Mn
-17C7 17C8 Mc
-17C9 17D3 Mn
-17D4 17D6 Po
-17D7 Lm
-17D8 17DA Po
-17DB Sc
-17DC Lo
-17E0 17E9 Nd
-1800 1805 Po
-1806 Pd
-1807 180A Po
-180B 180D Mn
-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
-2047 2051 Po
-2052 Sm
-2057 Po
-205F Zs
-2060 2063 Cf
-206A 206F Cf
-2070 No
-2071 Ll
-2074 2079 No
-207A 207C Sm
-207D Ps
-207E Pe
-207F Ll
-2080 2089 No
-208A 208C Sm
-208D Ps
-208E Pe
-20A0 20B1 Sc
-20D0 20DC Mn
-20DD 20E0 Me
-20E1 Mn
-20E2 20E4 Me
-20E5 20EA Mn
-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
-213D Ll
-213E 213F Lu
-2140 2144 Sm
-2145 Lu
-2146 2149 Ll
-214A So
-214B Sm
-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
-21F4 22FF Sm
-2300 2307 So
-2308 230B Sm
-230C 231F So
-2320 2321 Sm
-2322 2328 So
-2329 Ps
-232A Pe
-232B 237B So
-237C Sm
-237D 239A So
-239B 23B3 Sm
-23B4 Ps
-23B5 Pe
-23B6 Po
-23B7 23CE So
-2400 2426 So
-2440 244A So
-2460 249B No
-249C 24E9 So
-24EA 24FE No
-2500 25B6 So
-25B7 Sm
-25B8 25C0 So
-25C1 Sm
-25C2 25F7 So
-25F8 25FF Sm
-2600 2613 So
-2616 2617 So
-2619 266E So
-266F Sm
-2670 267D So
-2680 2689 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
-2768 Ps
-2769 Pe
-276A Ps
-276B Pe
-276C Ps
-276D Pe
-276E Ps
-276F Pe
-2770 Ps
-2771 Pe
-2772 Ps
-2773 Pe
-2774 Ps
-2775 Pe
-2776 2793 No
-2794 So
-2798 27AF So
-27B1 27BE So
-27D0 27E5 Sm
-27E6 Ps
-27E7 Pe
-27E8 Ps
-27E9 Pe
-27EA Ps
-27EB Pe
-27F0 27FF Sm
-2800 28FF So
-2900 2982 Sm
-2983 Ps
-2984 Pe
-2985 Ps
-2986 Pe
-2987 Ps
-2988 Pe
-2989 Ps
-298A Pe
-298B Ps
-298C Pe
-298D Ps
-298E Pe
-298F Ps
-2990 Pe
-2991 Ps
-2992 Pe
-2993 Ps
-2994 Pe
-2995 Ps
-2996 Pe
-2997 Ps
-2998 Pe
-2999 29D7 Sm
-29D8 Ps
-29D9 Pe
-29DA Ps
-29DB Pe
-29DC 29FB Sm
-29FC Ps
-29FD Pe
-29FE 2AFF Sm
-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
-303B Lm
-303C Lo
-303D Po
-303E 303F So
-3041 3096 Lo
-3099 309A Mn
-309B 309C Sk
-309D 309E Lm
-309F Lo
-30A0 Pd
-30A1 30FA Lo
-30FB Pc
-30FC 30FE Lm
-30FF Lo
-3105 312C Lo
-3131 318E Lo
-3190 3191 So
-3192 3195 No
-3196 319F So
-31A0 31B7 Lo
-31F0 31FF Lo
-3200 321C So
-3220 3229 No
-322A 3243 So
-3251 325F No
-3260 327B So
-327F So
-3280 3289 No
-328A 32B0 So
-32B1 32BF No
-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 A4C6 So
-AC00 D7A3 Lo
-D800 DFFF Cs
-E000 F8FF Co
-F900 FA2D Lo
-FA30 FA6A 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
-FDFC Sc
-FE00 FE0F Mn
-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
-FE45 FE46 Po
-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 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
-FF5F Ps
-FF60 Pe
-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
-10300 1031E Lo
-10320 10323 No
-10330 10349 Lo
-1034A Nl
-10400 10425 Lu
-10428 1044D Ll
-1D000 1D0F5 So
-1D100 1D126 So
-1D12A 1D164 So
-1D165 1D166 Mc
-1D167 1D169 Mn
-1D16A 1D16C So
-1D16D 1D172 Mc
-1D173 1D17A Cf
-1D17B 1D182 Mn
-1D183 1D184 So
-1D185 1D18B Mn
-1D18C 1D1A9 So
-1D1AA 1D1AD Mn
-1D1AE 1D1DD So
-1D400 1D419 Lu
-1D41A 1D433 Ll
-1D434 1D44D Lu
-1D44E 1D454 Ll
-1D456 1D467 Ll
-1D468 1D481 Lu
-1D482 1D49B Ll
-1D49C Lu
-1D49E 1D49F Lu
-1D4A2 Lu
-1D4A5 1D4A6 Lu
-1D4A9 1D4AC Lu
-1D4AE 1D4B5 Lu
-1D4B6 1D4B9 Ll
-1D4BB Ll
-1D4BD 1D4C0 Ll
-1D4C2 1D4C3 Ll
-1D4C5 1D4CF Ll
-1D4D0 1D4E9 Lu
-1D4EA 1D503 Ll
-1D504 1D505 Lu
-1D507 1D50A Lu
-1D50D 1D514 Lu
-1D516 1D51C Lu
-1D51E 1D537 Ll
-1D538 1D539 Lu
-1D53B 1D53E Lu
-1D540 1D544 Lu
-1D546 Lu
-1D54A 1D550 Lu
-1D552 1D56B Ll
-1D56C 1D585 Lu
-1D586 1D59F Ll
-1D5A0 1D5B9 Lu
-1D5BA 1D5D3 Ll
-1D5D4 1D5ED Lu
-1D5EE 1D607 Ll
-1D608 1D621 Lu
-1D622 1D63B Ll
-1D63C 1D655 Lu
-1D656 1D66F Ll
-1D670 1D689 Lu
-1D68A 1D6A3 Ll
-1D6A8 1D6C0 Lu
-1D6C1 Sm
-1D6C2 1D6DA Ll
-1D6DB Sm
-1D6DC 1D6E1 Ll
-1D6E2 1D6FA Lu
-1D6FB Sm
-1D6FC 1D714 Ll
-1D715 Sm
-1D716 1D71B Ll
-1D71C 1D734 Lu
-1D735 Sm
-1D736 1D74E Ll
-1D74F Sm
-1D750 1D755 Ll
-1D756 1D76E Lu
-1D76F Sm
-1D770 1D788 Ll
-1D789 Sm
-1D78A 1D78F Ll
-1D790 1D7A8 Lu
-1D7A9 Sm
-1D7AA 1D7C2 Ll
-1D7C3 Sm
-1D7C4 1D7C9 Ll
-1D7CE 1D7FF Nd
-20000 2A6D6 Lo
-2F800 2FA1D Lo
-E0001 Cf
-E0020 E007F Cf
-F0000 FFFFD Co
-100000 10FFFD Co
-END
diff --git a/Master/perltl/lib/unicore/CombiningClass.pl b/Master/perltl/lib/unicore/CombiningClass.pl
deleted file mode 100644
index 2b97b553e4e..00000000000
--- a/Master/perltl/lib/unicore/CombiningClass.pl
+++ /dev/null
@@ -1,169 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# 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
-0363 036F 230
-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
-1714 9
-1734 9
-17D2 9
-18A9 228
-20D0 20D1 230
-20D2 20D3 1
-20D4 20D7 230
-20D8 20DA 1
-20DB 20DC 230
-20E1 230
-20E5 20E6 1
-20E7 230
-20E8 220
-20E9 230
-20EA 1
-302A 218
-302B 228
-302C 232
-302D 222
-302E 302F 224
-3099 309A 8
-FB1E 26
-FE20 FE23 230
-1D165 1D166 216
-1D167 1D169 1
-1D16D 226
-1D16E 1D172 216
-1D17B 1D182 220
-1D185 1D189 230
-1D18A 1D18B 220
-1D1AA 1D1AD 230
-END
diff --git a/Master/perltl/lib/unicore/Decomposition.pl b/Master/perltl/lib/unicore/Decomposition.pl
deleted file mode 100644
index 739d8fc661b..00000000000
--- a/Master/perltl/lib/unicore/Decomposition.pl
+++ /dev/null
@@ -1,5120 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# 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
-03F4 <compat> 0398
-03F5 <compat> 03B5
-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
-2047 <compat> 003F 003F
-2048 <compat> 003F 0021
-2049 <compat> 0021 003F
-2057 <compat> 2032 2032 2032 2032
-205F <compat> 0020
-2070 <super> 0030
-2071 <super> 0069
-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
-213D <font> 03B3
-213E <font> 0393
-213F <font> 03A0
-2140 <font> 2211
-2145 <font> 0044
-2146 <font> 0064
-2147 <font> 0065
-2148 <font> 0069
-2149 <font> 006A
-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
-2A0C <compat> 222B 222B 222B 222B
-2A74 <compat> 003A 003A 003D
-2A75 <compat> 003D 003D
-2A76 <compat> 003D 003D 003D
-2ADC 2ADD 0338
-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
-309F <vertical> 3088 308A
-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
-30FF <vertical> 30B3 30C8
-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
-3251 <circle> 0032 0031
-3252 <circle> 0032 0032
-3253 <circle> 0032 0033
-3254 <circle> 0032 0034
-3255 <circle> 0032 0035
-3256 <circle> 0032 0036
-3257 <circle> 0032 0037
-3258 <circle> 0032 0038
-3259 <circle> 0032 0039
-325A <circle> 0033 0030
-325B <circle> 0033 0031
-325C <circle> 0033 0032
-325D <circle> 0033 0033
-325E <circle> 0033 0034
-325F <circle> 0033 0035
-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
-32B1 <circle> 0033 0036
-32B2 <circle> 0033 0037
-32B3 <circle> 0033 0038
-32B4 <circle> 0033 0039
-32B5 <circle> 0034 0030
-32B6 <circle> 0034 0031
-32B7 <circle> 0034 0032
-32B8 <circle> 0034 0033
-32B9 <circle> 0034 0034
-32BA <circle> 0034 0035
-32BB <circle> 0034 0036
-32BC <circle> 0034 0037
-32BD <circle> 0034 0038
-32BE <circle> 0034 0039
-32BF <circle> 0035 0030
-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 964B
-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
-FA30 4FAE
-FA31 50E7
-FA32 514D
-FA33 52C9
-FA34 52E4
-FA35 5351
-FA36 559D
-FA37 5606
-FA38 5668
-FA39 5840
-FA3A 58A8
-FA3B 5C64
-FA3C 5C6E
-FA3D 6094
-FA3E 6168
-FA3F 618E
-FA40 61F2
-FA41 654F
-FA42 65E2
-FA43 6691
-FA44 6885
-FA45 6D77
-FA46 6E1A
-FA47 6F22
-FA48 716E
-FA49 722B
-FA4A 7422
-FA4B 7891
-FA4C 793E
-FA4D 7949
-FA4E 7948
-FA4F 7950
-FA50 7956
-FA51 795D
-FA52 798D
-FA53 798E
-FA54 7A40
-FA55 7A81
-FA56 7BC0
-FA57 7DF4
-FA58 7E09
-FA59 7E41
-FA5A 7F72
-FA5B 8005
-FA5C 81ED
-FA5D FA5E 8279
-FA5F 8457
-FA60 8910
-FA61 8996
-FA62 8B01
-FA63 8B39
-FA64 8CD3
-FA65 8D08
-FA66 8FB6
-FA67 9038
-FA68 96E3
-FA69 97FF
-FA6A 983B
-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
-FDFC <isolated> 0631 06CC 0627 0644
-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
-FF5F <wide> 2985
-FF60 <wide> 2986
-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
-1D15E 1D157 1D165
-1D15F 1D158 1D165
-1D160 1D15F 1D16E
-1D161 1D15F 1D16F
-1D162 1D15F 1D170
-1D163 1D15F 1D171
-1D164 1D15F 1D172
-1D1BB 1D1B9 1D165
-1D1BC 1D1BA 1D165
-1D1BD 1D1BB 1D16E
-1D1BE 1D1BC 1D16E
-1D1BF 1D1BB 1D16F
-1D1C0 1D1BC 1D16F
-1D400 <font> 0041
-1D401 <font> 0042
-1D402 <font> 0043
-1D403 <font> 0044
-1D404 <font> 0045
-1D405 <font> 0046
-1D406 <font> 0047
-1D407 <font> 0048
-1D408 <font> 0049
-1D409 <font> 004A
-1D40A <font> 004B
-1D40B <font> 004C
-1D40C <font> 004D
-1D40D <font> 004E
-1D40E <font> 004F
-1D40F <font> 0050
-1D410 <font> 0051
-1D411 <font> 0052
-1D412 <font> 0053
-1D413 <font> 0054
-1D414 <font> 0055
-1D415 <font> 0056
-1D416 <font> 0057
-1D417 <font> 0058
-1D418 <font> 0059
-1D419 <font> 005A
-1D41A <font> 0061
-1D41B <font> 0062
-1D41C <font> 0063
-1D41D <font> 0064
-1D41E <font> 0065
-1D41F <font> 0066
-1D420 <font> 0067
-1D421 <font> 0068
-1D422 <font> 0069
-1D423 <font> 006A
-1D424 <font> 006B
-1D425 <font> 006C
-1D426 <font> 006D
-1D427 <font> 006E
-1D428 <font> 006F
-1D429 <font> 0070
-1D42A <font> 0071
-1D42B <font> 0072
-1D42C <font> 0073
-1D42D <font> 0074
-1D42E <font> 0075
-1D42F <font> 0076
-1D430 <font> 0077
-1D431 <font> 0078
-1D432 <font> 0079
-1D433 <font> 007A
-1D434 <font> 0041
-1D435 <font> 0042
-1D436 <font> 0043
-1D437 <font> 0044
-1D438 <font> 0045
-1D439 <font> 0046
-1D43A <font> 0047
-1D43B <font> 0048
-1D43C <font> 0049
-1D43D <font> 004A
-1D43E <font> 004B
-1D43F <font> 004C
-1D440 <font> 004D
-1D441 <font> 004E
-1D442 <font> 004F
-1D443 <font> 0050
-1D444 <font> 0051
-1D445 <font> 0052
-1D446 <font> 0053
-1D447 <font> 0054
-1D448 <font> 0055
-1D449 <font> 0056
-1D44A <font> 0057
-1D44B <font> 0058
-1D44C <font> 0059
-1D44D <font> 005A
-1D44E <font> 0061
-1D44F <font> 0062
-1D450 <font> 0063
-1D451 <font> 0064
-1D452 <font> 0065
-1D453 <font> 0066
-1D454 <font> 0067
-1D456 <font> 0069
-1D457 <font> 006A
-1D458 <font> 006B
-1D459 <font> 006C
-1D45A <font> 006D
-1D45B <font> 006E
-1D45C <font> 006F
-1D45D <font> 0070
-1D45E <font> 0071
-1D45F <font> 0072
-1D460 <font> 0073
-1D461 <font> 0074
-1D462 <font> 0075
-1D463 <font> 0076
-1D464 <font> 0077
-1D465 <font> 0078
-1D466 <font> 0079
-1D467 <font> 007A
-1D468 <font> 0041
-1D469 <font> 0042
-1D46A <font> 0043
-1D46B <font> 0044
-1D46C <font> 0045
-1D46D <font> 0046
-1D46E <font> 0047
-1D46F <font> 0048
-1D470 <font> 0049
-1D471 <font> 004A
-1D472 <font> 004B
-1D473 <font> 004C
-1D474 <font> 004D
-1D475 <font> 004E
-1D476 <font> 004F
-1D477 <font> 0050
-1D478 <font> 0051
-1D479 <font> 0052
-1D47A <font> 0053
-1D47B <font> 0054
-1D47C <font> 0055
-1D47D <font> 0056
-1D47E <font> 0057
-1D47F <font> 0058
-1D480 <font> 0059
-1D481 <font> 005A
-1D482 <font> 0061
-1D483 <font> 0062
-1D484 <font> 0063
-1D485 <font> 0064
-1D486 <font> 0065
-1D487 <font> 0066
-1D488 <font> 0067
-1D489 <font> 0068
-1D48A <font> 0069
-1D48B <font> 006A
-1D48C <font> 006B
-1D48D <font> 006C
-1D48E <font> 006D
-1D48F <font> 006E
-1D490 <font> 006F
-1D491 <font> 0070
-1D492 <font> 0071
-1D493 <font> 0072
-1D494 <font> 0073
-1D495 <font> 0074
-1D496 <font> 0075
-1D497 <font> 0076
-1D498 <font> 0077
-1D499 <font> 0078
-1D49A <font> 0079
-1D49B <font> 007A
-1D49C <font> 0041
-1D49E <font> 0043
-1D49F <font> 0044
-1D4A2 <font> 0047
-1D4A5 <font> 004A
-1D4A6 <font> 004B
-1D4A9 <font> 004E
-1D4AA <font> 004F
-1D4AB <font> 0050
-1D4AC <font> 0051
-1D4AE <font> 0053
-1D4AF <font> 0054
-1D4B0 <font> 0055
-1D4B1 <font> 0056
-1D4B2 <font> 0057
-1D4B3 <font> 0058
-1D4B4 <font> 0059
-1D4B5 <font> 005A
-1D4B6 <font> 0061
-1D4B7 <font> 0062
-1D4B8 <font> 0063
-1D4B9 <font> 0064
-1D4BB <font> 0066
-1D4BD <font> 0068
-1D4BE <font> 0069
-1D4BF <font> 006A
-1D4C0 <font> 006B
-1D4C2 <font> 006D
-1D4C3 <font> 006E
-1D4C5 <font> 0070
-1D4C6 <font> 0071
-1D4C7 <font> 0072
-1D4C8 <font> 0073
-1D4C9 <font> 0074
-1D4CA <font> 0075
-1D4CB <font> 0076
-1D4CC <font> 0077
-1D4CD <font> 0078
-1D4CE <font> 0079
-1D4CF <font> 007A
-1D4D0 <font> 0041
-1D4D1 <font> 0042
-1D4D2 <font> 0043
-1D4D3 <font> 0044
-1D4D4 <font> 0045
-1D4D5 <font> 0046
-1D4D6 <font> 0047
-1D4D7 <font> 0048
-1D4D8 <font> 0049
-1D4D9 <font> 004A
-1D4DA <font> 004B
-1D4DB <font> 004C
-1D4DC <font> 004D
-1D4DD <font> 004E
-1D4DE <font> 004F
-1D4DF <font> 0050
-1D4E0 <font> 0051
-1D4E1 <font> 0052
-1D4E2 <font> 0053
-1D4E3 <font> 0054
-1D4E4 <font> 0055
-1D4E5 <font> 0056
-1D4E6 <font> 0057
-1D4E7 <font> 0058
-1D4E8 <font> 0059
-1D4E9 <font> 005A
-1D4EA <font> 0061
-1D4EB <font> 0062
-1D4EC <font> 0063
-1D4ED <font> 0064
-1D4EE <font> 0065
-1D4EF <font> 0066
-1D4F0 <font> 0067
-1D4F1 <font> 0068
-1D4F2 <font> 0069
-1D4F3 <font> 006A
-1D4F4 <font> 006B
-1D4F5 <font> 006C
-1D4F6 <font> 006D
-1D4F7 <font> 006E
-1D4F8 <font> 006F
-1D4F9 <font> 0070
-1D4FA <font> 0071
-1D4FB <font> 0072
-1D4FC <font> 0073
-1D4FD <font> 0074
-1D4FE <font> 0075
-1D4FF <font> 0076
-1D500 <font> 0077
-1D501 <font> 0078
-1D502 <font> 0079
-1D503 <font> 007A
-1D504 <font> 0041
-1D505 <font> 0042
-1D507 <font> 0044
-1D508 <font> 0045
-1D509 <font> 0046
-1D50A <font> 0047
-1D50D <font> 004A
-1D50E <font> 004B
-1D50F <font> 004C
-1D510 <font> 004D
-1D511 <font> 004E
-1D512 <font> 004F
-1D513 <font> 0050
-1D514 <font> 0051
-1D516 <font> 0053
-1D517 <font> 0054
-1D518 <font> 0055
-1D519 <font> 0056
-1D51A <font> 0057
-1D51B <font> 0058
-1D51C <font> 0059
-1D51E <font> 0061
-1D51F <font> 0062
-1D520 <font> 0063
-1D521 <font> 0064
-1D522 <font> 0065
-1D523 <font> 0066
-1D524 <font> 0067
-1D525 <font> 0068
-1D526 <font> 0069
-1D527 <font> 006A
-1D528 <font> 006B
-1D529 <font> 006C
-1D52A <font> 006D
-1D52B <font> 006E
-1D52C <font> 006F
-1D52D <font> 0070
-1D52E <font> 0071
-1D52F <font> 0072
-1D530 <font> 0073
-1D531 <font> 0074
-1D532 <font> 0075
-1D533 <font> 0076
-1D534 <font> 0077
-1D535 <font> 0078
-1D536 <font> 0079
-1D537 <font> 007A
-1D538 <font> 0041
-1D539 <font> 0042
-1D53B <font> 0044
-1D53C <font> 0045
-1D53D <font> 0046
-1D53E <font> 0047
-1D540 <font> 0049
-1D541 <font> 004A
-1D542 <font> 004B
-1D543 <font> 004C
-1D544 <font> 004D
-1D546 <font> 004F
-1D54A <font> 0053
-1D54B <font> 0054
-1D54C <font> 0055
-1D54D <font> 0056
-1D54E <font> 0057
-1D54F <font> 0058
-1D550 <font> 0059
-1D552 <font> 0061
-1D553 <font> 0062
-1D554 <font> 0063
-1D555 <font> 0064
-1D556 <font> 0065
-1D557 <font> 0066
-1D558 <font> 0067
-1D559 <font> 0068
-1D55A <font> 0069
-1D55B <font> 006A
-1D55C <font> 006B
-1D55D <font> 006C
-1D55E <font> 006D
-1D55F <font> 006E
-1D560 <font> 006F
-1D561 <font> 0070
-1D562 <font> 0071
-1D563 <font> 0072
-1D564 <font> 0073
-1D565 <font> 0074
-1D566 <font> 0075
-1D567 <font> 0076
-1D568 <font> 0077
-1D569 <font> 0078
-1D56A <font> 0079
-1D56B <font> 007A
-1D56C <font> 0041
-1D56D <font> 0042
-1D56E <font> 0043
-1D56F <font> 0044
-1D570 <font> 0045
-1D571 <font> 0046
-1D572 <font> 0047
-1D573 <font> 0048
-1D574 <font> 0049
-1D575 <font> 004A
-1D576 <font> 004B
-1D577 <font> 004C
-1D578 <font> 004D
-1D579 <font> 004E
-1D57A <font> 004F
-1D57B <font> 0050
-1D57C <font> 0051
-1D57D <font> 0052
-1D57E <font> 0053
-1D57F <font> 0054
-1D580 <font> 0055
-1D581 <font> 0056
-1D582 <font> 0057
-1D583 <font> 0058
-1D584 <font> 0059
-1D585 <font> 005A
-1D586 <font> 0061
-1D587 <font> 0062
-1D588 <font> 0063
-1D589 <font> 0064
-1D58A <font> 0065
-1D58B <font> 0066
-1D58C <font> 0067
-1D58D <font> 0068
-1D58E <font> 0069
-1D58F <font> 006A
-1D590 <font> 006B
-1D591 <font> 006C
-1D592 <font> 006D
-1D593 <font> 006E
-1D594 <font> 006F
-1D595 <font> 0070
-1D596 <font> 0071
-1D597 <font> 0072
-1D598 <font> 0073
-1D599 <font> 0074
-1D59A <font> 0075
-1D59B <font> 0076
-1D59C <font> 0077
-1D59D <font> 0078
-1D59E <font> 0079
-1D59F <font> 007A
-1D5A0 <font> 0041
-1D5A1 <font> 0042
-1D5A2 <font> 0043
-1D5A3 <font> 0044
-1D5A4 <font> 0045
-1D5A5 <font> 0046
-1D5A6 <font> 0047
-1D5A7 <font> 0048
-1D5A8 <font> 0049
-1D5A9 <font> 004A
-1D5AA <font> 004B
-1D5AB <font> 004C
-1D5AC <font> 004D
-1D5AD <font> 004E
-1D5AE <font> 004F
-1D5AF <font> 0050
-1D5B0 <font> 0051
-1D5B1 <font> 0052
-1D5B2 <font> 0053
-1D5B3 <font> 0054
-1D5B4 <font> 0055
-1D5B5 <font> 0056
-1D5B6 <font> 0057
-1D5B7 <font> 0058
-1D5B8 <font> 0059
-1D5B9 <font> 005A
-1D5BA <font> 0061
-1D5BB <font> 0062
-1D5BC <font> 0063
-1D5BD <font> 0064
-1D5BE <font> 0065
-1D5BF <font> 0066
-1D5C0 <font> 0067
-1D5C1 <font> 0068
-1D5C2 <font> 0069
-1D5C3 <font> 006A
-1D5C4 <font> 006B
-1D5C5 <font> 006C
-1D5C6 <font> 006D
-1D5C7 <font> 006E
-1D5C8 <font> 006F
-1D5C9 <font> 0070
-1D5CA <font> 0071
-1D5CB <font> 0072
-1D5CC <font> 0073
-1D5CD <font> 0074
-1D5CE <font> 0075
-1D5CF <font> 0076
-1D5D0 <font> 0077
-1D5D1 <font> 0078
-1D5D2 <font> 0079
-1D5D3 <font> 007A
-1D5D4 <font> 0041
-1D5D5 <font> 0042
-1D5D6 <font> 0043
-1D5D7 <font> 0044
-1D5D8 <font> 0045
-1D5D9 <font> 0046
-1D5DA <font> 0047
-1D5DB <font> 0048
-1D5DC <font> 0049
-1D5DD <font> 004A
-1D5DE <font> 004B
-1D5DF <font> 004C
-1D5E0 <font> 004D
-1D5E1 <font> 004E
-1D5E2 <font> 004F
-1D5E3 <font> 0050
-1D5E4 <font> 0051
-1D5E5 <font> 0052
-1D5E6 <font> 0053
-1D5E7 <font> 0054
-1D5E8 <font> 0055
-1D5E9 <font> 0056
-1D5EA <font> 0057
-1D5EB <font> 0058
-1D5EC <font> 0059
-1D5ED <font> 005A
-1D5EE <font> 0061
-1D5EF <font> 0062
-1D5F0 <font> 0063
-1D5F1 <font> 0064
-1D5F2 <font> 0065
-1D5F3 <font> 0066
-1D5F4 <font> 0067
-1D5F5 <font> 0068
-1D5F6 <font> 0069
-1D5F7 <font> 006A
-1D5F8 <font> 006B
-1D5F9 <font> 006C
-1D5FA <font> 006D
-1D5FB <font> 006E
-1D5FC <font> 006F
-1D5FD <font> 0070
-1D5FE <font> 0071
-1D5FF <font> 0072
-1D600 <font> 0073
-1D601 <font> 0074
-1D602 <font> 0075
-1D603 <font> 0076
-1D604 <font> 0077
-1D605 <font> 0078
-1D606 <font> 0079
-1D607 <font> 007A
-1D608 <font> 0041
-1D609 <font> 0042
-1D60A <font> 0043
-1D60B <font> 0044
-1D60C <font> 0045
-1D60D <font> 0046
-1D60E <font> 0047
-1D60F <font> 0048
-1D610 <font> 0049
-1D611 <font> 004A
-1D612 <font> 004B
-1D613 <font> 004C
-1D614 <font> 004D
-1D615 <font> 004E
-1D616 <font> 004F
-1D617 <font> 0050
-1D618 <font> 0051
-1D619 <font> 0052
-1D61A <font> 0053
-1D61B <font> 0054
-1D61C <font> 0055
-1D61D <font> 0056
-1D61E <font> 0057
-1D61F <font> 0058
-1D620 <font> 0059
-1D621 <font> 005A
-1D622 <font> 0061
-1D623 <font> 0062
-1D624 <font> 0063
-1D625 <font> 0064
-1D626 <font> 0065
-1D627 <font> 0066
-1D628 <font> 0067
-1D629 <font> 0068
-1D62A <font> 0069
-1D62B <font> 006A
-1D62C <font> 006B
-1D62D <font> 006C
-1D62E <font> 006D
-1D62F <font> 006E
-1D630 <font> 006F
-1D631 <font> 0070
-1D632 <font> 0071
-1D633 <font> 0072
-1D634 <font> 0073
-1D635 <font> 0074
-1D636 <font> 0075
-1D637 <font> 0076
-1D638 <font> 0077
-1D639 <font> 0078
-1D63A <font> 0079
-1D63B <font> 007A
-1D63C <font> 0041
-1D63D <font> 0042
-1D63E <font> 0043
-1D63F <font> 0044
-1D640 <font> 0045
-1D641 <font> 0046
-1D642 <font> 0047
-1D643 <font> 0048
-1D644 <font> 0049
-1D645 <font> 004A
-1D646 <font> 004B
-1D647 <font> 004C
-1D648 <font> 004D
-1D649 <font> 004E
-1D64A <font> 004F
-1D64B <font> 0050
-1D64C <font> 0051
-1D64D <font> 0052
-1D64E <font> 0053
-1D64F <font> 0054
-1D650 <font> 0055
-1D651 <font> 0056
-1D652 <font> 0057
-1D653 <font> 0058
-1D654 <font> 0059
-1D655 <font> 005A
-1D656 <font> 0061
-1D657 <font> 0062
-1D658 <font> 0063
-1D659 <font> 0064
-1D65A <font> 0065
-1D65B <font> 0066
-1D65C <font> 0067
-1D65D <font> 0068
-1D65E <font> 0069
-1D65F <font> 006A
-1D660 <font> 006B
-1D661 <font> 006C
-1D662 <font> 006D
-1D663 <font> 006E
-1D664 <font> 006F
-1D665 <font> 0070
-1D666 <font> 0071
-1D667 <font> 0072
-1D668 <font> 0073
-1D669 <font> 0074
-1D66A <font> 0075
-1D66B <font> 0076
-1D66C <font> 0077
-1D66D <font> 0078
-1D66E <font> 0079
-1D66F <font> 007A
-1D670 <font> 0041
-1D671 <font> 0042
-1D672 <font> 0043
-1D673 <font> 0044
-1D674 <font> 0045
-1D675 <font> 0046
-1D676 <font> 0047
-1D677 <font> 0048
-1D678 <font> 0049
-1D679 <font> 004A
-1D67A <font> 004B
-1D67B <font> 004C
-1D67C <font> 004D
-1D67D <font> 004E
-1D67E <font> 004F
-1D67F <font> 0050
-1D680 <font> 0051
-1D681 <font> 0052
-1D682 <font> 0053
-1D683 <font> 0054
-1D684 <font> 0055
-1D685 <font> 0056
-1D686 <font> 0057
-1D687 <font> 0058
-1D688 <font> 0059
-1D689 <font> 005A
-1D68A <font> 0061
-1D68B <font> 0062
-1D68C <font> 0063
-1D68D <font> 0064
-1D68E <font> 0065
-1D68F <font> 0066
-1D690 <font> 0067
-1D691 <font> 0068
-1D692 <font> 0069
-1D693 <font> 006A
-1D694 <font> 006B
-1D695 <font> 006C
-1D696 <font> 006D
-1D697 <font> 006E
-1D698 <font> 006F
-1D699 <font> 0070
-1D69A <font> 0071
-1D69B <font> 0072
-1D69C <font> 0073
-1D69D <font> 0074
-1D69E <font> 0075
-1D69F <font> 0076
-1D6A0 <font> 0077
-1D6A1 <font> 0078
-1D6A2 <font> 0079
-1D6A3 <font> 007A
-1D6A8 <font> 0391
-1D6A9 <font> 0392
-1D6AA <font> 0393
-1D6AB <font> 0394
-1D6AC <font> 0395
-1D6AD <font> 0396
-1D6AE <font> 0397
-1D6AF <font> 0398
-1D6B0 <font> 0399
-1D6B1 <font> 039A
-1D6B2 <font> 039B
-1D6B3 <font> 039C
-1D6B4 <font> 039D
-1D6B5 <font> 039E
-1D6B6 <font> 039F
-1D6B7 <font> 03A0
-1D6B8 <font> 03A1
-1D6B9 <font> 03F4
-1D6BA <font> 03A3
-1D6BB <font> 03A4
-1D6BC <font> 03A5
-1D6BD <font> 03A6
-1D6BE <font> 03A7
-1D6BF <font> 03A8
-1D6C0 <font> 03A9
-1D6C1 <font> 2207
-1D6C2 <font> 03B1
-1D6C3 <font> 03B2
-1D6C4 <font> 03B3
-1D6C5 <font> 03B4
-1D6C6 <font> 03B5
-1D6C7 <font> 03B6
-1D6C8 <font> 03B7
-1D6C9 <font> 03B8
-1D6CA <font> 03B9
-1D6CB <font> 03BA
-1D6CC <font> 03BB
-1D6CD <font> 03BC
-1D6CE <font> 03BD
-1D6CF <font> 03BE
-1D6D0 <font> 03BF
-1D6D1 <font> 03C0
-1D6D2 <font> 03C1
-1D6D3 <font> 03C2
-1D6D4 <font> 03C3
-1D6D5 <font> 03C4
-1D6D6 <font> 03C5
-1D6D7 <font> 03C6
-1D6D8 <font> 03C7
-1D6D9 <font> 03C8
-1D6DA <font> 03C9
-1D6DB <font> 2202
-1D6DC <font> 03F5
-1D6DD <font> 03D1
-1D6DE <font> 03F0
-1D6DF <font> 03D5
-1D6E0 <font> 03F1
-1D6E1 <font> 03D6
-1D6E2 <font> 0391
-1D6E3 <font> 0392
-1D6E4 <font> 0393
-1D6E5 <font> 0394
-1D6E6 <font> 0395
-1D6E7 <font> 0396
-1D6E8 <font> 0397
-1D6E9 <font> 0398
-1D6EA <font> 0399
-1D6EB <font> 039A
-1D6EC <font> 039B
-1D6ED <font> 039C
-1D6EE <font> 039D
-1D6EF <font> 039E
-1D6F0 <font> 039F
-1D6F1 <font> 03A0
-1D6F2 <font> 03A1
-1D6F3 <font> 03F4
-1D6F4 <font> 03A3
-1D6F5 <font> 03A4
-1D6F6 <font> 03A5
-1D6F7 <font> 03A6
-1D6F8 <font> 03A7
-1D6F9 <font> 03A8
-1D6FA <font> 03A9
-1D6FB <font> 2207
-1D6FC <font> 03B1
-1D6FD <font> 03B2
-1D6FE <font> 03B3
-1D6FF <font> 03B4
-1D700 <font> 03B5
-1D701 <font> 03B6
-1D702 <font> 03B7
-1D703 <font> 03B8
-1D704 <font> 03B9
-1D705 <font> 03BA
-1D706 <font> 03BB
-1D707 <font> 03BC
-1D708 <font> 03BD
-1D709 <font> 03BE
-1D70A <font> 03BF
-1D70B <font> 03C0
-1D70C <font> 03C1
-1D70D <font> 03C2
-1D70E <font> 03C3
-1D70F <font> 03C4
-1D710 <font> 03C5
-1D711 <font> 03C6
-1D712 <font> 03C7
-1D713 <font> 03C8
-1D714 <font> 03C9
-1D715 <font> 2202
-1D716 <font> 03F5
-1D717 <font> 03D1
-1D718 <font> 03F0
-1D719 <font> 03D5
-1D71A <font> 03F1
-1D71B <font> 03D6
-1D71C <font> 0391
-1D71D <font> 0392
-1D71E <font> 0393
-1D71F <font> 0394
-1D720 <font> 0395
-1D721 <font> 0396
-1D722 <font> 0397
-1D723 <font> 0398
-1D724 <font> 0399
-1D725 <font> 039A
-1D726 <font> 039B
-1D727 <font> 039C
-1D728 <font> 039D
-1D729 <font> 039E
-1D72A <font> 039F
-1D72B <font> 03A0
-1D72C <font> 03A1
-1D72D <font> 03F4
-1D72E <font> 03A3
-1D72F <font> 03A4
-1D730 <font> 03A5
-1D731 <font> 03A6
-1D732 <font> 03A7
-1D733 <font> 03A8
-1D734 <font> 03A9
-1D735 <font> 2207
-1D736 <font> 03B1
-1D737 <font> 03B2
-1D738 <font> 03B3
-1D739 <font> 03B4
-1D73A <font> 03B5
-1D73B <font> 03B6
-1D73C <font> 03B7
-1D73D <font> 03B8
-1D73E <font> 03B9
-1D73F <font> 03BA
-1D740 <font> 03BB
-1D741 <font> 03BC
-1D742 <font> 03BD
-1D743 <font> 03BE
-1D744 <font> 03BF
-1D745 <font> 03C0
-1D746 <font> 03C1
-1D747 <font> 03C2
-1D748 <font> 03C3
-1D749 <font> 03C4
-1D74A <font> 03C5
-1D74B <font> 03C6
-1D74C <font> 03C7
-1D74D <font> 03C8
-1D74E <font> 03C9
-1D74F <font> 2202
-1D750 <font> 03F5
-1D751 <font> 03D1
-1D752 <font> 03F0
-1D753 <font> 03D5
-1D754 <font> 03F1
-1D755 <font> 03D6
-1D756 <font> 0391
-1D757 <font> 0392
-1D758 <font> 0393
-1D759 <font> 0394
-1D75A <font> 0395
-1D75B <font> 0396
-1D75C <font> 0397
-1D75D <font> 0398
-1D75E <font> 0399
-1D75F <font> 039A
-1D760 <font> 039B
-1D761 <font> 039C
-1D762 <font> 039D
-1D763 <font> 039E
-1D764 <font> 039F
-1D765 <font> 03A0
-1D766 <font> 03A1
-1D767 <font> 03F4
-1D768 <font> 03A3
-1D769 <font> 03A4
-1D76A <font> 03A5
-1D76B <font> 03A6
-1D76C <font> 03A7
-1D76D <font> 03A8
-1D76E <font> 03A9
-1D76F <font> 2207
-1D770 <font> 03B1
-1D771 <font> 03B2
-1D772 <font> 03B3
-1D773 <font> 03B4
-1D774 <font> 03B5
-1D775 <font> 03B6
-1D776 <font> 03B7
-1D777 <font> 03B8
-1D778 <font> 03B9
-1D779 <font> 03BA
-1D77A <font> 03BB
-1D77B <font> 03BC
-1D77C <font> 03BD
-1D77D <font> 03BE
-1D77E <font> 03BF
-1D77F <font> 03C0
-1D780 <font> 03C1
-1D781 <font> 03C2
-1D782 <font> 03C3
-1D783 <font> 03C4
-1D784 <font> 03C5
-1D785 <font> 03C6
-1D786 <font> 03C7
-1D787 <font> 03C8
-1D788 <font> 03C9
-1D789 <font> 2202
-1D78A <font> 03F5
-1D78B <font> 03D1
-1D78C <font> 03F0
-1D78D <font> 03D5
-1D78E <font> 03F1
-1D78F <font> 03D6
-1D790 <font> 0391
-1D791 <font> 0392
-1D792 <font> 0393
-1D793 <font> 0394
-1D794 <font> 0395
-1D795 <font> 0396
-1D796 <font> 0397
-1D797 <font> 0398
-1D798 <font> 0399
-1D799 <font> 039A
-1D79A <font> 039B
-1D79B <font> 039C
-1D79C <font> 039D
-1D79D <font> 039E
-1D79E <font> 039F
-1D79F <font> 03A0
-1D7A0 <font> 03A1
-1D7A1 <font> 03F4
-1D7A2 <font> 03A3
-1D7A3 <font> 03A4
-1D7A4 <font> 03A5
-1D7A5 <font> 03A6
-1D7A6 <font> 03A7
-1D7A7 <font> 03A8
-1D7A8 <font> 03A9
-1D7A9 <font> 2207
-1D7AA <font> 03B1
-1D7AB <font> 03B2
-1D7AC <font> 03B3
-1D7AD <font> 03B4
-1D7AE <font> 03B5
-1D7AF <font> 03B6
-1D7B0 <font> 03B7
-1D7B1 <font> 03B8
-1D7B2 <font> 03B9
-1D7B3 <font> 03BA
-1D7B4 <font> 03BB
-1D7B5 <font> 03BC
-1D7B6 <font> 03BD
-1D7B7 <font> 03BE
-1D7B8 <font> 03BF
-1D7B9 <font> 03C0
-1D7BA <font> 03C1
-1D7BB <font> 03C2
-1D7BC <font> 03C3
-1D7BD <font> 03C4
-1D7BE <font> 03C5
-1D7BF <font> 03C6
-1D7C0 <font> 03C7
-1D7C1 <font> 03C8
-1D7C2 <font> 03C9
-1D7C3 <font> 2202
-1D7C4 <font> 03F5
-1D7C5 <font> 03D1
-1D7C6 <font> 03F0
-1D7C7 <font> 03D5
-1D7C8 <font> 03F1
-1D7C9 <font> 03D6
-1D7CE <font> 0030
-1D7CF <font> 0031
-1D7D0 <font> 0032
-1D7D1 <font> 0033
-1D7D2 <font> 0034
-1D7D3 <font> 0035
-1D7D4 <font> 0036
-1D7D5 <font> 0037
-1D7D6 <font> 0038
-1D7D7 <font> 0039
-1D7D8 <font> 0030
-1D7D9 <font> 0031
-1D7DA <font> 0032
-1D7DB <font> 0033
-1D7DC <font> 0034
-1D7DD <font> 0035
-1D7DE <font> 0036
-1D7DF <font> 0037
-1D7E0 <font> 0038
-1D7E1 <font> 0039
-1D7E2 <font> 0030
-1D7E3 <font> 0031
-1D7E4 <font> 0032
-1D7E5 <font> 0033
-1D7E6 <font> 0034
-1D7E7 <font> 0035
-1D7E8 <font> 0036
-1D7E9 <font> 0037
-1D7EA <font> 0038
-1D7EB <font> 0039
-1D7EC <font> 0030
-1D7ED <font> 0031
-1D7EE <font> 0032
-1D7EF <font> 0033
-1D7F0 <font> 0034
-1D7F1 <font> 0035
-1D7F2 <font> 0036
-1D7F3 <font> 0037
-1D7F4 <font> 0038
-1D7F5 <font> 0039
-1D7F6 <font> 0030
-1D7F7 <font> 0031
-1D7F8 <font> 0032
-1D7F9 <font> 0033
-1D7FA <font> 0034
-1D7FB <font> 0035
-1D7FC <font> 0036
-1D7FD <font> 0037
-1D7FE <font> 0038
-1D7FF <font> 0039
-2F800 4E3D
-2F801 4E38
-2F802 4E41
-2F803 20122
-2F804 4F60
-2F805 4FAE
-2F806 4FBB
-2F807 5002
-2F808 507A
-2F809 5099
-2F80A 50E7
-2F80B 50CF
-2F80C 349E
-2F80D 2063A
-2F80E 514D
-2F80F 5154
-2F810 5164
-2F811 5177
-2F812 2051C
-2F813 34B9
-2F814 5167
-2F815 518D
-2F816 2054B
-2F817 5197
-2F818 51A4
-2F819 4ECC
-2F81A 51AC
-2F81B 51B5
-2F81C 291DF
-2F81D 51F5
-2F81E 5203
-2F81F 34DF
-2F820 523B
-2F821 5246
-2F822 5272
-2F823 5277
-2F824 3515
-2F825 52C7
-2F826 52C9
-2F827 52E4
-2F828 52FA
-2F829 5305
-2F82A 5306
-2F82B 5317
-2F82C 5349
-2F82D 5351
-2F82E 535A
-2F82F 5373
-2F830 537D
-2F831 2F833 537F
-2F834 20A2C
-2F835 7070
-2F836 53CA
-2F837 53DF
-2F838 20B63
-2F839 53EB
-2F83A 53F1
-2F83B 5406
-2F83C 549E
-2F83D 5438
-2F83E 5448
-2F83F 5468
-2F840 54A2
-2F841 54F6
-2F842 5510
-2F843 5553
-2F844 5563
-2F845 2F846 5584
-2F847 5599
-2F848 55AB
-2F849 55B3
-2F84A 55C2
-2F84B 5716
-2F84C 5606
-2F84D 5717
-2F84E 5651
-2F84F 5674
-2F850 5207
-2F851 58EE
-2F852 57CE
-2F853 57F4
-2F854 580D
-2F855 578B
-2F856 5832
-2F857 5831
-2F858 58AC
-2F859 214E4
-2F85A 58F2
-2F85B 58F7
-2F85C 5906
-2F85D 591A
-2F85E 5922
-2F85F 5962
-2F860 216A8
-2F861 216EA
-2F862 59EC
-2F863 5A1B
-2F864 5A27
-2F865 59D8
-2F866 5A66
-2F867 36EE
-2F868 2136A
-2F869 5B08
-2F86A 2F86B 5B3E
-2F86C 219C8
-2F86D 5BC3
-2F86E 5BD8
-2F86F 5BE7
-2F870 5BF3
-2F871 21B18
-2F872 5BFF
-2F873 5C06
-2F874 5F33
-2F875 5C22
-2F876 3781
-2F877 5C60
-2F878 5C6E
-2F879 5CC0
-2F87A 5C8D
-2F87B 21DE4
-2F87C 5D43
-2F87D 21DE6
-2F87E 5D6E
-2F87F 5D6B
-2F880 5D7C
-2F881 5DE1
-2F882 5DE2
-2F883 382F
-2F884 5DFD
-2F885 5E28
-2F886 5E3D
-2F887 5E69
-2F888 3862
-2F889 22183
-2F88A 387C
-2F88B 5EB0
-2F88C 5EB3
-2F88D 5EB6
-2F88E 5ECA
-2F88F 2A392
-2F890 5EFE
-2F891 2F892 22331
-2F893 8201
-2F894 2F895 5F22
-2F896 38C7
-2F897 232B8
-2F898 261DA
-2F899 5F62
-2F89A 5F6B
-2F89B 38E3
-2F89C 5F9A
-2F89D 5FCD
-2F89E 5FD7
-2F89F 5FF9
-2F8A0 6081
-2F8A1 393A
-2F8A2 391C
-2F8A3 6094
-2F8A4 226D4
-2F8A5 60C7
-2F8A6 6148
-2F8A7 614C
-2F8A8 614E
-2F8A9 614C
-2F8AA 617A
-2F8AB 618E
-2F8AC 61B2
-2F8AD 61A4
-2F8AE 61AF
-2F8AF 61DE
-2F8B0 61F2
-2F8B1 61F6
-2F8B2 6210
-2F8B3 621B
-2F8B4 625D
-2F8B5 62B1
-2F8B6 62D4
-2F8B7 6350
-2F8B8 22B0C
-2F8B9 633D
-2F8BA 62FC
-2F8BB 6368
-2F8BC 6383
-2F8BD 63E4
-2F8BE 22BF1
-2F8BF 6422
-2F8C0 63C5
-2F8C1 63A9
-2F8C2 3A2E
-2F8C3 6469
-2F8C4 647E
-2F8C5 649D
-2F8C6 6477
-2F8C7 3A6C
-2F8C8 654F
-2F8C9 656C
-2F8CA 2300A
-2F8CB 65E3
-2F8CC 66F8
-2F8CD 6649
-2F8CE 3B19
-2F8CF 6691
-2F8D0 3B08
-2F8D1 3AE4
-2F8D2 5192
-2F8D3 5195
-2F8D4 6700
-2F8D5 669C
-2F8D6 80AD
-2F8D7 43D9
-2F8D8 6717
-2F8D9 671B
-2F8DA 6721
-2F8DB 675E
-2F8DC 6753
-2F8DD 233C3
-2F8DE 3B49
-2F8DF 67FA
-2F8E0 6785
-2F8E1 6852
-2F8E2 6885
-2F8E3 2346D
-2F8E4 688E
-2F8E5 681F
-2F8E6 6914
-2F8E7 3B9D
-2F8E8 6942
-2F8E9 69A3
-2F8EA 69EA
-2F8EB 6AA8
-2F8EC 236A3
-2F8ED 6ADB
-2F8EE 3C18
-2F8EF 6B21
-2F8F0 238A7
-2F8F1 6B54
-2F8F2 3C4E
-2F8F3 6B72
-2F8F4 6B9F
-2F8F5 6BBA
-2F8F6 6BBB
-2F8F7 23A8D
-2F8F8 21D0B
-2F8F9 23AFA
-2F8FA 6C4E
-2F8FB 23CBC
-2F8FC 6CBF
-2F8FD 6CCD
-2F8FE 6C67
-2F8FF 6D16
-2F900 6D3E
-2F901 6D77
-2F902 6D41
-2F903 6D69
-2F904 6D78
-2F905 6D85
-2F906 23D1E
-2F907 6D34
-2F908 6E2F
-2F909 6E6E
-2F90A 3D33
-2F90B 6ECB
-2F90C 6EC7
-2F90D 23ED1
-2F90E 6DF9
-2F90F 6F6E
-2F910 23F5E
-2F911 23F8E
-2F912 6FC6
-2F913 7039
-2F914 701E
-2F915 701B
-2F916 3D96
-2F917 704A
-2F918 707D
-2F919 7077
-2F91A 70AD
-2F91B 20525
-2F91C 7145
-2F91D 24263
-2F91E 719C
-2F91F 43AB
-2F920 7228
-2F921 7235
-2F922 7250
-2F923 24608
-2F924 7280
-2F925 7295
-2F926 24735
-2F927 24814
-2F928 737A
-2F929 738B
-2F92A 3EAC
-2F92B 73A5
-2F92C 2F92D 3EB8
-2F92E 7447
-2F92F 745C
-2F930 7471
-2F931 7485
-2F932 74CA
-2F933 3F1B
-2F934 7524
-2F935 24C36
-2F936 753E
-2F937 24C92
-2F938 7570
-2F939 2219F
-2F93A 7610
-2F93B 24FA1
-2F93C 24FB8
-2F93D 25044
-2F93E 3FFC
-2F93F 4008
-2F940 76F4
-2F941 250F3
-2F942 250F2
-2F943 25119
-2F944 25133
-2F945 771E
-2F946 2F947 771F
-2F948 774A
-2F949 4039
-2F94A 778B
-2F94B 4046
-2F94C 4096
-2F94D 2541D
-2F94E 784E
-2F94F 788C
-2F950 78CC
-2F951 40E3
-2F952 25626
-2F953 7956
-2F954 2569A
-2F955 256C5
-2F956 798F
-2F957 79EB
-2F958 412F
-2F959 7A40
-2F95A 7A4A
-2F95B 7A4F
-2F95C 2597C
-2F95D 2F95E 25AA7
-2F95F 7AAE
-2F960 4202
-2F961 25BAB
-2F962 7BC6
-2F963 7BC9
-2F964 4227
-2F965 25C80
-2F966 7CD2
-2F967 42A0
-2F968 7CE8
-2F969 7CE3
-2F96A 7D00
-2F96B 25F86
-2F96C 7D63
-2F96D 4301
-2F96E 7DC7
-2F96F 7E02
-2F970 7E45
-2F971 4334
-2F972 26228
-2F973 26247
-2F974 4359
-2F975 262D9
-2F976 7F7A
-2F977 2633E
-2F978 7F95
-2F979 7FFA
-2F97A 8005
-2F97B 264DA
-2F97C 26523
-2F97D 8060
-2F97E 265A8
-2F97F 8070
-2F980 2335F
-2F981 43D5
-2F982 80B2
-2F983 8103
-2F984 440B
-2F985 813E
-2F986 5AB5
-2F987 267A7
-2F988 267B5
-2F989 23393
-2F98A 2339C
-2F98B 8201
-2F98C 8204
-2F98D 8F9E
-2F98E 446B
-2F98F 8291
-2F990 828B
-2F991 829D
-2F992 52B3
-2F993 82B1
-2F994 82B3
-2F995 82BD
-2F996 82E6
-2F997 26B3C
-2F998 82E5
-2F999 831D
-2F99A 8363
-2F99B 83AD
-2F99C 8323
-2F99D 83BD
-2F99E 83E7
-2F99F 8457
-2F9A0 8353
-2F9A1 83CA
-2F9A2 83CC
-2F9A3 83DC
-2F9A4 26C36
-2F9A5 26D6B
-2F9A6 26CD5
-2F9A7 452B
-2F9A8 84F1
-2F9A9 84F3
-2F9AA 8516
-2F9AB 273CA
-2F9AC 8564
-2F9AD 26F2C
-2F9AE 455D
-2F9AF 4561
-2F9B0 26FB1
-2F9B1 270D2
-2F9B2 456B
-2F9B3 8650
-2F9B4 865C
-2F9B5 8667
-2F9B6 8669
-2F9B7 86A9
-2F9B8 8688
-2F9B9 870E
-2F9BA 86E2
-2F9BB 8779
-2F9BC 8728
-2F9BD 876B
-2F9BE 8786
-2F9BF 4D57
-2F9C0 87E1
-2F9C1 8801
-2F9C2 45F9
-2F9C3 8860
-2F9C4 8863
-2F9C5 27667
-2F9C6 88D7
-2F9C7 88DE
-2F9C8 4635
-2F9C9 88FA
-2F9CA 34BB
-2F9CB 278AE
-2F9CC 27966
-2F9CD 46BE
-2F9CE 46C7
-2F9CF 8AA0
-2F9D0 8AED
-2F9D1 8B8A
-2F9D2 8C55
-2F9D3 27CA8
-2F9D4 8CAB
-2F9D5 8CC1
-2F9D6 8D1B
-2F9D7 8D77
-2F9D8 27F2F
-2F9D9 20804
-2F9DA 8DCB
-2F9DB 8DBC
-2F9DC 8DF0
-2F9DD 208DE
-2F9DE 8ED4
-2F9DF 8F38
-2F9E0 285D2
-2F9E1 285ED
-2F9E2 9094
-2F9E3 90F1
-2F9E4 9111
-2F9E5 2872E
-2F9E6 911B
-2F9E7 9238
-2F9E8 92D7
-2F9E9 92D8
-2F9EA 927C
-2F9EB 93F9
-2F9EC 9415
-2F9ED 28BFA
-2F9EE 958B
-2F9EF 4995
-2F9F0 95B7
-2F9F1 28D77
-2F9F2 49E6
-2F9F3 96C3
-2F9F4 5DB2
-2F9F5 9723
-2F9F6 29145
-2F9F7 2921A
-2F9F8 4A6E
-2F9F9 4A76
-2F9FA 97E0
-2F9FB 2940A
-2F9FC 4AB2
-2F9FD 29496
-2F9FE 2F9FF 980B
-2FA00 9829
-2FA01 295B6
-2FA02 98E2
-2FA03 4B33
-2FA04 9929
-2FA05 99A7
-2FA06 99C2
-2FA07 99FE
-2FA08 4BCE
-2FA09 29B30
-2FA0A 9B12
-2FA0B 9C40
-2FA0C 9CFD
-2FA0D 4CCE
-2FA0E 4CED
-2FA0F 9D67
-2FA10 2A0CE
-2FA11 4CF8
-2FA12 2A105
-2FA13 2A20E
-2FA14 2A291
-2FA15 9EBB
-2FA16 4D56
-2FA17 9EF9
-2FA18 9EFE
-2FA19 9F05
-2FA1A 9F0F
-2FA1B 9F16
-2FA1C 9F3B
-2FA1D 2A600
-END
diff --git a/Master/perltl/lib/unicore/Exact.pl b/Master/perltl/lib/unicore/Exact.pl
deleted file mode 100644
index 61ba06a9e70..00000000000
--- a/Master/perltl/lib/unicore/Exact.pl
+++ /dev/null
@@ -1,110 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-##
-## Data in this file used by ../utf8_heavy.pl
-##
-
-## Mapping from name to filename in ./lib
-%utf8::Exact = (
- ASCII => 'ASCII',
- All => 'Any',
- Alnum => 'Alnum',
- Alpha => 'Alpha',
- Any => 'Any',
- Assigned => 'Assigned',
- BidiAL => 'BidiAL',
- BidiAN => 'BidiAN',
- BidiB => 'BidiB',
- BidiBN => 'BidiBN',
- BidiCS => 'BidiCS',
- BidiEN => 'BidiEN',
- BidiES => 'BidiES',
- BidiET => 'BidiET',
- BidiL => 'BidiL',
- BidiLRE => 'BidiLRE',
- BidiLRO => 'BidiLRO',
- BidiNSM => 'BidiNSM',
- BidiON => 'BidiON',
- BidiPDF => 'BidiPDF',
- BidiR => 'BidiR',
- BidiRLE => 'BidiRLE',
- BidiRLO => 'BidiRLO',
- BidiS => 'BidiS',
- BidiWS => 'BidiWS',
- Blank => 'Blank',
- C => 'C',
- Canon => 'Canon',
- Cc => 'Cc',
- Cf => 'Cf',
- Cn => 'Cn',
- Cntrl => 'Cntrl',
- Co => 'Co',
- Compat => 'Compat',
- Cs => 'Cs',
- DCcircle => 'DCcircle',
- DCcompat => 'DCcompat',
- DCfinal => 'DCfinal',
- DCfont => 'DCfont',
- DCfraction => 'DCfracti',
- DCinitial => 'DCinitia',
- DCisolated => 'DCisolat',
- DCmedial => 'DCmedial',
- DCnarrow => 'DCnarrow',
- DCnoBreak => 'DCnoBrea',
- DCsmall => 'DCsmall',
- DCsquare => 'DCsquare',
- DCsub => 'DCsub',
- DCsuper => 'DCsuper',
- DCvertical => 'DCvertic',
- DCwide => 'DCwide',
- Digit => 'Digit',
- Graph => 'Graph',
- L => 'L',
-'L&' => 'L_',
- Ll => 'Ll',
- Lm => 'Lm',
- Lo => 'Lo',
- Lower => 'Lower',
- Lt => 'Lt',
- Lu => 'Lu',
- M => 'M',
- Mc => 'Mc',
- Me => 'Me',
- Mirrored => 'Mirrored',
- Mn => 'Mn',
- N => 'N',
- Nd => 'Nd',
- Nl => 'Nl',
- No => 'No',
- P => 'P',
- Pc => 'Pc',
- Pd => 'Pd',
- Pe => 'Pe',
- Pf => 'Pf',
- Pi => 'Pi',
- Po => 'Po',
- Print => 'Print',
- Ps => 'Ps',
- Punct => 'Punct',
- S => 'S',
- Sc => 'Sc',
- Sk => 'Sk',
- Sm => 'Sm',
- So => 'So',
- Space => 'Space',
- SpacePerl => 'SpacePer',
- Title => 'Title',
- Upper => 'Upper',
- Word => 'Word',
- XDigit => 'XDigit',
- Z => 'Z',
- Zl => 'Zl',
- Zp => 'Zp',
- Zs => 'Zs',
- _CanonDCIJ => '_CanonDC',
- _CaseIgnorable => '_CaseIgn',
- _CombAbove => '_CombAbo',
-);
-1;
diff --git a/Master/perltl/lib/unicore/JamoShort.pl b/Master/perltl/lib/unicore/JamoShort.pl
deleted file mode 100644
index 4ab02fd5449..00000000000
--- a/Master/perltl/lib/unicore/JamoShort.pl
+++ /dev/null
@@ -1,73 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-return <<'END';
-1100 G
-1101 GG
-1102 N
-1103 D
-1104 DD
-1105 R
-1106 M
-1107 B
-1108 BB
-1109 S
-110A SS
-110B
-110C J
-110D JJ
-110E C
-110F K
-1110 T
-1111 P
-1112 H
-1161 A
-1162 AE
-1163 YA
-1164 YAE
-1165 EO
-1166 E
-1167 YEO
-1168 YE
-1169 O
-116A WA
-116B WAE
-116C OE
-116D YO
-116E U
-116F WEO
-1170 WE
-1171 WI
-1172 YU
-1173 EU
-1174 YI
-1175 I
-11A8 G
-11A9 GG
-11AA GS
-11AB N
-11AC NJ
-11AD NH
-11AE D
-11AF L
-11B0 LG
-11B1 LM
-11B2 LB
-11B3 LS
-11B4 LT
-11B5 LP
-11B6 LH
-11B7 M
-11B8 B
-11B9 BS
-11BA S
-11BB SS
-11BC NG
-11BD J
-11BE C
-11BF K
-11C0 T
-11C1 P
-11C2 H
-END
diff --git a/Master/perltl/lib/unicore/Lbrk.pl b/Master/perltl/lib/unicore/Lbrk.pl
deleted file mode 100644
index 0a4eb153697..00000000000
--- a/Master/perltl/lib/unicore/Lbrk.pl
+++ /dev/null
@@ -1,1073 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-return <<'END';
-0000 0008 CM
-0009 BA
-000A LF
-000B CM
-000C BK
-000D CR
-000E 001F CM
-0020 SP
-0021 EX
-0022 QU
-0023 AL
-0024 PR
-0025 PO
-0026 AL
-0027 QU
-0028 OP
-0029 CL
-002A AL
-002B PR
-002C IS
-002D HY
-002E IS
-002F SY
-0030 0039 NU
-003A 003B IS
-003C 003E AL
-003F EX
-0040 005A AL
-005B OP
-005C PR
-005D CL
-005E 007A AL
-007B OP
-007C BA
-007D CL
-007E AL
-007F 009F CM
-00A0 GL
-00A1 AI
-00A2 PO
-00A3 00A5 PR
-00A6 AL
-00A7 00A8 AI
-00A9 AL
-00AA AI
-00AB QU
-00AC AL
-00AD BA
-00AE 00AF AL
-00B0 PO
-00B1 PR
-00B2 00B3 AI
-00B4 BB
-00B5 AL
-00B6 00BA AI
-00BB QU
-00BC 00BF AI
-00C0 00C5 AL
-00C6 AI
-00C7 00CF AL
-00D0 AI
-00D1 00D6 AL
-00D7 00D8 AI
-00D9 00DD AL
-00DE 00E1 AI
-00E2 00E5 AL
-00E6 AI
-00E7 AL
-00E8 00EA AI
-00EB AL
-00EC 00ED AI
-00EE 00EF AL
-00F0 AI
-00F1 AL
-00F2 00F3 AI
-00F4 00F6 AL
-00F7 00FA AI
-00FB AL
-00FC AI
-00FD AL
-00FE AI
-00FF 0100 AL
-0101 AI
-0102 0110 AL
-0111 AI
-0112 AL
-0113 AI
-0114 011A AL
-011B AI
-011C 0125 AL
-0126 0127 AI
-0128 012A AL
-012B AI
-012C 0130 AL
-0131 0133 AI
-0134 0137 AL
-0138 AI
-0139 013E AL
-013F 0142 AI
-0143 AL
-0144 AI
-0145 0147 AL
-0148 014A AI
-014B 014C AL
-014D AI
-014E 0151 AL
-0152 0153 AI
-0154 0165 AL
-0166 0167 AI
-0168 016A AL
-016B AI
-016C 01CD AL
-01CE AI
-01CF AL
-01D0 AI
-01D1 AL
-01D2 AI
-01D3 AL
-01D4 AI
-01D5 AL
-01D6 AI
-01D7 AL
-01D8 AI
-01D9 AL
-01DA AI
-01DB AL
-01DC AI
-01DD 0220 AL
-0222 0233 AL
-0250 AL
-0251 AI
-0252 0260 AL
-0261 AI
-0262 02AD AL
-02B0 02C6 AL
-02C7 AI
-02C8 BB
-02C9 02CB AI
-02CC BB
-02CD AI
-02CE 02CF AL
-02D0 AI
-02D1 02D7 AL
-02D8 02DB AI
-02DC AL
-02DD AI
-02DE 02EE AL
-0300 034F CM
-0360 036F CM
-0374 0375 AL
-037A AL
-037E AL
-0384 038A AL
-038C AL
-038E 0390 AL
-0391 03A1 AI
-03A3 03A9 AI
-03AA 03B0 AL
-03B1 03C1 AI
-03C2 AL
-03C3 03C9 AI
-03CA 03CE AL
-03D0 03F6 AL
-0400 AL
-0401 AI
-0402 040F AL
-0410 044F AI
-0450 AL
-0451 AI
-0452 0482 AL
-0483 0486 CM
-0488 0489 CM
-048A 04CE AL
-04D0 04F5 AL
-04F8 04F9 AL
-0500 050F AL
-0531 0556 AL
-0559 055F AL
-0561 0587 AL
-0589 IS
-058A BA
-0591 05A1 CM
-05A3 05B9 CM
-05BB 05BD CM
-05BE AL
-05BF CM
-05C0 AL
-05C1 05C2 CM
-05C3 AL
-05C4 CM
-05D0 05EA AL
-05F0 05F4 AL
-060C AL
-061B AL
-061F AL
-0621 063A AL
-0640 064A AL
-064B 0655 CM
-0660 0669 NU
-066A 066F AL
-0670 CM
-0671 06D5 AL
-06D6 06E4 CM
-06E5 06E6 AL
-06E7 06E8 CM
-06E9 AL
-06EA 06ED CM
-06F0 06F9 NU
-06FA 06FE AL
-0700 070D AL
-070F CM
-0710 AL
-0711 CM
-0712 072C AL
-0730 074A CM
-0780 07A5 AL
-07A6 07B0 CM
-07B1 AL
-0901 0903 CM
-0905 0939 AL
-093C CM
-093D AL
-093E 094D CM
-0950 AL
-0951 0954 CM
-0958 0961 AL
-0962 0963 CM
-0964 0965 AL
-0966 096F NU
-0970 AL
-0981 0983 CM
-0985 098C AL
-098F 0990 AL
-0993 09A8 AL
-09AA 09B0 AL
-09B2 AL
-09B6 09B9 AL
-09BC CM
-09BE 09C4 CM
-09C7 09C8 CM
-09CB 09CD CM
-09D7 CM
-09DC 09DD AL
-09DF 09E1 AL
-09E2 09E3 CM
-09E6 09EF NU
-09F0 09F1 AL
-09F2 09F3 PR
-09F4 09FA AL
-0A02 CM
-0A05 0A0A AL
-0A0F 0A10 AL
-0A13 0A28 AL
-0A2A 0A30 AL
-0A32 0A33 AL
-0A35 0A36 AL
-0A38 0A39 AL
-0A3C CM
-0A3E 0A42 CM
-0A47 0A48 CM
-0A4B 0A4D CM
-0A59 0A5C AL
-0A5E AL
-0A66 0A6F NU
-0A70 0A71 CM
-0A72 0A74 AL
-0A81 0A83 CM
-0A85 0A8B AL
-0A8D AL
-0A8F 0A91 AL
-0A93 0AA8 AL
-0AAA 0AB0 AL
-0AB2 0AB3 AL
-0AB5 0AB9 AL
-0ABC CM
-0ABD AL
-0ABE 0AC5 CM
-0AC7 0AC9 CM
-0ACB 0ACD CM
-0AD0 AL
-0AE0 AL
-0AE6 0AEF NU
-0B01 0B03 CM
-0B05 0B0C AL
-0B0F 0B10 AL
-0B13 0B28 AL
-0B2A 0B30 AL
-0B32 0B33 AL
-0B36 0B39 AL
-0B3C CM
-0B3D AL
-0B3E 0B43 CM
-0B47 0B48 CM
-0B4B 0B4D CM
-0B56 0B57 CM
-0B5C 0B5D AL
-0B5F 0B61 AL
-0B66 0B6F NU
-0B70 AL
-0B82 CM
-0B83 AL
-0B85 0B8A AL
-0B8E 0B90 AL
-0B92 0B95 AL
-0B99 0B9A AL
-0B9C AL
-0B9E 0B9F AL
-0BA3 0BA4 AL
-0BA8 0BAA AL
-0BAE 0BB5 AL
-0BB7 0BB9 AL
-0BBE 0BC2 CM
-0BC6 0BC8 CM
-0BCA 0BCD CM
-0BD7 CM
-0BE7 0BEF NU
-0BF0 0BF2 AL
-0C01 0C03 CM
-0C05 0C0C AL
-0C0E 0C10 AL
-0C12 0C28 AL
-0C2A 0C33 AL
-0C35 0C39 AL
-0C3E 0C44 CM
-0C46 0C48 CM
-0C4A 0C4D CM
-0C55 0C56 CM
-0C60 0C61 AL
-0C66 0C6F NU
-0C82 0C83 CM
-0C85 0C8C AL
-0C8E 0C90 AL
-0C92 0CA8 AL
-0CAA 0CB3 AL
-0CB5 0CB9 AL
-0CBE 0CC4 CM
-0CC6 0CC8 CM
-0CCA 0CCD CM
-0CD5 0CD6 CM
-0CDE AL
-0CE0 0CE1 AL
-0CE6 0CEF NU
-0D02 0D03 CM
-0D05 0D0C AL
-0D0E 0D10 AL
-0D12 0D28 AL
-0D2A 0D39 AL
-0D3E 0D43 CM
-0D46 0D48 CM
-0D4A 0D4D CM
-0D57 CM
-0D60 0D61 AL
-0D66 0D6F NU
-0D82 0D83 CM
-0D85 0D96 AL
-0D9A 0DB1 AL
-0DB3 0DBB AL
-0DBD AL
-0DC0 0DC6 AL
-0DCA CM
-0DCF 0DD4 CM
-0DD6 CM
-0DD8 0DDF CM
-0DF2 0DF3 CM
-0DF4 AL
-0E01 0E30 SA
-0E31 CM
-0E32 0E33 SA
-0E34 0E3A CM
-0E3F PR
-0E40 0E46 SA
-0E47 0E4E CM
-0E4F AL
-0E50 0E59 NU
-0E5A 0E5B NS
-0E81 0E82 SA
-0E84 SA
-0E87 0E88 SA
-0E8A SA
-0E8D SA
-0E94 0E97 SA
-0E99 0E9F SA
-0EA1 0EA3 SA
-0EA5 SA
-0EA7 SA
-0EAA 0EAB SA
-0EAD 0EB0 SA
-0EB1 CM
-0EB2 0EB3 SA
-0EB4 0EB9 CM
-0EBB 0EBC CM
-0EBD SA
-0EC0 0EC4 SA
-0EC6 SA
-0EC8 0ECD CM
-0ED0 0ED9 NU
-0EDC 0EDD SA
-0F00 0F0A AL
-0F0B BA
-0F0C GL
-0F0D 0F17 AL
-0F18 0F19 CM
-0F1A 0F1F AL
-0F20 0F29 NU
-0F2A 0F34 AL
-0F35 CM
-0F36 AL
-0F37 CM
-0F38 AL
-0F39 CM
-0F3A OP
-0F3B CL
-0F3C OP
-0F3D CL
-0F3E 0F3F CM
-0F40 0F47 AL
-0F49 0F6A AL
-0F71 0F84 CM
-0F85 AL
-0F86 0F87 CM
-0F88 0F8B AL
-0F90 0F97 CM
-0F99 0FBC CM
-0FBE 0FC5 AL
-0FC6 CM
-0FC7 0FCC AL
-0FCF AL
-1000 1021 SA
-1023 1027 SA
-1029 102A SA
-102C 1032 CM
-1036 1039 CM
-1040 1049 NU
-104A 104F AL
-1050 1055 SA
-1056 1059 CM
-10A0 10C5 AL
-10D0 10F8 AL
-10FB AL
-1100 1159 ID
-115F ID
-1160 11A2 CM
-11A8 11F9 CM
-1200 1206 AL
-1208 1246 AL
-1248 AL
-124A 124D AL
-1250 1256 AL
-1258 AL
-125A 125D AL
-1260 1286 AL
-1288 AL
-128A 128D AL
-1290 12AE AL
-12B0 AL
-12B2 12B5 AL
-12B8 12BE AL
-12C0 AL
-12C2 12C5 AL
-12C8 12CE AL
-12D0 12D6 AL
-12D8 12EE AL
-12F0 130E AL
-1310 AL
-1312 1315 AL
-1318 131E AL
-1320 1346 AL
-1348 135A AL
-1361 BA
-1362 1368 AL
-1369 1371 NU
-1372 137C AL
-13A0 13F4 AL
-1401 1676 AL
-1680 BA
-1681 169A AL
-169B OP
-169C CL
-16A0 16F0 AL
-1700 170C AL
-170E 1711 AL
-1712 1714 CM
-1720 1731 AL
-1732 1734 CM
-1735 1736 AL
-1740 1751 AL
-1752 1753 CM
-1760 176C AL
-176E 1770 AL
-1772 1773 CM
-1780 17B3 SA
-17B4 17D3 CM
-17D4 NS
-17D5 BA
-17D6 17DA NS
-17DB PR
-17DC AL
-17E0 17E9 NU
-1800 1805 AL
-1806 BB
-1807 180A AL
-180B 180E CM
-1810 1819 NU
-1820 1877 AL
-1880 18A8 AL
-18A9 CM
-1E00 1E9B AL
-1EA0 1EF9 AL
-1F00 1F15 AL
-1F18 1F1D AL
-1F20 1F45 AL
-1F48 1F4D AL
-1F50 1F57 AL
-1F59 AL
-1F5B AL
-1F5D AL
-1F5F 1F7D AL
-1F80 1FB4 AL
-1FB6 1FC4 AL
-1FC6 1FD3 AL
-1FD6 1FDB AL
-1FDD 1FEF AL
-1FF2 1FF4 AL
-1FF6 1FFE AL
-2000 2006 BA
-2007 GL
-2008 200A BA
-200B ZW
-200C 200F CM
-2010 BA
-2011 GL
-2012 2013 BA
-2014 B2
-2015 2016 AI
-2017 AL
-2018 2019 QU
-201A OP
-201B 201D QU
-201E OP
-201F QU
-2020 2021 AI
-2022 2023 AL
-2024 2026 IN
-2027 BA
-2028 2029 BK
-202A 202E CM
-202F GL
-2030 2037 PO
-2038 AL
-2039 203A QU
-203B AI
-203C NS
-203D 2043 AL
-2044 NS
-2045 OP
-2046 CL
-2047 2052 AL
-2057 AL
-205F BA
-2060 GL
-2061 2063 AL
-206A 206F CM
-2070 2071 AL
-2074 AI
-2075 207C AL
-207D OP
-207E CL
-207F AI
-2080 AL
-2081 2084 AI
-2085 208C AL
-208D OP
-208E CL
-20A0 20A6 PR
-20A7 PO
-20A8 20B1 PR
-20D0 20EA CM
-2100 2102 AL
-2103 PO
-2104 AL
-2105 AI
-2106 2108 AL
-2109 PO
-210A 2112 AL
-2113 AI
-2114 2115 AL
-2116 PR
-2117 2120 AL
-2121 2122 AI
-2123 2125 AL
-2126 PO
-2127 212A AL
-212B AI
-212C 213A AL
-213D 213F AL
-2140 AI
-2141 214B AL
-2153 AL
-2154 2155 AI
-2156 215A AL
-215B AI
-215C 215D AL
-215E AI
-215F AL
-2160 216B AI
-216C 216F AL
-2170 2179 AI
-217A 2183 AL
-2190 2199 AI
-219A 21D1 AL
-21D2 AI
-21D3 AL
-21D4 AI
-21D5 21FF AL
-2200 AI
-2201 AL
-2202 2203 AI
-2204 2206 AL
-2207 2208 AI
-2209 220A AL
-220B AI
-220C 220E AL
-220F AI
-2210 AL
-2211 AI
-2212 2213 PR
-2214 AL
-2215 AI
-2216 2219 AL
-221A AI
-221B 221C AL
-221D 2220 AI
-2221 2222 AL
-2223 AI
-2224 AL
-2225 AI
-2226 AL
-2227 222C AI
-222D AL
-222E AI
-222F 2233 AL
-2234 2237 AI
-2238 223B AL
-223C 223D AI
-223E 2247 AL
-2248 AI
-2249 224B AL
-224C AI
-224D 2251 AL
-2252 AI
-2253 225F AL
-2260 2261 AI
-2262 2263 AL
-2264 2267 AI
-2268 2269 AL
-226A 226B AI
-226C 226D AL
-226E 226F AI
-2270 2281 AL
-2282 2283 AI
-2284 2285 AL
-2286 2287 AI
-2288 2294 AL
-2295 AI
-2296 2298 AL
-2299 AI
-229A 22A4 AL
-22A5 AI
-22A6 22BE AL
-22BF AI
-22C0 2311 AL
-2312 AI
-2313 2328 AL
-2329 OP
-232A CL
-232B 23B3 AL
-23B4 OP
-23B5 CL
-23B6 QU
-23B7 23CE AL
-2400 2426 AL
-2440 244A AL
-2460 24BF AI
-24C0 24CF AL
-24D0 24E9 AI
-24EA AL
-24EB 24FE AI
-2500 254B AI
-254C 254F AL
-2550 2574 AI
-2575 257F AL
-2580 258F AI
-2590 2591 AL
-2592 2595 AI
-2596 259F AL
-25A0 25A1 AI
-25A2 AL
-25A3 25A9 AI
-25AA 25B1 AL
-25B2 25B3 AI
-25B4 25B5 AL
-25B6 25B7 AI
-25B8 25BB AL
-25BC 25BD AI
-25BE 25BF AL
-25C0 25C1 AI
-25C2 25C5 AL
-25C6 25C8 AI
-25C9 25CA AL
-25CB AI
-25CC 25CD AL
-25CE 25D1 AI
-25D2 25E1 AL
-25E2 25E5 AI
-25E6 25EE AL
-25EF AI
-25F0 2604 AL
-2605 2606 AI
-2607 2608 AL
-2609 AI
-260A 260D AL
-260E 260F AI
-2610 2613 AL
-2616 2617 AI
-2619 261B AL
-261C AI
-261D AL
-261E AI
-261F 263F AL
-2640 AI
-2641 AL
-2642 AI
-2643 265F AL
-2660 2661 AI
-2662 AL
-2663 2665 AI
-2666 AL
-2667 266A AI
-266B AL
-266C 266D AI
-266E AL
-266F AI
-2670 267D AL
-2680 2689 AL
-2701 2704 AL
-2706 2709 AL
-270C 2727 AL
-2729 274B AL
-274D AL
-274F 2752 AL
-2756 AL
-2758 275A AL
-275B 275E QU
-2761 AL
-2762 2763 EX
-2764 2767 AL
-2768 OP
-2769 CL
-276A OP
-276B CL
-276C OP
-276D CL
-276E OP
-276F CL
-2770 OP
-2771 CL
-2772 OP
-2773 CL
-2774 OP
-2775 CL
-2776 2794 AL
-2798 27AF AL
-27B1 27BE AL
-27D0 27E5 AL
-27E6 OP
-27E7 CL
-27E8 OP
-27E9 CL
-27EA OP
-27EB CL
-27F0 2982 AL
-2983 OP
-2984 CL
-2985 OP
-2986 CL
-2987 OP
-2988 CL
-2989 OP
-298A CL
-298B OP
-298C CL
-298D OP
-298E CL
-298F OP
-2990 CL
-2991 OP
-2992 CL
-2993 OP
-2994 CL
-2995 OP
-2996 CL
-2997 OP
-2998 CL
-2999 29D7 AL
-29D8 OP
-29D9 CL
-29DA OP
-29DB CL
-29DC 29FB AL
-29FC OP
-29FD CL
-29FE 2AFF AL
-2E80 2E99 ID
-2E9B 2EF3 ID
-2F00 2FD5 ID
-2FF0 2FFB ID
-3000 ID
-3001 3002 CL
-3003 3004 ID
-3005 NS
-3006 3007 ID
-3008 OP
-3009 CL
-300A OP
-300B CL
-300C OP
-300D CL
-300E OP
-300F CL
-3010 OP
-3011 CL
-3012 3013 ID
-3014 OP
-3015 CL
-3016 OP
-3017 CL
-3018 OP
-3019 CL
-301A OP
-301B CL
-301C NS
-301D OP
-301E 301F CL
-3020 3029 ID
-302A 302F CM
-3030 303A ID
-303B 303C NS
-303D 303F ID
-3041 NS
-3042 ID
-3043 NS
-3044 ID
-3045 NS
-3046 ID
-3047 NS
-3048 ID
-3049 NS
-304A 3062 ID
-3063 NS
-3064 3082 ID
-3083 NS
-3084 ID
-3085 NS
-3086 ID
-3087 NS
-3088 308D ID
-308E NS
-308F 3094 ID
-3095 3096 NS
-3099 309A CM
-309B 309E NS
-309F ID
-30A0 30A1 NS
-30A2 ID
-30A3 NS
-30A4 ID
-30A5 NS
-30A6 ID
-30A7 NS
-30A8 ID
-30A9 NS
-30AA 30C2 ID
-30C3 NS
-30C4 30E2 ID
-30E3 NS
-30E4 ID
-30E5 NS
-30E6 ID
-30E7 NS
-30E8 30ED ID
-30EE NS
-30EF 30F4 ID
-30F5 30F6 NS
-30F7 30FA ID
-30FB NS
-30FC ID
-30FD NS
-30FE 30FF ID
-3105 312C ID
-3131 318E ID
-3190 31B7 ID
-31F0 31FF NS
-3200 321C ID
-3220 3243 ID
-3251 327B ID
-327F 32CB ID
-32D0 32FE ID
-3300 3376 ID
-337B 33DD ID
-33E0 33FE ID
-3400 4DB5 ID
-4E00 9FA5 ID
-A000 A48C ID
-A490 A4C6 ID
-AC00 D7A3 ID
-D800 DFFF SG
-E000 F8FF XX
-F900 FA2D ID
-FA30 FA6A ID
-FB00 FB06 AL
-FB13 FB17 AL
-FB1D AL
-FB1E CM
-FB1F FB36 AL
-FB38 FB3C AL
-FB3E AL
-FB40 FB41 AL
-FB43 FB44 AL
-FB46 FBB1 AL
-FBD3 FD3D AL
-FD3E OP
-FD3F CL
-FD50 FD8F AL
-FD92 FDC7 AL
-FDF0 FDFB AL
-FDFC PO
-FE00 FE0F CM
-FE20 FE23 CM
-FE30 FE34 ID
-FE35 OP
-FE36 CL
-FE37 OP
-FE38 CL
-FE39 OP
-FE3A CL
-FE3B OP
-FE3C CL
-FE3D OP
-FE3E CL
-FE3F OP
-FE40 CL
-FE41 OP
-FE42 CL
-FE43 OP
-FE44 CL
-FE45 FE46 ID
-FE49 FE4F ID
-FE50 CL
-FE51 ID
-FE52 CL
-FE54 FE55 NS
-FE56 FE57 EX
-FE58 ID
-FE59 OP
-FE5A CL
-FE5B OP
-FE5C CL
-FE5D OP
-FE5E CL
-FE5F FE66 ID
-FE68 ID
-FE69 PR
-FE6A PO
-FE6B ID
-FE70 FE74 AL
-FE76 FEFC AL
-FEFF GL
-FF01 EX
-FF02 FF03 ID
-FF04 PR
-FF05 PO
-FF06 FF07 ID
-FF08 OP
-FF09 CL
-FF0A FF0B ID
-FF0C CL
-FF0D ID
-FF0E CL
-FF0F FF19 ID
-FF1A FF1B NS
-FF1C FF1E ID
-FF1F EX
-FF20 FF3A ID
-FF3B OP
-FF3C ID
-FF3D CL
-FF3E FF5A ID
-FF5B OP
-FF5C ID
-FF5D CL
-FF5E ID
-FF5F OP
-FF60 FF61 CL
-FF62 OP
-FF63 FF64 CL
-FF65 NS
-FF66 AL
-FF67 FF70 NS
-FF71 FF9D AL
-FF9E FF9F NS
-FFA0 FFBE AL
-FFC2 FFC7 AL
-FFCA FFCF AL
-FFD2 FFD7 AL
-FFDA FFDC AL
-FFE0 PO
-FFE1 PR
-FFE2 FFE4 ID
-FFE5 FFE6 PR
-FFE8 FFEE AL
-FFF9 FFFB CM
-FFFC CB
-FFFD AI
-10300 1031E AL
-10320 10323 AL
-10330 1034A AL
-10400 10425 AL
-10428 1044D AL
-1D000 1D0F5 AL
-1D100 1D126 AL
-1D12A 1D164 AL
-1D165 1D169 CM
-1D16A 1D16C AL
-1D16D 1D182 CM
-1D183 1D184 AL
-1D185 1D18B CM
-1D18C 1D1A9 AL
-1D1AA 1D1AD CM
-1D1AE 1D1DD AL
-1D400 1D454 AL
-1D456 1D49C AL
-1D49E 1D49F AL
-1D4A2 AL
-1D4A5 1D4A6 AL
-1D4A9 1D4AC AL
-1D4AE 1D4B9 AL
-1D4BB AL
-1D4BD 1D4C0 AL
-1D4C2 1D4C3 AL
-1D4C5 1D505 AL
-1D507 1D50A AL
-1D50D 1D514 AL
-1D516 1D51C AL
-1D51E 1D539 AL
-1D53B 1D53E AL
-1D540 1D544 AL
-1D546 AL
-1D54A 1D550 AL
-1D552 1D6A3 AL
-1D6A8 1D7C9 AL
-1D7CE 1D7FF NU
-20000 2A6D6 ID
-2F800 2FA1D ID
-E0001 CM
-E0020 E007F CM
-F0000 FFFFD XX
-100000 10FFFD XX
-END
diff --git a/Master/perltl/lib/unicore/Name.pl b/Master/perltl/lib/unicore/Name.pl
deleted file mode 100644
index 2dde9fdd3b1..00000000000
--- a/Master/perltl/lib/unicore/Name.pl
+++ /dev/null
@@ -1,13869 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-return <<'END';
-0000 NULL
-0001 START OF HEADING
-0002 START OF TEXT
-0003 END OF TEXT
-0004 END OF TRANSMISSION
-0005 ENQUIRY
-0006 ACKNOWLEDGE
-0007 BELL
-0008 BACKSPACE
-0009 CHARACTER TABULATION
-000A LINE FEED (LF)
-000B LINE TABULATION
-000C FORM FEED (FF)
-000D CARRIAGE RETURN (CR)
-000E SHIFT OUT
-000F SHIFT IN
-0010 DATA LINK ESCAPE
-0011 DEVICE CONTROL ONE
-0012 DEVICE CONTROL TWO
-0013 DEVICE CONTROL THREE
-0014 DEVICE CONTROL FOUR
-0015 NEGATIVE ACKNOWLEDGE
-0016 SYNCHRONOUS IDLE
-0017 END OF TRANSMISSION BLOCK
-0018 CANCEL
-0019 END OF MEDIUM
-001A SUBSTITUTE
-001B ESCAPE
-001C INFORMATION SEPARATOR FOUR
-001D INFORMATION SEPARATOR THREE
-001E INFORMATION SEPARATOR TWO
-001F INFORMATION SEPARATOR ONE
-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 DELETE
-0080 0081 <control>
-0082 BREAK PERMITTED HERE
-0083 NO BREAK HERE
-0084 <control>
-0085 NEXT LINE (NEL)
-0086 START OF SELECTED AREA
-0087 END OF SELECTED AREA
-0088 CHARACTER TABULATION SET
-0089 CHARACTER TABULATION WITH JUSTIFICATION
-008A LINE TABULATION SET
-008B PARTIAL LINE FORWARD
-008C PARTIAL LINE BACKWARD
-008D REVERSE LINE FEED
-008E SINGLE SHIFT TWO
-008F SINGLE SHIFT THREE
-0090 DEVICE CONTROL STRING
-0091 PRIVATE USE ONE
-0092 PRIVATE USE TWO
-0093 SET TRANSMIT STATE
-0094 CANCEL CHARACTER
-0095 MESSAGE WAITING
-0096 START OF GUARDED AREA
-0097 END OF GUARDED AREA
-0098 START OF STRING
-0099 <control>
-009A SINGLE CHARACTER INTRODUCER
-009B CONTROL SEQUENCE INTRODUCER
-009C STRING TERMINATOR
-009D OPERATING SYSTEM COMMAND
-009E PRIVACY MESSAGE
-009F APPLICATION PROGRAM COMMAND
-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
-0220 LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
-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
-034F COMBINING GRAPHEME JOINER
-0360 COMBINING DOUBLE TILDE
-0361 COMBINING DOUBLE INVERTED BREVE
-0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-0363 COMBINING LATIN SMALL LETTER A
-0364 COMBINING LATIN SMALL LETTER E
-0365 COMBINING LATIN SMALL LETTER I
-0366 COMBINING LATIN SMALL LETTER O
-0367 COMBINING LATIN SMALL LETTER U
-0368 COMBINING LATIN SMALL LETTER C
-0369 COMBINING LATIN SMALL LETTER D
-036A COMBINING LATIN SMALL LETTER H
-036B COMBINING LATIN SMALL LETTER M
-036C COMBINING LATIN SMALL LETTER R
-036D COMBINING LATIN SMALL LETTER T
-036E COMBINING LATIN SMALL LETTER V
-036F COMBINING LATIN SMALL LETTER X
-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
-03D8 GREEK LETTER ARCHAIC KOPPA
-03D9 GREEK SMALL LETTER ARCHAIC KOPPA
-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
-03F4 GREEK CAPITAL THETA SYMBOL
-03F5 GREEK LUNATE EPSILON SYMBOL
-03F6 GREEK REVERSED LUNATE EPSILON SYMBOL
-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
-048A CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
-048B CYRILLIC SMALL LETTER SHORT I WITH TAIL
-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
-04C5 CYRILLIC CAPITAL LETTER EL WITH TAIL
-04C6 CYRILLIC SMALL LETTER EL WITH TAIL
-04C7 CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C8 CYRILLIC SMALL LETTER EN WITH HOOK
-04C9 CYRILLIC CAPITAL LETTER EN WITH TAIL
-04CA CYRILLIC SMALL LETTER EN WITH TAIL
-04CB CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CC CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04CD CYRILLIC CAPITAL LETTER EM WITH TAIL
-04CE CYRILLIC SMALL LETTER EM WITH TAIL
-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
-0500 CYRILLIC CAPITAL LETTER KOMI DE
-0501 CYRILLIC SMALL LETTER KOMI DE
-0502 CYRILLIC CAPITAL LETTER KOMI DJE
-0503 CYRILLIC SMALL LETTER KOMI DJE
-0504 CYRILLIC CAPITAL LETTER KOMI ZJE
-0505 CYRILLIC SMALL LETTER KOMI ZJE
-0506 CYRILLIC CAPITAL LETTER KOMI DZJE
-0507 CYRILLIC SMALL LETTER KOMI DZJE
-0508 CYRILLIC CAPITAL LETTER KOMI LJE
-0509 CYRILLIC SMALL LETTER KOMI LJE
-050A CYRILLIC CAPITAL LETTER KOMI NJE
-050B CYRILLIC SMALL LETTER KOMI NJE
-050C CYRILLIC CAPITAL LETTER KOMI SJE
-050D CYRILLIC SMALL LETTER KOMI SJE
-050E CYRILLIC CAPITAL LETTER KOMI TJE
-050F CYRILLIC SMALL LETTER KOMI TJE
-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
-066E ARABIC LETTER DOTLESS BEH
-066F ARABIC LETTER DOTLESS QAF
-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
-07B1 THAANA LETTER NAA
-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
-10F7 GEORGIAN LETTER YN
-10F8 GEORGIAN LETTER ELIFI
-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
-1700 TAGALOG LETTER A
-1701 TAGALOG LETTER I
-1702 TAGALOG LETTER U
-1703 TAGALOG LETTER KA
-1704 TAGALOG LETTER GA
-1705 TAGALOG LETTER NGA
-1706 TAGALOG LETTER TA
-1707 TAGALOG LETTER DA
-1708 TAGALOG LETTER NA
-1709 TAGALOG LETTER PA
-170A TAGALOG LETTER BA
-170B TAGALOG LETTER MA
-170C TAGALOG LETTER YA
-170E TAGALOG LETTER LA
-170F TAGALOG LETTER WA
-1710 TAGALOG LETTER SA
-1711 TAGALOG LETTER HA
-1712 TAGALOG VOWEL SIGN I
-1713 TAGALOG VOWEL SIGN U
-1714 TAGALOG SIGN VIRAMA
-1720 HANUNOO LETTER A
-1721 HANUNOO LETTER I
-1722 HANUNOO LETTER U
-1723 HANUNOO LETTER KA
-1724 HANUNOO LETTER GA
-1725 HANUNOO LETTER NGA
-1726 HANUNOO LETTER TA
-1727 HANUNOO LETTER DA
-1728 HANUNOO LETTER NA
-1729 HANUNOO LETTER PA
-172A HANUNOO LETTER BA
-172B HANUNOO LETTER MA
-172C HANUNOO LETTER YA
-172D HANUNOO LETTER RA
-172E HANUNOO LETTER LA
-172F HANUNOO LETTER WA
-1730 HANUNOO LETTER SA
-1731 HANUNOO LETTER HA
-1732 HANUNOO VOWEL SIGN I
-1733 HANUNOO VOWEL SIGN U
-1734 HANUNOO SIGN PAMUDPOD
-1735 PHILIPPINE SINGLE PUNCTUATION
-1736 PHILIPPINE DOUBLE PUNCTUATION
-1740 BUHID LETTER A
-1741 BUHID LETTER I
-1742 BUHID LETTER U
-1743 BUHID LETTER KA
-1744 BUHID LETTER GA
-1745 BUHID LETTER NGA
-1746 BUHID LETTER TA
-1747 BUHID LETTER DA
-1748 BUHID LETTER NA
-1749 BUHID LETTER PA
-174A BUHID LETTER BA
-174B BUHID LETTER MA
-174C BUHID LETTER YA
-174D BUHID LETTER RA
-174E BUHID LETTER LA
-174F BUHID LETTER WA
-1750 BUHID LETTER SA
-1751 BUHID LETTER HA
-1752 BUHID VOWEL SIGN I
-1753 BUHID VOWEL SIGN U
-1760 TAGBANWA LETTER A
-1761 TAGBANWA LETTER I
-1762 TAGBANWA LETTER U
-1763 TAGBANWA LETTER KA
-1764 TAGBANWA LETTER GA
-1765 TAGBANWA LETTER NGA
-1766 TAGBANWA LETTER TA
-1767 TAGBANWA LETTER DA
-1768 TAGBANWA LETTER NA
-1769 TAGBANWA LETTER PA
-176A TAGBANWA LETTER BA
-176B TAGBANWA LETTER MA
-176C TAGBANWA LETTER YA
-176E TAGBANWA LETTER LA
-176F TAGBANWA LETTER WA
-1770 TAGBANWA LETTER SA
-1772 TAGBANWA VOWEL SIGN I
-1773 TAGBANWA VOWEL SIGN U
-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
-2047 DOUBLE QUESTION MARK
-2048 QUESTION EXCLAMATION MARK
-2049 EXCLAMATION QUESTION MARK
-204A TIRONIAN SIGN ET
-204B REVERSED PILCROW SIGN
-204C BLACK LEFTWARDS BULLET
-204D BLACK RIGHTWARDS BULLET
-204E LOW ASTERISK
-204F REVERSED SEMICOLON
-2050 CLOSE UP
-2051 TWO ASTERISKS ALIGNED VERTICALLY
-2052 COMMERCIAL MINUS SIGN
-2057 QUADRUPLE PRIME
-205F MEDIUM MATHEMATICAL SPACE
-2060 WORD JOINER
-2061 FUNCTION APPLICATION
-2062 INVISIBLE TIMES
-2063 INVISIBLE SEPARATOR
-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
-2071 SUPERSCRIPT LATIN SMALL LETTER I
-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
-20B0 GERMAN PENNY SIGN
-20B1 PESO 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
-20E4 COMBINING ENCLOSING UPWARD POINTING TRIANGLE
-20E5 COMBINING REVERSE SOLIDUS OVERLAY
-20E6 COMBINING DOUBLE VERTICAL STROKE OVERLAY
-20E7 COMBINING ANNUITY SYMBOL
-20E8 COMBINING TRIPLE UNDERDOT
-20E9 COMBINING WIDE BRIDGE ABOVE
-20EA COMBINING LEFTWARDS ARROW OVERLAY
-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
-213D DOUBLE-STRUCK SMALL GAMMA
-213E DOUBLE-STRUCK CAPITAL GAMMA
-213F DOUBLE-STRUCK CAPITAL PI
-2140 DOUBLE-STRUCK N-ARY SUMMATION
-2141 TURNED SANS-SERIF CAPITAL G
-2142 TURNED SANS-SERIF CAPITAL L
-2143 REVERSED SANS-SERIF CAPITAL L
-2144 TURNED SANS-SERIF CAPITAL Y
-2145 DOUBLE-STRUCK ITALIC CAPITAL D
-2146 DOUBLE-STRUCK ITALIC SMALL D
-2147 DOUBLE-STRUCK ITALIC SMALL E
-2148 DOUBLE-STRUCK ITALIC SMALL I
-2149 DOUBLE-STRUCK ITALIC SMALL J
-214A PROPERTY LINE
-214B TURNED AMPERSAND
-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
-21F4 RIGHT ARROW WITH SMALL CIRCLE
-21F5 DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
-21F6 THREE RIGHTWARDS ARROWS
-21F7 LEFTWARDS ARROW WITH VERTICAL STROKE
-21F8 RIGHTWARDS ARROW WITH VERTICAL STROKE
-21F9 LEFT RIGHT ARROW WITH VERTICAL STROKE
-21FA LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
-21FB RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
-21FC LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
-21FD LEFTWARDS OPEN-HEADED ARROW
-21FE RIGHTWARDS OPEN-HEADED ARROW
-21FF LEFT RIGHT OPEN-HEADED 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
-22F2 ELEMENT OF WITH LONG HORIZONTAL STROKE
-22F3 ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F4 SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22F5 ELEMENT OF WITH DOT ABOVE
-22F6 ELEMENT OF WITH OVERBAR
-22F7 SMALL ELEMENT OF WITH OVERBAR
-22F8 ELEMENT OF WITH UNDERBAR
-22F9 ELEMENT OF WITH TWO HORIZONTAL STROKES
-22FA CONTAINS WITH LONG HORIZONTAL STROKE
-22FB CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FC SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
-22FD CONTAINS WITH OVERBAR
-22FE SMALL CONTAINS WITH OVERBAR
-22FF Z NOTATION BAG MEMBERSHIP
-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
-237C RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
-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
-239B LEFT PARENTHESIS UPPER HOOK
-239C LEFT PARENTHESIS EXTENSION
-239D LEFT PARENTHESIS LOWER HOOK
-239E RIGHT PARENTHESIS UPPER HOOK
-239F RIGHT PARENTHESIS EXTENSION
-23A0 RIGHT PARENTHESIS LOWER HOOK
-23A1 LEFT SQUARE BRACKET UPPER CORNER
-23A2 LEFT SQUARE BRACKET EXTENSION
-23A3 LEFT SQUARE BRACKET LOWER CORNER
-23A4 RIGHT SQUARE BRACKET UPPER CORNER
-23A5 RIGHT SQUARE BRACKET EXTENSION
-23A6 RIGHT SQUARE BRACKET LOWER CORNER
-23A7 LEFT CURLY BRACKET UPPER HOOK
-23A8 LEFT CURLY BRACKET MIDDLE PIECE
-23A9 LEFT CURLY BRACKET LOWER HOOK
-23AA CURLY BRACKET EXTENSION
-23AB RIGHT CURLY BRACKET UPPER HOOK
-23AC RIGHT CURLY BRACKET MIDDLE PIECE
-23AD RIGHT CURLY BRACKET LOWER HOOK
-23AE INTEGRAL EXTENSION
-23AF HORIZONTAL LINE EXTENSION
-23B0 UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
-23B1 UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
-23B2 SUMMATION TOP
-23B3 SUMMATION BOTTOM
-23B4 TOP SQUARE BRACKET
-23B5 BOTTOM SQUARE BRACKET
-23B6 BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
-23B7 RADICAL SYMBOL BOTTOM
-23B8 LEFT VERTICAL BOX LINE
-23B9 RIGHT VERTICAL BOX LINE
-23BA HORIZONTAL SCAN LINE-1
-23BB HORIZONTAL SCAN LINE-3
-23BC HORIZONTAL SCAN LINE-7
-23BD HORIZONTAL SCAN LINE-9
-23BE DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT
-23BF DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT
-23C0 DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE
-23C1 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE
-23C2 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE
-23C3 DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE
-23C4 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE
-23C5 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE
-23C6 DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE
-23C7 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE
-23C8 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE
-23C9 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL
-23CA DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL
-23CB DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT
-23CC DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT
-23CD SQUARE FOOT
-23CE RETURN 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
-24EB NEGATIVE CIRCLED NUMBER ELEVEN
-24EC NEGATIVE CIRCLED NUMBER TWELVE
-24ED NEGATIVE CIRCLED NUMBER THIRTEEN
-24EE NEGATIVE CIRCLED NUMBER FOURTEEN
-24EF NEGATIVE CIRCLED NUMBER FIFTEEN
-24F0 NEGATIVE CIRCLED NUMBER SIXTEEN
-24F1 NEGATIVE CIRCLED NUMBER SEVENTEEN
-24F2 NEGATIVE CIRCLED NUMBER EIGHTEEN
-24F3 NEGATIVE CIRCLED NUMBER NINETEEN
-24F4 NEGATIVE CIRCLED NUMBER TWENTY
-24F5 DOUBLE CIRCLED DIGIT ONE
-24F6 DOUBLE CIRCLED DIGIT TWO
-24F7 DOUBLE CIRCLED DIGIT THREE
-24F8 DOUBLE CIRCLED DIGIT FOUR
-24F9 DOUBLE CIRCLED DIGIT FIVE
-24FA DOUBLE CIRCLED DIGIT SIX
-24FB DOUBLE CIRCLED DIGIT SEVEN
-24FC DOUBLE CIRCLED DIGIT EIGHT
-24FD DOUBLE CIRCLED DIGIT NINE
-24FE DOUBLE CIRCLED NUMBER TEN
-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
-2596 QUADRANT LOWER LEFT
-2597 QUADRANT LOWER RIGHT
-2598 QUADRANT UPPER LEFT
-2599 QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
-259A QUADRANT UPPER LEFT AND LOWER RIGHT
-259B QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
-259C QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
-259D QUADRANT UPPER RIGHT
-259E QUADRANT UPPER RIGHT AND LOWER LEFT
-259F QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
-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
-25F8 UPPER LEFT TRIANGLE
-25F9 UPPER RIGHT TRIANGLE
-25FA LOWER LEFT TRIANGLE
-25FB WHITE MEDIUM SQUARE
-25FC BLACK MEDIUM SQUARE
-25FD WHITE MEDIUM SMALL SQUARE
-25FE BLACK MEDIUM SMALL SQUARE
-25FF LOWER RIGHT TRIANGLE
-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
-2616 WHITE SHOGI PIECE
-2617 BLACK SHOGI PIECE
-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
-2672 UNIVERSAL RECYCLING SYMBOL
-2673 RECYCLING SYMBOL FOR TYPE-1 PLASTICS
-2674 RECYCLING SYMBOL FOR TYPE-2 PLASTICS
-2675 RECYCLING SYMBOL FOR TYPE-3 PLASTICS
-2676 RECYCLING SYMBOL FOR TYPE-4 PLASTICS
-2677 RECYCLING SYMBOL FOR TYPE-5 PLASTICS
-2678 RECYCLING SYMBOL FOR TYPE-6 PLASTICS
-2679 RECYCLING SYMBOL FOR TYPE-7 PLASTICS
-267A RECYCLING SYMBOL FOR GENERIC MATERIALS
-267B BLACK UNIVERSAL RECYCLING SYMBOL
-267C RECYCLED PAPER SYMBOL
-267D PARTIALLY-RECYCLED PAPER SYMBOL
-2680 DIE FACE-1
-2681 DIE FACE-2
-2682 DIE FACE-3
-2683 DIE FACE-4
-2684 DIE FACE-5
-2685 DIE FACE-6
-2686 WHITE CIRCLE WITH DOT RIGHT
-2687 WHITE CIRCLE WITH TWO DOTS
-2688 BLACK CIRCLE WITH WHITE DOT RIGHT
-2689 BLACK CIRCLE WITH TWO WHITE DOTS
-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
-2768 MEDIUM LEFT PARENTHESIS ORNAMENT
-2769 MEDIUM RIGHT PARENTHESIS ORNAMENT
-276A MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-276B MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-276C MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-276D MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-276E HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-276F HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-2770 HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-2771 HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-2772 LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-2773 LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-2774 MEDIUM LEFT CURLY BRACKET ORNAMENT
-2775 MEDIUM RIGHT CURLY BRACKET ORNAMENT
-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
-27D0 WHITE DIAMOND WITH CENTRED DOT
-27D1 AND WITH DOT
-27D2 ELEMENT OF OPENING UPWARDS
-27D3 LOWER RIGHT CORNER WITH DOT
-27D4 UPPER LEFT CORNER WITH DOT
-27D5 LEFT OUTER JOIN
-27D6 RIGHT OUTER JOIN
-27D7 FULL OUTER JOIN
-27D8 LARGE UP TACK
-27D9 LARGE DOWN TACK
-27DA LEFT AND RIGHT DOUBLE TURNSTILE
-27DB LEFT AND RIGHT TACK
-27DC LEFT MULTIMAP
-27DD LONG RIGHT TACK
-27DE LONG LEFT TACK
-27DF UP TACK WITH CIRCLE ABOVE
-27E0 LOZENGE DIVIDED BY HORIZONTAL RULE
-27E1 WHITE CONCAVE-SIDED DIAMOND
-27E2 WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
-27E3 WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
-27E4 WHITE SQUARE WITH LEFTWARDS TICK
-27E5 WHITE SQUARE WITH RIGHTWARDS TICK
-27E6 MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E7 MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E8 MATHEMATICAL LEFT ANGLE BRACKET
-27E9 MATHEMATICAL RIGHT ANGLE BRACKET
-27EA MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EB MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-27F0 UPWARDS QUADRUPLE ARROW
-27F1 DOWNWARDS QUADRUPLE ARROW
-27F2 ANTICLOCKWISE GAPPED CIRCLE ARROW
-27F3 CLOCKWISE GAPPED CIRCLE ARROW
-27F4 RIGHT ARROW WITH CIRCLED PLUS
-27F5 LONG LEFTWARDS ARROW
-27F6 LONG RIGHTWARDS ARROW
-27F7 LONG LEFT RIGHT ARROW
-27F8 LONG LEFTWARDS DOUBLE ARROW
-27F9 LONG RIGHTWARDS DOUBLE ARROW
-27FA LONG LEFT RIGHT DOUBLE ARROW
-27FB LONG LEFTWARDS ARROW FROM BAR
-27FC LONG RIGHTWARDS ARROW FROM BAR
-27FD LONG LEFTWARDS DOUBLE ARROW FROM BAR
-27FE LONG RIGHTWARDS DOUBLE ARROW FROM BAR
-27FF LONG RIGHTWARDS SQUIGGLE 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
-2900 RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
-2901 RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
-2902 LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2903 RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2904 LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
-2905 RIGHTWARDS TWO-HEADED ARROW FROM BAR
-2906 LEFTWARDS DOUBLE ARROW FROM BAR
-2907 RIGHTWARDS DOUBLE ARROW FROM BAR
-2908 DOWNWARDS ARROW WITH HORIZONTAL STROKE
-2909 UPWARDS ARROW WITH HORIZONTAL STROKE
-290A UPWARDS TRIPLE ARROW
-290B DOWNWARDS TRIPLE ARROW
-290C LEFTWARDS DOUBLE DASH ARROW
-290D RIGHTWARDS DOUBLE DASH ARROW
-290E LEFTWARDS TRIPLE DASH ARROW
-290F RIGHTWARDS TRIPLE DASH ARROW
-2910 RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
-2911 RIGHTWARDS ARROW WITH DOTTED STEM
-2912 UPWARDS ARROW TO BAR
-2913 DOWNWARDS ARROW TO BAR
-2914 RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
-2915 RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2916 RIGHTWARDS TWO-HEADED ARROW WITH TAIL
-2917 RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
-2918 RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2919 LEFTWARDS ARROW-TAIL
-291A RIGHTWARDS ARROW-TAIL
-291B LEFTWARDS DOUBLE ARROW-TAIL
-291C RIGHTWARDS DOUBLE ARROW-TAIL
-291D LEFTWARDS ARROW TO BLACK DIAMOND
-291E RIGHTWARDS ARROW TO BLACK DIAMOND
-291F LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2920 RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2921 NORTH WEST AND SOUTH EAST ARROW
-2922 NORTH EAST AND SOUTH WEST ARROW
-2923 NORTH WEST ARROW WITH HOOK
-2924 NORTH EAST ARROW WITH HOOK
-2925 SOUTH EAST ARROW WITH HOOK
-2926 SOUTH WEST ARROW WITH HOOK
-2927 NORTH WEST ARROW AND NORTH EAST ARROW
-2928 NORTH EAST ARROW AND SOUTH EAST ARROW
-2929 SOUTH EAST ARROW AND SOUTH WEST ARROW
-292A SOUTH WEST ARROW AND NORTH WEST ARROW
-292B RISING DIAGONAL CROSSING FALLING DIAGONAL
-292C FALLING DIAGONAL CROSSING RISING DIAGONAL
-292D SOUTH EAST ARROW CROSSING NORTH EAST ARROW
-292E NORTH EAST ARROW CROSSING SOUTH EAST ARROW
-292F FALLING DIAGONAL CROSSING NORTH EAST ARROW
-2930 RISING DIAGONAL CROSSING SOUTH EAST ARROW
-2931 NORTH EAST ARROW CROSSING NORTH WEST ARROW
-2932 NORTH WEST ARROW CROSSING NORTH EAST ARROW
-2933 WAVE ARROW POINTING DIRECTLY RIGHT
-2934 ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
-2935 ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
-2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
-2937 ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
-2938 RIGHT-SIDE ARC CLOCKWISE ARROW
-2939 LEFT-SIDE ARC ANTICLOCKWISE ARROW
-293A TOP ARC ANTICLOCKWISE ARROW
-293B BOTTOM ARC ANTICLOCKWISE ARROW
-293C TOP ARC CLOCKWISE ARROW WITH MINUS
-293D TOP ARC ANTICLOCKWISE ARROW WITH PLUS
-293E LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
-293F LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
-2940 ANTICLOCKWISE CLOSED CIRCLE ARROW
-2941 CLOCKWISE CLOSED CIRCLE ARROW
-2942 RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
-2943 LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
-2944 SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
-2945 RIGHTWARDS ARROW WITH PLUS BELOW
-2946 LEFTWARDS ARROW WITH PLUS BELOW
-2947 RIGHTWARDS ARROW THROUGH X
-2948 LEFT RIGHT ARROW THROUGH SMALL CIRCLE
-2949 UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
-294A LEFT BARB UP RIGHT BARB DOWN HARPOON
-294B LEFT BARB DOWN RIGHT BARB UP HARPOON
-294C UP BARB RIGHT DOWN BARB LEFT HARPOON
-294D UP BARB LEFT DOWN BARB RIGHT HARPOON
-294E LEFT BARB UP RIGHT BARB UP HARPOON
-294F UP BARB RIGHT DOWN BARB RIGHT HARPOON
-2950 LEFT BARB DOWN RIGHT BARB DOWN HARPOON
-2951 UP BARB LEFT DOWN BARB LEFT HARPOON
-2952 LEFTWARDS HARPOON WITH BARB UP TO BAR
-2953 RIGHTWARDS HARPOON WITH BARB UP TO BAR
-2954 UPWARDS HARPOON WITH BARB RIGHT TO BAR
-2955 DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
-2956 LEFTWARDS HARPOON WITH BARB DOWN TO BAR
-2957 RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
-2958 UPWARDS HARPOON WITH BARB LEFT TO BAR
-2959 DOWNWARDS HARPOON WITH BARB LEFT TO BAR
-295A LEFTWARDS HARPOON WITH BARB UP FROM BAR
-295B RIGHTWARDS HARPOON WITH BARB UP FROM BAR
-295C UPWARDS HARPOON WITH BARB RIGHT FROM BAR
-295D DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
-295E LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
-295F RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
-2960 UPWARDS HARPOON WITH BARB LEFT FROM BAR
-2961 DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
-2962 LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-2963 UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2964 RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2965 DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-2966 LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
-2967 LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2968 RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
-2969 RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-296A LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296B LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296C RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296D RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296E UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-296F DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2970 RIGHT DOUBLE ARROW WITH ROUNDED HEAD
-2971 EQUALS SIGN ABOVE RIGHTWARDS ARROW
-2972 TILDE OPERATOR ABOVE RIGHTWARDS ARROW
-2973 LEFTWARDS ARROW ABOVE TILDE OPERATOR
-2974 RIGHTWARDS ARROW ABOVE TILDE OPERATOR
-2975 RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
-2976 LESS-THAN ABOVE LEFTWARDS ARROW
-2977 LEFTWARDS ARROW THROUGH LESS-THAN
-2978 GREATER-THAN ABOVE RIGHTWARDS ARROW
-2979 SUBSET ABOVE RIGHTWARDS ARROW
-297A LEFTWARDS ARROW THROUGH SUBSET
-297B SUPERSET ABOVE LEFTWARDS ARROW
-297C LEFT FISH TAIL
-297D RIGHT FISH TAIL
-297E UP FISH TAIL
-297F DOWN FISH TAIL
-2980 TRIPLE VERTICAL BAR DELIMITER
-2981 Z NOTATION SPOT
-2982 Z NOTATION TYPE COLON
-2983 LEFT WHITE CURLY BRACKET
-2984 RIGHT WHITE CURLY BRACKET
-2985 LEFT WHITE PARENTHESIS
-2986 RIGHT WHITE PARENTHESIS
-2987 Z NOTATION LEFT IMAGE BRACKET
-2988 Z NOTATION RIGHT IMAGE BRACKET
-2989 Z NOTATION LEFT BINDING BRACKET
-298A Z NOTATION RIGHT BINDING BRACKET
-298B LEFT SQUARE BRACKET WITH UNDERBAR
-298C RIGHT SQUARE BRACKET WITH UNDERBAR
-298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991 LEFT ANGLE BRACKET WITH DOT
-2992 RIGHT ANGLE BRACKET WITH DOT
-2993 LEFT ARC LESS-THAN BRACKET
-2994 RIGHT ARC GREATER-THAN BRACKET
-2995 DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996 DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997 LEFT BLACK TORTOISE SHELL BRACKET
-2998 RIGHT BLACK TORTOISE SHELL BRACKET
-2999 DOTTED FENCE
-299A VERTICAL ZIGZAG LINE
-299B MEASURED ANGLE OPENING LEFT
-299C RIGHT ANGLE VARIANT WITH SQUARE
-299D MEASURED RIGHT ANGLE WITH DOT
-299E ANGLE WITH S INSIDE
-299F ACUTE ANGLE
-29A0 SPHERICAL ANGLE OPENING LEFT
-29A1 SPHERICAL ANGLE OPENING UP
-29A2 TURNED ANGLE
-29A3 REVERSED ANGLE
-29A4 ANGLE WITH UNDERBAR
-29A5 REVERSED ANGLE WITH UNDERBAR
-29A6 OBLIQUE ANGLE OPENING UP
-29A7 OBLIQUE ANGLE OPENING DOWN
-29A8 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
-29A9 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
-29AA MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
-29AB MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
-29AC MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
-29AD MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
-29AE MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
-29AF MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
-29B0 REVERSED EMPTY SET
-29B1 EMPTY SET WITH OVERBAR
-29B2 EMPTY SET WITH SMALL CIRCLE ABOVE
-29B3 EMPTY SET WITH RIGHT ARROW ABOVE
-29B4 EMPTY SET WITH LEFT ARROW ABOVE
-29B5 CIRCLE WITH HORIZONTAL BAR
-29B6 CIRCLED VERTICAL BAR
-29B7 CIRCLED PARALLEL
-29B8 CIRCLED REVERSE SOLIDUS
-29B9 CIRCLED PERPENDICULAR
-29BA CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
-29BB CIRCLE WITH SUPERIMPOSED X
-29BC CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
-29BD UP ARROW THROUGH CIRCLE
-29BE CIRCLED WHITE BULLET
-29BF CIRCLED BULLET
-29C0 CIRCLED LESS-THAN
-29C1 CIRCLED GREATER-THAN
-29C2 CIRCLE WITH SMALL CIRCLE TO THE RIGHT
-29C3 CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
-29C4 SQUARED RISING DIAGONAL SLASH
-29C5 SQUARED FALLING DIAGONAL SLASH
-29C6 SQUARED ASTERISK
-29C7 SQUARED SMALL CIRCLE
-29C8 SQUARED SQUARE
-29C9 TWO JOINED SQUARES
-29CA TRIANGLE WITH DOT ABOVE
-29CB TRIANGLE WITH UNDERBAR
-29CC S IN TRIANGLE
-29CD TRIANGLE WITH SERIFS AT BOTTOM
-29CE RIGHT TRIANGLE ABOVE LEFT TRIANGLE
-29CF LEFT TRIANGLE BESIDE VERTICAL BAR
-29D0 VERTICAL BAR BESIDE RIGHT TRIANGLE
-29D1 BOWTIE WITH LEFT HALF BLACK
-29D2 BOWTIE WITH RIGHT HALF BLACK
-29D3 BLACK BOWTIE
-29D4 TIMES WITH LEFT HALF BLACK
-29D5 TIMES WITH RIGHT HALF BLACK
-29D6 WHITE HOURGLASS
-29D7 BLACK HOURGLASS
-29D8 LEFT WIGGLY FENCE
-29D9 RIGHT WIGGLY FENCE
-29DA LEFT DOUBLE WIGGLY FENCE
-29DB RIGHT DOUBLE WIGGLY FENCE
-29DC INCOMPLETE INFINITY
-29DD TIE OVER INFINITY
-29DE INFINITY NEGATED WITH VERTICAL BAR
-29DF DOUBLE-ENDED MULTIMAP
-29E0 SQUARE WITH CONTOURED OUTLINE
-29E1 INCREASES AS
-29E2 SHUFFLE PRODUCT
-29E3 EQUALS SIGN AND SLANTED PARALLEL
-29E4 EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
-29E5 IDENTICAL TO AND SLANTED PARALLEL
-29E6 GLEICH STARK
-29E7 THERMODYNAMIC
-29E8 DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
-29E9 DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
-29EA BLACK DIAMOND WITH DOWN ARROW
-29EB BLACK LOZENGE
-29EC WHITE CIRCLE WITH DOWN ARROW
-29ED BLACK CIRCLE WITH DOWN ARROW
-29EE ERROR-BARRED WHITE SQUARE
-29EF ERROR-BARRED BLACK SQUARE
-29F0 ERROR-BARRED WHITE DIAMOND
-29F1 ERROR-BARRED BLACK DIAMOND
-29F2 ERROR-BARRED WHITE CIRCLE
-29F3 ERROR-BARRED BLACK CIRCLE
-29F4 RULE-DELAYED
-29F5 REVERSE SOLIDUS OPERATOR
-29F6 SOLIDUS WITH OVERBAR
-29F7 REVERSE SOLIDUS WITH HORIZONTAL STROKE
-29F8 BIG SOLIDUS
-29F9 BIG REVERSE SOLIDUS
-29FA DOUBLE PLUS
-29FB TRIPLE PLUS
-29FC LEFT-POINTING CURVED ANGLE BRACKET
-29FD RIGHT-POINTING CURVED ANGLE BRACKET
-29FE TINY
-29FF MINY
-2A00 N-ARY CIRCLED DOT OPERATOR
-2A01 N-ARY CIRCLED PLUS OPERATOR
-2A02 N-ARY CIRCLED TIMES OPERATOR
-2A03 N-ARY UNION OPERATOR WITH DOT
-2A04 N-ARY UNION OPERATOR WITH PLUS
-2A05 N-ARY SQUARE INTERSECTION OPERATOR
-2A06 N-ARY SQUARE UNION OPERATOR
-2A07 TWO LOGICAL AND OPERATOR
-2A08 TWO LOGICAL OR OPERATOR
-2A09 N-ARY TIMES OPERATOR
-2A0A MODULO TWO SUM
-2A0B SUMMATION WITH INTEGRAL
-2A0C QUADRUPLE INTEGRAL OPERATOR
-2A0D FINITE PART INTEGRAL
-2A0E INTEGRAL WITH DOUBLE STROKE
-2A0F INTEGRAL AVERAGE WITH SLASH
-2A10 CIRCULATION FUNCTION
-2A11 ANTICLOCKWISE INTEGRATION
-2A12 LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
-2A13 LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
-2A14 LINE INTEGRATION NOT INCLUDING THE POLE
-2A15 INTEGRAL AROUND A POINT OPERATOR
-2A16 QUATERNION INTEGRAL OPERATOR
-2A17 INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
-2A18 INTEGRAL WITH TIMES SIGN
-2A19 INTEGRAL WITH INTERSECTION
-2A1A INTEGRAL WITH UNION
-2A1B INTEGRAL WITH OVERBAR
-2A1C INTEGRAL WITH UNDERBAR
-2A1D JOIN
-2A1E LARGE LEFT TRIANGLE OPERATOR
-2A1F Z NOTATION SCHEMA COMPOSITION
-2A20 Z NOTATION SCHEMA PIPING
-2A21 Z NOTATION SCHEMA PROJECTION
-2A22 PLUS SIGN WITH SMALL CIRCLE ABOVE
-2A23 PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
-2A24 PLUS SIGN WITH TILDE ABOVE
-2A25 PLUS SIGN WITH DOT BELOW
-2A26 PLUS SIGN WITH TILDE BELOW
-2A27 PLUS SIGN WITH SUBSCRIPT TWO
-2A28 PLUS SIGN WITH BLACK TRIANGLE
-2A29 MINUS SIGN WITH COMMA ABOVE
-2A2A MINUS SIGN WITH DOT BELOW
-2A2B MINUS SIGN WITH FALLING DOTS
-2A2C MINUS SIGN WITH RISING DOTS
-2A2D PLUS SIGN IN LEFT HALF CIRCLE
-2A2E PLUS SIGN IN RIGHT HALF CIRCLE
-2A2F VECTOR OR CROSS PRODUCT
-2A30 MULTIPLICATION SIGN WITH DOT ABOVE
-2A31 MULTIPLICATION SIGN WITH UNDERBAR
-2A32 SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
-2A33 SMASH PRODUCT
-2A34 MULTIPLICATION SIGN IN LEFT HALF CIRCLE
-2A35 MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
-2A36 CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
-2A37 MULTIPLICATION SIGN IN DOUBLE CIRCLE
-2A38 CIRCLED DIVISION SIGN
-2A39 PLUS SIGN IN TRIANGLE
-2A3A MINUS SIGN IN TRIANGLE
-2A3B MULTIPLICATION SIGN IN TRIANGLE
-2A3C INTERIOR PRODUCT
-2A3D RIGHTHAND INTERIOR PRODUCT
-2A3E Z NOTATION RELATIONAL COMPOSITION
-2A3F AMALGAMATION OR COPRODUCT
-2A40 INTERSECTION WITH DOT
-2A41 UNION WITH MINUS SIGN
-2A42 UNION WITH OVERBAR
-2A43 INTERSECTION WITH OVERBAR
-2A44 INTERSECTION WITH LOGICAL AND
-2A45 UNION WITH LOGICAL OR
-2A46 UNION ABOVE INTERSECTION
-2A47 INTERSECTION ABOVE UNION
-2A48 UNION ABOVE BAR ABOVE INTERSECTION
-2A49 INTERSECTION ABOVE BAR ABOVE UNION
-2A4A UNION BESIDE AND JOINED WITH UNION
-2A4B INTERSECTION BESIDE AND JOINED WITH INTERSECTION
-2A4C CLOSED UNION WITH SERIFS
-2A4D CLOSED INTERSECTION WITH SERIFS
-2A4E DOUBLE SQUARE INTERSECTION
-2A4F DOUBLE SQUARE UNION
-2A50 CLOSED UNION WITH SERIFS AND SMASH PRODUCT
-2A51 LOGICAL AND WITH DOT ABOVE
-2A52 LOGICAL OR WITH DOT ABOVE
-2A53 DOUBLE LOGICAL AND
-2A54 DOUBLE LOGICAL OR
-2A55 TWO INTERSECTING LOGICAL AND
-2A56 TWO INTERSECTING LOGICAL OR
-2A57 SLOPING LARGE OR
-2A58 SLOPING LARGE AND
-2A59 LOGICAL OR OVERLAPPING LOGICAL AND
-2A5A LOGICAL AND WITH MIDDLE STEM
-2A5B LOGICAL OR WITH MIDDLE STEM
-2A5C LOGICAL AND WITH HORIZONTAL DASH
-2A5D LOGICAL OR WITH HORIZONTAL DASH
-2A5E LOGICAL AND WITH DOUBLE OVERBAR
-2A5F LOGICAL AND WITH UNDERBAR
-2A60 LOGICAL AND WITH DOUBLE UNDERBAR
-2A61 SMALL VEE WITH UNDERBAR
-2A62 LOGICAL OR WITH DOUBLE OVERBAR
-2A63 LOGICAL OR WITH DOUBLE UNDERBAR
-2A64 Z NOTATION DOMAIN ANTIRESTRICTION
-2A65 Z NOTATION RANGE ANTIRESTRICTION
-2A66 EQUALS SIGN WITH DOT BELOW
-2A67 IDENTICAL WITH DOT ABOVE
-2A68 TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
-2A69 TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
-2A6A TILDE OPERATOR WITH DOT ABOVE
-2A6B TILDE OPERATOR WITH RISING DOTS
-2A6C SIMILAR MINUS SIMILAR
-2A6D CONGRUENT WITH DOT ABOVE
-2A6E EQUALS WITH ASTERISK
-2A6F ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
-2A70 APPROXIMATELY EQUAL OR EQUAL TO
-2A71 EQUALS SIGN ABOVE PLUS SIGN
-2A72 PLUS SIGN ABOVE EQUALS SIGN
-2A73 EQUALS SIGN ABOVE TILDE OPERATOR
-2A74 DOUBLE COLON EQUAL
-2A75 TWO CONSECUTIVE EQUALS SIGNS
-2A76 THREE CONSECUTIVE EQUALS SIGNS
-2A77 EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
-2A78 EQUIVALENT WITH FOUR DOTS ABOVE
-2A79 LESS-THAN WITH CIRCLE INSIDE
-2A7A GREATER-THAN WITH CIRCLE INSIDE
-2A7B LESS-THAN WITH QUESTION MARK ABOVE
-2A7C GREATER-THAN WITH QUESTION MARK ABOVE
-2A7D LESS-THAN OR SLANTED EQUAL TO
-2A7E GREATER-THAN OR SLANTED EQUAL TO
-2A7F LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A80 GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A81 LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A82 GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A83 LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
-2A84 GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
-2A85 LESS-THAN OR APPROXIMATE
-2A86 GREATER-THAN OR APPROXIMATE
-2A87 LESS-THAN AND SINGLE-LINE NOT EQUAL TO
-2A88 GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
-2A89 LESS-THAN AND NOT APPROXIMATE
-2A8A GREATER-THAN AND NOT APPROXIMATE
-2A8B LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
-2A8C GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
-2A8D LESS-THAN ABOVE SIMILAR OR EQUAL
-2A8E GREATER-THAN ABOVE SIMILAR OR EQUAL
-2A8F LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
-2A90 GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
-2A91 LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
-2A92 GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
-2A93 LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
-2A94 GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
-2A95 SLANTED EQUAL TO OR LESS-THAN
-2A96 SLANTED EQUAL TO OR GREATER-THAN
-2A97 SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
-2A98 SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
-2A99 DOUBLE-LINE EQUAL TO OR LESS-THAN
-2A9A DOUBLE-LINE EQUAL TO OR GREATER-THAN
-2A9B DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
-2A9C DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
-2A9D SIMILAR OR LESS-THAN
-2A9E SIMILAR OR GREATER-THAN
-2A9F SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
-2AA0 SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
-2AA1 DOUBLE NESTED LESS-THAN
-2AA2 DOUBLE NESTED GREATER-THAN
-2AA3 DOUBLE NESTED LESS-THAN WITH UNDERBAR
-2AA4 GREATER-THAN OVERLAPPING LESS-THAN
-2AA5 GREATER-THAN BESIDE LESS-THAN
-2AA6 LESS-THAN CLOSED BY CURVE
-2AA7 GREATER-THAN CLOSED BY CURVE
-2AA8 LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AA9 GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AAA SMALLER THAN
-2AAB LARGER THAN
-2AAC SMALLER THAN OR EQUAL TO
-2AAD LARGER THAN OR EQUAL TO
-2AAE EQUALS SIGN WITH BUMPY ABOVE
-2AAF PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
-2AB0 SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
-2AB1 PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
-2AB2 SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
-2AB3 PRECEDES ABOVE EQUALS SIGN
-2AB4 SUCCEEDS ABOVE EQUALS SIGN
-2AB5 PRECEDES ABOVE NOT EQUAL TO
-2AB6 SUCCEEDS ABOVE NOT EQUAL TO
-2AB7 PRECEDES ABOVE ALMOST EQUAL TO
-2AB8 SUCCEEDS ABOVE ALMOST EQUAL TO
-2AB9 PRECEDES ABOVE NOT ALMOST EQUAL TO
-2ABA SUCCEEDS ABOVE NOT ALMOST EQUAL TO
-2ABB DOUBLE PRECEDES
-2ABC DOUBLE SUCCEEDS
-2ABD SUBSET WITH DOT
-2ABE SUPERSET WITH DOT
-2ABF SUBSET WITH PLUS SIGN BELOW
-2AC0 SUPERSET WITH PLUS SIGN BELOW
-2AC1 SUBSET WITH MULTIPLICATION SIGN BELOW
-2AC2 SUPERSET WITH MULTIPLICATION SIGN BELOW
-2AC3 SUBSET OF OR EQUAL TO WITH DOT ABOVE
-2AC4 SUPERSET OF OR EQUAL TO WITH DOT ABOVE
-2AC5 SUBSET OF ABOVE EQUALS SIGN
-2AC6 SUPERSET OF ABOVE EQUALS SIGN
-2AC7 SUBSET OF ABOVE TILDE OPERATOR
-2AC8 SUPERSET OF ABOVE TILDE OPERATOR
-2AC9 SUBSET OF ABOVE ALMOST EQUAL TO
-2ACA SUPERSET OF ABOVE ALMOST EQUAL TO
-2ACB SUBSET OF ABOVE NOT EQUAL TO
-2ACC SUPERSET OF ABOVE NOT EQUAL TO
-2ACD SQUARE LEFT OPEN BOX OPERATOR
-2ACE SQUARE RIGHT OPEN BOX OPERATOR
-2ACF CLOSED SUBSET
-2AD0 CLOSED SUPERSET
-2AD1 CLOSED SUBSET OR EQUAL TO
-2AD2 CLOSED SUPERSET OR EQUAL TO
-2AD3 SUBSET ABOVE SUPERSET
-2AD4 SUPERSET ABOVE SUBSET
-2AD5 SUBSET ABOVE SUBSET
-2AD6 SUPERSET ABOVE SUPERSET
-2AD7 SUPERSET BESIDE SUBSET
-2AD8 SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
-2AD9 ELEMENT OF OPENING DOWNWARDS
-2ADA PITCHFORK WITH TEE TOP
-2ADB TRANSVERSAL INTERSECTION
-2ADC FORKING
-2ADD NONFORKING
-2ADE SHORT LEFT TACK
-2ADF SHORT DOWN TACK
-2AE0 SHORT UP TACK
-2AE1 PERPENDICULAR WITH S
-2AE2 VERTICAL BAR TRIPLE RIGHT TURNSTILE
-2AE3 DOUBLE VERTICAL BAR LEFT TURNSTILE
-2AE4 VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE5 DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE6 LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
-2AE7 SHORT DOWN TACK WITH OVERBAR
-2AE8 SHORT UP TACK WITH UNDERBAR
-2AE9 SHORT UP TACK ABOVE SHORT DOWN TACK
-2AEA DOUBLE DOWN TACK
-2AEB DOUBLE UP TACK
-2AEC DOUBLE STROKE NOT SIGN
-2AED REVERSED DOUBLE STROKE NOT SIGN
-2AEE DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
-2AEF VERTICAL LINE WITH CIRCLE ABOVE
-2AF0 VERTICAL LINE WITH CIRCLE BELOW
-2AF1 DOWN TACK WITH CIRCLE BELOW
-2AF2 PARALLEL WITH HORIZONTAL STROKE
-2AF3 PARALLEL WITH TILDE OPERATOR
-2AF4 TRIPLE VERTICAL BAR BINARY RELATION
-2AF5 TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
-2AF6 TRIPLE COLON OPERATOR
-2AF7 TRIPLE NESTED LESS-THAN
-2AF8 TRIPLE NESTED GREATER-THAN
-2AF9 DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
-2AFA DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
-2AFB TRIPLE SOLIDUS BINARY RELATION
-2AFC LARGE TRIPLE VERTICAL BAR OPERATOR
-2AFD DOUBLE SOLIDUS OPERATOR
-2AFE WHITE VERTICAL BAR
-2AFF N-ARY WHITE VERTICAL BAR
-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
-303B VERTICAL IDEOGRAPHIC ITERATION MARK
-303C MASU MARK
-303D PART ALTERNATION MARK
-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
-3095 HIRAGANA LETTER SMALL KA
-3096 HIRAGANA LETTER SMALL KE
-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
-309F HIRAGANA DIGRAPH YORI
-30A0 KATAKANA-HIRAGANA DOUBLE HYPHEN
-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
-30FF KATAKANA DIGRAPH KOTO
-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
-31F0 KATAKANA LETTER SMALL KU
-31F1 KATAKANA LETTER SMALL SI
-31F2 KATAKANA LETTER SMALL SU
-31F3 KATAKANA LETTER SMALL TO
-31F4 KATAKANA LETTER SMALL NU
-31F5 KATAKANA LETTER SMALL HA
-31F6 KATAKANA LETTER SMALL HI
-31F7 KATAKANA LETTER SMALL HU
-31F8 KATAKANA LETTER SMALL HE
-31F9 KATAKANA LETTER SMALL HO
-31FA KATAKANA LETTER SMALL MU
-31FB KATAKANA LETTER SMALL RA
-31FC KATAKANA LETTER SMALL RI
-31FD KATAKANA LETTER SMALL RU
-31FE KATAKANA LETTER SMALL RE
-31FF KATAKANA LETTER SMALL RO
-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
-3251 CIRCLED NUMBER TWENTY ONE
-3252 CIRCLED NUMBER TWENTY TWO
-3253 CIRCLED NUMBER TWENTY THREE
-3254 CIRCLED NUMBER TWENTY FOUR
-3255 CIRCLED NUMBER TWENTY FIVE
-3256 CIRCLED NUMBER TWENTY SIX
-3257 CIRCLED NUMBER TWENTY SEVEN
-3258 CIRCLED NUMBER TWENTY EIGHT
-3259 CIRCLED NUMBER TWENTY NINE
-325A CIRCLED NUMBER THIRTY
-325B CIRCLED NUMBER THIRTY ONE
-325C CIRCLED NUMBER THIRTY TWO
-325D CIRCLED NUMBER THIRTY THREE
-325E CIRCLED NUMBER THIRTY FOUR
-325F CIRCLED NUMBER THIRTY FIVE
-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
-32B1 CIRCLED NUMBER THIRTY SIX
-32B2 CIRCLED NUMBER THIRTY SEVEN
-32B3 CIRCLED NUMBER THIRTY EIGHT
-32B4 CIRCLED NUMBER THIRTY NINE
-32B5 CIRCLED NUMBER FORTY
-32B6 CIRCLED NUMBER FORTY ONE
-32B7 CIRCLED NUMBER FORTY TWO
-32B8 CIRCLED NUMBER FORTY THREE
-32B9 CIRCLED NUMBER FORTY FOUR
-32BA CIRCLED NUMBER FORTY FIVE
-32BB CIRCLED NUMBER FORTY SIX
-32BC CIRCLED NUMBER FORTY SEVEN
-32BD CIRCLED NUMBER FORTY EIGHT
-32BE CIRCLED NUMBER FORTY NINE
-32BF CIRCLED NUMBER FIFTY
-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
-4E00 9FA5 CJK Ideograph
-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
-A4A2 YI RADICAL ZUP
-A4A3 YI RADICAL CYT
-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
-A4B4 YI RADICAL NZUP
-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
-A4C1 YI RADICAL ZUR
-A4C2 YI RADICAL SHOP
-A4C3 YI RADICAL CHE
-A4C4 YI RADICAL ZZIET
-A4C5 YI RADICAL NBIE
-A4C6 YI RADICAL KE
-AC00 D7A3 Hangul Syllable
-D800 DB7F Non Private Use High Surrogate
-DB80 DBFF Private Use High Surrogate
-DC00 DFFF Low Surrogate
-E000 F8FF Private Use
-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
-FA30 CJK COMPATIBILITY IDEOGRAPH-FA30
-FA31 CJK COMPATIBILITY IDEOGRAPH-FA31
-FA32 CJK COMPATIBILITY IDEOGRAPH-FA32
-FA33 CJK COMPATIBILITY IDEOGRAPH-FA33
-FA34 CJK COMPATIBILITY IDEOGRAPH-FA34
-FA35 CJK COMPATIBILITY IDEOGRAPH-FA35
-FA36 CJK COMPATIBILITY IDEOGRAPH-FA36
-FA37 CJK COMPATIBILITY IDEOGRAPH-FA37
-FA38 CJK COMPATIBILITY IDEOGRAPH-FA38
-FA39 CJK COMPATIBILITY IDEOGRAPH-FA39
-FA3A CJK COMPATIBILITY IDEOGRAPH-FA3A
-FA3B CJK COMPATIBILITY IDEOGRAPH-FA3B
-FA3C CJK COMPATIBILITY IDEOGRAPH-FA3C
-FA3D CJK COMPATIBILITY IDEOGRAPH-FA3D
-FA3E CJK COMPATIBILITY IDEOGRAPH-FA3E
-FA3F CJK COMPATIBILITY IDEOGRAPH-FA3F
-FA40 CJK COMPATIBILITY IDEOGRAPH-FA40
-FA41 CJK COMPATIBILITY IDEOGRAPH-FA41
-FA42 CJK COMPATIBILITY IDEOGRAPH-FA42
-FA43 CJK COMPATIBILITY IDEOGRAPH-FA43
-FA44 CJK COMPATIBILITY IDEOGRAPH-FA44
-FA45 CJK COMPATIBILITY IDEOGRAPH-FA45
-FA46 CJK COMPATIBILITY IDEOGRAPH-FA46
-FA47 CJK COMPATIBILITY IDEOGRAPH-FA47
-FA48 CJK COMPATIBILITY IDEOGRAPH-FA48
-FA49 CJK COMPATIBILITY IDEOGRAPH-FA49
-FA4A CJK COMPATIBILITY IDEOGRAPH-FA4A
-FA4B CJK COMPATIBILITY IDEOGRAPH-FA4B
-FA4C CJK COMPATIBILITY IDEOGRAPH-FA4C
-FA4D CJK COMPATIBILITY IDEOGRAPH-FA4D
-FA4E CJK COMPATIBILITY IDEOGRAPH-FA4E
-FA4F CJK COMPATIBILITY IDEOGRAPH-FA4F
-FA50 CJK COMPATIBILITY IDEOGRAPH-FA50
-FA51 CJK COMPATIBILITY IDEOGRAPH-FA51
-FA52 CJK COMPATIBILITY IDEOGRAPH-FA52
-FA53 CJK COMPATIBILITY IDEOGRAPH-FA53
-FA54 CJK COMPATIBILITY IDEOGRAPH-FA54
-FA55 CJK COMPATIBILITY IDEOGRAPH-FA55
-FA56 CJK COMPATIBILITY IDEOGRAPH-FA56
-FA57 CJK COMPATIBILITY IDEOGRAPH-FA57
-FA58 CJK COMPATIBILITY IDEOGRAPH-FA58
-FA59 CJK COMPATIBILITY IDEOGRAPH-FA59
-FA5A CJK COMPATIBILITY IDEOGRAPH-FA5A
-FA5B CJK COMPATIBILITY IDEOGRAPH-FA5B
-FA5C CJK COMPATIBILITY IDEOGRAPH-FA5C
-FA5D CJK COMPATIBILITY IDEOGRAPH-FA5D
-FA5E CJK COMPATIBILITY IDEOGRAPH-FA5E
-FA5F CJK COMPATIBILITY IDEOGRAPH-FA5F
-FA60 CJK COMPATIBILITY IDEOGRAPH-FA60
-FA61 CJK COMPATIBILITY IDEOGRAPH-FA61
-FA62 CJK COMPATIBILITY IDEOGRAPH-FA62
-FA63 CJK COMPATIBILITY IDEOGRAPH-FA63
-FA64 CJK COMPATIBILITY IDEOGRAPH-FA64
-FA65 CJK COMPATIBILITY IDEOGRAPH-FA65
-FA66 CJK COMPATIBILITY IDEOGRAPH-FA66
-FA67 CJK COMPATIBILITY IDEOGRAPH-FA67
-FA68 CJK COMPATIBILITY IDEOGRAPH-FA68
-FA69 CJK COMPATIBILITY IDEOGRAPH-FA69
-FA6A CJK COMPATIBILITY IDEOGRAPH-FA6A
-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
-FDFC RIAL SIGN
-FE00 VARIATION SELECTOR-1
-FE01 VARIATION SELECTOR-2
-FE02 VARIATION SELECTOR-3
-FE03 VARIATION SELECTOR-4
-FE04 VARIATION SELECTOR-5
-FE05 VARIATION SELECTOR-6
-FE06 VARIATION SELECTOR-7
-FE07 VARIATION SELECTOR-8
-FE08 VARIATION SELECTOR-9
-FE09 VARIATION SELECTOR-10
-FE0A VARIATION SELECTOR-11
-FE0B VARIATION SELECTOR-12
-FE0C VARIATION SELECTOR-13
-FE0D VARIATION SELECTOR-14
-FE0E VARIATION SELECTOR-15
-FE0F VARIATION SELECTOR-16
-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
-FE45 SESAME DOT
-FE46 WHITE SESAME DOT
-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
-FE73 ARABIC TAIL FRAGMENT
-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
-FF5F FULLWIDTH LEFT WHITE PARENTHESIS
-FF60 FULLWIDTH RIGHT WHITE PARENTHESIS
-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
-10300 OLD ITALIC LETTER A
-10301 OLD ITALIC LETTER BE
-10302 OLD ITALIC LETTER KE
-10303 OLD ITALIC LETTER DE
-10304 OLD ITALIC LETTER E
-10305 OLD ITALIC LETTER VE
-10306 OLD ITALIC LETTER ZE
-10307 OLD ITALIC LETTER HE
-10308 OLD ITALIC LETTER THE
-10309 OLD ITALIC LETTER I
-1030A OLD ITALIC LETTER KA
-1030B OLD ITALIC LETTER EL
-1030C OLD ITALIC LETTER EM
-1030D OLD ITALIC LETTER EN
-1030E OLD ITALIC LETTER ESH
-1030F OLD ITALIC LETTER O
-10310 OLD ITALIC LETTER PE
-10311 OLD ITALIC LETTER SHE
-10312 OLD ITALIC LETTER KU
-10313 OLD ITALIC LETTER ER
-10314 OLD ITALIC LETTER ES
-10315 OLD ITALIC LETTER TE
-10316 OLD ITALIC LETTER U
-10317 OLD ITALIC LETTER EKS
-10318 OLD ITALIC LETTER PHE
-10319 OLD ITALIC LETTER KHE
-1031A OLD ITALIC LETTER EF
-1031B OLD ITALIC LETTER ERS
-1031C OLD ITALIC LETTER CHE
-1031D OLD ITALIC LETTER II
-1031E OLD ITALIC LETTER UU
-10320 OLD ITALIC NUMERAL ONE
-10321 OLD ITALIC NUMERAL FIVE
-10322 OLD ITALIC NUMERAL TEN
-10323 OLD ITALIC NUMERAL FIFTY
-10330 GOTHIC LETTER AHSA
-10331 GOTHIC LETTER BAIRKAN
-10332 GOTHIC LETTER GIBA
-10333 GOTHIC LETTER DAGS
-10334 GOTHIC LETTER AIHVUS
-10335 GOTHIC LETTER QAIRTHRA
-10336 GOTHIC LETTER IUJA
-10337 GOTHIC LETTER HAGL
-10338 GOTHIC LETTER THIUTH
-10339 GOTHIC LETTER EIS
-1033A GOTHIC LETTER KUSMA
-1033B GOTHIC LETTER LAGUS
-1033C GOTHIC LETTER MANNA
-1033D GOTHIC LETTER NAUTHS
-1033E GOTHIC LETTER JER
-1033F GOTHIC LETTER URUS
-10340 GOTHIC LETTER PAIRTHRA
-10341 GOTHIC LETTER NINETY
-10342 GOTHIC LETTER RAIDA
-10343 GOTHIC LETTER SAUIL
-10344 GOTHIC LETTER TEIWS
-10345 GOTHIC LETTER WINJA
-10346 GOTHIC LETTER FAIHU
-10347 GOTHIC LETTER IGGWS
-10348 GOTHIC LETTER HWAIR
-10349 GOTHIC LETTER OTHAL
-1034A GOTHIC LETTER NINE HUNDRED
-10400 DESERET CAPITAL LETTER LONG I
-10401 DESERET CAPITAL LETTER LONG E
-10402 DESERET CAPITAL LETTER LONG A
-10403 DESERET CAPITAL LETTER LONG AH
-10404 DESERET CAPITAL LETTER LONG O
-10405 DESERET CAPITAL LETTER LONG OO
-10406 DESERET CAPITAL LETTER SHORT I
-10407 DESERET CAPITAL LETTER SHORT E
-10408 DESERET CAPITAL LETTER SHORT A
-10409 DESERET CAPITAL LETTER SHORT AH
-1040A DESERET CAPITAL LETTER SHORT O
-1040B DESERET CAPITAL LETTER SHORT OO
-1040C DESERET CAPITAL LETTER AY
-1040D DESERET CAPITAL LETTER OW
-1040E DESERET CAPITAL LETTER WU
-1040F DESERET CAPITAL LETTER YEE
-10410 DESERET CAPITAL LETTER H
-10411 DESERET CAPITAL LETTER PEE
-10412 DESERET CAPITAL LETTER BEE
-10413 DESERET CAPITAL LETTER TEE
-10414 DESERET CAPITAL LETTER DEE
-10415 DESERET CAPITAL LETTER CHEE
-10416 DESERET CAPITAL LETTER JEE
-10417 DESERET CAPITAL LETTER KAY
-10418 DESERET CAPITAL LETTER GAY
-10419 DESERET CAPITAL LETTER EF
-1041A DESERET CAPITAL LETTER VEE
-1041B DESERET CAPITAL LETTER ETH
-1041C DESERET CAPITAL LETTER THEE
-1041D DESERET CAPITAL LETTER ES
-1041E DESERET CAPITAL LETTER ZEE
-1041F DESERET CAPITAL LETTER ESH
-10420 DESERET CAPITAL LETTER ZHEE
-10421 DESERET CAPITAL LETTER ER
-10422 DESERET CAPITAL LETTER EL
-10423 DESERET CAPITAL LETTER EM
-10424 DESERET CAPITAL LETTER EN
-10425 DESERET CAPITAL LETTER ENG
-10428 DESERET SMALL LETTER LONG I
-10429 DESERET SMALL LETTER LONG E
-1042A DESERET SMALL LETTER LONG A
-1042B DESERET SMALL LETTER LONG AH
-1042C DESERET SMALL LETTER LONG O
-1042D DESERET SMALL LETTER LONG OO
-1042E DESERET SMALL LETTER SHORT I
-1042F DESERET SMALL LETTER SHORT E
-10430 DESERET SMALL LETTER SHORT A
-10431 DESERET SMALL LETTER SHORT AH
-10432 DESERET SMALL LETTER SHORT O
-10433 DESERET SMALL LETTER SHORT OO
-10434 DESERET SMALL LETTER AY
-10435 DESERET SMALL LETTER OW
-10436 DESERET SMALL LETTER WU
-10437 DESERET SMALL LETTER YEE
-10438 DESERET SMALL LETTER H
-10439 DESERET SMALL LETTER PEE
-1043A DESERET SMALL LETTER BEE
-1043B DESERET SMALL LETTER TEE
-1043C DESERET SMALL LETTER DEE
-1043D DESERET SMALL LETTER CHEE
-1043E DESERET SMALL LETTER JEE
-1043F DESERET SMALL LETTER KAY
-10440 DESERET SMALL LETTER GAY
-10441 DESERET SMALL LETTER EF
-10442 DESERET SMALL LETTER VEE
-10443 DESERET SMALL LETTER ETH
-10444 DESERET SMALL LETTER THEE
-10445 DESERET SMALL LETTER ES
-10446 DESERET SMALL LETTER ZEE
-10447 DESERET SMALL LETTER ESH
-10448 DESERET SMALL LETTER ZHEE
-10449 DESERET SMALL LETTER ER
-1044A DESERET SMALL LETTER EL
-1044B DESERET SMALL LETTER EM
-1044C DESERET SMALL LETTER EN
-1044D DESERET SMALL LETTER ENG
-1D000 BYZANTINE MUSICAL SYMBOL PSILI
-1D001 BYZANTINE MUSICAL SYMBOL DASEIA
-1D002 BYZANTINE MUSICAL SYMBOL PERISPOMENI
-1D003 BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON
-1D004 BYZANTINE MUSICAL SYMBOL OXEIA DIPLI
-1D005 BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON
-1D006 BYZANTINE MUSICAL SYMBOL VAREIA DIPLI
-1D007 BYZANTINE MUSICAL SYMBOL KATHISTI
-1D008 BYZANTINE MUSICAL SYMBOL SYRMATIKI
-1D009 BYZANTINE MUSICAL SYMBOL PARAKLITIKI
-1D00A BYZANTINE MUSICAL SYMBOL YPOKRISIS
-1D00B BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI
-1D00C BYZANTINE MUSICAL SYMBOL KREMASTI
-1D00D BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON
-1D00E BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON
-1D00F BYZANTINE MUSICAL SYMBOL TELEIA
-1D010 BYZANTINE MUSICAL SYMBOL KENTIMATA
-1D011 BYZANTINE MUSICAL SYMBOL APOSTROFOS
-1D012 BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI
-1D013 BYZANTINE MUSICAL SYMBOL SYNEVMA
-1D014 BYZANTINE MUSICAL SYMBOL THITA
-1D015 BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION
-1D016 BYZANTINE MUSICAL SYMBOL GORGON ARCHAION
-1D017 BYZANTINE MUSICAL SYMBOL PSILON
-1D018 BYZANTINE MUSICAL SYMBOL CHAMILON
-1D019 BYZANTINE MUSICAL SYMBOL VATHY
-1D01A BYZANTINE MUSICAL SYMBOL ISON ARCHAION
-1D01B BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION
-1D01C BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION
-1D01D BYZANTINE MUSICAL SYMBOL SAXIMATA
-1D01E BYZANTINE MUSICAL SYMBOL PARICHON
-1D01F BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA
-1D020 BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION
-1D021 BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION
-1D022 BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION
-1D023 BYZANTINE MUSICAL SYMBOL APOTHEMA
-1D024 BYZANTINE MUSICAL SYMBOL KLASMA
-1D025 BYZANTINE MUSICAL SYMBOL REVMA
-1D026 BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION
-1D027 BYZANTINE MUSICAL SYMBOL TINAGMA
-1D028 BYZANTINE MUSICAL SYMBOL ANATRICHISMA
-1D029 BYZANTINE MUSICAL SYMBOL SEISMA
-1D02A BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION
-1D02B BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU
-1D02C BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION
-1D02D BYZANTINE MUSICAL SYMBOL THEMA
-1D02E BYZANTINE MUSICAL SYMBOL LEMOI
-1D02F BYZANTINE MUSICAL SYMBOL DYO
-1D030 BYZANTINE MUSICAL SYMBOL TRIA
-1D031 BYZANTINE MUSICAL SYMBOL TESSERA
-1D032 BYZANTINE MUSICAL SYMBOL KRATIMATA
-1D033 BYZANTINE MUSICAL SYMBOL APESO EXO NEO
-1D034 BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION
-1D035 BYZANTINE MUSICAL SYMBOL IMIFTHORA
-1D036 BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION
-1D037 BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON
-1D038 BYZANTINE MUSICAL SYMBOL PELASTON
-1D039 BYZANTINE MUSICAL SYMBOL PSIFISTON
-1D03A BYZANTINE MUSICAL SYMBOL KONTEVMA
-1D03B BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION
-1D03C BYZANTINE MUSICAL SYMBOL RAPISMA
-1D03D BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION
-1D03E BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION
-1D03F BYZANTINE MUSICAL SYMBOL ICHADIN
-1D040 BYZANTINE MUSICAL SYMBOL NANA
-1D041 BYZANTINE MUSICAL SYMBOL PETASMA
-1D042 BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO
-1D043 BYZANTINE MUSICAL SYMBOL TROMIKON ALLO
-1D044 BYZANTINE MUSICAL SYMBOL STRAGGISMATA
-1D045 BYZANTINE MUSICAL SYMBOL GRONTHISMATA
-1D046 BYZANTINE MUSICAL SYMBOL ISON NEO
-1D047 BYZANTINE MUSICAL SYMBOL OLIGON NEO
-1D048 BYZANTINE MUSICAL SYMBOL OXEIA NEO
-1D049 BYZANTINE MUSICAL SYMBOL PETASTI
-1D04A BYZANTINE MUSICAL SYMBOL KOUFISMA
-1D04B BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA
-1D04C BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA
-1D04D BYZANTINE MUSICAL SYMBOL PELASTON NEO
-1D04E BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO
-1D04F BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO
-1D050 BYZANTINE MUSICAL SYMBOL YPSILI
-1D051 BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO
-1D052 BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO
-1D053 BYZANTINE MUSICAL SYMBOL YPORROI
-1D054 BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON
-1D055 BYZANTINE MUSICAL SYMBOL ELAFRON
-1D056 BYZANTINE MUSICAL SYMBOL CHAMILI
-1D057 BYZANTINE MUSICAL SYMBOL MIKRON ISON
-1D058 BYZANTINE MUSICAL SYMBOL VAREIA NEO
-1D059 BYZANTINE MUSICAL SYMBOL PIASMA NEO
-1D05A BYZANTINE MUSICAL SYMBOL PSIFISTON NEO
-1D05B BYZANTINE MUSICAL SYMBOL OMALON
-1D05C BYZANTINE MUSICAL SYMBOL ANTIKENOMA
-1D05D BYZANTINE MUSICAL SYMBOL LYGISMA
-1D05E BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO
-1D05F BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO
-1D060 BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA
-1D061 BYZANTINE MUSICAL SYMBOL KYLISMA
-1D062 BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA
-1D063 BYZANTINE MUSICAL SYMBOL TROMIKON NEO
-1D064 BYZANTINE MUSICAL SYMBOL EKSTREPTON
-1D065 BYZANTINE MUSICAL SYMBOL SYNAGMA NEO
-1D066 BYZANTINE MUSICAL SYMBOL SYRMA
-1D067 BYZANTINE MUSICAL SYMBOL CHOREVMA NEO
-1D068 BYZANTINE MUSICAL SYMBOL EPEGERMA
-1D069 BYZANTINE MUSICAL SYMBOL SEISMA NEO
-1D06A BYZANTINE MUSICAL SYMBOL XIRON KLASMA
-1D06B BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON
-1D06C BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA
-1D06D BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA
-1D06E BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA
-1D06F BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA
-1D070 BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA
-1D071 BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA
-1D072 BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON
-1D073 BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON
-1D074 BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON
-1D075 BYZANTINE MUSICAL SYMBOL OYRANISMA NEO
-1D076 BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO
-1D077 BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO
-1D078 BYZANTINE MUSICAL SYMBOL THEMA APLOUN
-1D079 BYZANTINE MUSICAL SYMBOL THES KAI APOTHES
-1D07A BYZANTINE MUSICAL SYMBOL KATAVASMA
-1D07B BYZANTINE MUSICAL SYMBOL ENDOFONON
-1D07C BYZANTINE MUSICAL SYMBOL YFEN KATO
-1D07D BYZANTINE MUSICAL SYMBOL YFEN ANO
-1D07E BYZANTINE MUSICAL SYMBOL STAVROS
-1D07F BYZANTINE MUSICAL SYMBOL KLASMA ANO
-1D080 BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
-1D081 BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
-1D082 BYZANTINE MUSICAL SYMBOL KRATIMA ALLO
-1D083 BYZANTINE MUSICAL SYMBOL KRATIMA NEO
-1D084 BYZANTINE MUSICAL SYMBOL APODERMA NEO
-1D085 BYZANTINE MUSICAL SYMBOL APLI
-1D086 BYZANTINE MUSICAL SYMBOL DIPLI
-1D087 BYZANTINE MUSICAL SYMBOL TRIPLI
-1D088 BYZANTINE MUSICAL SYMBOL TETRAPLI
-1D089 BYZANTINE MUSICAL SYMBOL KORONIS
-1D08A BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU
-1D08B BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON
-1D08C BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON
-1D08D BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON
-1D08E BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU
-1D08F BYZANTINE MUSICAL SYMBOL GORGON NEO ANO
-1D090 BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA
-1D091 BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA
-1D092 BYZANTINE MUSICAL SYMBOL DIGORGON
-1D093 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO
-1D094 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO
-1D095 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA
-1D096 BYZANTINE MUSICAL SYMBOL TRIGORGON
-1D097 BYZANTINE MUSICAL SYMBOL ARGON
-1D098 BYZANTINE MUSICAL SYMBOL IMIDIARGON
-1D099 BYZANTINE MUSICAL SYMBOL DIARGON
-1D09A BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI
-1D09B BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI
-1D09C BYZANTINE MUSICAL SYMBOL AGOGI ARGI
-1D09D BYZANTINE MUSICAL SYMBOL AGOGI METRIA
-1D09E BYZANTINE MUSICAL SYMBOL AGOGI MESI
-1D09F BYZANTINE MUSICAL SYMBOL AGOGI GORGI
-1D0A0 BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI
-1D0A1 BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI
-1D0A2 BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS
-1D0A3 BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS
-1D0A4 BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS
-1D0A5 BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS
-1D0A6 BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS
-1D0A7 BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS
-1D0A8 BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS
-1D0A9 BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS
-1D0AA BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS
-1D0AB BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS
-1D0AC BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS
-1D0AD BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS
-1D0AE BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS
-1D0AF BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS
-1D0B0 BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS
-1D0B1 BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS
-1D0B2 BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS
-1D0B3 BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS
-1D0B4 BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN
-1D0B5 BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN
-1D0B6 BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU
-1D0B7 BYZANTINE MUSICAL SYMBOL IMIFONON
-1D0B8 BYZANTINE MUSICAL SYMBOL IMIFTHORON
-1D0B9 BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU
-1D0BA BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA
-1D0BB BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA
-1D0BC BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS
-1D0BD BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI
-1D0BE BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI
-1D0BF BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE
-1D0C0 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
-1D0C1 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO
-1D0C2 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO
-1D0C3 BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS
-1D0C4 BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS
-1D0C5 BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS
-1D0C6 BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI
-1D0C7 BYZANTINE MUSICAL SYMBOL FTHORA NENANO
-1D0C8 BYZANTINE MUSICAL SYMBOL CHROA ZYGOS
-1D0C9 BYZANTINE MUSICAL SYMBOL CHROA KLITON
-1D0CA BYZANTINE MUSICAL SYMBOL CHROA SPATHI
-1D0CB BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION
-1D0CC BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA
-1D0CD BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION
-1D0CE BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION
-1D0CF BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION
-1D0D0 BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA
-1D0D1 BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D2 BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA
-1D0D3 BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA
-1D0D4 BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA
-1D0D5 BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D6 BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA
-1D0D7 BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA
-1D0D8 BYZANTINE MUSICAL SYMBOL GENIKI DIESIS
-1D0D9 BYZANTINE MUSICAL SYMBOL GENIKI YFESIS
-1D0DA BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI
-1D0DB BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI
-1D0DC BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI
-1D0DD BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS
-1D0DE BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS
-1D0DF BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU
-1D0E0 BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU
-1D0E1 BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU
-1D0E2 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS
-1D0E3 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU
-1D0E4 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU
-1D0E5 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU
-1D0E6 BYZANTINE MUSICAL SYMBOL DIGRAMMA GG
-1D0E7 BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU
-1D0E8 BYZANTINE MUSICAL SYMBOL STIGMA
-1D0E9 BYZANTINE MUSICAL SYMBOL ARKTIKO PA
-1D0EA BYZANTINE MUSICAL SYMBOL ARKTIKO VOU
-1D0EB BYZANTINE MUSICAL SYMBOL ARKTIKO GA
-1D0EC BYZANTINE MUSICAL SYMBOL ARKTIKO DI
-1D0ED BYZANTINE MUSICAL SYMBOL ARKTIKO KE
-1D0EE BYZANTINE MUSICAL SYMBOL ARKTIKO ZO
-1D0EF BYZANTINE MUSICAL SYMBOL ARKTIKO NI
-1D0F0 BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO
-1D0F1 BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO
-1D0F2 BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO
-1D0F3 BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO
-1D0F4 BYZANTINE MUSICAL SYMBOL KLASMA KATO
-1D0F5 BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
-1D100 MUSICAL SYMBOL SINGLE BARLINE
-1D101 MUSICAL SYMBOL DOUBLE BARLINE
-1D102 MUSICAL SYMBOL FINAL BARLINE
-1D103 MUSICAL SYMBOL REVERSE FINAL BARLINE
-1D104 MUSICAL SYMBOL DASHED BARLINE
-1D105 MUSICAL SYMBOL SHORT BARLINE
-1D106 MUSICAL SYMBOL LEFT REPEAT SIGN
-1D107 MUSICAL SYMBOL RIGHT REPEAT SIGN
-1D108 MUSICAL SYMBOL REPEAT DOTS
-1D109 MUSICAL SYMBOL DAL SEGNO
-1D10A MUSICAL SYMBOL DA CAPO
-1D10B MUSICAL SYMBOL SEGNO
-1D10C MUSICAL SYMBOL CODA
-1D10D MUSICAL SYMBOL REPEATED FIGURE-1
-1D10E MUSICAL SYMBOL REPEATED FIGURE-2
-1D10F MUSICAL SYMBOL REPEATED FIGURE-3
-1D110 MUSICAL SYMBOL FERMATA
-1D111 MUSICAL SYMBOL FERMATA BELOW
-1D112 MUSICAL SYMBOL BREATH MARK
-1D113 MUSICAL SYMBOL CAESURA
-1D114 MUSICAL SYMBOL BRACE
-1D115 MUSICAL SYMBOL BRACKET
-1D116 MUSICAL SYMBOL ONE-LINE STAFF
-1D117 MUSICAL SYMBOL TWO-LINE STAFF
-1D118 MUSICAL SYMBOL THREE-LINE STAFF
-1D119 MUSICAL SYMBOL FOUR-LINE STAFF
-1D11A MUSICAL SYMBOL FIVE-LINE STAFF
-1D11B MUSICAL SYMBOL SIX-LINE STAFF
-1D11C MUSICAL SYMBOL SIX-STRING FRETBOARD
-1D11D MUSICAL SYMBOL FOUR-STRING FRETBOARD
-1D11E MUSICAL SYMBOL G CLEF
-1D11F MUSICAL SYMBOL G CLEF OTTAVA ALTA
-1D120 MUSICAL SYMBOL G CLEF OTTAVA BASSA
-1D121 MUSICAL SYMBOL C CLEF
-1D122 MUSICAL SYMBOL F CLEF
-1D123 MUSICAL SYMBOL F CLEF OTTAVA ALTA
-1D124 MUSICAL SYMBOL F CLEF OTTAVA BASSA
-1D125 MUSICAL SYMBOL DRUM CLEF-1
-1D126 MUSICAL SYMBOL DRUM CLEF-2
-1D12A MUSICAL SYMBOL DOUBLE SHARP
-1D12B MUSICAL SYMBOL DOUBLE FLAT
-1D12C MUSICAL SYMBOL FLAT UP
-1D12D MUSICAL SYMBOL FLAT DOWN
-1D12E MUSICAL SYMBOL NATURAL UP
-1D12F MUSICAL SYMBOL NATURAL DOWN
-1D130 MUSICAL SYMBOL SHARP UP
-1D131 MUSICAL SYMBOL SHARP DOWN
-1D132 MUSICAL SYMBOL QUARTER TONE SHARP
-1D133 MUSICAL SYMBOL QUARTER TONE FLAT
-1D134 MUSICAL SYMBOL COMMON TIME
-1D135 MUSICAL SYMBOL CUT TIME
-1D136 MUSICAL SYMBOL OTTAVA ALTA
-1D137 MUSICAL SYMBOL OTTAVA BASSA
-1D138 MUSICAL SYMBOL QUINDICESIMA ALTA
-1D139 MUSICAL SYMBOL QUINDICESIMA BASSA
-1D13A MUSICAL SYMBOL MULTI REST
-1D13B MUSICAL SYMBOL WHOLE REST
-1D13C MUSICAL SYMBOL HALF REST
-1D13D MUSICAL SYMBOL QUARTER REST
-1D13E MUSICAL SYMBOL EIGHTH REST
-1D13F MUSICAL SYMBOL SIXTEENTH REST
-1D140 MUSICAL SYMBOL THIRTY-SECOND REST
-1D141 MUSICAL SYMBOL SIXTY-FOURTH REST
-1D142 MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST
-1D143 MUSICAL SYMBOL X NOTEHEAD
-1D144 MUSICAL SYMBOL PLUS NOTEHEAD
-1D145 MUSICAL SYMBOL CIRCLE X NOTEHEAD
-1D146 MUSICAL SYMBOL SQUARE NOTEHEAD WHITE
-1D147 MUSICAL SYMBOL SQUARE NOTEHEAD BLACK
-1D148 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE
-1D149 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK
-1D14A MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE
-1D14B MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK
-1D14C MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE
-1D14D MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK
-1D14E MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE
-1D14F MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK
-1D150 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE
-1D151 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK
-1D152 MUSICAL SYMBOL MOON NOTEHEAD WHITE
-1D153 MUSICAL SYMBOL MOON NOTEHEAD BLACK
-1D154 MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE
-1D155 MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK
-1D156 MUSICAL SYMBOL PARENTHESIS NOTEHEAD
-1D157 MUSICAL SYMBOL VOID NOTEHEAD
-1D158 MUSICAL SYMBOL NOTEHEAD BLACK
-1D159 MUSICAL SYMBOL NULL NOTEHEAD
-1D15A MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE
-1D15B MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
-1D15C MUSICAL SYMBOL BREVE
-1D15D MUSICAL SYMBOL WHOLE NOTE
-1D15E MUSICAL SYMBOL HALF NOTE
-1D15F MUSICAL SYMBOL QUARTER NOTE
-1D160 MUSICAL SYMBOL EIGHTH NOTE
-1D161 MUSICAL SYMBOL SIXTEENTH NOTE
-1D162 MUSICAL SYMBOL THIRTY-SECOND NOTE
-1D163 MUSICAL SYMBOL SIXTY-FOURTH NOTE
-1D164 MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
-1D165 MUSICAL SYMBOL COMBINING STEM
-1D166 MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
-1D167 MUSICAL SYMBOL COMBINING TREMOLO-1
-1D168 MUSICAL SYMBOL COMBINING TREMOLO-2
-1D169 MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16A MUSICAL SYMBOL FINGERED TREMOLO-1
-1D16B MUSICAL SYMBOL FINGERED TREMOLO-2
-1D16C MUSICAL SYMBOL FINGERED TREMOLO-3
-1D16D MUSICAL SYMBOL COMBINING AUGMENTATION DOT
-1D16E MUSICAL SYMBOL COMBINING FLAG-1
-1D16F MUSICAL SYMBOL COMBINING FLAG-2
-1D170 MUSICAL SYMBOL COMBINING FLAG-3
-1D171 MUSICAL SYMBOL COMBINING FLAG-4
-1D172 MUSICAL SYMBOL COMBINING FLAG-5
-1D173 MUSICAL SYMBOL BEGIN BEAM
-1D174 MUSICAL SYMBOL END BEAM
-1D175 MUSICAL SYMBOL BEGIN TIE
-1D176 MUSICAL SYMBOL END TIE
-1D177 MUSICAL SYMBOL BEGIN SLUR
-1D178 MUSICAL SYMBOL END SLUR
-1D179 MUSICAL SYMBOL BEGIN PHRASE
-1D17A MUSICAL SYMBOL END PHRASE
-1D17B MUSICAL SYMBOL COMBINING ACCENT
-1D17C MUSICAL SYMBOL COMBINING STACCATO
-1D17D MUSICAL SYMBOL COMBINING TENUTO
-1D17E MUSICAL SYMBOL COMBINING STACCATISSIMO
-1D17F MUSICAL SYMBOL COMBINING MARCATO
-1D180 MUSICAL SYMBOL COMBINING MARCATO-STACCATO
-1D181 MUSICAL SYMBOL COMBINING ACCENT-STACCATO
-1D182 MUSICAL SYMBOL COMBINING LOURE
-1D183 MUSICAL SYMBOL ARPEGGIATO UP
-1D184 MUSICAL SYMBOL ARPEGGIATO DOWN
-1D185 MUSICAL SYMBOL COMBINING DOIT
-1D186 MUSICAL SYMBOL COMBINING RIP
-1D187 MUSICAL SYMBOL COMBINING FLIP
-1D188 MUSICAL SYMBOL COMBINING SMEAR
-1D189 MUSICAL SYMBOL COMBINING BEND
-1D18A MUSICAL SYMBOL COMBINING DOUBLE TONGUE
-1D18B MUSICAL SYMBOL COMBINING TRIPLE TONGUE
-1D18C MUSICAL SYMBOL RINFORZANDO
-1D18D MUSICAL SYMBOL SUBITO
-1D18E MUSICAL SYMBOL Z
-1D18F MUSICAL SYMBOL PIANO
-1D190 MUSICAL SYMBOL MEZZO
-1D191 MUSICAL SYMBOL FORTE
-1D192 MUSICAL SYMBOL CRESCENDO
-1D193 MUSICAL SYMBOL DECRESCENDO
-1D194 MUSICAL SYMBOL GRACE NOTE SLASH
-1D195 MUSICAL SYMBOL GRACE NOTE NO SLASH
-1D196 MUSICAL SYMBOL TR
-1D197 MUSICAL SYMBOL TURN
-1D198 MUSICAL SYMBOL INVERTED TURN
-1D199 MUSICAL SYMBOL TURN SLASH
-1D19A MUSICAL SYMBOL TURN UP
-1D19B MUSICAL SYMBOL ORNAMENT STROKE-1
-1D19C MUSICAL SYMBOL ORNAMENT STROKE-2
-1D19D MUSICAL SYMBOL ORNAMENT STROKE-3
-1D19E MUSICAL SYMBOL ORNAMENT STROKE-4
-1D19F MUSICAL SYMBOL ORNAMENT STROKE-5
-1D1A0 MUSICAL SYMBOL ORNAMENT STROKE-6
-1D1A1 MUSICAL SYMBOL ORNAMENT STROKE-7
-1D1A2 MUSICAL SYMBOL ORNAMENT STROKE-8
-1D1A3 MUSICAL SYMBOL ORNAMENT STROKE-9
-1D1A4 MUSICAL SYMBOL ORNAMENT STROKE-10
-1D1A5 MUSICAL SYMBOL ORNAMENT STROKE-11
-1D1A6 MUSICAL SYMBOL HAUPTSTIMME
-1D1A7 MUSICAL SYMBOL NEBENSTIMME
-1D1A8 MUSICAL SYMBOL END OF STIMME
-1D1A9 MUSICAL SYMBOL DEGREE SLASH
-1D1AA MUSICAL SYMBOL COMBINING DOWN BOW
-1D1AB MUSICAL SYMBOL COMBINING UP BOW
-1D1AC MUSICAL SYMBOL COMBINING HARMONIC
-1D1AD MUSICAL SYMBOL COMBINING SNAP PIZZICATO
-1D1AE MUSICAL SYMBOL PEDAL MARK
-1D1AF MUSICAL SYMBOL PEDAL UP MARK
-1D1B0 MUSICAL SYMBOL HALF PEDAL MARK
-1D1B1 MUSICAL SYMBOL GLISSANDO UP
-1D1B2 MUSICAL SYMBOL GLISSANDO DOWN
-1D1B3 MUSICAL SYMBOL WITH FINGERNAILS
-1D1B4 MUSICAL SYMBOL DAMP
-1D1B5 MUSICAL SYMBOL DAMP ALL
-1D1B6 MUSICAL SYMBOL MAXIMA
-1D1B7 MUSICAL SYMBOL LONGA
-1D1B8 MUSICAL SYMBOL BREVIS
-1D1B9 MUSICAL SYMBOL SEMIBREVIS WHITE
-1D1BA MUSICAL SYMBOL SEMIBREVIS BLACK
-1D1BB MUSICAL SYMBOL MINIMA
-1D1BC MUSICAL SYMBOL MINIMA BLACK
-1D1BD MUSICAL SYMBOL SEMIMINIMA WHITE
-1D1BE MUSICAL SYMBOL SEMIMINIMA BLACK
-1D1BF MUSICAL SYMBOL FUSA WHITE
-1D1C0 MUSICAL SYMBOL FUSA BLACK
-1D1C1 MUSICAL SYMBOL LONGA PERFECTA REST
-1D1C2 MUSICAL SYMBOL LONGA IMPERFECTA REST
-1D1C3 MUSICAL SYMBOL BREVIS REST
-1D1C4 MUSICAL SYMBOL SEMIBREVIS REST
-1D1C5 MUSICAL SYMBOL MINIMA REST
-1D1C6 MUSICAL SYMBOL SEMIMINIMA REST
-1D1C7 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA
-1D1C8 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA
-1D1C9 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1
-1D1CA MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA
-1D1CB MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA
-1D1CC MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1
-1D1CD MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2
-1D1CE MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3
-1D1CF MUSICAL SYMBOL CROIX
-1D1D0 MUSICAL SYMBOL GREGORIAN C CLEF
-1D1D1 MUSICAL SYMBOL GREGORIAN F CLEF
-1D1D2 MUSICAL SYMBOL SQUARE B
-1D1D3 MUSICAL SYMBOL VIRGA
-1D1D4 MUSICAL SYMBOL PODATUS
-1D1D5 MUSICAL SYMBOL CLIVIS
-1D1D6 MUSICAL SYMBOL SCANDICUS
-1D1D7 MUSICAL SYMBOL CLIMACUS
-1D1D8 MUSICAL SYMBOL TORCULUS
-1D1D9 MUSICAL SYMBOL PORRECTUS
-1D1DA MUSICAL SYMBOL PORRECTUS FLEXUS
-1D1DB MUSICAL SYMBOL SCANDICUS FLEXUS
-1D1DC MUSICAL SYMBOL TORCULUS RESUPINUS
-1D1DD MUSICAL SYMBOL PES SUBPUNCTIS
-1D400 MATHEMATICAL BOLD CAPITAL A
-1D401 MATHEMATICAL BOLD CAPITAL B
-1D402 MATHEMATICAL BOLD CAPITAL C
-1D403 MATHEMATICAL BOLD CAPITAL D
-1D404 MATHEMATICAL BOLD CAPITAL E
-1D405 MATHEMATICAL BOLD CAPITAL F
-1D406 MATHEMATICAL BOLD CAPITAL G
-1D407 MATHEMATICAL BOLD CAPITAL H
-1D408 MATHEMATICAL BOLD CAPITAL I
-1D409 MATHEMATICAL BOLD CAPITAL J
-1D40A MATHEMATICAL BOLD CAPITAL K
-1D40B MATHEMATICAL BOLD CAPITAL L
-1D40C MATHEMATICAL BOLD CAPITAL M
-1D40D MATHEMATICAL BOLD CAPITAL N
-1D40E MATHEMATICAL BOLD CAPITAL O
-1D40F MATHEMATICAL BOLD CAPITAL P
-1D410 MATHEMATICAL BOLD CAPITAL Q
-1D411 MATHEMATICAL BOLD CAPITAL R
-1D412 MATHEMATICAL BOLD CAPITAL S
-1D413 MATHEMATICAL BOLD CAPITAL T
-1D414 MATHEMATICAL BOLD CAPITAL U
-1D415 MATHEMATICAL BOLD CAPITAL V
-1D416 MATHEMATICAL BOLD CAPITAL W
-1D417 MATHEMATICAL BOLD CAPITAL X
-1D418 MATHEMATICAL BOLD CAPITAL Y
-1D419 MATHEMATICAL BOLD CAPITAL Z
-1D41A MATHEMATICAL BOLD SMALL A
-1D41B MATHEMATICAL BOLD SMALL B
-1D41C MATHEMATICAL BOLD SMALL C
-1D41D MATHEMATICAL BOLD SMALL D
-1D41E MATHEMATICAL BOLD SMALL E
-1D41F MATHEMATICAL BOLD SMALL F
-1D420 MATHEMATICAL BOLD SMALL G
-1D421 MATHEMATICAL BOLD SMALL H
-1D422 MATHEMATICAL BOLD SMALL I
-1D423 MATHEMATICAL BOLD SMALL J
-1D424 MATHEMATICAL BOLD SMALL K
-1D425 MATHEMATICAL BOLD SMALL L
-1D426 MATHEMATICAL BOLD SMALL M
-1D427 MATHEMATICAL BOLD SMALL N
-1D428 MATHEMATICAL BOLD SMALL O
-1D429 MATHEMATICAL BOLD SMALL P
-1D42A MATHEMATICAL BOLD SMALL Q
-1D42B MATHEMATICAL BOLD SMALL R
-1D42C MATHEMATICAL BOLD SMALL S
-1D42D MATHEMATICAL BOLD SMALL T
-1D42E MATHEMATICAL BOLD SMALL U
-1D42F MATHEMATICAL BOLD SMALL V
-1D430 MATHEMATICAL BOLD SMALL W
-1D431 MATHEMATICAL BOLD SMALL X
-1D432 MATHEMATICAL BOLD SMALL Y
-1D433 MATHEMATICAL BOLD SMALL Z
-1D434 MATHEMATICAL ITALIC CAPITAL A
-1D435 MATHEMATICAL ITALIC CAPITAL B
-1D436 MATHEMATICAL ITALIC CAPITAL C
-1D437 MATHEMATICAL ITALIC CAPITAL D
-1D438 MATHEMATICAL ITALIC CAPITAL E
-1D439 MATHEMATICAL ITALIC CAPITAL F
-1D43A MATHEMATICAL ITALIC CAPITAL G
-1D43B MATHEMATICAL ITALIC CAPITAL H
-1D43C MATHEMATICAL ITALIC CAPITAL I
-1D43D MATHEMATICAL ITALIC CAPITAL J
-1D43E MATHEMATICAL ITALIC CAPITAL K
-1D43F MATHEMATICAL ITALIC CAPITAL L
-1D440 MATHEMATICAL ITALIC CAPITAL M
-1D441 MATHEMATICAL ITALIC CAPITAL N
-1D442 MATHEMATICAL ITALIC CAPITAL O
-1D443 MATHEMATICAL ITALIC CAPITAL P
-1D444 MATHEMATICAL ITALIC CAPITAL Q
-1D445 MATHEMATICAL ITALIC CAPITAL R
-1D446 MATHEMATICAL ITALIC CAPITAL S
-1D447 MATHEMATICAL ITALIC CAPITAL T
-1D448 MATHEMATICAL ITALIC CAPITAL U
-1D449 MATHEMATICAL ITALIC CAPITAL V
-1D44A MATHEMATICAL ITALIC CAPITAL W
-1D44B MATHEMATICAL ITALIC CAPITAL X
-1D44C MATHEMATICAL ITALIC CAPITAL Y
-1D44D MATHEMATICAL ITALIC CAPITAL Z
-1D44E MATHEMATICAL ITALIC SMALL A
-1D44F MATHEMATICAL ITALIC SMALL B
-1D450 MATHEMATICAL ITALIC SMALL C
-1D451 MATHEMATICAL ITALIC SMALL D
-1D452 MATHEMATICAL ITALIC SMALL E
-1D453 MATHEMATICAL ITALIC SMALL F
-1D454 MATHEMATICAL ITALIC SMALL G
-1D456 MATHEMATICAL ITALIC SMALL I
-1D457 MATHEMATICAL ITALIC SMALL J
-1D458 MATHEMATICAL ITALIC SMALL K
-1D459 MATHEMATICAL ITALIC SMALL L
-1D45A MATHEMATICAL ITALIC SMALL M
-1D45B MATHEMATICAL ITALIC SMALL N
-1D45C MATHEMATICAL ITALIC SMALL O
-1D45D MATHEMATICAL ITALIC SMALL P
-1D45E MATHEMATICAL ITALIC SMALL Q
-1D45F MATHEMATICAL ITALIC SMALL R
-1D460 MATHEMATICAL ITALIC SMALL S
-1D461 MATHEMATICAL ITALIC SMALL T
-1D462 MATHEMATICAL ITALIC SMALL U
-1D463 MATHEMATICAL ITALIC SMALL V
-1D464 MATHEMATICAL ITALIC SMALL W
-1D465 MATHEMATICAL ITALIC SMALL X
-1D466 MATHEMATICAL ITALIC SMALL Y
-1D467 MATHEMATICAL ITALIC SMALL Z
-1D468 MATHEMATICAL BOLD ITALIC CAPITAL A
-1D469 MATHEMATICAL BOLD ITALIC CAPITAL B
-1D46A MATHEMATICAL BOLD ITALIC CAPITAL C
-1D46B MATHEMATICAL BOLD ITALIC CAPITAL D
-1D46C MATHEMATICAL BOLD ITALIC CAPITAL E
-1D46D MATHEMATICAL BOLD ITALIC CAPITAL F
-1D46E MATHEMATICAL BOLD ITALIC CAPITAL G
-1D46F MATHEMATICAL BOLD ITALIC CAPITAL H
-1D470 MATHEMATICAL BOLD ITALIC CAPITAL I
-1D471 MATHEMATICAL BOLD ITALIC CAPITAL J
-1D472 MATHEMATICAL BOLD ITALIC CAPITAL K
-1D473 MATHEMATICAL BOLD ITALIC CAPITAL L
-1D474 MATHEMATICAL BOLD ITALIC CAPITAL M
-1D475 MATHEMATICAL BOLD ITALIC CAPITAL N
-1D476 MATHEMATICAL BOLD ITALIC CAPITAL O
-1D477 MATHEMATICAL BOLD ITALIC CAPITAL P
-1D478 MATHEMATICAL BOLD ITALIC CAPITAL Q
-1D479 MATHEMATICAL BOLD ITALIC CAPITAL R
-1D47A MATHEMATICAL BOLD ITALIC CAPITAL S
-1D47B MATHEMATICAL BOLD ITALIC CAPITAL T
-1D47C MATHEMATICAL BOLD ITALIC CAPITAL U
-1D47D MATHEMATICAL BOLD ITALIC CAPITAL V
-1D47E MATHEMATICAL BOLD ITALIC CAPITAL W
-1D47F MATHEMATICAL BOLD ITALIC CAPITAL X
-1D480 MATHEMATICAL BOLD ITALIC CAPITAL Y
-1D481 MATHEMATICAL BOLD ITALIC CAPITAL Z
-1D482 MATHEMATICAL BOLD ITALIC SMALL A
-1D483 MATHEMATICAL BOLD ITALIC SMALL B
-1D484 MATHEMATICAL BOLD ITALIC SMALL C
-1D485 MATHEMATICAL BOLD ITALIC SMALL D
-1D486 MATHEMATICAL BOLD ITALIC SMALL E
-1D487 MATHEMATICAL BOLD ITALIC SMALL F
-1D488 MATHEMATICAL BOLD ITALIC SMALL G
-1D489 MATHEMATICAL BOLD ITALIC SMALL H
-1D48A MATHEMATICAL BOLD ITALIC SMALL I
-1D48B MATHEMATICAL BOLD ITALIC SMALL J
-1D48C MATHEMATICAL BOLD ITALIC SMALL K
-1D48D MATHEMATICAL BOLD ITALIC SMALL L
-1D48E MATHEMATICAL BOLD ITALIC SMALL M
-1D48F MATHEMATICAL BOLD ITALIC SMALL N
-1D490 MATHEMATICAL BOLD ITALIC SMALL O
-1D491 MATHEMATICAL BOLD ITALIC SMALL P
-1D492 MATHEMATICAL BOLD ITALIC SMALL Q
-1D493 MATHEMATICAL BOLD ITALIC SMALL R
-1D494 MATHEMATICAL BOLD ITALIC SMALL S
-1D495 MATHEMATICAL BOLD ITALIC SMALL T
-1D496 MATHEMATICAL BOLD ITALIC SMALL U
-1D497 MATHEMATICAL BOLD ITALIC SMALL V
-1D498 MATHEMATICAL BOLD ITALIC SMALL W
-1D499 MATHEMATICAL BOLD ITALIC SMALL X
-1D49A MATHEMATICAL BOLD ITALIC SMALL Y
-1D49B MATHEMATICAL BOLD ITALIC SMALL Z
-1D49C MATHEMATICAL SCRIPT CAPITAL A
-1D49E MATHEMATICAL SCRIPT CAPITAL C
-1D49F MATHEMATICAL SCRIPT CAPITAL D
-1D4A2 MATHEMATICAL SCRIPT CAPITAL G
-1D4A5 MATHEMATICAL SCRIPT CAPITAL J
-1D4A6 MATHEMATICAL SCRIPT CAPITAL K
-1D4A9 MATHEMATICAL SCRIPT CAPITAL N
-1D4AA MATHEMATICAL SCRIPT CAPITAL O
-1D4AB MATHEMATICAL SCRIPT CAPITAL P
-1D4AC MATHEMATICAL SCRIPT CAPITAL Q
-1D4AE MATHEMATICAL SCRIPT CAPITAL S
-1D4AF MATHEMATICAL SCRIPT CAPITAL T
-1D4B0 MATHEMATICAL SCRIPT CAPITAL U
-1D4B1 MATHEMATICAL SCRIPT CAPITAL V
-1D4B2 MATHEMATICAL SCRIPT CAPITAL W
-1D4B3 MATHEMATICAL SCRIPT CAPITAL X
-1D4B4 MATHEMATICAL SCRIPT CAPITAL Y
-1D4B5 MATHEMATICAL SCRIPT CAPITAL Z
-1D4B6 MATHEMATICAL SCRIPT SMALL A
-1D4B7 MATHEMATICAL SCRIPT SMALL B
-1D4B8 MATHEMATICAL SCRIPT SMALL C
-1D4B9 MATHEMATICAL SCRIPT SMALL D
-1D4BB MATHEMATICAL SCRIPT SMALL F
-1D4BD MATHEMATICAL SCRIPT SMALL H
-1D4BE MATHEMATICAL SCRIPT SMALL I
-1D4BF MATHEMATICAL SCRIPT SMALL J
-1D4C0 MATHEMATICAL SCRIPT SMALL K
-1D4C2 MATHEMATICAL SCRIPT SMALL M
-1D4C3 MATHEMATICAL SCRIPT SMALL N
-1D4C5 MATHEMATICAL SCRIPT SMALL P
-1D4C6 MATHEMATICAL SCRIPT SMALL Q
-1D4C7 MATHEMATICAL SCRIPT SMALL R
-1D4C8 MATHEMATICAL SCRIPT SMALL S
-1D4C9 MATHEMATICAL SCRIPT SMALL T
-1D4CA MATHEMATICAL SCRIPT SMALL U
-1D4CB MATHEMATICAL SCRIPT SMALL V
-1D4CC MATHEMATICAL SCRIPT SMALL W
-1D4CD MATHEMATICAL SCRIPT SMALL X
-1D4CE MATHEMATICAL SCRIPT SMALL Y
-1D4CF MATHEMATICAL SCRIPT SMALL Z
-1D4D0 MATHEMATICAL BOLD SCRIPT CAPITAL A
-1D4D1 MATHEMATICAL BOLD SCRIPT CAPITAL B
-1D4D2 MATHEMATICAL BOLD SCRIPT CAPITAL C
-1D4D3 MATHEMATICAL BOLD SCRIPT CAPITAL D
-1D4D4 MATHEMATICAL BOLD SCRIPT CAPITAL E
-1D4D5 MATHEMATICAL BOLD SCRIPT CAPITAL F
-1D4D6 MATHEMATICAL BOLD SCRIPT CAPITAL G
-1D4D7 MATHEMATICAL BOLD SCRIPT CAPITAL H
-1D4D8 MATHEMATICAL BOLD SCRIPT CAPITAL I
-1D4D9 MATHEMATICAL BOLD SCRIPT CAPITAL J
-1D4DA MATHEMATICAL BOLD SCRIPT CAPITAL K
-1D4DB MATHEMATICAL BOLD SCRIPT CAPITAL L
-1D4DC MATHEMATICAL BOLD SCRIPT CAPITAL M
-1D4DD MATHEMATICAL BOLD SCRIPT CAPITAL N
-1D4DE MATHEMATICAL BOLD SCRIPT CAPITAL O
-1D4DF MATHEMATICAL BOLD SCRIPT CAPITAL P
-1D4E0 MATHEMATICAL BOLD SCRIPT CAPITAL Q
-1D4E1 MATHEMATICAL BOLD SCRIPT CAPITAL R
-1D4E2 MATHEMATICAL BOLD SCRIPT CAPITAL S
-1D4E3 MATHEMATICAL BOLD SCRIPT CAPITAL T
-1D4E4 MATHEMATICAL BOLD SCRIPT CAPITAL U
-1D4E5 MATHEMATICAL BOLD SCRIPT CAPITAL V
-1D4E6 MATHEMATICAL BOLD SCRIPT CAPITAL W
-1D4E7 MATHEMATICAL BOLD SCRIPT CAPITAL X
-1D4E8 MATHEMATICAL BOLD SCRIPT CAPITAL Y
-1D4E9 MATHEMATICAL BOLD SCRIPT CAPITAL Z
-1D4EA MATHEMATICAL BOLD SCRIPT SMALL A
-1D4EB MATHEMATICAL BOLD SCRIPT SMALL B
-1D4EC MATHEMATICAL BOLD SCRIPT SMALL C
-1D4ED MATHEMATICAL BOLD SCRIPT SMALL D
-1D4EE MATHEMATICAL BOLD SCRIPT SMALL E
-1D4EF MATHEMATICAL BOLD SCRIPT SMALL F
-1D4F0 MATHEMATICAL BOLD SCRIPT SMALL G
-1D4F1 MATHEMATICAL BOLD SCRIPT SMALL H
-1D4F2 MATHEMATICAL BOLD SCRIPT SMALL I
-1D4F3 MATHEMATICAL BOLD SCRIPT SMALL J
-1D4F4 MATHEMATICAL BOLD SCRIPT SMALL K
-1D4F5 MATHEMATICAL BOLD SCRIPT SMALL L
-1D4F6 MATHEMATICAL BOLD SCRIPT SMALL M
-1D4F7 MATHEMATICAL BOLD SCRIPT SMALL N
-1D4F8 MATHEMATICAL BOLD SCRIPT SMALL O
-1D4F9 MATHEMATICAL BOLD SCRIPT SMALL P
-1D4FA MATHEMATICAL BOLD SCRIPT SMALL Q
-1D4FB MATHEMATICAL BOLD SCRIPT SMALL R
-1D4FC MATHEMATICAL BOLD SCRIPT SMALL S
-1D4FD MATHEMATICAL BOLD SCRIPT SMALL T
-1D4FE MATHEMATICAL BOLD SCRIPT SMALL U
-1D4FF MATHEMATICAL BOLD SCRIPT SMALL V
-1D500 MATHEMATICAL BOLD SCRIPT SMALL W
-1D501 MATHEMATICAL BOLD SCRIPT SMALL X
-1D502 MATHEMATICAL BOLD SCRIPT SMALL Y
-1D503 MATHEMATICAL BOLD SCRIPT SMALL Z
-1D504 MATHEMATICAL FRAKTUR CAPITAL A
-1D505 MATHEMATICAL FRAKTUR CAPITAL B
-1D507 MATHEMATICAL FRAKTUR CAPITAL D
-1D508 MATHEMATICAL FRAKTUR CAPITAL E
-1D509 MATHEMATICAL FRAKTUR CAPITAL F
-1D50A MATHEMATICAL FRAKTUR CAPITAL G
-1D50D MATHEMATICAL FRAKTUR CAPITAL J
-1D50E MATHEMATICAL FRAKTUR CAPITAL K
-1D50F MATHEMATICAL FRAKTUR CAPITAL L
-1D510 MATHEMATICAL FRAKTUR CAPITAL M
-1D511 MATHEMATICAL FRAKTUR CAPITAL N
-1D512 MATHEMATICAL FRAKTUR CAPITAL O
-1D513 MATHEMATICAL FRAKTUR CAPITAL P
-1D514 MATHEMATICAL FRAKTUR CAPITAL Q
-1D516 MATHEMATICAL FRAKTUR CAPITAL S
-1D517 MATHEMATICAL FRAKTUR CAPITAL T
-1D518 MATHEMATICAL FRAKTUR CAPITAL U
-1D519 MATHEMATICAL FRAKTUR CAPITAL V
-1D51A MATHEMATICAL FRAKTUR CAPITAL W
-1D51B MATHEMATICAL FRAKTUR CAPITAL X
-1D51C MATHEMATICAL FRAKTUR CAPITAL Y
-1D51E MATHEMATICAL FRAKTUR SMALL A
-1D51F MATHEMATICAL FRAKTUR SMALL B
-1D520 MATHEMATICAL FRAKTUR SMALL C
-1D521 MATHEMATICAL FRAKTUR SMALL D
-1D522 MATHEMATICAL FRAKTUR SMALL E
-1D523 MATHEMATICAL FRAKTUR SMALL F
-1D524 MATHEMATICAL FRAKTUR SMALL G
-1D525 MATHEMATICAL FRAKTUR SMALL H
-1D526 MATHEMATICAL FRAKTUR SMALL I
-1D527 MATHEMATICAL FRAKTUR SMALL J
-1D528 MATHEMATICAL FRAKTUR SMALL K
-1D529 MATHEMATICAL FRAKTUR SMALL L
-1D52A MATHEMATICAL FRAKTUR SMALL M
-1D52B MATHEMATICAL FRAKTUR SMALL N
-1D52C MATHEMATICAL FRAKTUR SMALL O
-1D52D MATHEMATICAL FRAKTUR SMALL P
-1D52E MATHEMATICAL FRAKTUR SMALL Q
-1D52F MATHEMATICAL FRAKTUR SMALL R
-1D530 MATHEMATICAL FRAKTUR SMALL S
-1D531 MATHEMATICAL FRAKTUR SMALL T
-1D532 MATHEMATICAL FRAKTUR SMALL U
-1D533 MATHEMATICAL FRAKTUR SMALL V
-1D534 MATHEMATICAL FRAKTUR SMALL W
-1D535 MATHEMATICAL FRAKTUR SMALL X
-1D536 MATHEMATICAL FRAKTUR SMALL Y
-1D537 MATHEMATICAL FRAKTUR SMALL Z
-1D538 MATHEMATICAL DOUBLE-STRUCK CAPITAL A
-1D539 MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-1D53B MATHEMATICAL DOUBLE-STRUCK CAPITAL D
-1D53C MATHEMATICAL DOUBLE-STRUCK CAPITAL E
-1D53D MATHEMATICAL DOUBLE-STRUCK CAPITAL F
-1D53E MATHEMATICAL DOUBLE-STRUCK CAPITAL G
-1D540 MATHEMATICAL DOUBLE-STRUCK CAPITAL I
-1D541 MATHEMATICAL DOUBLE-STRUCK CAPITAL J
-1D542 MATHEMATICAL DOUBLE-STRUCK CAPITAL K
-1D543 MATHEMATICAL DOUBLE-STRUCK CAPITAL L
-1D544 MATHEMATICAL DOUBLE-STRUCK CAPITAL M
-1D546 MATHEMATICAL DOUBLE-STRUCK CAPITAL O
-1D54A MATHEMATICAL DOUBLE-STRUCK CAPITAL S
-1D54B MATHEMATICAL DOUBLE-STRUCK CAPITAL T
-1D54C MATHEMATICAL DOUBLE-STRUCK CAPITAL U
-1D54D MATHEMATICAL DOUBLE-STRUCK CAPITAL V
-1D54E MATHEMATICAL DOUBLE-STRUCK CAPITAL W
-1D54F MATHEMATICAL DOUBLE-STRUCK CAPITAL X
-1D550 MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
-1D552 MATHEMATICAL DOUBLE-STRUCK SMALL A
-1D553 MATHEMATICAL DOUBLE-STRUCK SMALL B
-1D554 MATHEMATICAL DOUBLE-STRUCK SMALL C
-1D555 MATHEMATICAL DOUBLE-STRUCK SMALL D
-1D556 MATHEMATICAL DOUBLE-STRUCK SMALL E
-1D557 MATHEMATICAL DOUBLE-STRUCK SMALL F
-1D558 MATHEMATICAL DOUBLE-STRUCK SMALL G
-1D559 MATHEMATICAL DOUBLE-STRUCK SMALL H
-1D55A MATHEMATICAL DOUBLE-STRUCK SMALL I
-1D55B MATHEMATICAL DOUBLE-STRUCK SMALL J
-1D55C MATHEMATICAL DOUBLE-STRUCK SMALL K
-1D55D MATHEMATICAL DOUBLE-STRUCK SMALL L
-1D55E MATHEMATICAL DOUBLE-STRUCK SMALL M
-1D55F MATHEMATICAL DOUBLE-STRUCK SMALL N
-1D560 MATHEMATICAL DOUBLE-STRUCK SMALL O
-1D561 MATHEMATICAL DOUBLE-STRUCK SMALL P
-1D562 MATHEMATICAL DOUBLE-STRUCK SMALL Q
-1D563 MATHEMATICAL DOUBLE-STRUCK SMALL R
-1D564 MATHEMATICAL DOUBLE-STRUCK SMALL S
-1D565 MATHEMATICAL DOUBLE-STRUCK SMALL T
-1D566 MATHEMATICAL DOUBLE-STRUCK SMALL U
-1D567 MATHEMATICAL DOUBLE-STRUCK SMALL V
-1D568 MATHEMATICAL DOUBLE-STRUCK SMALL W
-1D569 MATHEMATICAL DOUBLE-STRUCK SMALL X
-1D56A MATHEMATICAL DOUBLE-STRUCK SMALL Y
-1D56B MATHEMATICAL DOUBLE-STRUCK SMALL Z
-1D56C MATHEMATICAL BOLD FRAKTUR CAPITAL A
-1D56D MATHEMATICAL BOLD FRAKTUR CAPITAL B
-1D56E MATHEMATICAL BOLD FRAKTUR CAPITAL C
-1D56F MATHEMATICAL BOLD FRAKTUR CAPITAL D
-1D570 MATHEMATICAL BOLD FRAKTUR CAPITAL E
-1D571 MATHEMATICAL BOLD FRAKTUR CAPITAL F
-1D572 MATHEMATICAL BOLD FRAKTUR CAPITAL G
-1D573 MATHEMATICAL BOLD FRAKTUR CAPITAL H
-1D574 MATHEMATICAL BOLD FRAKTUR CAPITAL I
-1D575 MATHEMATICAL BOLD FRAKTUR CAPITAL J
-1D576 MATHEMATICAL BOLD FRAKTUR CAPITAL K
-1D577 MATHEMATICAL BOLD FRAKTUR CAPITAL L
-1D578 MATHEMATICAL BOLD FRAKTUR CAPITAL M
-1D579 MATHEMATICAL BOLD FRAKTUR CAPITAL N
-1D57A MATHEMATICAL BOLD FRAKTUR CAPITAL O
-1D57B MATHEMATICAL BOLD FRAKTUR CAPITAL P
-1D57C MATHEMATICAL BOLD FRAKTUR CAPITAL Q
-1D57D MATHEMATICAL BOLD FRAKTUR CAPITAL R
-1D57E MATHEMATICAL BOLD FRAKTUR CAPITAL S
-1D57F MATHEMATICAL BOLD FRAKTUR CAPITAL T
-1D580 MATHEMATICAL BOLD FRAKTUR CAPITAL U
-1D581 MATHEMATICAL BOLD FRAKTUR CAPITAL V
-1D582 MATHEMATICAL BOLD FRAKTUR CAPITAL W
-1D583 MATHEMATICAL BOLD FRAKTUR CAPITAL X
-1D584 MATHEMATICAL BOLD FRAKTUR CAPITAL Y
-1D585 MATHEMATICAL BOLD FRAKTUR CAPITAL Z
-1D586 MATHEMATICAL BOLD FRAKTUR SMALL A
-1D587 MATHEMATICAL BOLD FRAKTUR SMALL B
-1D588 MATHEMATICAL BOLD FRAKTUR SMALL C
-1D589 MATHEMATICAL BOLD FRAKTUR SMALL D
-1D58A MATHEMATICAL BOLD FRAKTUR SMALL E
-1D58B MATHEMATICAL BOLD FRAKTUR SMALL F
-1D58C MATHEMATICAL BOLD FRAKTUR SMALL G
-1D58D MATHEMATICAL BOLD FRAKTUR SMALL H
-1D58E MATHEMATICAL BOLD FRAKTUR SMALL I
-1D58F MATHEMATICAL BOLD FRAKTUR SMALL J
-1D590 MATHEMATICAL BOLD FRAKTUR SMALL K
-1D591 MATHEMATICAL BOLD FRAKTUR SMALL L
-1D592 MATHEMATICAL BOLD FRAKTUR SMALL M
-1D593 MATHEMATICAL BOLD FRAKTUR SMALL N
-1D594 MATHEMATICAL BOLD FRAKTUR SMALL O
-1D595 MATHEMATICAL BOLD FRAKTUR SMALL P
-1D596 MATHEMATICAL BOLD FRAKTUR SMALL Q
-1D597 MATHEMATICAL BOLD FRAKTUR SMALL R
-1D598 MATHEMATICAL BOLD FRAKTUR SMALL S
-1D599 MATHEMATICAL BOLD FRAKTUR SMALL T
-1D59A MATHEMATICAL BOLD FRAKTUR SMALL U
-1D59B MATHEMATICAL BOLD FRAKTUR SMALL V
-1D59C MATHEMATICAL BOLD FRAKTUR SMALL W
-1D59D MATHEMATICAL BOLD FRAKTUR SMALL X
-1D59E MATHEMATICAL BOLD FRAKTUR SMALL Y
-1D59F MATHEMATICAL BOLD FRAKTUR SMALL Z
-1D5A0 MATHEMATICAL SANS-SERIF CAPITAL A
-1D5A1 MATHEMATICAL SANS-SERIF CAPITAL B
-1D5A2 MATHEMATICAL SANS-SERIF CAPITAL C
-1D5A3 MATHEMATICAL SANS-SERIF CAPITAL D
-1D5A4 MATHEMATICAL SANS-SERIF CAPITAL E
-1D5A5 MATHEMATICAL SANS-SERIF CAPITAL F
-1D5A6 MATHEMATICAL SANS-SERIF CAPITAL G
-1D5A7 MATHEMATICAL SANS-SERIF CAPITAL H
-1D5A8 MATHEMATICAL SANS-SERIF CAPITAL I
-1D5A9 MATHEMATICAL SANS-SERIF CAPITAL J
-1D5AA MATHEMATICAL SANS-SERIF CAPITAL K
-1D5AB MATHEMATICAL SANS-SERIF CAPITAL L
-1D5AC MATHEMATICAL SANS-SERIF CAPITAL M
-1D5AD MATHEMATICAL SANS-SERIF CAPITAL N
-1D5AE MATHEMATICAL SANS-SERIF CAPITAL O
-1D5AF MATHEMATICAL SANS-SERIF CAPITAL P
-1D5B0 MATHEMATICAL SANS-SERIF CAPITAL Q
-1D5B1 MATHEMATICAL SANS-SERIF CAPITAL R
-1D5B2 MATHEMATICAL SANS-SERIF CAPITAL S
-1D5B3 MATHEMATICAL SANS-SERIF CAPITAL T
-1D5B4 MATHEMATICAL SANS-SERIF CAPITAL U
-1D5B5 MATHEMATICAL SANS-SERIF CAPITAL V
-1D5B6 MATHEMATICAL SANS-SERIF CAPITAL W
-1D5B7 MATHEMATICAL SANS-SERIF CAPITAL X
-1D5B8 MATHEMATICAL SANS-SERIF CAPITAL Y
-1D5B9 MATHEMATICAL SANS-SERIF CAPITAL Z
-1D5BA MATHEMATICAL SANS-SERIF SMALL A
-1D5BB MATHEMATICAL SANS-SERIF SMALL B
-1D5BC MATHEMATICAL SANS-SERIF SMALL C
-1D5BD MATHEMATICAL SANS-SERIF SMALL D
-1D5BE MATHEMATICAL SANS-SERIF SMALL E
-1D5BF MATHEMATICAL SANS-SERIF SMALL F
-1D5C0 MATHEMATICAL SANS-SERIF SMALL G
-1D5C1 MATHEMATICAL SANS-SERIF SMALL H
-1D5C2 MATHEMATICAL SANS-SERIF SMALL I
-1D5C3 MATHEMATICAL SANS-SERIF SMALL J
-1D5C4 MATHEMATICAL SANS-SERIF SMALL K
-1D5C5 MATHEMATICAL SANS-SERIF SMALL L
-1D5C6 MATHEMATICAL SANS-SERIF SMALL M
-1D5C7 MATHEMATICAL SANS-SERIF SMALL N
-1D5C8 MATHEMATICAL SANS-SERIF SMALL O
-1D5C9 MATHEMATICAL SANS-SERIF SMALL P
-1D5CA MATHEMATICAL SANS-SERIF SMALL Q
-1D5CB MATHEMATICAL SANS-SERIF SMALL R
-1D5CC MATHEMATICAL SANS-SERIF SMALL S
-1D5CD MATHEMATICAL SANS-SERIF SMALL T
-1D5CE MATHEMATICAL SANS-SERIF SMALL U
-1D5CF MATHEMATICAL SANS-SERIF SMALL V
-1D5D0 MATHEMATICAL SANS-SERIF SMALL W
-1D5D1 MATHEMATICAL SANS-SERIF SMALL X
-1D5D2 MATHEMATICAL SANS-SERIF SMALL Y
-1D5D3 MATHEMATICAL SANS-SERIF SMALL Z
-1D5D4 MATHEMATICAL SANS-SERIF BOLD CAPITAL A
-1D5D5 MATHEMATICAL SANS-SERIF BOLD CAPITAL B
-1D5D6 MATHEMATICAL SANS-SERIF BOLD CAPITAL C
-1D5D7 MATHEMATICAL SANS-SERIF BOLD CAPITAL D
-1D5D8 MATHEMATICAL SANS-SERIF BOLD CAPITAL E
-1D5D9 MATHEMATICAL SANS-SERIF BOLD CAPITAL F
-1D5DA MATHEMATICAL SANS-SERIF BOLD CAPITAL G
-1D5DB MATHEMATICAL SANS-SERIF BOLD CAPITAL H
-1D5DC MATHEMATICAL SANS-SERIF BOLD CAPITAL I
-1D5DD MATHEMATICAL SANS-SERIF BOLD CAPITAL J
-1D5DE MATHEMATICAL SANS-SERIF BOLD CAPITAL K
-1D5DF MATHEMATICAL SANS-SERIF BOLD CAPITAL L
-1D5E0 MATHEMATICAL SANS-SERIF BOLD CAPITAL M
-1D5E1 MATHEMATICAL SANS-SERIF BOLD CAPITAL N
-1D5E2 MATHEMATICAL SANS-SERIF BOLD CAPITAL O
-1D5E3 MATHEMATICAL SANS-SERIF BOLD CAPITAL P
-1D5E4 MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
-1D5E5 MATHEMATICAL SANS-SERIF BOLD CAPITAL R
-1D5E6 MATHEMATICAL SANS-SERIF BOLD CAPITAL S
-1D5E7 MATHEMATICAL SANS-SERIF BOLD CAPITAL T
-1D5E8 MATHEMATICAL SANS-SERIF BOLD CAPITAL U
-1D5E9 MATHEMATICAL SANS-SERIF BOLD CAPITAL V
-1D5EA MATHEMATICAL SANS-SERIF BOLD CAPITAL W
-1D5EB MATHEMATICAL SANS-SERIF BOLD CAPITAL X
-1D5EC MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
-1D5ED MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
-1D5EE MATHEMATICAL SANS-SERIF BOLD SMALL A
-1D5EF MATHEMATICAL SANS-SERIF BOLD SMALL B
-1D5F0 MATHEMATICAL SANS-SERIF BOLD SMALL C
-1D5F1 MATHEMATICAL SANS-SERIF BOLD SMALL D
-1D5F2 MATHEMATICAL SANS-SERIF BOLD SMALL E
-1D5F3 MATHEMATICAL SANS-SERIF BOLD SMALL F
-1D5F4 MATHEMATICAL SANS-SERIF BOLD SMALL G
-1D5F5 MATHEMATICAL SANS-SERIF BOLD SMALL H
-1D5F6 MATHEMATICAL SANS-SERIF BOLD SMALL I
-1D5F7 MATHEMATICAL SANS-SERIF BOLD SMALL J
-1D5F8 MATHEMATICAL SANS-SERIF BOLD SMALL K
-1D5F9 MATHEMATICAL SANS-SERIF BOLD SMALL L
-1D5FA MATHEMATICAL SANS-SERIF BOLD SMALL M
-1D5FB MATHEMATICAL SANS-SERIF BOLD SMALL N
-1D5FC MATHEMATICAL SANS-SERIF BOLD SMALL O
-1D5FD MATHEMATICAL SANS-SERIF BOLD SMALL P
-1D5FE MATHEMATICAL SANS-SERIF BOLD SMALL Q
-1D5FF MATHEMATICAL SANS-SERIF BOLD SMALL R
-1D600 MATHEMATICAL SANS-SERIF BOLD SMALL S
-1D601 MATHEMATICAL SANS-SERIF BOLD SMALL T
-1D602 MATHEMATICAL SANS-SERIF BOLD SMALL U
-1D603 MATHEMATICAL SANS-SERIF BOLD SMALL V
-1D604 MATHEMATICAL SANS-SERIF BOLD SMALL W
-1D605 MATHEMATICAL SANS-SERIF BOLD SMALL X
-1D606 MATHEMATICAL SANS-SERIF BOLD SMALL Y
-1D607 MATHEMATICAL SANS-SERIF BOLD SMALL Z
-1D608 MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
-1D609 MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
-1D60A MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
-1D60B MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
-1D60C MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
-1D60D MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
-1D60E MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
-1D60F MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
-1D610 MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
-1D611 MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
-1D612 MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
-1D613 MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
-1D614 MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
-1D615 MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
-1D616 MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
-1D617 MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
-1D618 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
-1D619 MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
-1D61A MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
-1D61B MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
-1D61C MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
-1D61D MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
-1D61E MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
-1D61F MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
-1D620 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
-1D621 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
-1D622 MATHEMATICAL SANS-SERIF ITALIC SMALL A
-1D623 MATHEMATICAL SANS-SERIF ITALIC SMALL B
-1D624 MATHEMATICAL SANS-SERIF ITALIC SMALL C
-1D625 MATHEMATICAL SANS-SERIF ITALIC SMALL D
-1D626 MATHEMATICAL SANS-SERIF ITALIC SMALL E
-1D627 MATHEMATICAL SANS-SERIF ITALIC SMALL F
-1D628 MATHEMATICAL SANS-SERIF ITALIC SMALL G
-1D629 MATHEMATICAL SANS-SERIF ITALIC SMALL H
-1D62A MATHEMATICAL SANS-SERIF ITALIC SMALL I
-1D62B MATHEMATICAL SANS-SERIF ITALIC SMALL J
-1D62C MATHEMATICAL SANS-SERIF ITALIC SMALL K
-1D62D MATHEMATICAL SANS-SERIF ITALIC SMALL L
-1D62E MATHEMATICAL SANS-SERIF ITALIC SMALL M
-1D62F MATHEMATICAL SANS-SERIF ITALIC SMALL N
-1D630 MATHEMATICAL SANS-SERIF ITALIC SMALL O
-1D631 MATHEMATICAL SANS-SERIF ITALIC SMALL P
-1D632 MATHEMATICAL SANS-SERIF ITALIC SMALL Q
-1D633 MATHEMATICAL SANS-SERIF ITALIC SMALL R
-1D634 MATHEMATICAL SANS-SERIF ITALIC SMALL S
-1D635 MATHEMATICAL SANS-SERIF ITALIC SMALL T
-1D636 MATHEMATICAL SANS-SERIF ITALIC SMALL U
-1D637 MATHEMATICAL SANS-SERIF ITALIC SMALL V
-1D638 MATHEMATICAL SANS-SERIF ITALIC SMALL W
-1D639 MATHEMATICAL SANS-SERIF ITALIC SMALL X
-1D63A MATHEMATICAL SANS-SERIF ITALIC SMALL Y
-1D63B MATHEMATICAL SANS-SERIF ITALIC SMALL Z
-1D63C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
-1D63D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
-1D63E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
-1D63F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
-1D640 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
-1D641 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
-1D642 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
-1D643 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
-1D644 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
-1D645 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
-1D646 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
-1D647 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
-1D648 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
-1D649 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
-1D64A MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
-1D64B MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
-1D64C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
-1D64D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
-1D64E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
-1D64F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
-1D650 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
-1D651 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
-1D652 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
-1D653 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
-1D654 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
-1D655 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
-1D656 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
-1D657 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
-1D658 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
-1D659 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
-1D65A MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
-1D65B MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
-1D65C MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
-1D65D MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
-1D65E MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
-1D65F MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
-1D660 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
-1D661 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
-1D662 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
-1D663 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
-1D664 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
-1D665 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
-1D666 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
-1D667 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
-1D668 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
-1D669 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
-1D66A MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
-1D66B MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
-1D66C MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
-1D66D MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
-1D66E MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
-1D66F MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
-1D670 MATHEMATICAL MONOSPACE CAPITAL A
-1D671 MATHEMATICAL MONOSPACE CAPITAL B
-1D672 MATHEMATICAL MONOSPACE CAPITAL C
-1D673 MATHEMATICAL MONOSPACE CAPITAL D
-1D674 MATHEMATICAL MONOSPACE CAPITAL E
-1D675 MATHEMATICAL MONOSPACE CAPITAL F
-1D676 MATHEMATICAL MONOSPACE CAPITAL G
-1D677 MATHEMATICAL MONOSPACE CAPITAL H
-1D678 MATHEMATICAL MONOSPACE CAPITAL I
-1D679 MATHEMATICAL MONOSPACE CAPITAL J
-1D67A MATHEMATICAL MONOSPACE CAPITAL K
-1D67B MATHEMATICAL MONOSPACE CAPITAL L
-1D67C MATHEMATICAL MONOSPACE CAPITAL M
-1D67D MATHEMATICAL MONOSPACE CAPITAL N
-1D67E MATHEMATICAL MONOSPACE CAPITAL O
-1D67F MATHEMATICAL MONOSPACE CAPITAL P
-1D680 MATHEMATICAL MONOSPACE CAPITAL Q
-1D681 MATHEMATICAL MONOSPACE CAPITAL R
-1D682 MATHEMATICAL MONOSPACE CAPITAL S
-1D683 MATHEMATICAL MONOSPACE CAPITAL T
-1D684 MATHEMATICAL MONOSPACE CAPITAL U
-1D685 MATHEMATICAL MONOSPACE CAPITAL V
-1D686 MATHEMATICAL MONOSPACE CAPITAL W
-1D687 MATHEMATICAL MONOSPACE CAPITAL X
-1D688 MATHEMATICAL MONOSPACE CAPITAL Y
-1D689 MATHEMATICAL MONOSPACE CAPITAL Z
-1D68A MATHEMATICAL MONOSPACE SMALL A
-1D68B MATHEMATICAL MONOSPACE SMALL B
-1D68C MATHEMATICAL MONOSPACE SMALL C
-1D68D MATHEMATICAL MONOSPACE SMALL D
-1D68E MATHEMATICAL MONOSPACE SMALL E
-1D68F MATHEMATICAL MONOSPACE SMALL F
-1D690 MATHEMATICAL MONOSPACE SMALL G
-1D691 MATHEMATICAL MONOSPACE SMALL H
-1D692 MATHEMATICAL MONOSPACE SMALL I
-1D693 MATHEMATICAL MONOSPACE SMALL J
-1D694 MATHEMATICAL MONOSPACE SMALL K
-1D695 MATHEMATICAL MONOSPACE SMALL L
-1D696 MATHEMATICAL MONOSPACE SMALL M
-1D697 MATHEMATICAL MONOSPACE SMALL N
-1D698 MATHEMATICAL MONOSPACE SMALL O
-1D699 MATHEMATICAL MONOSPACE SMALL P
-1D69A MATHEMATICAL MONOSPACE SMALL Q
-1D69B MATHEMATICAL MONOSPACE SMALL R
-1D69C MATHEMATICAL MONOSPACE SMALL S
-1D69D MATHEMATICAL MONOSPACE SMALL T
-1D69E MATHEMATICAL MONOSPACE SMALL U
-1D69F MATHEMATICAL MONOSPACE SMALL V
-1D6A0 MATHEMATICAL MONOSPACE SMALL W
-1D6A1 MATHEMATICAL MONOSPACE SMALL X
-1D6A2 MATHEMATICAL MONOSPACE SMALL Y
-1D6A3 MATHEMATICAL MONOSPACE SMALL Z
-1D6A8 MATHEMATICAL BOLD CAPITAL ALPHA
-1D6A9 MATHEMATICAL BOLD CAPITAL BETA
-1D6AA MATHEMATICAL BOLD CAPITAL GAMMA
-1D6AB MATHEMATICAL BOLD CAPITAL DELTA
-1D6AC MATHEMATICAL BOLD CAPITAL EPSILON
-1D6AD MATHEMATICAL BOLD CAPITAL ZETA
-1D6AE MATHEMATICAL BOLD CAPITAL ETA
-1D6AF MATHEMATICAL BOLD CAPITAL THETA
-1D6B0 MATHEMATICAL BOLD CAPITAL IOTA
-1D6B1 MATHEMATICAL BOLD CAPITAL KAPPA
-1D6B2 MATHEMATICAL BOLD CAPITAL LAMDA
-1D6B3 MATHEMATICAL BOLD CAPITAL MU
-1D6B4 MATHEMATICAL BOLD CAPITAL NU
-1D6B5 MATHEMATICAL BOLD CAPITAL XI
-1D6B6 MATHEMATICAL BOLD CAPITAL OMICRON
-1D6B7 MATHEMATICAL BOLD CAPITAL PI
-1D6B8 MATHEMATICAL BOLD CAPITAL RHO
-1D6B9 MATHEMATICAL BOLD CAPITAL THETA SYMBOL
-1D6BA MATHEMATICAL BOLD CAPITAL SIGMA
-1D6BB MATHEMATICAL BOLD CAPITAL TAU
-1D6BC MATHEMATICAL BOLD CAPITAL UPSILON
-1D6BD MATHEMATICAL BOLD CAPITAL PHI
-1D6BE MATHEMATICAL BOLD CAPITAL CHI
-1D6BF MATHEMATICAL BOLD CAPITAL PSI
-1D6C0 MATHEMATICAL BOLD CAPITAL OMEGA
-1D6C1 MATHEMATICAL BOLD NABLA
-1D6C2 MATHEMATICAL BOLD SMALL ALPHA
-1D6C3 MATHEMATICAL BOLD SMALL BETA
-1D6C4 MATHEMATICAL BOLD SMALL GAMMA
-1D6C5 MATHEMATICAL BOLD SMALL DELTA
-1D6C6 MATHEMATICAL BOLD SMALL EPSILON
-1D6C7 MATHEMATICAL BOLD SMALL ZETA
-1D6C8 MATHEMATICAL BOLD SMALL ETA
-1D6C9 MATHEMATICAL BOLD SMALL THETA
-1D6CA MATHEMATICAL BOLD SMALL IOTA
-1D6CB MATHEMATICAL BOLD SMALL KAPPA
-1D6CC MATHEMATICAL BOLD SMALL LAMDA
-1D6CD MATHEMATICAL BOLD SMALL MU
-1D6CE MATHEMATICAL BOLD SMALL NU
-1D6CF MATHEMATICAL BOLD SMALL XI
-1D6D0 MATHEMATICAL BOLD SMALL OMICRON
-1D6D1 MATHEMATICAL BOLD SMALL PI
-1D6D2 MATHEMATICAL BOLD SMALL RHO
-1D6D3 MATHEMATICAL BOLD SMALL FINAL SIGMA
-1D6D4 MATHEMATICAL BOLD SMALL SIGMA
-1D6D5 MATHEMATICAL BOLD SMALL TAU
-1D6D6 MATHEMATICAL BOLD SMALL UPSILON
-1D6D7 MATHEMATICAL BOLD SMALL PHI
-1D6D8 MATHEMATICAL BOLD SMALL CHI
-1D6D9 MATHEMATICAL BOLD SMALL PSI
-1D6DA MATHEMATICAL BOLD SMALL OMEGA
-1D6DB MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
-1D6DC MATHEMATICAL BOLD EPSILON SYMBOL
-1D6DD MATHEMATICAL BOLD THETA SYMBOL
-1D6DE MATHEMATICAL BOLD KAPPA SYMBOL
-1D6DF MATHEMATICAL BOLD PHI SYMBOL
-1D6E0 MATHEMATICAL BOLD RHO SYMBOL
-1D6E1 MATHEMATICAL BOLD PI SYMBOL
-1D6E2 MATHEMATICAL ITALIC CAPITAL ALPHA
-1D6E3 MATHEMATICAL ITALIC CAPITAL BETA
-1D6E4 MATHEMATICAL ITALIC CAPITAL GAMMA
-1D6E5 MATHEMATICAL ITALIC CAPITAL DELTA
-1D6E6 MATHEMATICAL ITALIC CAPITAL EPSILON
-1D6E7 MATHEMATICAL ITALIC CAPITAL ZETA
-1D6E8 MATHEMATICAL ITALIC CAPITAL ETA
-1D6E9 MATHEMATICAL ITALIC CAPITAL THETA
-1D6EA MATHEMATICAL ITALIC CAPITAL IOTA
-1D6EB MATHEMATICAL ITALIC CAPITAL KAPPA
-1D6EC MATHEMATICAL ITALIC CAPITAL LAMDA
-1D6ED MATHEMATICAL ITALIC CAPITAL MU
-1D6EE MATHEMATICAL ITALIC CAPITAL NU
-1D6EF MATHEMATICAL ITALIC CAPITAL XI
-1D6F0 MATHEMATICAL ITALIC CAPITAL OMICRON
-1D6F1 MATHEMATICAL ITALIC CAPITAL PI
-1D6F2 MATHEMATICAL ITALIC CAPITAL RHO
-1D6F3 MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
-1D6F4 MATHEMATICAL ITALIC CAPITAL SIGMA
-1D6F5 MATHEMATICAL ITALIC CAPITAL TAU
-1D6F6 MATHEMATICAL ITALIC CAPITAL UPSILON
-1D6F7 MATHEMATICAL ITALIC CAPITAL PHI
-1D6F8 MATHEMATICAL ITALIC CAPITAL CHI
-1D6F9 MATHEMATICAL ITALIC CAPITAL PSI
-1D6FA MATHEMATICAL ITALIC CAPITAL OMEGA
-1D6FB MATHEMATICAL ITALIC NABLA
-1D6FC MATHEMATICAL ITALIC SMALL ALPHA
-1D6FD MATHEMATICAL ITALIC SMALL BETA
-1D6FE MATHEMATICAL ITALIC SMALL GAMMA
-1D6FF MATHEMATICAL ITALIC SMALL DELTA
-1D700 MATHEMATICAL ITALIC SMALL EPSILON
-1D701 MATHEMATICAL ITALIC SMALL ZETA
-1D702 MATHEMATICAL ITALIC SMALL ETA
-1D703 MATHEMATICAL ITALIC SMALL THETA
-1D704 MATHEMATICAL ITALIC SMALL IOTA
-1D705 MATHEMATICAL ITALIC SMALL KAPPA
-1D706 MATHEMATICAL ITALIC SMALL LAMDA
-1D707 MATHEMATICAL ITALIC SMALL MU
-1D708 MATHEMATICAL ITALIC SMALL NU
-1D709 MATHEMATICAL ITALIC SMALL XI
-1D70A MATHEMATICAL ITALIC SMALL OMICRON
-1D70B MATHEMATICAL ITALIC SMALL PI
-1D70C MATHEMATICAL ITALIC SMALL RHO
-1D70D MATHEMATICAL ITALIC SMALL FINAL SIGMA
-1D70E MATHEMATICAL ITALIC SMALL SIGMA
-1D70F MATHEMATICAL ITALIC SMALL TAU
-1D710 MATHEMATICAL ITALIC SMALL UPSILON
-1D711 MATHEMATICAL ITALIC SMALL PHI
-1D712 MATHEMATICAL ITALIC SMALL CHI
-1D713 MATHEMATICAL ITALIC SMALL PSI
-1D714 MATHEMATICAL ITALIC SMALL OMEGA
-1D715 MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
-1D716 MATHEMATICAL ITALIC EPSILON SYMBOL
-1D717 MATHEMATICAL ITALIC THETA SYMBOL
-1D718 MATHEMATICAL ITALIC KAPPA SYMBOL
-1D719 MATHEMATICAL ITALIC PHI SYMBOL
-1D71A MATHEMATICAL ITALIC RHO SYMBOL
-1D71B MATHEMATICAL ITALIC PI SYMBOL
-1D71C MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
-1D71D MATHEMATICAL BOLD ITALIC CAPITAL BETA
-1D71E MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
-1D71F MATHEMATICAL BOLD ITALIC CAPITAL DELTA
-1D720 MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
-1D721 MATHEMATICAL BOLD ITALIC CAPITAL ZETA
-1D722 MATHEMATICAL BOLD ITALIC CAPITAL ETA
-1D723 MATHEMATICAL BOLD ITALIC CAPITAL THETA
-1D724 MATHEMATICAL BOLD ITALIC CAPITAL IOTA
-1D725 MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
-1D726 MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
-1D727 MATHEMATICAL BOLD ITALIC CAPITAL MU
-1D728 MATHEMATICAL BOLD ITALIC CAPITAL NU
-1D729 MATHEMATICAL BOLD ITALIC CAPITAL XI
-1D72A MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
-1D72B MATHEMATICAL BOLD ITALIC CAPITAL PI
-1D72C MATHEMATICAL BOLD ITALIC CAPITAL RHO
-1D72D MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
-1D72E MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
-1D72F MATHEMATICAL BOLD ITALIC CAPITAL TAU
-1D730 MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
-1D731 MATHEMATICAL BOLD ITALIC CAPITAL PHI
-1D732 MATHEMATICAL BOLD ITALIC CAPITAL CHI
-1D733 MATHEMATICAL BOLD ITALIC CAPITAL PSI
-1D734 MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
-1D735 MATHEMATICAL BOLD ITALIC NABLA
-1D736 MATHEMATICAL BOLD ITALIC SMALL ALPHA
-1D737 MATHEMATICAL BOLD ITALIC SMALL BETA
-1D738 MATHEMATICAL BOLD ITALIC SMALL GAMMA
-1D739 MATHEMATICAL BOLD ITALIC SMALL DELTA
-1D73A MATHEMATICAL BOLD ITALIC SMALL EPSILON
-1D73B MATHEMATICAL BOLD ITALIC SMALL ZETA
-1D73C MATHEMATICAL BOLD ITALIC SMALL ETA
-1D73D MATHEMATICAL BOLD ITALIC SMALL THETA
-1D73E MATHEMATICAL BOLD ITALIC SMALL IOTA
-1D73F MATHEMATICAL BOLD ITALIC SMALL KAPPA
-1D740 MATHEMATICAL BOLD ITALIC SMALL LAMDA
-1D741 MATHEMATICAL BOLD ITALIC SMALL MU
-1D742 MATHEMATICAL BOLD ITALIC SMALL NU
-1D743 MATHEMATICAL BOLD ITALIC SMALL XI
-1D744 MATHEMATICAL BOLD ITALIC SMALL OMICRON
-1D745 MATHEMATICAL BOLD ITALIC SMALL PI
-1D746 MATHEMATICAL BOLD ITALIC SMALL RHO
-1D747 MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
-1D748 MATHEMATICAL BOLD ITALIC SMALL SIGMA
-1D749 MATHEMATICAL BOLD ITALIC SMALL TAU
-1D74A MATHEMATICAL BOLD ITALIC SMALL UPSILON
-1D74B MATHEMATICAL BOLD ITALIC SMALL PHI
-1D74C MATHEMATICAL BOLD ITALIC SMALL CHI
-1D74D MATHEMATICAL BOLD ITALIC SMALL PSI
-1D74E MATHEMATICAL BOLD ITALIC SMALL OMEGA
-1D74F MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
-1D750 MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
-1D751 MATHEMATICAL BOLD ITALIC THETA SYMBOL
-1D752 MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
-1D753 MATHEMATICAL BOLD ITALIC PHI SYMBOL
-1D754 MATHEMATICAL BOLD ITALIC RHO SYMBOL
-1D755 MATHEMATICAL BOLD ITALIC PI SYMBOL
-1D756 MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
-1D757 MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
-1D758 MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
-1D759 MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
-1D75A MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
-1D75B MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
-1D75C MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
-1D75D MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
-1D75E MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
-1D75F MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
-1D760 MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
-1D761 MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
-1D762 MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
-1D763 MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
-1D764 MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
-1D765 MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
-1D766 MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
-1D767 MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
-1D768 MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
-1D769 MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
-1D76A MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
-1D76B MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
-1D76C MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
-1D76D MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
-1D76E MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
-1D76F MATHEMATICAL SANS-SERIF BOLD NABLA
-1D770 MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
-1D771 MATHEMATICAL SANS-SERIF BOLD SMALL BETA
-1D772 MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
-1D773 MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
-1D774 MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
-1D775 MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
-1D776 MATHEMATICAL SANS-SERIF BOLD SMALL ETA
-1D777 MATHEMATICAL SANS-SERIF BOLD SMALL THETA
-1D778 MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
-1D779 MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
-1D77A MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
-1D77B MATHEMATICAL SANS-SERIF BOLD SMALL MU
-1D77C MATHEMATICAL SANS-SERIF BOLD SMALL NU
-1D77D MATHEMATICAL SANS-SERIF BOLD SMALL XI
-1D77E MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
-1D77F MATHEMATICAL SANS-SERIF BOLD SMALL PI
-1D780 MATHEMATICAL SANS-SERIF BOLD SMALL RHO
-1D781 MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
-1D782 MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
-1D783 MATHEMATICAL SANS-SERIF BOLD SMALL TAU
-1D784 MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
-1D785 MATHEMATICAL SANS-SERIF BOLD SMALL PHI
-1D786 MATHEMATICAL SANS-SERIF BOLD SMALL CHI
-1D787 MATHEMATICAL SANS-SERIF BOLD SMALL PSI
-1D788 MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
-1D789 MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
-1D78A MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
-1D78B MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
-1D78C MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
-1D78D MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
-1D78E MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
-1D78F MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
-1D790 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
-1D791 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
-1D792 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
-1D793 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
-1D794 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
-1D795 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
-1D796 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
-1D797 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
-1D798 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
-1D799 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
-1D79A MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
-1D79B MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
-1D79C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
-1D79D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
-1D79E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
-1D79F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
-1D7A0 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
-1D7A1 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
-1D7A2 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
-1D7A3 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
-1D7A4 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
-1D7A5 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
-1D7A6 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
-1D7A7 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
-1D7A8 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
-1D7A9 MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
-1D7AA MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
-1D7AB MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
-1D7AC MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
-1D7AD MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
-1D7AE MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
-1D7AF MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
-1D7B0 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
-1D7B1 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
-1D7B2 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
-1D7B3 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
-1D7B4 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
-1D7B5 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
-1D7B6 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
-1D7B7 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
-1D7B8 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
-1D7B9 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
-1D7BA MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
-1D7BB MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
-1D7BC MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
-1D7BD MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
-1D7BE MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
-1D7BF MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
-1D7C0 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
-1D7C1 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
-1D7C2 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
-1D7C3 MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
-1D7C4 MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
-1D7C5 MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
-1D7C6 MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
-1D7C7 MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
-1D7C8 MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
-1D7C9 MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
-1D7CE MATHEMATICAL BOLD DIGIT ZERO
-1D7CF MATHEMATICAL BOLD DIGIT ONE
-1D7D0 MATHEMATICAL BOLD DIGIT TWO
-1D7D1 MATHEMATICAL BOLD DIGIT THREE
-1D7D2 MATHEMATICAL BOLD DIGIT FOUR
-1D7D3 MATHEMATICAL BOLD DIGIT FIVE
-1D7D4 MATHEMATICAL BOLD DIGIT SIX
-1D7D5 MATHEMATICAL BOLD DIGIT SEVEN
-1D7D6 MATHEMATICAL BOLD DIGIT EIGHT
-1D7D7 MATHEMATICAL BOLD DIGIT NINE
-1D7D8 MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
-1D7D9 MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
-1D7DA MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
-1D7DB MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
-1D7DC MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
-1D7DD MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
-1D7DE MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
-1D7DF MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
-1D7E0 MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
-1D7E1 MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
-1D7E2 MATHEMATICAL SANS-SERIF DIGIT ZERO
-1D7E3 MATHEMATICAL SANS-SERIF DIGIT ONE
-1D7E4 MATHEMATICAL SANS-SERIF DIGIT TWO
-1D7E5 MATHEMATICAL SANS-SERIF DIGIT THREE
-1D7E6 MATHEMATICAL SANS-SERIF DIGIT FOUR
-1D7E7 MATHEMATICAL SANS-SERIF DIGIT FIVE
-1D7E8 MATHEMATICAL SANS-SERIF DIGIT SIX
-1D7E9 MATHEMATICAL SANS-SERIF DIGIT SEVEN
-1D7EA MATHEMATICAL SANS-SERIF DIGIT EIGHT
-1D7EB MATHEMATICAL SANS-SERIF DIGIT NINE
-1D7EC MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
-1D7ED MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
-1D7EE MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
-1D7EF MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
-1D7F0 MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
-1D7F1 MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
-1D7F2 MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
-1D7F3 MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
-1D7F4 MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
-1D7F5 MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
-1D7F6 MATHEMATICAL MONOSPACE DIGIT ZERO
-1D7F7 MATHEMATICAL MONOSPACE DIGIT ONE
-1D7F8 MATHEMATICAL MONOSPACE DIGIT TWO
-1D7F9 MATHEMATICAL MONOSPACE DIGIT THREE
-1D7FA MATHEMATICAL MONOSPACE DIGIT FOUR
-1D7FB MATHEMATICAL MONOSPACE DIGIT FIVE
-1D7FC MATHEMATICAL MONOSPACE DIGIT SIX
-1D7FD MATHEMATICAL MONOSPACE DIGIT SEVEN
-1D7FE MATHEMATICAL MONOSPACE DIGIT EIGHT
-1D7FF MATHEMATICAL MONOSPACE DIGIT NINE
-20000 2A6D6 CJK Ideograph Extension B
-2F800 CJK COMPATIBILITY IDEOGRAPH-2F800
-2F801 CJK COMPATIBILITY IDEOGRAPH-2F801
-2F802 CJK COMPATIBILITY IDEOGRAPH-2F802
-2F803 CJK COMPATIBILITY IDEOGRAPH-2F803
-2F804 CJK COMPATIBILITY IDEOGRAPH-2F804
-2F805 CJK COMPATIBILITY IDEOGRAPH-2F805
-2F806 CJK COMPATIBILITY IDEOGRAPH-2F806
-2F807 CJK COMPATIBILITY IDEOGRAPH-2F807
-2F808 CJK COMPATIBILITY IDEOGRAPH-2F808
-2F809 CJK COMPATIBILITY IDEOGRAPH-2F809
-2F80A CJK COMPATIBILITY IDEOGRAPH-2F80A
-2F80B CJK COMPATIBILITY IDEOGRAPH-2F80B
-2F80C CJK COMPATIBILITY IDEOGRAPH-2F80C
-2F80D CJK COMPATIBILITY IDEOGRAPH-2F80D
-2F80E CJK COMPATIBILITY IDEOGRAPH-2F80E
-2F80F CJK COMPATIBILITY IDEOGRAPH-2F80F
-2F810 CJK COMPATIBILITY IDEOGRAPH-2F810
-2F811 CJK COMPATIBILITY IDEOGRAPH-2F811
-2F812 CJK COMPATIBILITY IDEOGRAPH-2F812
-2F813 CJK COMPATIBILITY IDEOGRAPH-2F813
-2F814 CJK COMPATIBILITY IDEOGRAPH-2F814
-2F815 CJK COMPATIBILITY IDEOGRAPH-2F815
-2F816 CJK COMPATIBILITY IDEOGRAPH-2F816
-2F817 CJK COMPATIBILITY IDEOGRAPH-2F817
-2F818 CJK COMPATIBILITY IDEOGRAPH-2F818
-2F819 CJK COMPATIBILITY IDEOGRAPH-2F819
-2F81A CJK COMPATIBILITY IDEOGRAPH-2F81A
-2F81B CJK COMPATIBILITY IDEOGRAPH-2F81B
-2F81C CJK COMPATIBILITY IDEOGRAPH-2F81C
-2F81D CJK COMPATIBILITY IDEOGRAPH-2F81D
-2F81E CJK COMPATIBILITY IDEOGRAPH-2F81E
-2F81F CJK COMPATIBILITY IDEOGRAPH-2F81F
-2F820 CJK COMPATIBILITY IDEOGRAPH-2F820
-2F821 CJK COMPATIBILITY IDEOGRAPH-2F821
-2F822 CJK COMPATIBILITY IDEOGRAPH-2F822
-2F823 CJK COMPATIBILITY IDEOGRAPH-2F823
-2F824 CJK COMPATIBILITY IDEOGRAPH-2F824
-2F825 CJK COMPATIBILITY IDEOGRAPH-2F825
-2F826 CJK COMPATIBILITY IDEOGRAPH-2F826
-2F827 CJK COMPATIBILITY IDEOGRAPH-2F827
-2F828 CJK COMPATIBILITY IDEOGRAPH-2F828
-2F829 CJK COMPATIBILITY IDEOGRAPH-2F829
-2F82A CJK COMPATIBILITY IDEOGRAPH-2F82A
-2F82B CJK COMPATIBILITY IDEOGRAPH-2F82B
-2F82C CJK COMPATIBILITY IDEOGRAPH-2F82C
-2F82D CJK COMPATIBILITY IDEOGRAPH-2F82D
-2F82E CJK COMPATIBILITY IDEOGRAPH-2F82E
-2F82F CJK COMPATIBILITY IDEOGRAPH-2F82F
-2F830 CJK COMPATIBILITY IDEOGRAPH-2F830
-2F831 CJK COMPATIBILITY IDEOGRAPH-2F831
-2F832 CJK COMPATIBILITY IDEOGRAPH-2F832
-2F833 CJK COMPATIBILITY IDEOGRAPH-2F833
-2F834 CJK COMPATIBILITY IDEOGRAPH-2F834
-2F835 CJK COMPATIBILITY IDEOGRAPH-2F835
-2F836 CJK COMPATIBILITY IDEOGRAPH-2F836
-2F837 CJK COMPATIBILITY IDEOGRAPH-2F837
-2F838 CJK COMPATIBILITY IDEOGRAPH-2F838
-2F839 CJK COMPATIBILITY IDEOGRAPH-2F839
-2F83A CJK COMPATIBILITY IDEOGRAPH-2F83A
-2F83B CJK COMPATIBILITY IDEOGRAPH-2F83B
-2F83C CJK COMPATIBILITY IDEOGRAPH-2F83C
-2F83D CJK COMPATIBILITY IDEOGRAPH-2F83D
-2F83E CJK COMPATIBILITY IDEOGRAPH-2F83E
-2F83F CJK COMPATIBILITY IDEOGRAPH-2F83F
-2F840 CJK COMPATIBILITY IDEOGRAPH-2F840
-2F841 CJK COMPATIBILITY IDEOGRAPH-2F841
-2F842 CJK COMPATIBILITY IDEOGRAPH-2F842
-2F843 CJK COMPATIBILITY IDEOGRAPH-2F843
-2F844 CJK COMPATIBILITY IDEOGRAPH-2F844
-2F845 CJK COMPATIBILITY IDEOGRAPH-2F845
-2F846 CJK COMPATIBILITY IDEOGRAPH-2F846
-2F847 CJK COMPATIBILITY IDEOGRAPH-2F847
-2F848 CJK COMPATIBILITY IDEOGRAPH-2F848
-2F849 CJK COMPATIBILITY IDEOGRAPH-2F849
-2F84A CJK COMPATIBILITY IDEOGRAPH-2F84A
-2F84B CJK COMPATIBILITY IDEOGRAPH-2F84B
-2F84C CJK COMPATIBILITY IDEOGRAPH-2F84C
-2F84D CJK COMPATIBILITY IDEOGRAPH-2F84D
-2F84E CJK COMPATIBILITY IDEOGRAPH-2F84E
-2F84F CJK COMPATIBILITY IDEOGRAPH-2F84F
-2F850 CJK COMPATIBILITY IDEOGRAPH-2F850
-2F851 CJK COMPATIBILITY IDEOGRAPH-2F851
-2F852 CJK COMPATIBILITY IDEOGRAPH-2F852
-2F853 CJK COMPATIBILITY IDEOGRAPH-2F853
-2F854 CJK COMPATIBILITY IDEOGRAPH-2F854
-2F855 CJK COMPATIBILITY IDEOGRAPH-2F855
-2F856 CJK COMPATIBILITY IDEOGRAPH-2F856
-2F857 CJK COMPATIBILITY IDEOGRAPH-2F857
-2F858 CJK COMPATIBILITY IDEOGRAPH-2F858
-2F859 CJK COMPATIBILITY IDEOGRAPH-2F859
-2F85A CJK COMPATIBILITY IDEOGRAPH-2F85A
-2F85B CJK COMPATIBILITY IDEOGRAPH-2F85B
-2F85C CJK COMPATIBILITY IDEOGRAPH-2F85C
-2F85D CJK COMPATIBILITY IDEOGRAPH-2F85D
-2F85E CJK COMPATIBILITY IDEOGRAPH-2F85E
-2F85F CJK COMPATIBILITY IDEOGRAPH-2F85F
-2F860 CJK COMPATIBILITY IDEOGRAPH-2F860
-2F861 CJK COMPATIBILITY IDEOGRAPH-2F861
-2F862 CJK COMPATIBILITY IDEOGRAPH-2F862
-2F863 CJK COMPATIBILITY IDEOGRAPH-2F863
-2F864 CJK COMPATIBILITY IDEOGRAPH-2F864
-2F865 CJK COMPATIBILITY IDEOGRAPH-2F865
-2F866 CJK COMPATIBILITY IDEOGRAPH-2F866
-2F867 CJK COMPATIBILITY IDEOGRAPH-2F867
-2F868 CJK COMPATIBILITY IDEOGRAPH-2F868
-2F869 CJK COMPATIBILITY IDEOGRAPH-2F869
-2F86A CJK COMPATIBILITY IDEOGRAPH-2F86A
-2F86B CJK COMPATIBILITY IDEOGRAPH-2F86B
-2F86C CJK COMPATIBILITY IDEOGRAPH-2F86C
-2F86D CJK COMPATIBILITY IDEOGRAPH-2F86D
-2F86E CJK COMPATIBILITY IDEOGRAPH-2F86E
-2F86F CJK COMPATIBILITY IDEOGRAPH-2F86F
-2F870 CJK COMPATIBILITY IDEOGRAPH-2F870
-2F871 CJK COMPATIBILITY IDEOGRAPH-2F871
-2F872 CJK COMPATIBILITY IDEOGRAPH-2F872
-2F873 CJK COMPATIBILITY IDEOGRAPH-2F873
-2F874 CJK COMPATIBILITY IDEOGRAPH-2F874
-2F875 CJK COMPATIBILITY IDEOGRAPH-2F875
-2F876 CJK COMPATIBILITY IDEOGRAPH-2F876
-2F877 CJK COMPATIBILITY IDEOGRAPH-2F877
-2F878 CJK COMPATIBILITY IDEOGRAPH-2F878
-2F879 CJK COMPATIBILITY IDEOGRAPH-2F879
-2F87A CJK COMPATIBILITY IDEOGRAPH-2F87A
-2F87B CJK COMPATIBILITY IDEOGRAPH-2F87B
-2F87C CJK COMPATIBILITY IDEOGRAPH-2F87C
-2F87D CJK COMPATIBILITY IDEOGRAPH-2F87D
-2F87E CJK COMPATIBILITY IDEOGRAPH-2F87E
-2F87F CJK COMPATIBILITY IDEOGRAPH-2F87F
-2F880 CJK COMPATIBILITY IDEOGRAPH-2F880
-2F881 CJK COMPATIBILITY IDEOGRAPH-2F881
-2F882 CJK COMPATIBILITY IDEOGRAPH-2F882
-2F883 CJK COMPATIBILITY IDEOGRAPH-2F883
-2F884 CJK COMPATIBILITY IDEOGRAPH-2F884
-2F885 CJK COMPATIBILITY IDEOGRAPH-2F885
-2F886 CJK COMPATIBILITY IDEOGRAPH-2F886
-2F887 CJK COMPATIBILITY IDEOGRAPH-2F887
-2F888 CJK COMPATIBILITY IDEOGRAPH-2F888
-2F889 CJK COMPATIBILITY IDEOGRAPH-2F889
-2F88A CJK COMPATIBILITY IDEOGRAPH-2F88A
-2F88B CJK COMPATIBILITY IDEOGRAPH-2F88B
-2F88C CJK COMPATIBILITY IDEOGRAPH-2F88C
-2F88D CJK COMPATIBILITY IDEOGRAPH-2F88D
-2F88E CJK COMPATIBILITY IDEOGRAPH-2F88E
-2F88F CJK COMPATIBILITY IDEOGRAPH-2F88F
-2F890 CJK COMPATIBILITY IDEOGRAPH-2F890
-2F891 CJK COMPATIBILITY IDEOGRAPH-2F891
-2F892 CJK COMPATIBILITY IDEOGRAPH-2F892
-2F893 CJK COMPATIBILITY IDEOGRAPH-2F893
-2F894 CJK COMPATIBILITY IDEOGRAPH-2F894
-2F895 CJK COMPATIBILITY IDEOGRAPH-2F895
-2F896 CJK COMPATIBILITY IDEOGRAPH-2F896
-2F897 CJK COMPATIBILITY IDEOGRAPH-2F897
-2F898 CJK COMPATIBILITY IDEOGRAPH-2F898
-2F899 CJK COMPATIBILITY IDEOGRAPH-2F899
-2F89A CJK COMPATIBILITY IDEOGRAPH-2F89A
-2F89B CJK COMPATIBILITY IDEOGRAPH-2F89B
-2F89C CJK COMPATIBILITY IDEOGRAPH-2F89C
-2F89D CJK COMPATIBILITY IDEOGRAPH-2F89D
-2F89E CJK COMPATIBILITY IDEOGRAPH-2F89E
-2F89F CJK COMPATIBILITY IDEOGRAPH-2F89F
-2F8A0 CJK COMPATIBILITY IDEOGRAPH-2F8A0
-2F8A1 CJK COMPATIBILITY IDEOGRAPH-2F8A1
-2F8A2 CJK COMPATIBILITY IDEOGRAPH-2F8A2
-2F8A3 CJK COMPATIBILITY IDEOGRAPH-2F8A3
-2F8A4 CJK COMPATIBILITY IDEOGRAPH-2F8A4
-2F8A5 CJK COMPATIBILITY IDEOGRAPH-2F8A5
-2F8A6 CJK COMPATIBILITY IDEOGRAPH-2F8A6
-2F8A7 CJK COMPATIBILITY IDEOGRAPH-2F8A7
-2F8A8 CJK COMPATIBILITY IDEOGRAPH-2F8A8
-2F8A9 CJK COMPATIBILITY IDEOGRAPH-2F8A9
-2F8AA CJK COMPATIBILITY IDEOGRAPH-2F8AA
-2F8AB CJK COMPATIBILITY IDEOGRAPH-2F8AB
-2F8AC CJK COMPATIBILITY IDEOGRAPH-2F8AC
-2F8AD CJK COMPATIBILITY IDEOGRAPH-2F8AD
-2F8AE CJK COMPATIBILITY IDEOGRAPH-2F8AE
-2F8AF CJK COMPATIBILITY IDEOGRAPH-2F8AF
-2F8B0 CJK COMPATIBILITY IDEOGRAPH-2F8B0
-2F8B1 CJK COMPATIBILITY IDEOGRAPH-2F8B1
-2F8B2 CJK COMPATIBILITY IDEOGRAPH-2F8B2
-2F8B3 CJK COMPATIBILITY IDEOGRAPH-2F8B3
-2F8B4 CJK COMPATIBILITY IDEOGRAPH-2F8B4
-2F8B5 CJK COMPATIBILITY IDEOGRAPH-2F8B5
-2F8B6 CJK COMPATIBILITY IDEOGRAPH-2F8B6
-2F8B7 CJK COMPATIBILITY IDEOGRAPH-2F8B7
-2F8B8 CJK COMPATIBILITY IDEOGRAPH-2F8B8
-2F8B9 CJK COMPATIBILITY IDEOGRAPH-2F8B9
-2F8BA CJK COMPATIBILITY IDEOGRAPH-2F8BA
-2F8BB CJK COMPATIBILITY IDEOGRAPH-2F8BB
-2F8BC CJK COMPATIBILITY IDEOGRAPH-2F8BC
-2F8BD CJK COMPATIBILITY IDEOGRAPH-2F8BD
-2F8BE CJK COMPATIBILITY IDEOGRAPH-2F8BE
-2F8BF CJK COMPATIBILITY IDEOGRAPH-2F8BF
-2F8C0 CJK COMPATIBILITY IDEOGRAPH-2F8C0
-2F8C1 CJK COMPATIBILITY IDEOGRAPH-2F8C1
-2F8C2 CJK COMPATIBILITY IDEOGRAPH-2F8C2
-2F8C3 CJK COMPATIBILITY IDEOGRAPH-2F8C3
-2F8C4 CJK COMPATIBILITY IDEOGRAPH-2F8C4
-2F8C5 CJK COMPATIBILITY IDEOGRAPH-2F8C5
-2F8C6 CJK COMPATIBILITY IDEOGRAPH-2F8C6
-2F8C7 CJK COMPATIBILITY IDEOGRAPH-2F8C7
-2F8C8 CJK COMPATIBILITY IDEOGRAPH-2F8C8
-2F8C9 CJK COMPATIBILITY IDEOGRAPH-2F8C9
-2F8CA CJK COMPATIBILITY IDEOGRAPH-2F8CA
-2F8CB CJK COMPATIBILITY IDEOGRAPH-2F8CB
-2F8CC CJK COMPATIBILITY IDEOGRAPH-2F8CC
-2F8CD CJK COMPATIBILITY IDEOGRAPH-2F8CD
-2F8CE CJK COMPATIBILITY IDEOGRAPH-2F8CE
-2F8CF CJK COMPATIBILITY IDEOGRAPH-2F8CF
-2F8D0 CJK COMPATIBILITY IDEOGRAPH-2F8D0
-2F8D1 CJK COMPATIBILITY IDEOGRAPH-2F8D1
-2F8D2 CJK COMPATIBILITY IDEOGRAPH-2F8D2
-2F8D3 CJK COMPATIBILITY IDEOGRAPH-2F8D3
-2F8D4 CJK COMPATIBILITY IDEOGRAPH-2F8D4
-2F8D5 CJK COMPATIBILITY IDEOGRAPH-2F8D5
-2F8D6 CJK COMPATIBILITY IDEOGRAPH-2F8D6
-2F8D7 CJK COMPATIBILITY IDEOGRAPH-2F8D7
-2F8D8 CJK COMPATIBILITY IDEOGRAPH-2F8D8
-2F8D9 CJK COMPATIBILITY IDEOGRAPH-2F8D9
-2F8DA CJK COMPATIBILITY IDEOGRAPH-2F8DA
-2F8DB CJK COMPATIBILITY IDEOGRAPH-2F8DB
-2F8DC CJK COMPATIBILITY IDEOGRAPH-2F8DC
-2F8DD CJK COMPATIBILITY IDEOGRAPH-2F8DD
-2F8DE CJK COMPATIBILITY IDEOGRAPH-2F8DE
-2F8DF CJK COMPATIBILITY IDEOGRAPH-2F8DF
-2F8E0 CJK COMPATIBILITY IDEOGRAPH-2F8E0
-2F8E1 CJK COMPATIBILITY IDEOGRAPH-2F8E1
-2F8E2 CJK COMPATIBILITY IDEOGRAPH-2F8E2
-2F8E3 CJK COMPATIBILITY IDEOGRAPH-2F8E3
-2F8E4 CJK COMPATIBILITY IDEOGRAPH-2F8E4
-2F8E5 CJK COMPATIBILITY IDEOGRAPH-2F8E5
-2F8E6 CJK COMPATIBILITY IDEOGRAPH-2F8E6
-2F8E7 CJK COMPATIBILITY IDEOGRAPH-2F8E7
-2F8E8 CJK COMPATIBILITY IDEOGRAPH-2F8E8
-2F8E9 CJK COMPATIBILITY IDEOGRAPH-2F8E9
-2F8EA CJK COMPATIBILITY IDEOGRAPH-2F8EA
-2F8EB CJK COMPATIBILITY IDEOGRAPH-2F8EB
-2F8EC CJK COMPATIBILITY IDEOGRAPH-2F8EC
-2F8ED CJK COMPATIBILITY IDEOGRAPH-2F8ED
-2F8EE CJK COMPATIBILITY IDEOGRAPH-2F8EE
-2F8EF CJK COMPATIBILITY IDEOGRAPH-2F8EF
-2F8F0 CJK COMPATIBILITY IDEOGRAPH-2F8F0
-2F8F1 CJK COMPATIBILITY IDEOGRAPH-2F8F1
-2F8F2 CJK COMPATIBILITY IDEOGRAPH-2F8F2
-2F8F3 CJK COMPATIBILITY IDEOGRAPH-2F8F3
-2F8F4 CJK COMPATIBILITY IDEOGRAPH-2F8F4
-2F8F5 CJK COMPATIBILITY IDEOGRAPH-2F8F5
-2F8F6 CJK COMPATIBILITY IDEOGRAPH-2F8F6
-2F8F7 CJK COMPATIBILITY IDEOGRAPH-2F8F7
-2F8F8 CJK COMPATIBILITY IDEOGRAPH-2F8F8
-2F8F9 CJK COMPATIBILITY IDEOGRAPH-2F8F9
-2F8FA CJK COMPATIBILITY IDEOGRAPH-2F8FA
-2F8FB CJK COMPATIBILITY IDEOGRAPH-2F8FB
-2F8FC CJK COMPATIBILITY IDEOGRAPH-2F8FC
-2F8FD CJK COMPATIBILITY IDEOGRAPH-2F8FD
-2F8FE CJK COMPATIBILITY IDEOGRAPH-2F8FE
-2F8FF CJK COMPATIBILITY IDEOGRAPH-2F8FF
-2F900 CJK COMPATIBILITY IDEOGRAPH-2F900
-2F901 CJK COMPATIBILITY IDEOGRAPH-2F901
-2F902 CJK COMPATIBILITY IDEOGRAPH-2F902
-2F903 CJK COMPATIBILITY IDEOGRAPH-2F903
-2F904 CJK COMPATIBILITY IDEOGRAPH-2F904
-2F905 CJK COMPATIBILITY IDEOGRAPH-2F905
-2F906 CJK COMPATIBILITY IDEOGRAPH-2F906
-2F907 CJK COMPATIBILITY IDEOGRAPH-2F907
-2F908 CJK COMPATIBILITY IDEOGRAPH-2F908
-2F909 CJK COMPATIBILITY IDEOGRAPH-2F909
-2F90A CJK COMPATIBILITY IDEOGRAPH-2F90A
-2F90B CJK COMPATIBILITY IDEOGRAPH-2F90B
-2F90C CJK COMPATIBILITY IDEOGRAPH-2F90C
-2F90D CJK COMPATIBILITY IDEOGRAPH-2F90D
-2F90E CJK COMPATIBILITY IDEOGRAPH-2F90E
-2F90F CJK COMPATIBILITY IDEOGRAPH-2F90F
-2F910 CJK COMPATIBILITY IDEOGRAPH-2F910
-2F911 CJK COMPATIBILITY IDEOGRAPH-2F911
-2F912 CJK COMPATIBILITY IDEOGRAPH-2F912
-2F913 CJK COMPATIBILITY IDEOGRAPH-2F913
-2F914 CJK COMPATIBILITY IDEOGRAPH-2F914
-2F915 CJK COMPATIBILITY IDEOGRAPH-2F915
-2F916 CJK COMPATIBILITY IDEOGRAPH-2F916
-2F917 CJK COMPATIBILITY IDEOGRAPH-2F917
-2F918 CJK COMPATIBILITY IDEOGRAPH-2F918
-2F919 CJK COMPATIBILITY IDEOGRAPH-2F919
-2F91A CJK COMPATIBILITY IDEOGRAPH-2F91A
-2F91B CJK COMPATIBILITY IDEOGRAPH-2F91B
-2F91C CJK COMPATIBILITY IDEOGRAPH-2F91C
-2F91D CJK COMPATIBILITY IDEOGRAPH-2F91D
-2F91E CJK COMPATIBILITY IDEOGRAPH-2F91E
-2F91F CJK COMPATIBILITY IDEOGRAPH-2F91F
-2F920 CJK COMPATIBILITY IDEOGRAPH-2F920
-2F921 CJK COMPATIBILITY IDEOGRAPH-2F921
-2F922 CJK COMPATIBILITY IDEOGRAPH-2F922
-2F923 CJK COMPATIBILITY IDEOGRAPH-2F923
-2F924 CJK COMPATIBILITY IDEOGRAPH-2F924
-2F925 CJK COMPATIBILITY IDEOGRAPH-2F925
-2F926 CJK COMPATIBILITY IDEOGRAPH-2F926
-2F927 CJK COMPATIBILITY IDEOGRAPH-2F927
-2F928 CJK COMPATIBILITY IDEOGRAPH-2F928
-2F929 CJK COMPATIBILITY IDEOGRAPH-2F929
-2F92A CJK COMPATIBILITY IDEOGRAPH-2F92A
-2F92B CJK COMPATIBILITY IDEOGRAPH-2F92B
-2F92C CJK COMPATIBILITY IDEOGRAPH-2F92C
-2F92D CJK COMPATIBILITY IDEOGRAPH-2F92D
-2F92E CJK COMPATIBILITY IDEOGRAPH-2F92E
-2F92F CJK COMPATIBILITY IDEOGRAPH-2F92F
-2F930 CJK COMPATIBILITY IDEOGRAPH-2F930
-2F931 CJK COMPATIBILITY IDEOGRAPH-2F931
-2F932 CJK COMPATIBILITY IDEOGRAPH-2F932
-2F933 CJK COMPATIBILITY IDEOGRAPH-2F933
-2F934 CJK COMPATIBILITY IDEOGRAPH-2F934
-2F935 CJK COMPATIBILITY IDEOGRAPH-2F935
-2F936 CJK COMPATIBILITY IDEOGRAPH-2F936
-2F937 CJK COMPATIBILITY IDEOGRAPH-2F937
-2F938 CJK COMPATIBILITY IDEOGRAPH-2F938
-2F939 CJK COMPATIBILITY IDEOGRAPH-2F939
-2F93A CJK COMPATIBILITY IDEOGRAPH-2F93A
-2F93B CJK COMPATIBILITY IDEOGRAPH-2F93B
-2F93C CJK COMPATIBILITY IDEOGRAPH-2F93C
-2F93D CJK COMPATIBILITY IDEOGRAPH-2F93D
-2F93E CJK COMPATIBILITY IDEOGRAPH-2F93E
-2F93F CJK COMPATIBILITY IDEOGRAPH-2F93F
-2F940 CJK COMPATIBILITY IDEOGRAPH-2F940
-2F941 CJK COMPATIBILITY IDEOGRAPH-2F941
-2F942 CJK COMPATIBILITY IDEOGRAPH-2F942
-2F943 CJK COMPATIBILITY IDEOGRAPH-2F943
-2F944 CJK COMPATIBILITY IDEOGRAPH-2F944
-2F945 CJK COMPATIBILITY IDEOGRAPH-2F945
-2F946 CJK COMPATIBILITY IDEOGRAPH-2F946
-2F947 CJK COMPATIBILITY IDEOGRAPH-2F947
-2F948 CJK COMPATIBILITY IDEOGRAPH-2F948
-2F949 CJK COMPATIBILITY IDEOGRAPH-2F949
-2F94A CJK COMPATIBILITY IDEOGRAPH-2F94A
-2F94B CJK COMPATIBILITY IDEOGRAPH-2F94B
-2F94C CJK COMPATIBILITY IDEOGRAPH-2F94C
-2F94D CJK COMPATIBILITY IDEOGRAPH-2F94D
-2F94E CJK COMPATIBILITY IDEOGRAPH-2F94E
-2F94F CJK COMPATIBILITY IDEOGRAPH-2F94F
-2F950 CJK COMPATIBILITY IDEOGRAPH-2F950
-2F951 CJK COMPATIBILITY IDEOGRAPH-2F951
-2F952 CJK COMPATIBILITY IDEOGRAPH-2F952
-2F953 CJK COMPATIBILITY IDEOGRAPH-2F953
-2F954 CJK COMPATIBILITY IDEOGRAPH-2F954
-2F955 CJK COMPATIBILITY IDEOGRAPH-2F955
-2F956 CJK COMPATIBILITY IDEOGRAPH-2F956
-2F957 CJK COMPATIBILITY IDEOGRAPH-2F957
-2F958 CJK COMPATIBILITY IDEOGRAPH-2F958
-2F959 CJK COMPATIBILITY IDEOGRAPH-2F959
-2F95A CJK COMPATIBILITY IDEOGRAPH-2F95A
-2F95B CJK COMPATIBILITY IDEOGRAPH-2F95B
-2F95C CJK COMPATIBILITY IDEOGRAPH-2F95C
-2F95D CJK COMPATIBILITY IDEOGRAPH-2F95D
-2F95E CJK COMPATIBILITY IDEOGRAPH-2F95E
-2F95F CJK COMPATIBILITY IDEOGRAPH-2F95F
-2F960 CJK COMPATIBILITY IDEOGRAPH-2F960
-2F961 CJK COMPATIBILITY IDEOGRAPH-2F961
-2F962 CJK COMPATIBILITY IDEOGRAPH-2F962
-2F963 CJK COMPATIBILITY IDEOGRAPH-2F963
-2F964 CJK COMPATIBILITY IDEOGRAPH-2F964
-2F965 CJK COMPATIBILITY IDEOGRAPH-2F965
-2F966 CJK COMPATIBILITY IDEOGRAPH-2F966
-2F967 CJK COMPATIBILITY IDEOGRAPH-2F967
-2F968 CJK COMPATIBILITY IDEOGRAPH-2F968
-2F969 CJK COMPATIBILITY IDEOGRAPH-2F969
-2F96A CJK COMPATIBILITY IDEOGRAPH-2F96A
-2F96B CJK COMPATIBILITY IDEOGRAPH-2F96B
-2F96C CJK COMPATIBILITY IDEOGRAPH-2F96C
-2F96D CJK COMPATIBILITY IDEOGRAPH-2F96D
-2F96E CJK COMPATIBILITY IDEOGRAPH-2F96E
-2F96F CJK COMPATIBILITY IDEOGRAPH-2F96F
-2F970 CJK COMPATIBILITY IDEOGRAPH-2F970
-2F971 CJK COMPATIBILITY IDEOGRAPH-2F971
-2F972 CJK COMPATIBILITY IDEOGRAPH-2F972
-2F973 CJK COMPATIBILITY IDEOGRAPH-2F973
-2F974 CJK COMPATIBILITY IDEOGRAPH-2F974
-2F975 CJK COMPATIBILITY IDEOGRAPH-2F975
-2F976 CJK COMPATIBILITY IDEOGRAPH-2F976
-2F977 CJK COMPATIBILITY IDEOGRAPH-2F977
-2F978 CJK COMPATIBILITY IDEOGRAPH-2F978
-2F979 CJK COMPATIBILITY IDEOGRAPH-2F979
-2F97A CJK COMPATIBILITY IDEOGRAPH-2F97A
-2F97B CJK COMPATIBILITY IDEOGRAPH-2F97B
-2F97C CJK COMPATIBILITY IDEOGRAPH-2F97C
-2F97D CJK COMPATIBILITY IDEOGRAPH-2F97D
-2F97E CJK COMPATIBILITY IDEOGRAPH-2F97E
-2F97F CJK COMPATIBILITY IDEOGRAPH-2F97F
-2F980 CJK COMPATIBILITY IDEOGRAPH-2F980
-2F981 CJK COMPATIBILITY IDEOGRAPH-2F981
-2F982 CJK COMPATIBILITY IDEOGRAPH-2F982
-2F983 CJK COMPATIBILITY IDEOGRAPH-2F983
-2F984 CJK COMPATIBILITY IDEOGRAPH-2F984
-2F985 CJK COMPATIBILITY IDEOGRAPH-2F985
-2F986 CJK COMPATIBILITY IDEOGRAPH-2F986
-2F987 CJK COMPATIBILITY IDEOGRAPH-2F987
-2F988 CJK COMPATIBILITY IDEOGRAPH-2F988
-2F989 CJK COMPATIBILITY IDEOGRAPH-2F989
-2F98A CJK COMPATIBILITY IDEOGRAPH-2F98A
-2F98B CJK COMPATIBILITY IDEOGRAPH-2F98B
-2F98C CJK COMPATIBILITY IDEOGRAPH-2F98C
-2F98D CJK COMPATIBILITY IDEOGRAPH-2F98D
-2F98E CJK COMPATIBILITY IDEOGRAPH-2F98E
-2F98F CJK COMPATIBILITY IDEOGRAPH-2F98F
-2F990 CJK COMPATIBILITY IDEOGRAPH-2F990
-2F991 CJK COMPATIBILITY IDEOGRAPH-2F991
-2F992 CJK COMPATIBILITY IDEOGRAPH-2F992
-2F993 CJK COMPATIBILITY IDEOGRAPH-2F993
-2F994 CJK COMPATIBILITY IDEOGRAPH-2F994
-2F995 CJK COMPATIBILITY IDEOGRAPH-2F995
-2F996 CJK COMPATIBILITY IDEOGRAPH-2F996
-2F997 CJK COMPATIBILITY IDEOGRAPH-2F997
-2F998 CJK COMPATIBILITY IDEOGRAPH-2F998
-2F999 CJK COMPATIBILITY IDEOGRAPH-2F999
-2F99A CJK COMPATIBILITY IDEOGRAPH-2F99A
-2F99B CJK COMPATIBILITY IDEOGRAPH-2F99B
-2F99C CJK COMPATIBILITY IDEOGRAPH-2F99C
-2F99D CJK COMPATIBILITY IDEOGRAPH-2F99D
-2F99E CJK COMPATIBILITY IDEOGRAPH-2F99E
-2F99F CJK COMPATIBILITY IDEOGRAPH-2F99F
-2F9A0 CJK COMPATIBILITY IDEOGRAPH-2F9A0
-2F9A1 CJK COMPATIBILITY IDEOGRAPH-2F9A1
-2F9A2 CJK COMPATIBILITY IDEOGRAPH-2F9A2
-2F9A3 CJK COMPATIBILITY IDEOGRAPH-2F9A3
-2F9A4 CJK COMPATIBILITY IDEOGRAPH-2F9A4
-2F9A5 CJK COMPATIBILITY IDEOGRAPH-2F9A5
-2F9A6 CJK COMPATIBILITY IDEOGRAPH-2F9A6
-2F9A7 CJK COMPATIBILITY IDEOGRAPH-2F9A7
-2F9A8 CJK COMPATIBILITY IDEOGRAPH-2F9A8
-2F9A9 CJK COMPATIBILITY IDEOGRAPH-2F9A9
-2F9AA CJK COMPATIBILITY IDEOGRAPH-2F9AA
-2F9AB CJK COMPATIBILITY IDEOGRAPH-2F9AB
-2F9AC CJK COMPATIBILITY IDEOGRAPH-2F9AC
-2F9AD CJK COMPATIBILITY IDEOGRAPH-2F9AD
-2F9AE CJK COMPATIBILITY IDEOGRAPH-2F9AE
-2F9AF CJK COMPATIBILITY IDEOGRAPH-2F9AF
-2F9B0 CJK COMPATIBILITY IDEOGRAPH-2F9B0
-2F9B1 CJK COMPATIBILITY IDEOGRAPH-2F9B1
-2F9B2 CJK COMPATIBILITY IDEOGRAPH-2F9B2
-2F9B3 CJK COMPATIBILITY IDEOGRAPH-2F9B3
-2F9B4 CJK COMPATIBILITY IDEOGRAPH-2F9B4
-2F9B5 CJK COMPATIBILITY IDEOGRAPH-2F9B5
-2F9B6 CJK COMPATIBILITY IDEOGRAPH-2F9B6
-2F9B7 CJK COMPATIBILITY IDEOGRAPH-2F9B7
-2F9B8 CJK COMPATIBILITY IDEOGRAPH-2F9B8
-2F9B9 CJK COMPATIBILITY IDEOGRAPH-2F9B9
-2F9BA CJK COMPATIBILITY IDEOGRAPH-2F9BA
-2F9BB CJK COMPATIBILITY IDEOGRAPH-2F9BB
-2F9BC CJK COMPATIBILITY IDEOGRAPH-2F9BC
-2F9BD CJK COMPATIBILITY IDEOGRAPH-2F9BD
-2F9BE CJK COMPATIBILITY IDEOGRAPH-2F9BE
-2F9BF CJK COMPATIBILITY IDEOGRAPH-2F9BF
-2F9C0 CJK COMPATIBILITY IDEOGRAPH-2F9C0
-2F9C1 CJK COMPATIBILITY IDEOGRAPH-2F9C1
-2F9C2 CJK COMPATIBILITY IDEOGRAPH-2F9C2
-2F9C3 CJK COMPATIBILITY IDEOGRAPH-2F9C3
-2F9C4 CJK COMPATIBILITY IDEOGRAPH-2F9C4
-2F9C5 CJK COMPATIBILITY IDEOGRAPH-2F9C5
-2F9C6 CJK COMPATIBILITY IDEOGRAPH-2F9C6
-2F9C7 CJK COMPATIBILITY IDEOGRAPH-2F9C7
-2F9C8 CJK COMPATIBILITY IDEOGRAPH-2F9C8
-2F9C9 CJK COMPATIBILITY IDEOGRAPH-2F9C9
-2F9CA CJK COMPATIBILITY IDEOGRAPH-2F9CA
-2F9CB CJK COMPATIBILITY IDEOGRAPH-2F9CB
-2F9CC CJK COMPATIBILITY IDEOGRAPH-2F9CC
-2F9CD CJK COMPATIBILITY IDEOGRAPH-2F9CD
-2F9CE CJK COMPATIBILITY IDEOGRAPH-2F9CE
-2F9CF CJK COMPATIBILITY IDEOGRAPH-2F9CF
-2F9D0 CJK COMPATIBILITY IDEOGRAPH-2F9D0
-2F9D1 CJK COMPATIBILITY IDEOGRAPH-2F9D1
-2F9D2 CJK COMPATIBILITY IDEOGRAPH-2F9D2
-2F9D3 CJK COMPATIBILITY IDEOGRAPH-2F9D3
-2F9D4 CJK COMPATIBILITY IDEOGRAPH-2F9D4
-2F9D5 CJK COMPATIBILITY IDEOGRAPH-2F9D5
-2F9D6 CJK COMPATIBILITY IDEOGRAPH-2F9D6
-2F9D7 CJK COMPATIBILITY IDEOGRAPH-2F9D7
-2F9D8 CJK COMPATIBILITY IDEOGRAPH-2F9D8
-2F9D9 CJK COMPATIBILITY IDEOGRAPH-2F9D9
-2F9DA CJK COMPATIBILITY IDEOGRAPH-2F9DA
-2F9DB CJK COMPATIBILITY IDEOGRAPH-2F9DB
-2F9DC CJK COMPATIBILITY IDEOGRAPH-2F9DC
-2F9DD CJK COMPATIBILITY IDEOGRAPH-2F9DD
-2F9DE CJK COMPATIBILITY IDEOGRAPH-2F9DE
-2F9DF CJK COMPATIBILITY IDEOGRAPH-2F9DF
-2F9E0 CJK COMPATIBILITY IDEOGRAPH-2F9E0
-2F9E1 CJK COMPATIBILITY IDEOGRAPH-2F9E1
-2F9E2 CJK COMPATIBILITY IDEOGRAPH-2F9E2
-2F9E3 CJK COMPATIBILITY IDEOGRAPH-2F9E3
-2F9E4 CJK COMPATIBILITY IDEOGRAPH-2F9E4
-2F9E5 CJK COMPATIBILITY IDEOGRAPH-2F9E5
-2F9E6 CJK COMPATIBILITY IDEOGRAPH-2F9E6
-2F9E7 CJK COMPATIBILITY IDEOGRAPH-2F9E7
-2F9E8 CJK COMPATIBILITY IDEOGRAPH-2F9E8
-2F9E9 CJK COMPATIBILITY IDEOGRAPH-2F9E9
-2F9EA CJK COMPATIBILITY IDEOGRAPH-2F9EA
-2F9EB CJK COMPATIBILITY IDEOGRAPH-2F9EB
-2F9EC CJK COMPATIBILITY IDEOGRAPH-2F9EC
-2F9ED CJK COMPATIBILITY IDEOGRAPH-2F9ED
-2F9EE CJK COMPATIBILITY IDEOGRAPH-2F9EE
-2F9EF CJK COMPATIBILITY IDEOGRAPH-2F9EF
-2F9F0 CJK COMPATIBILITY IDEOGRAPH-2F9F0
-2F9F1 CJK COMPATIBILITY IDEOGRAPH-2F9F1
-2F9F2 CJK COMPATIBILITY IDEOGRAPH-2F9F2
-2F9F3 CJK COMPATIBILITY IDEOGRAPH-2F9F3
-2F9F4 CJK COMPATIBILITY IDEOGRAPH-2F9F4
-2F9F5 CJK COMPATIBILITY IDEOGRAPH-2F9F5
-2F9F6 CJK COMPATIBILITY IDEOGRAPH-2F9F6
-2F9F7 CJK COMPATIBILITY IDEOGRAPH-2F9F7
-2F9F8 CJK COMPATIBILITY IDEOGRAPH-2F9F8
-2F9F9 CJK COMPATIBILITY IDEOGRAPH-2F9F9
-2F9FA CJK COMPATIBILITY IDEOGRAPH-2F9FA
-2F9FB CJK COMPATIBILITY IDEOGRAPH-2F9FB
-2F9FC CJK COMPATIBILITY IDEOGRAPH-2F9FC
-2F9FD CJK COMPATIBILITY IDEOGRAPH-2F9FD
-2F9FE CJK COMPATIBILITY IDEOGRAPH-2F9FE
-2F9FF CJK COMPATIBILITY IDEOGRAPH-2F9FF
-2FA00 CJK COMPATIBILITY IDEOGRAPH-2FA00
-2FA01 CJK COMPATIBILITY IDEOGRAPH-2FA01
-2FA02 CJK COMPATIBILITY IDEOGRAPH-2FA02
-2FA03 CJK COMPATIBILITY IDEOGRAPH-2FA03
-2FA04 CJK COMPATIBILITY IDEOGRAPH-2FA04
-2FA05 CJK COMPATIBILITY IDEOGRAPH-2FA05
-2FA06 CJK COMPATIBILITY IDEOGRAPH-2FA06
-2FA07 CJK COMPATIBILITY IDEOGRAPH-2FA07
-2FA08 CJK COMPATIBILITY IDEOGRAPH-2FA08
-2FA09 CJK COMPATIBILITY IDEOGRAPH-2FA09
-2FA0A CJK COMPATIBILITY IDEOGRAPH-2FA0A
-2FA0B CJK COMPATIBILITY IDEOGRAPH-2FA0B
-2FA0C CJK COMPATIBILITY IDEOGRAPH-2FA0C
-2FA0D CJK COMPATIBILITY IDEOGRAPH-2FA0D
-2FA0E CJK COMPATIBILITY IDEOGRAPH-2FA0E
-2FA0F CJK COMPATIBILITY IDEOGRAPH-2FA0F
-2FA10 CJK COMPATIBILITY IDEOGRAPH-2FA10
-2FA11 CJK COMPATIBILITY IDEOGRAPH-2FA11
-2FA12 CJK COMPATIBILITY IDEOGRAPH-2FA12
-2FA13 CJK COMPATIBILITY IDEOGRAPH-2FA13
-2FA14 CJK COMPATIBILITY IDEOGRAPH-2FA14
-2FA15 CJK COMPATIBILITY IDEOGRAPH-2FA15
-2FA16 CJK COMPATIBILITY IDEOGRAPH-2FA16
-2FA17 CJK COMPATIBILITY IDEOGRAPH-2FA17
-2FA18 CJK COMPATIBILITY IDEOGRAPH-2FA18
-2FA19 CJK COMPATIBILITY IDEOGRAPH-2FA19
-2FA1A CJK COMPATIBILITY IDEOGRAPH-2FA1A
-2FA1B CJK COMPATIBILITY IDEOGRAPH-2FA1B
-2FA1C CJK COMPATIBILITY IDEOGRAPH-2FA1C
-2FA1D CJK COMPATIBILITY IDEOGRAPH-2FA1D
-E0001 LANGUAGE TAG
-E0020 TAG SPACE
-E0021 TAG EXCLAMATION MARK
-E0022 TAG QUOTATION MARK
-E0023 TAG NUMBER SIGN
-E0024 TAG DOLLAR SIGN
-E0025 TAG PERCENT SIGN
-E0026 TAG AMPERSAND
-E0027 TAG APOSTROPHE
-E0028 TAG LEFT PARENTHESIS
-E0029 TAG RIGHT PARENTHESIS
-E002A TAG ASTERISK
-E002B TAG PLUS SIGN
-E002C TAG COMMA
-E002D TAG HYPHEN-MINUS
-E002E TAG FULL STOP
-E002F TAG SOLIDUS
-E0030 TAG DIGIT ZERO
-E0031 TAG DIGIT ONE
-E0032 TAG DIGIT TWO
-E0033 TAG DIGIT THREE
-E0034 TAG DIGIT FOUR
-E0035 TAG DIGIT FIVE
-E0036 TAG DIGIT SIX
-E0037 TAG DIGIT SEVEN
-E0038 TAG DIGIT EIGHT
-E0039 TAG DIGIT NINE
-E003A TAG COLON
-E003B TAG SEMICOLON
-E003C TAG LESS-THAN SIGN
-E003D TAG EQUALS SIGN
-E003E TAG GREATER-THAN SIGN
-E003F TAG QUESTION MARK
-E0040 TAG COMMERCIAL AT
-E0041 TAG LATIN CAPITAL LETTER A
-E0042 TAG LATIN CAPITAL LETTER B
-E0043 TAG LATIN CAPITAL LETTER C
-E0044 TAG LATIN CAPITAL LETTER D
-E0045 TAG LATIN CAPITAL LETTER E
-E0046 TAG LATIN CAPITAL LETTER F
-E0047 TAG LATIN CAPITAL LETTER G
-E0048 TAG LATIN CAPITAL LETTER H
-E0049 TAG LATIN CAPITAL LETTER I
-E004A TAG LATIN CAPITAL LETTER J
-E004B TAG LATIN CAPITAL LETTER K
-E004C TAG LATIN CAPITAL LETTER L
-E004D TAG LATIN CAPITAL LETTER M
-E004E TAG LATIN CAPITAL LETTER N
-E004F TAG LATIN CAPITAL LETTER O
-E0050 TAG LATIN CAPITAL LETTER P
-E0051 TAG LATIN CAPITAL LETTER Q
-E0052 TAG LATIN CAPITAL LETTER R
-E0053 TAG LATIN CAPITAL LETTER S
-E0054 TAG LATIN CAPITAL LETTER T
-E0055 TAG LATIN CAPITAL LETTER U
-E0056 TAG LATIN CAPITAL LETTER V
-E0057 TAG LATIN CAPITAL LETTER W
-E0058 TAG LATIN CAPITAL LETTER X
-E0059 TAG LATIN CAPITAL LETTER Y
-E005A TAG LATIN CAPITAL LETTER Z
-E005B TAG LEFT SQUARE BRACKET
-E005C TAG REVERSE SOLIDUS
-E005D TAG RIGHT SQUARE BRACKET
-E005E TAG CIRCUMFLEX ACCENT
-E005F TAG LOW LINE
-E0060 TAG GRAVE ACCENT
-E0061 TAG LATIN SMALL LETTER A
-E0062 TAG LATIN SMALL LETTER B
-E0063 TAG LATIN SMALL LETTER C
-E0064 TAG LATIN SMALL LETTER D
-E0065 TAG LATIN SMALL LETTER E
-E0066 TAG LATIN SMALL LETTER F
-E0067 TAG LATIN SMALL LETTER G
-E0068 TAG LATIN SMALL LETTER H
-E0069 TAG LATIN SMALL LETTER I
-E006A TAG LATIN SMALL LETTER J
-E006B TAG LATIN SMALL LETTER K
-E006C TAG LATIN SMALL LETTER L
-E006D TAG LATIN SMALL LETTER M
-E006E TAG LATIN SMALL LETTER N
-E006F TAG LATIN SMALL LETTER O
-E0070 TAG LATIN SMALL LETTER P
-E0071 TAG LATIN SMALL LETTER Q
-E0072 TAG LATIN SMALL LETTER R
-E0073 TAG LATIN SMALL LETTER S
-E0074 TAG LATIN SMALL LETTER T
-E0075 TAG LATIN SMALL LETTER U
-E0076 TAG LATIN SMALL LETTER V
-E0077 TAG LATIN SMALL LETTER W
-E0078 TAG LATIN SMALL LETTER X
-E0079 TAG LATIN SMALL LETTER Y
-E007A TAG LATIN SMALL LETTER Z
-E007B TAG LEFT CURLY BRACKET
-E007C TAG VERTICAL LINE
-E007D TAG RIGHT CURLY BRACKET
-E007E TAG TILDE
-E007F CANCEL TAG
-F0000 FFFFD Plane 15 Private Use
-100000 10FFFD Plane 16 Private Use
-END
diff --git a/Master/perltl/lib/unicore/Number.pl b/Master/perltl/lib/unicore/Number.pl
deleted file mode 100644
index 9bc4fd4663d..00000000000
--- a/Master/perltl/lib/unicore/Number.pl
+++ /dev/null
@@ -1,537 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# 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
-24EB 11
-24EC 12
-24ED 13
-24EE 14
-24EF 15
-24F0 16
-24F1 17
-24F2 18
-24F3 19
-24F4 20
-24F5 1
-24F6 2
-24F7 3
-24F8 4
-24F9 5
-24FA 6
-24FB 7
-24FC 8
-24FD 9
-24FE 10
-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
-3251 21
-3252 22
-3253 23
-3254 24
-3255 25
-3256 26
-3257 27
-3258 28
-3259 29
-325A 30
-325B 31
-325C 32
-325D 33
-325E 34
-325F 35
-3280 1
-3281 2
-3282 3
-3283 4
-3284 5
-3285 6
-3286 7
-3287 8
-3288 9
-3289 10
-32B1 36
-32B2 37
-32B3 38
-32B4 39
-32B5 40
-32B6 41
-32B7 42
-32B8 43
-32B9 44
-32BA 45
-32BB 46
-32BC 47
-32BD 48
-32BE 49
-32BF 50
-FF10 0
-FF11 1
-FF12 2
-FF13 3
-FF14 4
-FF15 5
-FF16 6
-FF17 7
-FF18 8
-FF19 9
-10320 1
-10321 5
-10322 10
-10323 50
-1D7CE 0
-1D7CF 1
-1D7D0 2
-1D7D1 3
-1D7D2 4
-1D7D3 5
-1D7D4 6
-1D7D5 7
-1D7D6 8
-1D7D7 9
-1D7D8 0
-1D7D9 1
-1D7DA 2
-1D7DB 3
-1D7DC 4
-1D7DD 5
-1D7DE 6
-1D7DF 7
-1D7E0 8
-1D7E1 9
-1D7E2 0
-1D7E3 1
-1D7E4 2
-1D7E5 3
-1D7E6 4
-1D7E7 5
-1D7E8 6
-1D7E9 7
-1D7EA 8
-1D7EB 9
-1D7EC 0
-1D7ED 1
-1D7EE 2
-1D7EF 3
-1D7F0 4
-1D7F1 5
-1D7F2 6
-1D7F3 7
-1D7F4 8
-1D7F5 9
-1D7F6 0
-1D7F7 1
-1D7F8 2
-1D7F9 3
-1D7FA 4
-1D7FB 5
-1D7FC 6
-1D7FD 7
-1D7FE 8
-1D7FF 9
-END
diff --git a/Master/perltl/lib/unicore/Scripts.pl b/Master/perltl/lib/unicore/Scripts.pl
deleted file mode 100644
index 4c99f029cc3..00000000000
--- a/Master/perltl/lib/unicore/Scripts.pl
+++ /dev/null
@@ -1,371 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-return <<'END';
-0041 005A LATIN
-0061 007A LATIN
-00AA LATIN
-00B5 GREEK
-00BA LATIN
-00C0 00D6 LATIN
-00D8 00F6 LATIN
-00F8 0220 LATIN
-0222 0233 LATIN
-0250 02AD LATIN
-02B0 02B8 LATIN
-02E0 02E4 LATIN
-0300 034F INHERITED
-0360 036F INHERITED
-037A GREEK
-0386 GREEK
-0388 038A GREEK
-038C GREEK
-038E 03A1 GREEK
-03A3 03CE GREEK
-03D0 03F5 GREEK
-0400 0481 CYRILLIC
-0483 0486 CYRILLIC
-0488 0489 INHERITED
-048A 04CE CYRILLIC
-04D0 04F5 CYRILLIC
-04F8 04F9 CYRILLIC
-0500 050F CYRILLIC
-0531 0556 ARMENIAN
-0559 ARMENIAN
-0561 0587 ARMENIAN
-0591 05A1 INHERITED
-05A3 05B9 INHERITED
-05BB 05BD INHERITED
-05BF INHERITED
-05C1 05C2 INHERITED
-05C4 INHERITED
-05D0 05EA HEBREW
-05F0 05F2 HEBREW
-0621 063A ARABIC
-0641 064A ARABIC
-064B 0655 INHERITED
-066E 066F ARABIC
-0670 INHERITED
-0671 06D3 ARABIC
-06D5 ARABIC
-06D6 06E4 INHERITED
-06E5 06E6 ARABIC
-06E7 06E8 INHERITED
-06EA 06ED INHERITED
-06FA 06FC ARABIC
-0710 072C SYRIAC
-0730 074A SYRIAC
-0780 07B1 THAANA
-0901 0903 DEVANAGARI
-0905 0939 DEVANAGARI
-093C 094D DEVANAGARI
-0950 0954 DEVANAGARI
-0958 0963 DEVANAGARI
-0966 096F DEVANAGARI
-0981 0983 BENGALI
-0985 098C BENGALI
-098F 0990 BENGALI
-0993 09A8 BENGALI
-09AA 09B0 BENGALI
-09B2 BENGALI
-09B6 09B9 BENGALI
-09BC BENGALI
-09BE 09C4 BENGALI
-09C7 09C8 BENGALI
-09CB 09CD BENGALI
-09D7 BENGALI
-09DC 09DD BENGALI
-09DF 09E3 BENGALI
-09E6 09F1 BENGALI
-0A02 GURMUKHI
-0A05 0A0A GURMUKHI
-0A0F 0A10 GURMUKHI
-0A13 0A28 GURMUKHI
-0A2A 0A30 GURMUKHI
-0A32 0A33 GURMUKHI
-0A35 0A36 GURMUKHI
-0A38 0A39 GURMUKHI
-0A3C GURMUKHI
-0A3E 0A42 GURMUKHI
-0A47 0A48 GURMUKHI
-0A4B 0A4D GURMUKHI
-0A59 0A5C GURMUKHI
-0A5E GURMUKHI
-0A66 0A74 GURMUKHI
-0A81 0A83 GUJARATI
-0A85 0A8B GUJARATI
-0A8D GUJARATI
-0A8F 0A91 GUJARATI
-0A93 0AA8 GUJARATI
-0AAA 0AB0 GUJARATI
-0AB2 0AB3 GUJARATI
-0AB5 0AB9 GUJARATI
-0ABC 0AC5 GUJARATI
-0AC7 0AC9 GUJARATI
-0ACB 0ACD GUJARATI
-0AD0 GUJARATI
-0AE0 GUJARATI
-0AE6 0AEF GUJARATI
-0B01 0B03 ORIYA
-0B05 0B0C ORIYA
-0B0F 0B10 ORIYA
-0B13 0B28 ORIYA
-0B2A 0B30 ORIYA
-0B32 0B33 ORIYA
-0B36 0B39 ORIYA
-0B3C 0B43 ORIYA
-0B47 0B48 ORIYA
-0B4B 0B4D ORIYA
-0B56 0B57 ORIYA
-0B5C 0B5D ORIYA
-0B5F 0B61 ORIYA
-0B66 0B6F ORIYA
-0B82 0B83 TAMIL
-0B85 0B8A TAMIL
-0B8E 0B90 TAMIL
-0B92 0B95 TAMIL
-0B99 0B9A TAMIL
-0B9C TAMIL
-0B9E 0B9F TAMIL
-0BA3 0BA4 TAMIL
-0BA8 0BAA TAMIL
-0BAE 0BB5 TAMIL
-0BB7 0BB9 TAMIL
-0BBE 0BC2 TAMIL
-0BC6 0BC8 TAMIL
-0BCA 0BCD TAMIL
-0BD7 TAMIL
-0BE7 0BF2 TAMIL
-0C01 0C03 TELUGU
-0C05 0C0C TELUGU
-0C0E 0C10 TELUGU
-0C12 0C28 TELUGU
-0C2A 0C33 TELUGU
-0C35 0C39 TELUGU
-0C3E 0C44 TELUGU
-0C46 0C48 TELUGU
-0C4A 0C4D TELUGU
-0C55 0C56 TELUGU
-0C60 0C61 TELUGU
-0C66 0C6F TELUGU
-0C82 0C83 KANNADA
-0C85 0C8C KANNADA
-0C8E 0C90 KANNADA
-0C92 0CA8 KANNADA
-0CAA 0CB3 KANNADA
-0CB5 0CB9 KANNADA
-0CBE 0CC4 KANNADA
-0CC6 0CC8 KANNADA
-0CCA 0CCD KANNADA
-0CD5 0CD6 KANNADA
-0CDE KANNADA
-0CE0 0CE1 KANNADA
-0CE6 0CEF KANNADA
-0D02 0D03 MALAYALAM
-0D05 0D0C MALAYALAM
-0D0E 0D10 MALAYALAM
-0D12 0D28 MALAYALAM
-0D2A 0D39 MALAYALAM
-0D3E 0D43 MALAYALAM
-0D46 0D48 MALAYALAM
-0D4A 0D4D MALAYALAM
-0D57 MALAYALAM
-0D60 0D61 MALAYALAM
-0D66 0D6F MALAYALAM
-0D82 0D83 SINHALA
-0D85 0D96 SINHALA
-0D9A 0DB1 SINHALA
-0DB3 0DBB SINHALA
-0DBD SINHALA
-0DC0 0DC6 SINHALA
-0DCA SINHALA
-0DCF 0DD4 SINHALA
-0DD6 SINHALA
-0DD8 0DDF SINHALA
-0DF2 0DF3 SINHALA
-0E01 0E3A THAI
-0E40 0E4E THAI
-0E50 0E59 THAI
-0E81 0E82 LAO
-0E84 LAO
-0E87 0E88 LAO
-0E8A LAO
-0E8D LAO
-0E94 0E97 LAO
-0E99 0E9F LAO
-0EA1 0EA3 LAO
-0EA5 LAO
-0EA7 LAO
-0EAA 0EAB LAO
-0EAD 0EB9 LAO
-0EBB 0EBD LAO
-0EC0 0EC4 LAO
-0EC6 LAO
-0EC8 0ECD LAO
-0ED0 0ED9 LAO
-0EDC 0EDD LAO
-0F00 TIBETAN
-0F18 0F19 TIBETAN
-0F20 0F33 TIBETAN
-0F35 TIBETAN
-0F37 TIBETAN
-0F39 TIBETAN
-0F40 0F47 TIBETAN
-0F49 0F6A TIBETAN
-0F71 0F84 TIBETAN
-0F86 0F8B TIBETAN
-0F90 0F97 TIBETAN
-0F99 0FBC TIBETAN
-0FC6 TIBETAN
-1000 1021 MYANMAR
-1023 1027 MYANMAR
-1029 102A MYANMAR
-102C 1032 MYANMAR
-1036 1039 MYANMAR
-1040 1049 MYANMAR
-1050 1059 MYANMAR
-10A0 10C5 GEORGIAN
-10D0 10F8 GEORGIAN
-1100 1159 HANGUL
-115F 11A2 HANGUL
-11A8 11F9 HANGUL
-1200 1206 ETHIOPIC
-1208 1246 ETHIOPIC
-1248 ETHIOPIC
-124A 124D ETHIOPIC
-1250 1256 ETHIOPIC
-1258 ETHIOPIC
-125A 125D ETHIOPIC
-1260 1286 ETHIOPIC
-1288 ETHIOPIC
-128A 128D ETHIOPIC
-1290 12AE ETHIOPIC
-12B0 ETHIOPIC
-12B2 12B5 ETHIOPIC
-12B8 12BE ETHIOPIC
-12C0 ETHIOPIC
-12C2 12C5 ETHIOPIC
-12C8 12CE ETHIOPIC
-12D0 12D6 ETHIOPIC
-12D8 12EE ETHIOPIC
-12F0 130E ETHIOPIC
-1310 ETHIOPIC
-1312 1315 ETHIOPIC
-1318 131E ETHIOPIC
-1320 1346 ETHIOPIC
-1348 135A ETHIOPIC
-1369 137C ETHIOPIC
-13A0 13F4 CHEROKEE
-1401 166C CANADIAN_ABORIGINAL
-166F 1676 CANADIAN_ABORIGINAL
-1681 169A OGHAM
-16A0 16EA RUNIC
-16EE 16F0 RUNIC
-1700 170C TAGALOG
-170E 1714 TAGALOG
-1720 1734 HANUNOO
-1740 1753 BUHID
-1760 176C TAGBANWA
-176E 1770 TAGBANWA
-1772 1773 TAGBANWA
-1780 17D3 KHMER
-17E0 17E9 KHMER
-180B 180D INHERITED
-1810 1819 MONGOLIAN
-1820 1877 MONGOLIAN
-1880 18A9 MONGOLIAN
-1E00 1E9B LATIN
-1EA0 1EF9 LATIN
-1F00 1F15 GREEK
-1F18 1F1D GREEK
-1F20 1F45 GREEK
-1F48 1F4D GREEK
-1F50 1F57 GREEK
-1F59 GREEK
-1F5B GREEK
-1F5D GREEK
-1F5F 1F7D GREEK
-1F80 1FB4 GREEK
-1FB6 1FBC GREEK
-1FBE GREEK
-1FC2 1FC4 GREEK
-1FC6 1FCC GREEK
-1FD0 1FD3 GREEK
-1FD6 1FDB GREEK
-1FE0 1FEC GREEK
-1FF2 1FF4 GREEK
-1FF6 1FFC GREEK
-2071 LATIN
-207F LATIN
-20D0 20EA INHERITED
-2126 GREEK
-212A 212B LATIN
-2E80 2E99 HAN
-2E9B 2EF3 HAN
-2F00 2FD5 HAN
-3005 HAN
-3007 HAN
-3021 3029 HAN
-302A 302F INHERITED
-3038 303B HAN
-3041 3096 HIRAGANA
-3099 309A INHERITED
-309D 309F HIRAGANA
-30A1 30FA KATAKANA
-30FD 30FF KATAKANA
-3105 312C BOPOMOFO
-3131 318E HANGUL
-31A0 31B7 BOPOMOFO
-31F0 31FF KATAKANA
-3400 4DB5 HAN
-4E00 9FA5 HAN
-A000 A48C YI
-A490 A4A1 YI
-A4A4 A4B3 YI
-A4B5 A4C0 YI
-A4C2 A4C4 YI
-A4C6 YI
-AC00 D7A3 HANGUL
-F900 FA2D HAN
-FA30 FA6A HAN
-FB00 FB06 LATIN
-FB13 FB17 ARMENIAN
-FB1D HEBREW
-FB1E INHERITED
-FB1F FB28 HEBREW
-FB2A FB36 HEBREW
-FB38 FB3C HEBREW
-FB3E HEBREW
-FB40 FB41 HEBREW
-FB43 FB44 HEBREW
-FB46 FB4F HEBREW
-FB50 FBB1 ARABIC
-FBD3 FD3D ARABIC
-FD50 FD8F ARABIC
-FD92 FDC7 ARABIC
-FDF0 FDFB ARABIC
-FE00 FE0F INHERITED
-FE20 FE23 INHERITED
-FE70 FE74 ARABIC
-FE76 FEFC ARABIC
-FF21 FF3A LATIN
-FF41 FF5A LATIN
-FF66 FF6F KATAKANA
-FF71 FF9D KATAKANA
-FFA0 FFBE HANGUL
-FFC2 FFC7 HANGUL
-FFCA FFCF HANGUL
-FFD2 FFD7 HANGUL
-FFDA FFDC HANGUL
-10300 1031E OLD_ITALIC
-10330 1034A GOTHIC
-10400 10425 DESERET
-10428 1044D DESERET
-1D167 1D169 INHERITED
-1D17B 1D182 INHERITED
-1D185 1D18B INHERITED
-1D1AA 1D1AD INHERITED
-20000 2A6D6 HAN
-2F800 2FA1D HAN
-END
diff --git a/Master/perltl/lib/unicore/To/Digit.pl b/Master/perltl/lib/unicore/To/Digit.pl
deleted file mode 100644
index e5c0ff429ea..00000000000
--- a/Master/perltl/lib/unicore/To/Digit.pl
+++ /dev/null
@@ -1,274 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# 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
-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
-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
-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
-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
-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
-FF10 0
-FF11 1
-FF12 2
-FF13 3
-FF14 4
-FF15 5
-FF16 6
-FF17 7
-FF18 8
-FF19 9
-1D7CE 0
-1D7CF 1
-1D7D0 2
-1D7D1 3
-1D7D2 4
-1D7D3 5
-1D7D4 6
-1D7D5 7
-1D7D6 8
-1D7D7 9
-1D7D8 0
-1D7D9 1
-1D7DA 2
-1D7DB 3
-1D7DC 4
-1D7DD 5
-1D7DE 6
-1D7DF 7
-1D7E0 8
-1D7E1 9
-1D7E2 0
-1D7E3 1
-1D7E4 2
-1D7E5 3
-1D7E6 4
-1D7E7 5
-1D7E8 6
-1D7E9 7
-1D7EA 8
-1D7EB 9
-1D7EC 0
-1D7ED 1
-1D7EE 2
-1D7EF 3
-1D7F0 4
-1D7F1 5
-1D7F2 6
-1D7F3 7
-1D7F4 8
-1D7F5 9
-1D7F6 0
-1D7F7 1
-1D7F8 2
-1D7F9 3
-1D7FA 4
-1D7FB 5
-1D7FC 6
-1D7FD 7
-1D7FE 8
-1D7FF 9
-END
diff --git a/Master/perltl/lib/unicore/To/Fold.pl b/Master/perltl/lib/unicore/To/Fold.pl
deleted file mode 100644
index 2a355ad6a39..00000000000
--- a/Master/perltl/lib/unicore/To/Fold.pl
+++ /dev/null
@@ -1,849 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-
-%utf8::ToSpecFold =
-(
-'00DF' => "\x{0073}\x{0073}",
-'0130' => "\x{0069}\x{0307}",
-'0149' => "\x{02BC}\x{006E}",
-'01F0' => "\x{006A}\x{030C}",
-'0390' => "\x{03B9}\x{0308}\x{0301}",
-'03B0' => "\x{03C5}\x{0308}\x{0301}",
-'0587' => "\x{0565}\x{0582}",
-'1E96' => "\x{0068}\x{0331}",
-'1E97' => "\x{0074}\x{0308}",
-'1E98' => "\x{0077}\x{030A}",
-'1E99' => "\x{0079}\x{030A}",
-'1E9A' => "\x{0061}\x{02BE}",
-'1F50' => "\x{03C5}\x{0313}",
-'1F52' => "\x{03C5}\x{0313}\x{0300}",
-'1F54' => "\x{03C5}\x{0313}\x{0301}",
-'1F56' => "\x{03C5}\x{0313}\x{0342}",
-'1F80' => "\x{1F00}\x{03B9}",
-'1F81' => "\x{1F01}\x{03B9}",
-'1F82' => "\x{1F02}\x{03B9}",
-'1F83' => "\x{1F03}\x{03B9}",
-'1F84' => "\x{1F04}\x{03B9}",
-'1F85' => "\x{1F05}\x{03B9}",
-'1F86' => "\x{1F06}\x{03B9}",
-'1F87' => "\x{1F07}\x{03B9}",
-'1F88' => "\x{1F00}\x{03B9}",
-'1F89' => "\x{1F01}\x{03B9}",
-'1F8A' => "\x{1F02}\x{03B9}",
-'1F8B' => "\x{1F03}\x{03B9}",
-'1F8C' => "\x{1F04}\x{03B9}",
-'1F8D' => "\x{1F05}\x{03B9}",
-'1F8E' => "\x{1F06}\x{03B9}",
-'1F8F' => "\x{1F07}\x{03B9}",
-'1F90' => "\x{1F20}\x{03B9}",
-'1F91' => "\x{1F21}\x{03B9}",
-'1F92' => "\x{1F22}\x{03B9}",
-'1F93' => "\x{1F23}\x{03B9}",
-'1F94' => "\x{1F24}\x{03B9}",
-'1F95' => "\x{1F25}\x{03B9}",
-'1F96' => "\x{1F26}\x{03B9}",
-'1F97' => "\x{1F27}\x{03B9}",
-'1F98' => "\x{1F20}\x{03B9}",
-'1F99' => "\x{1F21}\x{03B9}",
-'1F9A' => "\x{1F22}\x{03B9}",
-'1F9B' => "\x{1F23}\x{03B9}",
-'1F9C' => "\x{1F24}\x{03B9}",
-'1F9D' => "\x{1F25}\x{03B9}",
-'1F9E' => "\x{1F26}\x{03B9}",
-'1F9F' => "\x{1F27}\x{03B9}",
-'1FA0' => "\x{1F60}\x{03B9}",
-'1FA1' => "\x{1F61}\x{03B9}",
-'1FA2' => "\x{1F62}\x{03B9}",
-'1FA3' => "\x{1F63}\x{03B9}",
-'1FA4' => "\x{1F64}\x{03B9}",
-'1FA5' => "\x{1F65}\x{03B9}",
-'1FA6' => "\x{1F66}\x{03B9}",
-'1FA7' => "\x{1F67}\x{03B9}",
-'1FA8' => "\x{1F60}\x{03B9}",
-'1FA9' => "\x{1F61}\x{03B9}",
-'1FAA' => "\x{1F62}\x{03B9}",
-'1FAB' => "\x{1F63}\x{03B9}",
-'1FAC' => "\x{1F64}\x{03B9}",
-'1FAD' => "\x{1F65}\x{03B9}",
-'1FAE' => "\x{1F66}\x{03B9}",
-'1FAF' => "\x{1F67}\x{03B9}",
-'1FB2' => "\x{1F70}\x{03B9}",
-'1FB3' => "\x{03B1}\x{03B9}",
-'1FB4' => "\x{03AC}\x{03B9}",
-'1FB6' => "\x{03B1}\x{0342}",
-'1FB7' => "\x{03B1}\x{0342}\x{03B9}",
-'1FBC' => "\x{03B1}\x{03B9}",
-'1FC2' => "\x{1F74}\x{03B9}",
-'1FC3' => "\x{03B7}\x{03B9}",
-'1FC4' => "\x{03AE}\x{03B9}",
-'1FC6' => "\x{03B7}\x{0342}",
-'1FC7' => "\x{03B7}\x{0342}\x{03B9}",
-'1FCC' => "\x{03B7}\x{03B9}",
-'1FD2' => "\x{03B9}\x{0308}\x{0300}",
-'1FD3' => "\x{03B9}\x{0308}\x{0301}",
-'1FD6' => "\x{03B9}\x{0342}",
-'1FD7' => "\x{03B9}\x{0308}\x{0342}",
-'1FE2' => "\x{03C5}\x{0308}\x{0300}",
-'1FE3' => "\x{03C5}\x{0308}\x{0301}",
-'1FE4' => "\x{03C1}\x{0313}",
-'1FE6' => "\x{03C5}\x{0342}",
-'1FE7' => "\x{03C5}\x{0308}\x{0342}",
-'1FF2' => "\x{1F7C}\x{03B9}",
-'1FF3' => "\x{03C9}\x{03B9}",
-'1FF4' => "\x{03CE}\x{03B9}",
-'1FF6' => "\x{03C9}\x{0342}",
-'1FF7' => "\x{03C9}\x{0342}\x{03B9}",
-'1FFC' => "\x{03C9}\x{03B9}",
-'FB00' => "\x{0066}\x{0066}",
-'FB01' => "\x{0066}\x{0069}",
-'FB02' => "\x{0066}\x{006C}",
-'FB03' => "\x{0066}\x{0066}\x{0069}",
-'FB04' => "\x{0066}\x{0066}\x{006C}",
-'FB05' => "\x{0073}\x{0074}",
-'FB06' => "\x{0073}\x{0074}",
-'FB13' => "\x{0574}\x{0576}",
-'FB14' => "\x{0574}\x{0565}",
-'FB15' => "\x{0574}\x{056B}",
-'FB16' => "\x{057E}\x{0576}",
-'FB17' => "\x{0574}\x{056D}",
-);
-
-return <<'END';
-0041 0061
-0042 0062
-0043 0063
-0044 0064
-0045 0065
-0046 0066
-0047 0067
-0048 0068
-0049 0069
-004A 006A
-004B 006B
-004C 006C
-004D 006D
-004E 006E
-004F 006F
-0050 0070
-0051 0071
-0052 0072
-0053 0073
-0054 0074
-0055 0075
-0056 0076
-0057 0077
-0058 0078
-0059 0079
-005A 007A
-00B5 03BC
-00C0 00E0
-00C1 00E1
-00C2 00E2
-00C3 00E3
-00C4 00E4
-00C5 00E5
-00C6 00E6
-00C7 00E7
-00C8 00E8
-00C9 00E9
-00CA 00EA
-00CB 00EB
-00CC 00EC
-00CD 00ED
-00CE 00EE
-00CF 00EF
-00D0 00F0
-00D1 00F1
-00D2 00F2
-00D3 00F3
-00D4 00F4
-00D5 00F5
-00D6 00F6
-00D8 00F8
-00D9 00F9
-00DA 00FA
-00DB 00FB
-00DC 00FC
-00DD 00FD
-00DE 00FE
-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
-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
-017F 0073
-0181 0253
-0182 0183
-0184 0185
-0186 0254
-0187 0188
-0189 0256
-018A 0257
-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 028A
-01B2 028B
-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
-0220 019E
-0222 0223
-0224 0225
-0226 0227
-0228 0229
-022A 022B
-022C 022D
-022E 022F
-0230 0231
-0232 0233
-0345 03B9
-0386 03AC
-0388 03AD
-0389 03AE
-038A 03AF
-038C 03CC
-038E 03CD
-038F 03CE
-0391 03B1
-0392 03B2
-0393 03B3
-0394 03B4
-0395 03B5
-0396 03B6
-0397 03B7
-0398 03B8
-0399 03B9
-039A 03BA
-039B 03BB
-039C 03BC
-039D 03BD
-039E 03BE
-039F 03BF
-03A0 03C0
-03A1 03C1
-03A3 03C3
-03A4 03C4
-03A5 03C5
-03A6 03C6
-03A7 03C7
-03A8 03C8
-03A9 03C9
-03AA 03CA
-03AB 03CB
-03C2 03C3
-03D0 03B2
-03D1 03B8
-03D5 03C6
-03D6 03C0
-03D8 03D9
-03DA 03DB
-03DC 03DD
-03DE 03DF
-03E0 03E1
-03E2 03E3
-03E4 03E5
-03E6 03E7
-03E8 03E9
-03EA 03EB
-03EC 03ED
-03EE 03EF
-03F0 03BA
-03F1 03C1
-03F2 03C3
-03F4 03B8
-03F5 03B5
-0400 0450
-0401 0451
-0402 0452
-0403 0453
-0404 0454
-0405 0455
-0406 0456
-0407 0457
-0408 0458
-0409 0459
-040A 045A
-040B 045B
-040C 045C
-040D 045D
-040E 045E
-040F 045F
-0410 0430
-0411 0431
-0412 0432
-0413 0433
-0414 0434
-0415 0435
-0416 0436
-0417 0437
-0418 0438
-0419 0439
-041A 043A
-041B 043B
-041C 043C
-041D 043D
-041E 043E
-041F 043F
-0420 0440
-0421 0441
-0422 0442
-0423 0443
-0424 0444
-0425 0445
-0426 0446
-0427 0447
-0428 0448
-0429 0449
-042A 044A
-042B 044B
-042C 044C
-042D 044D
-042E 044E
-042F 044F
-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
-048A 048B
-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
-04C5 04C6
-04C7 04C8
-04C9 04CA
-04CB 04CC
-04CD 04CE
-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
-0500 0501
-0502 0503
-0504 0505
-0506 0507
-0508 0509
-050A 050B
-050C 050D
-050E 050F
-0531 0561
-0532 0562
-0533 0563
-0534 0564
-0535 0565
-0536 0566
-0537 0567
-0538 0568
-0539 0569
-053A 056A
-053B 056B
-053C 056C
-053D 056D
-053E 056E
-053F 056F
-0540 0570
-0541 0571
-0542 0572
-0543 0573
-0544 0574
-0545 0575
-0546 0576
-0547 0577
-0548 0578
-0549 0579
-054A 057A
-054B 057B
-054C 057C
-054D 057D
-054E 057E
-054F 057F
-0550 0580
-0551 0581
-0552 0582
-0553 0583
-0554 0584
-0555 0585
-0556 0586
-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
-1E9B 1E61
-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 1F00
-1F09 1F01
-1F0A 1F02
-1F0B 1F03
-1F0C 1F04
-1F0D 1F05
-1F0E 1F06
-1F0F 1F07
-1F18 1F10
-1F19 1F11
-1F1A 1F12
-1F1B 1F13
-1F1C 1F14
-1F1D 1F15
-1F28 1F20
-1F29 1F21
-1F2A 1F22
-1F2B 1F23
-1F2C 1F24
-1F2D 1F25
-1F2E 1F26
-1F2F 1F27
-1F38 1F30
-1F39 1F31
-1F3A 1F32
-1F3B 1F33
-1F3C 1F34
-1F3D 1F35
-1F3E 1F36
-1F3F 1F37
-1F48 1F40
-1F49 1F41
-1F4A 1F42
-1F4B 1F43
-1F4C 1F44
-1F4D 1F45
-1F59 1F51
-1F5B 1F53
-1F5D 1F55
-1F5F 1F57
-1F68 1F60
-1F69 1F61
-1F6A 1F62
-1F6B 1F63
-1F6C 1F64
-1F6D 1F65
-1F6E 1F66
-1F6F 1F67
-1FB8 1FB0
-1FB9 1FB1
-1FBA 1F70
-1FBB 1F71
-1FBE 03B9
-1FC8 1F72
-1FC9 1F73
-1FCA 1F74
-1FCB 1F75
-1FD8 1FD0
-1FD9 1FD1
-1FDA 1F76
-1FDB 1F77
-1FE8 1FE0
-1FE9 1FE1
-1FEA 1F7A
-1FEB 1F7B
-1FEC 1FE5
-1FF8 1F78
-1FF9 1F79
-1FFA 1F7C
-1FFB 1F7D
-2126 03C9
-212A 006B
-212B 00E5
-2160 2170
-2161 2171
-2162 2172
-2163 2173
-2164 2174
-2165 2175
-2166 2176
-2167 2177
-2168 2178
-2169 2179
-216A 217A
-216B 217B
-216C 217C
-216D 217D
-216E 217E
-216F 217F
-24B6 24D0
-24B7 24D1
-24B8 24D2
-24B9 24D3
-24BA 24D4
-24BB 24D5
-24BC 24D6
-24BD 24D7
-24BE 24D8
-24BF 24D9
-24C0 24DA
-24C1 24DB
-24C2 24DC
-24C3 24DD
-24C4 24DE
-24C5 24DF
-24C6 24E0
-24C7 24E1
-24C8 24E2
-24C9 24E3
-24CA 24E4
-24CB 24E5
-24CC 24E6
-24CD 24E7
-24CE 24E8
-24CF 24E9
-FF21 FF41
-FF22 FF42
-FF23 FF43
-FF24 FF44
-FF25 FF45
-FF26 FF46
-FF27 FF47
-FF28 FF48
-FF29 FF49
-FF2A FF4A
-FF2B FF4B
-FF2C FF4C
-FF2D FF4D
-FF2E FF4E
-FF2F FF4F
-FF30 FF50
-FF31 FF51
-FF32 FF52
-FF33 FF53
-FF34 FF54
-FF35 FF55
-FF36 FF56
-FF37 FF57
-FF38 FF58
-FF39 FF59
-FF3A FF5A
-10400 10428
-10401 10429
-10402 1042A
-10403 1042B
-10404 1042C
-10405 1042D
-10406 1042E
-10407 1042F
-10408 10430
-10409 10431
-1040A 10432
-1040B 10433
-1040C 10434
-1040D 10435
-1040E 10436
-1040F 10437
-10410 10438
-10411 10439
-10412 1043A
-10413 1043B
-10414 1043C
-10415 1043D
-10416 1043E
-10417 1043F
-10418 10440
-10419 10441
-1041A 10442
-1041B 10443
-1041C 10444
-1041D 10445
-1041E 10446
-1041F 10447
-10420 10448
-10421 10449
-10422 1044A
-10423 1044B
-10424 1044C
-10425 1044D
-END
diff --git a/Master/perltl/lib/unicore/To/Lower.pl b/Master/perltl/lib/unicore/To/Lower.pl
deleted file mode 100644
index cbb27214882..00000000000
--- a/Master/perltl/lib/unicore/To/Lower.pl
+++ /dev/null
@@ -1,760 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-
-%utf8::ToSpecLower =
-(
-'0130' => "\x{0069}\x{0307}",
-'1F88' => "\x{1F80}",
-'1F89' => "\x{1F81}",
-'1F8A' => "\x{1F82}",
-'1F8B' => "\x{1F83}",
-'1F8C' => "\x{1F84}",
-'1F8D' => "\x{1F85}",
-'1F8E' => "\x{1F86}",
-'1F8F' => "\x{1F87}",
-'1F98' => "\x{1F90}",
-'1F99' => "\x{1F91}",
-'1F9A' => "\x{1F92}",
-'1F9B' => "\x{1F93}",
-'1F9C' => "\x{1F94}",
-'1F9D' => "\x{1F95}",
-'1F9E' => "\x{1F96}",
-'1F9F' => "\x{1F97}",
-'1FA8' => "\x{1FA0}",
-'1FA9' => "\x{1FA1}",
-'1FAA' => "\x{1FA2}",
-'1FAB' => "\x{1FA3}",
-'1FAC' => "\x{1FA4}",
-'1FAD' => "\x{1FA5}",
-'1FAE' => "\x{1FA6}",
-'1FAF' => "\x{1FA7}",
-'1FBC' => "\x{1FB3}",
-'1FCC' => "\x{1FC3}",
-'1FFC' => "\x{1FF3}",
-);
-
-return <<'END';
-0041 0061
-0042 0062
-0043 0063
-0044 0064
-0045 0065
-0046 0066
-0047 0067
-0048 0068
-0049 0069
-004A 006A
-004B 006B
-004C 006C
-004D 006D
-004E 006E
-004F 006F
-0050 0070
-0051 0071
-0052 0072
-0053 0073
-0054 0074
-0055 0075
-0056 0076
-0057 0077
-0058 0078
-0059 0079
-005A 007A
-00C0 00E0
-00C1 00E1
-00C2 00E2
-00C3 00E3
-00C4 00E4
-00C5 00E5
-00C6 00E6
-00C7 00E7
-00C8 00E8
-00C9 00E9
-00CA 00EA
-00CB 00EB
-00CC 00EC
-00CD 00ED
-00CE 00EE
-00CF 00EF
-00D0 00F0
-00D1 00F1
-00D2 00F2
-00D3 00F3
-00D4 00F4
-00D5 00F5
-00D6 00F6
-00D8 00F8
-00D9 00F9
-00DA 00FA
-00DB 00FB
-00DC 00FC
-00DD 00FD
-00DE 00FE
-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
-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 0256
-018A 0257
-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 028A
-01B2 028B
-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
-0220 019E
-0222 0223
-0224 0225
-0226 0227
-0228 0229
-022A 022B
-022C 022D
-022E 022F
-0230 0231
-0232 0233
-0386 03AC
-0388 03AD
-0389 03AE
-038A 03AF
-038C 03CC
-038E 03CD
-038F 03CE
-0391 03B1
-0392 03B2
-0393 03B3
-0394 03B4
-0395 03B5
-0396 03B6
-0397 03B7
-0398 03B8
-0399 03B9
-039A 03BA
-039B 03BB
-039C 03BC
-039D 03BD
-039E 03BE
-039F 03BF
-03A0 03C0
-03A1 03C1
-03A3 03C3
-03A4 03C4
-03A5 03C5
-03A6 03C6
-03A7 03C7
-03A8 03C8
-03A9 03C9
-03AA 03CA
-03AB 03CB
-03D8 03D9
-03DA 03DB
-03DC 03DD
-03DE 03DF
-03E0 03E1
-03E2 03E3
-03E4 03E5
-03E6 03E7
-03E8 03E9
-03EA 03EB
-03EC 03ED
-03EE 03EF
-03F4 03B8
-0400 0450
-0401 0451
-0402 0452
-0403 0453
-0404 0454
-0405 0455
-0406 0456
-0407 0457
-0408 0458
-0409 0459
-040A 045A
-040B 045B
-040C 045C
-040D 045D
-040E 045E
-040F 045F
-0410 0430
-0411 0431
-0412 0432
-0413 0433
-0414 0434
-0415 0435
-0416 0436
-0417 0437
-0418 0438
-0419 0439
-041A 043A
-041B 043B
-041C 043C
-041D 043D
-041E 043E
-041F 043F
-0420 0440
-0421 0441
-0422 0442
-0423 0443
-0424 0444
-0425 0445
-0426 0446
-0427 0447
-0428 0448
-0429 0449
-042A 044A
-042B 044B
-042C 044C
-042D 044D
-042E 044E
-042F 044F
-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
-048A 048B
-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
-04C5 04C6
-04C7 04C8
-04C9 04CA
-04CB 04CC
-04CD 04CE
-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
-0500 0501
-0502 0503
-0504 0505
-0506 0507
-0508 0509
-050A 050B
-050C 050D
-050E 050F
-0531 0561
-0532 0562
-0533 0563
-0534 0564
-0535 0565
-0536 0566
-0537 0567
-0538 0568
-0539 0569
-053A 056A
-053B 056B
-053C 056C
-053D 056D
-053E 056E
-053F 056F
-0540 0570
-0541 0571
-0542 0572
-0543 0573
-0544 0574
-0545 0575
-0546 0576
-0547 0577
-0548 0578
-0549 0579
-054A 057A
-054B 057B
-054C 057C
-054D 057D
-054E 057E
-054F 057F
-0550 0580
-0551 0581
-0552 0582
-0553 0583
-0554 0584
-0555 0585
-0556 0586
-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 1F00
-1F09 1F01
-1F0A 1F02
-1F0B 1F03
-1F0C 1F04
-1F0D 1F05
-1F0E 1F06
-1F0F 1F07
-1F18 1F10
-1F19 1F11
-1F1A 1F12
-1F1B 1F13
-1F1C 1F14
-1F1D 1F15
-1F28 1F20
-1F29 1F21
-1F2A 1F22
-1F2B 1F23
-1F2C 1F24
-1F2D 1F25
-1F2E 1F26
-1F2F 1F27
-1F38 1F30
-1F39 1F31
-1F3A 1F32
-1F3B 1F33
-1F3C 1F34
-1F3D 1F35
-1F3E 1F36
-1F3F 1F37
-1F48 1F40
-1F49 1F41
-1F4A 1F42
-1F4B 1F43
-1F4C 1F44
-1F4D 1F45
-1F59 1F51
-1F5B 1F53
-1F5D 1F55
-1F5F 1F57
-1F68 1F60
-1F69 1F61
-1F6A 1F62
-1F6B 1F63
-1F6C 1F64
-1F6D 1F65
-1F6E 1F66
-1F6F 1F67
-1FB8 1FB0
-1FB9 1FB1
-1FBA 1F70
-1FBB 1F71
-1FC8 1F72
-1FC9 1F73
-1FCA 1F74
-1FCB 1F75
-1FD8 1FD0
-1FD9 1FD1
-1FDA 1F76
-1FDB 1F77
-1FE8 1FE0
-1FE9 1FE1
-1FEA 1F7A
-1FEB 1F7B
-1FEC 1FE5
-1FF8 1F78
-1FF9 1F79
-1FFA 1F7C
-1FFB 1F7D
-2126 03C9
-212A 006B
-212B 00E5
-2160 2170
-2161 2171
-2162 2172
-2163 2173
-2164 2174
-2165 2175
-2166 2176
-2167 2177
-2168 2178
-2169 2179
-216A 217A
-216B 217B
-216C 217C
-216D 217D
-216E 217E
-216F 217F
-24B6 24D0
-24B7 24D1
-24B8 24D2
-24B9 24D3
-24BA 24D4
-24BB 24D5
-24BC 24D6
-24BD 24D7
-24BE 24D8
-24BF 24D9
-24C0 24DA
-24C1 24DB
-24C2 24DC
-24C3 24DD
-24C4 24DE
-24C5 24DF
-24C6 24E0
-24C7 24E1
-24C8 24E2
-24C9 24E3
-24CA 24E4
-24CB 24E5
-24CC 24E6
-24CD 24E7
-24CE 24E8
-24CF 24E9
-FF21 FF41
-FF22 FF42
-FF23 FF43
-FF24 FF44
-FF25 FF45
-FF26 FF46
-FF27 FF47
-FF28 FF48
-FF29 FF49
-FF2A FF4A
-FF2B FF4B
-FF2C FF4C
-FF2D FF4D
-FF2E FF4E
-FF2F FF4F
-FF30 FF50
-FF31 FF51
-FF32 FF52
-FF33 FF53
-FF34 FF54
-FF35 FF55
-FF36 FF56
-FF37 FF57
-FF38 FF58
-FF39 FF59
-FF3A FF5A
-10400 10428
-10401 10429
-10402 1042A
-10403 1042B
-10404 1042C
-10405 1042D
-10406 1042E
-10407 1042F
-10408 10430
-10409 10431
-1040A 10432
-1040B 10433
-1040C 10434
-1040D 10435
-1040E 10436
-1040F 10437
-10410 10438
-10411 10439
-10412 1043A
-10413 1043B
-10414 1043C
-10415 1043D
-10416 1043E
-10417 1043F
-10418 10440
-10419 10441
-1041A 10442
-1041B 10443
-1041C 10444
-1041D 10445
-1041E 10446
-1041F 10447
-10420 10448
-10421 10449
-10422 1044A
-10423 1044B
-10424 1044C
-10425 1044D
-END
diff --git a/Master/perltl/lib/unicore/To/Title.pl b/Master/perltl/lib/unicore/To/Title.pl
deleted file mode 100644
index 1cd9dc540f3..00000000000
--- a/Master/perltl/lib/unicore/To/Title.pl
+++ /dev/null
@@ -1,818 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-
-%utf8::ToSpecTitle =
-(
-'00DF' => "\x{0053}\x{0073}",
-'0149' => "\x{02BC}\x{004E}",
-'01F0' => "\x{004A}\x{030C}",
-'0390' => "\x{0399}\x{0308}\x{0301}",
-'03B0' => "\x{03A5}\x{0308}\x{0301}",
-'0587' => "\x{0535}\x{0582}",
-'1E96' => "\x{0048}\x{0331}",
-'1E97' => "\x{0054}\x{0308}",
-'1E98' => "\x{0057}\x{030A}",
-'1E99' => "\x{0059}\x{030A}",
-'1E9A' => "\x{0041}\x{02BE}",
-'1F50' => "\x{03A5}\x{0313}",
-'1F52' => "\x{03A5}\x{0313}\x{0300}",
-'1F54' => "\x{03A5}\x{0313}\x{0301}",
-'1F56' => "\x{03A5}\x{0313}\x{0342}",
-'1F80' => "\x{1F88}",
-'1F81' => "\x{1F89}",
-'1F82' => "\x{1F8A}",
-'1F83' => "\x{1F8B}",
-'1F84' => "\x{1F8C}",
-'1F85' => "\x{1F8D}",
-'1F86' => "\x{1F8E}",
-'1F87' => "\x{1F8F}",
-'1F90' => "\x{1F98}",
-'1F91' => "\x{1F99}",
-'1F92' => "\x{1F9A}",
-'1F93' => "\x{1F9B}",
-'1F94' => "\x{1F9C}",
-'1F95' => "\x{1F9D}",
-'1F96' => "\x{1F9E}",
-'1F97' => "\x{1F9F}",
-'1FA0' => "\x{1FA8}",
-'1FA1' => "\x{1FA9}",
-'1FA2' => "\x{1FAA}",
-'1FA3' => "\x{1FAB}",
-'1FA4' => "\x{1FAC}",
-'1FA5' => "\x{1FAD}",
-'1FA6' => "\x{1FAE}",
-'1FA7' => "\x{1FAF}",
-'1FB2' => "\x{1FBA}\x{0345}",
-'1FB3' => "\x{1FBC}",
-'1FB4' => "\x{0386}\x{0345}",
-'1FB6' => "\x{0391}\x{0342}",
-'1FB7' => "\x{0391}\x{0342}\x{0345}",
-'1FC2' => "\x{1FCA}\x{0345}",
-'1FC3' => "\x{1FCC}",
-'1FC4' => "\x{0389}\x{0345}",
-'1FC6' => "\x{0397}\x{0342}",
-'1FC7' => "\x{0397}\x{0342}\x{0345}",
-'1FD2' => "\x{0399}\x{0308}\x{0300}",
-'1FD3' => "\x{0399}\x{0308}\x{0301}",
-'1FD6' => "\x{0399}\x{0342}",
-'1FD7' => "\x{0399}\x{0308}\x{0342}",
-'1FE2' => "\x{03A5}\x{0308}\x{0300}",
-'1FE3' => "\x{03A5}\x{0308}\x{0301}",
-'1FE4' => "\x{03A1}\x{0313}",
-'1FE6' => "\x{03A5}\x{0342}",
-'1FE7' => "\x{03A5}\x{0308}\x{0342}",
-'1FF2' => "\x{1FFA}\x{0345}",
-'1FF3' => "\x{1FFC}",
-'1FF4' => "\x{038F}\x{0345}",
-'1FF6' => "\x{03A9}\x{0342}",
-'1FF7' => "\x{03A9}\x{0342}\x{0345}",
-'FB00' => "\x{0046}\x{0066}",
-'FB01' => "\x{0046}\x{0069}",
-'FB02' => "\x{0046}\x{006C}",
-'FB03' => "\x{0046}\x{0066}\x{0069}",
-'FB04' => "\x{0046}\x{0066}\x{006C}",
-'FB05' => "\x{0053}\x{0074}",
-'FB06' => "\x{0053}\x{0074}",
-'FB13' => "\x{0544}\x{0576}",
-'FB14' => "\x{0544}\x{0565}",
-'FB15' => "\x{0544}\x{056B}",
-'FB16' => "\x{054E}\x{0576}",
-'FB17' => "\x{0544}\x{056D}",
-);
-
-return <<'END';
-0061 0041
-0062 0042
-0063 0043
-0064 0044
-0065 0045
-0066 0046
-0067 0047
-0068 0048
-0069 0049
-006A 004A
-006B 004B
-006C 004C
-006D 004D
-006E 004E
-006F 004F
-0070 0050
-0071 0051
-0072 0052
-0073 0053
-0074 0054
-0075 0055
-0076 0056
-0077 0057
-0078 0058
-0079 0059
-007A 005A
-00B5 039C
-00E0 00C0
-00E1 00C1
-00E2 00C2
-00E3 00C3
-00E4 00C4
-00E5 00C5
-00E6 00C6
-00E7 00C7
-00E8 00C8
-00E9 00C9
-00EA 00CA
-00EB 00CB
-00EC 00CC
-00ED 00CD
-00EE 00CE
-00EF 00CF
-00F0 00D0
-00F1 00D1
-00F2 00D2
-00F3 00D3
-00F4 00D4
-00F5 00D5
-00F6 00D6
-00F8 00D8
-00F9 00D9
-00FA 00DA
-00FB 00DB
-00FC 00DC
-00FD 00DD
-00FE 00DE
-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
-019E 0220
-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 0189
-0257 018A
-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 01B1
-028B 01B2
-0292 01B7
-0345 0399
-03AC 0386
-03AD 0388
-03AE 0389
-03AF 038A
-03B1 0391
-03B2 0392
-03B3 0393
-03B4 0394
-03B5 0395
-03B6 0396
-03B7 0397
-03B8 0398
-03B9 0399
-03BA 039A
-03BB 039B
-03BC 039C
-03BD 039D
-03BE 039E
-03BF 039F
-03C0 03A0
-03C1 03A1
-03C2 03A3
-03C3 03A3
-03C4 03A4
-03C5 03A5
-03C6 03A6
-03C7 03A7
-03C8 03A8
-03C9 03A9
-03CA 03AA
-03CB 03AB
-03CC 038C
-03CD 038E
-03CE 038F
-03D0 0392
-03D1 0398
-03D5 03A6
-03D6 03A0
-03D9 03D8
-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
-03F5 0395
-0430 0410
-0431 0411
-0432 0412
-0433 0413
-0434 0414
-0435 0415
-0436 0416
-0437 0417
-0438 0418
-0439 0419
-043A 041A
-043B 041B
-043C 041C
-043D 041D
-043E 041E
-043F 041F
-0440 0420
-0441 0421
-0442 0422
-0443 0423
-0444 0424
-0445 0425
-0446 0426
-0447 0427
-0448 0428
-0449 0429
-044A 042A
-044B 042B
-044C 042C
-044D 042D
-044E 042E
-044F 042F
-0450 0400
-0451 0401
-0452 0402
-0453 0403
-0454 0404
-0455 0405
-0456 0406
-0457 0407
-0458 0408
-0459 0409
-045A 040A
-045B 040B
-045C 040C
-045D 040D
-045E 040E
-045F 040F
-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
-048B 048A
-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
-04C6 04C5
-04C8 04C7
-04CA 04C9
-04CC 04CB
-04CE 04CD
-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
-0501 0500
-0503 0502
-0505 0504
-0507 0506
-0509 0508
-050B 050A
-050D 050C
-050F 050E
-0561 0531
-0562 0532
-0563 0533
-0564 0534
-0565 0535
-0566 0536
-0567 0537
-0568 0538
-0569 0539
-056A 053A
-056B 053B
-056C 053C
-056D 053D
-056E 053E
-056F 053F
-0570 0540
-0571 0541
-0572 0542
-0573 0543
-0574 0544
-0575 0545
-0576 0546
-0577 0547
-0578 0548
-0579 0549
-057A 054A
-057B 054B
-057C 054C
-057D 054D
-057E 054E
-057F 054F
-0580 0550
-0581 0551
-0582 0552
-0583 0553
-0584 0554
-0585 0555
-0586 0556
-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 1F08
-1F01 1F09
-1F02 1F0A
-1F03 1F0B
-1F04 1F0C
-1F05 1F0D
-1F06 1F0E
-1F07 1F0F
-1F10 1F18
-1F11 1F19
-1F12 1F1A
-1F13 1F1B
-1F14 1F1C
-1F15 1F1D
-1F20 1F28
-1F21 1F29
-1F22 1F2A
-1F23 1F2B
-1F24 1F2C
-1F25 1F2D
-1F26 1F2E
-1F27 1F2F
-1F30 1F38
-1F31 1F39
-1F32 1F3A
-1F33 1F3B
-1F34 1F3C
-1F35 1F3D
-1F36 1F3E
-1F37 1F3F
-1F40 1F48
-1F41 1F49
-1F42 1F4A
-1F43 1F4B
-1F44 1F4C
-1F45 1F4D
-1F51 1F59
-1F53 1F5B
-1F55 1F5D
-1F57 1F5F
-1F60 1F68
-1F61 1F69
-1F62 1F6A
-1F63 1F6B
-1F64 1F6C
-1F65 1F6D
-1F66 1F6E
-1F67 1F6F
-1F70 1FBA
-1F71 1FBB
-1F72 1FC8
-1F73 1FC9
-1F74 1FCA
-1F75 1FCB
-1F76 1FDA
-1F77 1FDB
-1F78 1FF8
-1F79 1FF9
-1F7A 1FEA
-1F7B 1FEB
-1F7C 1FFA
-1F7D 1FFB
-1FB0 1FB8
-1FB1 1FB9
-1FBE 0399
-1FD0 1FD8
-1FD1 1FD9
-1FE0 1FE8
-1FE1 1FE9
-1FE5 1FEC
-2170 2160
-2171 2161
-2172 2162
-2173 2163
-2174 2164
-2175 2165
-2176 2166
-2177 2167
-2178 2168
-2179 2169
-217A 216A
-217B 216B
-217C 216C
-217D 216D
-217E 216E
-217F 216F
-24D0 24B6
-24D1 24B7
-24D2 24B8
-24D3 24B9
-24D4 24BA
-24D5 24BB
-24D6 24BC
-24D7 24BD
-24D8 24BE
-24D9 24BF
-24DA 24C0
-24DB 24C1
-24DC 24C2
-24DD 24C3
-24DE 24C4
-24DF 24C5
-24E0 24C6
-24E1 24C7
-24E2 24C8
-24E3 24C9
-24E4 24CA
-24E5 24CB
-24E6 24CC
-24E7 24CD
-24E8 24CE
-24E9 24CF
-FF41 FF21
-FF42 FF22
-FF43 FF23
-FF44 FF24
-FF45 FF25
-FF46 FF26
-FF47 FF27
-FF48 FF28
-FF49 FF29
-FF4A FF2A
-FF4B FF2B
-FF4C FF2C
-FF4D FF2D
-FF4E FF2E
-FF4F FF2F
-FF50 FF30
-FF51 FF31
-FF52 FF32
-FF53 FF33
-FF54 FF34
-FF55 FF35
-FF56 FF36
-FF57 FF37
-FF58 FF38
-FF59 FF39
-FF5A FF3A
-10428 10400
-10429 10401
-1042A 10402
-1042B 10403
-1042C 10404
-1042D 10405
-1042E 10406
-1042F 10407
-10430 10408
-10431 10409
-10432 1040A
-10433 1040B
-10434 1040C
-10435 1040D
-10436 1040E
-10437 1040F
-10438 10410
-10439 10411
-1043A 10412
-1043B 10413
-1043C 10414
-1043D 10415
-1043E 10416
-1043F 10417
-10440 10418
-10441 10419
-10442 1041A
-10443 1041B
-10444 1041C
-10445 1041D
-10446 1041E
-10447 1041F
-10448 10420
-10449 10421
-1044A 10422
-1044B 10423
-1044C 10424
-1044D 10425
-END
diff --git a/Master/perltl/lib/unicore/To/Upper.pl b/Master/perltl/lib/unicore/To/Upper.pl
deleted file mode 100644
index 0d1596f72d6..00000000000
--- a/Master/perltl/lib/unicore/To/Upper.pl
+++ /dev/null
@@ -1,845 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-
-%utf8::ToSpecUpper =
-(
-'00DF' => "\x{0053}\x{0053}",
-'0149' => "\x{02BC}\x{004E}",
-'01F0' => "\x{004A}\x{030C}",
-'0390' => "\x{0399}\x{0308}\x{0301}",
-'03B0' => "\x{03A5}\x{0308}\x{0301}",
-'0587' => "\x{0535}\x{0552}",
-'1E96' => "\x{0048}\x{0331}",
-'1E97' => "\x{0054}\x{0308}",
-'1E98' => "\x{0057}\x{030A}",
-'1E99' => "\x{0059}\x{030A}",
-'1E9A' => "\x{0041}\x{02BE}",
-'1F50' => "\x{03A5}\x{0313}",
-'1F52' => "\x{03A5}\x{0313}\x{0300}",
-'1F54' => "\x{03A5}\x{0313}\x{0301}",
-'1F56' => "\x{03A5}\x{0313}\x{0342}",
-'1F80' => "\x{1F08}\x{0399}",
-'1F81' => "\x{1F09}\x{0399}",
-'1F82' => "\x{1F0A}\x{0399}",
-'1F83' => "\x{1F0B}\x{0399}",
-'1F84' => "\x{1F0C}\x{0399}",
-'1F85' => "\x{1F0D}\x{0399}",
-'1F86' => "\x{1F0E}\x{0399}",
-'1F87' => "\x{1F0F}\x{0399}",
-'1F88' => "\x{1F08}\x{0399}",
-'1F89' => "\x{1F09}\x{0399}",
-'1F8A' => "\x{1F0A}\x{0399}",
-'1F8B' => "\x{1F0B}\x{0399}",
-'1F8C' => "\x{1F0C}\x{0399}",
-'1F8D' => "\x{1F0D}\x{0399}",
-'1F8E' => "\x{1F0E}\x{0399}",
-'1F8F' => "\x{1F0F}\x{0399}",
-'1F90' => "\x{1F28}\x{0399}",
-'1F91' => "\x{1F29}\x{0399}",
-'1F92' => "\x{1F2A}\x{0399}",
-'1F93' => "\x{1F2B}\x{0399}",
-'1F94' => "\x{1F2C}\x{0399}",
-'1F95' => "\x{1F2D}\x{0399}",
-'1F96' => "\x{1F2E}\x{0399}",
-'1F97' => "\x{1F2F}\x{0399}",
-'1F98' => "\x{1F28}\x{0399}",
-'1F99' => "\x{1F29}\x{0399}",
-'1F9A' => "\x{1F2A}\x{0399}",
-'1F9B' => "\x{1F2B}\x{0399}",
-'1F9C' => "\x{1F2C}\x{0399}",
-'1F9D' => "\x{1F2D}\x{0399}",
-'1F9E' => "\x{1F2E}\x{0399}",
-'1F9F' => "\x{1F2F}\x{0399}",
-'1FA0' => "\x{1F68}\x{0399}",
-'1FA1' => "\x{1F69}\x{0399}",
-'1FA2' => "\x{1F6A}\x{0399}",
-'1FA3' => "\x{1F6B}\x{0399}",
-'1FA4' => "\x{1F6C}\x{0399}",
-'1FA5' => "\x{1F6D}\x{0399}",
-'1FA6' => "\x{1F6E}\x{0399}",
-'1FA7' => "\x{1F6F}\x{0399}",
-'1FA8' => "\x{1F68}\x{0399}",
-'1FA9' => "\x{1F69}\x{0399}",
-'1FAA' => "\x{1F6A}\x{0399}",
-'1FAB' => "\x{1F6B}\x{0399}",
-'1FAC' => "\x{1F6C}\x{0399}",
-'1FAD' => "\x{1F6D}\x{0399}",
-'1FAE' => "\x{1F6E}\x{0399}",
-'1FAF' => "\x{1F6F}\x{0399}",
-'1FB2' => "\x{1FBA}\x{0399}",
-'1FB3' => "\x{0391}\x{0399}",
-'1FB4' => "\x{0386}\x{0399}",
-'1FB6' => "\x{0391}\x{0342}",
-'1FB7' => "\x{0391}\x{0342}\x{0399}",
-'1FBC' => "\x{0391}\x{0399}",
-'1FC2' => "\x{1FCA}\x{0399}",
-'1FC3' => "\x{0397}\x{0399}",
-'1FC4' => "\x{0389}\x{0399}",
-'1FC6' => "\x{0397}\x{0342}",
-'1FC7' => "\x{0397}\x{0342}\x{0399}",
-'1FCC' => "\x{0397}\x{0399}",
-'1FD2' => "\x{0399}\x{0308}\x{0300}",
-'1FD3' => "\x{0399}\x{0308}\x{0301}",
-'1FD6' => "\x{0399}\x{0342}",
-'1FD7' => "\x{0399}\x{0308}\x{0342}",
-'1FE2' => "\x{03A5}\x{0308}\x{0300}",
-'1FE3' => "\x{03A5}\x{0308}\x{0301}",
-'1FE4' => "\x{03A1}\x{0313}",
-'1FE6' => "\x{03A5}\x{0342}",
-'1FE7' => "\x{03A5}\x{0308}\x{0342}",
-'1FF2' => "\x{1FFA}\x{0399}",
-'1FF3' => "\x{03A9}\x{0399}",
-'1FF4' => "\x{038F}\x{0399}",
-'1FF6' => "\x{03A9}\x{0342}",
-'1FF7' => "\x{03A9}\x{0342}\x{0399}",
-'1FFC' => "\x{03A9}\x{0399}",
-'FB00' => "\x{0046}\x{0046}",
-'FB01' => "\x{0046}\x{0049}",
-'FB02' => "\x{0046}\x{004C}",
-'FB03' => "\x{0046}\x{0046}\x{0049}",
-'FB04' => "\x{0046}\x{0046}\x{004C}",
-'FB05' => "\x{0053}\x{0054}",
-'FB06' => "\x{0053}\x{0054}",
-'FB13' => "\x{0544}\x{0546}",
-'FB14' => "\x{0544}\x{0535}",
-'FB15' => "\x{0544}\x{053B}",
-'FB16' => "\x{054E}\x{0546}",
-'FB17' => "\x{0544}\x{053D}",
-);
-
-return <<'END';
-0061 0041
-0062 0042
-0063 0043
-0064 0044
-0065 0045
-0066 0046
-0067 0047
-0068 0048
-0069 0049
-006A 004A
-006B 004B
-006C 004C
-006D 004D
-006E 004E
-006F 004F
-0070 0050
-0071 0051
-0072 0052
-0073 0053
-0074 0054
-0075 0055
-0076 0056
-0077 0057
-0078 0058
-0079 0059
-007A 005A
-00B5 039C
-00E0 00C0
-00E1 00C1
-00E2 00C2
-00E3 00C3
-00E4 00C4
-00E5 00C5
-00E6 00C6
-00E7 00C7
-00E8 00C8
-00E9 00C9
-00EA 00CA
-00EB 00CB
-00EC 00CC
-00ED 00CD
-00EE 00CE
-00EF 00CF
-00F0 00D0
-00F1 00D1
-00F2 00D2
-00F3 00D3
-00F4 00D4
-00F5 00D5
-00F6 00D6
-00F8 00D8
-00F9 00D9
-00FA 00DA
-00FB 00DB
-00FC 00DC
-00FD 00DD
-00FE 00DE
-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
-019E 0220
-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 0189
-0257 018A
-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 01B1
-028B 01B2
-0292 01B7
-0345 0399
-03AC 0386
-03AD 0388
-03AE 0389
-03AF 038A
-03B1 0391
-03B2 0392
-03B3 0393
-03B4 0394
-03B5 0395
-03B6 0396
-03B7 0397
-03B8 0398
-03B9 0399
-03BA 039A
-03BB 039B
-03BC 039C
-03BD 039D
-03BE 039E
-03BF 039F
-03C0 03A0
-03C1 03A1
-03C2 03A3
-03C3 03A3
-03C4 03A4
-03C5 03A5
-03C6 03A6
-03C7 03A7
-03C8 03A8
-03C9 03A9
-03CA 03AA
-03CB 03AB
-03CC 038C
-03CD 038E
-03CE 038F
-03D0 0392
-03D1 0398
-03D5 03A6
-03D6 03A0
-03D9 03D8
-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
-03F5 0395
-0430 0410
-0431 0411
-0432 0412
-0433 0413
-0434 0414
-0435 0415
-0436 0416
-0437 0417
-0438 0418
-0439 0419
-043A 041A
-043B 041B
-043C 041C
-043D 041D
-043E 041E
-043F 041F
-0440 0420
-0441 0421
-0442 0422
-0443 0423
-0444 0424
-0445 0425
-0446 0426
-0447 0427
-0448 0428
-0449 0429
-044A 042A
-044B 042B
-044C 042C
-044D 042D
-044E 042E
-044F 042F
-0450 0400
-0451 0401
-0452 0402
-0453 0403
-0454 0404
-0455 0405
-0456 0406
-0457 0407
-0458 0408
-0459 0409
-045A 040A
-045B 040B
-045C 040C
-045D 040D
-045E 040E
-045F 040F
-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
-048B 048A
-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
-04C6 04C5
-04C8 04C7
-04CA 04C9
-04CC 04CB
-04CE 04CD
-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
-0501 0500
-0503 0502
-0505 0504
-0507 0506
-0509 0508
-050B 050A
-050D 050C
-050F 050E
-0561 0531
-0562 0532
-0563 0533
-0564 0534
-0565 0535
-0566 0536
-0567 0537
-0568 0538
-0569 0539
-056A 053A
-056B 053B
-056C 053C
-056D 053D
-056E 053E
-056F 053F
-0570 0540
-0571 0541
-0572 0542
-0573 0543
-0574 0544
-0575 0545
-0576 0546
-0577 0547
-0578 0548
-0579 0549
-057A 054A
-057B 054B
-057C 054C
-057D 054D
-057E 054E
-057F 054F
-0580 0550
-0581 0551
-0582 0552
-0583 0553
-0584 0554
-0585 0555
-0586 0556
-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 1F08
-1F01 1F09
-1F02 1F0A
-1F03 1F0B
-1F04 1F0C
-1F05 1F0D
-1F06 1F0E
-1F07 1F0F
-1F10 1F18
-1F11 1F19
-1F12 1F1A
-1F13 1F1B
-1F14 1F1C
-1F15 1F1D
-1F20 1F28
-1F21 1F29
-1F22 1F2A
-1F23 1F2B
-1F24 1F2C
-1F25 1F2D
-1F26 1F2E
-1F27 1F2F
-1F30 1F38
-1F31 1F39
-1F32 1F3A
-1F33 1F3B
-1F34 1F3C
-1F35 1F3D
-1F36 1F3E
-1F37 1F3F
-1F40 1F48
-1F41 1F49
-1F42 1F4A
-1F43 1F4B
-1F44 1F4C
-1F45 1F4D
-1F51 1F59
-1F53 1F5B
-1F55 1F5D
-1F57 1F5F
-1F60 1F68
-1F61 1F69
-1F62 1F6A
-1F63 1F6B
-1F64 1F6C
-1F65 1F6D
-1F66 1F6E
-1F67 1F6F
-1F70 1FBA
-1F71 1FBB
-1F72 1FC8
-1F73 1FC9
-1F74 1FCA
-1F75 1FCB
-1F76 1FDA
-1F77 1FDB
-1F78 1FF8
-1F79 1FF9
-1F7A 1FEA
-1F7B 1FEB
-1F7C 1FFA
-1F7D 1FFB
-1FB0 1FB8
-1FB1 1FB9
-1FBE 0399
-1FD0 1FD8
-1FD1 1FD9
-1FE0 1FE8
-1FE1 1FE9
-1FE5 1FEC
-2170 2160
-2171 2161
-2172 2162
-2173 2163
-2174 2164
-2175 2165
-2176 2166
-2177 2167
-2178 2168
-2179 2169
-217A 216A
-217B 216B
-217C 216C
-217D 216D
-217E 216E
-217F 216F
-24D0 24B6
-24D1 24B7
-24D2 24B8
-24D3 24B9
-24D4 24BA
-24D5 24BB
-24D6 24BC
-24D7 24BD
-24D8 24BE
-24D9 24BF
-24DA 24C0
-24DB 24C1
-24DC 24C2
-24DD 24C3
-24DE 24C4
-24DF 24C5
-24E0 24C6
-24E1 24C7
-24E2 24C8
-24E3 24C9
-24E4 24CA
-24E5 24CB
-24E6 24CC
-24E7 24CD
-24E8 24CE
-24E9 24CF
-FF41 FF21
-FF42 FF22
-FF43 FF23
-FF44 FF24
-FF45 FF25
-FF46 FF26
-FF47 FF27
-FF48 FF28
-FF49 FF29
-FF4A FF2A
-FF4B FF2B
-FF4C FF2C
-FF4D FF2D
-FF4E FF2E
-FF4F FF2F
-FF50 FF30
-FF51 FF31
-FF52 FF32
-FF53 FF33
-FF54 FF34
-FF55 FF35
-FF56 FF36
-FF57 FF37
-FF58 FF38
-FF59 FF39
-FF5A FF3A
-10428 10400
-10429 10401
-1042A 10402
-1042B 10403
-1042C 10404
-1042D 10405
-1042E 10406
-1042F 10407
-10430 10408
-10431 10409
-10432 1040A
-10433 1040B
-10434 1040C
-10435 1040D
-10436 1040E
-10437 1040F
-10438 10410
-10439 10411
-1043A 10412
-1043B 10413
-1043C 10414
-1043D 10415
-1043E 10416
-1043F 10417
-10440 10418
-10441 10419
-10442 1041A
-10443 1041B
-10444 1041C
-10445 1041D
-10446 1041E
-10447 1041F
-10448 10420
-10449 10421
-1044A 10422
-1044B 10423
-1044C 10424
-1044D 10425
-END
diff --git a/Master/perltl/lib/unicore/lib/ASCII.pl b/Master/perltl/lib/unicore/lib/ASCII.pl
deleted file mode 100644
index 42aa565bc1f..00000000000
--- a/Master/perltl/lib/unicore/lib/ASCII.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{ASCII}
-#
-# Meaning: [[:ASCII:]]
-#
-return <<'END';
-0000 007F
-END
diff --git a/Master/perltl/lib/unicore/lib/Alnum.pl b/Master/perltl/lib/unicore/lib/Alnum.pl
deleted file mode 100644
index 0ec13c55c44..00000000000
--- a/Master/perltl/lib/unicore/lib/Alnum.pl
+++ /dev/null
@@ -1,423 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Alnum}
-#
-# Meaning: [[:Alnum:]]
-#
-return <<'END';
-0030 0039
-0041 005A
-0061 007A
-00AA
-00B2 00B3
-00B5
-00B9 00BA
-00BC 00BE
-00C0 00D6
-00D8 00F6
-00F8 0220
-0222 0233
-0250 02AD
-02B0 02B8
-02BB 02C1
-02D0 02D1
-02E0 02E4
-02EE
-0300 034F
-0360 036F
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-0400 0481
-0483 0486
-0488 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-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
-066E 06D3
-06D5 06DC
-06DE 06E8
-06EA 06ED
-06F0 06FC
-0710 072C
-0730 074A
-0780 07B1
-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 10F8
-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
-1700 170C
-170E 1714
-1720 1734
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17D3
-17D7
-17DC
-17E0 17E9
-180B 180D
-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 2071
-2074 2079
-207F 2089
-20D0 20EA
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213D 213F
-2145 2149
-2153 2183
-2460 249B
-24EA 24FE
-2776 2793
-3005 3007
-3021 302F
-3031 3035
-3038 303C
-3041 3096
-3099 309A
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-3192 3195
-31A0 31B7
-31F0 31FF
-3220 3229
-3251 325F
-3280 3289
-32B1 32BF
-3400 4DB5
-4E00 9FA5
-A000 A48C
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-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
-FE00 FE0F
-FE20 FE23
-FE70 FE74
-FE76 FEFC
-FF10 FF19
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10300 1031E
-10320 10323
-10330 1034A
-10400 10425
-10428 1044D
-1D165 1D169
-1D16D 1D172
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/perltl/lib/unicore/lib/Alpha.pl b/Master/perltl/lib/unicore/lib/Alpha.pl
deleted file mode 100644
index 35b0e3280be..00000000000
--- a/Master/perltl/lib/unicore/lib/Alpha.pl
+++ /dev/null
@@ -1,390 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Alpha}
-#
-# Meaning: [[:Alpha:]]
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0220
-0222 0233
-0250 02AD
-02B0 02B8
-02BB 02C1
-02D0 02D1
-02E0 02E4
-02EE
-0300 034F
-0360 036F
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-0400 0481
-0483 0486
-0488 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-0591 05A1
-05A3 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4
-05D0 05EA
-05F0 05F2
-0621 063A
-0640 0655
-066E 06D3
-06D5 06DC
-06DE 06E8
-06EA 06ED
-06FA 06FC
-0710 072C
-0730 074A
-0780 07B1
-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 10F8
-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
-1700 170C
-170E 1714
-1720 1734
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17D3
-17D7
-17DC
-180B 180D
-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
-2071
-207F
-20D0 20EA
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213D 213F
-2145 2149
-3005 3006
-302A 302F
-3031 3035
-303B 303C
-3041 3096
-3099 309A
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FA5
-A000 A48C
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-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
-FE00 FE0F
-FE20 FE23
-FE70 FE74
-FE76 FEFC
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10300 1031E
-10330 10349
-10400 10425
-10428 1044D
-1D165 1D169
-1D16D 1D172
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/perltl/lib/unicore/lib/Alphabet.pl b/Master/perltl/lib/unicore/lib/Alphabet.pl
deleted file mode 100644
index a909a31f000..00000000000
--- a/Master/perltl/lib/unicore/lib/Alphabet.pl
+++ /dev/null
@@ -1,372 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Alphabetic} (and fuzzy permutations)
-#
-# Meaning: [\p{L}\p{OtherAlphabetic}]
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0220
-0222 0233
-0250 02AD
-02B0 02B8
-02BB 02C1
-02D0 02D1
-02E0 02E4
-02EE
-0345
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-0400 0481
-048A 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-05B0 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4
-05D0 05EA
-05F0 05F2
-0621 063A
-0640 0655
-066E 06D3
-06D5 06DC
-06E1 06E8
-06ED
-06FA 06FC
-0710 072C
-0730 073F
-0780 07B1
-0901 0903
-0905 0939
-093D 094C
-0950
-0958 0963
-0981 0983
-0985 098C
-098F 0990
-0993 09A8
-09AA 09B0
-09B2
-09B6 09B9
-09BE 09C4
-09C7 09C8
-09CB 09CC
-09D7
-09DC 09DD
-09DF 09E3
-09F0 09F1
-0A02
-0A05 0A0A
-0A0F 0A10
-0A13 0A28
-0A2A 0A30
-0A32 0A33
-0A35 0A36
-0A38 0A39
-0A3E 0A42
-0A47 0A48
-0A4B 0A4C
-0A59 0A5C
-0A5E
-0A70 0A74
-0A81 0A83
-0A85 0A8B
-0A8D
-0A8F 0A91
-0A93 0AA8
-0AAA 0AB0
-0AB2 0AB3
-0AB5 0AB9
-0ABD 0AC5
-0AC7 0AC9
-0ACB 0ACC
-0AD0
-0AE0
-0B01 0B03
-0B05 0B0C
-0B0F 0B10
-0B13 0B28
-0B2A 0B30
-0B32 0B33
-0B36 0B39
-0B3D 0B43
-0B47 0B48
-0B4B 0B4C
-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 0BCC
-0BD7
-0C01 0C03
-0C05 0C0C
-0C0E 0C10
-0C12 0C28
-0C2A 0C33
-0C35 0C39
-0C3E 0C44
-0C46 0C48
-0C4A 0C4C
-0C55 0C56
-0C60 0C61
-0C82 0C83
-0C85 0C8C
-0C8E 0C90
-0C92 0CA8
-0CAA 0CB3
-0CB5 0CB9
-0CBE 0CC4
-0CC6 0CC8
-0CCA 0CCC
-0CD5 0CD6
-0CDE
-0CE0 0CE1
-0D02 0D03
-0D05 0D0C
-0D0E 0D10
-0D12 0D28
-0D2A 0D39
-0D3E 0D43
-0D46 0D48
-0D4A 0D4C
-0D57
-0D60 0D61
-0D82 0D83
-0D85 0D96
-0D9A 0DB1
-0DB3 0DBB
-0DBD
-0DC0 0DC6
-0DCF 0DD4
-0DD6
-0DD8 0DDF
-0DF2 0DF3
-0E01 0E3A
-0E40 0E46
-0E4D
-0E81 0E82
-0E84
-0E87 0E88
-0E8A
-0E8D
-0E94 0E97
-0E99 0E9F
-0EA1 0EA3
-0EA5
-0EA7
-0EAA 0EAB
-0EAD 0EB9
-0EBB 0EBD
-0EC0 0EC4
-0EC6
-0ECD
-0EDC 0EDD
-0F00
-0F40 0F47
-0F49 0F6A
-0F71 0F81
-0F88 0F8B
-0F90 0F97
-0F99 0FBC
-1000 1021
-1023 1027
-1029 102A
-102C 1032
-1036
-1038
-1050 1059
-10A0 10C5
-10D0 10F8
-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
-16EE 16F0
-1700 170C
-170E 1713
-1720 1733
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17C8
-17D7
-17DC
-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
-2071
-207F
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213D 213F
-2145 2149
-2160 2183
-3005 3006
-3031 3035
-303B 303C
-3041 3096
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FA5
-A000 A48C
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-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
-FE70 FE74
-FE76 FEFC
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10300 1031E
-10330 1034A
-10400 10425
-10428 1044D
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/perltl/lib/unicore/lib/Any.pl b/Master/perltl/lib/unicore/lib/Any.pl
deleted file mode 100644
index b30cb2fb7f2..00000000000
--- a/Master/perltl/lib/unicore/lib/Any.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Any}
-# \p{Any}
-#
-# Meaning: [\x{0000}-\x{10FFFF}]
-#
-return <<'END';
-0000 10FFFF
-END
diff --git a/Master/perltl/lib/unicore/lib/Arabic.pl b/Master/perltl/lib/unicore/lib/Arabic.pl
deleted file mode 100644
index ac5df6e8900..00000000000
--- a/Master/perltl/lib/unicore/lib/Arabic.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Arabic} (and fuzzy permutations)
-#
-# Meaning: Script 'ARABIC'
-#
-return <<'END';
-0621 063A ARABIC
-0641 064A ARABIC
-066E 066F ARABIC
-0671 06D3 ARABIC
-06D5 ARABIC
-06E5 06E6 ARABIC
-06FA 06FC ARABIC
-FB50 FBB1 ARABIC
-FBD3 FD3D ARABIC
-FD50 FD8F ARABIC
-FD92 FDC7 ARABIC
-FDF0 FDFB ARABIC
-FE70 FE74 ARABIC
-FE76 FEFC ARABIC
-END
diff --git a/Master/perltl/lib/unicore/lib/Armenian.pl b/Master/perltl/lib/unicore/lib/Armenian.pl
deleted file mode 100644
index 6652079be3a..00000000000
--- a/Master/perltl/lib/unicore/lib/Armenian.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Armenian} (and fuzzy permutations)
-#
-# Meaning: Script 'ARMENIAN'
-#
-return <<'END';
-0531 0556 ARMENIAN
-0559 ARMENIAN
-0561 0587 ARMENIAN
-FB13 FB17 ARMENIAN
-END
diff --git a/Master/perltl/lib/unicore/lib/AsciiHex.pl b/Master/perltl/lib/unicore/lib/AsciiHex.pl
deleted file mode 100644
index 24c43ee3771..00000000000
--- a/Master/perltl/lib/unicore/lib/AsciiHex.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{AsciiHexDigit} (and fuzzy permutations)
-#
-# Meaning: Extended property 'ASCII_Hex_Digit'
-#
-return <<'END';
-0030 0039 ASCII_Hex_Digit
-0041 0046 ASCII_Hex_Digit
-0061 0066 ASCII_Hex_Digit
-END
diff --git a/Master/perltl/lib/unicore/lib/Assigned.pl b/Master/perltl/lib/unicore/lib/Assigned.pl
deleted file mode 100644
index 5bd9faffbd3..00000000000
--- a/Master/perltl/lib/unicore/lib/Assigned.pl
+++ /dev/null
@@ -1,398 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Assigned}
-#
-# Meaning: All assigned code points
-#
-return <<'END';
-0000 0220
-0222 0233
-0250 02AD
-02B0 02EE
-0300 034F
-0360 036F
-0374 0375
-037A
-037E
-0384 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F6
-0400 0486
-0488 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-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 06ED
-06F0 06FE
-0700 070D
-070F 072C
-0730 074A
-0780 07B1
-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 10F8
-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
-1700 170C
-170E 1714
-1720 1736
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17DC
-17E0 17E9
-1800 180E
-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 2052
-2057
-205F 2063
-206A 2071
-2074 208E
-20A0 20B1
-20D0 20EA
-2100 213A
-213D 214B
-2153 2183
-2190 23CE
-2400 2426
-2440 244A
-2460 24FE
-2500 2613
-2616 2617
-2619 267D
-2680 2689
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2794
-2798 27AF
-27B1 27BE
-27D0 27EB
-27F0 2AFF
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3000 303F
-3041 3096
-3099 30FF
-3105 312C
-3131 318E
-3190 31B7
-31F0 321C
-3220 3243
-3251 327B
-327F 32CB
-32D0 32FE
-3300 3376
-337B 33DD
-33E0 33FE
-3400 4DB5
-4E00 9FA5
-A000 A48C
-A490 A4C6
-AC00 D7A3
-D800 FA2D
-FA30 FA6A
-FB00 FB06
-FB13 FB17
-FB1D FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3F
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFC
-FE00 FE0F
-FE20 FE23
-FE30 FE46
-FE49 FE52
-FE54 FE66
-FE68 FE6B
-FE70 FE74
-FE76 FEFC
-FEFF
-FF01 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE0 FFE6
-FFE8 FFEE
-FFF9 FFFD
-10300 1031E
-10320 10323
-10330 1034A
-10400 10425
-10428 1044D
-1D000 1D0F5
-1D100 1D126
-1D12A 1D1DD
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-E0001
-E0020 E007F
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/perltl/lib/unicore/lib/Bengali.pl b/Master/perltl/lib/unicore/lib/Bengali.pl
deleted file mode 100644
index 5d2b9db5849..00000000000
--- a/Master/perltl/lib/unicore/lib/Bengali.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Bengali} (and fuzzy permutations)
-#
-# Meaning: Script 'BENGALI'
-#
-return <<'END';
-0981 0983 BENGALI
-0985 098C BENGALI
-098F 0990 BENGALI
-0993 09A8 BENGALI
-09AA 09B0 BENGALI
-09B2 BENGALI
-09B6 09B9 BENGALI
-09BC BENGALI
-09BE 09C4 BENGALI
-09C7 09C8 BENGALI
-09CB 09CD BENGALI
-09D7 BENGALI
-09DC 09DD BENGALI
-09DF 09E3 BENGALI
-09E6 09F1 BENGALI
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiAL.pl b/Master/perltl/lib/unicore/lib/BidiAL.pl
deleted file mode 100644
index 4149869f8bb..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiAL.pl
+++ /dev/null
@@ -1,33 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiAL}
-#
-# Meaning: Bi-directional category 'AL'
-#
-return <<'END';
-061B
-061F
-0621 063A
-0640 064A
-066D 066F
-0671 06D5
-06DD
-06E5 06E6
-06FA 06FE
-0700 070D
-0710
-0712 072C
-0780 07A5
-07B1
-FB50 FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFC
-FE70 FE74
-FE76 FEFC
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiAN.pl b/Master/perltl/lib/unicore/lib/BidiAN.pl
deleted file mode 100644
index c5defcb1fb8..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiAN.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiAN}
-#
-# Meaning: Bi-directional category 'AN'
-#
-return <<'END';
-0660 0669
-066B 066C
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiB.pl b/Master/perltl/lib/unicore/lib/BidiB.pl
deleted file mode 100644
index 85572fec078..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiB.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiB}
-#
-# Meaning: Bi-directional category 'B'
-#
-return <<'END';
-000A
-000D
-001C 001E
-0085
-2029
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiBN.pl b/Master/perltl/lib/unicore/lib/BidiBN.pl
deleted file mode 100644
index b810db1e76c..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiBN.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiBN}
-#
-# Meaning: Bi-directional category 'BN'
-#
-return <<'END';
-0000 0008
-000E 001B
-007F 0084
-0086 009F
-070F
-180E
-200B 200D
-2060 2063
-206A 206F
-FEFF
-FFF9 FFFB
-1D173 1D17A
-E0001
-E0020 E007F
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiCS.pl b/Master/perltl/lib/unicore/lib/BidiCS.pl
deleted file mode 100644
index 7f17238b931..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiCS.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiCS}
-#
-# Meaning: Bi-directional category 'CS'
-#
-return <<'END';
-002C
-002E
-003A
-00A0
-060C
-FE50
-FE52
-FE55
-FF0C
-FF0E
-FF1A
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiCont.pl b/Master/perltl/lib/unicore/lib/BidiCont.pl
deleted file mode 100644
index 070ad87ba82..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiCont.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiControl} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Bidi_Control'
-#
-return <<'END';
-200E 200F Bidi_Control
-202A 202E Bidi_Control
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiEN.pl b/Master/perltl/lib/unicore/lib/BidiEN.pl
deleted file mode 100644
index 24a291f864b..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiEN.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiEN}
-#
-# Meaning: Bi-directional category 'EN'
-#
-return <<'END';
-0030 0039
-00B2 00B3
-00B9
-06F0 06F9
-2070
-2074 2079
-2080 2089
-2460 249B
-24EA
-FF10 FF19
-1D7CE 1D7FF
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiES.pl b/Master/perltl/lib/unicore/lib/BidiES.pl
deleted file mode 100644
index 9810f8118df..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiES.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiES}
-#
-# Meaning: Bi-directional category 'ES'
-#
-return <<'END';
-002F
-FF0F
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiET.pl b/Master/perltl/lib/unicore/lib/BidiET.pl
deleted file mode 100644
index 234cf5ff590..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiET.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiET}
-#
-# Meaning: Bi-directional category 'ET'
-#
-return <<'END';
-0023 0025
-002B
-002D
-00A2 00A5
-00B0 00B1
-066A
-09F2 09F3
-0E3F
-17DB
-2030 2034
-207A 207B
-208A 208B
-20A0 20B1
-212E
-2212 2213
-FB29
-FE5F
-FE62 FE63
-FE69 FE6A
-FF03 FF05
-FF0B
-FF0D
-FFE0 FFE1
-FFE5 FFE6
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiL.pl b/Master/perltl/lib/unicore/lib/BidiL.pl
deleted file mode 100644
index f4033f28e46..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiL.pl
+++ /dev/null
@@ -1,366 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiL}
-#
-# Meaning: Bi-directional category 'L'
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0220
-0222 0233
-0250 02AD
-02B0 02B8
-02BB 02C1
-02D0 02D1
-02E0 02E4
-02EE
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-0400 0482
-048A 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-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 10F8
-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
-1700 170C
-170E 1711
-1720 1731
-1735 1736
-1740 1751
-1760 176C
-176E 1770
-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
-2071
-207F
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213D 213F
-2145 2149
-2160 2183
-2336 237A
-2395
-249C 24E9
-3005 3007
-3021 3029
-3031 3035
-3038 303C
-3041 3096
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-3190 31B7
-31F0 321C
-3220 3243
-3260 327B
-327F 32B0
-32C0 32CB
-32D0 32FE
-3300 3376
-337B 33DD
-33E0 33FE
-A000 A48C
-F900 FA2D
-FA30 FA6A
-FB00 FB06
-FB13 FB17
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10300 1031E
-10320 10323
-10330 1034A
-10400 10425
-10428 1044D
-1D000 1D0F5
-1D100 1D126
-1D12A 1D166
-1D16A 1D172
-1D183 1D184
-1D18C 1D1A9
-1D1AE 1D1DD
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D7C9
-2F800 2FA1D
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiLRE.pl b/Master/perltl/lib/unicore/lib/BidiLRE.pl
deleted file mode 100644
index 5070363fc5c..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiLRE.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiLRE}
-#
-# Meaning: Bi-directional category 'LRE'
-#
-return <<'END';
-202A
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiLRO.pl b/Master/perltl/lib/unicore/lib/BidiLRO.pl
deleted file mode 100644
index 52ea9600f38..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiLRO.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiLRO}
-#
-# Meaning: Bi-directional category 'LRO'
-#
-return <<'END';
-202D
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiNSM.pl b/Master/perltl/lib/unicore/lib/BidiNSM.pl
deleted file mode 100644
index 7e2f4b10820..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiNSM.pl
+++ /dev/null
@@ -1,115 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiNSM}
-#
-# Meaning: Bi-directional category 'NSM'
-#
-return <<'END';
-0300 034F
-0360 036F
-0483 0486
-0488 0489
-0591 05A1
-05A3 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4
-064B 0655
-0670
-06D6 06DC
-06DE 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
-1712 1714
-1732 1734
-1752 1753
-1772 1773
-17B7 17BD
-17C6
-17C9 17D3
-180B 180D
-18A9
-20D0 20EA
-302A 302F
-3099 309A
-FB1E
-FE00 FE0F
-FE20 FE23
-1D167 1D169
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiON.pl b/Master/perltl/lib/unicore/lib/BidiON.pl
deleted file mode 100644
index 7fe891ebad3..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiON.pl
+++ /dev/null
@@ -1,121 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiON}
-#
-# Meaning: Bi-directional category 'ON'
-#
-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
-03F6
-058A
-06E9
-0F3A 0F3D
-169B 169C
-1800 180A
-1FBD
-1FBF 1FC1
-1FCD 1FCF
-1FDD 1FDF
-1FED 1FEF
-1FFD 1FFE
-2010 2027
-2035 2052
-2057
-207C 207E
-208C 208E
-2100 2101
-2103 2106
-2108 2109
-2114
-2116 2118
-211E 2123
-2125
-2127
-2129
-2132
-213A
-2140 2144
-214A 214B
-2153 215F
-2190 2211
-2214 2335
-237B 2394
-2396 23CE
-2400 2426
-2440 244A
-24EB 24FE
-2500 2613
-2616 2617
-2619 267D
-2680 2689
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2794
-2798 27AF
-27B1 27BE
-27D0 27EB
-27F0 2AFF
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3001 3004
-3008 3020
-3030
-3036 3037
-303D 303F
-309B 309C
-30A0
-30FB
-3251 325F
-32B1 32BF
-A490 A4C6
-FD3E FD3F
-FE30 FE46
-FE49 FE4F
-FE51
-FE54
-FE56 FE5E
-FE60 FE61
-FE64 FE66
-FE68
-FE6B
-FF01 FF02
-FF06 FF0A
-FF1B FF20
-FF3B FF40
-FF5B FF65
-FFE2 FFE4
-FFE8 FFEE
-FFFC FFFD
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiPDF.pl b/Master/perltl/lib/unicore/lib/BidiPDF.pl
deleted file mode 100644
index ef251bd04ce..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiPDF.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiPDF}
-#
-# Meaning: Bi-directional category 'PDF'
-#
-return <<'END';
-202C
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiR.pl b/Master/perltl/lib/unicore/lib/BidiR.pl
deleted file mode 100644
index 4d62027f26b..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiR.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiR}
-#
-# Meaning: Bi-directional category 'R'
-#
-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/Master/perltl/lib/unicore/lib/BidiRLE.pl b/Master/perltl/lib/unicore/lib/BidiRLE.pl
deleted file mode 100644
index dd2162396cc..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiRLE.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiRLE}
-#
-# Meaning: Bi-directional category 'RLE'
-#
-return <<'END';
-202B
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiRLO.pl b/Master/perltl/lib/unicore/lib/BidiRLO.pl
deleted file mode 100644
index 244385588b6..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiRLO.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiRLO}
-#
-# Meaning: Bi-directional category 'RLO'
-#
-return <<'END';
-202E
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiS.pl b/Master/perltl/lib/unicore/lib/BidiS.pl
deleted file mode 100644
index 27207fa5197..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiS.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiS}
-#
-# Meaning: Bi-directional category 'S'
-#
-return <<'END';
-0009
-000B
-001F
-END
diff --git a/Master/perltl/lib/unicore/lib/BidiWS.pl b/Master/perltl/lib/unicore/lib/BidiWS.pl
deleted file mode 100644
index 11896597aea..00000000000
--- a/Master/perltl/lib/unicore/lib/BidiWS.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{BidiWS}
-#
-# Meaning: Bi-directional category 'WS'
-#
-return <<'END';
-000C
-0020
-1680
-2000 200A
-2028
-202F
-205F
-3000
-END
diff --git a/Master/perltl/lib/unicore/lib/Blank.pl b/Master/perltl/lib/unicore/lib/Blank.pl
deleted file mode 100644
index 96498cb22fe..00000000000
--- a/Master/perltl/lib/unicore/lib/Blank.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Blank}
-#
-# Meaning: [[:Blank:]]
-#
-return <<'END';
-0009
-0020
-00A0
-1680
-2000 200B
-202F
-205F
-3000
-END
diff --git a/Master/perltl/lib/unicore/lib/Bopomofo.pl b/Master/perltl/lib/unicore/lib/Bopomofo.pl
deleted file mode 100644
index 525797c8b8d..00000000000
--- a/Master/perltl/lib/unicore/lib/Bopomofo.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Bopomofo} (and fuzzy permutations)
-#
-# Meaning: Script 'BOPOMOFO'
-#
-return <<'END';
-3105 312C BOPOMOFO
-31A0 31B7 BOPOMOFO
-END
diff --git a/Master/perltl/lib/unicore/lib/Buhid.pl b/Master/perltl/lib/unicore/lib/Buhid.pl
deleted file mode 100644
index c1ad8f86d2d..00000000000
--- a/Master/perltl/lib/unicore/lib/Buhid.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Buhid} (and fuzzy permutations)
-#
-# Meaning: Script 'BUHID'
-#
-return <<'END';
-1740 1753 BUHID
-END
diff --git a/Master/perltl/lib/unicore/lib/C.pl b/Master/perltl/lib/unicore/lib/C.pl
deleted file mode 100644
index bbe5b39e482..00000000000
--- a/Master/perltl/lib/unicore/lib/C.pl
+++ /dev/null
@@ -1,400 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{C}
-# \p{C} (and fuzzy permutations)
-#
-# Meaning: Major Category 'C'
-#
-return <<'END';
-0000 001F
-007F 009F
-0221
-0234 024F
-02AE 02AF
-02EF 02FF
-0350 035F
-0370 0373
-0376 0379
-037B 037D
-037F 0383
-038B
-038D
-03A2
-03CF
-03F7 03FF
-0487
-04CF
-04F6 04F7
-04FA 04FF
-0510 0530
-0557 0558
-0560
-0588
-058B 0590
-05A2
-05BA
-05C5 05CF
-05EB 05EF
-05F5 060B
-060D 061A
-061C 061E
-0620
-063B 063F
-0656 065F
-06DD
-06EE 06EF
-06FF
-070E 070F
-072D 072F
-074B 077F
-07B2 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
-10F9 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 16FF
-170D
-1715 171F
-1737 173F
-1754 175F
-176D
-1771
-1774 177F
-17DD 17DF
-17EA 17FF
-180E 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
-200C 200F
-202A 202E
-2053 2056
-2058 205E
-2060 206F
-2072 2073
-208F 209F
-20B2 20CF
-20EB 20FF
-213B 213C
-214C 2152
-2184 218F
-23CF 23FF
-2427 243F
-244B 245F
-24FF
-2614 2615
-2618
-267E 267F
-268A 2700
-2705
-270A 270B
-2728
-274C
-274E
-2753 2755
-2757
-275F 2760
-2795 2797
-27B0
-27BF 27CF
-27EC 27EF
-2B00 2E7F
-2E9A
-2EF4 2EFF
-2FD6 2FEF
-2FFC 2FFF
-3040
-3097 3098
-3100 3104
-312D 3130
-318F
-31B8 31EF
-321D 321F
-3244 3250
-327C 327E
-32CC 32CF
-32FF
-3377 337A
-33DE 33DF
-33FF
-4DB6 4DFF
-9FA6 9FFF
-A48D A48F
-A4C7 ABFF
-D7A4 F8FF
-FA2E FA2F
-FA6B FAFF
-FB07 FB12
-FB18 FB1C
-FB37
-FB3D
-FB3F
-FB42
-FB45
-FBB2 FBD2
-FD40 FD4F
-FD90 FD91
-FDC8 FDEF
-FDFD FDFF
-FE10 FE1F
-FE24 FE2F
-FE47 FE48
-FE53
-FE67
-FE6C FE6F
-FE75
-FEFD FF00
-FFBF FFC1
-FFC8 FFC9
-FFD0 FFD1
-FFD8 FFD9
-FFDD FFDF
-FFE7
-FFEF FFFB
-FFFE 102FF
-1031F
-10324 1032F
-1034B 103FF
-10426 10427
-1044E 1CFFF
-1D0F6 1D0FF
-1D127 1D129
-1D173 1D17A
-1D1DE 1D3FF
-1D455
-1D49D
-1D4A0 1D4A1
-1D4A3 1D4A4
-1D4A7 1D4A8
-1D4AD
-1D4BA
-1D4BC
-1D4C1
-1D4C4
-1D506
-1D50B 1D50C
-1D515
-1D51D
-1D53A
-1D53F
-1D545
-1D547 1D549
-1D551
-1D6A4 1D6A7
-1D7CA 1D7CD
-1D800 1FFFF
-2A6D7 2F7FF
-2FA1E 10FFFF
-END
diff --git a/Master/perltl/lib/unicore/lib/Canadian.pl b/Master/perltl/lib/unicore/lib/Canadian.pl
deleted file mode 100644
index e4942b1d441..00000000000
--- a/Master/perltl/lib/unicore/lib/Canadian.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{CanadianAboriginal} (and fuzzy permutations)
-#
-# Meaning: Script 'CANADIAN_ABORIGINAL'
-#
-return <<'END';
-1401 166C CANADIAN_ABORIGINAL
-166F 1676 CANADIAN_ABORIGINAL
-END
diff --git a/Master/perltl/lib/unicore/lib/Canon.pl b/Master/perltl/lib/unicore/lib/Canon.pl
deleted file mode 100644
index 4d30c4b3439..00000000000
--- a/Master/perltl/lib/unicore/lib/Canon.pl
+++ /dev/null
@@ -1,224 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Canon}
-#
-# Meaning: Decomposes to multiple characters
-#
-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
-2ADC
-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
-FA30 FA6A
-FB1D
-FB1F
-FB2A FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FB4E
-1D15E 1D164
-1D1BB 1D1C0
-2F800 2FA1D
-END
diff --git a/Master/perltl/lib/unicore/lib/Cc.pl b/Master/perltl/lib/unicore/lib/Cc.pl
deleted file mode 100644
index 34faf2eca8f..00000000000
--- a/Master/perltl/lib/unicore/lib/Cc.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cc}
-# \p{Cc} (and fuzzy permutations)
-#
-# Meaning: General Category 'Cc'
-#
-return <<'END';
-0000 001F
-007F 009F
-END
diff --git a/Master/perltl/lib/unicore/lib/Cf.pl b/Master/perltl/lib/unicore/lib/Cf.pl
deleted file mode 100644
index 9012824ee45..00000000000
--- a/Master/perltl/lib/unicore/lib/Cf.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cf}
-# \p{Cf} (and fuzzy permutations)
-#
-# Meaning: General Category 'Cf'
-#
-return <<'END';
-06DD
-070F
-180E
-200C 200F
-202A 202E
-2060 2063
-206A 206F
-FEFF
-FFF9 FFFB
-1D173 1D17A
-E0001
-E0020 E007F
-END
diff --git a/Master/perltl/lib/unicore/lib/Cherokee.pl b/Master/perltl/lib/unicore/lib/Cherokee.pl
deleted file mode 100644
index 4844ef48799..00000000000
--- a/Master/perltl/lib/unicore/lib/Cherokee.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cherokee} (and fuzzy permutations)
-#
-# Meaning: Script 'CHEROKEE'
-#
-return <<'END';
-13A0 13F4 CHEROKEE
-END
diff --git a/Master/perltl/lib/unicore/lib/Cn.pl b/Master/perltl/lib/unicore/lib/Cn.pl
deleted file mode 100644
index c080d192302..00000000000
--- a/Master/perltl/lib/unicore/lib/Cn.pl
+++ /dev/null
@@ -1,399 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cn}
-# \p{Cn} (and fuzzy permutations)
-#
-# Meaning: General Category 'Cn' [not functional in Perl]
-#
-return <<'END';
-0221
-0234 024F
-02AE 02AF
-02EF 02FF
-0350 035F
-0370 0373
-0376 0379
-037B 037D
-037F 0383
-038B
-038D
-03A2
-03CF
-03F7 03FF
-0487
-04CF
-04F6 04F7
-04FA 04FF
-0510 0530
-0557 0558
-0560
-0588
-058B 0590
-05A2
-05BA
-05C5 05CF
-05EB 05EF
-05F5 060B
-060D 061A
-061C 061E
-0620
-063B 063F
-0656 065F
-06EE 06EF
-06FF
-070E
-072D 072F
-074B 077F
-07B2 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
-10F9 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 16FF
-170D
-1715 171F
-1737 173F
-1754 175F
-176D
-1771
-1774 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
-2053 2056
-2058 205E
-2064 2069
-2072 2073
-208F 209F
-20B2 20CF
-20EB 20FF
-213B 213C
-214C 2152
-2184 218F
-23CF 23FF
-2427 243F
-244B 245F
-24FF
-2614 2615
-2618
-267E 267F
-268A 2700
-2705
-270A 270B
-2728
-274C
-274E
-2753 2755
-2757
-275F 2760
-2795 2797
-27B0
-27BF 27CF
-27EC 27EF
-2B00 2E7F
-2E9A
-2EF4 2EFF
-2FD6 2FEF
-2FFC 2FFF
-3040
-3097 3098
-3100 3104
-312D 3130
-318F
-31B8 31EF
-321D 321F
-3244 3250
-327C 327E
-32CC 32CF
-32FF
-3377 337A
-33DE 33DF
-33FF
-4DB6 4DFF
-9FA6 9FFF
-A48D A48F
-A4C7 ABFF
-D7A4 D7FF
-FA2E FA2F
-FA6B FAFF
-FB07 FB12
-FB18 FB1C
-FB37
-FB3D
-FB3F
-FB42
-FB45
-FBB2 FBD2
-FD40 FD4F
-FD90 FD91
-FDC8 FDEF
-FDFD FDFF
-FE10 FE1F
-FE24 FE2F
-FE47 FE48
-FE53
-FE67
-FE6C FE6F
-FE75
-FEFD FEFE
-FF00
-FFBF FFC1
-FFC8 FFC9
-FFD0 FFD1
-FFD8 FFD9
-FFDD FFDF
-FFE7
-FFEF FFF8
-FFFE 102FF
-1031F
-10324 1032F
-1034B 103FF
-10426 10427
-1044E 1CFFF
-1D0F6 1D0FF
-1D127 1D129
-1D1DE 1D3FF
-1D455
-1D49D
-1D4A0 1D4A1
-1D4A3 1D4A4
-1D4A7 1D4A8
-1D4AD
-1D4BA
-1D4BC
-1D4C1
-1D4C4
-1D506
-1D50B 1D50C
-1D515
-1D51D
-1D53A
-1D53F
-1D545
-1D547 1D549
-1D551
-1D6A4 1D6A7
-1D7CA 1D7CD
-1D800 1FFFF
-2A6D7 2F7FF
-2FA1E E0000
-E0002 E001F
-E0080 EFFFF
-FFFFE FFFFF
-10FFFE 10FFFF
-END
diff --git a/Master/perltl/lib/unicore/lib/Cntrl.pl b/Master/perltl/lib/unicore/lib/Cntrl.pl
deleted file mode 100644
index b794776699b..00000000000
--- a/Master/perltl/lib/unicore/lib/Cntrl.pl
+++ /dev/null
@@ -1,29 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cntrl}
-#
-# Meaning: [[:Cntrl:]]
-#
-return <<'END';
-0000 001F
-007F 009F
-06DD
-070F
-180E
-200C 200F
-202A 202E
-2060 2063
-206A 206F
-D800 F8FF
-FEFF
-FFF9 FFFB
-1D173 1D17A
-E0001
-E0020 E007F
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/perltl/lib/unicore/lib/Co.pl b/Master/perltl/lib/unicore/lib/Co.pl
deleted file mode 100644
index 1f1ad215689..00000000000
--- a/Master/perltl/lib/unicore/lib/Co.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Co}
-# \p{Co} (and fuzzy permutations)
-#
-# Meaning: General Category 'Co'
-#
-return <<'END';
-E000 F8FF
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/perltl/lib/unicore/lib/Common.pl b/Master/perltl/lib/unicore/lib/Common.pl
deleted file mode 100644
index 677d38e8bf2..00000000000
--- a/Master/perltl/lib/unicore/lib/Common.pl
+++ /dev/null
@@ -1,367 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Common} (and fuzzy permutations)
-#
-# Meaning: Pseudo-Script of codepoints not in other Unicode scripts
-#
-return <<'END';
-0000 0040
-005B 0060
-007B 00A9
-00AB 00B4
-00B6 00B9
-00BB 00BF
-00D7
-00F7
-0221
-0234 024F
-02AE 02AF
-02B9 02DF
-02E5 02FF
-0350 035F
-0370 0379
-037B 0385
-0387
-038B
-038D
-03A2
-03CF
-03F6 03FF
-0482
-0487
-04CF
-04F6 04F7
-04FA 04FF
-0510 0530
-0557 0558
-055A 0560
-0588 0590
-05A2
-05BA
-05BE
-05C0
-05C3
-05C5 05CF
-05EB 05EF
-05F3 0620
-063B 0640
-0656 066D
-06D4
-06E9
-06EE 06F9
-06FD 070F
-072D 072F
-074B 077F
-07B2 0900
-0904
-093A 093B
-094E 094F
-0955 0957
-0964 0965
-0970 0980
-0984
-098D 098E
-0991 0992
-09A9
-09B1
-09B3 09B5
-09BA 09BB
-09BD
-09C5 09C6
-09C9 09CA
-09CE 09D6
-09D8 09DB
-09DE
-09E4 09E5
-09F2 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
-0B70 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
-0DF4 0E00
-0E3B 0E3F
-0E4F
-0E5A 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
-0F01 0F17
-0F1A 0F1F
-0F34
-0F36
-0F38
-0F3A 0F3F
-0F48
-0F6B 0F70
-0F85
-0F8C 0F8F
-0F98
-0FBD 0FC5
-0FC7 0FFF
-1022
-1028
-102B
-1033 1035
-103A 103F
-104A 104F
-105A 109F
-10C6 10CF
-10F9 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 1368
-137D 139F
-13F5 1400
-166D 166E
-1677 1680
-169B 169F
-16EB 16ED
-16F1 16FF
-170D
-1715 171F
-1735 173F
-1754 175F
-176D
-1771
-1774 177F
-17D4 17DF
-17EA 180A
-180E 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
-1FBD
-1FBF 1FC1
-1FC5
-1FCD 1FCF
-1FD4 1FD5
-1FDC 1FDF
-1FED 1FF1
-1FF5
-1FFD 2070
-2072 207E
-2080 20CF
-20EB 2125
-2127 2129
-212C 2E7F
-2E9A
-2EF4 2EFF
-2FD6 3004
-3006
-3008 3020
-3030 3037
-303C 3040
-3097 3098
-309B 309C
-30A0
-30FB 30FC
-3100 3104
-312D 3130
-318F 319F
-31B8 31EF
-3200 33FF
-4DB6 4DFF
-9FA6 9FFF
-A48D A48F
-A4A2 A4A3
-A4B4
-A4C1
-A4C5
-A4C7 ABFF
-D7A4 F8FF
-FA2E FA2F
-FA6B FAFF
-FB07 FB12
-FB18 FB1C
-FB29
-FB37
-FB3D
-FB3F
-FB42
-FB45
-FBB2 FBD2
-FD3E FD4F
-FD90 FD91
-FDC8 FDEF
-FDFC FDFF
-FE10 FE1F
-FE24 FE6F
-FE75
-FEFD FF20
-FF3B FF40
-FF5B FF65
-FF70
-FF9E FF9F
-FFBF FFC1
-FFC8 FFC9
-FFD0 FFD1
-FFD8 FFD9
-FFDD 102FF
-1031F 1032F
-1034B 103FF
-10426 10427
-1044E 1D166
-1D16A 1D17A
-1D183 1D184
-1D18C 1D1A9
-1D1AE 1FFFF
-2A6D7 2F7FF
-2FA1E 10FFFF
-END
diff --git a/Master/perltl/lib/unicore/lib/Compat.pl b/Master/perltl/lib/unicore/lib/Compat.pl
deleted file mode 100644
index 12806f13605..00000000000
--- a/Master/perltl/lib/unicore/lib/Compat.pl
+++ /dev/null
@@ -1,143 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Compat}
-#
-# Meaning: Compatible with a more-basic character
-#
-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
-03F4 03F5
-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
-2047 2049
-2057
-205F
-2070 2071
-2074 208E
-20A8
-2100 2103
-2105 2107
-2109 2113
-2115 2116
-2119 211D
-2120 2122
-2124
-2128
-212C 212D
-212F 2131
-2133 2139
-213D 2140
-2145 2149
-2153 217F
-222C 222D
-222F 2230
-2460 24EA
-2A0C
-2A74 2A76
-2E9F
-2EF3
-2F00 2FD5
-3000
-3036
-3038 303A
-309B 309C
-309F
-30FF
-3131 318E
-3192 319F
-3200 321C
-3220 3243
-3251 327B
-3280 32CB
-32D0 32FE
-3300 3376
-337B 33DD
-33E0 33FE
-FB00 FB06
-FB13 FB17
-FB20 FB29
-FB4F FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFC
-FE30 FE44
-FE49 FE52
-FE54 FE66
-FE68 FE6B
-FE70 FE72
-FE74
-FE76 FEFC
-FF01 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE0 FFE6
-FFE8 FFEE
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D7C9
-1D7CE 1D7FF
-END
diff --git a/Master/perltl/lib/unicore/lib/Cs.pl b/Master/perltl/lib/unicore/lib/Cs.pl
deleted file mode 100644
index 4624d9da766..00000000000
--- a/Master/perltl/lib/unicore/lib/Cs.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cs}
-# \p{Cs} (and fuzzy permutations)
-#
-# Meaning: General Category 'Cs'
-#
-return <<'END';
-D800 DFFF
-END
diff --git a/Master/perltl/lib/unicore/lib/Cyrillic.pl b/Master/perltl/lib/unicore/lib/Cyrillic.pl
deleted file mode 100644
index 690e2f7a9ef..00000000000
--- a/Master/perltl/lib/unicore/lib/Cyrillic.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Cyrillic} (and fuzzy permutations)
-#
-# Meaning: Script 'CYRILLIC'
-#
-return <<'END';
-0400 0481 CYRILLIC
-0483 0486 CYRILLIC
-048A 04CE CYRILLIC
-04D0 04F5 CYRILLIC
-04F8 04F9 CYRILLIC
-0500 050F CYRILLIC
-END
diff --git a/Master/perltl/lib/unicore/lib/DCcircle.pl b/Master/perltl/lib/unicore/lib/DCcircle.pl
deleted file mode 100644
index b873609a4de..00000000000
--- a/Master/perltl/lib/unicore/lib/DCcircle.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCcircle}
-#
-# Meaning: Compatible with 'circle'
-#
-return <<'END';
-2460 2473
-24B6 24EA
-3251 327B
-3280 32BF
-32D0 32FE
-END
diff --git a/Master/perltl/lib/unicore/lib/DCcompat.pl b/Master/perltl/lib/unicore/lib/DCcompat.pl
deleted file mode 100644
index a35aaa9da3c..00000000000
--- a/Master/perltl/lib/unicore/lib/DCcompat.pl
+++ /dev/null
@@ -1,81 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCcompat}
-#
-# Meaning: Compatible with 'compat'
-#
-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
-03F4 03F5
-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
-2047 2049
-2057
-205F
-20A8
-2100 2101
-2103
-2105 2107
-2109
-2116
-2121
-2135 2138
-2160 217F
-222C 222D
-222F 2230
-2474 24B5
-2A0C
-2A74 2A76
-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/Master/perltl/lib/unicore/lib/DCfinal.pl b/Master/perltl/lib/unicore/lib/DCfinal.pl
deleted file mode 100644
index d5fa53efe45..00000000000
--- a/Master/perltl/lib/unicore/lib/DCfinal.pl
+++ /dev/null
@@ -1,125 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCfinal}
-#
-# Meaning: Compatible with 'final'
-#
-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/Master/perltl/lib/unicore/lib/DCfont.pl b/Master/perltl/lib/unicore/lib/DCfont.pl
deleted file mode 100644
index 30b94d1aeb5..00000000000
--- a/Master/perltl/lib/unicore/lib/DCfont.pl
+++ /dev/null
@@ -1,47 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCfont}
-#
-# Meaning: Compatible with 'font'
-#
-return <<'END';
-2102
-210A 2113
-2115
-2119 211D
-2124
-2128
-212C 212D
-212F 2131
-2133 2134
-2139
-213D 2140
-2145 2149
-FB20 FB29
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D7C9
-1D7CE 1D7FF
-END
diff --git a/Master/perltl/lib/unicore/lib/DCfracti.pl b/Master/perltl/lib/unicore/lib/DCfracti.pl
deleted file mode 100644
index 87b4247f476..00000000000
--- a/Master/perltl/lib/unicore/lib/DCfracti.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCfraction}
-#
-# Meaning: Compatible with 'fraction'
-#
-return <<'END';
-00BC 00BE
-2153 215F
-END
diff --git a/Master/perltl/lib/unicore/lib/DCinitia.pl b/Master/perltl/lib/unicore/lib/DCinitia.pl
deleted file mode 100644
index b903eceef61..00000000000
--- a/Master/perltl/lib/unicore/lib/DCinitia.pl
+++ /dev/null
@@ -1,87 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCinitial}
-#
-# Meaning: Compatible with 'initial'
-#
-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/Master/perltl/lib/unicore/lib/DCisolat.pl b/Master/perltl/lib/unicore/lib/DCisolat.pl
deleted file mode 100644
index d973ea495e2..00000000000
--- a/Master/perltl/lib/unicore/lib/DCisolat.pl
+++ /dev/null
@@ -1,110 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCisolated}
-#
-# Meaning: Compatible with 'isolated'
-#
-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 FDFC
-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/Master/perltl/lib/unicore/lib/DCmedial.pl b/Master/perltl/lib/unicore/lib/DCmedial.pl
deleted file mode 100644
index 8d15d90321d..00000000000
--- a/Master/perltl/lib/unicore/lib/DCmedial.pl
+++ /dev/null
@@ -1,66 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCmedial}
-#
-# Meaning: Compatible with 'medial'
-#
-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/Master/perltl/lib/unicore/lib/DCnarrow.pl b/Master/perltl/lib/unicore/lib/DCnarrow.pl
deleted file mode 100644
index 33eca3ce359..00000000000
--- a/Master/perltl/lib/unicore/lib/DCnarrow.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCnarrow}
-#
-# Meaning: Compatible with 'narrow'
-#
-return <<'END';
-FF61 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE8 FFEE
-END
diff --git a/Master/perltl/lib/unicore/lib/DCnoBrea.pl b/Master/perltl/lib/unicore/lib/DCnoBrea.pl
deleted file mode 100644
index 8cbaecd257a..00000000000
--- a/Master/perltl/lib/unicore/lib/DCnoBrea.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCnoBreak}
-#
-# Meaning: Compatible with 'noBreak'
-#
-return <<'END';
-00A0
-0F0C
-2007
-2011
-202F
-END
diff --git a/Master/perltl/lib/unicore/lib/DCsmall.pl b/Master/perltl/lib/unicore/lib/DCsmall.pl
deleted file mode 100644
index 6606d7567fd..00000000000
--- a/Master/perltl/lib/unicore/lib/DCsmall.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCsmall}
-#
-# Meaning: Compatible with 'small'
-#
-return <<'END';
-FE50 FE52
-FE54 FE66
-FE68 FE6B
-END
diff --git a/Master/perltl/lib/unicore/lib/DCsquare.pl b/Master/perltl/lib/unicore/lib/DCsquare.pl
deleted file mode 100644
index 28d4f64d7b6..00000000000
--- a/Master/perltl/lib/unicore/lib/DCsquare.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCsquare}
-#
-# Meaning: Compatible with 'square'
-#
-return <<'END';
-3300 3357
-3371 3376
-337B 33DD
-END
diff --git a/Master/perltl/lib/unicore/lib/DCsub.pl b/Master/perltl/lib/unicore/lib/DCsub.pl
deleted file mode 100644
index df3daf6bb0a..00000000000
--- a/Master/perltl/lib/unicore/lib/DCsub.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCsub}
-#
-# Meaning: Compatible with 'sub'
-#
-return <<'END';
-2080 208E
-END
diff --git a/Master/perltl/lib/unicore/lib/DCsuper.pl b/Master/perltl/lib/unicore/lib/DCsuper.pl
deleted file mode 100644
index a11ac2dcb96..00000000000
--- a/Master/perltl/lib/unicore/lib/DCsuper.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCsuper}
-#
-# Meaning: Compatible with 'super'
-#
-return <<'END';
-00AA
-00B2 00B3
-00B9 00BA
-02B0 02B8
-02E0 02E4
-2070 2071
-2074 207F
-2120
-2122
-3192 319F
-END
diff --git a/Master/perltl/lib/unicore/lib/DCvertic.pl b/Master/perltl/lib/unicore/lib/DCvertic.pl
deleted file mode 100644
index d7928e562f3..00000000000
--- a/Master/perltl/lib/unicore/lib/DCvertic.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCvertical}
-#
-# Meaning: Compatible with 'vertical'
-#
-return <<'END';
-309F
-30FF
-FE30 FE44
-END
diff --git a/Master/perltl/lib/unicore/lib/DCwide.pl b/Master/perltl/lib/unicore/lib/DCwide.pl
deleted file mode 100644
index 664c498d281..00000000000
--- a/Master/perltl/lib/unicore/lib/DCwide.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{DCwide}
-#
-# Meaning: Compatible with 'wide'
-#
-return <<'END';
-3000
-FF01 FF60
-FFE0 FFE6
-END
diff --git a/Master/perltl/lib/unicore/lib/Dash.pl b/Master/perltl/lib/unicore/lib/Dash.pl
deleted file mode 100644
index 3d4dd59b7b0..00000000000
--- a/Master/perltl/lib/unicore/lib/Dash.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Dash} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Dash'
-#
-return <<'END';
-002D Dash
-00AD Dash
-058A Dash
-1806 Dash
-2010 2015 Dash
-207B Dash
-208B Dash
-2212 Dash
-301C Dash
-3030 Dash
-FE31 FE32 Dash
-FE58 Dash
-FE63 Dash
-FF0D Dash
-END
diff --git a/Master/perltl/lib/unicore/lib/Deprecat.pl b/Master/perltl/lib/unicore/lib/Deprecat.pl
deleted file mode 100644
index 1866c6c2da6..00000000000
--- a/Master/perltl/lib/unicore/lib/Deprecat.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Deprecated} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Deprecated'
-#
-return <<'END';
-0340 0341 Deprecated
-206A 206F Deprecated
-END
diff --git a/Master/perltl/lib/unicore/lib/Deseret.pl b/Master/perltl/lib/unicore/lib/Deseret.pl
deleted file mode 100644
index 20431e628f8..00000000000
--- a/Master/perltl/lib/unicore/lib/Deseret.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Deseret} (and fuzzy permutations)
-#
-# Meaning: Script 'DESERET'
-#
-return <<'END';
-10400 10425 DESERET
-10428 1044D DESERET
-END
diff --git a/Master/perltl/lib/unicore/lib/Devanaga.pl b/Master/perltl/lib/unicore/lib/Devanaga.pl
deleted file mode 100644
index d35fc083127..00000000000
--- a/Master/perltl/lib/unicore/lib/Devanaga.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Devanagari} (and fuzzy permutations)
-#
-# Meaning: Script 'DEVANAGARI'
-#
-return <<'END';
-0901 0903 DEVANAGARI
-0905 0939 DEVANAGARI
-093C 094D DEVANAGARI
-0950 0954 DEVANAGARI
-0958 0963 DEVANAGARI
-0966 096F DEVANAGARI
-END
diff --git a/Master/perltl/lib/unicore/lib/Diacriti.pl b/Master/perltl/lib/unicore/lib/Diacriti.pl
deleted file mode 100644
index e22111672b7..00000000000
--- a/Master/perltl/lib/unicore/lib/Diacriti.pl
+++ /dev/null
@@ -1,89 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Diacritic} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Diacritic'
-#
-return <<'END';
-005E Diacritic
-0060 Diacritic
-00A8 Diacritic
-00AF Diacritic
-00B4 Diacritic
-00B7 00B8 Diacritic
-02B0 02EE Diacritic
-0300 034E Diacritic
-0360 0362 Diacritic
-0374 0375 Diacritic
-037A Diacritic
-0384 0385 Diacritic
-0483 0486 Diacritic
-0559 Diacritic
-0591 05A1 Diacritic
-05A3 05B9 Diacritic
-05BB 05BD Diacritic
-05BF Diacritic
-05C1 05C2 Diacritic
-05C4 Diacritic
-064B 0652 Diacritic
-06DF 06E0 Diacritic
-06E5 06E6 Diacritic
-06EA 06EC Diacritic
-0730 074A Diacritic
-07A6 07B0 Diacritic
-093C Diacritic
-094D Diacritic
-0951 0954 Diacritic
-09BC Diacritic
-09CD Diacritic
-0A3C Diacritic
-0A4D Diacritic
-0ABC Diacritic
-0ACD Diacritic
-0B3C Diacritic
-0B4D Diacritic
-0BCD Diacritic
-0C4D Diacritic
-0CCD Diacritic
-0D4D Diacritic
-0DCA Diacritic
-0E47 0E4C Diacritic
-0E4E Diacritic
-0EC8 0ECC Diacritic
-0F18 0F19 Diacritic
-0F35 Diacritic
-0F37 Diacritic
-0F39 Diacritic
-0F3E 0F3F Diacritic
-0F82 0F84 Diacritic
-0F86 0F87 Diacritic
-0FC6 Diacritic
-1037 Diacritic
-1039 Diacritic
-17C9 17D3 Diacritic
-1FBD Diacritic
-1FBF 1FC1 Diacritic
-1FCD 1FCF Diacritic
-1FDD 1FDF Diacritic
-1FED 1FEF Diacritic
-1FFD 1FFE Diacritic
-302A 302F Diacritic
-3099 309C Diacritic
-30FC Diacritic
-FB1E Diacritic
-FE20 FE23 Diacritic
-FF3E Diacritic
-FF40 Diacritic
-FF70 Diacritic
-FF9E FF9F Diacritic
-FFE3 Diacritic
-1D167 1D169 Diacritic
-1D16D 1D172 Diacritic
-1D17B 1D182 Diacritic
-1D185 1D18B Diacritic
-1D1AA 1D1AD Diacritic
-END
diff --git a/Master/perltl/lib/unicore/lib/Digit.pl b/Master/perltl/lib/unicore/lib/Digit.pl
deleted file mode 100644
index 3a8c507ae73..00000000000
--- a/Master/perltl/lib/unicore/lib/Digit.pl
+++ /dev/null
@@ -1,33 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Digit}
-#
-# Meaning: [[:Digit:]]
-#
-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
-1D7CE 1D7FF
-END
diff --git a/Master/perltl/lib/unicore/lib/Ethiopic.pl b/Master/perltl/lib/unicore/lib/Ethiopic.pl
deleted file mode 100644
index 433d7d8e040..00000000000
--- a/Master/perltl/lib/unicore/lib/Ethiopic.pl
+++ /dev/null
@@ -1,38 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ethiopic} (and fuzzy permutations)
-#
-# Meaning: Script 'ETHIOPIC'
-#
-return <<'END';
-1200 1206 ETHIOPIC
-1208 1246 ETHIOPIC
-1248 ETHIOPIC
-124A 124D ETHIOPIC
-1250 1256 ETHIOPIC
-1258 ETHIOPIC
-125A 125D ETHIOPIC
-1260 1286 ETHIOPIC
-1288 ETHIOPIC
-128A 128D ETHIOPIC
-1290 12AE ETHIOPIC
-12B0 ETHIOPIC
-12B2 12B5 ETHIOPIC
-12B8 12BE ETHIOPIC
-12C0 ETHIOPIC
-12C2 12C5 ETHIOPIC
-12C8 12CE ETHIOPIC
-12D0 12D6 ETHIOPIC
-12D8 12EE ETHIOPIC
-12F0 130E ETHIOPIC
-1310 ETHIOPIC
-1312 1315 ETHIOPIC
-1318 131E ETHIOPIC
-1320 1346 ETHIOPIC
-1348 135A ETHIOPIC
-1369 137C ETHIOPIC
-END
diff --git a/Master/perltl/lib/unicore/lib/Extender.pl b/Master/perltl/lib/unicore/lib/Extender.pl
deleted file mode 100644
index dd0dab84ba9..00000000000
--- a/Master/perltl/lib/unicore/lib/Extender.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Extender} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Extender'
-#
-return <<'END';
-00B7 Extender
-02D0 02D1 Extender
-0640 Extender
-0E46 Extender
-0EC6 Extender
-1843 Extender
-3005 Extender
-3031 3035 Extender
-309D 309E Extender
-30FC 30FE Extender
-FF70 Extender
-END
diff --git a/Master/perltl/lib/unicore/lib/Georgian.pl b/Master/perltl/lib/unicore/lib/Georgian.pl
deleted file mode 100644
index cd56aaa56d0..00000000000
--- a/Master/perltl/lib/unicore/lib/Georgian.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Georgian} (and fuzzy permutations)
-#
-# Meaning: Script 'GEORGIAN'
-#
-return <<'END';
-10A0 10C5 GEORGIAN
-10D0 10F8 GEORGIAN
-END
diff --git a/Master/perltl/lib/unicore/lib/Gothic.pl b/Master/perltl/lib/unicore/lib/Gothic.pl
deleted file mode 100644
index 321d7234fc6..00000000000
--- a/Master/perltl/lib/unicore/lib/Gothic.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Gothic} (and fuzzy permutations)
-#
-# Meaning: Script 'GOTHIC'
-#
-return <<'END';
-10330 1034A GOTHIC
-END
diff --git a/Master/perltl/lib/unicore/lib/Graph.pl b/Master/perltl/lib/unicore/lib/Graph.pl
deleted file mode 100644
index e3e98b518dc..00000000000
--- a/Master/perltl/lib/unicore/lib/Graph.pl
+++ /dev/null
@@ -1,398 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Graph}
-#
-# Meaning: [[:Graph:]]
-#
-return <<'END';
-0021 007E
-00A1 0220
-0222 0233
-0250 02AD
-02B0 02EE
-0300 034F
-0360 036F
-0374 0375
-037A
-037E
-0384 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F6
-0400 0486
-0488 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-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 06DC
-06DE 06ED
-06F0 06FE
-0700 070D
-0710 072C
-0730 074A
-0780 07B1
-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 10F8
-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
-1700 170C
-170E 1714
-1720 1736
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17DC
-17E0 17E9
-1800 180D
-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 2052
-2057
-2070 2071
-2074 208E
-20A0 20B1
-20D0 20EA
-2100 213A
-213D 214B
-2153 2183
-2190 23CE
-2400 2426
-2440 244A
-2460 24FE
-2500 2613
-2616 2617
-2619 267D
-2680 2689
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2794
-2798 27AF
-27B1 27BE
-27D0 27EB
-27F0 2AFF
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3001 303F
-3041 3096
-3099 30FF
-3105 312C
-3131 318E
-3190 31B7
-31F0 321C
-3220 3243
-3251 327B
-327F 32CB
-32D0 32FE
-3300 3376
-337B 33DD
-33E0 33FE
-3400 4DB5
-4E00 9FA5
-A000 A48C
-A490 A4C6
-AC00 D7A3
-E000 FA2D
-FA30 FA6A
-FB00 FB06
-FB13 FB17
-FB1D FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3F
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFC
-FE00 FE0F
-FE20 FE23
-FE30 FE46
-FE49 FE52
-FE54 FE66
-FE68 FE6B
-FE70 FE74
-FE76 FEFC
-FF01 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE0 FFE6
-FFE8 FFEE
-FFFC FFFD
-10300 1031E
-10320 10323
-10330 1034A
-10400 10425
-10428 1044D
-1D000 1D0F5
-1D100 1D126
-1D12A 1D172
-1D17B 1D1DD
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/perltl/lib/unicore/lib/Grapheme.pl b/Master/perltl/lib/unicore/lib/Grapheme.pl
deleted file mode 100644
index dc2183abb46..00000000000
--- a/Master/perltl/lib/unicore/lib/Grapheme.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{GraphemeLink} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Grapheme_Link'
-#
-return <<'END';
-094D Grapheme_Link
-09CD Grapheme_Link
-0A4D Grapheme_Link
-0ACD Grapheme_Link
-0B4D Grapheme_Link
-0BCD Grapheme_Link
-0C4D Grapheme_Link
-0CCD Grapheme_Link
-0D4D Grapheme_Link
-0DCA Grapheme_Link
-0E3A Grapheme_Link
-1039 Grapheme_Link
-17D2 Grapheme_Link
-END
diff --git a/Master/perltl/lib/unicore/lib/Greek.pl b/Master/perltl/lib/unicore/lib/Greek.pl
deleted file mode 100644
index 76ad2ad6f76..00000000000
--- a/Master/perltl/lib/unicore/lib/Greek.pl
+++ /dev/null
@@ -1,40 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Greek} (and fuzzy permutations)
-#
-# Meaning: Script 'GREEK'
-#
-return <<'END';
-00B5 GREEK
-037A GREEK
-0386 GREEK
-0388 038A GREEK
-038C GREEK
-038E 03A1 GREEK
-03A3 03CE GREEK
-03D0 03F5 GREEK
-1F00 1F15 GREEK
-1F18 1F1D GREEK
-1F20 1F45 GREEK
-1F48 1F4D GREEK
-1F50 1F57 GREEK
-1F59 GREEK
-1F5B GREEK
-1F5D GREEK
-1F5F 1F7D GREEK
-1F80 1FB4 GREEK
-1FB6 1FBC GREEK
-1FBE GREEK
-1FC2 1FC4 GREEK
-1FC6 1FCC GREEK
-1FD0 1FD3 GREEK
-1FD6 1FDB GREEK
-1FE0 1FEC GREEK
-1FF2 1FF4 GREEK
-1FF6 1FFC GREEK
-2126 GREEK
-END
diff --git a/Master/perltl/lib/unicore/lib/Gujarati.pl b/Master/perltl/lib/unicore/lib/Gujarati.pl
deleted file mode 100644
index aba2f31753b..00000000000
--- a/Master/perltl/lib/unicore/lib/Gujarati.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Gujarati} (and fuzzy permutations)
-#
-# Meaning: Script 'GUJARATI'
-#
-return <<'END';
-0A81 0A83 GUJARATI
-0A85 0A8B GUJARATI
-0A8D GUJARATI
-0A8F 0A91 GUJARATI
-0A93 0AA8 GUJARATI
-0AAA 0AB0 GUJARATI
-0AB2 0AB3 GUJARATI
-0AB5 0AB9 GUJARATI
-0ABC 0AC5 GUJARATI
-0AC7 0AC9 GUJARATI
-0ACB 0ACD GUJARATI
-0AD0 GUJARATI
-0AE0 GUJARATI
-0AE6 0AEF GUJARATI
-END
diff --git a/Master/perltl/lib/unicore/lib/Gurmukhi.pl b/Master/perltl/lib/unicore/lib/Gurmukhi.pl
deleted file mode 100644
index a56e9ae7218..00000000000
--- a/Master/perltl/lib/unicore/lib/Gurmukhi.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Gurmukhi} (and fuzzy permutations)
-#
-# Meaning: Script 'GURMUKHI'
-#
-return <<'END';
-0A02 GURMUKHI
-0A05 0A0A GURMUKHI
-0A0F 0A10 GURMUKHI
-0A13 0A28 GURMUKHI
-0A2A 0A30 GURMUKHI
-0A32 0A33 GURMUKHI
-0A35 0A36 GURMUKHI
-0A38 0A39 GURMUKHI
-0A3C GURMUKHI
-0A3E 0A42 GURMUKHI
-0A47 0A48 GURMUKHI
-0A4B 0A4D GURMUKHI
-0A59 0A5C GURMUKHI
-0A5E GURMUKHI
-0A66 0A74 GURMUKHI
-END
diff --git a/Master/perltl/lib/unicore/lib/Han.pl b/Master/perltl/lib/unicore/lib/Han.pl
deleted file mode 100644
index 903bbf2dfd2..00000000000
--- a/Master/perltl/lib/unicore/lib/Han.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Han} (and fuzzy permutations)
-#
-# Meaning: Script 'HAN'
-#
-return <<'END';
-2E80 2E99 HAN
-2E9B 2EF3 HAN
-2F00 2FD5 HAN
-3005 HAN
-3007 HAN
-3021 3029 HAN
-3038 303B HAN
-3400 4DB5 HAN
-4E00 9FA5 HAN
-F900 FA2D HAN
-FA30 FA6A HAN
-20000 2A6D6 HAN
-2F800 2FA1D HAN
-END
diff --git a/Master/perltl/lib/unicore/lib/Hangul.pl b/Master/perltl/lib/unicore/lib/Hangul.pl
deleted file mode 100644
index afa24a06015..00000000000
--- a/Master/perltl/lib/unicore/lib/Hangul.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Hangul} (and fuzzy permutations)
-#
-# Meaning: Script 'HANGUL'
-#
-return <<'END';
-1100 1159 HANGUL
-115F 11A2 HANGUL
-11A8 11F9 HANGUL
-3131 318E HANGUL
-AC00 D7A3 HANGUL
-FFA0 FFBE HANGUL
-FFC2 FFC7 HANGUL
-FFCA FFCF HANGUL
-FFD2 FFD7 HANGUL
-FFDA FFDC HANGUL
-END
diff --git a/Master/perltl/lib/unicore/lib/Hanunoo.pl b/Master/perltl/lib/unicore/lib/Hanunoo.pl
deleted file mode 100644
index 077cc076c7f..00000000000
--- a/Master/perltl/lib/unicore/lib/Hanunoo.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Hanunoo} (and fuzzy permutations)
-#
-# Meaning: Script 'HANUNOO'
-#
-return <<'END';
-1720 1734 HANUNOO
-END
diff --git a/Master/perltl/lib/unicore/lib/Hebrew.pl b/Master/perltl/lib/unicore/lib/Hebrew.pl
deleted file mode 100644
index 4ec1444cb6b..00000000000
--- a/Master/perltl/lib/unicore/lib/Hebrew.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Hebrew} (and fuzzy permutations)
-#
-# Meaning: Script 'HEBREW'
-#
-return <<'END';
-05D0 05EA HEBREW
-05F0 05F2 HEBREW
-FB1D HEBREW
-FB1F FB28 HEBREW
-FB2A FB36 HEBREW
-FB38 FB3C HEBREW
-FB3E HEBREW
-FB40 FB41 HEBREW
-FB43 FB44 HEBREW
-FB46 FB4F HEBREW
-END
diff --git a/Master/perltl/lib/unicore/lib/HexDigit.pl b/Master/perltl/lib/unicore/lib/HexDigit.pl
deleted file mode 100644
index 9bb0755a641..00000000000
--- a/Master/perltl/lib/unicore/lib/HexDigit.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{HexDigit} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Hex_Digit'
-#
-return <<'END';
-0030 0039 Hex_Digit
-0041 0046 Hex_Digit
-0061 0066 Hex_Digit
-FF10 FF19 Hex_Digit
-FF21 FF26 Hex_Digit
-FF41 FF46 Hex_Digit
-END
diff --git a/Master/perltl/lib/unicore/lib/Hiragana.pl b/Master/perltl/lib/unicore/lib/Hiragana.pl
deleted file mode 100644
index dddb82d74d8..00000000000
--- a/Master/perltl/lib/unicore/lib/Hiragana.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Hiragana} (and fuzzy permutations)
-#
-# Meaning: Script 'HIRAGANA'
-#
-return <<'END';
-3041 3096 HIRAGANA
-309D 309F HIRAGANA
-END
diff --git a/Master/perltl/lib/unicore/lib/Hyphen.pl b/Master/perltl/lib/unicore/lib/Hyphen.pl
deleted file mode 100644
index b1ca8d6c9a2..00000000000
--- a/Master/perltl/lib/unicore/lib/Hyphen.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Hyphen} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Hyphen'
-#
-return <<'END';
-002D Hyphen
-00AD Hyphen
-058A Hyphen
-1806 Hyphen
-2010 2011 Hyphen
-30FB Hyphen
-FE63 Hyphen
-FF0D Hyphen
-FF65 Hyphen
-END
diff --git a/Master/perltl/lib/unicore/lib/IdContin.pl b/Master/perltl/lib/unicore/lib/IdContin.pl
deleted file mode 100644
index 7de06495905..00000000000
--- a/Master/perltl/lib/unicore/lib/IdContin.pl
+++ /dev/null
@@ -1,416 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{IdContinue} (and fuzzy permutations)
-#
-# Meaning: [\p{ID_Start}\p{Mn}\p{Mc}\p{Nd}\p{Pc}]
-#
-return <<'END';
-0030 0039
-0041 005A
-005F
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0220
-0222 0233
-0250 02AD
-02B0 02B8
-02BB 02C1
-02D0 02D1
-02E0 02E4
-02EE
-0300 034F
-0360 036F
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-0400 0481
-0483 0486
-048A 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-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
-066E 06D3
-06D5 06DC
-06DF 06E8
-06EA 06ED
-06F0 06FC
-0710 072C
-0730 074A
-0780 07B1
-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
-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 0BEF
-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 0F29
-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 10F8
-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 1371
-13A0 13F4
-1401 166C
-166F 1676
-1681 169A
-16A0 16EA
-16EE 16F0
-1700 170C
-170E 1714
-1720 1734
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17D3
-17D7
-17DC
-17E0 17E9
-180B 180D
-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
-203F 2040
-2071
-207F
-20D0 20DC
-20E1
-20E5 20EA
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213D 213F
-2145 2149
-2160 2183
-3005 3007
-3021 302F
-3031 3035
-3038 303C
-3041 3096
-3099 309A
-309D 309F
-30A1 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FA5
-A000 A48C
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-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
-FE00 FE0F
-FE20 FE23
-FE33 FE34
-FE4D FE4F
-FE70 FE74
-FE76 FEFC
-FF10 FF19
-FF21 FF3A
-FF3F
-FF41 FF5A
-FF65 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10300 1031E
-10330 1034A
-10400 10425
-10428 1044D
-1D165 1D169
-1D16D 1D172
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/perltl/lib/unicore/lib/IdStart.pl b/Master/perltl/lib/unicore/lib/IdStart.pl
deleted file mode 100644
index 0772a752dd6..00000000000
--- a/Master/perltl/lib/unicore/lib/IdStart.pl
+++ /dev/null
@@ -1,321 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{IdStart} (and fuzzy permutations)
-#
-# Meaning: [\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0220
-0222 0233
-0250 02AD
-02B0 02B8
-02BB 02C1
-02D0 02D1
-02E0 02E4
-02EE
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-0400 0481
-048A 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-05D0 05EA
-05F0 05F2
-0621 063A
-0640 064A
-066E 066F
-0671 06D3
-06D5
-06E5 06E6
-06FA 06FC
-0710
-0712 072C
-0780 07A5
-07B1
-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
-0B83
-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 10F8
-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
-16EE 16F0
-1700 170C
-170E 1711
-1720 1731
-1740 1751
-1760 176C
-176E 1770
-1780 17B3
-17D7
-17DC
-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
-2071
-207F
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213D 213F
-2145 2149
-2160 2183
-3005 3007
-3021 3029
-3031 3035
-3038 303C
-3041 3096
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FA5
-A000 A48C
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-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 FE74
-FE76 FEFC
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10300 1031E
-10330 1034A
-10400 10425
-10428 1044D
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/perltl/lib/unicore/lib/Ideograp.pl b/Master/perltl/lib/unicore/lib/Ideograp.pl
deleted file mode 100644
index 476d5cd700e..00000000000
--- a/Master/perltl/lib/unicore/lib/Ideograp.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ideographic} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Ideographic'
-#
-return <<'END';
-3006 3007 Ideographic
-3021 3029 Ideographic
-3038 303A Ideographic
-3400 4DB5 Ideographic
-4E00 9FA5 Ideographic
-F900 FA2D Ideographic
-20000 2A6D6 Ideographic
-2F800 2FA1D Ideographic
-END
diff --git a/Master/perltl/lib/unicore/lib/IdsBinar.pl b/Master/perltl/lib/unicore/lib/IdsBinar.pl
deleted file mode 100644
index d138d0a8d8c..00000000000
--- a/Master/perltl/lib/unicore/lib/IdsBinar.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{IdsBinaryOperator} (and fuzzy permutations)
-#
-# Meaning: Extended property 'IDS_Binary_Operator'
-#
-return <<'END';
-2FF0 2FF1 IDS_Binary_Operator
-2FF4 2FFB IDS_Binary_Operator
-END
diff --git a/Master/perltl/lib/unicore/lib/IdsTrina.pl b/Master/perltl/lib/unicore/lib/IdsTrina.pl
deleted file mode 100644
index 587606bad40..00000000000
--- a/Master/perltl/lib/unicore/lib/IdsTrina.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{IdsTrinaryOperator} (and fuzzy permutations)
-#
-# Meaning: Extended property 'IDS_Trinary_Operator'
-#
-return <<'END';
-2FF2 2FF3 IDS_Trinary_Operator
-END
diff --git a/Master/perltl/lib/unicore/lib/InAlphab.pl b/Master/perltl/lib/unicore/lib/InAlphab.pl
deleted file mode 100644
index 2ecd85da4bb..00000000000
--- a/Master/perltl/lib/unicore/lib/InAlphab.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InAlphabeticPresentationForms} (and fuzzy permutations)
-#
-# Meaning: Block 'Alphabetic Presentation Forms'
-#
-return <<'END';
-FB00 FB4F Alphabetic Presentation Forms
-END
diff --git a/Master/perltl/lib/unicore/lib/InArabi2.pl b/Master/perltl/lib/unicore/lib/InArabi2.pl
deleted file mode 100644
index 77e704b3dfe..00000000000
--- a/Master/perltl/lib/unicore/lib/InArabi2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArabicPresentationFormsB} (and fuzzy permutations)
-#
-# Meaning: Block 'Arabic Presentation Forms-B'
-#
-return <<'END';
-FE70 FEFF Arabic Presentation Forms-B
-END
diff --git a/Master/perltl/lib/unicore/lib/InArabi3.pl b/Master/perltl/lib/unicore/lib/InArabi3.pl
deleted file mode 100644
index 8ab3bb04a74..00000000000
--- a/Master/perltl/lib/unicore/lib/InArabi3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArabicPresentationFormsA} (and fuzzy permutations)
-#
-# Meaning: Block 'Arabic Presentation Forms-A'
-#
-return <<'END';
-FB50 FDFF Arabic Presentation Forms-A
-END
diff --git a/Master/perltl/lib/unicore/lib/InArabic.pl b/Master/perltl/lib/unicore/lib/InArabic.pl
deleted file mode 100644
index ac250e86259..00000000000
--- a/Master/perltl/lib/unicore/lib/InArabic.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArabic} (and fuzzy permutations)
-#
-# Meaning: Block 'Arabic'
-#
-return <<'END';
-0600 06FF Arabic
-END
diff --git a/Master/perltl/lib/unicore/lib/InArmeni.pl b/Master/perltl/lib/unicore/lib/InArmeni.pl
deleted file mode 100644
index 62a07777423..00000000000
--- a/Master/perltl/lib/unicore/lib/InArmeni.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArmenian} (and fuzzy permutations)
-#
-# Meaning: Block 'Armenian'
-#
-return <<'END';
-0530 058F Armenian
-END
diff --git a/Master/perltl/lib/unicore/lib/InArrows.pl b/Master/perltl/lib/unicore/lib/InArrows.pl
deleted file mode 100644
index 15f4c0bacef..00000000000
--- a/Master/perltl/lib/unicore/lib/InArrows.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InArrows} (and fuzzy permutations)
-#
-# Meaning: Block 'Arrows'
-#
-return <<'END';
-2190 21FF Arrows
-END
diff --git a/Master/perltl/lib/unicore/lib/InBasicL.pl b/Master/perltl/lib/unicore/lib/InBasicL.pl
deleted file mode 100644
index b15a479ffe2..00000000000
--- a/Master/perltl/lib/unicore/lib/InBasicL.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBasicLatin} (and fuzzy permutations)
-#
-# Meaning: Block 'Basic Latin'
-#
-return <<'END';
-0000 007F Basic Latin
-END
diff --git a/Master/perltl/lib/unicore/lib/InBengal.pl b/Master/perltl/lib/unicore/lib/InBengal.pl
deleted file mode 100644
index c20bf6cda0a..00000000000
--- a/Master/perltl/lib/unicore/lib/InBengal.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBengali} (and fuzzy permutations)
-#
-# Meaning: Block 'Bengali'
-#
-return <<'END';
-0980 09FF Bengali
-END
diff --git a/Master/perltl/lib/unicore/lib/InBlockE.pl b/Master/perltl/lib/unicore/lib/InBlockE.pl
deleted file mode 100644
index b301e9d358a..00000000000
--- a/Master/perltl/lib/unicore/lib/InBlockE.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBlockElements} (and fuzzy permutations)
-#
-# Meaning: Block 'Block Elements'
-#
-return <<'END';
-2580 259F Block Elements
-END
diff --git a/Master/perltl/lib/unicore/lib/InBopom2.pl b/Master/perltl/lib/unicore/lib/InBopom2.pl
deleted file mode 100644
index 8320eb520d3..00000000000
--- a/Master/perltl/lib/unicore/lib/InBopom2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBopomofoExtended} (and fuzzy permutations)
-#
-# Meaning: Block 'Bopomofo Extended'
-#
-return <<'END';
-31A0 31BF Bopomofo Extended
-END
diff --git a/Master/perltl/lib/unicore/lib/InBopomo.pl b/Master/perltl/lib/unicore/lib/InBopomo.pl
deleted file mode 100644
index 43edd7cc649..00000000000
--- a/Master/perltl/lib/unicore/lib/InBopomo.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBopomofo} (and fuzzy permutations)
-#
-# Meaning: Block 'Bopomofo'
-#
-return <<'END';
-3100 312F Bopomofo
-END
diff --git a/Master/perltl/lib/unicore/lib/InBoxDra.pl b/Master/perltl/lib/unicore/lib/InBoxDra.pl
deleted file mode 100644
index 4f3698f06bf..00000000000
--- a/Master/perltl/lib/unicore/lib/InBoxDra.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBoxDrawing} (and fuzzy permutations)
-#
-# Meaning: Block 'Box Drawing'
-#
-return <<'END';
-2500 257F Box Drawing
-END
diff --git a/Master/perltl/lib/unicore/lib/InBraill.pl b/Master/perltl/lib/unicore/lib/InBraill.pl
deleted file mode 100644
index b03465e91be..00000000000
--- a/Master/perltl/lib/unicore/lib/InBraill.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBraillePatterns} (and fuzzy permutations)
-#
-# Meaning: Block 'Braille Patterns'
-#
-return <<'END';
-2800 28FF Braille Patterns
-END
diff --git a/Master/perltl/lib/unicore/lib/InBuhid.pl b/Master/perltl/lib/unicore/lib/InBuhid.pl
deleted file mode 100644
index f58c9c2df10..00000000000
--- a/Master/perltl/lib/unicore/lib/InBuhid.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InBuhid} (and fuzzy permutations)
-#
-# Meaning: Block 'Buhid'
-#
-return <<'END';
-1740 175F Buhid
-END
diff --git a/Master/perltl/lib/unicore/lib/InByzant.pl b/Master/perltl/lib/unicore/lib/InByzant.pl
deleted file mode 100644
index a706086ceb1..00000000000
--- a/Master/perltl/lib/unicore/lib/InByzant.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InByzantineMusicalSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Byzantine Musical Symbols'
-#
-return <<'END';
-1D000 1D0FF Byzantine Musical Symbols
-END
diff --git a/Master/perltl/lib/unicore/lib/InCherok.pl b/Master/perltl/lib/unicore/lib/InCherok.pl
deleted file mode 100644
index 089e3f684d6..00000000000
--- a/Master/perltl/lib/unicore/lib/InCherok.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCherokee} (and fuzzy permutations)
-#
-# Meaning: Block 'Cherokee'
-#
-return <<'END';
-13A0 13FF Cherokee
-END
diff --git a/Master/perltl/lib/unicore/lib/InCjkCo2.pl b/Master/perltl/lib/unicore/lib/InCjkCo2.pl
deleted file mode 100644
index bf9af659c86..00000000000
--- a/Master/perltl/lib/unicore/lib/InCjkCo2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkCompatibilityForms} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Compatibility Forms'
-#
-return <<'END';
-FE30 FE4F CJK Compatibility Forms
-END
diff --git a/Master/perltl/lib/unicore/lib/InCjkCo3.pl b/Master/perltl/lib/unicore/lib/InCjkCo3.pl
deleted file mode 100644
index 678c493885e..00000000000
--- a/Master/perltl/lib/unicore/lib/InCjkCo3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkCompatibilityIdeographs} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Compatibility Ideographs'
-#
-return <<'END';
-F900 FAFF CJK Compatibility Ideographs
-END
diff --git a/Master/perltl/lib/unicore/lib/InCjkCo4.pl b/Master/perltl/lib/unicore/lib/InCjkCo4.pl
deleted file mode 100644
index 05bde2e48d5..00000000000
--- a/Master/perltl/lib/unicore/lib/InCjkCo4.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkCompatibilityIdeographsSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Compatibility Ideographs Supplement'
-#
-return <<'END';
-2F800 2FA1F CJK Compatibility Ideographs Supplement
-END
diff --git a/Master/perltl/lib/unicore/lib/InCjkCom.pl b/Master/perltl/lib/unicore/lib/InCjkCom.pl
deleted file mode 100644
index 76f7396a299..00000000000
--- a/Master/perltl/lib/unicore/lib/InCjkCom.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkCompatibility} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Compatibility'
-#
-return <<'END';
-3300 33FF CJK Compatibility
-END
diff --git a/Master/perltl/lib/unicore/lib/InCjkRad.pl b/Master/perltl/lib/unicore/lib/InCjkRad.pl
deleted file mode 100644
index 46e7463cbff..00000000000
--- a/Master/perltl/lib/unicore/lib/InCjkRad.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkRadicalsSupplement} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Radicals Supplement'
-#
-return <<'END';
-2E80 2EFF CJK Radicals Supplement
-END
diff --git a/Master/perltl/lib/unicore/lib/InCjkSym.pl b/Master/perltl/lib/unicore/lib/InCjkSym.pl
deleted file mode 100644
index 293608f8fbf..00000000000
--- a/Master/perltl/lib/unicore/lib/InCjkSym.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkSymbolsAndPunctuation} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Symbols and Punctuation'
-#
-return <<'END';
-3000 303F CJK Symbols and Punctuation
-END
diff --git a/Master/perltl/lib/unicore/lib/InCjkUn2.pl b/Master/perltl/lib/unicore/lib/InCjkUn2.pl
deleted file mode 100644
index 2f8ce719449..00000000000
--- a/Master/perltl/lib/unicore/lib/InCjkUn2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkUnifiedIdeographsExtensionB} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Unified Ideographs Extension B'
-#
-return <<'END';
-20000 2A6DF CJK Unified Ideographs Extension B
-END
diff --git a/Master/perltl/lib/unicore/lib/InCjkUn3.pl b/Master/perltl/lib/unicore/lib/InCjkUn3.pl
deleted file mode 100644
index 3967c210621..00000000000
--- a/Master/perltl/lib/unicore/lib/InCjkUn3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkUnifiedIdeographsExtensionA} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Unified Ideographs Extension A'
-#
-return <<'END';
-3400 4DBF CJK Unified Ideographs Extension A
-END
diff --git a/Master/perltl/lib/unicore/lib/InCjkUni.pl b/Master/perltl/lib/unicore/lib/InCjkUni.pl
deleted file mode 100644
index 62c36bf37cc..00000000000
--- a/Master/perltl/lib/unicore/lib/InCjkUni.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCjkUnifiedIdeographs} (and fuzzy permutations)
-#
-# Meaning: Block 'CJK Unified Ideographs'
-#
-return <<'END';
-4E00 9FFF CJK Unified Ideographs
-END
diff --git a/Master/perltl/lib/unicore/lib/InCombi2.pl b/Master/perltl/lib/unicore/lib/InCombi2.pl
deleted file mode 100644
index f4169cfe7fc..00000000000
--- a/Master/perltl/lib/unicore/lib/InCombi2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCombiningDiacriticalMarks} (and fuzzy permutations)
-#
-# Meaning: Block 'Combining Diacritical Marks'
-#
-return <<'END';
-0300 036F Combining Diacritical Marks
-END
diff --git a/Master/perltl/lib/unicore/lib/InCombi3.pl b/Master/perltl/lib/unicore/lib/InCombi3.pl
deleted file mode 100644
index 7dde2138522..00000000000
--- a/Master/perltl/lib/unicore/lib/InCombi3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCombiningDiacriticalMarksForSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Combining Diacritical Marks for Symbols'
-#
-return <<'END';
-20D0 20FF Combining Diacritical Marks for Symbols
-END
diff --git a/Master/perltl/lib/unicore/lib/InCombin.pl b/Master/perltl/lib/unicore/lib/InCombin.pl
deleted file mode 100644
index 5e2670da706..00000000000
--- a/Master/perltl/lib/unicore/lib/InCombin.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCombiningHalfMarks} (and fuzzy permutations)
-#
-# Meaning: Block 'Combining Half Marks'
-#
-return <<'END';
-FE20 FE2F Combining Half Marks
-END
diff --git a/Master/perltl/lib/unicore/lib/InContro.pl b/Master/perltl/lib/unicore/lib/InContro.pl
deleted file mode 100644
index 5460b22a1ee..00000000000
--- a/Master/perltl/lib/unicore/lib/InContro.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InControlPictures} (and fuzzy permutations)
-#
-# Meaning: Block 'Control Pictures'
-#
-return <<'END';
-2400 243F Control Pictures
-END
diff --git a/Master/perltl/lib/unicore/lib/InCurren.pl b/Master/perltl/lib/unicore/lib/InCurren.pl
deleted file mode 100644
index 44182705cd9..00000000000
--- a/Master/perltl/lib/unicore/lib/InCurren.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCurrencySymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Currency Symbols'
-#
-return <<'END';
-20A0 20CF Currency Symbols
-END
diff --git a/Master/perltl/lib/unicore/lib/InCyril2.pl b/Master/perltl/lib/unicore/lib/InCyril2.pl
deleted file mode 100644
index 41f8f20712d..00000000000
--- a/Master/perltl/lib/unicore/lib/InCyril2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCyrillicSupplementary} (and fuzzy permutations)
-#
-# Meaning: Block 'Cyrillic Supplementary'
-#
-return <<'END';
-0500 052F Cyrillic Supplementary
-END
diff --git a/Master/perltl/lib/unicore/lib/InCyrill.pl b/Master/perltl/lib/unicore/lib/InCyrill.pl
deleted file mode 100644
index 9d6f53a96eb..00000000000
--- a/Master/perltl/lib/unicore/lib/InCyrill.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InCyrillic} (and fuzzy permutations)
-#
-# Meaning: Block 'Cyrillic'
-#
-return <<'END';
-0400 04FF Cyrillic
-END
diff --git a/Master/perltl/lib/unicore/lib/InDesere.pl b/Master/perltl/lib/unicore/lib/InDesere.pl
deleted file mode 100644
index 5e8b99f164f..00000000000
--- a/Master/perltl/lib/unicore/lib/InDesere.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InDeseret} (and fuzzy permutations)
-#
-# Meaning: Block 'Deseret'
-#
-return <<'END';
-10400 1044F Deseret
-END
diff --git a/Master/perltl/lib/unicore/lib/InDevana.pl b/Master/perltl/lib/unicore/lib/InDevana.pl
deleted file mode 100644
index eaaa7126905..00000000000
--- a/Master/perltl/lib/unicore/lib/InDevana.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InDevanagari} (and fuzzy permutations)
-#
-# Meaning: Block 'Devanagari'
-#
-return <<'END';
-0900 097F Devanagari
-END
diff --git a/Master/perltl/lib/unicore/lib/InDingba.pl b/Master/perltl/lib/unicore/lib/InDingba.pl
deleted file mode 100644
index 72eef3587a7..00000000000
--- a/Master/perltl/lib/unicore/lib/InDingba.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InDingbats} (and fuzzy permutations)
-#
-# Meaning: Block 'Dingbats'
-#
-return <<'END';
-2700 27BF Dingbats
-END
diff --git a/Master/perltl/lib/unicore/lib/InEnclo2.pl b/Master/perltl/lib/unicore/lib/InEnclo2.pl
deleted file mode 100644
index aadcbdb7d32..00000000000
--- a/Master/perltl/lib/unicore/lib/InEnclo2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InEnclosedCjkLettersAndMonths} (and fuzzy permutations)
-#
-# Meaning: Block 'Enclosed CJK Letters and Months'
-#
-return <<'END';
-3200 32FF Enclosed CJK Letters and Months
-END
diff --git a/Master/perltl/lib/unicore/lib/InEnclos.pl b/Master/perltl/lib/unicore/lib/InEnclos.pl
deleted file mode 100644
index 82c20de16f8..00000000000
--- a/Master/perltl/lib/unicore/lib/InEnclos.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InEnclosedAlphanumerics} (and fuzzy permutations)
-#
-# Meaning: Block 'Enclosed Alphanumerics'
-#
-return <<'END';
-2460 24FF Enclosed Alphanumerics
-END
diff --git a/Master/perltl/lib/unicore/lib/InEthiop.pl b/Master/perltl/lib/unicore/lib/InEthiop.pl
deleted file mode 100644
index fcb2053e44f..00000000000
--- a/Master/perltl/lib/unicore/lib/InEthiop.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InEthiopic} (and fuzzy permutations)
-#
-# Meaning: Block 'Ethiopic'
-#
-return <<'END';
-1200 137F Ethiopic
-END
diff --git a/Master/perltl/lib/unicore/lib/InGenera.pl b/Master/perltl/lib/unicore/lib/InGenera.pl
deleted file mode 100644
index 2fd27a7b771..00000000000
--- a/Master/perltl/lib/unicore/lib/InGenera.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGeneralPunctuation} (and fuzzy permutations)
-#
-# Meaning: Block 'General Punctuation'
-#
-return <<'END';
-2000 206F General Punctuation
-END
diff --git a/Master/perltl/lib/unicore/lib/InGeomet.pl b/Master/perltl/lib/unicore/lib/InGeomet.pl
deleted file mode 100644
index 817dabc2b22..00000000000
--- a/Master/perltl/lib/unicore/lib/InGeomet.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGeometricShapes} (and fuzzy permutations)
-#
-# Meaning: Block 'Geometric Shapes'
-#
-return <<'END';
-25A0 25FF Geometric Shapes
-END
diff --git a/Master/perltl/lib/unicore/lib/InGeorgi.pl b/Master/perltl/lib/unicore/lib/InGeorgi.pl
deleted file mode 100644
index 7e965445909..00000000000
--- a/Master/perltl/lib/unicore/lib/InGeorgi.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGeorgian} (and fuzzy permutations)
-#
-# Meaning: Block 'Georgian'
-#
-return <<'END';
-10A0 10FF Georgian
-END
diff --git a/Master/perltl/lib/unicore/lib/InGothic.pl b/Master/perltl/lib/unicore/lib/InGothic.pl
deleted file mode 100644
index 552cba4f000..00000000000
--- a/Master/perltl/lib/unicore/lib/InGothic.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGothic} (and fuzzy permutations)
-#
-# Meaning: Block 'Gothic'
-#
-return <<'END';
-10330 1034F Gothic
-END
diff --git a/Master/perltl/lib/unicore/lib/InGreek.pl b/Master/perltl/lib/unicore/lib/InGreek.pl
deleted file mode 100644
index e932705c4ed..00000000000
--- a/Master/perltl/lib/unicore/lib/InGreek.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGreek} (and fuzzy permutations)
-#
-# Meaning: Block 'Greek'
-#
-return <<'END';
-0370 03FF Greek
-END
diff --git a/Master/perltl/lib/unicore/lib/InGreekA.pl b/Master/perltl/lib/unicore/lib/InGreekA.pl
deleted file mode 100644
index d09fd3daf2e..00000000000
--- a/Master/perltl/lib/unicore/lib/InGreekA.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGreekAndCoptic} (and fuzzy permutations)
-#
-# Meaning: Block 'Greek and Coptic'
-#
-return <<'END';
-0370 03FF Greek and Coptic
-END
diff --git a/Master/perltl/lib/unicore/lib/InGreekE.pl b/Master/perltl/lib/unicore/lib/InGreekE.pl
deleted file mode 100644
index 06965f969d0..00000000000
--- a/Master/perltl/lib/unicore/lib/InGreekE.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGreekExtended} (and fuzzy permutations)
-#
-# Meaning: Block 'Greek Extended'
-#
-return <<'END';
-1F00 1FFF Greek Extended
-END
diff --git a/Master/perltl/lib/unicore/lib/InGujara.pl b/Master/perltl/lib/unicore/lib/InGujara.pl
deleted file mode 100644
index f0a8e4a6a29..00000000000
--- a/Master/perltl/lib/unicore/lib/InGujara.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGujarati} (and fuzzy permutations)
-#
-# Meaning: Block 'Gujarati'
-#
-return <<'END';
-0A80 0AFF Gujarati
-END
diff --git a/Master/perltl/lib/unicore/lib/InGurmuk.pl b/Master/perltl/lib/unicore/lib/InGurmuk.pl
deleted file mode 100644
index 7023d05cfb7..00000000000
--- a/Master/perltl/lib/unicore/lib/InGurmuk.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InGurmukhi} (and fuzzy permutations)
-#
-# Meaning: Block 'Gurmukhi'
-#
-return <<'END';
-0A00 0A7F Gurmukhi
-END
diff --git a/Master/perltl/lib/unicore/lib/InHalfwi.pl b/Master/perltl/lib/unicore/lib/InHalfwi.pl
deleted file mode 100644
index d543110b84f..00000000000
--- a/Master/perltl/lib/unicore/lib/InHalfwi.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHalfwidthAndFullwidthForms} (and fuzzy permutations)
-#
-# Meaning: Block 'Halfwidth and Fullwidth Forms'
-#
-return <<'END';
-FF00 FFEF Halfwidth and Fullwidth Forms
-END
diff --git a/Master/perltl/lib/unicore/lib/InHangu2.pl b/Master/perltl/lib/unicore/lib/InHangu2.pl
deleted file mode 100644
index e09ff114a18..00000000000
--- a/Master/perltl/lib/unicore/lib/InHangu2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHangulSyllables} (and fuzzy permutations)
-#
-# Meaning: Block 'Hangul Syllables'
-#
-return <<'END';
-AC00 D7AF Hangul Syllables
-END
diff --git a/Master/perltl/lib/unicore/lib/InHangu3.pl b/Master/perltl/lib/unicore/lib/InHangu3.pl
deleted file mode 100644
index e256ea5dc95..00000000000
--- a/Master/perltl/lib/unicore/lib/InHangu3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHangulCompatibilityJamo} (and fuzzy permutations)
-#
-# Meaning: Block 'Hangul Compatibility Jamo'
-#
-return <<'END';
-3130 318F Hangul Compatibility Jamo
-END
diff --git a/Master/perltl/lib/unicore/lib/InHangul.pl b/Master/perltl/lib/unicore/lib/InHangul.pl
deleted file mode 100644
index d0ef32e871d..00000000000
--- a/Master/perltl/lib/unicore/lib/InHangul.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHangulJamo} (and fuzzy permutations)
-#
-# Meaning: Block 'Hangul Jamo'
-#
-return <<'END';
-1100 11FF Hangul Jamo
-END
diff --git a/Master/perltl/lib/unicore/lib/InHanuno.pl b/Master/perltl/lib/unicore/lib/InHanuno.pl
deleted file mode 100644
index 5ea90288d75..00000000000
--- a/Master/perltl/lib/unicore/lib/InHanuno.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHanunoo} (and fuzzy permutations)
-#
-# Meaning: Block 'Hanunoo'
-#
-return <<'END';
-1720 173F Hanunoo
-END
diff --git a/Master/perltl/lib/unicore/lib/InHebrew.pl b/Master/perltl/lib/unicore/lib/InHebrew.pl
deleted file mode 100644
index 14459f46876..00000000000
--- a/Master/perltl/lib/unicore/lib/InHebrew.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHebrew} (and fuzzy permutations)
-#
-# Meaning: Block 'Hebrew'
-#
-return <<'END';
-0590 05FF Hebrew
-END
diff --git a/Master/perltl/lib/unicore/lib/InHighPr.pl b/Master/perltl/lib/unicore/lib/InHighPr.pl
deleted file mode 100644
index fd92248fa5f..00000000000
--- a/Master/perltl/lib/unicore/lib/InHighPr.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHighPrivateUseSurrogates} (and fuzzy permutations)
-#
-# Meaning: Block 'High Private Use Surrogates'
-#
-return <<'END';
-DB80 DBFF High Private Use Surrogates
-END
diff --git a/Master/perltl/lib/unicore/lib/InHighSu.pl b/Master/perltl/lib/unicore/lib/InHighSu.pl
deleted file mode 100644
index eec73b3cb35..00000000000
--- a/Master/perltl/lib/unicore/lib/InHighSu.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHighSurrogates} (and fuzzy permutations)
-#
-# Meaning: Block 'High Surrogates'
-#
-return <<'END';
-D800 DB7F High Surrogates
-END
diff --git a/Master/perltl/lib/unicore/lib/InHiraga.pl b/Master/perltl/lib/unicore/lib/InHiraga.pl
deleted file mode 100644
index 2db67da347f..00000000000
--- a/Master/perltl/lib/unicore/lib/InHiraga.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InHiragana} (and fuzzy permutations)
-#
-# Meaning: Block 'Hiragana'
-#
-return <<'END';
-3040 309F Hiragana
-END
diff --git a/Master/perltl/lib/unicore/lib/InIdeogr.pl b/Master/perltl/lib/unicore/lib/InIdeogr.pl
deleted file mode 100644
index 95f6229928e..00000000000
--- a/Master/perltl/lib/unicore/lib/InIdeogr.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InIdeographicDescriptionCharacters} (and fuzzy permutations)
-#
-# Meaning: Block 'Ideographic Description Characters'
-#
-return <<'END';
-2FF0 2FFF Ideographic Description Characters
-END
diff --git a/Master/perltl/lib/unicore/lib/InIpaExt.pl b/Master/perltl/lib/unicore/lib/InIpaExt.pl
deleted file mode 100644
index 3280cb6ccf8..00000000000
--- a/Master/perltl/lib/unicore/lib/InIpaExt.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InIpaExtensions} (and fuzzy permutations)
-#
-# Meaning: Block 'IPA Extensions'
-#
-return <<'END';
-0250 02AF IPA Extensions
-END
diff --git a/Master/perltl/lib/unicore/lib/InKanbun.pl b/Master/perltl/lib/unicore/lib/InKanbun.pl
deleted file mode 100644
index 5dddfb381f9..00000000000
--- a/Master/perltl/lib/unicore/lib/InKanbun.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKanbun} (and fuzzy permutations)
-#
-# Meaning: Block 'Kanbun'
-#
-return <<'END';
-3190 319F Kanbun
-END
diff --git a/Master/perltl/lib/unicore/lib/InKangxi.pl b/Master/perltl/lib/unicore/lib/InKangxi.pl
deleted file mode 100644
index 49f334c2284..00000000000
--- a/Master/perltl/lib/unicore/lib/InKangxi.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKangxiRadicals} (and fuzzy permutations)
-#
-# Meaning: Block 'Kangxi Radicals'
-#
-return <<'END';
-2F00 2FDF Kangxi Radicals
-END
diff --git a/Master/perltl/lib/unicore/lib/InKannad.pl b/Master/perltl/lib/unicore/lib/InKannad.pl
deleted file mode 100644
index 418011cb128..00000000000
--- a/Master/perltl/lib/unicore/lib/InKannad.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKannada} (and fuzzy permutations)
-#
-# Meaning: Block 'Kannada'
-#
-return <<'END';
-0C80 0CFF Kannada
-END
diff --git a/Master/perltl/lib/unicore/lib/InKatak2.pl b/Master/perltl/lib/unicore/lib/InKatak2.pl
deleted file mode 100644
index 6ed8a84b8eb..00000000000
--- a/Master/perltl/lib/unicore/lib/InKatak2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKatakanaPhoneticExtensions} (and fuzzy permutations)
-#
-# Meaning: Block 'Katakana Phonetic Extensions'
-#
-return <<'END';
-31F0 31FF Katakana Phonetic Extensions
-END
diff --git a/Master/perltl/lib/unicore/lib/InKataka.pl b/Master/perltl/lib/unicore/lib/InKataka.pl
deleted file mode 100644
index 5ef3ce010f8..00000000000
--- a/Master/perltl/lib/unicore/lib/InKataka.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKatakana} (and fuzzy permutations)
-#
-# Meaning: Block 'Katakana'
-#
-return <<'END';
-30A0 30FF Katakana
-END
diff --git a/Master/perltl/lib/unicore/lib/InKhmer.pl b/Master/perltl/lib/unicore/lib/InKhmer.pl
deleted file mode 100644
index 8c2efea0429..00000000000
--- a/Master/perltl/lib/unicore/lib/InKhmer.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InKhmer} (and fuzzy permutations)
-#
-# Meaning: Block 'Khmer'
-#
-return <<'END';
-1780 17FF Khmer
-END
diff --git a/Master/perltl/lib/unicore/lib/InLao.pl b/Master/perltl/lib/unicore/lib/InLao.pl
deleted file mode 100644
index eb96edca009..00000000000
--- a/Master/perltl/lib/unicore/lib/InLao.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLao} (and fuzzy permutations)
-#
-# Meaning: Block 'Lao'
-#
-return <<'END';
-0E80 0EFF Lao
-END
diff --git a/Master/perltl/lib/unicore/lib/InLatin1.pl b/Master/perltl/lib/unicore/lib/InLatin1.pl
deleted file mode 100644
index 52e4c71db85..00000000000
--- a/Master/perltl/lib/unicore/lib/InLatin1.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLatin1Supplement} (and fuzzy permutations)
-#
-# Meaning: Block 'Latin-1 Supplement'
-#
-return <<'END';
-0080 00FF Latin-1 Supplement
-END
diff --git a/Master/perltl/lib/unicore/lib/InLatin2.pl b/Master/perltl/lib/unicore/lib/InLatin2.pl
deleted file mode 100644
index a5f0d22f95c..00000000000
--- a/Master/perltl/lib/unicore/lib/InLatin2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLatinExtendedA} (and fuzzy permutations)
-#
-# Meaning: Block 'Latin Extended-A'
-#
-return <<'END';
-0100 017F Latin Extended-A
-END
diff --git a/Master/perltl/lib/unicore/lib/InLatin3.pl b/Master/perltl/lib/unicore/lib/InLatin3.pl
deleted file mode 100644
index 8a53dc7f5f1..00000000000
--- a/Master/perltl/lib/unicore/lib/InLatin3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLatinExtendedAdditional} (and fuzzy permutations)
-#
-# Meaning: Block 'Latin Extended Additional'
-#
-return <<'END';
-1E00 1EFF Latin Extended Additional
-END
diff --git a/Master/perltl/lib/unicore/lib/InLatinE.pl b/Master/perltl/lib/unicore/lib/InLatinE.pl
deleted file mode 100644
index 3a81b6e3382..00000000000
--- a/Master/perltl/lib/unicore/lib/InLatinE.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLatinExtendedB} (and fuzzy permutations)
-#
-# Meaning: Block 'Latin Extended-B'
-#
-return <<'END';
-0180 024F Latin Extended-B
-END
diff --git a/Master/perltl/lib/unicore/lib/InLetter.pl b/Master/perltl/lib/unicore/lib/InLetter.pl
deleted file mode 100644
index d452812a3c5..00000000000
--- a/Master/perltl/lib/unicore/lib/InLetter.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLetterlikeSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Letterlike Symbols'
-#
-return <<'END';
-2100 214F Letterlike Symbols
-END
diff --git a/Master/perltl/lib/unicore/lib/InLowSur.pl b/Master/perltl/lib/unicore/lib/InLowSur.pl
deleted file mode 100644
index 5be81e511e0..00000000000
--- a/Master/perltl/lib/unicore/lib/InLowSur.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InLowSurrogates} (and fuzzy permutations)
-#
-# Meaning: Block 'Low Surrogates'
-#
-return <<'END';
-DC00 DFFF Low Surrogates
-END
diff --git a/Master/perltl/lib/unicore/lib/InMalaya.pl b/Master/perltl/lib/unicore/lib/InMalaya.pl
deleted file mode 100644
index ee91b9a2ead..00000000000
--- a/Master/perltl/lib/unicore/lib/InMalaya.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMalayalam} (and fuzzy permutations)
-#
-# Meaning: Block 'Malayalam'
-#
-return <<'END';
-0D00 0D7F Malayalam
-END
diff --git a/Master/perltl/lib/unicore/lib/InMathe2.pl b/Master/perltl/lib/unicore/lib/InMathe2.pl
deleted file mode 100644
index aba54a670fd..00000000000
--- a/Master/perltl/lib/unicore/lib/InMathe2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMathematicalAlphanumericSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Mathematical Alphanumeric Symbols'
-#
-return <<'END';
-1D400 1D7FF Mathematical Alphanumeric Symbols
-END
diff --git a/Master/perltl/lib/unicore/lib/InMathem.pl b/Master/perltl/lib/unicore/lib/InMathem.pl
deleted file mode 100644
index d037fec9547..00000000000
--- a/Master/perltl/lib/unicore/lib/InMathem.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMathematicalOperators} (and fuzzy permutations)
-#
-# Meaning: Block 'Mathematical Operators'
-#
-return <<'END';
-2200 22FF Mathematical Operators
-END
diff --git a/Master/perltl/lib/unicore/lib/InMisce2.pl b/Master/perltl/lib/unicore/lib/InMisce2.pl
deleted file mode 100644
index fb9217a2bfd..00000000000
--- a/Master/perltl/lib/unicore/lib/InMisce2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMiscellaneousTechnical} (and fuzzy permutations)
-#
-# Meaning: Block 'Miscellaneous Technical'
-#
-return <<'END';
-2300 23FF Miscellaneous Technical
-END
diff --git a/Master/perltl/lib/unicore/lib/InMisce3.pl b/Master/perltl/lib/unicore/lib/InMisce3.pl
deleted file mode 100644
index a273df5c133..00000000000
--- a/Master/perltl/lib/unicore/lib/InMisce3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMiscellaneousMathematicalSymbolsA} (and fuzzy permutations)
-#
-# Meaning: Block 'Miscellaneous Mathematical Symbols-A'
-#
-return <<'END';
-27C0 27EF Miscellaneous Mathematical Symbols-A
-END
diff --git a/Master/perltl/lib/unicore/lib/InMisce4.pl b/Master/perltl/lib/unicore/lib/InMisce4.pl
deleted file mode 100644
index 1c8e240fca7..00000000000
--- a/Master/perltl/lib/unicore/lib/InMisce4.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMiscellaneousMathematicalSymbolsB} (and fuzzy permutations)
-#
-# Meaning: Block 'Miscellaneous Mathematical Symbols-B'
-#
-return <<'END';
-2980 29FF Miscellaneous Mathematical Symbols-B
-END
diff --git a/Master/perltl/lib/unicore/lib/InMiscel.pl b/Master/perltl/lib/unicore/lib/InMiscel.pl
deleted file mode 100644
index f1668ea83c4..00000000000
--- a/Master/perltl/lib/unicore/lib/InMiscel.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMiscellaneousSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Miscellaneous Symbols'
-#
-return <<'END';
-2600 26FF Miscellaneous Symbols
-END
diff --git a/Master/perltl/lib/unicore/lib/InMongol.pl b/Master/perltl/lib/unicore/lib/InMongol.pl
deleted file mode 100644
index e1771ec83c7..00000000000
--- a/Master/perltl/lib/unicore/lib/InMongol.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMongolian} (and fuzzy permutations)
-#
-# Meaning: Block 'Mongolian'
-#
-return <<'END';
-1800 18AF Mongolian
-END
diff --git a/Master/perltl/lib/unicore/lib/InMusica.pl b/Master/perltl/lib/unicore/lib/InMusica.pl
deleted file mode 100644
index 74419bc98c8..00000000000
--- a/Master/perltl/lib/unicore/lib/InMusica.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMusicalSymbols} (and fuzzy permutations)
-#
-# Meaning: Block 'Musical Symbols'
-#
-return <<'END';
-1D100 1D1FF Musical Symbols
-END
diff --git a/Master/perltl/lib/unicore/lib/InMyanma.pl b/Master/perltl/lib/unicore/lib/InMyanma.pl
deleted file mode 100644
index e00a9f29422..00000000000
--- a/Master/perltl/lib/unicore/lib/InMyanma.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InMyanmar} (and fuzzy permutations)
-#
-# Meaning: Block 'Myanmar'
-#
-return <<'END';
-1000 109F Myanmar
-END
diff --git a/Master/perltl/lib/unicore/lib/InNumber.pl b/Master/perltl/lib/unicore/lib/InNumber.pl
deleted file mode 100644
index e1f219e98fa..00000000000
--- a/Master/perltl/lib/unicore/lib/InNumber.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InNumberForms} (and fuzzy permutations)
-#
-# Meaning: Block 'Number Forms'
-#
-return <<'END';
-2150 218F Number Forms
-END
diff --git a/Master/perltl/lib/unicore/lib/InOgham.pl b/Master/perltl/lib/unicore/lib/InOgham.pl
deleted file mode 100644
index 6336e02a379..00000000000
--- a/Master/perltl/lib/unicore/lib/InOgham.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InOgham} (and fuzzy permutations)
-#
-# Meaning: Block 'Ogham'
-#
-return <<'END';
-1680 169F Ogham
-END
diff --git a/Master/perltl/lib/unicore/lib/InOldIta.pl b/Master/perltl/lib/unicore/lib/InOldIta.pl
deleted file mode 100644
index 71b2acce1b6..00000000000
--- a/Master/perltl/lib/unicore/lib/InOldIta.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InOldItalic} (and fuzzy permutations)
-#
-# Meaning: Block 'Old Italic'
-#
-return <<'END';
-10300 1032F Old Italic
-END
diff --git a/Master/perltl/lib/unicore/lib/InOptica.pl b/Master/perltl/lib/unicore/lib/InOptica.pl
deleted file mode 100644
index bc3f3eefe53..00000000000
--- a/Master/perltl/lib/unicore/lib/InOptica.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InOpticalCharacterRecognition} (and fuzzy permutations)
-#
-# Meaning: Block 'Optical Character Recognition'
-#
-return <<'END';
-2440 245F Optical Character Recognition
-END
diff --git a/Master/perltl/lib/unicore/lib/InOriya.pl b/Master/perltl/lib/unicore/lib/InOriya.pl
deleted file mode 100644
index a8bc8aaa3f0..00000000000
--- a/Master/perltl/lib/unicore/lib/InOriya.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InOriya} (and fuzzy permutations)
-#
-# Meaning: Block 'Oriya'
-#
-return <<'END';
-0B00 0B7F Oriya
-END
diff --git a/Master/perltl/lib/unicore/lib/InPrivat.pl b/Master/perltl/lib/unicore/lib/InPrivat.pl
deleted file mode 100644
index a2b0d6bd4b7..00000000000
--- a/Master/perltl/lib/unicore/lib/InPrivat.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InPrivateUseArea} (and fuzzy permutations)
-#
-# Meaning: Block 'Private Use Area'
-#
-return <<'END';
-E000 F8FF Private Use Area
-END
diff --git a/Master/perltl/lib/unicore/lib/InRunic.pl b/Master/perltl/lib/unicore/lib/InRunic.pl
deleted file mode 100644
index b99e1fa44de..00000000000
--- a/Master/perltl/lib/unicore/lib/InRunic.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InRunic} (and fuzzy permutations)
-#
-# Meaning: Block 'Runic'
-#
-return <<'END';
-16A0 16FF Runic
-END
diff --git a/Master/perltl/lib/unicore/lib/InSinhal.pl b/Master/perltl/lib/unicore/lib/InSinhal.pl
deleted file mode 100644
index b08f3885193..00000000000
--- a/Master/perltl/lib/unicore/lib/InSinhal.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSinhala} (and fuzzy permutations)
-#
-# Meaning: Block 'Sinhala'
-#
-return <<'END';
-0D80 0DFF Sinhala
-END
diff --git a/Master/perltl/lib/unicore/lib/InSmallF.pl b/Master/perltl/lib/unicore/lib/InSmallF.pl
deleted file mode 100644
index 7938a44c8db..00000000000
--- a/Master/perltl/lib/unicore/lib/InSmallF.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSmallFormVariants} (and fuzzy permutations)
-#
-# Meaning: Block 'Small Form Variants'
-#
-return <<'END';
-FE50 FE6F Small Form Variants
-END
diff --git a/Master/perltl/lib/unicore/lib/InSpacin.pl b/Master/perltl/lib/unicore/lib/InSpacin.pl
deleted file mode 100644
index 9a382598f4a..00000000000
--- a/Master/perltl/lib/unicore/lib/InSpacin.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSpacingModifierLetters} (and fuzzy permutations)
-#
-# Meaning: Block 'Spacing Modifier Letters'
-#
-return <<'END';
-02B0 02FF Spacing Modifier Letters
-END
diff --git a/Master/perltl/lib/unicore/lib/InSpecia.pl b/Master/perltl/lib/unicore/lib/InSpecia.pl
deleted file mode 100644
index 7d7651a6e70..00000000000
--- a/Master/perltl/lib/unicore/lib/InSpecia.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSpecials} (and fuzzy permutations)
-#
-# Meaning: Block 'Specials'
-#
-return <<'END';
-FFF0 FFFF Specials
-END
diff --git a/Master/perltl/lib/unicore/lib/InSupers.pl b/Master/perltl/lib/unicore/lib/InSupers.pl
deleted file mode 100644
index 493f8170584..00000000000
--- a/Master/perltl/lib/unicore/lib/InSupers.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSuperscriptsAndSubscripts} (and fuzzy permutations)
-#
-# Meaning: Block 'Superscripts and Subscripts'
-#
-return <<'END';
-2070 209F Superscripts and Subscripts
-END
diff --git a/Master/perltl/lib/unicore/lib/InSuppl2.pl b/Master/perltl/lib/unicore/lib/InSuppl2.pl
deleted file mode 100644
index 6e9fb082d96..00000000000
--- a/Master/perltl/lib/unicore/lib/InSuppl2.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementalArrowsA} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplemental Arrows-A'
-#
-return <<'END';
-27F0 27FF Supplemental Arrows-A
-END
diff --git a/Master/perltl/lib/unicore/lib/InSuppl3.pl b/Master/perltl/lib/unicore/lib/InSuppl3.pl
deleted file mode 100644
index e4dc4791f9f..00000000000
--- a/Master/perltl/lib/unicore/lib/InSuppl3.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementaryPrivateUseAreaA} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplementary Private Use Area-A'
-#
-return <<'END';
-F0000 FFFFF Supplementary Private Use Area-A
-END
diff --git a/Master/perltl/lib/unicore/lib/InSuppl4.pl b/Master/perltl/lib/unicore/lib/InSuppl4.pl
deleted file mode 100644
index 5a080021c18..00000000000
--- a/Master/perltl/lib/unicore/lib/InSuppl4.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementaryPrivateUseAreaB} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplementary Private Use Area-B'
-#
-return <<'END';
-100000 10FFFF Supplementary Private Use Area-B
-END
diff --git a/Master/perltl/lib/unicore/lib/InSuppl5.pl b/Master/perltl/lib/unicore/lib/InSuppl5.pl
deleted file mode 100644
index 89c08807612..00000000000
--- a/Master/perltl/lib/unicore/lib/InSuppl5.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementalMathematicalOperators} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplemental Mathematical Operators'
-#
-return <<'END';
-2A00 2AFF Supplemental Mathematical Operators
-END
diff --git a/Master/perltl/lib/unicore/lib/InSupple.pl b/Master/perltl/lib/unicore/lib/InSupple.pl
deleted file mode 100644
index 3fe71f2bd05..00000000000
--- a/Master/perltl/lib/unicore/lib/InSupple.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSupplementalArrowsB} (and fuzzy permutations)
-#
-# Meaning: Block 'Supplemental Arrows-B'
-#
-return <<'END';
-2900 297F Supplemental Arrows-B
-END
diff --git a/Master/perltl/lib/unicore/lib/InSyriac.pl b/Master/perltl/lib/unicore/lib/InSyriac.pl
deleted file mode 100644
index 74f197037bd..00000000000
--- a/Master/perltl/lib/unicore/lib/InSyriac.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InSyriac} (and fuzzy permutations)
-#
-# Meaning: Block 'Syriac'
-#
-return <<'END';
-0700 074F Syriac
-END
diff --git a/Master/perltl/lib/unicore/lib/InTagalo.pl b/Master/perltl/lib/unicore/lib/InTagalo.pl
deleted file mode 100644
index 55c8ca466b2..00000000000
--- a/Master/perltl/lib/unicore/lib/InTagalo.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTagalog} (and fuzzy permutations)
-#
-# Meaning: Block 'Tagalog'
-#
-return <<'END';
-1700 171F Tagalog
-END
diff --git a/Master/perltl/lib/unicore/lib/InTagban.pl b/Master/perltl/lib/unicore/lib/InTagban.pl
deleted file mode 100644
index 9863a2e3c3f..00000000000
--- a/Master/perltl/lib/unicore/lib/InTagban.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTagbanwa} (and fuzzy permutations)
-#
-# Meaning: Block 'Tagbanwa'
-#
-return <<'END';
-1760 177F Tagbanwa
-END
diff --git a/Master/perltl/lib/unicore/lib/InTags.pl b/Master/perltl/lib/unicore/lib/InTags.pl
deleted file mode 100644
index 4a6600e29c3..00000000000
--- a/Master/perltl/lib/unicore/lib/InTags.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTags} (and fuzzy permutations)
-#
-# Meaning: Block 'Tags'
-#
-return <<'END';
-E0000 E007F Tags
-END
diff --git a/Master/perltl/lib/unicore/lib/InTamil.pl b/Master/perltl/lib/unicore/lib/InTamil.pl
deleted file mode 100644
index 20036caa54d..00000000000
--- a/Master/perltl/lib/unicore/lib/InTamil.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTamil} (and fuzzy permutations)
-#
-# Meaning: Block 'Tamil'
-#
-return <<'END';
-0B80 0BFF Tamil
-END
diff --git a/Master/perltl/lib/unicore/lib/InTelugu.pl b/Master/perltl/lib/unicore/lib/InTelugu.pl
deleted file mode 100644
index 1027f933339..00000000000
--- a/Master/perltl/lib/unicore/lib/InTelugu.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTelugu} (and fuzzy permutations)
-#
-# Meaning: Block 'Telugu'
-#
-return <<'END';
-0C00 0C7F Telugu
-END
diff --git a/Master/perltl/lib/unicore/lib/InThaana.pl b/Master/perltl/lib/unicore/lib/InThaana.pl
deleted file mode 100644
index 740d71bd28e..00000000000
--- a/Master/perltl/lib/unicore/lib/InThaana.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InThaana} (and fuzzy permutations)
-#
-# Meaning: Block 'Thaana'
-#
-return <<'END';
-0780 07BF Thaana
-END
diff --git a/Master/perltl/lib/unicore/lib/InThai.pl b/Master/perltl/lib/unicore/lib/InThai.pl
deleted file mode 100644
index db6a14581df..00000000000
--- a/Master/perltl/lib/unicore/lib/InThai.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InThai} (and fuzzy permutations)
-#
-# Meaning: Block 'Thai'
-#
-return <<'END';
-0E00 0E7F Thai
-END
diff --git a/Master/perltl/lib/unicore/lib/InTibeta.pl b/Master/perltl/lib/unicore/lib/InTibeta.pl
deleted file mode 100644
index 8fbe185461c..00000000000
--- a/Master/perltl/lib/unicore/lib/InTibeta.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InTibetan} (and fuzzy permutations)
-#
-# Meaning: Block 'Tibetan'
-#
-return <<'END';
-0F00 0FFF Tibetan
-END
diff --git a/Master/perltl/lib/unicore/lib/InUnifie.pl b/Master/perltl/lib/unicore/lib/InUnifie.pl
deleted file mode 100644
index 50d46f18aa6..00000000000
--- a/Master/perltl/lib/unicore/lib/InUnifie.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InUnifiedCanadianAboriginalSyllabics} (and fuzzy permutations)
-#
-# Meaning: Block 'Unified Canadian Aboriginal Syllabics'
-#
-return <<'END';
-1400 167F Unified Canadian Aboriginal Syllabics
-END
diff --git a/Master/perltl/lib/unicore/lib/InVariat.pl b/Master/perltl/lib/unicore/lib/InVariat.pl
deleted file mode 100644
index 1aa8c298b8c..00000000000
--- a/Master/perltl/lib/unicore/lib/InVariat.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InVariationSelectors} (and fuzzy permutations)
-#
-# Meaning: Block 'Variation Selectors'
-#
-return <<'END';
-FE00 FE0F Variation Selectors
-END
diff --git a/Master/perltl/lib/unicore/lib/InYiRadi.pl b/Master/perltl/lib/unicore/lib/InYiRadi.pl
deleted file mode 100644
index 7b4265f725a..00000000000
--- a/Master/perltl/lib/unicore/lib/InYiRadi.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InYiRadicals} (and fuzzy permutations)
-#
-# Meaning: Block 'Yi Radicals'
-#
-return <<'END';
-A490 A4CF Yi Radicals
-END
diff --git a/Master/perltl/lib/unicore/lib/InYiSyll.pl b/Master/perltl/lib/unicore/lib/InYiSyll.pl
deleted file mode 100644
index c33de835d36..00000000000
--- a/Master/perltl/lib/unicore/lib/InYiSyll.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{InYiSyllables} (and fuzzy permutations)
-#
-# Meaning: Block 'Yi Syllables'
-#
-return <<'END';
-A000 A48F Yi Syllables
-END
diff --git a/Master/perltl/lib/unicore/lib/Inherite.pl b/Master/perltl/lib/unicore/lib/Inherite.pl
deleted file mode 100644
index 49d811268eb..00000000000
--- a/Master/perltl/lib/unicore/lib/Inherite.pl
+++ /dev/null
@@ -1,37 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Inherited} (and fuzzy permutations)
-#
-# Meaning: Script 'INHERITED'
-#
-return <<'END';
-0300 034F INHERITED
-0360 036F INHERITED
-0488 0489 INHERITED
-0591 05A1 INHERITED
-05A3 05B9 INHERITED
-05BB 05BD INHERITED
-05BF INHERITED
-05C1 05C2 INHERITED
-05C4 INHERITED
-064B 0655 INHERITED
-0670 INHERITED
-06D6 06E4 INHERITED
-06E7 06E8 INHERITED
-06EA 06ED INHERITED
-180B 180D INHERITED
-20D0 20EA INHERITED
-302A 302F INHERITED
-3099 309A INHERITED
-FB1E INHERITED
-FE00 FE0F INHERITED
-FE20 FE23 INHERITED
-1D167 1D169 INHERITED
-1D17B 1D182 INHERITED
-1D185 1D18B INHERITED
-1D1AA 1D1AD INHERITED
-END
diff --git a/Master/perltl/lib/unicore/lib/JoinCont.pl b/Master/perltl/lib/unicore/lib/JoinCont.pl
deleted file mode 100644
index be25b1afef6..00000000000
--- a/Master/perltl/lib/unicore/lib/JoinCont.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{JoinControl} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Join_Control'
-#
-return <<'END';
-200C 200D Join_Control
-END
diff --git a/Master/perltl/lib/unicore/lib/Kannada.pl b/Master/perltl/lib/unicore/lib/Kannada.pl
deleted file mode 100644
index 7c9a8580180..00000000000
--- a/Master/perltl/lib/unicore/lib/Kannada.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Kannada} (and fuzzy permutations)
-#
-# Meaning: Script 'KANNADA'
-#
-return <<'END';
-0C82 0C83 KANNADA
-0C85 0C8C KANNADA
-0C8E 0C90 KANNADA
-0C92 0CA8 KANNADA
-0CAA 0CB3 KANNADA
-0CB5 0CB9 KANNADA
-0CBE 0CC4 KANNADA
-0CC6 0CC8 KANNADA
-0CCA 0CCD KANNADA
-0CD5 0CD6 KANNADA
-0CDE KANNADA
-0CE0 0CE1 KANNADA
-0CE6 0CEF KANNADA
-END
diff --git a/Master/perltl/lib/unicore/lib/Katakana.pl b/Master/perltl/lib/unicore/lib/Katakana.pl
deleted file mode 100644
index b6503508832..00000000000
--- a/Master/perltl/lib/unicore/lib/Katakana.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Katakana} (and fuzzy permutations)
-#
-# Meaning: Script 'KATAKANA'
-#
-return <<'END';
-30A1 30FA KATAKANA
-30FD 30FF KATAKANA
-31F0 31FF KATAKANA
-FF66 FF6F KATAKANA
-FF71 FF9D KATAKANA
-END
diff --git a/Master/perltl/lib/unicore/lib/Khmer.pl b/Master/perltl/lib/unicore/lib/Khmer.pl
deleted file mode 100644
index 1e69e0039d0..00000000000
--- a/Master/perltl/lib/unicore/lib/Khmer.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Khmer} (and fuzzy permutations)
-#
-# Meaning: Script 'KHMER'
-#
-return <<'END';
-1780 17D3 KHMER
-17E0 17E9 KHMER
-END
diff --git a/Master/perltl/lib/unicore/lib/L.pl b/Master/perltl/lib/unicore/lib/L.pl
deleted file mode 100644
index 5b17fe75891..00000000000
--- a/Master/perltl/lib/unicore/lib/L.pl
+++ /dev/null
@@ -1,319 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{L}
-# \p{L} (and fuzzy permutations)
-#
-# Meaning: Major Category 'L'
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 0220
-0222 0233
-0250 02AD
-02B0 02B8
-02BB 02C1
-02D0 02D1
-02E0 02E4
-02EE
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-0400 0481
-048A 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-0531 0556
-0559
-0561 0587
-05D0 05EA
-05F0 05F2
-0621 063A
-0640 064A
-066E 066F
-0671 06D3
-06D5
-06E5 06E6
-06FA 06FC
-0710
-0712 072C
-0780 07A5
-07B1
-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
-0B83
-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 10F8
-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
-1700 170C
-170E 1711
-1720 1731
-1740 1751
-1760 176C
-176E 1770
-1780 17B3
-17D7
-17DC
-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
-2071
-207F
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213D 213F
-2145 2149
-3005 3006
-3031 3035
-303B 303C
-3041 3096
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FA5
-A000 A48C
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-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 FE74
-FE76 FEFC
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10300 1031E
-10330 10349
-10400 10425
-10428 1044D
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/perltl/lib/unicore/lib/L_.pl b/Master/perltl/lib/unicore/lib/L_.pl
deleted file mode 100644
index 44afbeb5922..00000000000
--- a/Master/perltl/lib/unicore/lib/L_.pl
+++ /dev/null
@@ -1,112 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{L&}
-#
-# Meaning: [\p{Ll}\p{Lu}\p{Lt}]
-#
-return <<'END';
-0041 005A
-0061 007A
-00AA
-00B5
-00BA
-00C0 00D6
-00D8 00F6
-00F8 01BA
-01BC 01BF
-01C4 0220
-0222 0233
-0250 02AD
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-0400 0481
-048A 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-0531 0556
-0561 0587
-10A0 10C5
-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
-2071
-207F
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2134
-2139
-213D 213F
-2145 2149
-FB00 FB06
-FB13 FB17
-FF21 FF3A
-FF41 FF5A
-10400 10425
-10428 1044D
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-END
diff --git a/Master/perltl/lib/unicore/lib/Lao.pl b/Master/perltl/lib/unicore/lib/Lao.pl
deleted file mode 100644
index 83bc60c59b3..00000000000
--- a/Master/perltl/lib/unicore/lib/Lao.pl
+++ /dev/null
@@ -1,30 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lao} (and fuzzy permutations)
-#
-# Meaning: Script 'LAO'
-#
-return <<'END';
-0E81 0E82 LAO
-0E84 LAO
-0E87 0E88 LAO
-0E8A LAO
-0E8D LAO
-0E94 0E97 LAO
-0E99 0E9F LAO
-0EA1 0EA3 LAO
-0EA5 LAO
-0EA7 LAO
-0EAA 0EAB LAO
-0EAD 0EB9 LAO
-0EBB 0EBD LAO
-0EC0 0EC4 LAO
-0EC6 LAO
-0EC8 0ECD LAO
-0ED0 0ED9 LAO
-0EDC 0EDD LAO
-END
diff --git a/Master/perltl/lib/unicore/lib/Latin.pl b/Master/perltl/lib/unicore/lib/Latin.pl
deleted file mode 100644
index 2b27d1c2233..00000000000
--- a/Master/perltl/lib/unicore/lib/Latin.pl
+++ /dev/null
@@ -1,31 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Latin} (and fuzzy permutations)
-#
-# Meaning: Script 'LATIN'
-#
-return <<'END';
-0041 005A LATIN
-0061 007A LATIN
-00AA LATIN
-00BA LATIN
-00C0 00D6 LATIN
-00D8 00F6 LATIN
-00F8 0220 LATIN
-0222 0233 LATIN
-0250 02AD LATIN
-02B0 02B8 LATIN
-02E0 02E4 LATIN
-1E00 1E9B LATIN
-1EA0 1EF9 LATIN
-2071 LATIN
-207F LATIN
-212A 212B LATIN
-FB00 FB06 LATIN
-FF21 FF3A LATIN
-FF41 FF5A LATIN
-END
diff --git a/Master/perltl/lib/unicore/lib/Ll.pl b/Master/perltl/lib/unicore/lib/Ll.pl
deleted file mode 100644
index 8655dfea53f..00000000000
--- a/Master/perltl/lib/unicore/lib/Ll.pl
+++ /dev/null
@@ -1,433 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ll}
-# \p{Ll} (and fuzzy permutations)
-#
-# Meaning: General Category 'Ll'
-#
-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
-03D9
-03DB
-03DD
-03DF
-03E1
-03E3
-03E5
-03E7
-03E9
-03EB
-03ED
-03EF 03F3
-03F5
-0430 045F
-0461
-0463
-0465
-0467
-0469
-046B
-046D
-046F
-0471
-0473
-0475
-0477
-0479
-047B
-047D
-047F
-0481
-048B
-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
-04C6
-04C8
-04CA
-04CC
-04CE
-04D1
-04D3
-04D5
-04D7
-04D9
-04DB
-04DD
-04DF
-04E1
-04E3
-04E5
-04E7
-04E9
-04EB
-04ED
-04EF
-04F1
-04F3
-04F5
-04F9
-0501
-0503
-0505
-0507
-0509
-050B
-050D
-050F
-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
-2071
-207F
-210A
-210E 210F
-2113
-212F
-2134
-2139
-213D
-2146 2149
-FB00 FB06
-FB13 FB17
-FF41 FF5A
-10428 1044D
-1D41A 1D433
-1D44E 1D454
-1D456 1D467
-1D482 1D49B
-1D4B6 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D4CF
-1D4EA 1D503
-1D51E 1D537
-1D552 1D56B
-1D586 1D59F
-1D5BA 1D5D3
-1D5EE 1D607
-1D622 1D63B
-1D656 1D66F
-1D68A 1D6A3
-1D6C2 1D6DA
-1D6DC 1D6E1
-1D6FC 1D714
-1D716 1D71B
-1D736 1D74E
-1D750 1D755
-1D770 1D788
-1D78A 1D78F
-1D7AA 1D7C2
-1D7C4 1D7C9
-END
diff --git a/Master/perltl/lib/unicore/lib/Lm.pl b/Master/perltl/lib/unicore/lib/Lm.pl
deleted file mode 100644
index 808193f0342..00000000000
--- a/Master/perltl/lib/unicore/lib/Lm.pl
+++ /dev/null
@@ -1,33 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lm}
-# \p{Lm} (and fuzzy permutations)
-#
-# Meaning: General Category 'Lm'
-#
-return <<'END';
-02B0 02B8
-02BB 02C1
-02D0 02D1
-02E0 02E4
-02EE
-037A
-0559
-0640
-06E5 06E6
-0E46
-0EC6
-17D7
-1843
-3005
-3031 3035
-303B
-309D 309E
-30FC 30FE
-FF70
-FF9E FF9F
-END
diff --git a/Master/perltl/lib/unicore/lib/Lo.pl b/Master/perltl/lib/unicore/lib/Lo.pl
deleted file mode 100644
index d5f161a0fa6..00000000000
--- a/Master/perltl/lib/unicore/lib/Lo.pl
+++ /dev/null
@@ -1,217 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lo}
-# \p{Lo} (and fuzzy permutations)
-#
-# Meaning: General Category 'Lo'
-#
-return <<'END';
-01BB
-01C0 01C3
-05D0 05EA
-05F0 05F2
-0621 063A
-0641 064A
-066E 066F
-0671 06D3
-06D5
-06FA 06FC
-0710
-0712 072C
-0780 07A5
-07B1
-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
-0B83
-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 10F8
-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
-1700 170C
-170E 1711
-1720 1731
-1740 1751
-1760 176C
-176E 1770
-1780 17B3
-17DC
-1820 1842
-1844 1877
-1880 18A8
-2135 2138
-3006
-303C
-3041 3096
-309F
-30A1 30FA
-30FF
-3105 312C
-3131 318E
-31A0 31B7
-31F0 31FF
-3400 4DB5
-4E00 9FA5
-A000 A48C
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-FB1D
-FB1F FB28
-FB2A FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3D
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFB
-FE70 FE74
-FE76 FEFC
-FF66 FF6F
-FF71 FF9D
-FFA0 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10300 1031E
-10330 10349
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/perltl/lib/unicore/lib/LogicalO.pl b/Master/perltl/lib/unicore/lib/LogicalO.pl
deleted file mode 100644
index ae5ad73f603..00000000000
--- a/Master/perltl/lib/unicore/lib/LogicalO.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{LogicalOrderException} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Logical_Order_Exception'
-#
-return <<'END';
-0E40 0E44 Logical_Order_Exception
-0EC0 0EC4 Logical_Order_Exception
-END
diff --git a/Master/perltl/lib/unicore/lib/Lower.pl b/Master/perltl/lib/unicore/lib/Lower.pl
deleted file mode 100644
index b9e16389f7c..00000000000
--- a/Master/perltl/lib/unicore/lib/Lower.pl
+++ /dev/null
@@ -1,432 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lower}
-#
-# Meaning: [[:Lower:]]
-#
-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
-03D9
-03DB
-03DD
-03DF
-03E1
-03E3
-03E5
-03E7
-03E9
-03EB
-03ED
-03EF 03F3
-03F5
-0430 045F
-0461
-0463
-0465
-0467
-0469
-046B
-046D
-046F
-0471
-0473
-0475
-0477
-0479
-047B
-047D
-047F
-0481
-048B
-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
-04C6
-04C8
-04CA
-04CC
-04CE
-04D1
-04D3
-04D5
-04D7
-04D9
-04DB
-04DD
-04DF
-04E1
-04E3
-04E5
-04E7
-04E9
-04EB
-04ED
-04EF
-04F1
-04F3
-04F5
-04F9
-0501
-0503
-0505
-0507
-0509
-050B
-050D
-050F
-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
-2071
-207F
-210A
-210E 210F
-2113
-212F
-2134
-2139
-213D
-2146 2149
-FB00 FB06
-FB13 FB17
-FF41 FF5A
-10428 1044D
-1D41A 1D433
-1D44E 1D454
-1D456 1D467
-1D482 1D49B
-1D4B6 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D4CF
-1D4EA 1D503
-1D51E 1D537
-1D552 1D56B
-1D586 1D59F
-1D5BA 1D5D3
-1D5EE 1D607
-1D622 1D63B
-1D656 1D66F
-1D68A 1D6A3
-1D6C2 1D6DA
-1D6DC 1D6E1
-1D6FC 1D714
-1D716 1D71B
-1D736 1D74E
-1D750 1D755
-1D770 1D788
-1D78A 1D78F
-1D7AA 1D7C2
-1D7C4 1D7C9
-END
diff --git a/Master/perltl/lib/unicore/lib/Lowercas.pl b/Master/perltl/lib/unicore/lib/Lowercas.pl
deleted file mode 100644
index 07832e47ee7..00000000000
--- a/Master/perltl/lib/unicore/lib/Lowercas.pl
+++ /dev/null
@@ -1,439 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lowercase} (and fuzzy permutations)
-#
-# Meaning: [\p{Ll}\p{OtherLowercase}]
-#
-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
-02B0 02B8
-02C0 02C1
-02E0 02E4
-0345
-037A
-0390
-03AC 03CE
-03D0 03D1
-03D5 03D7
-03D9
-03DB
-03DD
-03DF
-03E1
-03E3
-03E5
-03E7
-03E9
-03EB
-03ED
-03EF 03F3
-03F5
-0430 045F
-0461
-0463
-0465
-0467
-0469
-046B
-046D
-046F
-0471
-0473
-0475
-0477
-0479
-047B
-047D
-047F
-0481
-048B
-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
-04C6
-04C8
-04CA
-04CC
-04CE
-04D1
-04D3
-04D5
-04D7
-04D9
-04DB
-04DD
-04DF
-04E1
-04E3
-04E5
-04E7
-04E9
-04EB
-04ED
-04EF
-04F1
-04F3
-04F5
-04F9
-0501
-0503
-0505
-0507
-0509
-050B
-050D
-050F
-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
-2071
-207F
-210A
-210E 210F
-2113
-212F
-2134
-2139
-213D
-2146 2149
-2170 217F
-24D0 24E9
-FB00 FB06
-FB13 FB17
-FF41 FF5A
-10428 1044D
-1D41A 1D433
-1D44E 1D454
-1D456 1D467
-1D482 1D49B
-1D4B6 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D4CF
-1D4EA 1D503
-1D51E 1D537
-1D552 1D56B
-1D586 1D59F
-1D5BA 1D5D3
-1D5EE 1D607
-1D622 1D63B
-1D656 1D66F
-1D68A 1D6A3
-1D6C2 1D6DA
-1D6DC 1D6E1
-1D6FC 1D714
-1D716 1D71B
-1D736 1D74E
-1D750 1D755
-1D770 1D788
-1D78A 1D78F
-1D7AA 1D7C2
-1D7C4 1D7C9
-END
diff --git a/Master/perltl/lib/unicore/lib/Lt.pl b/Master/perltl/lib/unicore/lib/Lt.pl
deleted file mode 100644
index 40f761a9c69..00000000000
--- a/Master/perltl/lib/unicore/lib/Lt.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lt}
-# \p{Lt} (and fuzzy permutations)
-#
-# Meaning: General Category 'Lt'
-#
-return <<'END';
-01C5
-01C8
-01CB
-01F2
-1F88 1F8F
-1F98 1F9F
-1FA8 1FAF
-1FBC
-1FCC
-1FFC
-END
diff --git a/Master/perltl/lib/unicore/lib/Lu.pl b/Master/perltl/lib/unicore/lib/Lu.pl
deleted file mode 100644
index 1414b40d2f7..00000000000
--- a/Master/perltl/lib/unicore/lib/Lu.pl
+++ /dev/null
@@ -1,432 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Lu}
-# \p{Lu} (and fuzzy permutations)
-#
-# Meaning: General Category 'Lu'
-#
-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
-0220
-0222
-0224
-0226
-0228
-022A
-022C
-022E
-0230
-0232
-0386
-0388 038A
-038C
-038E 038F
-0391 03A1
-03A3 03AB
-03D2 03D4
-03D8
-03DA
-03DC
-03DE
-03E0
-03E2
-03E4
-03E6
-03E8
-03EA
-03EC
-03EE
-03F4
-0400 042F
-0460
-0462
-0464
-0466
-0468
-046A
-046C
-046E
-0470
-0472
-0474
-0476
-0478
-047A
-047C
-047E
-0480
-048A
-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
-04C5
-04C7
-04C9
-04CB
-04CD
-04D0
-04D2
-04D4
-04D6
-04D8
-04DA
-04DC
-04DE
-04E0
-04E2
-04E4
-04E6
-04E8
-04EA
-04EC
-04EE
-04F0
-04F2
-04F4
-04F8
-0500
-0502
-0504
-0506
-0508
-050A
-050C
-050E
-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
-213E 213F
-2145
-FF21 FF3A
-10400 10425
-1D400 1D419
-1D434 1D44D
-1D468 1D481
-1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B5
-1D4D0 1D4E9
-1D504 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D538 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D56C 1D585
-1D5A0 1D5B9
-1D5D4 1D5ED
-1D608 1D621
-1D63C 1D655
-1D670 1D689
-1D6A8 1D6C0
-1D6E2 1D6FA
-1D71C 1D734
-1D756 1D76E
-1D790 1D7A8
-END
diff --git a/Master/perltl/lib/unicore/lib/M.pl b/Master/perltl/lib/unicore/lib/M.pl
deleted file mode 100644
index cd78b82348e..00000000000
--- a/Master/perltl/lib/unicore/lib/M.pl
+++ /dev/null
@@ -1,125 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{M}
-# \p{M} (and fuzzy permutations)
-#
-# Meaning: Major Category 'M'
-#
-return <<'END';
-0300 034F
-0360 036F
-0483 0486
-0488 0489
-0591 05A1
-05A3 05B9
-05BB 05BD
-05BF
-05C1 05C2
-05C4
-064B 0655
-0670
-06D6 06DC
-06DE 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
-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
-1712 1714
-1732 1734
-1752 1753
-1772 1773
-17B4 17D3
-180B 180D
-18A9
-20D0 20EA
-302A 302F
-3099 309A
-FB1E
-FE00 FE0F
-FE20 FE23
-1D165 1D169
-1D16D 1D172
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-END
diff --git a/Master/perltl/lib/unicore/lib/Malayala.pl b/Master/perltl/lib/unicore/lib/Malayala.pl
deleted file mode 100644
index eb1c7365e14..00000000000
--- a/Master/perltl/lib/unicore/lib/Malayala.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Malayalam} (and fuzzy permutations)
-#
-# Meaning: Script 'MALAYALAM'
-#
-return <<'END';
-0D02 0D03 MALAYALAM
-0D05 0D0C MALAYALAM
-0D0E 0D10 MALAYALAM
-0D12 0D28 MALAYALAM
-0D2A 0D39 MALAYALAM
-0D3E 0D43 MALAYALAM
-0D46 0D48 MALAYALAM
-0D4A 0D4D MALAYALAM
-0D57 MALAYALAM
-0D60 0D61 MALAYALAM
-0D66 0D6F MALAYALAM
-END
diff --git a/Master/perltl/lib/unicore/lib/Math.pl b/Master/perltl/lib/unicore/lib/Math.pl
deleted file mode 100644
index a233c79f8fe..00000000000
--- a/Master/perltl/lib/unicore/lib/Math.pl
+++ /dev/null
@@ -1,101 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Math} (and fuzzy permutations)
-#
-# Meaning: [\p{Sm}\p{OtherMath}]
-#
-return <<'END';
-0028 002B
-002D
-002F
-003C 003E
-005B 005E
-007B 007E
-00AC
-00B1
-00D7
-00F7
-03F6
-2016
-2032 2034
-2044
-2052
-207A 207E
-208A 208E
-20D0 20DC
-20E1
-2102
-210A 2113
-2115
-2119 211D
-2124
-2128
-212C 212D
-212F 2131
-2133 2138
-2140 2144
-214B
-2190 2194
-219A 219B
-21A0
-21A3
-21A6
-21AE
-21CE 21CF
-21D2
-21D4
-21F4 22FF
-2308 230B
-2320 2321
-237C
-239B 23B3
-25B7
-25C1
-25F8 25FF
-266F
-27D0 27E5
-27F0 27FF
-2900 2982
-2999 29D7
-29DC 29FB
-29FE 2AFF
-FB29
-FE35 FE38
-FE59 FE5C
-FE61 FE66
-FE68
-FF08 FF0B
-FF0D
-FF0F
-FF1C FF1E
-FF3B FF3E
-FF5B FF5E
-FFE2
-FFE9 FFEC
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D7C9
-1D7CE 1D7FF
-END
diff --git a/Master/perltl/lib/unicore/lib/Mc.pl b/Master/perltl/lib/unicore/lib/Mc.pl
deleted file mode 100644
index cb4833a16e9..00000000000
--- a/Master/perltl/lib/unicore/lib/Mc.pl
+++ /dev/null
@@ -1,65 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Mc}
-# \p{Mc} (and fuzzy permutations)
-#
-# Meaning: General Category 'Mc'
-#
-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
-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
-1D165 1D166
-1D16D 1D172
-END
diff --git a/Master/perltl/lib/unicore/lib/Me.pl b/Master/perltl/lib/unicore/lib/Me.pl
deleted file mode 100644
index e8dc9d974e0..00000000000
--- a/Master/perltl/lib/unicore/lib/Me.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Me}
-# \p{Me} (and fuzzy permutations)
-#
-# Meaning: General Category 'Me'
-#
-return <<'END';
-0488 0489
-06DE
-20DD 20E0
-20E2 20E4
-END
diff --git a/Master/perltl/lib/unicore/lib/Mirrored.pl b/Master/perltl/lib/unicore/lib/Mirrored.pl
deleted file mode 100644
index f7512515add..00000000000
--- a/Master/perltl/lib/unicore/lib/Mirrored.pl
+++ /dev/null
@@ -1,105 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Mirrored}
-#
-# Meaning: Mirrored in bidirectional text
-#
-return <<'END';
-0028 0029
-003C
-003E
-005B
-005D
-007B
-007D
-00AB
-00BB
-2039 203A
-2045 2046
-207D 207E
-208D 208E
-2140
-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 22FF
-2308 230B
-2320 2321
-2329 232A
-2768 2775
-27D3 27D6
-27DC 27DE
-27E2 27EB
-2983 2998
-299B 29AF
-29B8
-29C0 29C5
-29C9
-29CE 29D2
-29D4 29D5
-29D8 29DC
-29E1
-29E3 29E5
-29E8 29E9
-29F4 29F9
-29FC 29FD
-2A0A 2A1C
-2A1E 2A21
-2A24
-2A26
-2A29
-2A2B 2A2E
-2A34 2A35
-2A3C 2A3E
-2A57 2A58
-2A64 2A65
-2A6A 2A6D
-2A6F 2A70
-2A73 2A74
-2A79 2AA3
-2AA6 2AAD
-2AAF 2AD6
-2ADC
-2ADE
-2AE2 2AE6
-2AEC 2AEE
-2AF3
-2AF7 2AFB
-2AFD
-3008 3011
-3014 301B
-FF08 FF09
-FF1C
-FF1E
-FF3B
-FF3D
-FF5B
-FF5D
-FF5F FF60
-FF62 FF63
-END
diff --git a/Master/perltl/lib/unicore/lib/Mn.pl b/Master/perltl/lib/unicore/lib/Mn.pl
deleted file mode 100644
index 481f1ed4915..00000000000
--- a/Master/perltl/lib/unicore/lib/Mn.pl
+++ /dev/null
@@ -1,117 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Mn}
-# \p{Mn} (and fuzzy permutations)
-#
-# Meaning: General Category 'Mn'
-#
-return <<'END';
-0300 034F
-0360 036F
-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
-1712 1714
-1732 1734
-1752 1753
-1772 1773
-17B7 17BD
-17C6
-17C9 17D3
-180B 180D
-18A9
-20D0 20DC
-20E1
-20E5 20EA
-302A 302F
-3099 309A
-FB1E
-FE00 FE0F
-FE20 FE23
-1D167 1D169
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-END
diff --git a/Master/perltl/lib/unicore/lib/Mongolia.pl b/Master/perltl/lib/unicore/lib/Mongolia.pl
deleted file mode 100644
index 5cdc083e149..00000000000
--- a/Master/perltl/lib/unicore/lib/Mongolia.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Mongolian} (and fuzzy permutations)
-#
-# Meaning: Script 'MONGOLIAN'
-#
-return <<'END';
-1810 1819 MONGOLIAN
-1820 1877 MONGOLIAN
-1880 18A9 MONGOLIAN
-END
diff --git a/Master/perltl/lib/unicore/lib/Myanmar.pl b/Master/perltl/lib/unicore/lib/Myanmar.pl
deleted file mode 100644
index 49385bbe0a2..00000000000
--- a/Master/perltl/lib/unicore/lib/Myanmar.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Myanmar} (and fuzzy permutations)
-#
-# Meaning: Script 'MYANMAR'
-#
-return <<'END';
-1000 1021 MYANMAR
-1023 1027 MYANMAR
-1029 102A MYANMAR
-102C 1032 MYANMAR
-1036 1039 MYANMAR
-1040 1049 MYANMAR
-1050 1059 MYANMAR
-END
diff --git a/Master/perltl/lib/unicore/lib/N.pl b/Master/perltl/lib/unicore/lib/N.pl
deleted file mode 100644
index 612b79f1f3d..00000000000
--- a/Master/perltl/lib/unicore/lib/N.pl
+++ /dev/null
@@ -1,56 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{N}
-# \p{N} (and fuzzy permutations)
-#
-# Meaning: Major Category 'N'
-#
-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 24FE
-2776 2793
-3007
-3021 3029
-3038 303A
-3192 3195
-3220 3229
-3251 325F
-3280 3289
-32B1 32BF
-FF10 FF19
-10320 10323
-1034A
-1D7CE 1D7FF
-END
diff --git a/Master/perltl/lib/unicore/lib/Nd.pl b/Master/perltl/lib/unicore/lib/Nd.pl
deleted file mode 100644
index 30cd8445dd1..00000000000
--- a/Master/perltl/lib/unicore/lib/Nd.pl
+++ /dev/null
@@ -1,34 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Nd}
-# \p{Nd} (and fuzzy permutations)
-#
-# Meaning: General Category 'Nd'
-#
-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
-1D7CE 1D7FF
-END
diff --git a/Master/perltl/lib/unicore/lib/Nl.pl b/Master/perltl/lib/unicore/lib/Nl.pl
deleted file mode 100644
index 14279d3030d..00000000000
--- a/Master/perltl/lib/unicore/lib/Nl.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Nl}
-# \p{Nl} (and fuzzy permutations)
-#
-# Meaning: General Category 'Nl'
-#
-return <<'END';
-16EE 16F0
-2160 2183
-3007
-3021 3029
-3038 303A
-1034A
-END
diff --git a/Master/perltl/lib/unicore/lib/No.pl b/Master/perltl/lib/unicore/lib/No.pl
deleted file mode 100644
index ede689d6a46..00000000000
--- a/Master/perltl/lib/unicore/lib/No.pl
+++ /dev/null
@@ -1,33 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{No}
-# \p{No} (and fuzzy permutations)
-#
-# Meaning: General Category 'No'
-#
-return <<'END';
-00B2 00B3
-00B9
-00BC 00BE
-09F4 09F9
-0BF0 0BF2
-0F2A 0F33
-1372 137C
-2070
-2074 2079
-2080 2089
-2153 215F
-2460 249B
-24EA 24FE
-2776 2793
-3192 3195
-3220 3229
-3251 325F
-3280 3289
-32B1 32BF
-10320 10323
-END
diff --git a/Master/perltl/lib/unicore/lib/Nonchara.pl b/Master/perltl/lib/unicore/lib/Nonchara.pl
deleted file mode 100644
index adf874015e3..00000000000
--- a/Master/perltl/lib/unicore/lib/Nonchara.pl
+++ /dev/null
@@ -1,30 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{NoncharacterCodePoint} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Noncharacter_Code_Point'
-#
-return <<'END';
-FDD0 FDEF Noncharacter_Code_Point
-FFFE FFFF Noncharacter_Code_Point
-1FFFE 1FFFF Noncharacter_Code_Point
-2FFFE 2FFFF Noncharacter_Code_Point
-3FFFE 3FFFF Noncharacter_Code_Point
-4FFFE 4FFFF Noncharacter_Code_Point
-5FFFE 5FFFF Noncharacter_Code_Point
-6FFFE 6FFFF Noncharacter_Code_Point
-7FFFE 7FFFF Noncharacter_Code_Point
-8FFFE 8FFFF Noncharacter_Code_Point
-9FFFE 9FFFF Noncharacter_Code_Point
-AFFFE AFFFF Noncharacter_Code_Point
-BFFFE BFFFF Noncharacter_Code_Point
-CFFFE CFFFF Noncharacter_Code_Point
-DFFFE DFFFF Noncharacter_Code_Point
-EFFFE EFFFF Noncharacter_Code_Point
-FFFFE FFFFF Noncharacter_Code_Point
-10FFFE 10FFFF Noncharacter_Code_Point
-END
diff --git a/Master/perltl/lib/unicore/lib/Ogham.pl b/Master/perltl/lib/unicore/lib/Ogham.pl
deleted file mode 100644
index 6b9538485b6..00000000000
--- a/Master/perltl/lib/unicore/lib/Ogham.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ogham} (and fuzzy permutations)
-#
-# Meaning: Script 'OGHAM'
-#
-return <<'END';
-1681 169A OGHAM
-END
diff --git a/Master/perltl/lib/unicore/lib/OldItali.pl b/Master/perltl/lib/unicore/lib/OldItali.pl
deleted file mode 100644
index 7fe3725c0e6..00000000000
--- a/Master/perltl/lib/unicore/lib/OldItali.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OldItalic} (and fuzzy permutations)
-#
-# Meaning: Script 'OLD_ITALIC'
-#
-return <<'END';
-10300 1031E OLD_ITALIC
-END
diff --git a/Master/perltl/lib/unicore/lib/Oriya.pl b/Master/perltl/lib/unicore/lib/Oriya.pl
deleted file mode 100644
index 2b599d6c08a..00000000000
--- a/Master/perltl/lib/unicore/lib/Oriya.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Oriya} (and fuzzy permutations)
-#
-# Meaning: Script 'ORIYA'
-#
-return <<'END';
-0B01 0B03 ORIYA
-0B05 0B0C ORIYA
-0B0F 0B10 ORIYA
-0B13 0B28 ORIYA
-0B2A 0B30 ORIYA
-0B32 0B33 ORIYA
-0B36 0B39 ORIYA
-0B3C 0B43 ORIYA
-0B47 0B48 ORIYA
-0B4B 0B4D ORIYA
-0B56 0B57 ORIYA
-0B5C 0B5D ORIYA
-0B5F 0B61 ORIYA
-0B66 0B6F ORIYA
-END
diff --git a/Master/perltl/lib/unicore/lib/OtherAlp.pl b/Master/perltl/lib/unicore/lib/OtherAlp.pl
deleted file mode 100644
index 97eda4888e5..00000000000
--- a/Master/perltl/lib/unicore/lib/OtherAlp.pl
+++ /dev/null
@@ -1,99 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherAlphabetic} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Alphabetic'
-#
-return <<'END';
-0345 Other_Alphabetic
-05B0 05B9 Other_Alphabetic
-05BB 05BD Other_Alphabetic
-05BF Other_Alphabetic
-05C1 05C2 Other_Alphabetic
-05C4 Other_Alphabetic
-064B 0655 Other_Alphabetic
-0670 Other_Alphabetic
-06D6 06DC Other_Alphabetic
-06E1 06E4 Other_Alphabetic
-06E7 06E8 Other_Alphabetic
-06ED Other_Alphabetic
-0711 Other_Alphabetic
-0730 073F Other_Alphabetic
-07A6 07B0 Other_Alphabetic
-0901 0903 Other_Alphabetic
-093E 094C Other_Alphabetic
-0962 0963 Other_Alphabetic
-0981 0983 Other_Alphabetic
-09BE 09C4 Other_Alphabetic
-09C7 09C8 Other_Alphabetic
-09CB 09CC Other_Alphabetic
-09D7 Other_Alphabetic
-09E2 09E3 Other_Alphabetic
-0A02 Other_Alphabetic
-0A3E 0A42 Other_Alphabetic
-0A47 0A48 Other_Alphabetic
-0A4B 0A4C Other_Alphabetic
-0A70 0A71 Other_Alphabetic
-0A81 0A83 Other_Alphabetic
-0ABE 0AC5 Other_Alphabetic
-0AC7 0AC9 Other_Alphabetic
-0ACB 0ACC Other_Alphabetic
-0B01 0B03 Other_Alphabetic
-0B3E 0B43 Other_Alphabetic
-0B47 0B48 Other_Alphabetic
-0B4B 0B4C Other_Alphabetic
-0B56 0B57 Other_Alphabetic
-0B82 Other_Alphabetic
-0BBE 0BC2 Other_Alphabetic
-0BC6 0BC8 Other_Alphabetic
-0BCA 0BCC Other_Alphabetic
-0BD7 Other_Alphabetic
-0C01 0C03 Other_Alphabetic
-0C3E 0C44 Other_Alphabetic
-0C46 0C48 Other_Alphabetic
-0C4A 0C4C Other_Alphabetic
-0C55 0C56 Other_Alphabetic
-0C82 0C83 Other_Alphabetic
-0CBE 0CC4 Other_Alphabetic
-0CC6 0CC8 Other_Alphabetic
-0CCA 0CCC Other_Alphabetic
-0CD5 0CD6 Other_Alphabetic
-0D02 0D03 Other_Alphabetic
-0D3E 0D43 Other_Alphabetic
-0D46 0D48 Other_Alphabetic
-0D4A 0D4C Other_Alphabetic
-0D57 Other_Alphabetic
-0D82 0D83 Other_Alphabetic
-0DCF 0DD4 Other_Alphabetic
-0DD6 Other_Alphabetic
-0DD8 0DDF Other_Alphabetic
-0DF2 0DF3 Other_Alphabetic
-0E31 Other_Alphabetic
-0E34 0E3A Other_Alphabetic
-0E4D Other_Alphabetic
-0EB1 Other_Alphabetic
-0EB4 0EB9 Other_Alphabetic
-0EBB 0EBC Other_Alphabetic
-0ECD Other_Alphabetic
-0F71 0F81 Other_Alphabetic
-0F90 0F97 Other_Alphabetic
-0F99 0FBC Other_Alphabetic
-102C 1032 Other_Alphabetic
-1036 Other_Alphabetic
-1038 Other_Alphabetic
-1056 1059 Other_Alphabetic
-16EE 16F0 Other_Alphabetic
-1712 1713 Other_Alphabetic
-1732 1733 Other_Alphabetic
-1752 1753 Other_Alphabetic
-1772 1773 Other_Alphabetic
-17B4 17C8 Other_Alphabetic
-18A9 Other_Alphabetic
-2160 2183 Other_Alphabetic
-FB1E Other_Alphabetic
-1034A Other_Alphabetic
-END
diff --git a/Master/perltl/lib/unicore/lib/OtherDef.pl b/Master/perltl/lib/unicore/lib/OtherDef.pl
deleted file mode 100644
index 6bdd19449aa..00000000000
--- a/Master/perltl/lib/unicore/lib/OtherDef.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherDefaultIgnorableCodePoint} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Default_Ignorable_Code_Point'
-#
-return <<'END';
-180B 180D Other_Default_Ignorable_Code_Point
-2060 206F Other_Default_Ignorable_Code_Point
-FE00 FE0F Other_Default_Ignorable_Code_Point
-FFF0 FFFB Other_Default_Ignorable_Code_Point
-E0000 E0FFF Other_Default_Ignorable_Code_Point
-END
diff --git a/Master/perltl/lib/unicore/lib/OtherGra.pl b/Master/perltl/lib/unicore/lib/OtherGra.pl
deleted file mode 100644
index 7a927cdb456..00000000000
--- a/Master/perltl/lib/unicore/lib/OtherGra.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherGraphemeExtend} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Grapheme_Extend'
-#
-return <<'END';
-FF9E FF9F Other_Grapheme_Extend
-END
diff --git a/Master/perltl/lib/unicore/lib/OtherLow.pl b/Master/perltl/lib/unicore/lib/OtherLow.pl
deleted file mode 100644
index ae844c9d62c..00000000000
--- a/Master/perltl/lib/unicore/lib/OtherLow.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherLowercase} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Lowercase'
-#
-return <<'END';
-02B0 02B8 Other_Lowercase
-02C0 02C1 Other_Lowercase
-02E0 02E4 Other_Lowercase
-0345 Other_Lowercase
-037A Other_Lowercase
-2170 217F Other_Lowercase
-24D0 24E9 Other_Lowercase
-END
diff --git a/Master/perltl/lib/unicore/lib/OtherMat.pl b/Master/perltl/lib/unicore/lib/OtherMat.pl
deleted file mode 100644
index 1f9ad904090..00000000000
--- a/Master/perltl/lib/unicore/lib/OtherMat.pl
+++ /dev/null
@@ -1,76 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherMath} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Math'
-#
-return <<'END';
-0028 002A Other_Math
-002D Other_Math
-002F Other_Math
-005B 005E Other_Math
-007B Other_Math
-007D Other_Math
-2016 Other_Math
-2032 2034 Other_Math
-207D 207E Other_Math
-208D 208E Other_Math
-20D0 20DC Other_Math
-20E1 Other_Math
-2102 Other_Math
-210A 2113 Other_Math
-2115 Other_Math
-2119 211D Other_Math
-2124 Other_Math
-2128 Other_Math
-212C 212D Other_Math
-212F 2131 Other_Math
-2133 2138 Other_Math
-FE35 FE38 Other_Math
-FE59 FE5C Other_Math
-FE61 Other_Math
-FE63 Other_Math
-FE68 Other_Math
-FF08 FF0A Other_Math
-FF0D Other_Math
-FF0F Other_Math
-FF3B FF3E Other_Math
-FF5B Other_Math
-FF5D Other_Math
-1D400 1D454 Other_Math
-1D456 1D49C Other_Math
-1D49E 1D49F Other_Math
-1D4A2 Other_Math
-1D4A5 1D4A6 Other_Math
-1D4A9 1D4AC Other_Math
-1D4AE 1D4B9 Other_Math
-1D4BB Other_Math
-1D4BD 1D4C0 Other_Math
-1D4C2 1D4C3 Other_Math
-1D4C5 1D505 Other_Math
-1D507 1D50A Other_Math
-1D50D 1D514 Other_Math
-1D516 1D51C Other_Math
-1D51E 1D539 Other_Math
-1D53B 1D53E Other_Math
-1D540 1D544 Other_Math
-1D546 Other_Math
-1D54A 1D550 Other_Math
-1D552 1D6A3 Other_Math
-1D6A8 1D6C0 Other_Math
-1D6C2 1D6DA Other_Math
-1D6DC 1D6FA Other_Math
-1D6FC 1D714 Other_Math
-1D716 1D734 Other_Math
-1D736 1D74E Other_Math
-1D750 1D76E Other_Math
-1D770 1D788 Other_Math
-1D78A 1D7A8 Other_Math
-1D7AA 1D7C2 Other_Math
-1D7C4 1D7C9 Other_Math
-1D7CE 1D7FF Other_Math
-END
diff --git a/Master/perltl/lib/unicore/lib/OtherUpp.pl b/Master/perltl/lib/unicore/lib/OtherUpp.pl
deleted file mode 100644
index 4ba30489926..00000000000
--- a/Master/perltl/lib/unicore/lib/OtherUpp.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{OtherUppercase} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Other_Uppercase'
-#
-return <<'END';
-2160 216F Other_Uppercase
-24B6 24CF Other_Uppercase
-END
diff --git a/Master/perltl/lib/unicore/lib/P.pl b/Master/perltl/lib/unicore/lib/P.pl
deleted file mode 100644
index 1302e8d8f9a..00000000000
--- a/Master/perltl/lib/unicore/lib/P.pl
+++ /dev/null
@@ -1,97 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{P}
-# \p{P} (and fuzzy permutations)
-#
-# Meaning: Major Category 'P'
-#
-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
-1735 1736
-17D4 17D6
-17D8 17DA
-1800 180A
-2010 2027
-2030 2043
-2045 2051
-2057
-207D 207E
-208D 208E
-2329 232A
-23B4 23B6
-2768 2775
-27E6 27EB
-2983 2998
-29D8 29DB
-29FC 29FD
-3001 3003
-3008 3011
-3014 301F
-3030
-303D
-30A0
-30FB
-FD3E FD3F
-FE30 FE46
-FE49 FE52
-FE54 FE61
-FE63
-FE68
-FE6A FE6B
-FF01 FF03
-FF05 FF0A
-FF0C FF0F
-FF1A FF1B
-FF1F FF20
-FF3B FF3D
-FF3F
-FF5B
-FF5D
-FF5F FF65
-END
diff --git a/Master/perltl/lib/unicore/lib/Pc.pl b/Master/perltl/lib/unicore/lib/Pc.pl
deleted file mode 100644
index 2f087426846..00000000000
--- a/Master/perltl/lib/unicore/lib/Pc.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Pc}
-# \p{Pc} (and fuzzy permutations)
-#
-# Meaning: General Category 'Pc'
-#
-return <<'END';
-005F
-203F 2040
-30FB
-FE33 FE34
-FE4D FE4F
-FF3F
-FF65
-END
diff --git a/Master/perltl/lib/unicore/lib/Pd.pl b/Master/perltl/lib/unicore/lib/Pd.pl
deleted file mode 100644
index e32f88fe509..00000000000
--- a/Master/perltl/lib/unicore/lib/Pd.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Pd}
-# \p{Pd} (and fuzzy permutations)
-#
-# Meaning: General Category 'Pd'
-#
-return <<'END';
-002D
-00AD
-058A
-1806
-2010 2015
-301C
-3030
-30A0
-FE31 FE32
-FE58
-FE63
-FF0D
-END
diff --git a/Master/perltl/lib/unicore/lib/Pe.pl b/Master/perltl/lib/unicore/lib/Pe.pl
deleted file mode 100644
index 5c7e3c8dbe9..00000000000
--- a/Master/perltl/lib/unicore/lib/Pe.pl
+++ /dev/null
@@ -1,75 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Pe}
-# \p{Pe} (and fuzzy permutations)
-#
-# Meaning: General Category 'Pe'
-#
-return <<'END';
-0029
-005D
-007D
-0F3B
-0F3D
-169C
-2046
-207E
-208E
-232A
-23B5
-2769
-276B
-276D
-276F
-2771
-2773
-2775
-27E7
-27E9
-27EB
-2984
-2986
-2988
-298A
-298C
-298E
-2990
-2992
-2994
-2996
-2998
-29D9
-29DB
-29FD
-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
-FF60
-FF63
-END
diff --git a/Master/perltl/lib/unicore/lib/Pf.pl b/Master/perltl/lib/unicore/lib/Pf.pl
deleted file mode 100644
index 8e363d2a970..00000000000
--- a/Master/perltl/lib/unicore/lib/Pf.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Pf}
-# \p{Pf} (and fuzzy permutations)
-#
-# Meaning: General Category 'Pf'
-#
-return <<'END';
-00BB
-2019
-201D
-203A
-END
diff --git a/Master/perltl/lib/unicore/lib/Pi.pl b/Master/perltl/lib/unicore/lib/Pi.pl
deleted file mode 100644
index c78bde1b9cb..00000000000
--- a/Master/perltl/lib/unicore/lib/Pi.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Pi}
-# \p{Pi} (and fuzzy permutations)
-#
-# Meaning: General Category 'Pi'
-#
-return <<'END';
-00AB
-2018
-201B 201C
-201F
-2039
-END
diff --git a/Master/perltl/lib/unicore/lib/Po.pl b/Master/perltl/lib/unicore/lib/Po.pl
deleted file mode 100644
index 963ce32a156..00000000000
--- a/Master/perltl/lib/unicore/lib/Po.pl
+++ /dev/null
@@ -1,83 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Po}
-# \p{Po} (and fuzzy permutations)
-#
-# Meaning: General Category 'Po'
-#
-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
-1735 1736
-17D4 17D6
-17D8 17DA
-1800 1805
-1807 180A
-2016 2017
-2020 2027
-2030 2038
-203B 203E
-2041 2043
-2047 2051
-2057
-23B6
-3001 3003
-303D
-FE30
-FE45 FE46
-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/Master/perltl/lib/unicore/lib/Print.pl b/Master/perltl/lib/unicore/lib/Print.pl
deleted file mode 100644
index 01ac6f10d41..00000000000
--- a/Master/perltl/lib/unicore/lib/Print.pl
+++ /dev/null
@@ -1,400 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Print}
-#
-# Meaning: [[:Print:]]
-#
-return <<'END';
-0020 007E
-00A0 0220
-0222 0233
-0250 02AD
-02B0 02EE
-0300 034F
-0360 036F
-0374 0375
-037A
-037E
-0384 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F6
-0400 0486
-0488 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-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 06DC
-06DE 06ED
-06F0 06FE
-0700 070D
-0710 072C
-0730 074A
-0780 07B1
-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 10F8
-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
-1700 170C
-170E 1714
-1720 1736
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17DC
-17E0 17E9
-1800 180D
-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 2052
-2057
-205F
-2070 2071
-2074 208E
-20A0 20B1
-20D0 20EA
-2100 213A
-213D 214B
-2153 2183
-2190 23CE
-2400 2426
-2440 244A
-2460 24FE
-2500 2613
-2616 2617
-2619 267D
-2680 2689
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2794
-2798 27AF
-27B1 27BE
-27D0 27EB
-27F0 2AFF
-2E80 2E99
-2E9B 2EF3
-2F00 2FD5
-2FF0 2FFB
-3000 303F
-3041 3096
-3099 30FF
-3105 312C
-3131 318E
-3190 31B7
-31F0 321C
-3220 3243
-3251 327B
-327F 32CB
-32D0 32FE
-3300 3376
-337B 33DD
-33E0 33FE
-3400 4DB5
-4E00 9FA5
-A000 A48C
-A490 A4C6
-AC00 D7A3
-E000 FA2D
-FA30 FA6A
-FB00 FB06
-FB13 FB17
-FB1D FB36
-FB38 FB3C
-FB3E
-FB40 FB41
-FB43 FB44
-FB46 FBB1
-FBD3 FD3F
-FD50 FD8F
-FD92 FDC7
-FDF0 FDFC
-FE00 FE0F
-FE20 FE23
-FE30 FE46
-FE49 FE52
-FE54 FE66
-FE68 FE6B
-FE70 FE74
-FE76 FEFC
-FF01 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-FFE0 FFE6
-FFE8 FFEE
-FFFC FFFD
-10300 1031E
-10320 10323
-10330 1034A
-10400 10425
-10428 1044D
-1D000 1D0F5
-1D100 1D126
-1D12A 1D172
-1D17B 1D1DD
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-F0000 FFFFD
-100000 10FFFD
-END
diff --git a/Master/perltl/lib/unicore/lib/Ps.pl b/Master/perltl/lib/unicore/lib/Ps.pl
deleted file mode 100644
index 0c0dd89a210..00000000000
--- a/Master/perltl/lib/unicore/lib/Ps.pl
+++ /dev/null
@@ -1,77 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Ps}
-# \p{Ps} (and fuzzy permutations)
-#
-# Meaning: General Category 'Ps'
-#
-return <<'END';
-0028
-005B
-007B
-0F3A
-0F3C
-169B
-201A
-201E
-2045
-207D
-208D
-2329
-23B4
-2768
-276A
-276C
-276E
-2770
-2772
-2774
-27E6
-27E8
-27EA
-2983
-2985
-2987
-2989
-298B
-298D
-298F
-2991
-2993
-2995
-2997
-29D8
-29DA
-29FC
-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
-FF5F
-FF62
-END
diff --git a/Master/perltl/lib/unicore/lib/Punct.pl b/Master/perltl/lib/unicore/lib/Punct.pl
deleted file mode 100644
index ca68b6ab499..00000000000
--- a/Master/perltl/lib/unicore/lib/Punct.pl
+++ /dev/null
@@ -1,96 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Punct}
-#
-# Meaning: [[:Punct:]]
-#
-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
-1735 1736
-17D4 17D6
-17D8 17DA
-1800 180A
-2010 2027
-2030 2043
-2045 2051
-2057
-207D 207E
-208D 208E
-2329 232A
-23B4 23B6
-2768 2775
-27E6 27EB
-2983 2998
-29D8 29DB
-29FC 29FD
-3001 3003
-3008 3011
-3014 301F
-3030
-303D
-30A0
-30FB
-FD3E FD3F
-FE30 FE46
-FE49 FE52
-FE54 FE61
-FE63
-FE68
-FE6A FE6B
-FF01 FF03
-FF05 FF0A
-FF0C FF0F
-FF1A FF1B
-FF1F FF20
-FF3B FF3D
-FF3F
-FF5B
-FF5D
-FF5F FF65
-END
diff --git a/Master/perltl/lib/unicore/lib/Quotatio.pl b/Master/perltl/lib/unicore/lib/Quotatio.pl
deleted file mode 100644
index 802e85a1f52..00000000000
--- a/Master/perltl/lib/unicore/lib/Quotatio.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{QuotationMark} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Quotation_Mark'
-#
-return <<'END';
-0022 Quotation_Mark
-0027 Quotation_Mark
-00AB Quotation_Mark
-00BB Quotation_Mark
-2018 201F Quotation_Mark
-2039 203A Quotation_Mark
-300C 300F Quotation_Mark
-301D 301F Quotation_Mark
-FE41 FE44 Quotation_Mark
-FF02 Quotation_Mark
-FF07 Quotation_Mark
-FF62 FF63 Quotation_Mark
-END
diff --git a/Master/perltl/lib/unicore/lib/Radical.pl b/Master/perltl/lib/unicore/lib/Radical.pl
deleted file mode 100644
index 2b87cfe7929..00000000000
--- a/Master/perltl/lib/unicore/lib/Radical.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Radical} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Radical'
-#
-return <<'END';
-2E80 2E99 Radical
-2E9B 2EF3 Radical
-2F00 2FD5 Radical
-END
diff --git a/Master/perltl/lib/unicore/lib/Runic.pl b/Master/perltl/lib/unicore/lib/Runic.pl
deleted file mode 100644
index 01eef2b0964..00000000000
--- a/Master/perltl/lib/unicore/lib/Runic.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Runic} (and fuzzy permutations)
-#
-# Meaning: Script 'RUNIC'
-#
-return <<'END';
-16A0 16EA RUNIC
-16EE 16F0 RUNIC
-END
diff --git a/Master/perltl/lib/unicore/lib/S.pl b/Master/perltl/lib/unicore/lib/S.pl
deleted file mode 100644
index a1ceed0442b..00000000000
--- a/Master/perltl/lib/unicore/lib/S.pl
+++ /dev/null
@@ -1,159 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{S}
-# \p{S} (and fuzzy permutations)
-#
-# Meaning: Major Category 'S'
-#
-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
-03F6
-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
-2052
-207A 207C
-208A 208C
-20A0 20B1
-2100 2101
-2103 2106
-2108 2109
-2114
-2116 2118
-211E 2123
-2125
-2127
-2129
-212E
-2132
-213A
-2140 2144
-214A 214B
-2190 2328
-232B 23B3
-23B7 23CE
-2400 2426
-2440 244A
-249C 24E9
-2500 2613
-2616 2617
-2619 267D
-2680 2689
-2701 2704
-2706 2709
-270C 2727
-2729 274B
-274D
-274F 2752
-2756
-2758 275E
-2761 2767
-2794
-2798 27AF
-27B1 27BE
-27D0 27E5
-27F0 2982
-2999 29D7
-29DC 29FB
-29FE 2AFF
-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 A4C6
-FB29
-FDFC
-FE62
-FE64 FE66
-FE69
-FF04
-FF0B
-FF1C FF1E
-FF3E
-FF40
-FF5C
-FF5E
-FFE0 FFE6
-FFE8 FFEE
-FFFC FFFD
-1D000 1D0F5
-1D100 1D126
-1D12A 1D164
-1D16A 1D16C
-1D183 1D184
-1D18C 1D1A9
-1D1AE 1D1DD
-1D6C1
-1D6DB
-1D6FB
-1D715
-1D735
-1D74F
-1D76F
-1D789
-1D7A9
-1D7C3
-END
diff --git a/Master/perltl/lib/unicore/lib/Sc.pl b/Master/perltl/lib/unicore/lib/Sc.pl
deleted file mode 100644
index 80d79b5d2f8..00000000000
--- a/Master/perltl/lib/unicore/lib/Sc.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Sc}
-# \p{Sc} (and fuzzy permutations)
-#
-# Meaning: General Category 'Sc'
-#
-return <<'END';
-0024
-00A2 00A5
-09F2 09F3
-0E3F
-17DB
-20A0 20B1
-FDFC
-FE69
-FF04
-FFE0 FFE1
-FFE5 FFE6
-END
diff --git a/Master/perltl/lib/unicore/lib/Sinhala.pl b/Master/perltl/lib/unicore/lib/Sinhala.pl
deleted file mode 100644
index 3288efe1fe7..00000000000
--- a/Master/perltl/lib/unicore/lib/Sinhala.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Sinhala} (and fuzzy permutations)
-#
-# Meaning: Script 'SINHALA'
-#
-return <<'END';
-0D82 0D83 SINHALA
-0D85 0D96 SINHALA
-0D9A 0DB1 SINHALA
-0DB3 0DBB SINHALA
-0DBD SINHALA
-0DC0 0DC6 SINHALA
-0DCA SINHALA
-0DCF 0DD4 SINHALA
-0DD6 SINHALA
-0DD8 0DDF SINHALA
-0DF2 0DF3 SINHALA
-END
diff --git a/Master/perltl/lib/unicore/lib/Sk.pl b/Master/perltl/lib/unicore/lib/Sk.pl
deleted file mode 100644
index 19ff8b02686..00000000000
--- a/Master/perltl/lib/unicore/lib/Sk.pl
+++ /dev/null
@@ -1,35 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Sk}
-# \p{Sk} (and fuzzy permutations)
-#
-# Meaning: General Category 'Sk'
-#
-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/Master/perltl/lib/unicore/lib/Sm.pl b/Master/perltl/lib/unicore/lib/Sm.pl
deleted file mode 100644
index 8e55e4efe66..00000000000
--- a/Master/perltl/lib/unicore/lib/Sm.pl
+++ /dev/null
@@ -1,71 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Sm}
-# \p{Sm} (and fuzzy permutations)
-#
-# Meaning: General Category 'Sm'
-#
-return <<'END';
-002B
-003C 003E
-007C
-007E
-00AC
-00B1
-00D7
-00F7
-03F6
-2044
-2052
-207A 207C
-208A 208C
-2140 2144
-214B
-2190 2194
-219A 219B
-21A0
-21A3
-21A6
-21AE
-21CE 21CF
-21D2
-21D4
-21F4 22FF
-2308 230B
-2320 2321
-237C
-239B 23B3
-25B7
-25C1
-25F8 25FF
-266F
-27D0 27E5
-27F0 27FF
-2900 2982
-2999 29D7
-29DC 29FB
-29FE 2AFF
-FB29
-FE62
-FE64 FE66
-FF0B
-FF1C FF1E
-FF5C
-FF5E
-FFE2
-FFE9 FFEC
-1D6C1
-1D6DB
-1D6FB
-1D715
-1D735
-1D74F
-1D76F
-1D789
-1D7A9
-1D7C3
-END
diff --git a/Master/perltl/lib/unicore/lib/So.pl b/Master/perltl/lib/unicore/lib/So.pl
deleted file mode 100644
index 1ef7acc99cf..00000000000
--- a/Master/perltl/lib/unicore/lib/So.pl
+++ /dev/null
@@ -1,117 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{So}
-# \p{So} (and fuzzy permutations)
-#
-# Meaning: General Category 'So'
-#
-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
-214A
-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
-23B7 23CE
-2400 2426
-2440 244A
-249C 24E9
-2500 25B6
-25B8 25C0
-25C2 25F7
-2600 2613
-2616 2617
-2619 266E
-2670 267D
-2680 2689
-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 A4C6
-FFE4
-FFE8
-FFED FFEE
-FFFC FFFD
-1D000 1D0F5
-1D100 1D126
-1D12A 1D164
-1D16A 1D16C
-1D183 1D184
-1D18C 1D1A9
-1D1AE 1D1DD
-END
diff --git a/Master/perltl/lib/unicore/lib/SoftDott.pl b/Master/perltl/lib/unicore/lib/SoftDott.pl
deleted file mode 100644
index b36e6756572..00000000000
--- a/Master/perltl/lib/unicore/lib/SoftDott.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{SoftDotted} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Soft_Dotted'
-#
-return <<'END';
-0069 006A Soft_Dotted
-012F Soft_Dotted
-0268 Soft_Dotted
-0456 Soft_Dotted
-0458 Soft_Dotted
-1E2D Soft_Dotted
-1ECB Soft_Dotted
-END
diff --git a/Master/perltl/lib/unicore/lib/Space.pl b/Master/perltl/lib/unicore/lib/Space.pl
deleted file mode 100644
index 868c88c5449..00000000000
--- a/Master/perltl/lib/unicore/lib/Space.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Space}
-#
-# Meaning: [[:Space:]]
-#
-return <<'END';
-0009 000D
-0020
-00A0
-1680
-2000 200B
-2028 2029
-202F
-205F
-3000
-END
diff --git a/Master/perltl/lib/unicore/lib/SpacePer.pl b/Master/perltl/lib/unicore/lib/SpacePer.pl
deleted file mode 100644
index bf1cdcbbc15..00000000000
--- a/Master/perltl/lib/unicore/lib/SpacePer.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{SpacePerl}
-#
-# Meaning: \s
-#
-return <<'END';
-0009 000A
-000C 000D
-0020
-0085
-00A0
-1680
-2000 200B
-2028 2029
-202F
-205F
-3000
-END
diff --git a/Master/perltl/lib/unicore/lib/Syriac.pl b/Master/perltl/lib/unicore/lib/Syriac.pl
deleted file mode 100644
index d78a76db792..00000000000
--- a/Master/perltl/lib/unicore/lib/Syriac.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Syriac} (and fuzzy permutations)
-#
-# Meaning: Script 'SYRIAC'
-#
-return <<'END';
-0710 072C SYRIAC
-0730 074A SYRIAC
-END
diff --git a/Master/perltl/lib/unicore/lib/Tagalog.pl b/Master/perltl/lib/unicore/lib/Tagalog.pl
deleted file mode 100644
index 78ab346469a..00000000000
--- a/Master/perltl/lib/unicore/lib/Tagalog.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Tagalog} (and fuzzy permutations)
-#
-# Meaning: Script 'TAGALOG'
-#
-return <<'END';
-1700 170C TAGALOG
-170E 1714 TAGALOG
-END
diff --git a/Master/perltl/lib/unicore/lib/Tagbanwa.pl b/Master/perltl/lib/unicore/lib/Tagbanwa.pl
deleted file mode 100644
index a7ecbf2af6e..00000000000
--- a/Master/perltl/lib/unicore/lib/Tagbanwa.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Tagbanwa} (and fuzzy permutations)
-#
-# Meaning: Script 'TAGBANWA'
-#
-return <<'END';
-1760 176C TAGBANWA
-176E 1770 TAGBANWA
-1772 1773 TAGBANWA
-END
diff --git a/Master/perltl/lib/unicore/lib/Tamil.pl b/Master/perltl/lib/unicore/lib/Tamil.pl
deleted file mode 100644
index b9777a33d5e..00000000000
--- a/Master/perltl/lib/unicore/lib/Tamil.pl
+++ /dev/null
@@ -1,28 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Tamil} (and fuzzy permutations)
-#
-# Meaning: Script 'TAMIL'
-#
-return <<'END';
-0B82 0B83 TAMIL
-0B85 0B8A TAMIL
-0B8E 0B90 TAMIL
-0B92 0B95 TAMIL
-0B99 0B9A TAMIL
-0B9C TAMIL
-0B9E 0B9F TAMIL
-0BA3 0BA4 TAMIL
-0BA8 0BAA TAMIL
-0BAE 0BB5 TAMIL
-0BB7 0BB9 TAMIL
-0BBE 0BC2 TAMIL
-0BC6 0BC8 TAMIL
-0BCA 0BCD TAMIL
-0BD7 TAMIL
-0BE7 0BF2 TAMIL
-END
diff --git a/Master/perltl/lib/unicore/lib/Telugu.pl b/Master/perltl/lib/unicore/lib/Telugu.pl
deleted file mode 100644
index 1c161eb9e57..00000000000
--- a/Master/perltl/lib/unicore/lib/Telugu.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Telugu} (and fuzzy permutations)
-#
-# Meaning: Script 'TELUGU'
-#
-return <<'END';
-0C01 0C03 TELUGU
-0C05 0C0C TELUGU
-0C0E 0C10 TELUGU
-0C12 0C28 TELUGU
-0C2A 0C33 TELUGU
-0C35 0C39 TELUGU
-0C3E 0C44 TELUGU
-0C46 0C48 TELUGU
-0C4A 0C4D TELUGU
-0C55 0C56 TELUGU
-0C60 0C61 TELUGU
-0C66 0C6F TELUGU
-END
diff --git a/Master/perltl/lib/unicore/lib/Terminal.pl b/Master/perltl/lib/unicore/lib/Terminal.pl
deleted file mode 100644
index d7606867ce8..00000000000
--- a/Master/perltl/lib/unicore/lib/Terminal.pl
+++ /dev/null
@@ -1,48 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{TerminalPunctuation} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Terminal_Punctuation'
-#
-return <<'END';
-0021 Terminal_Punctuation
-002C Terminal_Punctuation
-002E Terminal_Punctuation
-003A 003B Terminal_Punctuation
-003F Terminal_Punctuation
-037E Terminal_Punctuation
-0387 Terminal_Punctuation
-0589 Terminal_Punctuation
-060C Terminal_Punctuation
-061B Terminal_Punctuation
-061F Terminal_Punctuation
-06D4 Terminal_Punctuation
-0700 070A Terminal_Punctuation
-070C Terminal_Punctuation
-0964 0965 Terminal_Punctuation
-0E5A 0E5B Terminal_Punctuation
-104A 104B Terminal_Punctuation
-1361 1368 Terminal_Punctuation
-166D 166E Terminal_Punctuation
-16EB 16ED Terminal_Punctuation
-17D4 17D6 Terminal_Punctuation
-17DA Terminal_Punctuation
-1802 1805 Terminal_Punctuation
-1808 1809 Terminal_Punctuation
-203C 203D Terminal_Punctuation
-2048 2049 Terminal_Punctuation
-3001 3002 Terminal_Punctuation
-FE50 FE52 Terminal_Punctuation
-FE54 FE57 Terminal_Punctuation
-FF01 Terminal_Punctuation
-FF0C Terminal_Punctuation
-FF0E Terminal_Punctuation
-FF1A FF1B Terminal_Punctuation
-FF1F Terminal_Punctuation
-FF61 Terminal_Punctuation
-FF64 Terminal_Punctuation
-END
diff --git a/Master/perltl/lib/unicore/lib/Thaana.pl b/Master/perltl/lib/unicore/lib/Thaana.pl
deleted file mode 100644
index 9c2be21b40f..00000000000
--- a/Master/perltl/lib/unicore/lib/Thaana.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Thaana} (and fuzzy permutations)
-#
-# Meaning: Script 'THAANA'
-#
-return <<'END';
-0780 07B1 THAANA
-END
diff --git a/Master/perltl/lib/unicore/lib/Thai.pl b/Master/perltl/lib/unicore/lib/Thai.pl
deleted file mode 100644
index b09ced7a7ac..00000000000
--- a/Master/perltl/lib/unicore/lib/Thai.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Thai} (and fuzzy permutations)
-#
-# Meaning: Script 'THAI'
-#
-return <<'END';
-0E01 0E3A THAI
-0E40 0E4E THAI
-0E50 0E59 THAI
-END
diff --git a/Master/perltl/lib/unicore/lib/Tibetan.pl b/Master/perltl/lib/unicore/lib/Tibetan.pl
deleted file mode 100644
index cdf7d5b2015..00000000000
--- a/Master/perltl/lib/unicore/lib/Tibetan.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Tibetan} (and fuzzy permutations)
-#
-# Meaning: Script 'TIBETAN'
-#
-return <<'END';
-0F00 TIBETAN
-0F18 0F19 TIBETAN
-0F20 0F33 TIBETAN
-0F35 TIBETAN
-0F37 TIBETAN
-0F39 TIBETAN
-0F40 0F47 TIBETAN
-0F49 0F6A TIBETAN
-0F71 0F84 TIBETAN
-0F86 0F8B TIBETAN
-0F90 0F97 TIBETAN
-0F99 0FBC TIBETAN
-0FC6 TIBETAN
-END
diff --git a/Master/perltl/lib/unicore/lib/Title.pl b/Master/perltl/lib/unicore/lib/Title.pl
deleted file mode 100644
index a1d03207447..00000000000
--- a/Master/perltl/lib/unicore/lib/Title.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Title}
-#
-# Meaning: [[:Title:]]
-#
-return <<'END';
-01C5
-01C8
-01CB
-01F2
-1F88 1F8F
-1F98 1F9F
-1FA8 1FAF
-1FBC
-1FCC
-1FFC
-END
diff --git a/Master/perltl/lib/unicore/lib/UnifiedI.pl b/Master/perltl/lib/unicore/lib/UnifiedI.pl
deleted file mode 100644
index 5e4019a7069..00000000000
--- a/Master/perltl/lib/unicore/lib/UnifiedI.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{UnifiedIdeograph} (and fuzzy permutations)
-#
-# Meaning: Extended property 'Unified_Ideograph'
-#
-return <<'END';
-3400 4DB5 Unified_Ideograph
-4E00 9FA5 Unified_Ideograph
-FA0E FA0F Unified_Ideograph
-FA11 Unified_Ideograph
-FA13 FA14 Unified_Ideograph
-FA1F Unified_Ideograph
-FA21 Unified_Ideograph
-FA23 FA24 Unified_Ideograph
-FA27 FA29 Unified_Ideograph
-20000 2A6D6 Unified_Ideograph
-END
diff --git a/Master/perltl/lib/unicore/lib/Upper.pl b/Master/perltl/lib/unicore/lib/Upper.pl
deleted file mode 100644
index d3350db9b94..00000000000
--- a/Master/perltl/lib/unicore/lib/Upper.pl
+++ /dev/null
@@ -1,431 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Upper}
-#
-# Meaning: [[:Upper:]]
-#
-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
-0220
-0222
-0224
-0226
-0228
-022A
-022C
-022E
-0230
-0232
-0386
-0388 038A
-038C
-038E 038F
-0391 03A1
-03A3 03AB
-03D2 03D4
-03D8
-03DA
-03DC
-03DE
-03E0
-03E2
-03E4
-03E6
-03E8
-03EA
-03EC
-03EE
-03F4
-0400 042F
-0460
-0462
-0464
-0466
-0468
-046A
-046C
-046E
-0470
-0472
-0474
-0476
-0478
-047A
-047C
-047E
-0480
-048A
-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
-04C5
-04C7
-04C9
-04CB
-04CD
-04D0
-04D2
-04D4
-04D6
-04D8
-04DA
-04DC
-04DE
-04E0
-04E2
-04E4
-04E6
-04E8
-04EA
-04EC
-04EE
-04F0
-04F2
-04F4
-04F8
-0500
-0502
-0504
-0506
-0508
-050A
-050C
-050E
-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
-213E 213F
-2145
-FF21 FF3A
-10400 10425
-1D400 1D419
-1D434 1D44D
-1D468 1D481
-1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B5
-1D4D0 1D4E9
-1D504 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D538 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D56C 1D585
-1D5A0 1D5B9
-1D5D4 1D5ED
-1D608 1D621
-1D63C 1D655
-1D670 1D689
-1D6A8 1D6C0
-1D6E2 1D6FA
-1D71C 1D734
-1D756 1D76E
-1D790 1D7A8
-END
diff --git a/Master/perltl/lib/unicore/lib/Uppercas.pl b/Master/perltl/lib/unicore/lib/Uppercas.pl
deleted file mode 100644
index 7f39ab9ee39..00000000000
--- a/Master/perltl/lib/unicore/lib/Uppercas.pl
+++ /dev/null
@@ -1,433 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Uppercase} (and fuzzy permutations)
-#
-# Meaning: [\p{Lu}\p{Other_Uppercase}]
-#
-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
-0220
-0222
-0224
-0226
-0228
-022A
-022C
-022E
-0230
-0232
-0386
-0388 038A
-038C
-038E 038F
-0391 03A1
-03A3 03AB
-03D2 03D4
-03D8
-03DA
-03DC
-03DE
-03E0
-03E2
-03E4
-03E6
-03E8
-03EA
-03EC
-03EE
-03F4
-0400 042F
-0460
-0462
-0464
-0466
-0468
-046A
-046C
-046E
-0470
-0472
-0474
-0476
-0478
-047A
-047C
-047E
-0480
-048A
-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
-04C5
-04C7
-04C9
-04CB
-04CD
-04D0
-04D2
-04D4
-04D6
-04D8
-04DA
-04DC
-04DE
-04E0
-04E2
-04E4
-04E6
-04E8
-04EA
-04EC
-04EE
-04F0
-04F2
-04F4
-04F8
-0500
-0502
-0504
-0506
-0508
-050A
-050C
-050E
-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
-213E 213F
-2145
-2160 216F
-24B6 24CF
-FF21 FF3A
-10400 10425
-1D400 1D419
-1D434 1D44D
-1D468 1D481
-1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B5
-1D4D0 1D4E9
-1D504 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D538 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D56C 1D585
-1D5A0 1D5B9
-1D5D4 1D5ED
-1D608 1D621
-1D63C 1D655
-1D670 1D689
-1D6A8 1D6C0
-1D6E2 1D6FA
-1D71C 1D734
-1D756 1D76E
-1D790 1D7A8
-END
diff --git a/Master/perltl/lib/unicore/lib/WhiteSpa.pl b/Master/perltl/lib/unicore/lib/WhiteSpa.pl
deleted file mode 100644
index 8f05124ec30..00000000000
--- a/Master/perltl/lib/unicore/lib/WhiteSpa.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{WhiteSpace} (and fuzzy permutations)
-#
-# Meaning: Extended property 'White_Space'
-#
-return <<'END';
-0009 000D White_Space
-0020 White_Space
-0085 White_Space
-00A0 White_Space
-1680 White_Space
-2000 200A White_Space
-2028 2029 White_Space
-202F White_Space
-3000 White_Space
-END
diff --git a/Master/perltl/lib/unicore/lib/Word.pl b/Master/perltl/lib/unicore/lib/Word.pl
deleted file mode 100644
index fcd8aa0f805..00000000000
--- a/Master/perltl/lib/unicore/lib/Word.pl
+++ /dev/null
@@ -1,424 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Word}
-#
-# Meaning: [[:Word:]]
-#
-return <<'END';
-0030 0039
-0041 005A
-005F
-0061 007A
-00AA
-00B2 00B3
-00B5
-00B9 00BA
-00BC 00BE
-00C0 00D6
-00D8 00F6
-00F8 0220
-0222 0233
-0250 02AD
-02B0 02B8
-02BB 02C1
-02D0 02D1
-02E0 02E4
-02EE
-0300 034F
-0360 036F
-037A
-0386
-0388 038A
-038C
-038E 03A1
-03A3 03CE
-03D0 03F5
-0400 0481
-0483 0486
-0488 04CE
-04D0 04F5
-04F8 04F9
-0500 050F
-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
-066E 06D3
-06D5 06DC
-06DE 06E8
-06EA 06ED
-06F0 06FC
-0710 072C
-0730 074A
-0780 07B1
-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 10F8
-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
-1700 170C
-170E 1714
-1720 1734
-1740 1753
-1760 176C
-176E 1770
-1772 1773
-1780 17D3
-17D7
-17DC
-17E0 17E9
-180B 180D
-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 2071
-2074 2079
-207F 2089
-20D0 20EA
-2102
-2107
-210A 2113
-2115
-2119 211D
-2124
-2126
-2128
-212A 212D
-212F 2131
-2133 2139
-213D 213F
-2145 2149
-2153 2183
-2460 249B
-24EA 24FE
-2776 2793
-3005 3007
-3021 302F
-3031 3035
-3038 303C
-3041 3096
-3099 309A
-309D 309F
-30A1 30FA
-30FC 30FF
-3105 312C
-3131 318E
-3192 3195
-31A0 31B7
-31F0 31FF
-3220 3229
-3251 325F
-3280 3289
-32B1 32BF
-3400 4DB5
-4E00 9FA5
-A000 A48C
-AC00 D7A3
-F900 FA2D
-FA30 FA6A
-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
-FE00 FE0F
-FE20 FE23
-FE70 FE74
-FE76 FEFC
-FF10 FF19
-FF21 FF3A
-FF41 FF5A
-FF66 FFBE
-FFC2 FFC7
-FFCA FFCF
-FFD2 FFD7
-FFDA FFDC
-10300 1031E
-10320 10323
-10330 1034A
-10400 10425
-10428 1044D
-1D165 1D169
-1D16D 1D172
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-1D400 1D454
-1D456 1D49C
-1D49E 1D49F
-1D4A2
-1D4A5 1D4A6
-1D4A9 1D4AC
-1D4AE 1D4B9
-1D4BB
-1D4BD 1D4C0
-1D4C2 1D4C3
-1D4C5 1D505
-1D507 1D50A
-1D50D 1D514
-1D516 1D51C
-1D51E 1D539
-1D53B 1D53E
-1D540 1D544
-1D546
-1D54A 1D550
-1D552 1D6A3
-1D6A8 1D6C0
-1D6C2 1D6DA
-1D6DC 1D6FA
-1D6FC 1D714
-1D716 1D734
-1D736 1D74E
-1D750 1D76E
-1D770 1D788
-1D78A 1D7A8
-1D7AA 1D7C2
-1D7C4 1D7C9
-1D7CE 1D7FF
-20000 2A6D6
-2F800 2FA1D
-END
diff --git a/Master/perltl/lib/unicore/lib/XDigit.pl b/Master/perltl/lib/unicore/lib/XDigit.pl
deleted file mode 100644
index 6fe95d5c1ed..00000000000
--- a/Master/perltl/lib/unicore/lib/XDigit.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{XDigit}
-#
-# Meaning: [[:XDigit:]]
-#
-return <<'END';
-0030 0039
-0041 0046
-0061 0066
-END
diff --git a/Master/perltl/lib/unicore/lib/Yi.pl b/Master/perltl/lib/unicore/lib/Yi.pl
deleted file mode 100644
index eb7131e801a..00000000000
--- a/Master/perltl/lib/unicore/lib/Yi.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Yi} (and fuzzy permutations)
-#
-# Meaning: Script 'YI'
-#
-return <<'END';
-A000 A48C YI
-A490 A4A1 YI
-A4A4 A4B3 YI
-A4B5 A4C0 YI
-A4C2 A4C4 YI
-A4C6 YI
-END
diff --git a/Master/perltl/lib/unicore/lib/Z.pl b/Master/perltl/lib/unicore/lib/Z.pl
deleted file mode 100644
index 751327e6922..00000000000
--- a/Master/perltl/lib/unicore/lib/Z.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Z}
-# \p{Z} (and fuzzy permutations)
-#
-# Meaning: Major Category 'Z'
-#
-return <<'END';
-0020
-00A0
-1680
-2000 200B
-2028 2029
-202F
-205F
-3000
-END
diff --git a/Master/perltl/lib/unicore/lib/Zl.pl b/Master/perltl/lib/unicore/lib/Zl.pl
deleted file mode 100644
index db5580deb4f..00000000000
--- a/Master/perltl/lib/unicore/lib/Zl.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Zl}
-# \p{Zl} (and fuzzy permutations)
-#
-# Meaning: General Category 'Zl'
-#
-return <<'END';
-2028
-END
diff --git a/Master/perltl/lib/unicore/lib/Zp.pl b/Master/perltl/lib/unicore/lib/Zp.pl
deleted file mode 100644
index f7a4eb62a3b..00000000000
--- a/Master/perltl/lib/unicore/lib/Zp.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Zp}
-# \p{Zp} (and fuzzy permutations)
-#
-# Meaning: General Category 'Zp'
-#
-return <<'END';
-2029
-END
diff --git a/Master/perltl/lib/unicore/lib/Zs.pl b/Master/perltl/lib/unicore/lib/Zs.pl
deleted file mode 100644
index 1c1b467a570..00000000000
--- a/Master/perltl/lib/unicore/lib/Zs.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{Zs}
-# \p{Zs} (and fuzzy permutations)
-#
-# Meaning: General Category 'Zs'
-#
-return <<'END';
-0020
-00A0
-1680
-2000 200B
-202F
-205F
-3000
-END
diff --git a/Master/perltl/lib/unicore/lib/_CanonDC.pl b/Master/perltl/lib/unicore/lib/_CanonDC.pl
deleted file mode 100644
index 3d627e7ed21..00000000000
--- a/Master/perltl/lib/unicore/lib/_CanonDC.pl
+++ /dev/null
@@ -1,16 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{_CanonDCIJ}
-#
-# Meaning: (for internal casefolding use)
-#
-return <<'END';
-0069 006A
-012F
-1E2D
-1ECB
-END
diff --git a/Master/perltl/lib/unicore/lib/_CaseIgn.pl b/Master/perltl/lib/unicore/lib/_CaseIgn.pl
deleted file mode 100644
index dafa4a668f1..00000000000
--- a/Master/perltl/lib/unicore/lib/_CaseIgn.pl
+++ /dev/null
@@ -1,118 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{_CaseIgnorable}
-#
-# Meaning: (for internal casefolding use)
-#
-return <<'END';
-00AD
-0300 034F
-0360 036F
-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
-1712 1714
-1732 1734
-1752 1753
-1772 1773
-17B7 17BD
-17C6
-17C9 17D3
-180B 180D
-18A9
-2010
-20D0 20DC
-20E1
-20E5 20EA
-302A 302F
-3099 309A
-FB1E
-FE00 FE0F
-FE20 FE23
-1D167 1D169
-1D17B 1D182
-1D185 1D18B
-1D1AA 1D1AD
-END
diff --git a/Master/perltl/lib/unicore/lib/_CombAbo.pl b/Master/perltl/lib/unicore/lib/_CombAbo.pl
deleted file mode 100644
index de2c8e46ab7..00000000000
--- a/Master/perltl/lib/unicore/lib/_CombAbo.pl
+++ /dev/null
@@ -1,54 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is built by ./mktables from e.g. UnicodeData.txt.
-# Any changes made here will be lost!
-
-#
-# This file supports:
-# \p{_CombAbove}
-#
-# Meaning: (for internal casefolding use)
-#
-return <<'END';
-0300 0314
-033D 0344
-0346
-034A 034C
-0363 036F
-0483 0486
-0592 0595
-0597 0599
-059C 05A1
-05A8 05A9
-05AB 05AC
-05AF
-05C4
-0653 0654
-06D6 06DC
-06DF 06E2
-06E4
-06E7 06E8
-06EB 06EC
-0730
-0732 0733
-0735 0736
-073A
-073D
-073F 0741
-0743
-0745
-0747
-0749 074A
-0951
-0953 0954
-0F82 0F83
-0F86 0F87
-20D0 20D1
-20D4 20D7
-20DB 20DC
-20E1
-20E7
-20E9
-FE20 FE23
-1D185 1D189
-1D1AA 1D1AD
-END
diff --git a/Master/perltl/lib/utf8.pm b/Master/perltl/lib/utf8.pm
deleted file mode 100644
index 5a37aecba87..00000000000
--- a/Master/perltl/lib/utf8.pm
+++ /dev/null
@@ -1,152 +0,0 @@
-package utf8;
-
-$utf8::hint_bits = 0x00800000;
-
-our $VERSION = '1.00';
-
-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 (or UTF-EBCDIC) in source code
-
-=head1 SYNOPSIS
-
- use utf8;
- no utf8;
-
-=head1 DESCRIPTION
-
-The C<use utf8> pragma tells the Perl parser to allow UTF-8 in the
-program text in the current lexical scope (allow UTF-EBCDIC on EBCDIC based
-platforms). 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. For convenience in what follows the
-term I<UTF-X> is used to refer to UTF-8 on ASCII and ISO Latin based
-platforms and UTF-EBCDIC on EBCDIC based platforms.
-
-Enabling the C<utf8> pragma has the following effect:
-
-=over 4
-
-=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 identifier names, string constants, and constant
-regular expression patterns.
-
-On EBCDIC platforms characters in the Latin 1 character set are
-treated as being part of a literal UTF-EBCDIC character.
-
-=back
-
-Note that if you have bytes with the eighth bit on in your script
-(for example embedded Latin-1 in your string literals), C<use utf8>
-will be unhappy since the bytes are most probably not well-formed
-UTF-8. If you want to have such bytes and use utf8, you can disable
-utf8 until the end the block (or file, if at top level) by C<no utf8;>.
-
-=head2 Utility functions
-
-The following functions are defined in the C<utf8::> package by the perl core.
-
-=over 4
-
-=item * $num_octets = utf8::upgrade($string);
-
-Converts (in-place) internal representation of string to Perl's internal
-I<UTF-X> form. Returns the number of octets necessary to represent
-the string as I<UTF-X>. Can be used to make sure that the
-UTF-8 flag is on, so that C<\w> or C<lc()> work as expected on strings
-containing characters in the range 0x80-0xFF. Note that this should
-not be used to convert
-a legacy byte encoding to Unicode: use Encode for that. Affected
-by the encoding pragma.
-
-=item * utf8::downgrade($string[, FAIL_OK])
-
-Converts (in-place) internal representation of string to be un-encoded
-bytes. Returns true on success. On failure dies or, if the value of
-FAIL_OK is true, returns false. Can be used to make sure that the
-UTF-8 flag is off, e.g. when you want to make sure that the substr()
-or length() function works with the usually faster byte algorithm.
-Note that this should not be used to convert Unicode back to a legacy
-byte encoding: use Encode for that. B<Not> affected by the encoding
-pragma.
-
-=item * utf8::encode($string)
-
-Converts (in-place) I<$string> from logical characters to octet
-sequence representing it in Perl's I<UTF-X> encoding. Same as
-Encode::encode_utf8(). Note that this should not be used to convert
-a legacy byte encoding to Unicode: use Encode for that.
-
-=item * $flag = utf8::decode($string)
-
-Attempts to convert I<$string> in-place from Perl's I<UTF-X> encoding
-into logical characters. Same as Encode::decode_utf8(). Note that this
-should not be used to convert Unicode back to a legacy byte encoding:
-use Encode for that.
-
-=item * $flag = utf8::valid(STRING)
-
-[INTERNAL] Test whether STRING is in a consistent state. Will return
-true if string is held as bytes, or is well-formed UTF-8 and has the
-UTF-8 flag on. Main reason for this routine is to allow Perl's
-testsuite to check that operations have left strings in a consistent
-state.
-
-=back
-
-C<utf8::encode> is like C<utf8::upgrade>, but the UTF8 flag is
-cleared. See L<perlunicode> for more on the UTF8 flag and the C API
-functions C<sv_utf8_upgrade>, C<sv_utf8_downgrade>, C<sv_utf8_encode>,
-and C<sv_utf8_decode>, which are wrapped by the Perl functions
-C<utf8::upgrade>, C<utf8::downgrade>, C<utf8::encode> and
-C<utf8::decode>. Note that in the Perl 5.8.0 implementation the
-functions utf8::valid, utf8::encode, utf8::decode, utf8::upgrade,
-and utf8::downgrade are always available, without a C<require utf8>
-statement-- this may change in future releases.
-
-=head1 BUGS
-
-One can have Unicode in identifier names, but not in package/class or
-subroutine names. While some limited functionality towards this does
-exist as of Perl 5.8.0, that is more accidental than designed; use of
-Unicode for the said purposes is unsupported.
-
-One reason of this unfinishedness is its (currently) inherent
-unportability: since both package names and subroutine names may need
-to be mapped to file and directory names, the Unicode capability of
-the filesystem becomes important-- and there unfortunately aren't
-portable answers.
-
-=head1 SEE ALSO
-
-L<perlunicode>, L<bytes>
-
-=cut
diff --git a/Master/perltl/lib/utf8_heavy.pl b/Master/perltl/lib/utf8_heavy.pl
deleted file mode 100644
index 1839d2144f1..00000000000
--- a/Master/perltl/lib/utf8_heavy.pl
+++ /dev/null
@@ -1,344 +0,0 @@
-package utf8;
-use strict;
-use warnings;
-
-sub DEBUG () { 0 }
-
-sub DESTROY {}
-
-my %Cache;
-
-sub croak { require Carp; Carp::croak(@_) }
-
-##
-## "SWASH" == "SWATCH HASH". A "swatch" is a swatch of the Unicode landscape
-##
-
-sub SWASHNEW {
- my ($class, $type, $list, $minbits, $none) = @_;
- local $^D = 0 if $^D;
-
- print STDERR "SWASHNEW @_\n" if DEBUG;
-
- ##
- ## Get the list of codepoints for the type.
- ## Called from utf8.c
- ##
- ## Given a $type, our goal is to fill $list with the set of codepoint
- ## ranges.
- ##
- ## To make the parsing of $type clear, this code takes the a rather
- ## unorthadox approach of last'ing out of the block once we have the
- ## info we need. Were this to be a subroutine, the 'last' would just
- ## be a 'return'.
- ##
- my $file; ## file to load data from, and also part of the %Cache key.
- my $ListSorted = 0;
-
- if ($type)
- {
- $type =~ s/^\s+//;
- $type =~ s/\s+$//;
-
- print "type = $type\n" if DEBUG;
-
- GETFILE:
- {
- ##
- ## 'Is' is always optional, so if it's there, remove it.
- ## Same with 'Category=' and 'Script='.
- ##
- ## 'Block=' is replaced by 'In'.
- ##
- $type =~ s/^Is(?:\s+|[-_])?//i
- or
- $type =~ s/^Category\s*=\s*//i
- or
- $type =~ s/^Script\s*=\s*//i
- or
- $type =~ s/^Block\s*=\s*/In/i;
-
- ##
- ## See if it's in the direct mapping table.
- ##
- require "unicore/Exact.pl";
- if (my $base = $utf8::Exact{$type}) {
- $file = "unicore/lib/$base.pl";
- last GETFILE;
- }
-
- ##
- ## If not there exactly, try the canonical form. The canonical
- ## form is lowercased, with any separators (\s+|[-_]) removed.
- ##
- my $canonical = lc $type;
- $canonical =~ s/(?<=[a-z\d])(?:\s+|[-_])(?=[a-z\d])//g;
- print "canonical = $canonical\n" if DEBUG;
-
- require "unicore/Canonical.pl";
- if (my $base = $utf8::Canonical{$canonical}) {
- $file = "unicore/lib/$base.pl";
- last GETFILE;
- }
-
- ##
- ## It could be a user-defined property.
- ##
-
- if ($type =~ /^I[ns](\w+)$/) {
- my @caller = caller(1);
-
- if (defined $caller[0]) {
- my $prop = $caller[0] . "::" . $type;
-
- if (exists &{$prop}) {
- no strict 'refs';
-
- $list = &{$prop};
- last GETFILE;
- }
- }
- }
-
- ##
- ## Last attempt -- see if it's a "To" name (e.g. "ToLower")
- ##
- if ($type =~ /^To([A-Z][A-Za-z]+)$/)
- {
- $file = "unicore/To/$1.pl";
- ## would like to test to see if $file actually exists....
- last GETFILE;
- }
-
- ##
- ## If we reach this line, it's because we couldn't figure
- ## out what to do with $type. Ouch.
- ##
-
- return $type;
- }
-
- if (defined $file) {
- print "found it (file='$file')\n" if DEBUG;
-
- ##
- ## If we reach here, it was due to a 'last GETFILE' above
- ## (exception: user-defined properties), so we
- ## have a filename, so now we load it if we haven't already.
- ## If we have, return the cached results. The cache key is the
- ## file to load.
- ##
- if ($Cache{$file} and ref($Cache{$file}) eq $class)
- {
- print "Returning cached '$file' for \\p{$type}\n" if DEBUG;
- return $Cache{$class, $file};
- }
-
- $list = do $file;
- }
-
- $ListSorted = 1; ## we know that these lists are sorted
- }
-
- my $extras;
- my $bits;
-
- my $ORIG = $list;
- 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;
- if ($c eq 'utf8') {
- $subobj = $c->SWASHNEW($t, "", 0, 0, 0);
- }
- elsif ($c =~ /^([0-9a-fA-F]+)/) {
- $subobj = utf8->SWASHNEW("", $c, 0, 0, 0);
- }
- return $subobj unless ref $subobj;
- 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;
-
- my $SWASH = bless {
- TYPE => $type,
- BITS => $bits,
- EXTRAS => $extras,
- LIST => $list,
- NONE => $none,
- @extras,
- } => $class;
-
- if ($file) {
- $Cache{$class, $file} = $SWASH;
- }
-
- return $SWASH;
-}
-
-# NOTE: utf8.c:swash_init() assumes entries are never modified once generated.
-
-sub SWASHGET {
- # See utf8.c:Perl_swash_fetch for problems with this interface.
- 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 DEBUG;
- 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/Master/perltl/lib/vars.pm b/Master/perltl/lib/vars.pm
deleted file mode 100644
index a0151b84030..00000000000
--- a/Master/perltl/lib/vars.pm
+++ /dev/null
@@ -1,82 +0,0 @@
-package vars;
-
-use 5.006;
-
-our $VERSION = '1.01';
-
-use warnings::register;
-use strict qw(vars subs);
-
-sub import {
- my $callpack = caller;
- my ($pack, @imports) = @_;
- my ($sym, $ch);
- foreach (@imports) {
- if (($ch, $sym) = /^([\$\@\%\*\&])(.+)/) {
- if ($sym =~ /\W/) {
- # time for a more-detailed check-up
- if ($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'))) {
- require Carp;
- Carp::croak("'$_' is not a valid variable name under strict vars");
- }
- }
- $sym = "${callpack}::$sym" unless $sym =~ /::/;
- *$sym =
- ( $ch eq "\$" ? \$$sym
- : $ch eq "\@" ? \@$sym
- : $ch eq "\%" ? \%$sym
- : $ch eq "\*" ? \*$sym
- : $ch eq "\&" ? \&$sym
- : do {
- require Carp;
- Carp::croak("'$_' is not a valid variable name");
- });
- } else {
- require Carp;
- Carp::croak("'$_' 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: For variables in the current package, 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/Master/perltl/lib/warnings.pm b/Master/perltl/lib/warnings.pm
deleted file mode 100644
index 8aa77482b20..00000000000
--- a/Master/perltl/lib/warnings.pm
+++ /dev/null
@@ -1,489 +0,0 @@
-
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file was created by warnings.pl
-# Any changes made here will be lost.
-#
-
-package warnings;
-
-our $VERSION = '1.00';
-
-=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");
- }
-
- warnings::warnif("some warning");
- warnings::warnif("void", "some warning");
- warnings::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 = (
-
- # Warnings Categories added in Perl 5.008
-
- 'all' => 0,
- 'closure' => 2,
- 'deprecated' => 4,
- 'exiting' => 6,
- 'glob' => 8,
- 'io' => 10,
- 'closed' => 12,
- 'exec' => 14,
- 'layer' => 16,
- 'newline' => 18,
- 'pipe' => 20,
- 'unopened' => 22,
- 'misc' => 24,
- 'numeric' => 26,
- 'once' => 28,
- 'overflow' => 30,
- 'pack' => 32,
- 'portable' => 34,
- 'recursion' => 36,
- 'redefine' => 38,
- 'regexp' => 40,
- 'severe' => 42,
- 'debugging' => 44,
- 'inplace' => 46,
- 'internal' => 48,
- 'malloc' => 50,
- 'signal' => 52,
- 'substr' => 54,
- 'syntax' => 56,
- 'ambiguous' => 58,
- 'bareword' => 60,
- 'digit' => 62,
- 'parenthesis' => 64,
- 'precedence' => 66,
- 'printf' => 68,
- 'prototype' => 70,
- 'qw' => 72,
- 'reserved' => 74,
- 'semicolon' => 76,
- 'taint' => 78,
- 'threads' => 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\x04\x00\x00\x00\x00", # [29]
- 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [30]
- 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
- 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
- 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [22]
- 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
- '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\x40\x00\x00\x00\x00\x00\x00", # [23]
- 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [24]
- 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11]
- 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
- 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [25]
- 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
- 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
- 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
- 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
- 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
- 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [16]
- 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [32]
- 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
- 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [17]
- '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\x10\x00\x00\x00\x00\x00\x00\x00", # [18]
- 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [19]
- 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [20]
- '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\x54\x05\x00\x00\x00\x00\x00", # [21..25]
- 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [26]
- 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [27]
- 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x00", # [28..38]
- 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [39]
- 'threads' => "\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
- '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\x08\x00\x00\x00\x00", # [29]
- 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [30]
- 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
- 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
- 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [22]
- 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
- '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\x80\x00\x00\x00\x00\x00\x00", # [23]
- 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [24]
- 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11]
- 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
- 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [25]
- 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
- 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
- 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
- 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
- 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
- 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [16]
- 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [32]
- 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
- 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [17]
- '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\x20\x00\x00\x00\x00\x00\x00\x00", # [18]
- 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [19]
- 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [20]
- '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\xa8\x0a\x00\x00\x00\x00\x00", # [21..25]
- 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [26]
- 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [27]
- 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x00", # [28..38]
- 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [39]
- 'threads' => "\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
- '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 Croaker
-{
- delete $Carp::CarpInternal{'warnings'};
- croak @_ ;
-}
-
-sub bits
-{
- # called from B::Deparse.pm
-
- push @_, 'all' unless @_;
-
- my $mask;
- my $catmask ;
- my $fatal = 0 ;
- my $no_fatal = 0 ;
-
- foreach my $word ( @_ ) {
- if ($word eq 'FATAL') {
- $fatal = 1;
- $no_fatal = 0;
- }
- elsif ($word eq 'NONFATAL') {
- $fatal = 0;
- $no_fatal = 1;
- }
- elsif ($catmask = $Bits{$word}) {
- $mask |= $catmask ;
- $mask |= $DeadBits{$word} if $fatal ;
- $mask &= ~($DeadBits{$word}|$All) if $no_fatal ;
- }
- else
- { Croaker("Unknown warnings category '$word'")}
- }
-
- return $mask ;
-}
-
-sub import
-{
- shift;
-
- my $catmask ;
- my $fatal = 0 ;
- my $no_fatal = 0 ;
-
- my $mask = ${^WARNING_BITS} ;
-
- if (vec($mask, $Offsets{'all'}, 1)) {
- $mask |= $Bits{'all'} ;
- $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1);
- }
-
- push @_, 'all' unless @_;
-
- foreach my $word ( @_ ) {
- if ($word eq 'FATAL') {
- $fatal = 1;
- $no_fatal = 0;
- }
- elsif ($word eq 'NONFATAL') {
- $fatal = 0;
- $no_fatal = 1;
- }
- elsif ($catmask = $Bits{$word}) {
- $mask |= $catmask ;
- $mask |= $DeadBits{$word} if $fatal ;
- $mask &= ~($DeadBits{$word}|$All) if $no_fatal ;
- }
- else
- { Croaker("Unknown warnings category '$word'")}
- }
-
- ${^WARNING_BITS} = $mask ;
-}
-
-sub unimport
-{
- shift;
-
- my $catmask ;
- my $mask = ${^WARNING_BITS} ;
-
- if (vec($mask, $Offsets{'all'}, 1)) {
- $mask |= $Bits{'all'} ;
- $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1);
- }
-
- push @_, 'all' unless @_;
-
- foreach my $word ( @_ ) {
- if ($word eq 'FATAL') {
- next;
- }
- elsif ($catmask = $Bits{$word}) {
- $mask &= ~($catmask | $DeadBits{$word} | $All);
- }
- else
- { Croaker("Unknown warnings category '$word'")}
- }
-
- ${^WARNING_BITS} = $mask ;
-}
-
-sub __chk
-{
- my $category ;
- my $offset ;
- my $isobj = 0 ;
-
- if (@_) {
- # check the category supplied.
- $category = shift ;
- if (ref $category) {
- Croaker ("not an object")
- if $category !~ /^([^=]+)=/ ;
- $category = $1 ;
- $isobj = 1 ;
- }
- $offset = $Offsets{$category};
- Croaker("Unknown warnings category '$category'")
- unless defined $offset;
- }
- else {
- $category = (caller(1))[0] ;
- $offset = $Offsets{$category};
- Croaker("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
-{
- Croaker("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
-{
- Croaker("Usage: warnings::warn([category,] 'message')")
- unless @_ == 2 || @_ == 1 ;
-
- my $message = pop ;
- my ($callers_bitmask, $offset, $i) = __chk(@_) ;
- croak($message)
- if vec($callers_bitmask, $offset+1, 1) ||
- vec($callers_bitmask, $Offsets{'all'}+1, 1) ;
- carp($message) ;
-}
-
-sub warnif
-{
- Croaker("Usage: warnings::warnif([category,] 'message')")
- unless @_ == 2 || @_ == 1 ;
-
- my $message = pop ;
- my ($callers_bitmask, $offset, $i) = __chk(@_) ;
-
- 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/Master/perltl/lib/warnings/register.pm b/Master/perltl/lib/warnings/register.pm
deleted file mode 100644
index c5dc1999a03..00000000000
--- a/Master/perltl/lib/warnings/register.pm
+++ /dev/null
@@ -1,51 +0,0 @@
-package warnings::register ;
-
-our $VERSION = '1.00';
-
-=pod
-
-=head1 NAME
-
-warnings::register - warnings import function
-
-=head1 SYNOPSIS
-
- use warnings::register ;
-
-=head1 DESCRIPTION
-
-Create a warnings category with the same name as the current package.
-
-See L<perlmodlib/Pragmatic Modules> and L<perllexwarn>.
-
-
-=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 ;
diff --git a/Master/perltl/site/lib/Tk.pm b/Master/perltl/site/lib/Tk.pm
deleted file mode 100644
index db05463d66d..00000000000
--- a/Master/perltl/site/lib/Tk.pm
+++ /dev/null
@@ -1,696 +0,0 @@
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# Copyright (c) 1995-1999 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, subject
-# to additional disclaimer in Tk/license.terms due to partial
-# derivation from Tk8.0 sources.
-#
-package Tk;
-require 5.00404;
-use Tk::Event ();
-use AutoLoader qw(AUTOLOAD);
-use DynaLoader;
-use base qw(Exporter DynaLoader);
-
-*fileevent = \&Tk::Event::IO::fileevent;
-
-BEGIN {
- if($^O eq 'cygwin')
- {
- require Tk::Config;
- $Tk::platform = $Tk::Config::win_arch;
- $Tk::platform = 'unix' if $Tk::platform eq 'x';
- }
- else
- {
- $Tk::platform = ($^O eq 'MSWin32') ? $^O : 'unix';
- }
-};
-
-$Tk::tearoff = 1 if ($Tk::platform eq 'unix');
-
-@EXPORT = qw(Exists Ev exit MainLoop DoOneEvent tkinit);
-@EXPORT_OK = qw(NoOp after *widget *event lsearch catch $XS_VERSION
- DONT_WAIT WINDOW_EVENTS FILE_EVENTS TIMER_EVENTS
- IDLE_EVENTS ALL_EVENTS
- NORMAL_BG ACTIVE_BG SELECT_BG
- SELECT_FG TROUGH INDICATOR DISABLED BLACK WHITE);
-%EXPORT_TAGS = (eventtypes => [qw(DONT_WAIT WINDOW_EVENTS FILE_EVENTS
- TIMER_EVENTS IDLE_EVENTS ALL_EVENTS)],
- variables => [qw(*widget *event)],
- colors => [qw(NORMAL_BG ACTIVE_BG SELECT_BG SELECT_FG
- TROUGH INDICATOR DISABLED BLACK WHITE)],
- );
-
-use strict;
-
-use Carp;
-
-# $tk_version and $tk_patchLevel are reset by pTk when a mainwindow
-# is created, $VERSION is checked by bootstrap
-$Tk::version = '8.0';
-$Tk::patchLevel = '8.0';
-$Tk::VERSION = '800.024';
-$Tk::XS_VERSION = $Tk::VERSION;
-$Tk::strictMotif = 0;
-
-{($Tk::library) = __FILE__ =~ /^(.*)\.pm$/;}
-$Tk::library = Tk->findINC('.') unless (defined($Tk::library) && -d $Tk::library);
-
-$Tk::widget = undef;
-$Tk::event = undef;
-
-use vars qw($inMainLoop);
-
-bootstrap Tk;
-
-my $boot_time = timeofday();
-
-# This is a workround for Solaris X11 locale handling
-Preload(DynaLoader::dl_findfile('-L/usr/openwin/lib','-lX11'))
- if (NeedPreload() && -d '/usr/openwin/lib');
-
-use Tk::Submethods ('option' => [qw(add get clear readfile)],
- 'clipboard' => [qw(clear append)]
- );
-
-sub _backTrace
-{
- my $w = shift;
- my $i = 1;
- my ($pack,$file,$line,$sub) = caller($i++);
- while (1)
- {
- my $loc = "at $file line $line";
- ($pack,$file,$line,$sub) = caller($i++);
- last unless defined($sub);
- return 1 if $sub eq '(eval)';
- $w->AddErrorInfo("$sub $loc");
- }
- return 0;
-}
-
-sub BackTrace
-{
- my $w = shift;
- return unless (@_ || $@);
- my $mess = (@_) ? shift : "$@";
- die "$mess\n" if $w->_backTrace;
- # if we get here we are not in an eval so report now
- $w->Fail($mess);
- $w->idletasks;
- die "$mess\n";
-}
-
-#
-# This is a $SIG{__DIE__} handler which does not change the $@
-# string in the way 'croak' does, but rather add to Tk's ErrorInfo.
-# It stops at 1st enclosing eval on assumption that the eval
-# is part of Tk call process and will add its own context to ErrorInfo
-# and then pass on the error.
-#
-sub __DIE__
-{
- my $mess = shift;
- my $w = $Tk::widget;
- # Note that if a __DIE__ handler returns it re-dies up the chain.
- return unless defined $w;
- return if $w->_backTrace;
- # Not in an eval - should not happen
-}
-
-sub XEvent::xy { shift->Info('xy') }
-
-sub XEvent::AUTOLOAD
-{
- my ($meth) = $XEvent::AUTOLOAD =~ /(\w)$/;
- no strict 'refs';
- *{$XEvent::AUTOLOAD} = sub { shift->Info($meth) };
- goto &$XEvent::AUTOLOAD;
-}
-
-sub NoOp { }
-
-sub Ev
-{
- my @args = @_;
- my $obj;
- if (@args == 1)
- {
- my $arg = pop(@args);
- $obj = (ref $arg) ? $arg : \$arg;
- }
- else
- {
- $obj = \@args;
- }
- return bless $obj,'Tk::Ev';
-}
-
-sub InitClass
-{
- my ($package,$parent) = @_;
- croak "Unexpected type of parent $parent" unless(ref $parent);
- croak "$parent is not a widget" unless($parent->IsWidget);
- my $mw = $parent->MainWindow;
- my $hash = $mw->TkHash('_ClassInit_');
- unless (exists $hash->{$package})
- {
- $package->Install($mw);
- $hash->{$package} = $package->ClassInit($mw);
- }
-}
-
-require Tk::Widget;
-require Tk::Image;
-require Tk::MainWindow;
-
-sub Exists
-{my $w = shift;
- return defined($w) && ref($w) && $w->IsWidget && $w->exists;
-}
-
-sub Time_So_Far
-{
- return timeofday() - $boot_time;
-}
-
-# Selection* are not autoloaded as names are too long.
-
-sub SelectionOwn
-{my $widget = shift;
- selection('own',(@_,$widget));
-}
-
-sub SelectionOwner
-{
- selection('own','-displayof',@_);
-}
-
-sub SelectionClear
-{
- selection('clear','-displayof',@_);
-}
-
-sub SelectionExists
-{
- selection('exists','-displayof',@_);
-}
-
-sub SelectionHandle
-{my $widget = shift;
- my $command = pop;
- selection('handle',@_,$widget,$command);
-}
-
-sub SplitString
-{
- local $_ = shift;
- my (@arr, $tmp);
- while (/\{([^{}]*)\}|((?:[^\s\\]|\\.)+)/gs) {
- if (defined $1) { push @arr, $1 }
- else { $tmp = $2 ; $tmp =~ s/\\([\s\\])/$1/g; push @arr, $tmp }
- }
- # carp '('.join(',',@arr).")";
- return @arr;
-}
-
-sub Methods
-{
- my ($package) = caller;
- no strict 'refs';
- foreach my $meth (@_)
- {
- my $name = $meth;
- *{$package."::$meth"} = sub { shift->WidgetMethod($name,@_) };
- }
-}
-
-
-sub MessageBox {
- my ($kind,%args) = @_;
- require Tk::Dialog;
- my $parent = delete $args{'-parent'};
- my $args = \%args;
-
- $args->{-bitmap} = delete $args->{-icon} if defined $args->{-icon};
- $args->{-text} = delete $args->{-message} if defined $args->{-message};
- $args->{-type} = 'OK' unless defined $args->{-type};
-
- my $type;
- if (defined($type = delete $args->{-type})) {
- delete $args->{-type};
- my @buttons = grep($_,map(ucfirst($_),
- split(/(abort|retry|ignore|yes|no|cancel|ok)/,
- lc($type))));
- $args->{-buttons} = [@buttons];
- $args->{-default_button} = delete $args->{-default} if
- defined $args->{-default};
- if (not defined $args->{-default_button} and scalar(@buttons) == 1) {
- $args->{-default_button} = $buttons[0];
- }
- my $md = $parent->Dialog(%$args);
- my $an = $md->Show;
- $md->destroy;
- return $an;
- }
-} # end messageBox
-
-sub messageBox
-{
- my ($widget,%args) = @_;
- $args{'-type'} = (exists $args{'-type'}) ? lc($args{'-type'}) : 'ok';
- tk_messageBox(-parent => $widget, %args);
-}
-
-sub getOpenFile
-{
- tk_getOpenFile(-parent => shift,@_);
-}
-
-sub getSaveFile
-{
- tk_getSaveFile(-parent => shift,@_);
-}
-
-sub chooseColor
-{
- tk_chooseColor(-parent => shift,@_);
-}
-
-sub DialogWrapper
-{
- my ($method,$kind,%args) = @_;
- my $created = 0;
- my $w = delete $args{'-parent'};
- if (defined $w)
- {
- $args{'-popover'} = $w;
- }
- else
- {
- $w = MainWindow->new;
- $w->withdraw;
- $created = 1;
- }
- my $mw = $w->MainWindow;
- my $fs = $mw->{$kind};
- unless (defined $fs)
- {
- $mw->{$kind} = $fs = $mw->$method(%args);
- }
- else
- {
- $fs->configure(%args);
- }
- my $val = $fs->Show;
- $w->destroy if $created;
- return $val;
-}
-
-sub ColorDialog
-{
- require Tk::ColorEditor;
- DialogWrapper('ColorDialog',@_);
-}
-
-sub FDialog
-{
- require Tk::FBox;
- my $cmd = shift;
- if ($cmd =~ /Save/)
- {
- push @_, -type => 'save';
- }
- DialogWrapper('FBox', $cmd, @_);
-}
-
-*MotifFDialog = \&FDialog;
-
-sub MainLoop
-{
- unless ($inMainLoop)
- {
- local $inMainLoop = 1;
- while (Tk::MainWindow->Count)
- {
- DoOneEvent(0);
- }
- }
-}
-
-sub tkinit { return MainWindow->new(@_) }
-
-# a wrapper on eval which turns off user $SIG{__DIE__}
-sub catch (&)
-{
- my $sub = shift;
- eval {local $SIG{'__DIE__'}; &$sub };
-}
-
-my $Home;
-
-sub TranslateFileName
-{
- local $_ = shift;
- unless (defined $Home)
- {
- $Home = $ENV{'HOME'} || ($ENV{'HOMEDRIVE'}.$ENV{'HOMEPATH'});
- $Home =~ s#\\#/#g;
- $Home .= '/' unless $Home =~ m#/$#;
- }
- s#~/#$Home#g;
- # warn $_;
- return $_;
-}
-
-sub findINC
-{
- my $file = join('/',@_);
- my $dir;
- $file =~ s,::,/,g;
- foreach $dir (@INC)
- {
- my $path;
- return $path if (-e ($path = "$dir/$file"));
- }
- return undef;
-}
-
-sub idletasks
-{
- shift->update('idletasks');
-}
-
-
-1;
-
-__END__
-
-sub Error
-{my $w = shift;
- my $error = shift;
- if (Exists($w))
- {
- my $grab = $w->grab('current');
- $grab->Unbusy if (defined $grab);
- }
- chomp($error);
- warn "Tk::Error: $error\n " . join("\n ",@_)."\n";
-}
-
-sub CancelRepeat
-{
- my $w = shift->MainWindow;
- my $id = delete $w->{_afterId_};
- $w->after('cancel',$id) if (defined $id);
-}
-
-sub RepeatId
-{
- my ($w,$id) = @_;
- $w = $w->MainWindow;
- $w->CancelRepeat;
- $w->{_afterId_} = $id;
-}
-
-
-
-#----------------------------------------------------------------------------
-# focus.tcl --
-#
-# This file defines several procedures for managing the input
-# focus.
-#
-# @(#) focus.tcl 1.6 94/12/19 17:06:46
-#
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-sub FocusChildren { shift->children }
-
-#
-# focusNext --
-# This procedure is invoked to move the input focus to the next window
-# after a given one. "Next" is defined in terms of the window
-# stacking order, with all the windows underneath a given top-level
-# (no matter how deeply nested in the hierarchy) considered except
-# for frames and toplevels.
-#
-# Arguments:
-# w - Name of a window: the procedure will set the focus
-# to the next window after this one in the traversal
-# order.
-sub focusNext
-{
- my $w = shift;
- my $cur = $w;
- while (1)
- {
- # Descend to just before the first child of the current widget.
- my $parent = $cur;
- my @children = $cur->FocusChildren();
- my $i = -1;
- # Look for the next sibling that isn't a top-level.
- while (1)
- {
- $i += 1;
- if ($i < @children)
- {
- $cur = $children[$i];
- next if ($cur->toplevel == $cur);
- last
- }
- # No more siblings, so go to the current widget's parent.
- # If it's a top-level, break out of the loop, otherwise
- # look for its next sibling.
- $cur = $parent;
- last if ($cur->toplevel() == $cur);
- $parent = $parent->parent();
- @children = $parent->FocusChildren();
- $i = lsearch(\@children,$cur);
- }
- if ($cur == $w || $cur->FocusOK)
- {
- $cur->tabFocus;
- return;
- }
- }
-}
-# focusPrev --
-# This procedure is invoked to move the input focus to the previous
-# window before a given one. "Previous" is defined in terms of the
-# window stacking order, with all the windows underneath a given
-# top-level (no matter how deeply nested in the hierarchy) considered.
-#
-# Arguments:
-# w - Name of a window: the procedure will set the focus
-# to the previous window before this one in the traversal
-# order.
-sub focusPrev
-{
- my $w = shift;
- my $cur = $w;
- my @children;
- my $i;
- my $parent;
- while (1)
- {
- # Collect information about the current window's position
- # among its siblings. Also, if the window is a top-level,
- # then reposition to just after the last child of the window.
- if ($cur->toplevel() == $cur)
- {
- $parent = $cur;
- @children = $cur->FocusChildren();
- $i = @children;
- }
- else
- {
- $parent = $cur->parent();
- @children = $parent->FocusChildren();
- $i = lsearch(\@children,$cur);
- }
- # Go to the previous sibling, then descend to its last descendant
- # (highest in stacking order. While doing this, ignore top-levels
- # and their descendants. When we run out of descendants, go up
- # one level to the parent.
- while ($i > 0)
- {
- $i--;
- $cur = $children[$i];
- next if ($cur->toplevel() == $cur);
- $parent = $cur;
- @children = $parent->FocusChildren();
- $i = @children;
- }
- $cur = $parent;
- if ($cur == $w || $cur->FocusOK)
- {
- $cur->tabFocus;
- return;
- }
- }
-
-}
-
-sub FocusOK
-{
- my $w = shift;
- my $value;
- catch { $value = $w->cget('-takefocus') };
- if (!$@ && defined($value))
- {
- return 0 if ($value eq '0');
- return $w->viewable if ($value eq '1');
- $value = $w->$value();
- return $value if (defined $value);
- }
- if (!$w->viewable)
- {
- return 0;
- }
- catch { $value = $w->cget('-state') } ;
- if (!$@ && defined($value) && $value eq 'disabled')
- {
- return 0;
- }
- $value = grep(/Key|Focus/,$w->Tk::bind(),$w->Tk::bind(ref($w)));
- return $value;
-}
-
-
-# focusFollowsMouse
-#
-# If this procedure is invoked, Tk will enter "focus-follows-mouse"
-# mode, where the focus is always on whatever window contains the
-# mouse. If this procedure isn't invoked, then the user typically
-# has to click on a window to give it the focus.
-#
-# Arguments:
-# None.
-
-sub EnterFocus
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- my $d = $Ev->d;
- $w->Tk::focus() if ($d eq 'NotifyAncestor' || $d eq 'NotifyNonlinear' || $d eq 'NotifyInferior');
-}
-
-sub tabFocus
-{
- shift->Tk::focus;
-}
-
-sub focusFollowsMouse
-{
- my $widget = shift;
- $widget->bind('all','<Enter>','EnterFocus');
-}
-
-# tkTraverseToMenu --
-# This procedure implements keyboard traversal of menus. Given an
-# ASCII character "char", it looks for a menubutton with that character
-# underlined. If one is found, it posts the menubutton's menu
-#
-# Arguments:
-# w - Window in which the key was typed (selects
-# a toplevel window).
-# char - Character that selects a menu. The case
-# is ignored. If an empty string, nothing
-# happens.
-sub TraverseToMenu
-{
- my $w = shift;
- my $char = shift;
- return unless(defined $char && $char ne '');
- $w = $w->toplevel->FindMenu($char);
-}
-# tkFirstMenu --
-# This procedure traverses to the first menubutton in the toplevel
-# for a given window, and posts that menubutton's menu.
-#
-# Arguments:
-# w - Name of a window. Selects which toplevel
-# to search for menubuttons.
-sub FirstMenu
-{
- my $w = shift;
- $w = $w->toplevel->FindMenu('');
-}
-
-# These wrappers don't use method syntax so need to live
-# in same package as raw Tk routines are newXS'ed into.
-
-sub Selection
-{my $widget = shift;
- my $cmd = shift;
- croak 'Use SelectionOwn/SelectionOwner' if ($cmd eq 'own');
- croak "Use Selection\u$cmd()";
-}
-
-# If we have sub Clipboard in Tk then use base qw(Tk::Clipboard ....)
-# calls it when it does its eval "require $base"
-#sub Clipboard
-#{my $w = shift;
-# my $cmd = shift;
-# croak "Use clipboard\u$cmd()";
-#}
-
-sub Receive
-{
- my $w = shift;
- warn 'Receive(' . join(',',@_) .')';
- die 'Tk rejects send(' . join(',',@_) .")\n";
-}
-
-sub break
-{
- die "_TK_BREAK_\n";
-}
-
-sub updateWidgets
-{
- my ($w) = @_;
- while ($w->DoOneEvent(DONT_WAIT|IDLE_EVENTS|WINDOW_EVENTS))
- {
- }
- $w;
-}
-
-sub ImageNames
-{
- image('names');
-}
-
-sub ImageTypes
-{
- image('types');
-}
-
-sub interps
-{
- my $w = shift;
- return $w->winfo('interps','-displayof');
-}
-
-sub lsearch
-{my $ar = shift;
- my $x = shift;
- my $i;
- for ($i = 0; $i < scalar @$ar; $i++)
- {
- return $i if ($$ar[$i] eq $x);
- }
- return -1;
-}
-
-
-
-
diff --git a/Master/perltl/site/lib/Tk/Adjuster.pm b/Master/perltl/site/lib/Tk/Adjuster.pm
deleted file mode 100644
index 0fd5b4f765a..00000000000
--- a/Master/perltl/site/lib/Tk/Adjuster.pm
+++ /dev/null
@@ -1,435 +0,0 @@
-package Tk::Adjuster;
-
-use vars qw($VERSION);
-$VERSION = '3.025'; # $Id: //depot/Tk8/Tk/Adjuster.pm#25 $
-
-use base qw(Tk::Frame);
-
-# We cannot do this :
-
-# Construct Tk::Widget 'packAdjust';
-
-# because if managed object is Derived (e.g. a Scrolled) then our 'new'
-# will be delegated and hierachy gets turned inside-out
-# So packAdjust is autoloaded in Widget.pm
-
-
-Construct Tk::Widget qw(Adjuster);
-
-{package Tk::Adjuster::Item;
-
-use strict;
-use base qw(Tk::Frame);
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<1>',['BDown', 1]);
- $mw->bind($class,'<Shift-1>',['BDown', 0]);
- $mw->bind($class,'<B1-Motion>',['Motion',1]);
- $mw->bind($class,'<Shift-B1-Motion>',['Motion',0]);
- $mw->bind($class,'<ButtonRelease-1>',['Motion',0]);
- return $class;
-}
-
-sub BDown
-{
- my($w, $delay_mask) = @_;
- $w->{'start_x'} = $w->XEvent->x;
- $w->{'start_y'} = $w->XEvent->y;
- my $adj = $w->Parent;
- delete $adj->{'lin_info'};
- my $delay = $delay_mask && $adj->cget('-delay');
- if ($delay)
- {
- $adj->vert ? $adj->delta_width_bar(0) : $adj->delta_height_bar(0);
- }
-}
-
-sub Motion
-{
- my($w, $delay_mask) = @_;
- my $ev = $w->XEvent;
- my $adj = $w->Parent;
-
- my $delay = $delay_mask && $adj->cget('-delay');
- if ($adj->vert)
- {
- my $dx = $ev->x - $w->{'start_x'};
- $delay ? $adj->delta_width_bar($dx) : $adj->delta_width($dx);
- }
- else
- {
- my $dy = $ev->y - $w->{'start_y'};
- $delay ? $adj->delta_height_bar($dy) : $adj->delta_height($dy);
- }
-}
-
-}
-
-
-
-sub packAfter
-{
- my ($w,$s,%args) = @_;
- my $side = $args{'-side'} ? $args{'-side'} : 'top';
- $w->configure(-side => $side, -widget => $s);
- $w->packed($s, %args);
-}
-
-sub packForget
-{
- my ($w,$forget_slave) = @_;
- $w->Tk::Widget::packForget;
- $w->slave->packForget if $forget_slave;
-}
-
-# Called by Tk::Widget::packAdjust. It was here before packAfter was added
-sub packed
-{
- my ($w,$s,%args) = @_;
- delete $args{'-before'};
- $args{'-expand'} = 0;
- $args{'-after'} = $s;
- $args{'-fill'} = (($w->vert) ? 'y' : 'x');
- $w->pack(%args);
-}
-
-sub gridded
-{
- my ($w,$s,%args) = @_;
- # delete $args{'-before'};
- # $args{'-expand'} = 0;
- # $args{'-after'} = $s;
- # $args{'-fill'} = (($w->vert) ? 'y' : 'x');
- $w->grid(%args);
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Configure>','SizeChange');
- $mw->bind($class,'<Unmap>','Restore');
- $mw->bind($class,'<Map>','Mapped');
- return $class;
-}
-
-sub SizeChange
-{
- my $w = shift;
- # reqwidth/height of Adjuster is stored here. If it is partially pushed out
- # of the window, then $w->width/height returns that of the visible part.
- if ($w->vert)
- {
- my $sx = ($w->Width - $w->{'sep'}->Width)/2;
- $w->{'but'}->place('-x' => 0, '-y' => $w->Height-18);
- $w->{'sep'}->place('-x' => $sx, '-y' => 0, -relheight => 1);
- $w->configure(-width => $w->{'but'}->ReqWidth);
- $w->{'reqwidth'} = $w->reqwidth;
- }
- else
- {
- my $sy = ($w->Height - $w->{'sep'}->Height)/2;
- $w->{'but'}->place('-x' => $w->Width-18, '-y' => 0);
- $w->{'sep'}->place('-x' => 0, '-y' => $sy, -relwidth => 1);
- $w->configure(-height => $w->{'but'}->ReqHeight);
- $w->{'reqheight'} = $w->reqheight;
- }
- # Turn off geometry propagation in the slave. Do only if necessary, as this
- # causes repacking.
- my $s = $w->slave;
- $s->packPropagate('0') if $s->packSlaves && $s->packPropagate();
- $s->gridPropagate('0') if $s->gridSlaves && $s->gridPropagate();
-}
-
-sub Mapped
-{
- my $w = shift;
- $w->idletasks;
- my $m = $w->manager;
- if ($m =~ /^(?:pack|grid)$/)
- {
- my %info = $w->$m('info');
- my $master = $info{'-in'};
- $master->$m('propagate',0);
- $w->{'master'} = $master;
- }
- $w->slave_expand_off;
-}
-
-sub Populate
-{
- my ($w,$args) = @_;
- $w->SUPER::Populate($args);
- $w->{'sep'} = Tk::Adjuster::Item->new($w,-bd => 1, -relief => 'sunken');
- $w->{'but'} = Tk::Adjuster::Item->new($w,-bd => 1, -width => 8, -height => 8, -relief => 'raised');
-
- # Need to explicitly set frame width to 0 for Win32
- my $l = $w->{'lin'} = $w->toplevel->Frame(-bd => 0);
-
- my $cs = $w->ConfigSpecs(-widget => ['PASSIVE','widget','Widget',$w->Parent],
- -side => ['METHOD','side','Side','top'],
- -delay => ['PASSIVE','delay','Delay', 1],
- -background => [['SELF',$w->{'sep'},$w->{'but'}],'background','Background',undef],
- -foreground => [Tk::Configure->new($w->{'lin'},'-background'),'foreground','Foreground','black'],
- -restore => ['PASSIVE','restore', 'Restore', 1],
- );
- $w->_OnDestroy(qw(sep but lin master));
-}
-
-sub side
-{
- my ($w,$val) = @_;
- if (@_ > 1)
- {
- $w->{'side'} = $val;
- my $cursor;
- if ($w->vert)
- {
- $cursor = 'sb_h_double_arrow';
- $w->{'sep'}->configure(-width => 2, -height => 10000);
- }
- else
- {
- $cursor = 'sb_v_double_arrow';
- $w->{'sep'}->configure(-height => 2, -width => 10000);
- }
- my $x;
- foreach $x ($w->{'sep'},$w->{'but'})
- {
- $x->configure(-cursor => $cursor);
- }
- }
- return $w->{'side'};
-}
-
-sub slave
-{
- my $w = shift;
- my $s = $w->cget('-widget');
- return $s;
-}
-
-sub vert
-{
- my $w = shift;
- my $side = $w->cget('-side');
- return 1 if $side eq 'left';
- return -1 if $side eq 'right';
- return 0;
-}
-
-# If the Adjuster gets unmapped, it attempts to restore itself. If its
-# slave is mapped, then it reduces the size of the slave so that there is
-# then room in the master for the Adjuster widget.
-sub Restore
-{
- my $w = shift;
- return if ! $w->toplevel->IsMapped ||
- ! $w->slave->IsMapped ||
- ! $w->cget('-restore');
- $w->vert ? $w->delta_width(0) : $w->delta_height(0);
-}
-
-sub delta_width_bar
-{
- my ($w,$dx) = @_;
- my $l = $w->{'lin'};
- my $r = $w->{'sep'};
- my $t = $w->toplevel;
- my $m = $w->{'master'};
- my $s = $w->slave;
- my ($min_rootx, $max_rootx, $t_border);
- if (! $w->{'lin_info'})
- {
- my $m_border = $m->cget('-bd') + $m->cget('-highlightthickness');
- $t_border = $t->cget('-bd') + $t->cget('-highlightthickness');
- if ($w->cget('-side') eq 'right')
- {
- $min_rootx = $m->rootx + $m_border;
- $max_rootx = $s->rootx + $s->width - 1;
- }
- else
- {
- $min_rootx = $s->rootx;
- $max_rootx = $m->rootx + $m->width - $m_border - 1;
- }
- $w->{'lin_info'} = [$min_rootx, $max_rootx, $t_border];
- }
- else
- {
- ($min_rootx, $max_rootx, $t_border) = @{$w->{'lin_info'}};
- }
- $l->configure(-width => 1, -height => $w->height) unless $l->IsMapped;
-
- my $new_rootx = $w->rootx + $w->{'reqwidth'}/2 + $dx;
- $new_rootx = $min_rootx if $new_rootx < $min_rootx;
- $new_rootx = $max_rootx if $new_rootx > $max_rootx;
- my $placex = $new_rootx - $t->rootx - $t_border;
- my $placey = $w->rooty - $t->rooty - $t_border;
- $l->place(-in => $t, -anchor => 'n', '-x' => $placex, '-y' => $placey);
- my $this = $w->containing($new_rootx, $w->rooty + 1);
- $l->raise($this) if $this && $this ne $t;
-}
-
-sub delta_width
-{
- my ($w,$dx) = @_;
- my $l = $w->{'lin'};
- $l->placeForget;
- my $s = $w->slave;
- if ($s)
- {
- my $m = $w->{'master'};
- my $m_border = $m->cget('-bd') + $m->cget('-highlightthickness');
- my $w_width = $w->{'reqwidth'};
- my $m_width = $m->width;
- my $s_width = $s->width;
- my $max_width = $m_width - $w_width;
- my $max_s_width;
- if ($w->cget('-side') eq 'right')
- {
- $dx = -$dx;
- $max_s_width = $max_width -
- ($m->rootx + $m_width - ($s->rootx+$s_width)) - $m_border;
- }
- else
- {
- $max_s_width = $max_width - ($s->rootx - $m->rootx) - $m_border;
- }
- my $new_width = $s_width+$dx;
- $new_width = $max_s_width if $new_width > $max_s_width;
- $new_width = 0 if $new_width < 0;
- $s->GeometryRequest($new_width, $s->height);
- }
-}
-
-sub delta_height_bar
-{
- my ($w,$dy) = @_;
- my $l = $w->{'lin'};
- my $r = $w->{'sep'};
- my $t = $w->toplevel;
- my $m = $w->{'master'};
- my $s = $w->slave;
- my ($min_rooty, $max_rooty, $t_border);
- if (! $w->{'lin_info'})
- {
- my $m_border = $m->cget('-bd') + $m->cget('-highlightthickness');
- $t_border = $t->cget('-bd') + $t->cget('-highlightthickness');
- if ($w->cget('-side') eq 'bottom')
- {
- $min_rooty = $m->rooty + $m_border;
- $max_rooty = $s->rooty + $s->height - 1;
- }
- else
- {
- $min_rooty = $s->rooty;
- $max_rooty = $m->rooty + $m->height - $m_border - 1;
- }
- $w->{'lin_info'} = [$min_rooty, $max_rooty, $t_border];
- }
- else
- {
- ($min_rooty, $max_rooty, $t_border) = @{$w->{'lin_info'}};
- }
- $l->configure(-height => 1, -width => $w->width) unless $l->IsMapped;
-
- my $new_rooty = $w->rooty + $w->{'reqheight'}/2 + $dy;
- $new_rooty = $min_rooty if $new_rooty < $min_rooty;
- $new_rooty = $max_rooty if $new_rooty > $max_rooty;
- my $placey = $new_rooty - $t->rooty - $t_border;
- my $placex = $w->rootx - $t->rootx - $t_border;
- $l->place(-in => $t, -anchor => 'w', '-x' => $placex, '-y' => $placey);
- my $this = $w->containing($w->rootx + 1, $new_rooty);
- $l->raise($this) if $this && $this ne $t;
-}
-
-sub delta_height
-{
- my ($w,$dy) = @_;
- my $l = $w->{'lin'};
- $l->placeForget;
- my $s = $w->slave;
- if ($s)
- {
- my $m = $w->{'master'};
- my $m_border = $m->cget('-bd') + $m->cget('-highlightthickness');
- my $w_height = $w->{'reqheight'};
- my $m_height = $m->height;
- my $s_height = $s->height;
- my $max_height = $m_height - $w_height;
- my $max_s_height;
- if ($w->cget('-side') eq 'bottom')
- {
- $dy = -$dy;
- $max_s_height = $max_height -
- ($m->rooty + $m_height - ($s->rooty+$s_height)) - $m_border;
- }
- else
- {
- $max_s_height = $max_height - ($s->rooty - $m->rooty) - $m_border;
- }
- my $new_height = $s_height+$dy;
-
- $new_height = $max_s_height if $new_height > $max_s_height;
- $new_height = 0 if $new_height < 0;
- $s->GeometryRequest($s->width, $new_height);
- }
-}
-
-# Turn off expansion in the slave.
-# This is done only if necessary, as calls to pack/gridConfigure cause
-# repacking.
-# Before call to pack/gridConfigure, the reqwidth/reqheight is set to the
-# current width/height. This is because the geometry managers use
-# the requested values, not the actual, to calculate the new geometry.
-sub slave_expand_off
-{
- my $w = shift;
- my $s = $w->slave;
- return if ! $s;
-
- my $manager = $s->manager;
- if ($manager eq 'pack')
- {
- my %info = $s->packInfo;
- my $expand = $info{'-expand'};
- if ($expand)
- {
- $s->GeometryRequest($s->width, $s->height);
- $s->packConfigure(-expand => 0);
- }
- }
- elsif ($manager eq 'grid')
- {
- my %info = $s->gridInfo;
- my $master = $info{'-in'};
- if ($w->vert)
- {
- my $col = $info{'-column'};
- my $expand = $master->gridColumnconfigure($col, '-weight');
- if ($expand)
- {
- $s->GeometryRequest($s->width, $s->height);
- $master->gridColumnconfigure($col, -weight => 0);
- }
- }
- else
- {
- my $row = $info{'-row'};
- my $expand = $master->gridRowconfigure($row, '-weight');
- if ($expand)
- {
- $s->GeometryRequest($s->width, $s->height);
- $master->gridRowconfigure($row, -weight => 0);
- }
- }
- }
-}
-
-1;
-
-__END__
-
-=cut #' emacs hilighting...
diff --git a/Master/perltl/site/lib/Tk/After.pm b/Master/perltl/site/lib/Tk/After.pm
deleted file mode 100644
index e5eac8b20a8..00000000000
--- a/Master/perltl/site/lib/Tk/After.pm
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::After;
-use Carp;
-
-use vars qw($VERSION);
-$VERSION = '3.015'; # $Id: //depot/Tk8/Tk/After.pm#15 $
-
-sub _cancelAll
-{
- my $w = shift;
- my $h = delete $w->{_After_};
- foreach my $obj (values %$h)
- {
- # carp "Auto cancel ".$obj->[1]." for ".$obj->[0]->PathName;
- $obj->cancel;
- }
-}
-
-sub submit
-{
- my $obj = shift;
- my $w = $obj->[0];
- my $id = $obj->[1];
- my $t = $obj->[2];
- my $method = $obj->[3];
- delete($w->{_After_}{$id}) if (defined $id);
- $id = $w->Tk::after($t,[$method => $obj]);
- unless (exists $w->{_After_})
- {
- $w->{_After_} = {};
- $w->OnDestroy([\&_cancelAll, $w]);
- }
- $w->{_After_}{$id} = $obj;
- $obj->[1] = $id;
- return $obj;
-}
-
-sub DESTROY
-{
- my $obj = shift;
- @{$obj} = ();
-}
-
-sub new
-{
- my ($class,$w,$t,$method,@cb) = @_;
- my $cb = (@cb == 1) ? shift(@cb) : [@cb];
- my $obj = bless [$w,undef,$t,$method,Tk::Callback->new($cb)],$class;
- return $obj->submit;
-}
-
-sub cancel
-{
- my $obj = shift;
- my $id = $obj->[1];
- my $w = $obj->[0];
- if ($id)
- {
- $w->Tk::after('cancel'=> $id);
- delete $w->{_After_}{$id} if exists $w->{_After_};
- $obj->[1] = undef;
- }
- return $obj;
-}
-
-sub repeat
-{
- my $obj = shift;
- $obj->submit;
- local $Tk::widget = $obj->[0];
- $obj->[4]->Call;
-}
-
-sub once
-{
- my $obj = shift;
- my $w = $obj->[0];
- my $id = $obj->[1];
- delete $w->{_After_}{$id};
- local $Tk::widget = $w;
- $obj->[4]->Call;
-}
-
-1;
-__END__
-
diff --git a/Master/perltl/site/lib/Tk/Bitmap.pm b/Master/perltl/site/lib/Tk/Bitmap.pm
deleted file mode 100644
index da563ffa6cb..00000000000
--- a/Master/perltl/site/lib/Tk/Bitmap.pm
+++ /dev/null
@@ -1,18 +0,0 @@
-package Tk::Bitmap;
-require Tk;
-import Tk qw($XS_VERSION);
-require Tk::Image;
-
-use vars qw($VERSION);
-$VERSION = '3.010'; # $Id: //depot/Tk8/Bitmap/Bitmap.pm#10 $
-
-use base qw(Tk::Image);
-
-Construct Tk::Image 'Bitmap';
-
-bootstrap Tk::Bitmap;
-
-sub Tk_image { 'bitmap' }
-
-1;
-__END__
diff --git a/Master/perltl/site/lib/Tk/Button.pm b/Master/perltl/site/lib/Tk/Button.pm
deleted file mode 100644
index b0983ead7c3..00000000000
--- a/Master/perltl/site/lib/Tk/Button.pm
+++ /dev/null
@@ -1,148 +0,0 @@
-package Tk::Button;
-# Conversion from Tk4.0 button.tcl competed.
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# Copyright (c) 1995-1999 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-
-use vars qw($VERSION);
-$VERSION = '3.014'; # $Id: //depot/Tk8/Tk/Button.pm#14 $
-
-# modify it under the same terms as Perl itself, subject
-# to additional disclaimer in license.terms due to partial
-# derivation from Tk4.0 sources.
-
-use strict;
-
-require Tk::Widget;
-use base qw(Tk::Widget);
-
-use vars qw($buttonWindow $relief);
-
-Tk::Methods('deselect','flash','invoke','select','toggle');
-
-sub Tk_cmd { \&Tk::button }
-
-Construct Tk::Widget 'Button';
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Enter>', 'Enter');
- $mw->bind($class,'<Leave>', 'Leave');
- $mw->bind($class,'<1>', 'butDown');
- $mw->bind($class,'<ButtonRelease-1>', 'butUp');
- $mw->bind($class,'<space>', 'Invoke');
- $mw->bind($class,'<Return>', 'Invoke');
- return $class;
-}
-
-# tkButtonEnter --
-# The procedure below is invoked when the mouse pointer enters a
-# button widget. It records the button we're in and changes the
-# state of the button to active unless the button is disabled.
-#
-# Arguments:
-# w - The name of the widget.
-
-sub Enter
-{
- my $w = shift;
- my $E = shift;
- if ($w->cget('-state') ne 'disabled')
- {
- $w->configure('-state' => 'active');
- $w->configure('-state' => 'active', '-relief' => 'sunken') if (defined($buttonWindow) && $w == $buttonWindow)
- }
- $Tk::window = $w;
-}
-
-# tkButtonLeave --
-# The procedure below is invoked when the mouse pointer leaves a
-# button widget. It changes the state of the button back to
-# inactive. If we're leaving the button window with a mouse button
-# pressed (tkPriv(buttonWindow) == $w), restore the relief of the
-# button too.
-#
-# Arguments:
-# w - The name of the widget.
-sub Leave
-{
- my $w = shift;
- $w->configure('-state'=>'normal') if ($w->cget('-state') ne 'disabled');
- $w->configure('-relief' => $relief) if (defined($buttonWindow) && $w == $buttonWindow);
- undef $Tk::window;
-}
-
-# tkButtonDown --
-# The procedure below is invoked when the mouse button is pressed in
-# a button widget. It records the fact that the mouse is in the button,
-# saves the button's relief so it can be restored later, and changes
-# the relief to sunken.
-#
-# Arguments:
-# w - The name of the widget.
-sub butDown
-{
- my $w = shift;
- $relief = $w->cget('-relief');
- if ($w->cget('-state') ne 'disabled')
- {
- $buttonWindow = $w;
- $w->configure('-relief' => 'sunken')
- }
-}
-
-# tkButtonUp --
-# The procedure below is invoked when the mouse button is released
-# in a button widget. It restores the button's relief and invokes
-# the command as long as the mouse hasn't left the button.
-#
-# Arguments:
-# w - The name of the widget.
-sub butUp
-{
- my $w = shift;
- if (defined($buttonWindow) && $buttonWindow == $w)
- {
- undef $buttonWindow;
- $w->configure('-relief' => $relief);
- if ($w->IS($Tk::window) && $w->cget('-state') ne 'disabled')
- {
- $w->invoke;
- }
- }
-}
-
-# tkButtonInvoke --
-# The procedure below is called when a button is invoked through
-# the keyboard. It simulate a press of the button via the mouse.
-#
-# Arguments:
-# w - The name of the widget.
-sub Invoke
-{
- my $w = shift;
- if ($w->cget('-state') ne 'disabled')
- {
- my $oldRelief = $w->cget('-relief');
- my $oldState = $w->cget('-state');
- $w->configure('-state' => 'active', '-relief' => 'sunken');
- $w->idletasks;
- $w->after(100);
- $w->configure('-state' => $oldState, '-relief' => $oldRelief);
- $w->invoke;
- }
-}
-
-
-
-1;
-
-__END__
-
-
-
-
-
diff --git a/Master/perltl/site/lib/Tk/Camel.xpm b/Master/perltl/site/lib/Tk/Camel.xpm
deleted file mode 100644
index ba33c0149ec..00000000000
--- a/Master/perltl/site/lib/Tk/Camel.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *Camel[] = {
-/* width height num_colors chars_per_pixel */
-" 32 32 2 1",
-/* colors */
-". c #ffffff",
-"# c #7f7f00",
-/* pixels */
-"................................",
-"................................",
-"...................###..........",
-".......####......######.........",
-"....####.##.....########........",
-"....########....#########.......",
-"......######..###########.......",
-"......#####..#############......",
-".....######.##############......",
-".....######.###############.....",
-".....######################.....",
-".....#######################....",
-".....#######################....",
-"......#######################...",
-".......####################.#...",
-"........###################.#...",
-"........###############.###.#...",
-"............#######.###.###.#...",
-"............###.###.##...##.....",
-"............###.###..#...##.....",
-"............##.####..#....#.....",
-"............##.###...#....#.....",
-"............##.##...#.....#.....",
-"............#...#...#.....#.....",
-"............#....#..#.....#.....",
-"............#.....#.#.....#.....",
-"............#.....###.....#.....",
-"...........##....##.#....#......",
-"...........#..............#.....",
-".........###.............#......"
-"................................",
-"................................",
-};
diff --git a/Master/perltl/site/lib/Tk/Canvas.pm b/Master/perltl/site/lib/Tk/Canvas.pm
deleted file mode 100644
index e1ce78b6a93..00000000000
--- a/Master/perltl/site/lib/Tk/Canvas.pm
+++ /dev/null
@@ -1,60 +0,0 @@
-package Tk::Canvas;
-use vars qw($VERSION);
-$VERSION = '3.018'; # $Id: //depot/Tk8/Canvas/Canvas.pm#18 $
-
-use Tk qw($XS_VERSION);
-
-use base qw(Tk::Widget);
-Construct Tk::Widget 'Canvas';
-
-bootstrap Tk::Canvas;
-
-sub Tk_cmd { \&Tk::canvas }
-
-Tk::Methods('addtag','bbox','bind','canvasx','canvasy','coords','create',
- 'dchars','delete','dtag','find','focus','gettags','icursor',
- 'index','insert','itemcget','itemconfigure','lower','move',
- 'postscript','raise','scale','scan','select','type','xview','yview');
-
-use Tk::Submethods ( 'create' => [qw(arc bitmap grid group image line oval
- polygon rectangle text window)],
- 'scan' => [qw(mark dragto)],
- 'select' => [qw(from clear item to)],
- 'xview' => [qw(moveto scroll)],
- 'yview' => [qw(moveto scroll)],
- );
-
-*CanvasBind = \&Tk::bind;
-*CanvasFocus = \&Tk::focus;
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->XYscrollBind($class);
- return $class;
-}
-
-sub BalloonInfo
-{
- my ($canvas,$balloon,$X,$Y,@opt) = @_;
- my @tags = ($canvas->find('withtag', 'current'),$canvas->gettags('current'));
- foreach my $opt (@opt)
- {
- my $info = $balloon->GetOption($opt,$canvas);
- if ($opt =~ /^-(statusmsg|balloonmsg)$/ && UNIVERSAL::isa($info,'HASH'))
- {
- $balloon->Subclient($tags[0]);
- foreach my $tag (@tags)
- {
- return $info->{$tag} if exists $info->{$tag};
- }
- return '';
- }
- return $info;
- }
-}
-
-
-
-1;
-
diff --git a/Master/perltl/site/lib/Tk/Checkbutton.pm b/Master/perltl/site/lib/Tk/Checkbutton.pm
deleted file mode 100644
index e5c43f15f24..00000000000
--- a/Master/perltl/site/lib/Tk/Checkbutton.pm
+++ /dev/null
@@ -1,42 +0,0 @@
-package Tk::Checkbutton;
-# Conversion from Tk4.0 button.tcl competed.
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# Copyright (c) 1995-1999 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-
-
-use vars qw($VERSION);
-$VERSION = '3.011'; # $Id: //depot/Tk8/Tk/Checkbutton.pm#11 $
-
-# modify it under the same terms as Perl itself, subject
-# to additional disclaimer in license.terms due to partial
-# derivation from Tk4.0 sources.
-
-require Tk::Widget;
-require Tk::Button;
-
-use base qw(Tk::Button);
-
-Construct Tk::Widget 'Checkbutton';
-
-sub Tk_cmd { \&Tk::checkbutton }
-
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Enter>', 'Enter');
- $mw->bind($class,'<Leave>', 'Leave');
- $mw->bind($class,'<1>', 'Invoke');
- $mw->bind($class,'<space>', 'Invoke');
- return $class;
-}
-
-sub Invoke
-{
- my $w = shift;
- $w->invoke() unless($w->cget('-state') eq 'disabled');
-}
-
-1;
diff --git a/Master/perltl/site/lib/Tk/Clipboard.pm b/Master/perltl/site/lib/Tk/Clipboard.pm
deleted file mode 100644
index 6990b371f58..00000000000
--- a/Master/perltl/site/lib/Tk/Clipboard.pm
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::Clipboard;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '3.016'; # $Id: //depot/Tk8/Tk/Clipboard.pm#16 $
-
-use AutoLoader qw(AUTOLOAD);
-use Tk qw(catch);
-
-sub clipEvents
-{
- return qw[Copy Cut Paste];
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- foreach my $op ($class->clipEvents)
- {
- $mw->Tk::bind($class,"<<$op>>","clipboard$op");
- }
- return $class;
-}
-
-sub clipboardSet
-{
- my $w = shift;
- $w->clipboardClear;
- $w->clipboardAppend(@_);
-}
-
-sub clipboardCopy
-{
- my $w = shift;
- my $val = $w->getSelected;
- if (defined $val)
- {
- $w->clipboardSet('--',$val);
- }
- return $val;
-}
-
-sub clipboardCut
-{
- my $w = shift;
- my $val = $w->clipboardCopy;
- if (defined $val)
- {
- $w->deleteSelected;
- }
- return $val;
-}
-
-sub clipboardGet
-{
- my $w = shift;
- $w->SelectionGet('-selection','CLIPBOARD',@_);
-}
-
-sub clipboardPaste
-{
- my $w = shift;
- local $@;
- catch { $w->insert('insert',$w->clipboardGet)};
-}
-
-sub clipboardOperations
-{
- my @class = ();
- my $mw = shift;
- if (ref $mw)
- {
- $mw = $mw->DelegateFor('bind');
- }
- else
- {
- push(@class,$mw);
- $mw = shift;
- }
- while (@_)
- {
- my $op = shift;
- $mw->Tk::bind(@class,"<<$op>>","clipboard$op");
- }
-}
-
-# These methods work for Entry and Text
-# and can be overridden where they don't work
-
-sub deleteSelected
-{
- my $w = shift;
- catch { $w->delete('sel.first','sel.last') };
-}
-
-
-1;
-__END__
-
-sub getSelected
-{
- my $w = shift;
- my $val = Tk::catch { $w->get('sel.first','sel.last') };
- return $val;
-}
-
-
diff --git a/Master/perltl/site/lib/Tk/CmdLine.pm b/Master/perltl/site/lib/Tk/CmdLine.pm
deleted file mode 100644
index 09d4da9c41d..00000000000
--- a/Master/perltl/site/lib/Tk/CmdLine.pm
+++ /dev/null
@@ -1,954 +0,0 @@
-package Tk::CmdLine; # -*-Perl-*-
-
-#/----------------------------------------------------------------------------//
-#/ Module: Tk/CmdLine.pm
-#/
-#/ Purpose:
-#/
-#/ Process standard X11 command line options and set initial resources.
-#/
-#/ Author: ???? Date: ????
-#/
-#/ History: SEE POD
-#/----------------------------------------------------------------------------//
-
-use vars qw($VERSION);
-$VERSION = '3.030'; # $Id: //depot/Tk8/Tk/CmdLine.pm#30 $
-
-use 5.004;
-
-use strict;
-
-use Config;
-
-my $OBJECT = undef; # define the current object
-
-#/----------------------------------------------------------------------------//
-#/ Constructor
-#/ Returns the object reference.
-#/----------------------------------------------------------------------------//
-
-sub new # Tk::CmdLine::new()
-{
- my $this = shift(@_);
- my $class = ref($this) || $this;
-
- my $name = 'pTk';
- $name = $1 if (($0 =~ m/(?:^|[\/\\])([\w-]+)(?:\.\w+)?$/) && ($1 ne '-e'));
-
- my $self = {
- name => $name,
- config => { -name => $name },
- options => {},
- methods => {},
- command => [],
- synchronous => 0,
- iconic => 0,
- motif => ($Tk::strictMotif || 0),
- resources => {} };
-
- return bless($self, $class);
-}
-
-#/----------------------------------------------------------------------------//
-#/ Process the arguments in a given array or in @ARGV.
-#/ Returns the object reference.
-#/----------------------------------------------------------------------------//
-
-sub Argument_ # Tk::CmdLine::Argument_($flag) # private method
-{
- my $self = shift(@_);
- my $flag = shift(@_);
- unless ($self->{offset} < @{$self->{argv}})
- {
- die 'Usage: ', $self->{name}, ' ... ', $flag, " <argument> ...\n";
- }
- return splice(@{$self->{argv}}, $self->{offset}, 1);
-}
-
-sub Config_ # Tk::CmdLine::Config_($flag, $name) # private method
-{
- my $self = shift(@_);
- my ($flag, $name) = @_;
- my $val = $self->Argument_($flag);
- push(@{$self->{command}}, $flag, $val);
- $self->{config}->{"-$name"} = $val;
-}
-
-sub Flag_ # Tk::CmdLine::Flag_($flag, $name) # private method
-{
- my $self = shift(@_);
- my ($flag, $name) = @_;
- push(@{$self->{command}}, $flag);
- $self->{$name} = 1;
-}
-
-sub Option_ # Tk::CmdLine::Option_($flag, $name) # private method
-{
- my $self = shift(@_);
- my ($flag, $name) = @_;
- my $val = $self->Argument_($flag);
- push(@{$self->{command}}, $flag, $val);
- $self->{options}->{"*$name"} = $val;
-}
-
-sub Method_ # Tk::CmdLine::Method_($flag, $name) # private method
-{
- my $self = shift(@_);
- my ($flag, $name) = @_;
- my $val = $self->Argument_($flag);
- push(@{$self->{command}}, $flag, $val);
- $self->{methods}->{$name} = $val;
-}
-
-sub Resource_ # Tk::CmdLine::Resource_($flag, $name) # private method
-{
- my $self = shift(@_);
- my ($flag, $name) = @_;
- my $val = $self->Argument_($flag);
- if ($val =~ /^([^!:\s]+)*\s*:\s*(.*)$/)
- {
- push(@{$self->{command}}, $flag, $val);
- $self->{options}->{$1} = $2;
- }
-}
-
-my %Method = (
- background => 'Option_',
- bg => 'background', # alias
- class => 'Config_',
- display => 'screen', # alias
- fg => 'foreground', # alias
- fn => 'font', # alias
- font => 'Option_',
- foreground => 'Option_',
- geometry => 'Method_',
- iconic => 'Flag_',
- iconposition => 'Method_',
- motif => 'Flag_',
- name => 'Config_',
- screen => 'Config_',
- synchronous => 'Flag_',
- title => 'Config_',
- xrm => 'Resource_'
-);
-
-sub SetArguments # Tk::CmdLine::SetArguments([@argument])
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
- $self->{argv} = (@_ ? [ @_ ] : \@ARGV);
- $self->{offset} = 0; # its existence will denote that this method has been called
-
- my @option = ();
-
- while ($self->{offset} < @{$self->{argv}})
- {
- last if ($self->{argv}->[$self->{offset}] eq '--');
- unless (
- (($self->{argv}->[$self->{offset}] =~ /^-{1,2}(\w+)$/) && (@option = $1)) ||
- (($self->{argv}->[$self->{offset}] =~ /^--(\w+)=(.*)$/) && (@option = ($1, $2))))
- {
- ++$self->{offset};
- next;
- }
-
- next if (!exists($Method{$option[0]}) && ++$self->{offset});
-
- $option[0] = $Method{$option[0]} if exists($Method{$Method{$option[0]}});
-
- my $method = $Method{$option[0]};
-
- if (@option > 1) # replace --<option>=<value> with <value>
- {
- $self->{argv}->[$self->{offset}] = $option[1];
- }
- else # remove the argument
- {
- splice(@{$self->{argv}}, $self->{offset}, 1);
- }
-
- $self->$method(('-' . $option[0]), $option[0]);
- }
-
- $self->{config}->{-class} ||= ucfirst($self->{config}->{-name});
-
- delete($self->{argv}); # no longer needed
-
- return $self;
-}
-
-use vars qw(&process); *process = \&SetArguments; # alias to keep old code happy
-
-#/----------------------------------------------------------------------------//
-#/ Get a list of the arguments that have been processed by SetArguments().
-#/ Returns an array.
-#/----------------------------------------------------------------------------//
-
-sub GetArguments # Tk::CmdLine::GetArguments()
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
-
- return @{$self->{command}};
-}
-
-#/----------------------------------------------------------------------------//
-#/ Get the value of a configuration option (default: -class).
-#/ Returns the option value.
-#/----------------------------------------------------------------------------//
-
-sub cget # Tk::CmdLine::cget([$option])
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
- my $option = shift(@_) || '-class';
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
-
- return (exists($self->{config}->{$option}) ? $self->{config}->{$option} : undef);
-}
-
-#/----------------------------------------------------------------------------//
-
-sub CreateArgs # Tk::CmdLine::CreateArgs()
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
-
- return $self->{config};
-}
-
-#/----------------------------------------------------------------------------//
-
-sub Tk::MainWindow::apply_command_line
-{
- my $mw = shift(@_);
-
- my $self = ($OBJECT ||= __PACKAGE__->new());
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
-
- foreach my $priority (keys(%{$self->{resources}}))
- {
- foreach my $resource (@{$self->{resources}->{$priority}})
- {
- $mw->optionAdd(@{$resource}, $priority);
- }
- }
-
- foreach my $key (keys(%{$self->{options}}))
- {
- $mw->optionAdd($key => $self->{options}->{$key}, 'interactive');
- }
-
- foreach my $key (keys(%{$self->{methods}}))
- {
- $mw->$key($self->{methods}->{$key});
- }
-
- if ($self->{methods}->{geometry})
- {
- if ($self->{methods}->{geometry} =~ /[+-]\d+[+-]\d+/)
- {
- $mw->positionfrom('user');
- }
- if ($self->{methods}->{geometry} =~ /\d+x\d+/)
- {
- $mw->sizefrom('user');
- }
- delete $self->{methods}->{geometry}; # XXX needed?
- }
-
- $mw->Synchronize() if $self->{synchronous};
-
- if ($self->{iconic})
- {
- $mw->iconify();
- $self->{iconic} = 0;
- }
-
- $Tk::strictMotif = ($self->{motif} || 0);
-
- # Both these are needed to reliably save state
- # but 'hostname' is tricky to do portably.
- # $mw->client(hostname());
- $mw->protocol('WM_SAVE_YOURSELF' => ['WMSaveYourself',$mw]);
- $mw->command([ $self->{name}, @{$self->{command}} ]);
-}
-
-#/----------------------------------------------------------------------------//
-#/ Set the initial resources.
-#/ Returns the object reference.
-#/----------------------------------------------------------------------------//
-
-sub SetResources # Tk::CmdLine::SetResources((\@resource | $resource) [, $priority])
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
- return $self unless @_;
-
- my $data = shift(@_);
- my $priority = shift(@_) || 'userDefault';
-
- $self->{resources}->{$priority} = [] unless exists($self->{resources}->{$priority});
-
- foreach my $resource ((ref($data) eq 'ARRAY') ? @{$data} : $data)
- {
- if (ref($resource) eq 'ARRAY') # resources in [ <pattern>, <value> ] format
- {
- push(@{$self->{resources}->{$priority}}, [ @{$resource} ])
- if (@{$resource} == 2);
- }
- else # resources in resource file format
- {
- push(@{$self->{resources}->{$priority}}, [ $1, $2 ])
- if ($resource =~ /^([^!:\s]+)*\s*:\s*(.*)$/);
- }
- }
-
- return $self;
-}
-
-#/----------------------------------------------------------------------------//
-#/ Load initial resources from one or more files (default: $XFILESEARCHPATH with
-#/ priority 'startupFile' and $XUSERFILESEARCHPATH with priority 'userDefault').
-#/ Returns the object reference.
-#/----------------------------------------------------------------------------//
-
-sub LoadResources # Tk::CmdLine::LoadResources([%options])
-{
- my $self = (@_ # define the object as necessary
- ? ((ref($_[0]) eq __PACKAGE__)
- ? shift(@_)
- : (($_[0] eq __PACKAGE__) ? shift(@_) : 1) && ($OBJECT ||= __PACKAGE__->new()))
- : ($OBJECT ||= __PACKAGE__->new()));
- $OBJECT = $self; # update the current object
-
- $self->SetArguments() unless exists($self->{offset}); # set arguments if not yet done
-
- my %options = @_;
-
- my @file = ();
- my $echo = (exists($options{-echo})
- ? (defined($options{-echo}) ? $options{-echo} : \*STDOUT) : undef);
-
- unless (%options && (exists($options{-file}) || exists($options{-symbol})))
- {
- @file = (
- { -symbol => 'XFILESEARCHPATH', -priority => 'startupFile' },
- { -symbol => 'XUSERFILESEARCHPATH', -priority => 'userDefault' } );
- }
- else
- {
- @file = { %options };
- }
-
- my $delimiter = (($^O eq 'MSWin32') ? ';' : ':');
-
- foreach my $file (@file)
- {
- my $fileSpec = $file->{-spec} = undef;
- if (exists($file->{-symbol}))
- {
- my $xpath = undef;
- if ($file->{-symbol} eq 'XUSERFILESEARCHPATH')
- {
- $file->{-priority} ||= 'userDefault';
- foreach my $symbol (qw(XUSERFILESEARCHPATH XAPPLRESDIR HOME))
- {
- last if (exists($ENV{$symbol}) && ($xpath = $ENV{$symbol}));
- }
- next unless defined($xpath);
- }
- else
- {
- $file->{-priority} ||= (($file->{-symbol} eq 'XFILESEARCHPATH')
- ? 'startupFile' : 'userDefault');
- next unless (
- exists($ENV{$file->{-symbol}}) && ($xpath = $ENV{$file->{-symbol}}));
- }
-
- unless (exists($self->{translation}))
- {
- $self->{translation} = {
- '%l' => '', # ignored
- '%C' => '', # ignored
- '%S' => '', # ignored
- '%L' => ($ENV{LANG} || 'C'), # language
- '%T' => 'app-defaults', # type
- '%N' => $self->{config}->{-class} # filename
- };
- }
-
- my @postfix = map({ $_ . '/' . $self->{config}->{-class} }
- ('/' . $self->{translation}->{'%L'}), '');
-
- ITEM: foreach $fileSpec (split($Config{path_sep}, $xpath))
- {
- if ($fileSpec =~ s/(%[A-Za-z])/$self->{translation}->{$1}/g) # File Pattern
- {
- if (defined($echo) && ($file->{-symbol} ne 'XFILESEARCHPATH'))
- {
- print $echo 'Checking ', $fileSpec, "\n";
- }
- next unless ((-f $fileSpec) && (-r _) && (-s _));
- $file->{-spec} = $fileSpec;
- last;
- }
- else # Directory - Check for <Directory>/$LANG/<Class>, <Directory>/<CLASS>
- {
- foreach my $postfix (@postfix)
- {
- my $fileSpec2 = $fileSpec . $postfix;
- if (defined($echo) && ($file->{-symbol} ne 'XFILESEARCHPATH'))
- {
- print $echo 'Checking ', $fileSpec2, "\n";
- }
- next unless ((-f $fileSpec2) && (-r _) && (-s _));
- $file->{-spec} = $fileSpec2;
- last ITEM;
- }
- }
- }
- }
- elsif (exists($file->{-file}) && ($fileSpec = $file->{-file}))
- {
- print $echo 'Checking ', $fileSpec, "\n" if defined($echo);
- next unless ((-f $fileSpec) && (-r _) && (-s _));
- $file->{-spec} = $fileSpec;
- }
- }
-
- foreach my $file (@file)
- {
- next unless defined($file->{-spec});
- local *SPEC;
- next unless open(SPEC,$file->{-spec});
- print $echo ' Loading ', $file->{-spec}, "\n" if defined($echo);
-
- my $resource = undef;
- my @resource = ();
- my $continuation = 0;
-
- while (defined(my $line = <SPEC>))
- {
- chomp($line);
- next if ($line =~ /^\s*$/); # skip blank lines
- next if ($line =~ /^\s*!/); # skip comments
- $continuation = ($line =~ s/\s*\\$/ /); # search for trailing backslash
- unless (defined($resource)) # it is the first line
- {
- $resource = $line;
- }
- else # it is a continuation line
- {
- $line =~ s/^\s*//; # remove leading whitespace
- $resource .= $line;
- }
- next if $continuation;
- push(@resource, [ $1, $2 ]) if ($resource =~ /^([^:\s]+)*\s*:\s*(.*)$/);
- $resource = undef;
- }
-
- close(SPEC);
-
- if (defined($resource)) # special case - EOF after line with trailing backslash
- {
- push(@resource, [ $1, $2 ]) if ($resource =~ /^([^:\s]+)*\s*:\s*(.*)$/);
- }
-
- $self->SetResources(\@resource, $file->{-priority}) if @resource;
- }
-
- return $self;
-}
-
-#/----------------------------------------------------------------------------//
-
-1;
-
-__END__
-
-=cut
-
-=head1 NAME
-
-Tk::CmdLine - Process standard X11 command line options and set initial resources
-
-=for pm Tk/CmdLine.pm
-
-=for category Creating and Configuring Widgets
-
-=head1 SYNOPSIS
-
- Tk::CmdLine::SetArguments([@argument]);
-
- my $value = Tk::CmdLine::cget([$option]);
-
- Tk::CmdLine::SetResources((\@resource | $resource) [, $priority]);
-
- Tk::CmdLine::LoadResources(
- [ -symbol => $symbol ]
- [ -file => $fileSpec ]
- [ -priority => $priority ]
- [ -echo => $fileHandle ] );
-
-=head1 DESCRIPTION
-
-Process standard X11 command line options and set initial resources.
-
-The X11R5 man page for X11 says: "Most X programs attempt to use the same names
-for command line options and arguments. All applications written with the
-X Toolkit Intrinsics automatically accept the following options: ...".
-This module processes these command line options for perl/Tk applications
-using the C<SetArguments>() function.
-
-This module can optionally be used to load initial resources explicitly via
-function C<SetResources>(), or from specified files (default: the standard X11
-application-specific resource files) via function C<LoadResources>().
-
-=head2 Command Line Options
-
-=over 4
-
-=item B<-background> I<Color> | B<-bg> I<Color>
-
-Specifies the color to be used for the window background.
-
-=item B<-class> I<Class>
-
-Specifies the class under which resources for the application should be found.
-This option is useful in shell aliases to distinguish between invocations
-of an application, without resorting to creating links to alter the executable
-file name.
-
-=item B<-display> I<Display> | B<-screen> I<Display>
-
-Specifies the name of the X server to be used.
-
-=item B<-font> I<Font> | B<-fn> I<Font>
-
-Specifies the font to be used for displaying text.
-
-=item B<-foreground> I<Color> | B<-fg> I<Color>
-
-Specifies the color to be used for text or graphics.
-
-=item B<-geometry> I<Geometry>
-
-Specifies the initial size and location of the I<first>
-L<MainWindow|Tk::MainWindow>.
-
-=item B<-iconic>
-
-Indicates that the user would prefer that the application's windows initially
-not be visible as if the windows had been immediately iconified by the user.
-Window managers may choose not to honor the application's request.
-
-=item B<-motif>
-
-Specifies that the application should adhere as closely as possible to Motif
-look-and-feel standards. For example, active elements such as buttons and
-scrollbar sliders will not change color when the pointer passes over them.
-
-=item B<-name> I<Name>
-
-Specifies the name under which resources for the application should be found.
-This option is useful in shell aliases to distinguish between invocations
-of an application, without resorting to creating links to alter the executable
-file name.
-
-=item B<-synchronous>
-
-Indicates that requests to the X server should be sent synchronously, instead of
-asynchronously. Since Xlib normally buffers requests to the server, errors do
-do not necessarily get reported immediately after they occur. This option turns
-off the buffering so that the application can be debugged. It should never
-be used with a working program.
-
-=item B<-title> I<TitleString>
-
-This option specifies the title to be used for this window. This information is
-sometimes used by a window manager to provide some sort of header identifying
-the window.
-
-=item B<-xrm> I<ResourceString>
-
-Specifies a resource pattern and value to override any defaults. It is also
-very useful for setting resources that do not have explicit command line
-arguments.
-
-The I<ResourceString> is of the form E<lt>I<pattern>E<gt>:E<lt>I<value>E<gt>,
-that is (the first) ':' is used to determine which part is pattern and which
-part is value. The (E<lt>I<pattern>E<gt>, E<lt>I<value>E<gt>) pair is entered
-into the options database with B<optionAdd> (for each
-L<MainWindow|Tk::MainWindow> configured), with I<interactive> priority.
-
-=back
-
-=head2 Initial Resources
-
-There are several mechanism for initializing the resource database to be used
-by an X11 application. Resources may be defined in a $C<HOME>/.Xdefaults file,
-a system application defaults file (e.g.
-/usr/lib/X11/app-defaults/E<lt>B<CLASS>E<gt>),
-or a user application defaults file (e.g. $C<HOME>/E<lt>B<CLASS>E<gt>).
-The Tk::CmdLine functionality for setting initial resources concerns itself
-with the latter two.
-
-Resource files contain data lines of the form
-E<lt>I<pattern>E<gt>:E<lt>I<value>E<gt>.
-They may also contain blank lines and comment lines (denoted
-by a ! character as the first non-blank character). Refer to L<option|Tk::option>
-for a description of E<lt>I<pattern>E<gt>:E<lt>I<value>E<gt>.
-
-=over 4
-
-=item System Application Defaults Files
-
-System application defaults files may be specified via environment variable
-$C<XFILESEARCHPATH> which, if set, contains a list of file patterns
-(joined using the OS-dependent path delimiter, e.g. colon on B<UNIX>).
-
-=item User Application Defaults Files
-
-User application defaults files may be specified via environment variables
-$C<XUSERFILESEARCHPATH>, $C<XAPPLRESDIR> or $C<HOME>.
-
-=back
-
-=head1 METHODS
-
-=over 4
-
-=item B<SetArguments> - Tk::CmdLine::SetArguments([@argument])
-
-Extract the X11 options contained in a specified array (@ARGV by default).
-
- Tk::CmdLine::SetArguments([@argument])
-
-The X11 options may be specified using a single dash I<-> as per the X11
-convention, or using two dashes I<--> as per the POSIX standard (e.g.
-B<-geometry> I<100x100>, B<-geometry> I<100x100> or B<-geometry=>I<100x100>).
-The options may be interspersed with other options or arguments.
-A I<--> by itself terminates option processing.
-
-By default, command line options are extracted from @ARGV the first time
-a MainWindow is created. The Tk::MainWindow constructor indirectly invokes
-C<SetArguments>() to do this.
-
-=item B<GetArguments> - Tk::CmdLine::GetArguments()
-
-Get a list of the X11 options that have been processed by C<SetArguments>().
-(C<GetArguments>() first invokes C<SetArguments>() if it has not already been invoked.)
-
-=item B<cget> - Tk::CmdLine::cget([$option])
-
-Get the value of a configuration option specified via C<SetArguments>().
-(C<cget>() first invokes C<SetArguments>() if it has not already been invoked.)
-
- Tk::CmdLine::cget([$option])
-
-The valid options are: B<-class>, B<-name>, B<-screen> and B<-title>.
-If no option is specified, B<-class> is implied.
-
-A typical use of C<cget>() might be to obtain the application class in order
-to define the name of a resource file to be loaded in via C<LoadResources>().
-
- my $class = Tk::CmdLine::cget(); # process command line and return class
-
-=item B<SetResources> - Tk::CmdLine::SetResources((\@resource | $resource) [, $priority])
-
-Set the initial resources.
-
- Tk::CmdLine::SetResources((\@resource | $resource) [, $priority])
-
-A single resource may be specified using a string of the form
-'E<lt>I<pattern>E<gt>:E<lt>I<value>E<gt>'. Multiple resources may be specified
-by passing an array reference whose elements are either strings of the above
-form, and/or anonymous arrays of the form [ E<lt>I<pattern>E<gt>,
-E<lt>I<value>E<gt> ]. The optional second argument specifies the priority,
-as defined in L<option|Tk::option>, to be associated with the resources
-(default: I<userDefault>).
-
-Note that C<SetResources>() first invokes C<SetArguments>() if it has not already
-been invoked.
-
-=item B<LoadResources> - Tk::CmdLine::LoadResources([%options])
-
-Load initial resources from one or more files.
-
- Tk::CmdLine::LoadResources(
- [ -symbol => $symbol ]
- [ -file => $fileSpec ]
- [ -priority => $priority ]
- [ -echo => $fileHandle ] );
-
-[ B<-symbol> =E<gt> $symbol ] specifies the name of an environment variable
-that, if set, defines a list of one or more directories and/or file patterns
-(joined using the OS-dependent path delimiter, e.g. colon on B<UNIX>).
-$C<XUSERFILESEARCHPATH> is a special case.
-If $C<XUSERFILESEARCHPATH> is not set, $C<XAPPLRESDIR> is checked instead.
-If $C<XAPPLRESDIR> is not set, $C<HOME> is checked instead.
-
-An item is identified as a file pattern if it contains one or more /%[A-Za-z]/
-patterns. Only patterns B<%L>, B<%T> and B<%N> are currently recognized. All
-others are replaced with the null string. Pattern B<%L> is translated into
-$C<LANG>. Pattern B<%T> is translated into I<app-defaults>. Pattern B<%N> is
-translated into the application class name.
-
-Each file pattern, after substitutions are applied, is assumed to define a
-FileSpec to be examined.
-
-When a directory is specified, FileSpecs
-E<lt>B<DIRECTORY>E<gt>/E<lt>B<LANG>E<gt>/E<lt>B<CLASS>E<gt>
-and E<lt>B<DIRECTORY>E<gt>/E<lt>B<CLASS>E<gt> are defined, in that order.
-
-[ B<-file> =E<gt> $fileSpec ] specifies a resource file to be loaded in.
-The file is silently skipped if if does not exist, or if it is not readable.
-
-[ B<-priority> =E<gt> $priority ] specifies the priority, as defined in
-L<option|Tk::option>, to be associated with the resources
-(default: I<userDefault>).
-
-[ B<-echo> =E<gt> $fileHandle ] may be used to specify that a line should be
-printed to the corresponding FileHandle (default: \*STDOUT) everytime a file
-is examined / loaded.
-
-If no B<-symbol> or B<-file> options are specified, C<LoadResources>()
-processes symbol $C<XFILESEARCHPATH> with priority I<startupFile> and
-$C<XUSERFILESEARCHPATH> with priority I<userDefault>.
-(Note that $C<XFILESEARCHPATH> and $C<XUSERFILESEARCHPATH> are supposed to
-contain only patterns. $C<XAPPLRESDIR> and $C<HOME> are supposed to be a single
-directory. C<LoadResources>() does not check/care whether this is the case.)
-
-For each set of FileSpecs, C<LoadResources>() examines each FileSpec to
-determine if the file exists and is readable. The first file that meets this
-criteria is read in and C<SetResources>() is invoked.
-
-Note that C<LoadResources>() first invokes C<SetArguments>() if it has not already
-been invoked.
-
-=back
-
-=head1 NOTES
-
-This module is an object-oriented module whose methods can be invoked as object
-methods, class methods or regular functions. This is accomplished via an
-internally-maintained object reference which is created as necessary, and which
-always points to the last object used. C<SetArguments>(), C<SetResources>() and
-C<LoadResources>() return the object reference.
-
-=head1 EXAMPLES
-
-=over
-
-=item 1
-
-@ARGV is processed by Tk::CmdLine at MainWindow creation.
-
- use Tk;
-
- # <Process @ARGV - ignoring all X11-specific options>
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=item 2
-
-@ARGV is processed by Tk::CmdLine before MainWindow creation.
-An @ARGV of (--geometry=100x100 -opt1 a b c -bg red)
-is equal to (-opt1 a b c) after C<SetArguments>() is invoked.
-
- use Tk;
-
- Tk::CmdLine::SetArguments(); # Tk::CmdLine->SetArguments() works too
-
- # <Process @ARGV - not worrying about X11-specific options>
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=item 3
-
-Just like 2) except that default arguments are loaded first.
-
- use Tk;
-
- Tk::CmdLine::SetArguments(qw(-name test -iconic));
- Tk::CmdLine::SetArguments();
-
- # <Process @ARGV - not worrying about X11-specific options>
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=item 4
-
-@ARGV is processed by Tk::CmdLine before MainWindow creation.
-Standard resource files are loaded in before MainWindow creation.
-
- use Tk;
-
- Tk::CmdLine::SetArguments();
-
- # <Process @ARGV - not worrying about X11-specific options>
-
- Tk::CmdLine::LoadResources();
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=item 5
-
-@ARGV is processed by Tk::CmdLine before MainWindow creation.
-Standard resource files are loaded in before MainWindow creation
-using non-default priorities.
-
- use Tk;
-
- Tk::CmdLine::SetArguments();
-
- # <Process @ARGV - not worrying about X11-specific options>
-
- Tk::CmdLine::LoadResources(-echo => \*STDOUT,
- -priority => 65, -symbol => 'XFILESEARCHPATH' );
- Tk::CmdLine::LoadResources(-echo => \*STDOUT,
- -priority => 75, -symbol => 'XUSERFILESEARCHPATH' );
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=item 6
-
-@ARGV is processed by Tk::CmdLine before MainWindow creation.
-Standard resource files are loaded in before MainWindow creation.
-Individual resources are also loaded in before MainWindow creation.
-
- use Tk;
-
- Tk::CmdLine::SetArguments();
-
- # <Process @ARGV - not worrying about X11-specific options>
-
- Tk::CmdLine::LoadResources();
-
- Tk::CmdLine::SetResources( # set a single resource
- '*Button*background: red',
- 'widgetDefault' );
-
- Tk::CmdLine::SetResources( # set multiple resources
- [ '*Button*background: red', '*Button*foreground: blue' ],
- 'widgetDefault' );
-
- my $mw = MainWindow->new();
-
- MainLoop();
-
-=back
-
-=head1 ENVIRONMENT
-
-=over 4
-
-=item B<HOME> (optional)
-
-Home directory which may contain user application defaults files as
-$C<HOME>/$C<LANG>/E<lt>B<CLASS>E<gt> or $C<HOME>/E<lt>B<CLASS>E<gt>.
-
-=item B<LANG> (optional)
-
-The current language (default: I<C>).
-
-=item B<XFILESEARCHPATH> (optional)
-
-List of FileSpec patterns
-(joined using the OS-dependent path delimiter, e.g. colon on B<UNIX>)
-used in defining system application defaults files.
-
-=item B<XUSERFILESEARCHPATH> (optional)
-
-List of FileSpec patterns
-(joined using the OS-dependent path delimiter, e.g. colon on B<UNIX>)
-used in defining user application defaults files.
-
-=item B<XAPPLRESDIR> (optional)
-
-Directory containing user application defaults files as
-$C<XAPPLRESDIR>/$C<LANG>/E<lt>B<CLASS>E<gt> or
-$C<XAPPLRESDIR>/E<lt>B<CLASS>E<gt>.
-
-=back
-
-=head1 SEE ALSO
-
-L<MainWindow|Tk::MainWindow>
-L<option|Tk::option>
-
-=head1 HISTORY
-
-=over 4
-
-=item *
-
-1999.03.04 Ben Pavon E<lt>ben.pavon@hsc.hac.comE<gt>
-
-Rewritten as an object-oriented module.
-
-Allow one to process command line options in a specified array (@ARGV by default).
-Eliminate restrictions on the format and location of the options within the array
-(previously the X11 options could not be specified in POSIX format and had to be
-at the beginning of the array).
-
-Added the C<SetResources>() and C<LoadResources>() functions to allow the definition
-of resources prior to MainWindow creation.
-
-=item *
-
-2000.08.31 Ben Pavon E<lt>ben.pavon@hsc.hac.comE<gt>
-
-Added the C<GetArguments>() method which returns the list of arguments that
-have been processed by C<SetArguments>().
-
-Modified C<LoadResources>() to split the symbols using the OS-dependent
-path delimiter defined in the B<Config> module.
-
-Modified C<LoadResources>() to eliminate a warning message when processing
-patterns B<%l>, B<%C>, B<%S>.
-
-=back
-
-=cut
-
diff --git a/Master/perltl/site/lib/Tk/ColorEdit.xpm b/Master/perltl/site/lib/Tk/ColorEdit.xpm
deleted file mode 100644
index ef3474cd869..00000000000
--- a/Master/perltl/site/lib/Tk/ColorEdit.xpm
+++ /dev/null
@@ -1,58 +0,0 @@
-/* XPM */
-static char * ColorEditor_xpm[] = {
-"48 48 6 1",
-" c #0000FFFF0000",
-". c #FFFFFFFF0000",
-"X c #FFFF00000000",
-"o c #000000000000",
-"O c #0000FFFFFFFF",
-"+ c #00000000FFFF",
-" . . ......X..XXXXXXXXXXXXXXXX",
-" . .X.X. X...XX.XXXXXXXXXXX",
-" . . . ... ...XXXXXXXXXXXXXX",
-" . . .. .....XX.XXXXXXXXXXXX",
-" . .X.X...XXX..XXXXXXXXXXXX",
-" .. . ....X...X.XXXXXXXXX",
-" .. ..X.. . ..X..XXXXXXXX",
-" .... ..X.X..X.XXXXXXX",
-" ... .X. X...X...XX.XXX",
-" . .. ... XX...XXXX..XXXX",
-" ooo o ooo. . .. .X...X..X.XXXXX",
-" oo oo oo. . . . .......X.X.XX",
-" oo o oo . . .. ........XX.XXXX",
-" oo ooo oo ooo Xooo.oo..... X XX.X",
-" oo o oo oo o oo ooo o.. . X...X X",
-" oo oo oo oo oo oo .oo . X.X.....XX ",
-"O oo o oo oo oo oo oo oo. ... X..... .",
-"O O oo oo oo o oo ooo o. oo . ... .X..X",
-"O OOOooooO ooo ooo ooo oo ... ....... X ",
-" O OOO . . .. ... ..",
-"OOO OOOO OO O . .... . . .. .",
-" + O O O O .. .. . .",
-" O OOO OO . .. .... ",
-"OOOOO O OO . .. . ... ",
-"+OOOO OOOO OO O ... .. ..",
-" O+OO OO O . ",
-"OOOOOOOOoooooooOOOO ooo oo .... ",
-"OO++ OOO ooO OoOO oo oo oo .. ",
-"+OOOOOOOOooOOOo O O oo oo .",
-"++OOO +oo+oOO O oo oo ooo ooooo ooo ooo oo. ",
-"+OO O OOoooooO O o ooo oo oo o oo ooo o ",
-"++++ O OooOOoO Ooo Ooo oo oo oo oo oo ",
-"+++OOOO ooOOOoOOooOOooO oo oo oo oo oo ",
-"++++++ Ooo OOoOOooOooo ooo ooo o oo o oo ",
-"+++O+++oooooooOOOooOoooOooo ooo Oooo oo ",
-"++++++++O++OOOO O OOOOOOO ",
-"++O++++O+O+OOOOOOO O O OOOOOO O ",
-"+++O+++OOO+OO OOOO O OO O O O ",
-"++++++++O++O OO OO OO OOO OO O O ",
-"+++++++++++++ OOOOOO OOOO OO OO ",
-"+++++++++++++O+ +O OOOO OOO OOO OOO ",
-"++++++++++++++ OOOOO O OOOOOOOOOO ",
-"+++++++++++++ ++ OO +O OOOOO O O O ",
-"+++++++++++++++O+++O+O+O OOOOOOOOOO O ",
-"+++++++++++++O++++O++ O OOO O OOO OO ",
-"++++++++++++++++O+++O+O+OOOO OOOO O OO ",
-"+++++++++++++++++++O+++ +++O OOOOOO OO O ",
-"++++++++++++++++++++++ +++ O OOOOOOOOO "};
-
diff --git a/Master/perltl/site/lib/Tk/ColorEditor.pm b/Master/perltl/site/lib/Tk/ColorEditor.pm
deleted file mode 100644
index be4c373194a..00000000000
--- a/Master/perltl/site/lib/Tk/ColorEditor.pm
+++ /dev/null
@@ -1,759 +0,0 @@
-package Tk::ColorSelect;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '3.032'; # $Id: //depot/Tk8/Tk/ColorEditor.pm#32 $
-
-use Tk qw(Ev);
-
-require Tk::Frame;
-
-use base qw(Tk::Frame);
-Construct Tk::Widget 'ColorSelect';
-
-sub Populate
-{
- my ($middle,$args) = @_;
- my($i, @a);
- require Tk::Config;
- my(@xlibpath) = map { s/^-L//; "$_/X11/rgb.txt" }
- split /\s+/, $Tk::Config::xlib;
- foreach $i (@xlibpath,
- '/usr/local/lib/X11/rgb.txt', '/usr/lib/X11/rgb.txt',
- '/usr/X11R6/lib/X11/rgb.txt',
- '/usr/local/X11R5/lib/X11/rgb.txt', '/X11/R5/lib/X11/rgb.txt',
- '/X11/R4/lib/rgb/rgb.txt', '/usr/openwin/lib/X11/rgb.txt') {
- local *FOO;
- next if ! open FOO, $i;
- my $middle_left = $middle->Frame;
- $middle_left->pack(
- -side => 'left',
- -padx => '0.25c',
- -pady => '0.25c',
- );
- my $names = $middle->Listbox(
- -width => 20,
- -height => 12,
- -relief => 'sunken',
- -borderwidth => 2,
- -exportselection => 0,
- );
-
- $names->bind('<Double-1>' => [$middle,'color',Ev(['getSelected'])]);
-
- my $scroll = $middle->Scrollbar(
- -orient => 'vertical',
- -command => ['yview', $names],
- -relief => 'sunken',
- -borderwidth => 2,
- );
- $names->configure(-yscrollcommand => ['set',$scroll]);
- $names->pack(-in => $middle_left, -side => 'left');
- $scroll->pack(-in => $middle_left, -side => 'right', -fill => 'y');
-
- while(<FOO>) {
- chomp;
- next if /^!/;
- my @a = split;
- my $color = join(' ', @a[3 .. $#a]);
- my $hex;
- eval { $hex = $middle->Hex($color); };
- if ($@) {
- #print STDERR "unknown color: '$color'\n";
- if ($@ =~ /unknown color name "/) {
- next;
- } else {
- chomp $@;
- die $@;
- }
- }
- if (!exists($Tk::ColorEditor::names{$hex}) ||
- length($Tk::ColorEditor::names{$hex}) > length($color)) {
- $Tk::ColorEditor::names{$hex} = $color;
- $names->insert('end', $color);
- }
- }
- close FOO;
- last;
- }
-
- # Create the three scales for editing the color, and the entry for typing
- # in a color value.
-
- my $middle_middle = $middle->Frame;
- $middle_middle->pack(-side => 'left', -expand => 1, -fill => 'y');
- my $mcm1 = $middle_middle->Optionmenu(-variable => \$middle->{'color_space'},
- -command => [ $middle, 'color_space'],
- -relief => 'raised',
- -options => [ ['HSB color space' => 'hsb'],
- ['RGB color space' => 'rgb'],
- ['CMY color space' => 'cmy']]);
- $mcm1->pack(-side => 'top', -fill => 'x');
-
- my(@middle_middle, @label, @scale);
- $middle_middle[0] = $middle_middle->Frame;
- $middle_middle[1] = $middle_middle->Frame;
- $middle_middle[2] = $middle_middle->Frame;
- $middle_middle[3] = $middle_middle->Frame;
- $middle_middle[0]->pack(-side => 'top', -expand => 1);
- $middle_middle[1]->pack(-side => 'top', -expand => 1);
- $middle_middle[2]->pack(-side => 'top', -expand => 1);
- $middle_middle[3]->pack(-side => 'top', -expand => 1, -fill => 'x');
- $middle->{'Labels'} = ['zero','one','two'];
- foreach $i (0..2) {
- $label[$i] = $middle->Label(-textvariable => \$middle->{'Labels'}[$i]);
- $scale[$i] = $middle->Scale(
- -from => 0,
- -to => 1000,
- '-length' => '6c',
- -orient => 'horizontal',
- -command => [\&scale_changed, $middle],
- );
- $scale[$i]->pack(
- -in => $middle_middle[$i],
- -side => 'top',
- -anchor => 'w',
- );
- $label[$i]->pack(
- -in => $middle_middle[$i],
- -side => 'top',
- -anchor => 'w',
- );
- }
- my $nameLabel = $middle->Label(-text => 'Name:');
- $middle->{'Entry'} = '';
- my $name = $middle->Entry(
- -relief => 'sunken',
- -borderwidth => 2,
- -textvariable => \$middle->{'Entry'},
- -width => 10,
-# For some reason giving this font causes problems at end of t/create.t
-# -font => '-*-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*'
- );
-
- $nameLabel->pack(-in => $middle_middle[3], -side => 'left');
- $name->pack(
- -in => $middle_middle[3],
- -side => 'right',
- -expand => 1,
- -fill => 'x',
- );
- $name->bind('<Return>' => [ $middle, 'color', Ev(['get'])]);
-
- # Create the color display swatch on the right side of the window.
-
- my $middle_right = $middle->Frame;
- $middle_right->pack(
- -side => 'left',
- -pady => '.25c',
- -padx => '.25c',
- -anchor => 's',
- );
- my $swatch = $middle->Canvas(
- -width => '2.5c',
- -height => '5c',
- );
- my $swatch_item = $swatch->create('oval', '.5c', '.3c', '2.26c', '4.76c');
-
- my $value = $middle->Label(
- -textvariable => \$middle->{'color'},
- -width => 13,
- -font => '-*-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*'
- );
-
- $swatch->pack(
- -in => $middle_right,
- -side => 'top',
- -expand => 1,
- -fill => 'both',
- );
- $value->pack(-in => $middle_right, -side => 'bottom', -pady => '.25c');
-
- $middle->ConfigSpecs(
- '-color_space' => ['METHOD', undef, undef, 'hsb'],
- '-initialcolor' => '-color',
- '-color' => ['METHOD', 'background', 'Background',
- $middle->cget('-background')]
- );
-
- $middle->{'swatch'} = $swatch;
- $middle->{'swatch_item'} = $swatch_item;
- $middle->{'scale'} = [@scale];
- $middle->{'red'} = 0;
- $middle->{'blue'} = 0;
- $middle->{'green'} = 0;
-
-}
-
-sub Hex
-{
- my $w = shift;
- my @rgb = (@_ == 3) ? @_ : $w->rgb(@_);
- sprintf('#%04x%04x%04x',@rgb)
-}
-
-sub color_space {
-
- my($objref, $space) = @_;
-
- if (@_ > 1)
- {
- my %Labels = ( 'rgb' => [qw(Red Green Blue)],
- 'cmy' => [qw(Cyan Magenta Yellow)],
- 'hsb' => [qw(Hue Saturation Brightness)] );
-
- # The procedure below is invoked when a new color space is selected. It
- # changes the labels on the scales and re-loads the scales with the
- # appropriate values for the current color in the new color space
-
- $space = 'hsb' unless (exists $Labels{$space});
- my $i;
- for $i (0..2)
- {
- $objref->{'Labels'}[$i] = $Labels{$space}->[$i];
- }
- $objref->{'color_space'} = $space;
- $objref->afterIdle(['set_scales',$objref]) unless ($objref->{'pending'}++);
- }
- return $objref->{'color_space'};
-} # color_space
-
-sub hsvToRgb {
-
- # The procedure below converts an HSB value to RGB. It takes hue,
- # saturation, and value components (floating-point, 0-1.0) as arguments,
- # and returns a list containing RGB components (integers, 0-65535) as
- # result. The code here is a copy of the code on page 616 of
- # "Fundamentals of Interactive Computer Graphics" by Foley and Van Dam.
-
- my($hue, $sat, $value) = @_;
- my($v, $i, $f, $p, $q, $t);
-
- $v = int(65535 * $value);
- return ($v, $v, $v) if $sat == 0;
- $hue *= 6;
- $hue = 0 if $hue >= 6;
- $i = int($hue);
- $f = $hue - $i;
- $p = int(65535 * $value * (1 - $sat));
- $q = int(65535 * $value * (1 - ($sat * $f)));
- $t = int(65535 * $value * (1 - ($sat * (1 - $f))));
- return ($v, $t, $p) if $i == 0;
- return ($q, $v, $p) if $i == 1;
- return ($p, $v, $t) if $i == 2;
- return ($p, $q, $v) if $i == 3;
- return ($t, $p, $v) if $i == 4;
- return ($v, $p, $q) if $i == 5;
-
-} # end hsvToRgb
-
-sub color
-{
- my ($objref,$name) = @_;
- if (@_ > 1 && defined($name) && length($name))
- {
- if ($name eq 'cancel') {
- $objref->{color} = undef;
- return;
- }
- my ($format, $shift);
- my ($red, $green, $blue);
-
- if ($name !~ /^#/)
- {
- ($red, $green, $blue) = $objref->{'swatch'}->rgb($name);
- }
- else
- {
- my $len = length $name;
- if($len == 4) { $format = '#(.)(.)(.)'; $shift = 12; }
- elsif($len == 7) { $format = '#(..)(..)(..)'; $shift = 8; }
- elsif($len == 10) { $format = '#(...)(...)(...)'; $shift = 4; }
- elsif($len == 13) { $format = '#(....)(....)(....)'; $shift = 0; }
- else {
- $objref->BackTrace(
- "ColorEditor error: syntax error in color name \"$name\"");
- return;
- }
- ($red,$green,$blue) = $name =~ /$format/;
- # Looks like a call for 'pack' or similar rather than eval
- eval "\$red = 0x$red; \$green = 0x$green; \$blue = 0x$blue;";
- $red = $red << $shift;
- $green = $green << $shift;
- $blue = $blue << $shift;
- }
- $objref->{'red'} = $red;
- $objref->{'blue'} = $blue;
- $objref->{'green'} = $green;
- my $hex = sprintf('#%04x%04x%04x', $red, $green, $blue);
- $objref->{'color'} = $hex;
- $objref->{'Entry'} = $name;
- $objref->afterIdle(['set_scales',$objref]) unless ($objref->{'pending'}++);
- $objref->{'swatch'}->itemconfigure($objref->{'swatch_item'},
- -fill => $objref->{'color'});
- }
- return $objref->{'color'};
-}
-
-sub rgbToHsv {
-
- # The procedure below converts an RGB value to HSB. It takes red, green,
- # and blue components (0-65535) as arguments, and returns a list
- # containing HSB components (floating-point, 0-1) as result. The code
- # here is a copy of the code on page 615 of "Fundamentals of Interactive
- # Computer Graphics" by Foley and Van Dam.
-
- my($red, $green, $blue) = @_;
- my($max, $min, $sat, $range, $hue, $rc, $gc, $bc);
-
- $max = ($red > $green) ? (($blue > $red) ? $blue : $red) :
- (($blue > $green) ? $blue : $green);
- $min = ($red < $green) ? (($blue < $red) ? $blue : $red) :
- (($blue < $green) ? $blue : $green);
- $range = $max - $min;
- if ($max == 0) {
- $sat = 0;
- } else {
- $sat = $range / $max;
- }
- if ($sat == 0) {
- $hue = 0;
- } else {
- $rc = ($max - $red) / $range;
- $gc = ($max - $green) / $range;
- $bc = ($max - $blue) / $range;
- $hue = ($max == $red)?(0.166667*($bc - $gc)):
- (($max == $green)?(0.166667*(2 + $rc - $bc)):
- (0.166667*(4 + $gc - $rc)));
- }
- return ($hue, $sat, $max/65535);
-
-} # end rgbToHsv
-
-sub scale_changed {
-
- # The procedure below is invoked when one of the scales is adjusted. It
- # propagates color information from the current scale readings to
- # everywhere else that it is used.
-
- my($objref) = @_;
-
- return if $objref->{'updating'};
- my ($red, $green, $blue);
-
- if($objref->{'color_space'} eq 'rgb') {
- $red = int($objref->{'scale'}->[0]->get * 65.535 + 0.5);
- $green = int($objref->{'scale'}->[1]->get * 65.535 + 0.5);
- $blue = int($objref->{'scale'}->[2]->get * 65.535 + 0.5);
- } elsif($objref->{'color_space'} eq 'cmy') {
- $red = int(65535 - $objref->{'scale'}->[0]->get * 65.535 + 0.5);
- $green = int(65535 - $objref->{'scale'}->[1]->get * 65.535 + 0.5);
- $blue = int(65535 - $objref->{'scale'}->[2]->get * 65.535 + 0.5);
- } else {
- ($red, $green, $blue) = hsvToRgb($objref->{'scale'}->[0]->get/1000.0,
- $objref->{'scale'}->[1]->get/1000.0,
- $objref->{'scale'}->[2]->get/1000.0);
- }
- $objref->{'red'} = $red;
- $objref->{'blue'} = $blue;
- $objref->{'green'} = $green;
- $objref->color(sprintf('#%04x%04x%04x', $red, $green, $blue));
- $objref->idletasks;
-
-} # end scale_changed
-
-sub set_scales {
-
- my($objref) = @_;
- $objref->{'pending'} = 0;
- $objref->{'updating'} = 1;
-
- # The procedure below is invoked to update the scales from the current red,
- # green, and blue intensities. It's invoked after a change in the color
- # space and after a named color value has been loaded.
-
- my($red, $blue, $green) = ($objref->{'red'}, $objref->{'blue'},
- $objref->{'green'});
-
- if($objref->{'color_space'} eq 'rgb') {
- $objref->{'scale'}->[0]->set(int($red / 65.535 + 0.5));
- $objref->{'scale'}->[1]->set(int($green / 65.535 + 0.5));
- $objref->{'scale'}->[2]->set(int($blue / 65.535 + 0.5));
- } elsif($objref->{'color_space'} eq 'cmy') {
- $objref->{'scale'}->[0]->set(int((65535 - $red) / 65.535 + 0.5));
- $objref->{'scale'}->[1]->set(int((65535 - $green) / 65.535 + 0.5));
- $objref->{'scale'}->[2]->set(int((65535 - $blue) / 65.535 + 0.5));
- } else {
- my ($s1, $s2, $s3) = rgbToHsv($red, $green, $blue);
- $objref->{'scale'}->[0]->set(int($s1 * 1000.0 + 0.5));
- $objref->{'scale'}->[1]->set(int($s2 * 1000.0 + 0.5));
- $objref->{'scale'}->[2]->set(int($s3 * 1000.0 + 0.5));
- }
- $objref->{'updating'} = 0;
-
-} # end set_scales
-
-package Tk::ColorDialog;
-require Tk::Toplevel;
-use base qw(Tk::Toplevel);
-
-Construct Tk::Widget 'ColorDialog';
-
-sub Accept
-{
- my $cw = shift;
- $cw->withdraw;
- $cw->{'done'} = 1;
-}
-
-sub Cancel
-{
- my $cw = shift;
-# $cw->configure(-color => undef);
- $cw->configure(-color => 'cancel');
- $cw->Accept;
-}
-
-sub Populate
-{
- my ($cw,$args) = @_;
- $cw->SUPER::Populate($args);
- $cw->protocol('WM_DELETE_WINDOW' => [ 'Cancel' => $cw ]);
- $cw->transient($cw->Parent->toplevel);
- $cw->withdraw;
- my $sel = $cw->ColorSelect;
- my $accept = $cw->Button(-text => 'Accept', -command => ['Accept', $cw]);
- my $cancel = $cw->Button(-text => 'Cancel', -command => ['Cancel', $cw]);
- Tk::grid($sel);
- Tk::grid($accept,$cancel);
- $cw->ConfigSpecs(DEFAULT => [$sel]);
-}
-
-sub Show
-{
- my $cw = shift;
- $cw->configure(@_) if @_;
- $cw->Popup();
- $cw->waitVariable(\$cw->{'done'});
- $cw->withdraw;
- return $cw->cget('-color');
-}
-
-package Tk::ColorEditor;
-
-use vars qw($VERSION $SET_PALETTE);
-$VERSION = '3.032'; # $Id: //depot/Tk8/Tk/ColorEditor.pm#32 $
-
-use Tk qw(lsearch Ev);
-use Tk::Toplevel;
-use base qw(Tk::Toplevel);
-use Tk::widgets qw(Pixmap);
-Construct Tk::Widget 'ColorEditor';
-
-%Tk::ColorEditor::names = ();
-
-
-use Tk::Dialog;
-use Tk::Pretty;
-
-BEGIN { $SET_PALETTE = 'Set Palette' };
-
-use subs qw(color_space hsvToRgb rgbToHsv);
-
-# ColorEditor public methods.
-
-sub add_menu_item
-{
- my $objref = shift;
- my $value;
- foreach $value (@_)
- {
- if ($value eq 'SEP')
- {
- $objref->{'mcm2'}->separator;
- }
- else
- {
- $objref->{'mcm2'}->command( -label => $value,
- -command => [ 'configure', $objref, '-highlight' => $value ] );
- push @{$objref->{'highlight_list'}}, $value;
- }
- }
-}
-
-sub set_title
-{
- my ($w) = @_;
- my $t = $w->{Configure}{'-title'} || '' ;
- my $h = $w->{Configure}{'-highlight'} || '';
- $w->SUPER::title("$t $h Color Editor");
-}
-
-sub highlight
-{
- my ($w,$h) = @_;
- if (@_ > 1)
- {
- $w->{'update'}->configure( -text => "Apply $h Color" );
- my $state = ($h eq 'background') ? 'normal' : 'disabled';
- $w->{'palette'}->entryconfigure( $SET_PALETTE, -state => $state);
- $w->{'highlight'} = $h;
- $w->configure(-color => $w->Palette->{$h});
- $w->set_title;
- }
- return $w->{'highlight'};
-}
-
-sub title
-{
- my ($w,$val) = @_;
- $w->set_title if (@_ > 1);
- return $w->{Configure}{'-title'};
-}
-
-sub delete_menu_item
-{
- my $objref = shift;
- my $value;
- foreach $value (@_)
- {
- $objref->{'mcm2'}->delete($value);
- my $list_ord = $value =~ /\d+/ ? $value : lsearch($objref->{'highlight_list'}, $value);
- splice(@{$objref->{'highlight_list'}}, $list_ord, 1) if $list_ord != -1;
- }
-}
-
-sub delete_widgets {
-
- # Remove widgets from consideration by the color configurator.
- # $widgets_ref points to widgets previously added via `configure'.
-
- my($objref, $widgets_ref) = @_;
-
- my($i, $found, $r1, $r2, @wl) = (0, 0, 0, 0, @{$objref->cget(-widgets)});
- foreach $r1 (@{$widgets_ref}) {
- $i = -1;
- $found = 0;
- foreach $r2 (@wl) {
- $i++;
- next if $r1 != $r2;
- $found = 1;
- last;
- }
- splice(@wl, $i, 1) if $found;
- }
- $objref->configure(-widgets => [@wl]);
-
-} # end delete_widgets
-
-sub ApplyDefault
-{
- my($objref) = @_;
- my $cb = $objref->cget('-command');
- my $h;
- foreach $h (@{$objref->{'highlight_list'}})
- {
- next if $h =~ /TEAR_SEP|SEP/;
- $cb->Call($h);
- die unless (defined $cb);
- }
-}
-
-sub Populate
-{
-
- # ColorEditor constructor.
-
- my($cw, $args) = @_;
-
- $cw->SUPER::Populate($args);
- $cw->withdraw;
-
- my $color_space = 'hsb'; # rgb, cmy, hsb
- my(@highlight_list) = qw(
- TEAR_SEP
- foreground background SEP
- activeForeground activeBackground SEP
- highlightColor highlightBackground SEP
- selectForeground selectBackground SEP
- disabledForeground insertBackground selectColor troughColor
- );
-
- # Create the Usage Dialog;
-
- my $usage = $cw->Dialog( '-title' => 'ColorEditor Usage',
- -justify => 'left',
- -wraplength => '6i',
- -text => "The Colors menu allows you to:\n\nSelect a color attribute such as \"background\" that you wish to colorize. Click on \"Apply\" to update that single color attribute.\n\nSelect one of three color spaces. All color spaces display a color value as a hexadecimal number under the oval color swatch that can be directly supplied on widget commands.\n\nApply Tk's default color scheme to the application. Useful if you've made a mess of things and want to start over!\n\nChange the application's color palette. Make sure \"background\" is selected as the color attribute, find a pleasing background color to apply to all current and future application widgets, then select \"Set Palette\".",
- );
-
- # Create the menu bar at the top of the window for the File, Colors
- # and Help menubuttons.
-
- my $m0 = $cw->Frame(-relief => 'raised', -borderwidth => 2);
- $m0->pack(-side => 'top', -fill => 'x');
- my $mf = $m0->Menubutton(
- -text => 'File',
- -underline => 0,
- -bd => 1,
- -relief => 'raised',
- );
- $mf->pack(-side => 'left');
- my $close_command = [sub {shift->withdraw}, $cw];
- $mf->command(
- -label => 'Close',
- -underline => 0,
- -command => $close_command,
- -accelerator => 'Ctrl-w',
- );
- $cw->bind('<Control-Key-w>' => $close_command);
- $cw->protocol(WM_DELETE_WINDOW => $close_command);
-
- my $mc = $m0->Menubutton(
- -text => 'Colors',
- -underline => 0,
- -bd => 1,
- -relief => 'raised',
- );
- $mc->pack(-side => 'left');
- my $color_attributes = 'Color Attributes';
- $mc->cascade(-label => $color_attributes, -underline => 6);
- $mc->separator;
-
- $mc->command(
- -label => 'Apply Default Colors',
- -underline => 6,
- -command => ['ApplyDefault',$cw]
- );
- $mc->separator;
- $mc->command(
- -label => $SET_PALETTE,
- -underline => 0,
- -command => sub { $cw->setPalette($cw->cget('-color'))}
- );
-
- my $m1 = $mc->cget(-menu);
-
- my $mcm2 = $m1->Menu;
- $m1->entryconfigure($color_attributes, -menu => $mcm2);
- my $mh = $m0->Menubutton(
- -text => 'Help',
- -underline => 0,
- -bd => 1,
- -relief => 'raised',
- );
- $mh->pack(-side => 'right');
- $mh->command(
- -label => 'Usage',
- -underline => 0,
- -command => [sub {shift->Show}, $usage],
- );
-
- # Create the Apply button.
-
- my $bot = $cw->Frame(-relief => 'raised', -bd => 2);
- $bot->pack(-side => 'bottom', -fill =>'x');
- my $update = $bot->Button(
- -command => [
- sub {
- my ($objref) = @_;
- $objref->Callback(-command => ($objref->{'highlight'}, $objref->cget('-color')));
- }, $cw,
- ],
- );
- $update->pack(-pady => 1, -padx => '0.25c');
-
- # Create the listbox that holds all of the color names in rgb.txt, if an
- # rgb.txt file can be found.
-
- my $middle = $cw->ColorSelect(-relief => 'raised', -borderwidth => 2);
- $middle->pack(-side => 'top', -fill => 'both');
- # Create the status window.
-
- my $status = $cw->Toplevel;
- $status->withdraw;
- $status->geometry('+0+0');
- my $status_l = $status->Label(-width => 50, -anchor => 'w');
- $status_l->pack(-side => 'top');
-
- $cw->{'highlight_list'} = [@highlight_list];
- $cw->{'mcm2'} = $mcm2;
-
- foreach (@highlight_list)
- {
- next if /^TEAR_SEP$/;
- $cw->add_menu_item($_);
- }
-
- $cw->{'updating'} = 0;
- $cw->{'pending'} = 0;
- $cw->{'Status'} = $status;
- $cw->{'Status_l'} = $status_l;
- $cw->{'update'} = $update;
- $cw->{'gwt_depth'} = 0;
- $cw->{'palette'} = $mc;
-
- my $pixmap = $cw->Pixmap('-file' => Tk->findINC('ColorEdit.xpm'));
- $cw->Icon(-image => $pixmap);
-
- $cw->ConfigSpecs(
- DEFAULT => [$middle],
- -widgets => ['PASSIVE', undef, undef,
- [$cw->parent->Descendants]],
- -display_status => ['PASSIVE', undef, undef, 0],
- '-title' => ['METHOD', undef, undef, ''],
- -command => ['CALLBACK', undef, undef, ['set_colors',$cw]],
- '-highlight' => ['METHOD', undef, undef, 'background'],
- -cursor => ['DESCENDANTS', 'cursor', 'Cursor', 'left_ptr'],
- );
-
-} # end Populate, ColorEditor constructor
-
-sub Show {
-
- my($objref) = @_;
-
- $objref->deiconify;
-
-} # end show
-
-# ColorEditor default configurator procedure - can be redefined by the
-# application.
-
-sub set_colors {
-
- # Configure all the widgets in $widgets for attribute $type and color
- # $color. If $color is undef then reset all colors
- # to the Tk defaults.
-
- my($objref, $type, $color) = @_;
- my $display = $objref->cget('-display_status');
-
- $objref->{'Status'}->title("Configure $type");
- $objref->{'Status'}->deiconify if $display;
- my $widget;
- my $reset = !defined($color);
-
- foreach $widget (@{$objref->cget('-widgets')}) {
- if ($display) {
- $objref->{'Status_l'}->configure(
- -text => 'WIDGET: ' . $widget->PathName
- );
- $objref->update;
- }
- eval {local $SIG{'__DIE__'}; $color = ($widget->configure("-\L${type}"))[3]} if $reset;
- eval {local $SIG{'__DIE__'}; $widget->configure("-\L${type}" => $color)};
- }
-
- $objref->{'Status'}->withdraw if $display;
-
-} # end set_colors
-
-# ColorEditor private methods.
-
-1;
-
-__END__
-
-=cut
-
diff --git a/Master/perltl/site/lib/Tk/Config.pm b/Master/perltl/site/lib/Tk/Config.pm
deleted file mode 100644
index 7c89d1aadb2..00000000000
--- a/Master/perltl/site/lib/Tk/Config.pm
+++ /dev/null
@@ -1,12 +0,0 @@
-package Tk::Config;
-require Exporter;
-use base qw(Exporter);
-$VERSION = '800.024';
-$inc = '-I$(TKDIR)/pTk/mTk/xlib';
-$define = '';
-$xlib = '';
-$xinc = '';
-$gccopt = '';
-$win_arch = 'MSWin32';
-@EXPORT = qw($VERSION $inc $define $xlib $xinc $gccopt $win_arch);
-1;
diff --git a/Master/perltl/site/lib/Tk/Configure.pm b/Master/perltl/site/lib/Tk/Configure.pm
deleted file mode 100644
index 5fc6e68ade6..00000000000
--- a/Master/perltl/site/lib/Tk/Configure.pm
+++ /dev/null
@@ -1,69 +0,0 @@
-package Tk::Configure;
-use vars qw($VERSION);
-$VERSION = '3.010'; # $Id: //depot/Tk8/Tk/Configure.pm#10 $
-
-use Carp;
-use Tk::Pretty;
-
-
-# Class that handles cget/configure for options that
-# need translating from public form
-# e.g. $cw->configure(-label => 'fred')
-# into $cw->subwiget('label')->configure(-text => 'fred')
-# Should probably do something clever with regexp's here
-
-
-sub new
-{
- my ($class,@args) = @_;
- unshift(@args,'configure','cget') if (@args < 3);
- return bless \@args,$class;
-}
-
-sub cget
-{
- croak('Wrong number of args to cget') unless (@_ == 2);
- my ($alias,$key) = @_;
- my ($set,$get,$widget,@args) = @$alias;
- $widget->$get(@args);
-}
-
-sub configure
-{
- my $alias = shift;
- shift if (@_);
- my ($set,$get,$widget,@args) = @$alias;
- if (wantarray)
- {
- my @results;
- eval { @results = $widget->$set(@args,@_) };
- croak($@) if $@;
- return @results;
- }
- else
- {
- my $results;
- eval { $results = $widget->$set(@args,@_) };
- croak($@) if $@;
- return $results;
- }
-}
-
-*TIESCALAR = \&new;
-*TIEHASH = \&new;
-
-sub FETCH
-{
- my $alias = shift;
- my ($set,$get,$widget,@args) = @$alias;
- return $widget->$get(@args,@_);
-}
-
-sub STORE
-{
- my $alias = shift;
- my ($set,$get,$widget,@args) = @$alias;
- $widget->$set(@args,@_);
-}
-
-1;
diff --git a/Master/perltl/site/lib/Tk/Derived.pm b/Master/perltl/site/lib/Tk/Derived.pm
deleted file mode 100644
index 89310d4d77a..00000000000
--- a/Master/perltl/site/lib/Tk/Derived.pm
+++ /dev/null
@@ -1,510 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::Derived;
-require Tk::Widget;
-require Tk::Configure;
-use strict;
-use Carp;
-
-use vars qw($VERSION);
-$VERSION = '3.046'; # $Id: //depot/Tk8/Tk/Derived.pm#46 $
-
-$Tk::Derived::Debug = 0;
-
-my $ENHANCED_CONFIGSPECS = 0; # disable for now
-
-use Tk qw(NORMAL_BG BLACK);
-
-sub Subwidget
-{
- my $cw = shift;
- my @result = ();
- if (exists $cw->{SubWidget})
- {
- if (@_)
- {
- foreach my $name (@_)
- {
- push(@result,$cw->{SubWidget}{$name}) if (exists $cw->{SubWidget}{$name});
- }
- }
- else
- {
- @result = values %{$cw->{SubWidget}};
- }
- }
- return (wantarray) ? @result : $result[0];
-}
-
-sub _makelist
-{
- my $widget = shift;
- my (@specs) = (ref $widget && ref $widget eq 'ARRAY') ? (@$widget) : ($widget);
- return @specs;
-}
-
-sub Subconfigure
-{
- # This finds the widget or widgets to to which to apply a particular
- # configure option
- my ($cw,$opt) = @_;
- my $config = $cw->ConfigSpecs;
- my $widget;
- my @subwidget = ();
- my @arg = ();
- if (defined $opt)
- {
- $widget = $config->{$opt};
- unless (defined $widget)
- {
- $widget = ($opt =~ /^-(.*)$/) ? $config->{$1} : $config->{-$opt};
- }
- # Handle alias entries
- if (defined($widget) && !ref($widget))
- {
- $opt = $widget;
- $widget = $config->{$widget};
- }
- push(@arg,$opt) unless ($opt eq 'DEFAULT');
- }
- $widget = $config->{DEFAULT} unless (defined $widget);
- if (defined $widget)
- {
- $cw->BackTrace("Invalid ConfigSpecs $widget") unless (ref($widget) && (ref $widget eq 'ARRAY'));
- $widget = $widget->[0];
- }
- else
- {
- $widget = 'SELF';
- }
- foreach $widget (_makelist($widget))
- {
- $widget = 'SELF' if (ref($widget) && $widget == $cw);
- if (ref $widget)
- {
- my $ref = ref $widget;
- if ($ref eq 'ARRAY')
- {
- $widget = Tk::Configure->new(@$widget);
- push(@subwidget,$widget)
- }
- elsif ($ref eq 'HASH')
- {
- foreach my $key (%$widget)
- {
- foreach my $sw (_makelist($widget->{$key}))
- {
- push(@subwidget,Tk::Configure->new($sw,$key));
- }
- }
- }
- else
- {
- push(@subwidget,$widget)
- }
- }
- elsif ($widget eq 'ADVERTISED')
- {
- push(@subwidget,$cw->Subwidget)
- }
- elsif ($widget eq 'DESCENDANTS')
- {
- push(@subwidget,$cw->Descendants)
- }
- elsif ($widget eq 'CHILDREN')
- {
- push(@subwidget,$cw->children)
- }
- elsif ($widget eq 'METHOD')
- {
- my ($method) = ($opt =~ /^-?(.*)$/);
- push(@subwidget,Tk::Configure->new($method,$method,$cw))
- }
- elsif ($widget eq 'SETMETHOD')
- {
- my ($method) = ($opt =~ /^-?(.*)$/);
- push(@subwidget,Tk::Configure->new($method,'_cget',$cw,@arg))
- }
- elsif ($widget eq 'SELF')
- {
- push(@subwidget,Tk::Configure->new('Tk::configure', 'Tk::cget', $cw,@arg))
- }
- elsif ($widget eq 'PASSIVE')
- {
- push(@subwidget,Tk::Configure->new('_configure','_cget',$cw,@arg))
- }
- elsif ($widget eq 'CALLBACK')
- {
- push(@subwidget,Tk::Configure->new('_callback','_cget',$cw,@arg))
- }
- else
- {
- push(@subwidget,$cw->Subwidget($widget));
- }
- }
- $cw->BackTrace("No delegate subwidget '$widget' for $opt") unless (@subwidget);
- return (wantarray) ? @subwidget : $subwidget[0];
-}
-
-sub _cget
-{
- my ($cw,$opt) = @_;
- $cw->BackTrace('Wrong number of args to cget') unless (@_ == 2);
- return $cw->{Configure}{$opt}
-}
-
-sub _configure
-{
- my ($cw,$opt,$val) = @_;
- $cw->BackTrace('Wrong number of args to configure') unless (@_ == 3);
- $cw->{Configure}{$opt} = $val;
-}
-
-sub _callback
-{
- my ($cw,$opt,$val) = @_;
- $cw->BackTrace('Wrong number of args to configure') unless (@_ == 3);
- $val = Tk::Callback->new($val) if defined($val) && ref($val);
- $cw->{Configure}{$opt} = $val;
-}
-
-sub cget
-{my ($cw,$opt) = @_;
- my @result;
- local $SIG{'__DIE__'};
- foreach my $sw ($cw->Subconfigure($opt))
- {
- if (wantarray)
- {
- eval { @result = $sw->cget($opt) };
- }
- else
- {
- eval { $result[0] = $sw->cget($opt) };
- }
- last unless $@;
- }
- return wantarray ? @result : $result[0];
-}
-
-sub Configured
-{
- # Called whenever a derived widget is re-configured
- my ($cw,$args,$changed) = @_;
- if (@_ > 1)
- {
- $cw->afterIdle(['ConfigChanged',$cw,$changed]) if (%$changed);
- }
- return exists $cw->{'Configure'};
-}
-
-sub configure
-{
- # The default composite widget configuration method uses hash stored
- # in the widget's hash to map configuration options
- # onto subwidgets.
- #
- my @results = ();
- my $cw = shift;
- if (@_ <= 1)
- {
- # Enquiry cases
- my $spec = $cw->ConfigSpecs;
- if (@_)
- {
- # Return info on the nominated option
- my $opt = $_[0];
- my $info = $spec->{$opt};
- unless (defined $info)
- {
- $info = ($opt =~ /^-(.*)$/) ? $spec->{$1} : $spec->{-$opt};
- }
- if (defined $info)
- {
- if (ref $info)
- {
- # If the default slot is undef then ask subwidgets in turn
- # for their default value until one accepts it.
- if ($ENHANCED_CONFIGSPECS && !defined($info->[3]))
- {local $SIG{'__DIE__'};
- my @def;
- foreach my $sw ($cw->Subconfigure($opt))
- {
- eval { @def = $sw->configure($opt) };
- last unless $@;
- }
- $info->[3] = $def[3];
- $info->[1] = $def[1] unless defined $info->[1];
- $info->[2] = $def[2] unless defined $info->[2];
- }
- push(@results,$opt,$info->[1],$info->[2],$info->[3],$cw->cget($opt));
- }
- else
- {
- # Real (core) Tk widgets return db name rather than option name
- # for aliases so recurse to get that ...
- my @real = $cw->configure($info);
- push(@results,$opt,$real[1]);
- }
- }
- else
- {
- push(@results,$cw->Subconfigure($opt)->configure($opt));
- }
- }
- else
- {
- my $opt;
- my %results;
- if (exists $spec->{'DEFAULT'})
- {
- foreach $opt ($cw->Subconfigure('DEFAULT')->configure)
- {
- $results{$opt->[0]} = $opt;
- }
- }
- foreach $opt (keys %$spec)
- {
- $results{$opt} = [$cw->configure($opt)] if ($opt ne 'DEFAULT');
- }
- foreach $opt (sort keys %results)
- {
- push(@results,$results{$opt});
- }
- }
- }
- else
- {
- my (%args) = @_;
- my %changed = ();
- my ($opt,$val);
- my $config = $cw->TkHash('Configure');
-
- while (($opt,$val) = each %args)
- {
- my $var = \$config->{$opt};
- my $old = $$var;
- $$var = $val;
- my $accepted = 0;
- my $error = "No widget handles $opt";
- foreach my $subwidget ($cw->Subconfigure($opt))
- {
- next unless (defined $subwidget);
- eval {local $SIG{'__DIE__'}; $subwidget->configure($opt => $val) };
- if ($@)
- {
- my $val2 = (defined $val) ? $val : 'undef';
- $error = "Can't set $opt to `$val2' for $cw: " . $@;
- undef $@;
- }
- else
- {
- $accepted = 1;
- }
- }
- $cw->BackTrace($error) unless ($accepted);
- $val = $$var;
- $changed{$opt} = $val if (!defined $old || !defined $val || "$old" ne "$val");
- }
- $cw->Configured(\%args,\%changed);
- }
- return (wantarray) ? @results : \@results;
-}
-
-sub ConfigDefault
-{
- my ($cw,$args) = @_;
-
- $cw->BackTrace('Bad args') unless (defined $args && ref $args eq 'HASH');
-
- my $specs = $cw->ConfigSpecs;
- # Should we enforce a Delagates(DEFAULT => ) as well ?
- $specs->{'DEFAULT'} = ['SELF'] unless (exists $specs->{'DEFAULT'});
-
- #
- # This is a pain with Text or Entry as core widget, they don't
- # inherit SELF's cursor. So comment it out for Tk402.001
- #
- # $specs->{'-cursor'} = ['SELF',undef,undef,undef] unless (exists $specs->{'-cursor'});
-
- # Now some hacks that cause colours to propogate down a composite widget
- # tree - really needs more thought, other options adding such as active
- # colours too and maybe fonts
-
- my $child = ($cw->children)[0]; # 1st child window (if any)
-
- unless (exists($specs->{'-background'}))
- {
- my (@bg) = ('SELF');
- push(@bg,'CHILDREN') if $child;
- $specs->{'-background'} = [\@bg,'background','Background',NORMAL_BG];
- }
- unless (exists($specs->{'-foreground'}))
- {
- my (@fg) = ('PASSIVE');
- unshift(@fg,'CHILDREN') if $child;
- $specs->{'-foreground'} = [\@fg,'foreground','Foreground',BLACK];
- }
- $cw->ConfigAlias(-fg => '-foreground', -bg => '-background');
-
- # Pre-scan args for aliases - this avoids defaulting
- # options specified via alias
- foreach my $opt (keys %$args)
- {
- my $info = $specs->{$opt};
- if (defined($info) && !ref($info))
- {
- $args->{$info} = delete $args->{$opt};
- }
- }
-
- # Now walk %$specs supplying defaults for all the options
- # which have a defined default value, potentially looking up .Xdefaults database
- # options for the name/class of the 'frame'
-
- foreach my $opt (keys %$specs)
- {
- if ($opt ne 'DEFAULT')
- {
- unless (exists $args->{$opt})
- {
- my $info = $specs->{$opt};
- if (ref $info)
- {
- # Not an alias
- if ($ENHANCED_CONFIGSPECS && !defined $info->[3])
- {
- # configure inquire to fill in default slot from subwidget
- $cw->configure($opt);
- }
- if (defined $info->[3])
- {
- if (defined $info->[1] && defined $info->[2])
- {
- # Should we do this on the Subconfigure widget instead?
- # to match *Entry.Background
- my $db = $cw->optionGet($info->[1],$info->[2]);
- $info->[3] = $db if (defined $db);
- }
- $args->{$opt} = $info->[3];
- }
- }
- }
- }
- }
-}
-
-sub ConfigSpecs
-{
- my $cw = shift;
- my $specs = $cw->TkHash('ConfigSpecs');
- while (@_)
- {
- my $key = shift;
- my $val = shift;
- $specs->{$key} = $val;
- }
- return $specs;
-}
-
-sub _alias
-{
- my ($specs,$opt,$main) = @_;
- if (exists($specs->{$opt}))
- {
- unless (exists $specs->{$main})
- {
- my $targ = $specs->{$opt};
- if (ref($targ))
- {
- # opt is a real option
- $specs->{$main} = $opt
- }
- else
- {
- # opt is itself an alias
- # make main point to same place
- $specs->{$main} = $targ unless $targ eq $main;
- }
- }
- return 1;
- }
- return 0;
-}
-
-sub ConfigAlias
-{
- my $cw = shift;
- my $specs = $cw->ConfigSpecs;
- while (@_ >= 2)
- {
- my $opt = shift;
- my $main = shift;
- unless (_alias($specs,$opt,$main) || _alias($specs,$main,$opt))
- {
- $cw->BackTrace("Neither $opt nor $main exist");
- }
- }
- $cw->BackTrace('Odd number of args to ConfigAlias') if (@_);
-}
-
-sub Delegate
-{
- my ($cw,$method,@args) = @_;
- my $widget = $cw->DelegateFor($method);
- if ($widget == $cw)
- {
- $method = "Tk::Widget::$method"
- }
- my @result;
- if (wantarray)
- {
- @result = $widget->$method(@args);
- }
- else
- {
- $result[0] = $widget->$method(@args);
- }
- return (wantarray) ? @result : $result[0];
-}
-
-sub InitObject
-{
- my ($cw,$args) = @_;
- $cw->Populate($args);
- $cw->ConfigDefault($args);
-}
-
-sub ConfigChanged
-{
- my ($cw,$args) = @_;
-}
-
-sub Advertise
-{
- my ($cw,$name,$widget) = @_;
- confess 'No name' unless (defined $name);
- croak 'No widget' unless (defined $widget);
- my $hash = $cw->TkHash('SubWidget');
- $hash->{$name} = $widget; # advertise it
- return $widget;
-}
-
-sub Component
-{
- my ($cw,$kind,$name,%args) = @_;
- $args{'Name'} = "\l$name" if (defined $name && !exists $args{'Name'});
- # my $pack = delete $args{'-pack'};
- my $delegate = delete $args{'-delegate'};
- my $w = $cw->$kind(%args); # Create it
- # $w->pack(@$pack) if (defined $pack);
- $cw->Advertise($name,$w) if (defined $name);
- $cw->Delegates(map(($_ => $w),@$delegate)) if (defined $delegate);
- return $w; # and return it
-}
-
-1;
-__END__
-
-
diff --git a/Master/perltl/site/lib/Tk/Dialog.pm b/Master/perltl/site/lib/Tk/Dialog.pm
deleted file mode 100644
index e277e35af7b..00000000000
--- a/Master/perltl/site/lib/Tk/Dialog.pm
+++ /dev/null
@@ -1,70 +0,0 @@
-package Tk::Dialog;
-
-use vars qw($VERSION);
-$VERSION = '3.031'; # $Id: //depot/Tk8/Tk/Dialog.pm#31 $
-
-# Dialog - a translation of `tk_dialog' from Tcl/Tk to TkPerl (based on
-# John Stoffel's idea).
-#
-# Stephen O. Lidie, Lehigh University Computing Center. 94/12/27
-# lusol@Lehigh.EDU
-
-# Documentation after __END__
-
-use Carp;
-use strict;
-use base qw(Tk::DialogBox);
-
-Construct Tk::Widget 'Dialog';
-
-sub Populate
-{
-
- # Dialog object constructor. Uses `new' method from base class
- # to create object container then creates the dialog toplevel.
-
- my($cw, $args) = @_;
-
- $cw->SUPER::Populate($args);
-
- my ($w_bitmap,$w_but,$pad1,$pad2);
-
- # Create the Toplevel window and divide it into top and bottom parts.
-
- my (@pl) = (-side => 'top', -fill => 'both');
-
- ($pad1, $pad2) =
- ([-padx => '3m', -pady => '3m'], [-padx => '3m', -pady => '2m']);
-
-
- $cw->iconname('Dialog');
-
- my $w_top = $cw->Subwidget('top');
-
- # Fill the top part with the bitmap and message.
-
- @pl = (-side => 'left');
-
- $w_bitmap = $w_top->Label(Name => 'bitmap');
- $w_bitmap->pack(@pl, @$pad1);
-
- my $w_msg = $w_top->Label( -wraplength => '3i', -justify => 'left' );
-
- $w_msg->pack(-side => 'right', -expand => 1, -fill => 'both', @$pad1);
-
- $cw->Advertise(message => $w_msg);
- $cw->Advertise(bitmap => $w_bitmap );
-
- $cw->ConfigSpecs( -image => ['bitmap',undef,undef,undef],
- -bitmap => ['bitmap',undef,undef,undef],
- -font => ['message','font','Font', '-*-Times-Medium-R-Normal--*-180-*-*-*-*-*-*'],
- DEFAULT => ['message',undef,undef,undef]
- );
-}
-
-1;
-
-__END__
-
-=cut
-
diff --git a/Master/perltl/site/lib/Tk/DialogBox.pm b/Master/perltl/site/lib/Tk/DialogBox.pm
deleted file mode 100644
index 33b4b85ed85..00000000000
--- a/Master/perltl/site/lib/Tk/DialogBox.pm
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# DialogBox is similar to Dialog except that it allows any widget
-# in the top frame. Widgets can be added with the add method. Currently
-# there exists no way of deleting a widget once it has been added.
-
-package Tk::DialogBox;
-
-use strict;
-use Carp;
-
-use vars qw($VERSION);
-$VERSION = '3.032'; # $Id: //depot/Tk8/Tixish/DialogBox.pm#32 $
-
-use base qw(Tk::Toplevel);
-
-Tk::Widget->Construct('DialogBox');
-
-sub Populate {
- my ($cw, $args) = @_;
-
- $cw->SUPER::Populate($args);
- my $buttons = delete $args->{'-buttons'};
- $buttons = ['OK'] unless defined $buttons;
- my $default_button = delete $args->{'-default_button'};
- $default_button = $buttons->[0] unless defined $default_button;
-
- $cw->{'selected_button'} = '';
- $cw->transient($cw->Parent->toplevel);
- $cw->withdraw;
- $cw->protocol('WM_DELETE_WINDOW' => sub {});
-
- # create the two frames
- my $top = $cw->Component('Frame', 'top');
- $top->configure(-relief => 'raised', -bd => 1) unless $Tk::platform eq 'MSWin32';
- my $bot = $cw->Component('Frame', 'bottom');
- $bot->configure(-relief => 'raised', -bd => 1) unless $Tk::platform eq 'MSWin32';
- $bot->pack(qw/-side bottom -fill both -ipady 3 -ipadx 3/);
- $top->pack(qw/-side top -fill both -ipady 3 -ipadx 3 -expand 1/);
-
- # create a row of buttons in the bottom.
- my $bl; # foreach my $var: perl > 5.003_08
- foreach $bl (@$buttons)
- {
- my $b = $bot->Button(-text => $bl, -command => sub { $cw->{'selected_button'} = "$bl" } );
- $cw->Advertise("B_$bl" => $b);
- if ($Tk::platform eq 'MSWin32')
- {
- $b->configure(-width => 10, -pady => 0);
- }
- if ($bl eq $default_button) {
- if ($Tk::platform eq 'MSWin32') {
- $b->pack(-side => 'left', -expand => 1, -padx => 1, -pady => 1);
- } else {
- my $db = $bot->Frame(-relief => 'sunken', -bd => 1);
- $b->raise($db);
- $b->pack(-in => $db, -padx => '2', -pady => '2');
- $db->pack(-side => 'left', -expand => 1, -padx => 1, -pady => 1);
- }
- $cw->bind('<Return>' => [ $b, 'Invoke']);
- $cw->{'default_button'} = $b;
- } else {
- $b->pack(-side => 'left', -expand => 1, -padx => 1, -pady => 1);
- }
- }
- $cw->ConfigSpecs(-command => ['CALLBACK', undef, undef, undef ],
- -foreground => ['DESCENDANTS', 'foreground','Foreground', 'black'],
- -background => ['DESCENDANTS', 'background','Background', undef],
- );
- $cw->Delegates('Construct',$top);
-}
-
-sub add {
- my ($cw, $wnam, @args) = @_;
- my $w = $cw->Subwidget('top')->$wnam(@args);
- $cw->Advertise("\L$wnam" => $w);
- return $w;
-}
-
-sub Wait
-{
- my $cw = shift;
- $cw->waitVariable(\$cw->{'selected_button'});
- $cw->grabRelease;
- $cw->withdraw;
- $cw->Callback(-command => $cw->{'selected_button'});
-}
-
-sub Show {
- my ($cw, $grab) = @_;
- croak 'DialogBox: "Show" method requires at least 1 argument'
- if scalar @_ < 1;
- my $old_focus = $cw->focusSave;
- my $old_grab = $cw->grabSave;
-
- $cw->Popup();
-
- Tk::catch {
- if (defined $grab && length $grab && ($grab =~ /global/)) {
- $cw->grabGlobal;
- } else {
- $cw->grab;
- }
- };
- if (defined $cw->{'default_button'}) {
- $cw->{'default_button'}->focus;
- } else {
- $cw->focus;
- }
- $cw->Wait;
- &$old_focus;
- &$old_grab;
- return $cw->{'selected_button'};
-}
-
-1;
diff --git a/Master/perltl/site/lib/Tk/Entry.pm b/Master/perltl/site/lib/Tk/Entry.pm
deleted file mode 100644
index 2696b496497..00000000000
--- a/Master/perltl/site/lib/Tk/Entry.pm
+++ /dev/null
@@ -1,517 +0,0 @@
-package Tk::Entry;
-
-# Converted from entry.tcl --
-#
-# This file defines the default bindings for Tk entry widgets.
-#
-# @(#) entry.tcl 1.22 94/12/17 16:05:14
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# Copyright (c) 1995-1999 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-
-use vars qw($VERSION);
-$VERSION = '3.037'; # $Id: //depot/Tk8/Entry/Entry.pm#37 $
-
-# modify it under the same terms as Perl itself, subject
-# to additional disclaimer in license.terms due to partial
-# derivation from Tk4.0 sources.
-
-use Tk::Widget ();
-use Tk::Clipboard ();
-use base qw(Tk::Clipboard Tk::Widget);
-
-import Tk qw(Ev $XS_VERSION);
-
-Construct Tk::Widget 'Entry';
-
-bootstrap Tk::Entry;
-
-sub Tk_cmd { \&Tk::entry }
-
-Tk::Methods('bbox','delete','get','icursor','index','insert','scan',
- 'selection','xview');
-
-use Tk::Submethods ( 'selection' => [qw(clear range adjust present to from)],
- 'xview' => [qw(moveto scroll)],
- );
-
-sub wordstart
-{my ($w,$pos) = @_;
- my $string = $w->get;
- $pos = $w->index('insert')-1 unless(defined $pos);
- $string = substr($string,0,$pos);
- $string =~ s/\S*$//;
- length $string;
-}
-
-sub wordend
-{my ($w,$pos) = @_;
- my $string = $w->get;
- my $anc = length $string;
- $pos = $w->index('insert') unless(defined $pos);
- $string = substr($string,$pos);
- $string =~ s/^(?:((?=\s)\s*|(?=\S)\S*))//x;
- $anc - length($string);
-}
-
-sub deltainsert
-{
- my ($w,$d) = @_;
- return $w->index('insert')+$d;
-}
-
-#
-# Bind --
-# This procedure is invoked the first time the mouse enters an
-# entry widget or an entry widget receives the input focus. It creates
-# all of the class bindings for entries.
-#
-# Arguments:
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-sub ClassInit
-{
- my ($class,$mw) = @_;
-
- $class->SUPER::ClassInit($mw);
-
- # Standard Motif bindings:
- $mw->bind($class,'<Escape>','selectionClear');
-
- $mw->bind($class,'<1>',['Button1',Ev('x')]);
-
- $mw->bind($class,'<B1-Motion>',['MouseSelect',Ev('x')]);
-
- $mw->bind($class,'<Double-1>',['MouseSelect',Ev('x'),'word','sel.first']);
- $mw->bind($class,'<Double-Shift-1>',['MouseSelect',Ev('x'),'word']);
- $mw->bind($class,'<Triple-1>',['MouseSelect',Ev('x'),'line',0]);
- $mw->bind($class,'<Triple-Shift-1>',['MouseSelect',Ev('x'),'line']);
-
- $mw->bind($class,'<Shift-1>','Shift_1');
-
-
- $mw->bind($class,'<B1-Leave>',['AutoScan',Ev('x')]);
- $mw->bind($class,'<B1-Enter>','CancelRepeat');
- $mw->bind($class,'<ButtonRelease-1>','CancelRepeat');
- $mw->bind($class,'<Control-1>','Control_1');
- $mw->bind($class,'<Left>', ['SetCursor',Ev('deltainsert',-1)]);
- $mw->bind($class,'<Right>',['SetCursor',Ev('deltainsert',1)]);
- $mw->bind($class,'<Shift-Left>',['KeySelect',Ev('deltainsert',-1)]);
- $mw->bind($class,'<Shift-Right>',['KeySelect',Ev('deltainsert',1)]);
- $mw->bind($class,'<Control-Left>',['SetCursor',Ev(['wordstart'])]);
- $mw->bind($class,'<Control-Right>',['SetCursor',Ev(['wordend'])]);
- $mw->bind($class,'<Shift-Control-Left>',['KeySelect',Ev(['wordstart'])]);
- $mw->bind($class,'<Shift-Control-Right>',['KeySelect',Ev(['wordend'])]);
- $mw->bind($class,'<Home>',['SetCursor',0]);
- $mw->bind($class,'<Shift-Home>',['KeySelect',0]);
- $mw->bind($class,'<End>',['SetCursor','end']);
- $mw->bind($class,'<Shift-End>',['KeySelect','end']);
- $mw->bind($class,'<Delete>','Delete');
-
- $mw->bind($class,'<BackSpace>','Backspace');
-
- $mw->bind($class,'<Control-space>',['selectionFrom','insert']);
- $mw->bind($class,'<Select>',['selectionFrom','insert']);
- $mw->bind($class,'<Control-Shift-space>',['selectionAdjust','insert']);
- $mw->bind($class,'<Shift-Select>',['selectionAdjust','insert']);
-
- $mw->bind($class,'<Control-slash>',['selectionRange',0,'end']);
- $mw->bind($class,'<Control-backslash>','selectionClear');
-
- # $class->clipboardOperations($mw,qw[Copy Cut Paste]);
-
- $mw->bind($class,'<KeyPress>', ['Insert',Ev('A')]);
-
- # Ignore all Alt, Meta, and Control keypresses unless explicitly bound.
- # Otherwise, if a widget binding for one of these is defined, the
- # <KeyPress> class binding will also fire and insert the character,
- # which is wrong. Ditto for Return, and Tab.
-
- $mw->bind($class,'<Alt-KeyPress>' ,'NoOp');
- $mw->bind($class,'<Meta-KeyPress>' ,'NoOp');
- $mw->bind($class,'<Control-KeyPress>' ,'NoOp');
- $mw->bind($class,'<Return>' ,'NoOp');
- $mw->bind($class,'<KP_Enter>' ,'NoOp');
- $mw->bind($class,'<Tab>' ,'NoOp');
-
- $mw->bind($class,'<Insert>','InsertSelection');
- if (!$Tk::strictMotif)
- {
- # Additional emacs-like bindings:
- $mw->bind($class,'<Control-a>',['SetCursor',0]);
- $mw->bind($class,'<Control-b>',['SetCursor',Ev('deltainsert',-1)]);
- $mw->bind($class,'<Control-d>',['delete','insert']);
- $mw->bind($class,'<Control-e>',['SetCursor','end']);
- $mw->bind($class,'<Control-f>',['SetCursor',Ev('deltainsert',1)]);
- $mw->bind($class,'<Control-h>','Backspace');
- $mw->bind($class,'<Control-k>',['delete','insert','end']);
-
- $mw->bind($class,'<Control-t>','Transpose');
-
- $mw->bind($class,'<Meta-b>',['SetCursor',Ev(['wordstart'])]);
- $mw->bind($class,'<Meta-d>',['delete','insert',Ev(['wordend'])]);
- $mw->bind($class,'<Meta-f>',['SetCursor',Ev(['wordend'])]);
- $mw->bind($class,'<Meta-BackSpace>',['delete',Ev(['wordstart']),'insert']);
-
- # A few additional bindings from John Ousterhout.
- $mw->bind($class,'<Control-w>',['delete',Ev(['wordstart']),'insert']);
- $mw->bind($class,'<2>','Button_2');
- $mw->bind($class,'<B2-Motion>','B2_Motion');
- $mw->bind($class,'<ButtonRelease-2>','ButtonRelease_2');
- }
- return $class;
-}
-
-sub Shift_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $Tk::selectMode = 'char';
- $w->selectionAdjust('@' . $Ev->x)
-}
-
-
-sub Control_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->icursor('@' . $Ev->x)
-}
-
-
-sub Delete
-{
- my $w = shift;
- if ($w->selectionPresent)
- {
- $w->deleteSelected
- }
- else
- {
- $w->delete('insert')
- }
-}
-
-
-sub InsertSelection
-{
- my $w = shift;
- eval {local $SIG{__DIE__}; $w->Insert($w->SelectionGet)}
-}
-
-
-sub Button_2
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->scan('mark',$Ev->x);
- $Tk::x = $Ev->x;
- $Tk::y = $Ev->y;
- $Tk::mouseMoved = 0
-}
-
-
-sub B2_Motion
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- if (abs(($Ev->x-$Tk::x)) > 2)
- {
- $Tk::mouseMoved = 1
- }
- $w->scan('dragto',$Ev->x)
-}
-
-
-sub ButtonRelease_2
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- if (!$Tk::mouseMoved)
- {
- eval
- {local $SIG{__DIE__};
- $w->insert('insert',$w->SelectionGet);
- $w->SeeInsert;
- }
- }
-}
-
-# Button1 --
-# This procedure is invoked to handle button-1 presses in entry
-# widgets. It moves the insertion cursor, sets the selection anchor,
-# and claims the input focus.
-#
-# Arguments:
-# w - The entry window in which the button was pressed.
-# x - The x-coordinate of the button press.
-sub Button1
-{
- my $w = shift;
- my $x = shift;
- $Tk::selectMode = 'char';
- $Tk::mouseMoved = 0;
- $Tk::pressX = $x;
- $w->icursor('@' . $x);
- $w->selectionFrom('@' . $x);
- $w->selectionClear;
- if ($w->cget('-state') eq 'normal')
- {
- $w->focus()
- }
-}
-# MouseSelect --
-# This procedure is invoked when dragging out a selection with
-# the mouse. Depending on the selection mode (character, word,
-# line) it selects in different-sized units. This procedure
-# ignores mouse motions initially until the mouse has moved from
-# one character to another or until there have been multiple clicks.
-#
-# Arguments:
-# w - The entry window in which the button was pressed.
-# x - The x-coordinate of the mouse.
-sub MouseSelect
-{
- my $w = shift;
- my $x = shift;
- $Tk::selectMode = shift if (@_);
- my $cur = $w->index('@' . $x);
- return unless defined $cur;
- my $anchor = $w->index('anchor');
- return unless defined $anchor;
- if (($cur != $anchor) || (abs($Tk::pressX - $x) >= 3))
- {
- $Tk::mouseMoved = 1
- }
- my $mode = $Tk::selectMode;
- return unless $mode;
- if ($mode eq 'char')
- {
- if ($Tk::mouseMoved)
- {
- if ($cur < $anchor)
- {
- $w->selectionTo($cur)
- }
- else
- {
- $w->selectionTo($cur+1)
- }
- }
- }
- elsif ($mode eq 'word')
- {
- if ($cur < $w->index('anchor'))
- {
- $w->selectionRange($w->wordstart($cur),$w->wordend($anchor-1))
- }
- else
- {
- $w->selectionRange($w->wordstart($anchor),$w->wordend($cur))
- }
- }
- elsif ($mode eq 'line')
- {
- $w->selectionRange(0,'end')
- }
- if (@_)
- {
- my $ipos = shift;
- eval {local $SIG{__DIE__}; $w->icursor($ipos) };
- }
- $w->idletasks;
-}
-# AutoScan --
-# This procedure is invoked when the mouse leaves an entry window
-# with button 1 down. It scrolls the window left or right,
-# depending on where the mouse is, and reschedules itself as an
-# 'after' command so that the window continues to scroll until the
-# mouse moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The entry window.
-# x - The x-coordinate of the mouse when it left the window.
-sub AutoScan
-{
- my $w = shift;
- my $x = shift;
- if ($x >= $w->width)
- {
- $w->xview('scroll',2,'units')
- }
- elsif ($x < 0)
- {
- $w->xview('scroll',-2,'units')
- }
- else
- {
- return;
- }
- $w->MouseSelect($x);
- $w->RepeatId($w->after(50,['AutoScan',$w,$x]))
-}
-# KeySelect
-# This procedure is invoked when stroking out selections using the
-# keyboard. It moves the cursor to a new position, then extends
-# the selection to that position.
-#
-# Arguments:
-# w - The entry window.
-# new - A new position for the insertion cursor (the cursor hasn't
-# actually been moved to this position yet).
-sub KeySelect
-{
- my $w = shift;
- my $new = shift;
- if (!$w->selectionPresent)
- {
- $w->selectionFrom('insert');
- $w->selectionTo($new)
- }
- else
- {
- $w->selectionAdjust($new)
- }
- $w->icursor($new);
- $w->SeeInsert;
-}
-# Insert --
-# Insert a string into an entry at the point of the insertion cursor.
-# If there is a selection in the entry, and it covers the point of the
-# insertion cursor, then delete the selection before inserting.
-#
-# Arguments:
-# w - The entry window in which to insert the string
-# s - The string to insert (usually just a single character)
-sub Insert
-{
- my $w = shift;
- my $s = shift;
- return unless (defined $s && $s ne '');
- eval
- {local $SIG{__DIE__};
- my $insert = $w->index('insert');
- if ($w->index('sel.first') <= $insert && $w->index('sel.last') >= $insert)
- {
- $w->deleteSelected
- }
- };
- $w->insert('insert',$s);
- $w->SeeInsert
-}
-# Backspace --
-# Backspace over the character just before the insertion cursor.
-#
-# Arguments:
-# w - The entry window in which to backspace.
-sub Backspace
-{
- my $w = shift;
- if ($w->selectionPresent)
- {
- $w->deleteSelected
- }
- else
- {
- my $x = $w->index('insert')-1;
- $w->delete($x) if ($x >= 0);
- }
-}
-# SeeInsert
-# Make sure that the insertion cursor is visible in the entry window.
-# If not, adjust the view so that it is.
-#
-# Arguments:
-# w - The entry window.
-sub SeeInsert
-{
- my $w = shift;
- my $c = $w->index('insert');
-#
-# Probably a bug in your version of tcl/tk (I've not this problem
-# when I test Entry in the widget demo for tcl/tk)
-# index('\@0') give always 0. Consequence :
-# if you make <Control-E> or <Control-F> view is adapted
-# but with <Control-A> or <Control-B> view is not adapted
-#
- my $left = $w->index('@0');
- if ($left > $c)
- {
- $w->xview($c);
- return;
- }
- my $x = $w->width;
- while ($w->index('@' . $x) <= $c && $left < $c)
- {
- $left += 1;
- $w->xview($left)
- }
-}
-# SetCursor
-# Move the insertion cursor to a given position in an entry. Also
-# clears the selection, if there is one in the entry, and makes sure
-# that the insertion cursor is visible.
-#
-# Arguments:
-# w - The entry window.
-# pos - The desired new position for the cursor in the window.
-sub SetCursor
-{
- my $w = shift;
- my $pos = shift;
- $w->icursor($pos);
- $w->selectionClear;
- $w->SeeInsert;
-}
-# Transpose
-# This procedure implements the 'transpose' function for entry widgets.
-# It tranposes the characters on either side of the insertion cursor,
-# unless the cursor is at the end of the line. In this case it
-# transposes the two characters to the left of the cursor. In either
-# case, the cursor ends up to the right of the transposed characters.
-#
-# Arguments:
-# w - The entry window.
-sub Transpose
-{
- my $w = shift;
- my $i = $w->index('insert');
- $i++ if ($i < $w->index('end'));
- my $first = $i-2;
- return if ($first < 0);
- my $str = $w->get;
- my $new = substr($str,$i-1,1) . substr($str,$first,1);
- $w->delete($first,$i);
- $w->insert('insert',$new);
- $w->SeeInsert;
-}
-
-sub tabFocus
-{
- my $w = shift;
- $w->selectionRange(0,'end');
- $w->icursor('end');
- $w->SUPER::tabFocus;
-}
-
-sub getSelected
-{
- my $w = shift;
- return undef unless $w->selectionPresent;
- my $str = $w->get;
- my $show = $w->cget('-show');
- $str = $show x length($str) if (defined $show);
- my $s = $w->index('sel.first');
- my $e = $w->index('sel.last');
- return substr($str,$s,$e+1-$s);
-}
-
-1;
-
-__END__
-
-
diff --git a/Master/perltl/site/lib/Tk/Event.pm b/Master/perltl/site/lib/Tk/Event.pm
deleted file mode 100644
index b162e475d4a..00000000000
--- a/Master/perltl/site/lib/Tk/Event.pm
+++ /dev/null
@@ -1,13 +0,0 @@
-package Tk::Event;
-use vars qw($VERSION $XS_VERSION @EXPORT_OK);
-END { CleanupGlue() }
-$VERSION = '3.026'; # $Id: //depot/Tk8/Event/Event.pm#26 $
-$XS_VERSION = '800.024';
-require DynaLoader;
-use base qw(Exporter DynaLoader);
-@EXPORT_OK = qw($XS_VERSION DONT_WAIT WINDOW_EVENTS FILE_EVENTS
- TIMER_EVENTS IDLE_EVENTS ALL_EVENTS);
-bootstrap Tk::Event;
-require Tk::Event::IO;
-1;
-__END__
diff --git a/Master/perltl/site/lib/Tk/Event/IO.pm b/Master/perltl/site/lib/Tk/Event/IO.pm
deleted file mode 100644
index a28ae54147a..00000000000
--- a/Master/perltl/site/lib/Tk/Event/IO.pm
+++ /dev/null
@@ -1,122 +0,0 @@
-package Tk::Event::IO;
-
-use vars qw($VERSION @EXPORT_OK);
-$VERSION = '3.036'; # $Id: //depot/Tk8/Event/Event/IO.pm#12 $ +24
-
-use base qw(Exporter);
-use Symbol ();
-
-@EXPORT_OK = qw(READABLE WRITABLE);
-
-sub PrintArgs
-{
- my $func = (caller(1))[3];
- print "$func(",join(',',@_),")\n";
-}
-
-sub PRINT
-{
- my $obj = shift;
- $obj->wait(WRITABLE);
- my $h = $obj->handle;
- return print $h @_;
-}
-
-sub PRINTF
-{
- my $obj = shift;
- $obj->wait(WRITABLE);
- my $h = $obj->handle;
- return printf $h @_;
-}
-
-sub WRITE
-{
- my $obj = $_[0];
- $obj->wait(WRITABLE);
- return syswrite($obj->handle,$_[1],$_[2]);
-}
-
-my $depth = 0;
-sub READLINE
-{
- my $obj = shift;
- $obj->wait(READABLE);
- my $h = $obj->handle;
- my $w = <$h>;
- return $w;
-}
-
-sub READ
-{
- my $obj = $_[0];
- $obj->wait(READABLE);
- my $h = $obj->handle;
- return sysread($h,$_[1],$_[2],defined $_[3] ? $_[3] : 0);
-}
-
-sub GETC
-{
- my $obj = $_[0];
- $obj->wait(READABLE);
- my $h = $obj->handle;
- return getc($h);
-}
-
-sub CLOSE
-{
- my $obj = shift;
- $obj->unwatch;
- my $h = $obj->handle;
- return close($h);
-}
-
-sub EOF
-{
- my $obj = shift;
- my $h = $obj->handle;
- return eof($h);
-}
-
-sub FILENO
-{
- my $obj = shift;
- my $h = $obj->handle;
- return fileno($h);
-}
-
-sub imode
-{
- my $mode = shift;
- my $imode = ${{'readable' => READABLE(),
- 'writable' => WRITABLE()}}{$mode};
- croak("Invalid handler type '$mode'") unless (defined $imode);
- return $imode;
-}
-
-sub fileevent
-{
- my ($widget,$file,$mode,$cb) = @_;
- my $imode = imode($mode);
- unless (ref $file)
- {
- no strict 'refs';
- $file = Symbol::qualify($file,(caller)[0]);
- $file = \*{$file};
- }
- my $obj = tied(*$file);
- $obj = tie *$file,'Tk::Event::IO', $file unless $obj && $obj->isa('Tk::Event::IO');
- if (@_ == 3)
- {
- return $obj->handler($imode);
- }
- else
- {
- my $h = $obj->handler($imode,$cb);
- undef $obj;
- untie *$file unless $h;
- }
-}
-
-1;
-__END__
diff --git a/Master/perltl/site/lib/Tk/FBox.pm b/Master/perltl/site/lib/Tk/FBox.pm
deleted file mode 100644
index bcc6ef1bf21..00000000000
--- a/Master/perltl/site/lib/Tk/FBox.pm
+++ /dev/null
@@ -1,891 +0,0 @@
-# -*- perl -*-
-#
-# tkfbox.tcl --
-#
-# Implements the "TK" standard file selection dialog box. This
-# dialog box is used on the Unix platforms whenever the tk_strictMotif
-# flag is not set.
-#
-# The "TK" standard file selection dialog box is similar to the
-# file selection dialog box on Win95(TM). The user can navigate
-# the directories by clicking on the folder icons or by
-# selecting the "Directory" option menu. The user can select
-# files by clicking on the file icons or by entering a filename
-# in the "Filename:" entry.
-#
-# Copyright (c) 1994-1996 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# Translated to perk/Tk by Slaven Rezic <eserte@cs.tu-berlin.de>.
-#
-
-#----------------------------------------------------------------------
-#
-# F I L E D I A L O G
-#
-#----------------------------------------------------------------------
-# tkFDialog --
-#
-# Implements the TK file selection dialog. This dialog is used when
-# the tk_strictMotif flag is set to false. This procedure shouldn't
-# be called directly. Call tk_getOpenFile or tk_getSaveFile instead.
-#
-
-package Tk::FBox;
-require Tk::Toplevel;
-
-use strict;
-use vars qw($VERSION $updirImage $folderImage $fileImage);
-
-$VERSION = '3.020'; # $Id: //depot/Tk8/Tk/FBox.pm#20 $
-
-use base qw(Tk::Toplevel);
-
-Construct Tk::Widget 'FBox';
-
-my $selectFilePath;
-my $selectFile;
-my $selectPath;
-
-sub import {
- if (defined $_[1] and $_[1] eq 'as_default') {
- local $^W = 0;
- package Tk;
- *FDialog = \&Tk::FBox::FDialog;
- *MotifFDialog = \&Tk::FBox::FDialog;
- }
-}
-
-sub Populate {
- my($w, $args) = @_;
-
- require Tk::IconList;
- require File::Basename;
- require Cwd;
-
- $w->SUPER::Populate($args);
-
- # f1: the frame with the directory option menu
- my $f1 = $w->Frame;
- my $lab = $f1->Label(-text => 'Directory:', -underline => 0);
- $w->{'dirMenu'} = my $dirMenu =
- $f1->Optionmenu(-variable => \$w->{'selectPath'},
- -textvariable => \$w->{'selectPath'},
- -command => ['SetPath', $w]);
- my $upBtn = $f1->Button;
- if (!defined $updirImage) {
- $updirImage = $w->Bitmap(-data => "#define updir_width 28\n" .
- "#define updir_height 16\n" .
- <<EOF);
-static char updir_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00,
- 0x20, 0x40, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x10, 0x00, 0x00, 0x01,
- 0x10, 0x02, 0x00, 0x01, 0x10, 0x07, 0x00, 0x01, 0x90, 0x0f, 0x00, 0x01,
- 0x10, 0x02, 0x00, 0x01, 0x10, 0x02, 0x00, 0x01, 0x10, 0x02, 0x00, 0x01,
- 0x10, 0xfe, 0x07, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01,
- 0xf0, 0xff, 0xff, 0x01};
-EOF
- }
- $upBtn->configure(-image => $updirImage);
- $dirMenu->configure(-takefocus => 1, -highlightthickness => 2);
- $upBtn->pack(-side => 'right', -padx => 4, -fill => 'both');
- $lab->pack(-side => 'left', -padx => 4, -fill => 'both');
- $dirMenu->pack(-expand => 'yes', -fill => 'both', -padx => 4);
-
- $w->{'icons'} = my $icons =
- $w->IconList(-browsecmd => ['ListBrowse', $w],
- -command => ['ListInvoke', $w],
- );
-
- # f2: the frame with the OK button and the "file name" field
- my $f2 = $w->Frame(-bd => 0);
- my $f2_lab = $f2->Label(-text => 'File name:', -anchor => 'e',
- -width => 14, -underline => 5, -pady => 0);
- $w->{'ent'} = my $ent = $f2->Entry;
-
- # The font to use for the icons. The default Canvas font on Unix
- # is just deviant.
-# $w->{'icons'}{'font'} = $ent->cget(-font);
- $w->{'icons'}->configure(-font => $ent->cget(-font));
-
- # f3: the frame with the cancel button and the file types field
- my $f3 = $w->Frame(-bd => 0);
-
- # The "File of types:" label needs to be grayed-out when
- # -filetypes are not specified. The label widget does not support
- # grayed-out text on monochrome displays. Therefore, we have to
- # use a button widget to emulate a label widget (by setting its
- # bindtags)
- $w->{'typeMenuLab'} = my $typeMenuLab = $f3->Button
- (-text => 'Files of type:',
- -anchor => 'e',
- -width => 14,
- -underline => 9,
- -bd => $f2_lab->cget(-bd),
- -highlightthickness => $f2_lab->cget(-highlightthickness),
- -relief => $f2_lab->cget(-relief),
- -padx => $f2_lab->cget(-padx),
- -pady => $f2_lab->cget(-pady),
- );
- $typeMenuLab->bindtags([$typeMenuLab, 'Label',
- $typeMenuLab->toplevel, 'all']);
- $w->{'typeMenuBtn'} = my $typeMenuBtn =
- $f3->Menubutton(-indicatoron => 1, -tearoff => 0);
- $typeMenuBtn->configure(-takefocus => 1,
- -highlightthickness => 2,
- -relief => 'raised',
- -bd => 2,
- -anchor => 'w',
- );
-
- # the okBtn is created after the typeMenu so that the keyboard traversal
- # is in the right order
- $w->{'okBtn'} = my $okBtn = $f2->Button
- (-text => 'OK',
- -underline => 0,
- -width => 6,
- -default => 'active',
- -pady => 3,
- );
- my $cancelBtn = $f3->Button
- (-text => 'Cancel',
- -underline => 0,
- -width => 6,
- -default => 'normal',
- -pady => 3,
- );
-
- # pack the widgets in f2 and f3
- $okBtn->pack(-side => 'right', -padx => 4, -anchor => 'e');
- $f2_lab->pack(-side => 'left', -padx => 4);
- $ent->pack(-expand => 'yes', -fill => 'x', -padx => 2, -pady => 0);
- $cancelBtn->pack(-side => 'right', -padx => 4, -anchor => 'w');
- $typeMenuLab->pack(-side => 'left', -padx => 4);
- $typeMenuBtn->pack(-expand => 'yes', -fill => 'x', -side => 'right');
-
- # Pack all the frames together. We are done with widget construction.
- $f1->pack(-side => 'top', -fill => 'x', -pady => 4);
- $f3->pack(-side => 'bottom', -fill => 'x');
- $f2->pack(-side => 'bottom', -fill => 'x');
- $icons->pack(-expand => 'yes', -fill => 'both', -padx => 4, -pady => 1);
-
- # Set up the event handlers
- $ent->bind('<Return>',[$w,'ActivateEnt']);
- $upBtn->configure(-command => ['UpDirCmd', $w]);
- $okBtn->configure(-command => ['OkCmd', $w]);
- $cancelBtn->configure(-command, ['CancelCmd', $w]);
-
- $w->bind('<Alt-d>',[$dirMenu,'focus']);
- $w->bind('<Alt-t>',sub {
- if ($typeMenuBtn->cget(-state) eq 'normal') {
- $typeMenuBtn->focus;
- } });
- $w->bind('<Alt-n>',[$ent,'focus']);
- $w->bind('<KeyPress-Escape>',[$cancelBtn,'invoke']);
- $w->bind('<Alt-c>',[$cancelBtn,'invoke']);
- $w->bind('<Alt-o>',['InvokeBtn','Open']);
- $w->bind('<Alt-s>',['InvokeBtn','Save']);
- $w->protocol('WM_DELETE_WINDOW', ['CancelCmd', $w]);
- $w->OnDestroy(['CancelCmd', $w]);
-
- # Build the focus group for all the entries
- $w->FG_Create;
- $w->FG_BindIn($ent, ['EntFocusIn', $w]);
- $w->FG_BindOut($ent, ['EntFocusOut', $w]);
-
- $w->SetPath(_cwd());
-
- $w->ConfigSpecs(-defaultextension => ['PASSIVE', undef, undef, undef],
- -filetypes => ['PASSIVE', undef, undef, undef],
- -initialdir => ['PASSIVE', undef, undef, undef],
- -initialfile => ['PASSIVE', undef, undef, undef],
- -title => ['PASSIVE', undef, undef, undef],
- -type => ['PASSIVE', undef, undef, 'open'],
- -filter => ['PASSIVE', undef, undef, '*'],
- -force => ['PASSIVE', undef, undef, 0],
- 'DEFAULT' => [$icons],
- );
- # So-far-failed attempt to break reference loops ...
- $w->_OnDestroy(qw(dirMenu icons typeMenuLab typeMenuBtn okBtn ent updateId));
- $w;
-}
-
-
-sub Show {
- my $w = shift;
-
- $w->configure(@_);
-
- $w->transient($w->Parent);
-
- # set the default directory and selection according to the -initial
- # settings
- {
- my $initialdir = $w->cget(-initialdir);
- if (defined $initialdir) {
- if (-d $initialdir) {
- $w->{'selectPath'} = $initialdir;
- } else {
- $w->Error("\"$initialdir\" is not a valid directory");
- }
- }
- $w->{'selectFile'} = $w->cget(-initialfile);
- }
-
- # Initialize the file types menu
- my $typeMenuBtn = $w->{'typeMenuBtn'};
- my $typeMenuLab = $w->{'typeMenuLab'};
- if (defined $w->cget('-filetypes')) {
- my(@filetypes) = GetFileTypes($w->cget('-filetypes'));
- my $typeMenu = $typeMenuBtn->cget(-menu);
- $typeMenu->delete(0, 'end');
- foreach my $ft (@filetypes) {
- my $title = $ft->[0];
- my $filter = join(' ', @{ $ft->[1] });
- $typeMenuBtn->command
- (-label => $title,
- -command => ['SetFilter', $w, $title, $filter],
- );
- }
- $w->SetFilter($filetypes[0]->[0], join(' ', @{ $filetypes[0]->[1] }));
- $typeMenuBtn->configure(-state => 'normal');
- $typeMenuLab->configure(-state => 'normal');
- } else {
- $w->configure(-filter => '*');
- $typeMenuBtn->configure(-state => 'disabled',
- -takefocus => 0);
- $typeMenuLab->configure(-state => 'disabled');
- }
- $w->UpdateWhenIdle;
-
- # Withdraw the window, then update all the geometry information
- # so we know how big it wants to be, then center the window in the
- # display and de-iconify it.
- $w->withdraw;
- $w->idletasks;
- my $x = int($w->screenwidth / 2 - $w->reqwidth / 2 - $w->parent->vrootx);
- my $y = int($w->screenheight / 2 - $w->reqheight / 2 - $w->parent->vrooty);
- $w->geometry("+$x+$y");
-
- {
- my $title = $w->cget(-title);
- if (!defined $title) {
- $title = ($w->cget(-type) eq 'open' ? 'Open' : 'Save As');
- }
- $w->title($title);
- }
-
- $w->deiconify;
- # Set a grab and claim the focus too.
- my $oldFocus = $w->focusCurrent;
- my $oldGrab = $w->grabCurrent;
- my $grabStatus = $oldGrab->grabStatus if ($oldGrab);
- $w->grab;
- my $ent = $w->{'ent'};
- $ent->focus;
- $ent->delete(0, 'end');
- $ent->insert(0, $w->{'selectFile'});
- $ent->selectionFrom(0);
- $ent->selectionTo('end');
- $ent->icursor('end');
-
- # 8. Wait for the user to respond, then restore the focus and
- # return the index of the selected button. Restore the focus
- # before deleting the window, since otherwise the window manager
- # may take the focus away so we can't redirect it. Finally,
- # restore any grab that was in effect.
- $w->waitVariable(\$selectFilePath);
- eval {
- $oldFocus->focus if $oldFocus;
- };
- if (Tk::Exists($w)) { # widget still exists
- $w->grabRelease;
- $w->withdraw;
- }
- if ($oldGrab) {
- if ($grabStatus eq 'global') {
- $oldGrab->grabGlobal;
- } else {
- $oldGrab->grab;
- }
- }
- return $selectFilePath;
-}
-
-# tkFDialog_UpdateWhenIdle --
-#
-# Creates an idle event handler which updates the dialog in idle
-# time. This is important because loading the directory may take a long
-# time and we don't want to load the same directory for multiple times
-# due to multiple concurrent events.
-#
-sub UpdateWhenIdle {
- my $w = shift;
- if (exists $w->{'updateId'}) {
- return;
- } else {
- $w->{'updateId'} = $w->after('idle', [$w, 'Update']);
- }
-}
-
-# tkFDialog_Update --
-#
-# Loads the files and directories into the IconList widget. Also
-# sets up the directory option menu for quick access to parent
-# directories.
-#
-sub Update {
- my $w = shift;
- my $dataName = $w->name;
-
- # This proc may be called within an idle handler. Make sure that the
- # window has not been destroyed before this proc is called
- if (!Tk::Exists($w) || $w->class ne 'FBox') {
- return;
- } else {
- delete $w->{'updateId'};
- }
- unless (defined $folderImage) {
- require Tk::Pixmap;
- $folderImage = $w->Pixmap(-file => Tk->findINC('folder.xpm'));
- $fileImage = $w->Pixmap(-file => Tk->findINC('file.xpm'));
- }
- my $folder = $folderImage;
- my $file = $fileImage;
- my $appPWD = _cwd();
- if (!ext_chdir($w->{'selectPath'})) {
- # We cannot change directory to $data(selectPath). $data(selectPath)
- # should have been checked before tkFDialog_Update is called, so
- # we normally won't come to here. Anyways, give an error and abort
- # action.
- $w->messageBox(-type => 'OK',
- -message => 'Cannot change to the directory "' .
- $w->{'selectPath'} . "\".\nPermission denied.",
- -icon => 'warning',
- );
- ext_chdir($appPWD);
- return;
- }
-
- # Turn on the busy cursor. BUG?? We haven't disabled X events, though,
- # so the user may still click and cause havoc ...
- my $ent = $w->{'ent'};
- my $entCursor = $ent->cget(-cursor);
- my $dlgCursor = $w->cget(-cursor);
- $ent->configure(-cursor => 'watch');
- $w->configure(-cursor => 'watch');
- $w->idletasks;
- my $icons = $w->{'icons'};
- $icons->DeleteAll;
-
- # Make the dir & file list
- my $flt = join('|', split(' ', $w->cget(-filter)) );
- $flt =~ s!([\.\+])!\\$1!g;
- $flt =~ s!\*!.*!g;
- local *FDIR;
- if( opendir( FDIR, _cwd() )) {
- my @files;
- foreach my $f (sort { lc($a) cmp lc($b) } readdir FDIR) {
- next if $f eq '.' or $f eq '..';
- if (-d $f) { $icons->Add($folder, $f); }
- elsif( $f =~ m!$flt$! ) { push( @files, $f ); }
- }
- closedir( FDIR );
- foreach my $f ( @files ) { $icons->Add($file, $f); }
- }
-
- $icons->Arrange;
-
- # Update the Directory: option menu
- my @list;
- my $dir = '';
- foreach my $subdir (TclFileSplit($w->{'selectPath'})) {
- $dir = TclFileJoin($dir, $subdir);
- push @list, $dir;
- }
- my $dirMenu = $w->{'dirMenu'};
- $dirMenu->configure(-options => \@list);
-
- # Restore the PWD to the application's PWD
- ext_chdir($appPWD);
-
- # Restore the Save label
- if ($w->cget(-type) eq 'save') {
- $w->{'okBtn'}->configure(-text => 'Save');
- }
-
- # turn off the busy cursor.
- $ent->configure(-cursor => $entCursor);
- $w->configure(-cursor => $dlgCursor);
-}
-
-# tkFDialog_SetPathSilently --
-#
-# Sets data(selectPath) without invoking the trace procedure
-#
-sub SetPathSilently {
- my($w, $path) = @_;
-
- $w->{'selectPath'} = $path;
-}
-
-# This proc gets called whenever data(selectPath) is set
-#
-sub SetPath {
- my $w = shift;
- $w->{'selectPath'} = $_[0] if @_;
- $w->UpdateWhenIdle;
-}
-
-# This proc gets called whenever data(filter) is set
-#
-sub SetFilter {
- my($w, $title, $filter) = @_;
- $w->configure(-filter => $filter);
- $w->{'typeMenuBtn'}->configure(-text => $title,
- -indicatoron => 1);
- $w->{'icons'}->Subwidget('sbar')->set(0.0, 0.0);
- $w->UpdateWhenIdle;
-}
-
-# tkFDialogResolveFile --
-#
-# Interpret the user's text input in a file selection dialog.
-# Performs:
-#
-# (1) ~ substitution
-# (2) resolve all instances of . and ..
-# (3) check for non-existent files/directories
-# (4) check for chdir permissions
-#
-# Arguments:
-# context: the current directory you are in
-# text: the text entered by the user
-# defaultext: the default extension to add to files with no extension
-#
-# Return value:
-# [list $flag $directory $file]
-#
-# flag = OK : valid input
-# = PATTERN : valid directory/pattern
-# = PATH : the directory does not exist
-# = FILE : the directory exists but the file doesn't
-# exist
-# = CHDIR : Cannot change to the directory
-# = ERROR : Invalid entry
-#
-# directory : valid only if flag = OK or PATTERN or FILE
-# file : valid only if flag = OK or PATTERN
-#
-# directory may not be the same as context, because text may contain
-# a subdirectory name
-#
-sub ResolveFile {
- my($context, $text, $defaultext) = @_;
- my $appPWD = _cwd();
- my $path = JoinFile($context, $text);
- $path = "$path$defaultext" if ($path !~ /\..+$/) and defined $defaultext;
- # Cannot just test for existance here as non-existing files are
- # not an error for getSaveFile type dialogs.
- # return ('ERROR', $path, "") if (!-e $path);
- my($directory, $file, $flag);
- if (-e $path) {
- if (-d $path) {
- if (!ext_chdir($path)) {
- return ('CHDIR', $path, '');
- }
- $directory = _cwd();
- $file = '';
- $flag = 'OK';
- ext_chdir($appPWD);
- } else {
- my $dirname = File::Basename::dirname($path);
- if (!ext_chdir($dirname)) {
- return ('CHDIR', $dirname, '');
- }
- $directory = _cwd();
- $file = File::Basename::basename($path);
- $flag = 'OK';
- ext_chdir($appPWD);
- }
- } else {
- my $dirname = File::Basename::dirname($path);
- if (-e $dirname) {
- if (!ext_chdir($dirname)) {
- return ('CHDIR', $dirname, '');
- }
- $directory = _cwd();
- $file = File::Basename::basename($path);
- if ($file =~ /[*?]/) {
- $flag = 'PATTERN';
- } else {
- $flag = 'FILE';
- }
- ext_chdir($appPWD);
- } else {
- $directory = $dirname;
- $file = File::Basename::basename($path);
- $flag = 'PATH';
- }
- }
- return ($flag,$directory,$file);
-}
-
-# Gets called when the entry box gets keyboard focus. We clear the selection
-# from the icon list . This way the user can be certain that the input in the
-# entry box is the selection.
-#
-sub EntFocusIn {
- my $w = shift;
- my $ent = $w->{'ent'};
- if ($ent->get ne '') {
- $ent->selectionFrom(0);
- $ent->selectionTo('end');
- $ent->icursor('end');
- } else {
- $ent->selectionClear;
- }
- $w->{'icons'}->Unselect;
- my $okBtn = $w->{'okBtn'};
- if ($w->cget(-type) eq 'open') {
- $okBtn->configure(-text => 'Open');
- } else {
- $okBtn->configure(-text => 'Save');
- }
-}
-
-sub EntFocusOut {
- my $w = shift;
- $w->{'ent'}->selectionClear;
-}
-
-# Gets called when user presses Return in the "File name" entry.
-#
-sub ActivateEnt {
- my $w = shift;
- my $ent = $w->{'ent'};
- my $text = $ent->get;
- $text =~ s/^\s+//;
- $text =~ s/\s+$//;
- my($flag, $path, $file) = ResolveFile($w->{'selectPath'}, $text,
- $w->cget(-defaultextension));
- if ($flag eq 'OK') {
- if ($file eq '') {
- # user has entered an existing (sub)directory
- $w->SetPath($path);
- $ent->delete(0, 'end');
- } else {
- $w->SetPathSilently($path);
- $w->{'selectFile'} = $file;
- $w->Done;
- }
- } elsif ($flag eq 'PATTERN') {
- $w->SetPath($path);
- $w->configure(-filter => $file);
- } elsif ($flag eq 'FILE') {
- if ($w->cget(-type) eq 'open') {
- $w->messageBox(-icon => 'warning',
- -type => 'OK',
- -message => 'File "' . TclFileJoin($path, $file)
- . '" does not exist.');
- $ent->selection('from', 0);
- $ent->selection('to', 'end');
- $ent->icursor('end');
- } else {
- $w->SetPathSilently($path);
- $w->{'selectFile'} = $file;
- $w->Done;
- }
- } elsif ($flag eq 'PATH') {
- $w->messageBox(-icon => 'warning',
- -type => 'OK',
- -message => "Directory \'$path\' does not exist.");
- $ent->selection('from', 0);
- $ent->selection('to', 'end');
- $ent->icursor('end');
- } elsif ($flag eq 'CHDIR') {
- $w->messageBox(-type => 'OK',
- -message => "Cannot change to the directory \"$path\".\nPermission denied.",
- -icon => 'warning');
- $ent->selection('from', 0);
- $ent->selection('to', 'end');
- $ent->icursor('end');
- } elsif ($flag eq 'ERROR') {
- $w->messageBox(-type => 'OK',
- -message => "Invalid file name \"$path\".",
- -icon => 'warning');
- $ent->selection('from', 0);
- $ent->selection('to', 'end');
- $ent->icursor('end');
- }
-}
-
-# Gets called when user presses the Alt-s or Alt-o keys.
-#
-sub InvokeBtn {
- my($w, $key) = @_;
- my $okBtn = $w->{'okBtn'};
- $okBtn->invoke if ($okBtn->cget(-text) eq $key);
-}
-
-# Gets called when user presses the "parent directory" button
-#
-sub UpDirCmd {
- my $w = shift;
- $w->SetPath(File::Basename::dirname($w->{'selectPath'}))
- unless ($w->{'selectPath'} eq '/');
-}
-
-# Join a file name to a path name. The "file join" command will break
-# if the filename begins with ~
-sub JoinFile {
- my($path, $file) = @_;
- if ($file =~ /^~/ && -e "$path/$file") {
- TclFileJoin($path, "./$file");
- } else {
- TclFileJoin($path, $file);
- }
-}
-
-# XXX replace with File::Spec when perl/Tk depends on 5.005
-sub TclFileJoin {
- my $path = '';
- foreach (@_) {
- if (m|^/|) {
- $path = $_;
- }
- elsif (m|^[a-z]:/|i) { # DOS-ish
- $path = $_;
- } elsif ($_ eq '~') {
- $path = _get_homedir();
- } elsif (m|^~/(.*)|) {
- $path = _get_homedir() . "/" . $1;
- } elsif (m|^~([^/]+)(.*)|) {
- my($user, $p) = ($1, $2);
- my $dir = _get_homedir($user);
- if (!defined $dir) {
- $path = "~$user$p";
- } else {
- $path = $dir . $p;
- }
- } elsif ($path eq '/' or $path eq '') {
- $path .= $_;
- } else {
- $path .= "/$_";
- }
- }
- $path;
-}
-
-sub TclFileSplit {
- my $path = shift;
- my @comp;
- $path =~ s|/+|/|g; # strip multiple slashes
- if ($path =~ m|^/|) {
- push @comp, '/';
- $path = substr($path, 1);
- }
- push @comp, split /\//, $path;
- @comp;
-}
-
-# Gets called when user presses the "OK" button
-#
-sub OkCmd {
- my $w = shift;
- my $text = $w->{'icons'}->Get;
- if (defined $text and $text ne '') {
- my $file = JoinFile($w->{'selectPath'}, $text);
- if (-d $file) {
- $w->ListInvoke($text);
- return;
- }
- }
- $w->ActivateEnt;
-}
-
-# Gets called when user presses the "Cancel" button
-#
-sub CancelCmd {
- undef $selectFilePath;
-}
-
-# Gets called when user browses the IconList widget (dragging mouse, arrow
-# keys, etc)
-#
-sub ListBrowse {
- my($w, $text) = @_;
- return if ($text eq '');
- my $file = JoinFile($w->{'selectPath'}, $text);
- my $ent = $w->{'ent'};
- my $okBtn = $w->{'okBtn'};
- unless (-d $file) {
- $ent->delete(0, 'end');
- $ent->insert(0, $text);
- if ($w->cget(-type) eq 'open') {
- $okBtn->configure(-text => 'Open');
- } else {
- $okBtn->configure(-text => 'Save');
- }
- } else {
- $okBtn->configure(-text => 'Open');
- }
-}
-
-# Gets called when user invokes the IconList widget (double-click,
-# Return key, etc)
-#
-sub ListInvoke {
- my($w, $text) = @_;
- return if ($text eq '');
- my $file = JoinFile($w->{'selectPath'}, $text);
- if (-d $file) {
- my $appPWD = _cwd();
- if (!ext_chdir($file)) {
- $w->messageBox(-type => 'OK',
- -message => "Cannot change to the directory \"$file\".\nPermission denied.",
- -icon => 'warning');
- } else {
- ext_chdir($appPWD);
- $w->SetPath($file);
- }
- } else {
- $w->{'selectFile'} = $file;
- $w->Done;
- }
-}
-
-# tkFDialog_Done --
-#
-# Gets called when user has input a valid filename. Pops up a
-# dialog box to confirm selection when necessary. Sets the
-# tkPriv(selectFilePath) variable, which will break the "tkwait"
-# loop in tkFDialog and return the selected filename to the
-# script that calls tk_getOpenFile or tk_getSaveFile
-#
-sub Done {
- my $w = shift;
- my $_selectFilePath = (@_) ? shift : '';
- if ($_selectFilePath eq '') {
- $_selectFilePath = JoinFile($w->{'selectPath'}, $w->{'selectFile'});
- if (-e $_selectFilePath and
- $w->cget(-type) eq 'save' and
- !$w->cget(-force)) {
- my $reply = $w->messageBox
- (-icon => 'warning',
- -type => 'YesNo',
- -message => "File \"$_selectFilePath\" already exists.\nDo you want to overwrite it?");
- return unless (lc($reply) eq 'yes');
- }
- }
- $selectFilePath = ($_selectFilePath ne '' ? $_selectFilePath : undef);
-}
-
-sub FDialog {
- my $cmd = shift;
- if ($cmd =~ /Save/) {
- push @_, -type => 'save';
- }
- Tk::DialogWrapper('FBox', $cmd, @_);
-}
-
-# tkFDGetFileTypes --
-#
-# Process the string given by the -filetypes option of the file
-# dialogs. Similar to the C function TkGetFileFilters() on the Mac
-# and Windows platform.
-#
-sub GetFileTypes {
- my $in = shift;
- my %fileTypes;
- foreach my $t (@$in) {
- if (@$t < 2 || @$t > 3) {
- require Carp;
- Carp::croak("bad file type \"$t\", should be \"typeName [extension ?extensions ...?] ?[macType ?macTypes ...?]?\"");
- }
- push @{ $fileTypes{$t->[0]} }, (ref $t->[1] eq 'ARRAY'
- ? @{ $t->[1] }
- : $t->[1]);
- }
-
- my @types;
- my %hasDoneType;
- my %hasGotExt;
- foreach my $t (@$in) {
- my $label = $t->[0];
- my @exts;
-
- next if (exists $hasDoneType{$label});
-
- my $name = "$label (";
- my $sep = '';
- foreach my $ext (@{ $fileTypes{$label} }) {
- next if ($ext eq '');
- $ext =~ s/^\./*./;
- if (!exists $hasGotExt{$label}->{$ext}) {
- $name .= "$sep$ext";
- push @exts, $ext;
- $hasGotExt{$label}->{$ext}++;
- }
- $sep = ',';
- }
- $name .= ')';
- push @types, [$name, \@exts];
-
- $hasDoneType{$label}++;
- }
-
- return @types;
-}
-
-# ext_chdir --
-#
-# Change directory with tilde substitution
-#
-sub ext_chdir {
- my $dir = shift;
- if ($dir eq '~') {
- chdir _get_homedir();
- } elsif ($dir =~ m|^~/(.*)|) {
- chdir _get_homedir() . "/" . $1;
- } elsif ($dir =~ m|^~([^/]+(.*))|) {
- chdir _get_homedir($1) . $2;
- } else {
- chdir $dir;
- }
-}
-
-# _get_homedir --
-#
-# Get home directory of the current user
-#
-sub _get_homedir {
- my($user) = @_;
- if (!defined $user) {
- eval {
- local $SIG{__DIE__};
- (getpwuid($<))[7];
- } || $ENV{HOME} || undef; # chdir undef changes to home directory, too
- } else {
- eval {
- local $SIG{__DIE__};
- (getpwnam($user))[7];
- };
- }
-}
-
-sub _cwd {
- #Cwd::cwd();
- Cwd::fastcwd(); # this is taint-safe
-}
-
-sub _untaint {
- my $s = shift;
- $s =~ /^(.*)$/;
- $1;
-}
-
-1;
-
diff --git a/Master/perltl/site/lib/Tk/Frame.pm b/Master/perltl/site/lib/Tk/Frame.pm
deleted file mode 100644
index b80937b8189..00000000000
--- a/Master/perltl/site/lib/Tk/Frame.pm
+++ /dev/null
@@ -1,373 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::Frame;
-require Tk::Widget;
-require Tk::Derived;
-use AutoLoader;
-use strict qw(vars);
-use Carp;
-
-use base qw(Tk::Derived Tk::Widget);
-
-Construct Tk::Widget 'Frame';
-
-
-use vars qw($VERSION);
-$VERSION = '3.031'; # $Id: //depot/Tk8/Tk/Frame.pm#31 $
-
-sub Tk_cmd { \&Tk::frame }
-
-sub CreateOptions
-{
- return (shift->SUPER::CreateOptions,'-colormap','-visual','-container')
-}
-
-sub Default
-{
- my ($cw,$name,$widget) = @_;
- confess 'No name' unless (defined $name);
- croak 'No widget' unless (defined $widget);
- $cw->Delegates(DEFAULT => $widget);
- $cw->ConfigSpecs(DEFAULT => [$widget]);
- $widget->pack('-expand' => 1, -fill => 'both') unless ($widget->manager); # Suspect
- $cw->Advertise($name,$widget);
-}
-
-sub ConfigDelegate
-{
- my ($cw,$name,@skip) = @_;
- my $sw = $cw->Subwidget($name);
- my $sc;
- my %skip = ();
- foreach $sc (@skip)
- {
- $skip{$sc} = 1;
- }
- foreach $sc ($sw->configure)
- {
- my (@info) = @$sc;
- next if (@info == 2);
- my $option = $info[0];
- unless ($skip{$option})
- {
- $option =~ s/^-(.*)/-$name\u$1/;
- $info[0] = Tk::Configure->new($sw,$info[0]);
- pop(@info);
- $cw->ConfigSpecs($option => \@info);
- }
- }
-}
-
-sub bind
-{my ($cw,@args) = @_;
- $cw->Delegate('bind',@args);
-}
-
-sub menu
-{my ($cw,@args) = @_;
- $cw->Delegate('menu',@args);
-}
-
-sub focus
-{my ($cw,@args) = @_;
- $cw->Delegate('focus',@args);
-}
-
-#sub bindtags
-#{my ($cw,@args) = @_;
-# $cw->Delegate('bindtags',@args);
-#}
-
-sub selection
-{my ($cw,@args) = @_;
- $cw->Delegate('selection',@args);
-}
-
-sub Populate
-{
- my ($cw,$args) = @_;
- $cw->ConfigSpecs('-labelPack' => [ 'METHOD', undef, undef, undef]);
- $cw->ConfigSpecs('-labelVariable' => [ 'METHOD', undef, undef, undef]);
- $cw->ConfigSpecs('-label' => [ 'METHOD', undef, undef, undef]);
- $cw->labelPack([]) if grep /^-label\w+/, keys %$args;
-}
-
-sub Menubar
-{
- my $frame = shift;
- my $menu = $frame->cget('-menu');
- if (defined $menu)
- {
- $menu->configure(@_) if @_;
- }
- else
- {
- $menu = $frame->Menu(-type => 'menubar',@_);
- $frame->configure('-menu' => $menu);
- }
- $frame->Advertise('menubar' => $menu);
- return $menu;
-}
-
-1;
-
-__END__
-
-sub labelPack
-{
- my ($cw,$val) = @_;
- my $w = $cw->Subwidget('label');
- my @result = ();
- if (@_ > 1)
- {
- if (defined($w) && !defined($val))
- {
- $w->packForget;
- }
- elsif (defined($val) && !defined ($w))
- {
- require Tk::Label;
- $w = Tk::Label->new($cw,-textvariable => $cw->labelVariable);
- $cw->Advertise('label' => $w);
- $cw->ConfigDelegate('label',qw(-text -textvariable));
- }
- if (defined($val) && defined($w))
- {
- my %pack = @$val;
- unless (exists $pack{-side})
- {
- $pack{-side} = 'top' unless (exists $pack{-side});
- }
- unless (exists $pack{-fill})
- {
- $pack{-fill} = 'x' if ($pack{-side} =~ /(top|bottom)/);
- $pack{-fill} = 'y' if ($pack{-side} =~ /(left|right)/);
- }
- unless (exists($pack{'-before'}) || exists($pack{'-after'}))
- {
- my $before = ($cw->packSlaves)[0];
- $pack{'-before'} = $before if (defined $before);
- }
- $w->pack(%pack);
- }
- }
- @result = $w->packInfo if (defined $w);
- return (wantarray) ? @result : \@result;
-}
-
-sub labelVariable
-{
- my ($cw,$val) = @_;
- my $var = \$cw->{Configure}{'-labelVariable'};
- if (@_ > 1 && defined $val)
- {
- $$var = $val;
- $$val = '' unless (defined $$val);
- my $w = $cw->Subwidget('label');
- unless (defined $w)
- {
- $cw->labelPack([]);
- $w = $cw->Subwidget('label');
- }
- $w->configure(-textvariable => $val);
- }
- return $$var;
-}
-
-sub label
-{
- my ($cw,$val) = @_;
- my $var = $cw->cget('-labelVariable');
- if (@_ > 1 && defined $val)
- {
- if (!defined $var)
- {
- $var = \$cw->{Configure}{'-label'};
- $cw->labelVariable($var);
- }
- $$var = $val;
- }
- return (defined $var) ? $$var : undef;;
-}
-
-sub queuePack
-{
- my ($cw) = @_;
- unless ($cw->{'pack_pending'})
- {
- $cw->{'pack_pending'} = 1;
- $cw->afterIdle([$cw,'packscrollbars']);
- }
-}
-
-sub sbset
-{
- my ($cw,$sb,$ref,@args) = @_;
- $sb->set(@args);
- $cw->queuePack if (@args == 2 && $sb->Needed != $$ref);
-}
-
-sub freeze_on_map
-{
- my ($w) = @_;
- unless ($w->Tk::bind('Freeze','<Map>'))
- {
- $w->Tk::bind('Freeze','<Map>',['packPropagate' => 0])
- }
- $w->AddBindTag('Freeze');
-}
-
-sub AddScrollbars
-{
- require Tk::Scrollbar;
- my ($cw,$w) = @_;
- my $def = '';
- my ($x,$y) = ('','');
- my $s = 0;
- my $c;
- $cw->freeze_on_map;
- foreach $c ($w->configure)
- {
- my $opt = $c->[0];
- if ($opt eq '-yscrollcommand')
- {
- my $slice = Tk::Frame->new($cw,Name => 'ysbslice');
- my $ysb = Tk::Scrollbar->new($slice,-orient => 'vertical', -command => [ 'yview', $w ]);
- my $size = $ysb->cget('-width');
- my $corner = Tk::Frame->new($slice,Name=>'corner','-relief' => 'raised',
- '-width' => $size, '-height' => $size);
- $ysb->pack(-side => 'left', -fill => 'y');
- $cw->Advertise('yscrollbar' => $ysb);
- $cw->Advertise('corner' => $corner);
- $cw->Advertise('ysbslice' => $slice);
- $corner->{'before'} = $ysb->PathName;
- $slice->{'before'} = $w->PathName;
- $y = 'w';
- $s = 1;
- }
- elsif ($opt eq '-xscrollcommand')
- {
- my $xsb = Tk::Scrollbar->new($cw,-orient => 'horizontal', -command => [ 'xview', $w ]);
- $cw->Advertise('xscrollbar' => $xsb);
- $xsb->{'before'} = $w->PathName;
- $x = 's';
- $s = 1;
- }
- }
- if ($s)
- {
- $cw->Advertise('scrolled' => $w);
- $cw->ConfigSpecs('-scrollbars' => ['METHOD','scrollbars','Scrollbars',$x.$y]);
- }
-}
-
-sub packscrollbars
-{
- my ($cw) = @_;
- my $opt = $cw->cget('-scrollbars');
- my $slice = $cw->Subwidget('ysbslice');
- my $xsb = $cw->Subwidget('xscrollbar');
- my $corner = $cw->Subwidget('corner');
- my $w = $cw->Subwidget('scrolled');
- my $xside = (($opt =~ /n/) ? 'top' : 'bottom');
- my $havex = 0;
- my $havey = 0;
- $opt =~ s/r//;
- $cw->{'pack_pending'} = 0;
- if (defined $slice)
- {
- my $reqy;
- my $ysb = $cw->Subwidget('yscrollbar');
- if ($opt =~ /(o)?[we]/ && (($reqy = !defined($1)) || $ysb->Needed))
- {
- my $yside = (($opt =~ /w/) ? 'left' : 'right');
- $slice->pack(-side => $yside, -fill => 'y',-before => $slice->{'before'});
- $havey = 1;
- if ($reqy)
- {
- $w->configure(-yscrollcommand => ['set', $ysb]);
- }
- else
- {
- $w->configure(-yscrollcommand => ['sbset', $cw, $ysb, \$cw->{'packysb'}]);
- }
- }
- else
- {
- $w->configure(-yscrollcommand => undef) unless $opt =~ s/[we]//;
- $slice->packForget;
- }
- $cw->{'packysb'} = $havey;
- }
- if (defined $xsb)
- {
- my $reqx;
- if ($opt =~ /(o)?[ns]/ && (($reqx = !defined($1)) || $xsb->Needed))
- {
- $xsb->pack(-side => $xside, -fill => 'x',-before => $xsb->{'before'});
- $havex = 1;
- if ($reqx)
- {
- $w->configure(-xscrollcommand => ['set', $xsb]);
- }
- else
- {
- $w->configure(-xscrollcommand => ['sbset', $cw, $xsb, \$cw->{'packxsb'}]);
- }
- }
- else
- {
- $w->configure(-xscrollcommand => undef) unless $opt =~ s/[ns]//;
- $xsb->packForget;
- }
- $cw->{'packxsb'} = $havex;
- }
- if (defined $corner)
- {
- if ($havex && $havey && defined $corner->{'before'})
- {
- my $anchor = $opt;
- $anchor =~ s/o//g;
- $corner->configure(-height => $xsb->ReqHeight);
- $corner->pack(-before => $corner->{'before'}, -side => $xside,
- -anchor => $anchor, -fill => 'x');
- }
- else
- {
- $corner->packForget;
- }
- }
-}
-
-sub scrollbars
-{
- my ($cw,$opt) = @_;
- my $var = \$cw->{'-scrollbars'};
- if (@_ > 1)
- {
- my $old = $$var;
- if (!defined $old || $old ne $opt)
- {
- $$var = $opt;
- $cw->queuePack;
- }
- }
- return $$var;
-}
-
-sub FindMenu
-{
- my ($w,$char) = @_;
- my $child;
- my $match;
- foreach $child ($w->children)
- {
- next unless (ref $child);
- $match = $child->FindMenu($char);
- return $match if (defined $match);
- }
- return undef;
-}
-
-
diff --git a/Master/perltl/site/lib/Tk/IconList.pm b/Master/perltl/site/lib/Tk/IconList.pm
deleted file mode 100644
index 1c83e740887..00000000000
--- a/Master/perltl/site/lib/Tk/IconList.pm
+++ /dev/null
@@ -1,536 +0,0 @@
-# -*- perl -*-
-#
-# tkfbox.tcl --
-#
-# Implements the "TK" standard file selection dialog box. This
-# dialog box is used on the Unix platforms whenever the tk_strictMotif
-# flag is not set.
-#
-# The "TK" standard file selection dialog box is similar to the
-# file selection dialog box on Win95(TM). The user can navigate
-# the directories by clicking on the folder icons or by
-# selectinf the "Directory" option menu. The user can select
-# files by clicking on the file icons or by entering a filename
-# in the "Filename:" entry.
-#
-# Copyright (c) 1994-1996 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# Translated to perk/Tk by Slaven Rezic <eserte@cs.tu-berlin.de>.
-#
-
-#----------------------------------------------------------------------
-#
-# I C O N L I S T
-#
-# This is a pseudo-widget that implements the icon list inside the
-# tkFDialog dialog box.
-#
-#----------------------------------------------------------------------
-# tkIconList --
-#
-# Creates an IconList widget.
-#
-
-package Tk::IconList;
-require Tk::Frame;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '3.005'; # $Id: //depot/Tk8/Tk/IconList.pm#5 $
-
-use base 'Tk::Frame';
-
-Construct Tk::Widget 'IconList';
-
-# tkIconList_Create --
-#
-# Creates an IconList widget by assembling a canvas widget and a
-# scrollbar widget. Sets all the bindings necessary for the IconList's
-# operations.
-#
-sub Populate {
- my($w, $args) = @_;
- $w->SUPER::Populate($args);
-
- my $sbar = $w->Component('Scrollbar' => 'sbar',
- -orient => 'horizontal',
- -highlightthickness => 0,
- -takefocus => 0,
- );
- my $canvas = $w->Component('Canvas' => 'canvas',
- -bd => 2,
- -relief => 'sunken',
- -width => 400,
- -height => 120,
- -takefocus => 1,
- );
- $sbar->pack(-side => 'bottom', -fill => 'x', -padx => 2);
- $canvas->pack(-expand => 'yes', -fill => 'both');
- $sbar->configure(-command => ['xview', $canvas]);
- $canvas->configure(-xscrollcommand => ['set', $sbar]);
-
- # Initializes the max icon/text width and height and other variables
- $w->{'maxIW'} = 1;
- $w->{'maxIH'} = 1;
- $w->{'maxTW'} = 1;
- $w->{'maxTH'} = 1;
- $w->{'numItems'} = 0;
- delete $w->{'curItem'};
- $w->{'noScroll'} = 1;
-
- # Creates the event bindings.
- $canvas->Tk::bind('<Configure>', sub { $w->Arrange } );
- $canvas->Tk::bind('<1>',
- sub {
- my $c = shift;
- my $Ev = $c->XEvent;
- $w->Btn1($Ev->x, $Ev->y);
- }
- );
- $canvas->Tk::bind('<B1-Motion>',
- sub {
- my $c = shift;
- my $Ev = $c->XEvent;
- $w->Motion1($Ev->x, $Ev->y);
- }
- );
- $canvas->Tk::bind('<Double-ButtonRelease-1>',
- sub {
- my $c = shift;
- my $Ev = $c->XEvent;
- $w->Double1($Ev->x,$Ev->y);
- }
- );
- $canvas->Tk::bind('<ButtonRelease-1>', sub { $w->CancelRepeat });
- $canvas->Tk::bind('<B1-Leave>',
- sub {
- my $c = shift;
- my $Ev = $c->XEvent;
- $w->Leave1($Ev->x, $Ev->y);
- }
- );
- $canvas->Tk::bind('<B1-Enter>', sub { $w->CancelRepeat });
- $canvas->Tk::bind('<Up>', sub { $w->UpDown(-1) });
- $canvas->Tk::bind('<Down>', sub { $w->UpDown(1) });
- $canvas->Tk::bind('<Left>', sub { $w->LeftRight(-1) });
- $canvas->Tk::bind('<Right>', sub { $w->LeftRight(1) });
- $canvas->Tk::bind('<Return>', sub { $w->ReturnKey });
- $canvas->Tk::bind('<KeyPress>',
- sub {
- my $c = shift;
- my $Ev = $c->XEvent;
- $w->KeyPress($Ev->A);
- }
- );
- $canvas->Tk::bind('<Control-KeyPress>', 'NoOp');
- $canvas->Tk::bind('<Alt-KeyPress>', 'NoOp');
- $canvas->Tk::bind('<FocusIn>', sub { $w->FocusIn });
-
- $w->ConfigSpecs(-browsecmd =>
- ['CALLBACK', 'browseCommand', 'BrowseCommand', undef],
- -command =>
- ['CALLBACK', 'command', 'Command', undef],
- -font =>
- ['PASSIVE', 'font', 'Font', undef],
- -foreground =>
- ['PASSIVE', 'foreground', 'Foreground', undef],
- -fg => '-foreground',
- );
-
- $w;
-}
-
-# tkIconList_AutoScan --
-#
-# This procedure is invoked when the mouse leaves an entry window
-# with button 1 down. It scrolls the window up, down, left, or
-# right, depending on where the mouse left the window, and reschedules
-# itself as an "after" command so that the window continues to scroll until
-# the mouse moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The IconList window.
-#
-sub AutoScan {
- my $w = shift;
- return unless ($w->exists);
- return if ($w->{'noScroll'});
- my($x, $y);
- $x = $Tk::x;
- $y = $Tk::y;
- my $canvas = $w->Subwidget('canvas');
- if ($x >= $canvas->width) {
- $canvas->xview('scroll', 1, 'units');
- } elsif ($x < 0) {
- $canvas->xview('scroll', -1, 'units');
- } elsif ($y >= $canvas->height) {
- # do nothing
- } elsif ($y < 0) {
- # do nothing
- } else {
- return;
- }
- $w->Motion1($x, $y);
- $w->RepeatId($w->after(50, ['AutoScan', $w]));
-}
-
-# Deletes all the items inside the canvas subwidget and reset the IconList's
-# state.
-#
-sub DeleteAll {
- my $w = shift;
- my $canvas = $w->Subwidget('canvas');
- $canvas->delete('all');
- delete $w->{'selected'};
- delete $w->{'rect'};
- delete $w->{'list'};
- delete $w->{'itemList'};
- $w->{'maxIW'} = 1;
- $w->{'maxIH'} = 1;
- $w->{'maxTW'} = 1;
- $w->{'maxTH'} = 1;
- $w->{'numItems'} = 0;
- delete $w->{'curItem'};
- $w->{'noScroll'} = 1;
- $w->Subwidget('sbar')->set(0.0, 1.0);
- $canvas->xview('moveto', 0);
-}
-
-# Adds an icon into the IconList with the designated image and text
-#
-sub Add {
- my($w, $image, $text) = @_;
- my $canvas = $w->Subwidget('canvas');
- my $iTag = $canvas->createImage(0, 0, -image => $image, -anchor => 'nw');
- my $font = $w->cget(-font);
- my $fg = $w->cget(-foreground);
- my $tTag = $canvas->createText(0, 0, -text => $text, -anchor => 'nw',
- (defined $fg ? (-fill => $fg) : ()),
- (defined $font ? (-font => $font) : ()),
- );
- my $rTag = $canvas->createRectangle(0, 0, 0, 0,
- -fill => undef,
- -outline => undef);
- my(@b) = $canvas->bbox($iTag);
- my $iW = $b[2] - $b[0];
- my $iH = $b[3] - $b[1];
- $w->{'maxIW'} = $iW if ($w->{'maxIW'} < $iW);
- $w->{'maxIH'} = $iH if ($w->{'maxIH'} < $iH);
- @b = $canvas->bbox($tTag);
- my $tW = $b[2] - $b[0];
- my $tH = $b[3] - $b[1];
- $w->{'maxTW'} = $tW if ($w->{'maxTW'} < $tW);
- $w->{'maxTH'} = $tH if ($w->{'maxTH'} < $tH);
- push @{ $w->{'list'} }, [$iTag, $tTag, $rTag, $iW, $iH, $tW, $tH,
- $w->{'numItems'}];
- $w->{'itemList'}{$rTag} = [$iTag, $tTag, $text, $w->{'numItems'}];
- $w->{'textList'}{$w->{'numItems'}} = lc($text);
- ++$w->{'numItems'};
-}
-
-# Places the icons in a column-major arrangement.
-#
-sub Arrange {
- my $w = shift;
- my $canvas = $w->Subwidget('canvas');
- my $sbar = $w->Subwidget('sbar');
- unless (exists $w->{'list'}) {
- if (defined $canvas && Tk::Exists($canvas)) {
- $w->{'noScroll'} = 1;
- $sbar->configure(-command => sub { });
- }
- return;
- }
-
- my $W = $canvas->width;
- my $H = $canvas->height;
- my $pad = $canvas->cget(-highlightthickness) + $canvas->cget(-bd);
- $pad = 2 if ($pad < 2);
- $W -= $pad*2;
- $H -= $pad*2;
- my $dx = $w->{'maxIW'} + $w->{'maxTW'} + 8;
- my $dy;
- if ($w->{'maxTH'} > $w->{'maxIH'}) {
- $dy = $w->{'maxTH'};
- } else {
- $dy = $w->{'maxIH'};
- }
- $dy += 2;
- my $shift = $w->{'maxIW'} + 4;
- my $x = $pad * 2;
- my $y = $pad;
- my $usedColumn = 0;
- foreach my $sublist (@{ $w->{'list'} }) {
- $usedColumn = 1;
- my($iTag, $tTag, $rTag, $iW, $iH, $tW, $tH) = @$sublist;
- my $i_dy = ($dy - $iH) / 2;
- my $t_dy = ($dy - $tH) / 2;
- $canvas->coords($iTag, $x, $y + $i_dy);
- $canvas->coords($tTag, $x + $shift, $y + $t_dy);
- $canvas->coords($tTag, $x + $shift, $y + $t_dy);
- $canvas->coords($rTag, $x, $y, $x + $dx, $y + $dy);
- $y += $dy;
- if ($y + $dy > $H) {
- $y = $pad;
- $x += $dx;
- $usedColumn = 0;
- }
- }
- my $sW;
- if ($usedColumn) {
- $sW = $x + $dx;
- } else {
- $sW = $x;
- }
- if ($sW < $W) {
- $canvas->configure(-scrollregion => [$pad, $pad, $sW, $H]);
- $sbar->configure(-command => sub { });
- $canvas->xview(moveto => 0);
- $w->{'noScroll'} = 1;
- } else {
- $canvas->configure(-scrollregion => [$pad, $pad, $sW, $H]);
- $sbar->configure(-command => ['xview', $canvas]);
- $w->{'noScroll'} = 0;
- }
- $w->{'itemsPerColumn'} = ($H - $pad) / $dy;
- $w->{'itemsPerColumn'} = 1 if ($w->{'itemsPerColumn'} < 1);
- $w->Select($w->{'list'}[$w->{'curItem'}][2], 0)
- if (exists $w->{'curItem'});
-}
-
-# Gets called when the user invokes the IconList (usually by double-clicking
-# or pressing the Return key).
-#
-sub Invoke {
- my $w = shift;
- $w->Callback(-command => $w->{'selected'}) if (exists $w->{'selected'});
-}
-
-# tkIconList_See --
-#
-# If the item is not (completely) visible, scroll the canvas so that
-# it becomes visible.
-sub See {
- my($w, $rTag) = @_;
- return if ($w->{'noScroll'});
- return unless (exists $w->{'itemList'}{$rTag});
- my $canvas = $w->Subwidget('canvas');
- my(@sRegion) = @{ $canvas->cget('-scrollregion') };
- return unless (@sRegion);
- my(@bbox) = $canvas->bbox($rTag);
- my $pad = $canvas->cget(-highlightthickness) + $canvas->cget(-bd);
- my $x1 = $bbox[0];
- my $x2 = $bbox[2];
- $x1 -= $pad * 2;
- $x2 -= $pad;
- my $cW = $canvas->width - $pad * 2;
- my $scrollW = $sRegion[2] - $sRegion[0] + 1;
- my $dispX = int(($canvas->xview)[0] * $scrollW);
- my $oldDispX = $dispX;
- # check if out of the right edge
- $dispX = $x2 - $cW if ($x2 - $dispX >= $cW);
- # check if out of the left edge
- $dispX = $x1 if ($x1 - $dispX < 0);
- if ($oldDispX != $dispX) {
- my $fraction = $dispX / $scrollW;
- $canvas->xview('moveto', $fraction);
- }
-}
-
-sub SelectAtXY {
- my($w, $x, $y) = @_;
- my $canvas = $w->Subwidget('canvas');
- $w->Select($canvas->find('closest',
- $canvas->canvasx($x),
- $canvas->canvasy($y)));
-}
-
-sub Select {
- my $w = shift;
- my $rTag = shift;
- my $callBrowse = (@_ ? shift : 1);
- return unless (exists $w->{'itemList'}{$rTag});
- my($iTag, $tTag, $text, $serial) = @{ $w->{'itemList'}{$rTag} };
- my $canvas = $w->Subwidget('canvas');
- $w->{'rect'} = $canvas->createRectangle(0, 0, 0, 0, -fill => '#a0a0ff',
- -outline => '#a0a0ff')
- unless (exists $w->{'rect'});
- $canvas->lower($w->{'rect'});
- my(@bbox) = $canvas->bbox($tTag);
- $canvas->coords($w->{'rect'}, @bbox);
- $w->{'curItem'} = $serial;
- $w->{'selected'} = $text;
- if ($callBrowse) {
- $w->Callback(-browsecmd => $text);
- }
-}
-
-sub Unselect {
- my $w = shift;
- my $canvas = $w->Subwidget('canvas');
- if (exists $w->{'rect'}) {
- $canvas->delete($w->{'rect'});
- delete $w->{'rect'};
- }
- delete $w->{'selected'} if (exists $w->{'selected'});
- delete $w->{'curItem'};
-}
-
-# Returns the selected item
-#
-sub Get {
- my $w = shift;
- if (exists $w->{'selected'}) {
- $w->{'selected'};
- } else {
- undef;
- }
-}
-
-sub Btn1 {
- my($w, $x, $y) = @_;
- $w->Subwidget('canvas')->focus;
- $w->SelectAtXY($x, $y);
-}
-
-# Gets called on button-1 motions
-#
-sub Motion1 {
- my($w, $x, $y) = @_;
- $Tk::x = $x;
- $Tk::y = $y;
- $w->SelectAtXY($x, $y);
-}
-
-sub Double1 {
- my($w, $x, $y) = @_;
- $w->Invoke if (exists $w->{'curItem'});
-}
-
-sub ReturnKey {
- my $w = shift;
- $w->Invoke;
-}
-
-sub Leave1 {
- my($w, $x, $y) = @_;
- $Tk::x = $x;
- $Tk::y = $y;
- $w->AutoScan;
-}
-
-sub FocusIn {
- my $w = shift;
- return unless (exists $w->{'list'});
- unless (exists $w->{'curItem'}) {
- my $rTag = $w->{'list'}[0][2];
- $w->Select($rTag);
- }
-}
-
-# tkIconList_UpDown --
-#
-# Moves the active element up or down by one element
-#
-# Arguments:
-# w - The IconList widget.
-# amount - +1 to move down one item, -1 to move back one item.
-#
-sub UpDown {
- my($w, $amount) = @_;
- my $rTag;
- return unless (exists $w->{'list'});
- unless (exists $w->{'curItem'}) {
- $rTag = $w->{'list'}[0][2];
- } else {
- my $oldRTag = $w->{'list'}[$w->{'curItem'}][2];
- $rTag = $w->{'list'}[($w->{'curItem'} + $amount)][2];
- $rTag = $oldRTag unless defined $rTag;
- }
- if (defined $rTag) {
- $w->Select($rTag);
- $w->See($rTag);
- }
-}
-
-# tkIconList_LeftRight --
-#
-# Moves the active element left or right by one column
-#
-# Arguments:
-# w - The IconList widget.
-# amount - +1 to move right one column, -1 to move left one column.
-#
-sub LeftRight {
- my($w, $amount) = @_;
- my $rTag;
- return unless (exists $w->{'list'});
- unless (exists $w->{'curItem'}) {
- $rTag = $w->{'list'}[0][2];
- } else {
- my $oldRTag = $w->{'list'}[$w->{'curItem'}][2];
- my $newItem = $w->{'curItem'} + $amount * $w->{'itemsPerColumn'};
- $rTag = $w->{'list'}[$newItem][2];
- $rTag = $oldRTag unless (defined $rTag);
- }
- if (defined $rTag) {
- $w->Select($rTag);
- $w->See($rTag);
- }
-}
-
-#----------------------------------------------------------------------
-# Accelerator key bindings
-#----------------------------------------------------------------------
-# tkIconList_KeyPress --
-#
-# Gets called when user enters an arbitrary key in the listbox.
-#
-sub KeyPress {
- my($w, $key) = @_;
- $w->{'_ILAccel'} .= $key;
- $w->Goto($w->{'_ILAccel'});
- eval {
- $w->afterCancel($w->{'_ILAccel_afterid'});
- };
- $w->{'_ILAccel_afterid'} = $w->after(500, ['Reset', $w]);
-}
-
-sub Goto {
- my($w, $text) = @_;
- return unless (exists $w->{'list'});
- return if (not defined $text or $text eq '');
- my $start = (!exists $w->{'curItem'} ? 0 : $w->{'curItem'});
- $text = lc($text);
- my $theIndex = -1;
- my $less = 0;
- my $len = length($text);
- my $i = $start;
- # Search forward until we find a filename whose prefix is an exact match
- # with $text
- while (1) {
- my $sub = substr($w->{'textList'}{$i}, 0, $len);
- if ($text eq $sub) {
- $theIndex = $i;
- last;
- }
- ++$i;
- $i = 0 if ($i == $w->{'numItems'});
- last if ($i == $start);
- }
- if ($theIndex > -1) {
- my $rTag = $w->{'list'}[$theIndex][2];
- $w->Select($rTag, 0);
- $w->See($rTag);
- }
-}
-
-sub Reset {
- my $w = shift;
- undef $w->{'_ILAccel'};
-}
-
-1;
diff --git a/Master/perltl/site/lib/Tk/Image.pm b/Master/perltl/site/lib/Tk/Image.pm
deleted file mode 100644
index f6d6634c05b..00000000000
--- a/Master/perltl/site/lib/Tk/Image.pm
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::Image;
-
-# This module does for images what Tk::Widget does for widgets:
-# provides a base class for them to inherit from.
-require DynaLoader;
-
-use base qw(DynaLoader Tk); # but are they ?
-
-use vars qw($VERSION);
-$VERSION = '3.014'; # $Id: //depot/Tk8/Tk/Image.pm#14 $
-
-sub new
-{
- my $package = shift;
- my $widget = shift;
- $package->InitClass($widget);
- my $leaf = $package->Tk_image;
- my $obj = $widget->Tk::image('create',$leaf,@_);
- return bless $obj,$package;
-}
-
-sub Install
-{
- # Dynamically loaded image types can install standard images here
- my ($class,$mw) = @_;
-}
-
-sub ClassInit
-{
- # Carry out class bindings (or whatever)
- my ($package,$mw) = @_;
- return $package;
-}
-
-require Tk::Submethods;
-
-Direct Tk::Submethods ('image' => [qw(delete width height type)]);
-
-sub Tk::Widget::imageNames
-{
- my $w = shift;
- $w->image('names',@_);
-}
-
-sub Tk::Widget::imageTypes
-{
- my $w = shift;
- map("\u$_",$w->image('types',@_));
-}
-
-sub Construct
-{
- my ($base,$name) = @_;
- my $class = (caller(0))[0];
-
- # Hack for broken ->isa in perl5.6.0
- delete ${"$class\::"}{'::ISA::CACHE::'} if $] == 5.006;
-
- *{"Tk::Widget::$name"} = sub { $class->new(@_) };
-}
-
-# This is here to prevent AUTOLOAD trying to find it.
-sub DESTROY
-{
- my $i = shift;
- # maybe do image delete ???
-}
-
-
-1;
diff --git a/Master/perltl/site/lib/Tk/Label.pm b/Master/perltl/site/lib/Tk/Label.pm
deleted file mode 100644
index e320e193846..00000000000
--- a/Master/perltl/site/lib/Tk/Label.pm
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 1995-1999 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.
-
-package Tk::Label;
-require Tk;
-
-
-use vars qw($VERSION);
-$VERSION = '3.011'; # $Id: //depot/Tk8/Tk/Label.pm#11 $
-
-use base qw(Tk::Widget);
-
-Construct Tk::Widget 'Label';
-
-sub Tk_cmd { \&Tk::label }
-
-1;
-
-
-
diff --git a/Master/perltl/site/lib/Tk/Listbox.pm b/Master/perltl/site/lib/Tk/Listbox.pm
deleted file mode 100644
index 0dd86c1ef2e..00000000000
--- a/Master/perltl/site/lib/Tk/Listbox.pm
+++ /dev/null
@@ -1,856 +0,0 @@
-# Converted from listbox.tcl --
-#
-# This file defines the default bindings for Tk listbox widgets.
-#
-# @(#) listbox.tcl 1.7 94/12/17 16:05:18
-#
-# Copyright (c) 1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-# Modifications from standard Listbox.pm
-# --------------------------------------
-# 27-JAN-2001 Alasdair Allan
-# Modified for local use by adding tied scalar and arrays
-# Implemented TIESCALAR, TIEARRAY, FETCH, FETCHSIZE, STORE, CLEAR & EXTEND
-# 31-JAN-2001 Alasdair Allan
-# Made changes suggested by Tim Jenness
-# 03-FEB-2001 Alasdair Allan
-# Modified STORE for tied scalars to clear and select elements
-# 06-FEB-2001 Alasdair Allan
-# Added POD documentation for tied listbox
-# 13-FEB-2001 Alasdair Allan
-# Implemented EXISTS, DELETE, PUSH, POP, SHIFT & UNSHIFT for tied arrays
-# 14-FEB-2001 Alasdair Allan
-# Implemented SPLICE for tied arrays, all tied functionality in place
-# 16-FEB-2001 Alasdair Allan
-# Tweak to STORE interface for tied scalars
-# 23-FEB-2001 Alasdair Allan
-# Added flag to FETCH for tied scalars, modified to return hashes
-# 24-FEB-2001 Alasdair Allan
-# Updated Pod documentation
-#
-
-package Tk::Listbox;
-
-use vars qw($VERSION);
-$VERSION = '3.033'; # $Id: //depot/Tk8/Listbox/Listbox.pm#33 $
-
-use Tk qw(Ev $XS_VERSION);
-use Tk::Clipboard ();
-use AutoLoader;
-
-use base qw(Tk::Clipboard Tk::Widget);
-
-Construct Tk::Widget 'Listbox';
-
-bootstrap Tk::Listbox;
-
-sub Tk_cmd { \&Tk::listbox }
-
-Tk::Methods('activate','bbox','curselection','delete','get','index',
- 'insert','nearest','scan','see','selection','size',
- 'xview','yview');
-
-use Tk::Submethods ( 'selection' => [qw(anchor clear includes set)],
- 'scan' => [qw(mark dragto)],
- 'xview' => [qw(moveto scroll)],
- 'yview' => [qw(moveto scroll)],
- );
-
-*Getselected = \&getSelected;
-
-sub clipEvents
-{
- return qw[Copy];
-}
-
-sub BalloonInfo
-{
- my ($listbox,$balloon,$X,$Y,@opt) = @_;
- my $e = $listbox->XEvent;
- my $index = $listbox->index('@' . $e->x . ',' . $e->y);
- foreach my $opt (@opt)
- {
- my $info = $balloon->GetOption($opt,$listbox);
- if ($opt =~ /^-(statusmsg|balloonmsg)$/ && UNIVERSAL::isa($info,'ARRAY'))
- {
- $balloon->Subclient($index);
- if (defined $info->[$index])
- {
- return $info->[$index];
- }
- return '';
- }
- return $info;
- }
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $class->SUPER::ClassInit($mw);
- # Standard Motif bindings:
- $mw->bind($class,'<1>',['BeginSelect',Ev('index',Ev('@'))]);
- $mw->bind($class,'<B1-Motion>',['Motion',Ev('index',Ev('@'))]);
- $mw->bind($class,'<ButtonRelease-1>','ButtonRelease_1');
- ;
- $mw->bind($class,'<Shift-1>',['BeginExtend',Ev('index',Ev('@'))]);
- $mw->bind($class,'<Control-1>',['BeginToggle',Ev('index',Ev('@'))]);
-
- $mw->bind($class,'<B1-Leave>',['AutoScan',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B1-Enter>','CancelRepeat');
- $mw->bind($class,'<Up>',['UpDown',-1]);
- $mw->bind($class,'<Shift-Up>',['ExtendUpDown',-1]);
- $mw->bind($class,'<Down>',['UpDown',1]);
- $mw->bind($class,'<Shift-Down>',['ExtendUpDown',1]);
-
- $mw->XscrollBind($class);
- $mw->PriorNextBind($class);
-
- $mw->bind($class,'<Control-Home>','Cntrl_Home');
- ;
- $mw->bind($class,'<Shift-Control-Home>',['DataExtend',0]);
- $mw->bind($class,'<Control-End>','Cntrl_End');
- ;
- $mw->bind($class,'<Shift-Control-End>',['DataExtend','end']);
- # $class->clipboardOperations($mw,'Copy');
- $mw->bind($class,'<space>',['BeginSelect',Ev('index','active')]);
- $mw->bind($class,'<Select>',['BeginSelect',Ev('index','active')]);
- $mw->bind($class,'<Control-Shift-space>',['BeginExtend',Ev('index','active')]);
- $mw->bind($class,'<Shift-Select>',['BeginExtend',Ev('index','active')]);
- $mw->bind($class,'<Escape>','Cancel');
- $mw->bind($class,'<Control-slash>','SelectAll');
- $mw->bind($class,'<Control-backslash>','Cntrl_backslash');
- ;
- # Additional Tk bindings that aren't part of the Motif look and feel:
- $mw->bind($class,'<2>',['scan','mark',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B2-Motion>',['scan','dragto',Ev('x'),Ev('y')]);
- return $class;
-}
-
-
-
-sub TIEARRAY {
- my ( $class, $obj, %options ) = @_;
- return bless {
- OBJECT => \$obj,
- OPTION => \%options }, $class;
-}
-
-
-
-sub TIESCALAR {
- my ( $class, $obj, %options ) = @_;
- return bless {
- OBJECT => \$obj,
- OPTION => \%options }, $class;
-}
-
-# FETCH
-# -----
-# Return either the full contents or only the selected items in the
-# box depending on whether we tied it to an array or scalar respectively
-sub FETCH {
- my $class = shift;
-
- my $self = ${$class->{OBJECT}};
- my %options = %{$class->{OPTION}} if defined $class->{OPTION};;
-
- # Define the return variable
- my $result;
-
- # Check whether we are have a tied array or scalar quantity
- if ( @_ ) {
- my $i = shift;
- # The Tk:: Listbox has been tied to an array, we are returning
- # an array list of the current items in the Listbox
- $result = $self->get($i);
- } else {
- # The Tk::Listbox has been tied to a scalar, we are returning a
- # reference to an array or hash containing the currently selected items
- my ( @array, %hash );
-
- if ( defined $options{ReturnType} ) {
-
- # THREE-WAY SWITCH
- if ( $options{ReturnType} eq "index" ) {
- $result = [$self->curselection];
- } elsif ( $options{ReturnType} eq "element" ) {
- foreach my $selection ( $self->curselection ) {
- push(@array,$self->get($selection)); }
- $result = \@array;
- } elsif ( $options{ReturnType} eq "both" ) {
- foreach my $selection ( $self->curselection ) {
- %hash = ( %hash, $selection => $self->get($selection)); }
- $result = \%hash;
- }
- } else {
- # return elements (default)
- foreach my $selection ( $self->curselection ) {
- push(@array,$self->get($selection)); }
- $result = \@array;
- }
- }
- return $result;
-}
-
-# FETCHSIZE
-# ---------
-# Return the number of elements in the Listbox when tied to an array
-sub FETCHSIZE {
- my $class = shift;
- return ${$class->{OBJECT}}->size();
-}
-
-# STORE
-# -----
-# If tied to an array we will modify the Listbox contents, while if tied
-# to a scalar we will select and clear elements.
-sub STORE {
-
- if ( scalar(@_) == 2 ) {
- # we have a tied scalar
- my ( $class, $selected ) = @_;
- my $self = ${$class->{OBJECT}};
- my %options = %{$class->{OPTION}} if defined $class->{OPTION};;
-
- # clear currently selected elements
- $self->selectionClear(0,'end');
-
- # set selected elements
- if ( defined $options{ReturnType} ) {
-
- # THREE-WAY SWITCH
- if ( $options{ReturnType} eq "index" ) {
- for ( my $i=0; $i < scalar(@$selected) ; $i++ ) {
- for ( my $j=0; $j < $self->size() ; $j++ ) {
- if( $j == $$selected[$i] ) {
- $self->selectionSet($j); last; }
- }
- }
- } elsif ( $options{ReturnType} eq "element" ) {
- for ( my $k=0; $k < scalar(@$selected) ; $k++ ) {
- for ( my $l=0; $l < $self->size() ; $l++ ) {
- if( $self->get($l) eq $$selected[$k] ) {
- $self->selectionSet($l); last; }
- }
- }
- } elsif ( $options{ReturnType} eq "both" ) {
- foreach my $key ( keys %$selected ) {
- $self->selectionSet($key)
- if $$selected{$key} eq $self->get($key);
- }
- }
- } else {
- # return elements (default)
- for ( my $k=0; $k < scalar(@$selected) ; $k++ ) {
- for ( my $l=0; $l < $self->size() ; $l++ ) {
- if( $self->get($l) eq $$selected[$k] ) {
- $self->selectionSet($l); last; }
- }
- }
- }
-
- } else {
- # we have a tied array
- my ( $class, $index, $value ) = @_;
- my $self = ${$class->{OBJECT}};
-
- # check size of current contents list
- my $sizeof = $self->size();
-
- if ( $index <= $sizeof ) {
- # Change a current listbox entry
- $self->delete($index);
- $self->insert($index, $value);
- } else {
- # Add a new value
- if ( defined $index ) {
- $self->insert($index, $value);
- } else {
- $self->insert("end", $value);
- }
- }
- }
-}
-
-# CLEAR
-# -----
-# Empty the Listbox of contents if tied to an array
-sub CLEAR {
- my $class = shift;
- ${$class->{OBJECT}}->delete(0, 'end');
-}
-
-# EXTEND
-# ------
-# Do nothing and be happy about it
-sub EXTEND { }
-
-# PUSH
-# ----
-# Append elements onto the Listbox contents
-sub PUSH {
- my ( $class, @list ) = @_;
- ${$class->{OBJECT}}->insert('end', @list);
-}
-
-# POP
-# ---
-# Remove last element of the array and return it
-sub POP {
- my $class = shift;
-
- my $value = ${$class->{OBJECT}}->get('end');
- ${$class->{OBJECT}}->delete('end');
- return $value;
-}
-
-# SHIFT
-# -----
-# Removes the first element and returns it
-sub SHIFT {
- my $class = shift;
-
- my $value = ${$class->{OBJECT}}->get(0);
- ${$class->{OBJECT}}->delete(0);
- return $value
-}
-
-# UNSHIFT
-# -------
-# Insert elements at the beginning of the Listbox
-sub UNSHIFT {
- my ( $class, @list ) = @_;
- ${$class->{OBJECT}}->insert(0, @list);
-}
-
-# DELETE
-# ------
-# Delete element at specified index
-sub DELETE {
- my ( $class, @list ) = @_;
-
- my $value = ${$class->{OBJECT}}->get(@list);
- ${$class->{OBJECT}}->delete(@list);
- return $value;
-}
-
-# EXISTS
-# ------
-# Returns true if the index exist, and undef if not
-sub EXISTS {
- my ( $class, $index ) = @_;
- return undef unless ${$class->{OBJECT}}->get($index);
-}
-
-# SPLICE
-# ------
-# Performs equivalent of splice on the listbox contents
-sub SPLICE {
- my $class = shift;
-
- my $self = ${$class->{OBJECT}};
-
- # check for arguments
- my @elements;
- if ( scalar(@_) == 0 ) {
- # none
- @elements = $self->get(0,'end');
- $self->delete(0,'end');
- return wantarray ? @elements : $elements[scalar(@elements)-1];;
-
- } elsif ( scalar(@_) == 1 ) {
- # $offset
- my ( $offset ) = @_;
- if ( $offset < 0 ) {
- my $start = $self->size() + $offset;
- if ( $start > 0 ) {
- @elements = $self->get($start,'end');
- $self->delete($start,'end');
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- } else {
- return undef;
- }
- } else {
- @elements = $self->get($offset,'end');
- $self->delete($offset,'end');
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- }
-
- } elsif ( scalar(@_) == 2 ) {
- # $offset and $length
- my ( $offset, $length ) = @_;
- if ( $offset < 0 ) {
- my $start = $self->size() + $offset;
- my $end = $self->size() + $offset + $length - 1;
- if ( $start > 0 ) {
- @elements = $self->get($start,$end);
- $self->delete($start,$end);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- } else {
- return undef;
- }
- } else {
- @elements = $self->get($offset,$offset+$length-1);
- $self->delete($offset,$offset+$length-1);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- }
-
- } else {
- # $offset, $length and @list
- my ( $offset, $length, @list ) = @_;
- if ( $offset < 0 ) {
- my $start = $self->size() + $offset;
- my $end = $self->size() + $offset + $length - 1;
- if ( $start > 0 ) {
- @elements = $self->get($start,$end);
- $self->delete($start,$end);
- $self->insert($start,@list);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- } else {
- return undef;
- }
- } else {
- @elements = $self->get($offset,$offset+$length-1);
- $self->delete($offset,$offset+$length-1);
- $self->insert($offset,@list);
- return wantarray ? @elements : $elements[scalar(@elements)-1];
- }
- }
-}
-
-# ----
-
-1;
-__END__
-
-#
-# Bind --
-# This procedure is invoked the first time the mouse enters a listbox
-# widget or a listbox widget receives the input focus. It creates
-# all of the class bindings for listboxes.
-#
-# Arguments:
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-
-sub xyIndex
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- return $w->index($Ev->xy);
-}
-
-sub ButtonRelease_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->CancelRepeat;
- $w->activate($Ev->xy);
-}
-
-
-sub Cntrl_Home
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->activate(0);
- $w->see(0);
- $w->selectionClear(0,'end');
- $w->selectionSet(0)
-}
-
-
-sub Cntrl_End
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->activate('end');
- $w->see('end');
- $w->selectionClear(0,'end');
- $w->selectionSet('end')
-}
-
-
-sub Cntrl_backslash
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- if ($w->cget('-selectmode') ne 'browse')
- {
- $w->selectionClear(0,'end');
- }
-}
-
-# BeginSelect --
-#
-# This procedure is typically invoked on button-1 presses. It begins
-# the process of making a selection in the listbox. Its exact behavior
-# depends on the selection mode currently in effect for the listbox;
-# see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginSelect
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'multiple')
- {
- if ($w->selectionIncludes($el))
- {
- $w->selectionClear($el)
- }
- else
- {
- $w->selectionSet($el)
- }
- }
- else
- {
- $w->selectionClear(0,'end');
- $w->selectionSet($el);
- $w->selectionAnchor($el);
- @Selection = ();
- $Prev = $el
- }
- $w->focus if ($w->cget('-takefocus'));
-}
-# Motion --
-#
-# This procedure is called to process mouse motion events while
-# button 1 is down. It may move or extend the selection, depending
-# on the listbox's selection mode.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element under the pointer (must be a number).
-sub Motion
-{
- my $w = shift;
- my $el = shift;
- if (defined($Prev) && $el == $Prev)
- {
- return;
- }
- $anchor = $w->index('anchor');
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet($el);
- $Prev = $el;
- }
- elsif ($mode eq 'extended')
- {
- $i = $Prev;
- if ($w->selectionIncludes('anchor'))
- {
- $w->selectionClear($i,$el);
- $w->selectionSet('anchor',$el)
- }
- else
- {
- $w->selectionClear($i,$el);
- $w->selectionClear('anchor',$el)
- }
- while ($i < $el && $i < $anchor)
- {
- if (Tk::lsearch(\@Selection,$i) >= 0)
- {
- $w->selectionSet($i)
- }
- $i += 1
- }
- while ($i > $el && $i > $anchor)
- {
- if (Tk::lsearch(\@Selection,$i) >= 0)
- {
- $w->selectionSet($i)
- }
- $i += -1
- }
- $Prev = $el
- }
-}
-# BeginExtend --
-#
-# This procedure is typically invoked on shift-button-1 presses. It
-# begins the process of extending a selection in the listbox. Its
-# exact behavior depends on the selection mode currently in effect
-# for the listbox; see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginExtend
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'extended' && $w->selectionIncludes('anchor'))
- {
- $w->Motion($el)
- }
-}
-# BeginToggle --
-#
-# This procedure is typically invoked on control-button-1 presses. It
-# begins the process of toggling a selection in the listbox. Its
-# exact behavior depends on the selection mode currently in effect
-# for the listbox; see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginToggle
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'extended')
- {
- @Selection = $w->curselection();
- $Prev = $el;
- $w->selectionAnchor($el);
- if ($w->selectionIncludes($el))
- {
- $w->selectionClear($el)
- }
- else
- {
- $w->selectionSet($el)
- }
- }
-}
-# AutoScan --
-# This procedure is invoked when the mouse leaves an entry window
-# with button 1 down. It scrolls the window up, down, left, or
-# right, depending on where the mouse left the window, and reschedules
-# itself as an "after" command so that the window continues to scroll until
-# the mouse moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The entry window.
-# x - The x-coordinate of the mouse when it left the window.
-# y - The y-coordinate of the mouse when it left the window.
-sub AutoScan
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- if ($y >= $w->height)
- {
- $w->yview('scroll',1,'units')
- }
- elsif ($y < 0)
- {
- $w->yview('scroll',-1,'units')
- }
- elsif ($x >= $w->width)
- {
- $w->xview('scroll',2,'units')
- }
- elsif ($x < 0)
- {
- $w->xview('scroll',-2,'units')
- }
- else
- {
- return;
- }
- $w->Motion($w->index("@" . $x . ',' . $y));
- $w->RepeatId($w->after(50,'AutoScan',$w,$x,$y));
-}
-# UpDown --
-#
-# Moves the location cursor (active element) up or down by one element,
-# and changes the selection if we're in browse or extended selection
-# mode.
-#
-# Arguments:
-# w - The listbox widget.
-# amount - +1 to move down one item, -1 to move back one item.
-sub UpDown
-{
- my $w = shift;
- my $amount = shift;
- $w->activate($w->index('active')+$amount);
- $w->see('active');
- $LNet__0 = $w->cget('-selectmode');
- if ($LNet__0 eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active')
- }
- elsif ($LNet__0 eq 'extended')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active');
- $w->selectionAnchor('active');
- $Prev = $w->index('active');
- @Selection = ();
- }
-}
-# ExtendUpDown --
-#
-# Does nothing unless we're in extended selection mode; in this
-# case it moves the location cursor (active element) up or down by
-# one element, and extends the selection to that point.
-#
-# Arguments:
-# w - The listbox widget.
-# amount - +1 to move down one item, -1 to move back one item.
-sub ExtendUpDown
-{
- my $w = shift;
- my $amount = shift;
- if ($w->cget('-selectmode') ne 'extended')
- {
- return;
- }
- $w->activate($w->index('active')+$amount);
- $w->see('active');
- $w->Motion($w->index('active'))
-}
-# DataExtend
-#
-# This procedure is called for key-presses such as Shift-KEndData.
-# If the selection mode isn't multiple or extend then it does nothing.
-# Otherwise it moves the active element to el and, if we're in
-# extended mode, extends the selection to that point.
-#
-# Arguments:
-# w - The listbox widget.
-# el - An integer element number.
-sub DataExtend
-{
- my $w = shift;
- my $el = shift;
- $mode = $w->cget('-selectmode');
- if ($mode eq 'extended')
- {
- $w->activate($el);
- $w->see($el);
- if ($w->selectionIncludes('anchor'))
- {
- $w->Motion($el)
- }
- }
- elsif ($mode eq 'multiple')
- {
- $w->activate($el);
- $w->see($el)
- }
-}
-# Cancel
-#
-# This procedure is invoked to cancel an extended selection in
-# progress. If there is an extended selection in progress, it
-# restores all of the items between the active one and the anchor
-# to their previous selection state.
-#
-# Arguments:
-# w - The listbox widget.
-sub Cancel
-{
- my $w = shift;
- if ($w->cget('-selectmode') ne 'extended' || !defined $Prev)
- {
- return;
- }
- $first = $w->index('anchor');
- $last = $Prev;
- if ($first > $last)
- {
- $tmp = $first;
- $first = $last;
- $last = $tmp
- }
- $w->selectionClear($first,$last);
- while ($first <= $last)
- {
- if (Tk::lsearch(\@Selection,$first) >= 0)
- {
- $w->selectionSet($first)
- }
- $first += 1
- }
-}
-# SelectAll
-#
-# This procedure is invoked to handle the "select all" operation.
-# For single and browse mode, it just selects the active element.
-# Otherwise it selects everything in the widget.
-#
-# Arguments:
-# w - The listbox widget.
-sub SelectAll
-{
- my $w = shift;
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'single' || $mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active')
- }
- else
- {
- $w->selectionSet(0,'end')
- }
-}
-
-sub SetList
-{
- my $w = shift;
- $w->delete(0,'end');
- $w->insert('end',@_);
-}
-
-sub deleteSelected
-{
- my $w = shift;
- my $i;
- foreach $i (reverse $w->curselection)
- {
- $w->delete($i);
- }
-}
-
-sub clipboardPaste
-{
- my $w = shift;
- my $index = $w->index('active') || $w->index($w->XEvent->xy);
- my $str;
- eval {local $SIG{__DIE__}; $str = $w->clipboardGet };
- return if $@;
- foreach (split("\n",$str))
- {
- $w->insert($index++,$_);
- }
-}
-
-sub getSelected
-{
- my ($w) = @_;
- my $i;
- my (@result) = ();
- foreach $i ($w->curselection)
- {
- push(@result,$w->get($i));
- }
- return (wantarray) ? @result : $result[0];
-}
-
-
-
-1;
-__END__
diff --git a/Master/perltl/site/lib/Tk/MainWindow.pm b/Master/perltl/site/lib/Tk/MainWindow.pm
deleted file mode 100644
index 2be63f90358..00000000000
--- a/Master/perltl/site/lib/Tk/MainWindow.pm
+++ /dev/null
@@ -1,188 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::MainWindow;
-use base qw(Tk::Toplevel);
-BEGIN { @MainWindow::ISA = 'Tk::MainWindow' }
-
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '3.047'; # $Id: //depot/Tk8/Tk/MainWindow.pm#47 $
-
-use Tk::CmdLine;
-use Tk qw(catch);
-require Tk::Toplevel;
-
-use Carp;
-
-$| = 1;
-
-my $pid = $$;
-
-my %Windows = ();
-
-sub CreateArgs
-{
- my ($class,$args) = @_;
- my $cmd = Tk::CmdLine->CreateArgs();
- my $key;
- foreach $key (keys %$cmd)
- {
- $args->{$key} = $cmd->{$key} unless exists $args->{$key};
- }
- my %result = $class->SUPER::CreateArgs(undef,$args);
- my $name = delete($args->{'-name'});
- unless (Tk::tainting)
- {
- $ENV{'DISPLAY'} = ':0' unless (exists $ENV{'DISPLAY'});
- $result{'-screen'} = $ENV{'DISPLAY'} unless exists $result{'-screen'};
- }
- return (-name => "\l$name",%result);
-}
-
-sub new
-{
- my $package = shift;
- if (@_ > 0 && $_[0] =~ /:\d+(\.\d+)?$/)
- {
- carp "Usage $package->new(-screen => '$_[0]' ...)" if $^W;
- unshift(@_,'-screen');
- }
- croak('Odd number of args'."$package->new(" . join(',',@_) .')') if @_ % 2;
- my %args = @_;
-
- my $top = eval { bless Create($package->CreateArgs(\%args)), $package };
- croak($@ . "$package->new(" . join(',',@_) .')') if ($@);
- $top->apply_command_line;
- $top->InitBindings;
- $top->SetBindtags;
- $top->InitObject(\%args);
- eval { $top->configure(%args) };
- croak "$@" if ($@);
- if (($top->positionfrom||'') ne 'user' and ($top->sizefrom||'') ne 'user') {
- my $geometry = $top->optionGet(qw(geometry Geometry));
- if ($geometry) {
- $top->geometry($geometry);
- }
- }
- $Windows{$top} = $top;
- return $top;
-}
-
-sub _Destroyed
-{
- my $top = shift;
- $top->SUPER::_Destroyed;
- delete $Windows{$top};
-}
-
-sub InitBindings
-{
- my $mw = shift;
- $mw->bind('all','<Tab>','focusNext');
- $mw->eventAdd(qw[<<LeftTab>> <Shift-Tab>]);
- catch { $mw->eventAdd(qw[<<LeftTab>> <ISO_Left_Tab>]) };
- $mw->bind('all','<<LeftTab>>','focusPrev');
- if ($Tk::platform eq 'unix')
- {
- $mw->eventAdd(qw[<<Cut>> <Control-Key-x> <Key-F20> <Meta-Key-w>]);
- $mw->eventAdd(qw[<<Copy>> <Control-Key-c> <Key-F16> <Control-Key-w>]);
- $mw->eventAdd(qw[<<Paste>> <Control-Key-v> <Key-F18> <Control-Key-y>]);
- $mw->eventAdd(qw[<<Undo>> <Control-Key-z> <Key-Undo> <Key-F14>
- <Control-Key-underscore>]);
- $mw->eventAdd(qw[<<Redo>> <Control-Key-y> <Shift-Key-Undo> <Key-F12> <Shift-Key-F14>]);
- }
- else
- {
- $mw->eventAdd(qw[<<Cut>> <Control-Key-x> <Shift-Key-Delete>]);
- $mw->eventAdd(qw[<<Copy>> <Control-Key-c> <Control-Key-Insert>]);
- $mw->eventAdd(qw[<<Paste>> <Control-Key-v> <Shift-Key-Insert>]);
- $mw->eventAdd(qw[<<Undo>> <Control-Key-z>]);
- $mw->eventAdd(qw[<<Redo>> <Control-Key-y>]);
- }
-
- # FIXME - Should these move to Menubutton ?
- my $c = ($Tk::platform eq 'unix') ? 'all' : 'Tk::Menubutton';
- $mw->bind($c,'<Alt-KeyPress>',['TraverseToMenu',Tk::Ev('K')]);
- $mw->bind($c,'<F10>','FirstMenu');
-}
-
-sub Existing
-{
- my @Windows;
- foreach my $name (keys %Windows)
- {
- my $obj = $Windows{$name};
- if (Tk::Exists($obj))
- {
- push(@Windows,$obj);
- }
- else
- {
- delete $Windows{$name};
- }
- }
- return @Windows;
-}
-
-END
-{
- if ($pid == $$)
- {
- foreach my $top (values %Windows)
- {
- if ($top->IsWidget)
- {
- # Tk data structuctures are still in place
- # this can occur if non-callback perl code did a 'die'.
- # It will also handle some cases of non-Tk 'exit' being called
- # Destroy this mainwindow and hence is descendants ...
- $top->destroy;
- }
- }
- }
-}
-
-sub CmdLine { return shift->command }
-
-sub WMSaveYourself
-{
- my $mw = shift;
- my @args = @{$mw->command};
- warn 'preWMSaveYourself:'.join(' ',@args)."\n";
- @args = ($0) unless (@args);
- my $i = 1;
- while ($i < @args)
- {
- if ($args[$i] eq '-iconic')
- {
- splice(@args,$i,1);
- }
- elsif ($args[$i] =~ /^-(geometry|iconposition)$/)
- {
- splice(@args,$i,2);
- }
- }
-
- my @ip = $mw->wm('iconposition');
- print 'ip ',join(',',@ip),"\n";
- my $icon = $mw->iconwindow;
- if (defined($icon))
- {
- @ip = $icon->geometry =~ /\d+x\d+([+-]\d+)([+-]\d+)/;
- }
- splice(@args,1,0,'-iconposition' => join(',',@ip)) if (@ip == 2);
-
- splice(@args,1,0,'-iconic') if ($mw->state() eq 'iconic');
-
- splice(@args,1,0,'-geometry' => $mw->geometry);
- warn 'postWMSaveYourself:'.join(' ',@args)."\n";
- $mw->command([@args]);
-}
-
-1;
-
-__END__
-
-=cut
diff --git a/Master/perltl/site/lib/Tk/Menu.pm b/Master/perltl/site/lib/Tk/Menu.pm
deleted file mode 100644
index 409467e0e24..00000000000
--- a/Master/perltl/site/lib/Tk/Menu.pm
+++ /dev/null
@@ -1,1130 +0,0 @@
-# Converted from menu.tcl --
-#
-# This file defines the default bindings for Tk menus and menubuttons.
-# It also implements keyboard traversal of menus and implements a few
-# other utility procedures related to menus.
-#
-# @(#) menu.tcl 1.34 94/12/19 17:09:09
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-package Tk::Menu;
-require Tk;
-require Tk::Widget;
-require Tk::Wm;
-require Tk::Derived;
-require Tk::Menu::Item;
-
-
-use vars qw($VERSION);
-$VERSION = '3.045'; # $Id: //depot/Tk8/Tk/Menu.pm#45 $
-
-use strict;
-
-use base qw(Tk::Wm Tk::Derived Tk::Widget);
-
-Construct Tk::Widget 'Menu';
-
-sub Tk_cmd { \&Tk::_menu }
-
-Tk::Methods('activate','add','clone','delete','entrycget','entryconfigure',
- 'index','insert','invoke','post','postcascade','type',
- 'unpost','yposition');
-
-import Tk qw(Ev);
-
-sub CreateArgs
-{
- my ($package,$parent,$args) = @_;
- # Remove from hash %$args any configure-like
- # options which only apply at create time (e.g. -class for Frame)
- # return these as a list of -key => value pairs
- my @result = ();
- my $opt;
- foreach $opt (qw(-type -screen -visual -colormap))
- {
- my $val = delete $args->{$opt};
- push(@result, $opt => $val) if (defined $val);
- }
- return @result;
-}
-
-sub InitObject
-{
- my ($menu,$args) = @_;
- my $menuitems = delete $args->{-menuitems};
- $menu->SUPER::InitObject($args);
- if (defined $menuitems)
- {
- # If any other args do configure now
- if (%$args)
- {
- $menu->configure(%$args);
- %$args = ();
- }
- $menu->AddItems(@$menuitems)
- }
-}
-
-sub AddItems
-{
- my $menu = shift;
- ITEM:
- while (@_)
- {
- my $item = shift;
- if (!ref($item))
- {
- $menu->separator; # A separator
- }
- else
- {
- my ($kind,$name,%minfo) = ( @$item );
- my $invoke = delete $minfo{'-invoke'};
- if (defined $name)
- {
- $minfo{-label} = $name unless defined($minfo{-label});
- $menu->$kind(%minfo);
- }
- else
- {
- $menu->BackTrace("Don't recognize " . join(' ',@$item));
- }
- } # A non-separator
- }
-}
-
-#
-#-------------------------------------------------------------------------
-# Elements of tkPriv that are used in this file:
-#
-# cursor - Saves the -cursor option for the posted menubutton.
-# focus - Saves the focus during a menu selection operation.
-# Focus gets restored here when the menu is unposted.
-# inMenubutton - The name of the menubutton widget containing
-# the mouse, or an empty string if the mouse is
-# not over any menubutton.
-# popup - If a menu has been popped up via tk_popup, this
-# gives the name of the menu. Otherwise this
-# value is empty.
-# postedMb - Name of the menubutton whose menu is currently
-# posted, or an empty string if nothing is posted
-# A grab is set on this widget.
-# relief - Used to save the original relief of the current
-# menubutton.
-# window - When the mouse is over a menu, this holds the
-# name of the menu; it's cleared when the mouse
-# leaves the menu.
-#-------------------------------------------------------------------------
-#-------------------------------------------------------------------------
-# Overall note:
-# This file is tricky because there are four different ways that menus
-# can be used:
-#
-# 1. As a pulldown from a menubutton. This is the most common usage.
-# In this style, the variable tkPriv(postedMb) identifies the posted
-# menubutton.
-# 2. As a torn-off menu copied from some other menu. In this style
-# tkPriv(postedMb) is empty, and the top-level menu is no
-# override-redirect.
-# 3. As an option menu, triggered from an option menubutton. In thi
-# style tkPriv(postedMb) identifies the posted menubutton.
-# 4. As a popup menu. In this style tkPriv(postedMb) is empty and
-# the top-level menu is override-redirect.
-#
-# The various binding procedures use the state described above to
-# distinguish the various cases and take different actions in each
-# case.
-#-------------------------------------------------------------------------
-# Bind --
-# This procedure is invoked the first time the mouse enters a menubutton
-# widget or a menubutton widget receives the input focus. It creates
-# all of the class bindings for both menubuttons and menus.
-#
-# Arguments:
-# w - The widget that was just entered or just received
-# the input focus.
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-sub ClassInit
-{
- my ($class,$mw) = @_;
- # Must set focus when mouse enters a menu, in order to allow
- # mixed-mode processing using both the mouse and the keyboard.
- $mw->bind($class,'<FocusIn>', 'NoOp');
- $mw->bind($class,'<Enter>', 'Enter');
- $mw->bind($class,'<Leave>', ['Leave',Ev('X'),Ev('Y'),Ev('s')]);
- $mw->bind($class,'<Motion>', ['Motion',Ev('x'),Ev('y'),Ev('s')]);
- $mw->bind($class,'<ButtonPress>','ButtonDown');
- $mw->bind($class,'<ButtonRelease>',['Invoke',1]);
- $mw->bind($class,'<space>',['Invoke',0]);
- $mw->bind($class,'<Return>',['Invoke',0]);
- $mw->bind($class,'<Escape>','Escape');
- $mw->bind($class,'<Left>','LeftArrow');
- $mw->bind($class,'<Right>','RightArrow');
- $mw->bind($class,'<Up>','UpArrow');
- $mw->bind($class,'<Down>','DownArrow');
- $mw->bind($class,'<KeyPress>', ['TraverseWithinMenu',Ev('K')]);
- $mw->bind($class,'<Alt-KeyPress>', ['TraverseWithinMenu',Ev('K')]);
- return $class;
-}
-
-sub UpArrow
-{
- my $menu = shift;
- if ($menu->cget('-type') eq 'menubar')
- {
- $menu->NextMenu('left');
- }
- else
- {
- $menu->NextEntry(-1);
- }
-}
-
-sub DownArrow
-{
- my $menu = shift;
- if ($menu->cget('-type') eq 'menubar')
- {
- $menu->NextMenu('right');
- }
- else
- {
- $menu->NextEntry(1);
- }
-}
-
-sub LeftArrow
-{
- my $menu = shift;
- if ($menu->cget('-type') eq 'menubar')
- {
- $menu->NextEntry(-1);
- }
- else
- {
- $menu->NextMenu('left');
- }
-}
-
-sub RightArrow
-{
- my $menu = shift;
- if ($menu->cget('-type') eq 'menubar')
- {
- $menu->NextEntry(1);
- }
- else
- {
- $menu->NextMenu('right');
- }
-}
-
-
-
-# Unpost --
-# This procedure unposts a given menu, plus all of its ancestors up
-# to (and including) a menubutton, if any. It also restores various
-# values to what they were before the menu was posted, and releases
-# a grab if there's a menubutton involved. Special notes:
-# 1. It's important to unpost all menus before releasing the grab, so
-# that any Enter-Leave events (e.g. from menu back to main
-# application) have mode NotifyGrab.
-# 2. Be sure to enclose various groups of commands in "catch" so that
-# the procedure will complete even if the menubutton or the menu
-# or the grab window has been deleted.
-#
-# Arguments:
-# menu - Name of a menu to unpost. Ignored if there
-# is a posted menubutton.
-sub Unpost
-{
- my $menu = shift;
- my $mb = $Tk::postedMb;
-
- # Restore focus right away (otherwise X will take focus away when
- # the menu is unmapped and under some window managers (e.g. olvwm)
- # we'll lose the focus completely).
-
- eval {local $SIG{__DIE__}; $Tk::focus->focus() } if (defined $Tk::focus);
- undef $Tk::focus;
-
- # Unpost menu(s) and restore some stuff that's dependent on
- # what was posted.
- eval {local $SIG{__DIE__};
- if (defined $mb)
- {
- $menu = $mb->cget('-menu');
- $menu->unpost();
- $Tk::postedMb = undef;
- $mb->configure('-cursor',$Tk::cursor);
- $mb->configure('-relief',$Tk::relief)
- }
- elsif (defined $Tk::popup)
- {
- $Tk::popup->unpost();
- my $grab = $Tk::popup->grabCurrent;
- $grab->grabRelease if (defined $grab);
-
- undef $Tk::popup;
- }
- elsif (defined $menu && ref $menu &&
- $menu->cget('-type') ne 'menubar' &&
- $menu->cget('-type') ne 'tearoff'
- )
- {
- # We're in a cascaded sub-menu from a torn-off menu or popup.
- # Unpost all the menus up to the toplevel one (but not
- # including the top-level torn-off one) and deactivate the
- # top-level torn off menu if there is one.
- while (1)
- {
- my $parent = $menu->parent;
- last if (!$parent->IsMenu || !$parent->ismapped);
- $parent->postcascade('none');
- $parent->GenerateMenuSelect;
- $parent->activate('none');
- my $type = $parent->cget('-type');
- last if ($type eq 'menubar' || $type eq 'tearoff');
- $menu = $parent
- }
- $menu->unpost() if ($menu->cget('-type') ne 'menubar');
- }
- };
- warn "$@" if ($@);
- if ($Tk::tearoff || $Tk::menubar)
- {
- # Release grab, if any.
- if (defined $menu && ref $menu)
- {
- my $grab = $menu->grabCurrent;
- $grab->grabRelease if (defined $grab);
- }
- RestoreOldGrab();
- if ($Tk::menubar)
- {
- $Tk::menubar->configure(-cursor => $Tk::cursor);
- undef $Tk::menubar;
- }
- if ($Tk::platform ne 'unix')
- {
- undef $Tk::tearoff;
- }
- }
-}
-
-sub RestoreOldGrab
-{
- if (defined $Tk::oldGrab)
- {
- eval
- {
- local $SIG{__DIE__};
- if ($Tk::grabStatus eq 'global')
- {
- $Tk::oldGrab->grabGlobal;
- }
- else
- {
- $Tk::oldGrab->grab;
- }
- };
- undef $Tk::oldGrab;
- }
-}
-
-sub typeIS
-{my $w = shift;
- my $type = $w->type(shift);
- return defined $type && $type eq shift;
-}
-
-# Motion --
-# This procedure is called to handle mouse motion events for menus.
-# It does two things. First, it resets the active element in the
-# menu, if the mouse is over the menu. Second, if a mouse button
-# is down, it posts and unposts cascade entries to match the mouse
-# position.
-#
-# Arguments:
-# menu - The menu window.
-# y - The y position of the mouse.
-# state - Modifier state (tells whether buttons are down).
-sub Motion
-{
- my $menu = shift;
- my $x = shift;
- my $y = shift;
- my $state = shift;
- my $t = $menu->cget('-type');
-
- if ($menu->IS($Tk::window))
- {
- if ($menu->cget('-type') eq 'menubar')
- {
-# if (defined($Tk::focus) && $Tk::focus != $menu)
- {
- $menu->activate("\@$x,$y");
- $menu->GenerateMenuSelect;
- }
- }
- else
- {
- $menu->activate("\@$x,$y");
- $menu->GenerateMenuSelect;
- }
- }
- if (($state & 0x1f00) != 0)
- {
- $menu->postcascade('active')
- }
-}
-# ButtonDown --
-# Handles button presses in menus. There are a couple of tricky things
-# here:
-# 1. Change the posted cascade entry (if any) to match the mouse position.
-# 2. If there is a posted menubutton, must grab to the menubutton so
-# that it can track mouse motions over other menubuttons and change
-# the posted menu.
-# 3. If there's no posted menubutton (e.g. because we're a torn-off menu
-# or one of its descendants) must grab to the top-level menu so that
-# we can track mouse motions across the entire menu hierarchy.
-
-#
-# Arguments:
-# menu - The menu window.
-sub ButtonDown
-{
- my $menu = shift;
- $menu->postcascade('active');
- if (defined $Tk::postedMb)
- {
- $Tk::postedMb->grabGlobal
- }
- else
- {
- while ($menu->cget('-type') eq 'normal'
- && $menu->parent->IsMenu
- && $menu->parent->ismapped
- )
- {
- $menu = $menu->parent;
- }
-
- if (!defined $Tk::menuBar)
- {
- $Tk::menuBar = $menu;
- $Tk::cursor = $menu->cget('-cursor');
- $menu->configure(-cursor => 'arrow');
- }
-
- # Don't update grab information if the grab window isn't changing.
- # Otherwise, we'll get an error when we unpost the menus and
- # restore the grab, since the old grab window will not be viewable
- # anymore.
-
- $menu->SaveGrabInfo unless ($menu->IS($menu->grabCurrent));
-
- # Must re-grab even if the grab window hasn't changed, in order
- # to release the implicit grab from the button press.
-
- $menu->grabGlobal if ($Tk::platform eq 'unix');
- }
-}
-
-sub Enter
-{
- my $w = shift;
- my $ev = $w->XEvent;
- $Tk::window = $w;
- if ($w->cget('-type') eq 'tearoff')
- {
- if ($ev->m ne 'NotifyUngrab')
- {
- $w->SetFocus if ($Tk::platform eq 'unix');
- }
- }
- $w->Motion($ev->x, $ev->y, $ev->s);
-}
-
-# Leave --
-# This procedure is invoked to handle Leave events for a menu. It
-# deactivates everything unless the active element is a cascade element
-# and the mouse is now over the submenu.
-#
-# Arguments:
-# menu - The menu window.
-# rootx, rooty - Root coordinates of mouse.
-# state - Modifier state.
-sub Leave
-{
- my $menu = shift;
- my $rootx = shift;
- my $rooty = shift;
- my $state = shift;
- undef $Tk::window;
- return if ($menu->index('active') eq 'none');
- if ($menu->typeIS('active','cascade'))
- {
- my $c = $menu->Containing($rootx,$rooty);
- return if (defined $c && $menu->entrycget('active','-menu')->IS($c));
- }
- $menu->activate('none');
- $menu->GenerateMenuSelect;
-}
-
-# Invoke --
-# This procedure is invoked when button 1 is released over a menu.
-# It invokes the appropriate menu action and unposts the menu if
-# it came from a menubutton.
-#
-# Arguments:
-# w - Name of the menu widget.
-sub Invoke
-{
- my $w = shift;
- my $release = shift;
-
- if ($release && !defined($Tk::window))
- {
- # Mouse was pressed over a menu without a menu button, then
- # dragged off the menu (possibly with a cascade posted) and
- # released. Unpost everything and quit.
-
- $w->postcascade('none');
- $w->activate('none');
- $w->eventGenerate('<<MenuSelect>>');
- $w->Unpost;
- return;
- }
-
- my $type = $w->type('active');
- if ($w->typeIS('active','cascade'))
- {
- $w->postcascade('active');
- my $menu = $w->entrycget('active','-menu');
- $menu->FirstEntry() if (defined $menu);
- }
- elsif ($w->typeIS('active','tearoff'))
- {
- $w->Unpost();
- $w->tearOffMenu();
- }
- elsif ($w->typeIS('active','menubar'))
- {
- $w->postcascade('none');
- $w->activate('none');
- $w->eventGenerate('<<MenuSelect>>');
- $w->Unpost;
- }
- else
- {
- $w->Unpost();
- $w->invoke('active')
- }
-}
-# Escape --
-# This procedure is invoked for the Cancel (or Escape) key. It unposts
-# the given menu and, if it is the top-level menu for a menu button,
-# unposts the menu button as well.
-#
-# Arguments:
-# menu - Name of the menu window.
-sub Escape
-{
- my $menu = shift;
- my $parent = $menu->parent;
- if (!$parent->IsMenu)
- {
- $menu->Unpost()
- }
- elsif ($parent->cget('-type') eq 'menubar')
- {
- $menu->Unpost;
- RestoreOldGrab();
- }
- else
- {
- $menu->NextMenu(-1)
- }
-}
-# LeftRight --
-# This procedure is invoked to handle "left" and "right" traversal
-# motions in menus. It traverses to the next menu in a menu bar,
-# or into or out of a cascaded menu.
-#
-# Arguments:
-# menu - The menu that received the keyboard
-# event.
-# direction - Direction in which to move: "left" or "right"
-sub NextMenu
-{
- my $menu = shift;
- my $direction = shift;
- # First handle traversals into and out of cascaded menus.
- my $count;
- if ($direction eq 'right')
- {
- $count = 1;
- if ($menu->typeIS('active','cascade'))
- {
- $menu->postcascade('active');
- my $m2 = $menu->entrycget('active','-menu');
- $m2->FirstEntry if (defined $m2);
- return;
- }
- else
- {
- my $parent = $menu->parent;
- while ($parent->PathName ne '.')
- {
- if ($parent->IsMenu && $parent->cget('-type') eq 'menubar')
- {
- $parent->SetFocus;
- $parent->NextEntry(1);
- return;
- }
- $parent = $parent->parent;
- }
- }
- }
- else
- {
- $count = -1;
- my $m2 = $menu->parent;
- if ($m2->IsMenu)
- {
- if ($m2->cget('-type') ne 'menubar')
- {
- $menu->activate('none');
- $menu->GenerateMenuSelect;
- $m2->SetFocus;
- # This code unposts any posted submenu in the parent.
- my $tmp = $m2->index('active');
- $m2->activate('none');
- $m2->activate($tmp);
- return;
- }
- }
- }
- # Can't traverse into or out of a cascaded menu. Go to the next
- # or previous menubutton, if that makes sense.
-
- my $m2 = $menu->parent;
- if ($m2->IsMenu)
- {
- if ($m2->cget('-type') eq 'menubar')
- {
- $m2->SetFocus;
- $m2->NextEntry(-1);
- return;
- }
- }
-
- my $w = $Tk::postedMb;
- return unless defined $w;
- my @buttons = $w->parent->children;
- my $length = @buttons;
- my $i = Tk::lsearch(\@buttons,$w)+$count;
- my $mb;
- while (1)
- {
- while ($i < 0)
- {
- $i += $length
- }
- while ($i >= $length)
- {
- $i += -$length
- }
- $mb = $buttons[$i];
- last if ($mb->IsMenubutton && $mb->cget('-state') ne 'disabled'
- && defined($mb->cget('-menu'))
- && $mb->cget('-menu')->index('last') ne 'none'
- );
- return if ($mb == $w);
- $i += $count
- }
- $mb->PostFirst();
-}
-# NextEntry --
-# Activate the next higher or lower entry in the posted menu,
-# wrapping around at the ends. Disabled entries are skipped.
-#
-# Arguments:
-# menu - Menu window that received the keystroke.
-# count - 1 means go to the next lower entry,
-# -1 means go to the next higher entry.
-sub NextEntry
-{
- my $menu = shift;
- my $count = shift;
- if ($menu->index('last') eq 'none')
- {
- return;
- }
- my $length = $menu->index('last')+1;
- my $quitAfter = $length;
- my $active = $menu->index('active');
- my $i = ($active eq 'none') ? 0 : $active+$count;
- while (1)
- {
- return if ($quitAfter <= 0);
- while ($i < 0)
- {
- $i += $length
- }
- while ($i >= $length)
- {
- $i += -$length
- }
- my $state = eval {local $SIG{__DIE__}; $menu->entrycget($i,'-state') };
- last if (defined($state) && $state ne 'disabled');
- return if ($i == $active);
- $i += $count;
- $quitAfter -= 1;
- }
- $menu->activate($i);
- $menu->GenerateMenuSelect;
- if ($menu->type($i) eq 'cascade')
- {
- my $cascade = $menu->entrycget($i, '-menu');
- $menu->postcascade($i);
- $cascade->FirstEntry if (defined $cascade);
- }
-}
-
-
-# tkTraverseWithinMenu
-# This procedure implements keyboard traversal within a menu. It
-# searches for an entry in the menu that has "char" underlined. If
-# such an entry is found, it is invoked and the menu is unposted.
-#
-# Arguments:
-# w - The name of the menu widget.
-# char - The character to look for; case is
-# ignored. If the string is empty then
-# nothing happens.
-sub TraverseWithinMenu
-{
- my $w = shift;
- my $char = shift;
- return unless (defined $char);
- $char = "\L$char";
- my $last = $w->index('last');
- return if ($last eq 'none');
- for (my $i = 0;$i <= $last;$i += 1)
- {
- my $label = eval {local $SIG{__DIE__}; $w->entrycget($i,'-label') };
- next unless defined($label);
- my $ul = $w->entrycget($i,'-underline');
- if (defined $ul && $ul >= 0)
- {
- $label = substr("\L$label",$ul,1);
- if (defined($label) && $label eq $char)
- {
- if ($w->type($i) eq 'cascade')
- {
- $w->postcascade($i);
- $w->activate($i);
- my $m2 = $w->entrycget($i,'-menu');
- $m2->FirstEntry if (defined $m2);
- }
- else
- {
- $w->Unpost();
- $w->invoke($i);
- }
- return;
- }
- }
- }
-}
-
-sub FindMenu
-{
- my ($menu,$char) = @_;
- if ($menu->cget('-type') eq 'menubar')
- {
- if (!defined($char) || $char eq '')
- {
- $menu->FirstEntry;
- }
- else
- {
- $menu->TraverseWithinMenu($char);
- }
- return $menu;
- }
- return undef;
-}
-
-
-# FirstEntry --
-# Given a menu, this procedure finds the first entry that isn't
-# disabled or a tear-off or separator, and activates that entry.
-# However, if there is already an active entry in the menu (e.g.,
-# because of a previous call to tkPostOverPoint) then the active
-# entry isn't changed. This procedure also sets the input focus
-# to the menu.
-#
-# Arguments:
-# menu - Name of the menu window (possibly empty).
-sub FirstEntry
-{
- my $menu = shift;
- return if (!defined($menu) || $menu eq '' || !ref($menu));
- $menu->SetFocus;
- return if ($menu->index('active') ne 'none');
- my $last = $menu->index('last');
- return if ($last eq 'none');
- for (my $i = 0;$i <= $last;$i += 1)
- {
- my $state = eval {local $SIG{__DIE__}; $menu->entrycget($i,'-state') };
- if (defined $state && $state ne 'disabled' && !$menu->typeIS($i,'tearoff'))
- {
- $menu->activate($i);
- $menu->GenerateMenuSelect;
- if ($menu->type($i) eq 'cascade')
- {
- my $cascade = $menu->entrycget($i,'-menu');
- if (defined $cascade)
- {
- $menu->postcascade($i);
- $cascade->FirstEntry;
- }
- }
- return;
- }
- }
-}
-
-# FindName --
-# Given a menu and a text string, return the index of the menu entry
-# that displays the string as its label. If there is no such entry,
-# return an empty string. This procedure is tricky because some names
-# like "active" have a special meaning in menu commands, so we can't
-# always use the "index" widget command.
-#
-# Arguments:
-# menu - Name of the menu widget.
-# s - String to look for.
-sub FindName
-{
- my $menu = shift;
- my $s = shift;
- my $i = undef;
- if ($s !~ /^active$|^last$|^none$|^[0-9]|^@/)
- {
- $i = eval {local $SIG{__DIE__}; $menu->index($s) };
- return $i;
- }
- my $last = $menu->index('last');
- return if ($last eq 'none');
- for ($i = 0;$i <= $last;$i += 1)
- {
- my $label = eval {local $SIG{__DIE__}; $menu->entrycget($i,'-label') };
- return $i if (defined $label && $label eq $s);
- }
- return undef;
-}
-# PostOverPoint --
-# This procedure posts a given menu such that a given entry in the
-# menu is centered over a given point in the root window. It also
-# activates the given entry.
-#
-# Arguments:
-# menu - Menu to post.
-# x, y - Root coordinates of point.
-# entry - Index of entry within menu to center over (x,y).
-# If omitted or specified as {}, then the menu's
-# upper-left corner goes at (x,y).
-sub PostOverPoint
-{
- my $menu = shift;
- my $x = shift;
- my $y = shift;
- my $entry = shift;
- if (defined $entry)
- {
- if ($entry == $menu->index('last'))
- {
- $y -= ($menu->yposition($entry)+$menu->height)/2;
- }
- else
- {
- $y -= ($menu->yposition($entry)+$menu->yposition($entry+1))/2;
- }
- $x -= $menu->reqwidth/2;
- }
- $menu->post($x,$y);
- if (defined($entry) && $menu->entrycget($entry,'-state') ne 'disabled')
- {
- $menu->activate($entry);
- $menu->GenerateMenuSelect;
- }
-}
-# tk_popup --
-# This procedure pops up a menu and sets things up for traversing
-# the menu and its submenus.
-#
-# Arguments:
-# menu - Name of the menu to be popped up.
-# x, y - Root coordinates at which to pop up the
-# menu.
-# entry - Index of a menu entry to center over (x,y).
-# If omitted or specified as {}, then menu's
-# upper-left corner goes at (x,y).
-sub Post
-{
- my $menu = shift;
- return unless (defined $menu);
- my $x = shift;
- my $y = shift;
- my $entry = shift;
- Unpost(undef) if (defined($Tk::popup) || defined($Tk::postedMb));
- $menu->PostOverPoint($x,$y,$entry);
- $menu->grabGlobal;
- $Tk::popup = $menu;
- $Tk::focus = $menu->focusCurrent;
- $menu->focus();
-}
-
-sub SetFocus
-{
- my $menu = shift;
- $Tk::focus = $menu->focusCurrent if (!defined($Tk::focus));
- $menu->focus;
-}
-
-sub GenerateMenuSelect
-{
- my $menu = shift;
- $Tk::activeMenu = $menu;
- $Tk::activeItem = $menu->index('active');
- $menu->eventGenerate('<<MenuSelect>>'); # FIXME
-}
-
-# Converted from tearoff.tcl --
-#
-# This file contains procedures that implement tear-off menus.
-#
-# @(#) tearoff.tcl 1.3 94/12/17 16:05:25
-#
-# Copyright (c) 1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# tkTearoffMenu --
-# Given the name of a menu, this procedure creates a torn-off menu
-# that is identical to the given menu (including nested submenus).
-# The new torn-off menu exists as a toplevel window managed by the
-# window manager. The return value is the name of the new menu.
-#
-# Arguments:
-# w - The menu to be torn-off (duplicated).
-sub tearOffMenu
-{
- my $w = shift;
- my $x = (@_) ? shift : 0;
- my $y = (@_) ? shift : 0;
-
- $x = $w->rootx if $x == 0;
- $y = $w->rooty if $y == 0;
-
- # Find a unique name to use for the torn-off menu. Find the first
- # ancestor of w that is a toplevel but not a menu, and use this as
- # the parent of the new menu. This guarantees that the torn off
- # menu will be on the same screen as the original menu. By making
- # it a child of the ancestor, rather than a child of the menu, it
- # can continue to live even if the menu is deleted; it will go
- # away when the toplevel goes away.
-
- my $parent = $w->parent;
- while ($parent->toplevel != $parent || $parent->IsMenu)
- {
- $parent = $parent->parent;
- }
- my $menu = $w->clone($parent,'tearoff');
-
- # Pick a title for the new menu by looking at the parent of the
- # original: if the parent is a menu, then use the text of the active
- # entry. If it's a menubutton then use its text.
- my $title = $menu->cget('-title');
- unless (defined $title && length($title))
- {
- $parent = $w->parent;
- if ($parent->IsMenubutton)
- {
- $title = $parent->cget('-text');
- }
- elsif ($parent->IsMenu)
- {
- $title = $parent->entrycget('active','-label');
- }
- }
- $menu->title($title) if (defined $title && length($title));
- $menu->post($x,$y);
- # Set tkPriv(focus) on entry: otherwise the focus will get lost
- # after keyboard invocation of a sub-menu (it will stay on the
- # submenu).
- $menu->bind('<Enter>','EnterFocus');
- $menu->Callback('-tearoffcommand');
- return $menu;
-}
-
-# tkMenuDup --
-# Given a menu (hierarchy), create a duplicate menu (hierarchy)
-# in a given window.
-#
-# Arguments:
-# src - Source window. Must be a menu. It and its
-# menu descendants will be duplicated at dst.
-# dst - Name to use for topmost menu in duplicate
-# hierarchy.
-sub MenuDup
-{
- my $src = shift;
- my $parent = shift;
- my $type = (@_) ? shift : 'normal';
- my %args = (-type => $type) ;
- foreach my $option ($src->configure())
- {
- next if (@$option == 2);
- $args{$$option[0]} = $$option[4] unless exists $args{$$option[0]};
- }
- my $dst = ref($src)->new($parent,%args);
- if ($type eq 'tearoff')
- {
- $dst->transient($parent->MainWindow);
- }
- my $last = $src->index('last');
- if ($last ne 'none')
- {
- for (my $i = $src->cget('-tearoff'); $i <= $last; $i++)
- {
- my $type = $src->type($i);
- if (defined $type)
- {
- my @args = ();
- foreach my $option ($src->entryconfigure($i))
- {
- next if (@$option == 2);
- push(@args,$$option[0],$$option[4]) if (defined $$option[4]);
- }
- $dst->add($type,@args);
- }
- }
- }
- # Duplicate the binding tags and bindings from the source menu.
- my @bindtags = $src->bindtags;
- my $path = $src->PathName;
- foreach (@bindtags)
- {
- $_ = $dst if ($_ eq $path);
- }
- $dst->bindtags([@bindtags]);
- foreach my $event ($src->bind)
- {
- my $cb = $src->bind($event);
- $dst->bind($event,$cb->Substitute($src,$dst));
- }
- return $dst;
-}
-
-
-
-# Some convenience methods
-
-sub separator { require Tk::Menu::Item; shift->Separator(@_); }
-sub cascade { require Tk::Menu::Item; shift->Cascade(@_); }
-sub checkbutton { require Tk::Menu::Item; shift->Checkbutton(@_); }
-sub radiobutton { require Tk::Menu::Item; shift->Radiobutton(@_); }
-
-sub command
-{
- my ($menu,%args) = @_;
- require Tk::Menu::Item;
- if (exists $args{-button})
- {
- # Backward compatible stuff from 'Menubar'
- my $button = delete $args{-button};
- $button = ['Misc', -underline => 0 ] unless (defined $button);
- my @bargs = ();
- ($button,@bargs) = @$button if (ref($button) && ref $button eq 'ARRAY');
- $menu = $menu->Menubutton(-label => $button, @bargs);
- }
- $menu->Command(%args);
-}
-
-sub Menubutton
-{
- my ($menu,%args) = @_;
- my $name = delete($args{'-text'}) || $args{'-label'};;
- $args{'-label'} = $name if (defined $name);
- my $items = delete $args{'-menuitems'};
- foreach my $opt (qw(-pack -after -before -side -padx -ipadx -pady -ipady -fill))
- {
- delete $args{$opt};
- }
- if (defined($name) && !defined($args{-underline}))
- {
- my $underline = ($name =~ s/^(.*)~/$1/) ? length($1): undef;
- if (defined($underline) && ($underline >= 0))
- {
- $args{-underline} = $underline;
- $args{-label} = $name;
- }
- }
- my $hash = $menu->TkHash('MenuButtons');
- my $mb = $hash->{$name};
- if (defined $mb)
- {
- delete $args{'-tearoff'}; # too late!
- $mb->configure(%args) if %args;
- }
- else
- {
- $mb = $menu->cascade(%args);
- $hash->{$name} = $mb;
- }
- $mb->menu->AddItems(@$items) if defined($items) && @$items;
- return $mb;
-}
-
-sub BalloonInfo
-{
- my ($menu,$balloon,$X,$Y,@opt) = @_;
- my $i = $menu->index('active');
- if ($i eq 'none')
- {
- my $y = $Y - $menu->rooty;
- $i = $menu->index("\@$y");
- }
- foreach my $opt (@opt)
- {
- my $info = $balloon->GetOption($opt,$menu);
- if ($opt =~ /^-(statusmsg|balloonmsg)$/ && UNIVERSAL::isa($info,'ARRAY'))
- {
- $balloon->Subclient($i);
- return '' if $i eq 'none';
- return ${$info}[$i] || '';
- }
- return $info;
- }
-}
-
-1;
-
-__END__
-
-
diff --git a/Master/perltl/site/lib/Tk/Menu/Item.pm b/Master/perltl/site/lib/Tk/Menu/Item.pm
deleted file mode 100644
index ab341ebaf84..00000000000
--- a/Master/perltl/site/lib/Tk/Menu/Item.pm
+++ /dev/null
@@ -1,180 +0,0 @@
-package Tk::Menu::Item;
-
-require Tk::Menu;
-
-use Carp;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '3.027'; # $Id: //depot/Tk8/Tk/Menu/Item.pm#27 $
-
-sub PreInit
-{
- # Dummy (virtual) method
- my ($class,$menu,$minfo) = @_;
-}
-
-sub new
-{
- my ($class,$menu,%minfo) = @_;
- my $kind = $class->kind;
- my $name = $minfo{'-label'};
- if (defined $kind)
- {
- my $invoke = delete $minfo{'-invoke'};
- if (defined $name)
- {
- # Use ~ in name/label to set -underline
- if (defined($minfo{-label}) && !defined($minfo{-underline}))
- {
- my $cleanlabel = $minfo{-label};
- my $underline = ($cleanlabel =~ s/^(.*)~/$1/) ? length($1): undef;
- if (defined($underline) && ($underline >= 0))
- {
- $minfo{-underline} = $underline;
- $name = $cleanlabel if ($minfo{-label} eq $name);
- $minfo{-label} = $cleanlabel;
- }
- }
- }
- else
- {
- $name = $minfo{'-bitmap'} || $minfo{'-image'};
- croak('No -label') unless defined($name);
- $minfo{'-label'} = $name;
- }
- $class->PreInit($menu,\%minfo);
- $menu->add($kind,%minfo);
- $menu->invoke('last') if ($invoke);
- }
- else
- {
- $menu->add('separator');
- }
- return bless [$menu,$name],$class;
-}
-
-sub configure
-{
- my $obj = shift;
- my ($menu,$name) = @$obj;
- my %args = @_;
- $obj->[1] = $args{'-label'} if exists $args{'-label'};
- $menu->entryconfigure($name,@_);
-}
-
-sub cget
-{
- my $obj = shift;
- my ($menu,$name) = @$obj;
- $menu->entrycget($name,@_);
-}
-
-sub parentMenu
-{
- my $obj = shift;
- return $obj->[0];
-}
-
-# Default "kind" is a command
-sub kind { return 'command' }
-
-# Now the derived packages
-
-package Tk::Menu::Separator;
-use base qw(Tk::Menu::Item);
-Construct Tk::Menu 'Separator';
-sub kind { return undef }
-
-package Tk::Menu::Button;
-use base qw(Tk::Menu::Item);
-Construct Tk::Menu 'Button';
-Construct Tk::Menu 'Command';
-
-#package Tk::Menu::Command;
-#use base qw(Tk::Menu::Button);
-#Construct Tk::Menu 'Command';
-
-package Tk::Menu::Cascade;
-use base qw(Tk::Menu::Item);
-Construct Tk::Menu 'Cascade';
-sub kind { return 'cascade' }
-use Carp;
-
-sub PreInit
-{
- my ($class,$menu,$minfo) = @_;
- my $tearoff = delete $minfo->{-tearoff};
- my $items = delete $minfo->{-menuitems};
- my $widgetvar = delete $minfo->{-menuvar};
- my $command = delete $minfo->{-postcommand};
- my $name = delete $minfo->{'Name'};
- $name = $minfo->{'-label'} unless defined $name;
- my @args = ();
- push(@args, '-tearoff' => $tearoff) if (defined $tearoff);
- push(@args, '-menuitems' => $items) if (defined $items);
- push(@args, '-postcommand' => $command) if (defined $command);
- my $submenu = $minfo->{'-menu'};
- unless (defined $submenu)
- {
- $minfo->{'-menu'} = $submenu = $menu->Menu(Name => $name, @args);
- }
- $$widgetvar = $submenu if (defined($widgetvar) && ref($widgetvar));
-}
-
-sub menu
-{
- my ($self,%args) = @_;
- my $w = $self->parentMenu;
- my $menu = $self->cget('-menu');
- if (!defined $menu)
- {
- require Tk::Menu;
- $w->ColorOptions(\%args);
- my $name = $self->cget('-label');
- warn "Had to (re-)reate menu for $name";
- $menu = $w->Menu(Name => $name, %args);
- $self->configure('-menu'=>$menu);
- }
- else
- {
- $menu->configure(%args) if %args;
- }
- return $menu;
-}
-
-# Some convenience methods
-
-sub separator { shift->menu->Separator(@_); }
-sub command { shift->menu->Command(@_); }
-sub cascade { shift->menu->Cascade(@_); }
-sub checkbutton { shift->menu->Checkbutton(@_); }
-sub radiobutton { shift->menu->Radiobutton(@_); }
-
-sub pack
-{
- my $w = shift;
- if ($^W)
- {
- require Carp;
- Carp::carp("Cannot 'pack' $w - done automatically")
- }
-}
-
-package Tk::Menu::Checkbutton;
-use base qw(Tk::Menu::Item);
-Construct Tk::Menu 'Checkbutton';
-sub kind { return 'checkbutton' }
-
-package Tk::Menu::Radiobutton;
-use base qw(Tk::Menu::Item);
-Construct Tk::Menu 'Radiobutton';
-sub kind { return 'radiobutton' }
-
-package Tk::Menu::Item;
-
-1;
-__END__
-
-=cut
-
diff --git a/Master/perltl/site/lib/Tk/Menubutton.pm b/Master/perltl/site/lib/Tk/Menubutton.pm
deleted file mode 100644
index ef9237900b2..00000000000
--- a/Master/perltl/site/lib/Tk/Menubutton.pm
+++ /dev/null
@@ -1,398 +0,0 @@
-# Converted from menu.tcl --
-#
-# This file defines the default bindings for Tk menus and menubuttons.
-# It also implements keyboard traversal of menus and implements a few
-# other utility procedures related to menus.
-#
-# @(#) menu.tcl 1.34 94/12/19 17:09:09
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-
-package Tk::Menubutton;
-require Tk;
-
-use vars qw($VERSION);
-$VERSION = '3.025'; # $Id: //depot/Tk8/Menubutton/Menubutton.pm#25 $
-
-use base qw(Tk::Widget);
-
-Construct Tk::Widget 'Menubutton';
-
-import Tk qw(&Ev $XS_VERSION);
-
-bootstrap Tk::Menubutton;
-
-sub Tk_cmd { \&Tk::menubutton }
-
-sub InitObject
-{
- my ($mb,$args) = @_;
- my $menuitems = delete $args->{-menuitems};
- my $tearoff = delete $args->{-tearoff};
- $mb->SUPER::InitObject($args);
- if ((defined($menuitems) || defined($tearoff)) && %$args)
- {
- $mb->configure(%$args);
- %$args = ();
- }
- $mb->menu(-tearoff => $tearoff) if (defined $tearoff);
- $mb->AddItems(@$menuitems) if (defined $menuitems)
-}
-
-
-#
-#-------------------------------------------------------------------------
-# Elements of tkPriv that are used in this file:
-#
-# cursor - Saves the -cursor option for the posted menubutton.
-# focus - Saves the focus during a menu selection operation.
-# Focus gets restored here when the menu is unposted.
-# inMenubutton - The name of the menubutton widget containing
-# the mouse, or an empty string if the mouse is
-# not over any menubutton.
-# popup - If a menu has been popped up via tk_popup, this
-# gives the name of the menu. Otherwise this
-# value is empty.
-# postedMb - Name of the menubutton whose menu is currently
-# posted, or an empty string if nothing is posted
-# A grab is set on this widget.
-# relief - Used to save the original relief of the current
-# menubutton.
-# window - When the mouse is over a menu, this holds the
-# name of the menu; it's cleared when the mouse
-# leaves the menu.
-#-------------------------------------------------------------------------
-#-------------------------------------------------------------------------
-# Overall note:
-# This file is tricky because there are four different ways that menus
-# can be used:
-#
-# 1. As a pulldown from a menubutton. This is the most common usage.
-# In this style, the variable tkPriv(postedMb) identifies the posted
-# menubutton.
-# 2. As a torn-off menu copied from some other menu. In this style
-# tkPriv(postedMb) is empty, and the top-level menu is no
-# override-redirect.
-# 3. As an option menu, triggered from an option menubutton. In thi
-# style tkPriv(postedMb) identifies the posted menubutton.
-# 4. As a popup menu. In this style tkPriv(postedMb) is empty and
-# the top-level menu is override-redirect.
-#
-# The various binding procedures use the state described above to
-# distinguish the various cases and take different actions in each
-# case.
-#-------------------------------------------------------------------------
-# Menu::Bind --
-# This procedure is invoked the first time the mouse enters a menubutton
-# widget or a menubutton widget receives the input focus. It creates
-# all of the class bindings for both menubuttons and menus.
-#
-# Arguments:
-# w - The widget that was just entered or just received
-# the input focus.
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<FocusIn>','NoOp');
- $mw->bind($class,'<Enter>','Enter');
- $mw->bind($class,'<Leave>','Leave');
- $mw->bind($class,'<1>','ButtonDown');
- $mw->bind($class,'<Motion>',['Motion','up',Ev('X'),Ev('Y')]);
- $mw->bind($class,'<B1-Motion>',['Motion','down',Ev('X'),Ev('Y')]);
- $mw->bind($class,'<ButtonRelease-1>','ButtonUp');
- $mw->bind($class,'<space>','PostFirst');
- $mw->bind($class,'<Return>','PostFirst');
- return $class;
-}
-
-sub ButtonDown
-{my $w = shift;
- my $Ev = $w->XEvent;
- $Tk::inMenubutton->Post($Ev->X,$Ev->Y) if (defined $Tk::inMenubutton);
-}
-
-sub PostFirst
-{
- my $w = shift;
- my $menu = $w->cget('-menu');
- $w->Post();
- $menu->FirstEntry() if (defined $menu);
-}
-
-
-# Enter --
-# This procedure is invoked when the mouse enters a menubutton
-# widget. It activates the widget unless it is disabled. Note:
-# this procedure is only invoked when mouse button 1 is *not* down.
-# The procedure B1Enter is invoked if the button is down.
-#
-# Arguments:
-# w - The name of the widget.
-sub Enter
-{
- my $w = shift;
- $Tk::inMenubutton->Leave if (defined $Tk::inMenubutton);
- $Tk::inMenubutton = $w;
- if ($w->cget('-state') ne 'disabled')
- {
- $w->configure('-state','active')
- }
-}
-
-sub Leave
-{
- my $w = shift;
- $Tk::inMenubutton = undef;
- return unless Tk::Exists($w);
- if ($w->cget('-state') eq 'active')
- {
- $w->configure('-state','normal')
- }
-}
-# Post --
-# Given a menubutton, this procedure does all the work of posting
-# its associated menu and unposting any other menu that is currently
-# posted.
-#
-# Arguments:
-# w - The name of the menubutton widget whose menu
-# is to be posted.
-# x, y - Root coordinates of cursor, used for positioning
-# option menus. If not specified, then the center
-# of the menubutton is used for an option menu.
-sub Post
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- return if ($w->cget('-state') eq 'disabled');
- return if (defined $Tk::postedMb && $w == $Tk::postedMb);
- my $menu = $w->cget('-menu');
- return unless (defined($menu) && $menu->index('last') ne 'none');
-
- my $tearoff = $Tk::platform eq 'unix' || $menu->cget('-type') eq 'tearoff';
-
- my $wpath = $w->PathName;
- my $mpath = $menu->PathName;
- unless (index($mpath,"$wpath.") == 0)
- {
- die "Cannot post $mpath : not a descendant of $wpath";
- }
-
- my $cur = $Tk::postedMb;
- if (defined $cur)
- {
- Tk::Menu->Unpost(undef); # fixme
- }
- $Tk::cursor = $w->cget('-cursor');
- $Tk::relief = $w->cget('-relief');
- $w->configure('-cursor','arrow');
- $w->configure('-relief','raised');
- $Tk::postedMb = $w;
- $Tk::focus = $w->focusCurrent;
- $menu->activate('none');
- $menu->GenerateMenuSelect;
- # If this looks like an option menubutton then post the menu so
- # that the current entry is on top of the mouse. Otherwise post
- # the menu just below the menubutton, as for a pull-down.
-
- eval
- {local $SIG{'__DIE__'};
- my $dir = $w->cget('-direction');
- if ($dir eq 'above')
- {
- $menu->post($w->rootx, $w->rooty - $menu->ReqHeight);
- }
- elsif ($dir eq 'below')
- {
- $menu->post($w->rootx, $w->rooty + $w->Height);
- }
- elsif ($dir eq 'left')
- {
- my $x = $w->rootx - $menu->ReqWidth;
- my $y = int((2*$w->rooty + $w->Height) / 2);
- if ($w->cget('-indicatoron') == 1 && defined($w->cget('-textvariable')))
- {
- $menu->PostOverPoint($x,$y,$menu->FindName($w->cget('-text')))
- }
- else
- {
- $menu->post($x,$y);
- }
- }
- elsif ($dir eq 'right')
- {
- my $x = $w->rootx + $w->Width;
- my $y = int((2*$w->rooty + $w->Height) / 2);
- if ($w->cget('-indicatoron') == 1 && defined($w->cget('-textvariable')))
- {
- $menu->PostOverPoint($x,$y,$menu->FindName($w->cget('-text')))
- }
- else
- {
- $menu->post($x,$y);
- }
- }
- else
- {
- if ($w->cget('-indicatoron') == 1 && defined($w->cget('-textvariable')))
- {
- if (!defined($y))
- {
- $x = $w->rootx+$w->width/2;
- $y = $w->rooty+$w->height/2
- }
- $menu->PostOverPoint($x,$y,$menu->FindName($w->cget('-text')))
- }
- else
- {
- $menu->post($w->rootx,$w->rooty+$w->height);
- }
- }
- };
- if ($@)
- {
- Tk::Menu->Unpost;
- die $@
- }
-
- $Tk::tearoff = $tearoff;
- if ($tearoff)
- {
- $menu->focus;
- $w->SaveGrabInfo;
- $w->grabGlobal;
- }
-}
-# Motion --
-# This procedure handles mouse motion events inside menubuttons, and
-# also outside menubuttons when a menubutton has a grab (e.g. when a
-# menu selection operation is in progress).
-#
-# Arguments:
-# w - The name of the menubutton widget.
-# upDown - "down" means button 1 is pressed, "up" means
-# it isn't.
-# rootx, rooty - Coordinates of mouse, in (virtual?) root window.
-sub Motion
-{
- my $w = shift;
- my $upDown = shift;
- my $rootx = shift;
- my $rooty = shift;
- return if (defined($Tk::inMenubutton) && $Tk::inMenubutton == $w);
- my $new = $w->Containing($rootx,$rooty);
- if (defined($Tk::inMenubutton))
- {
- if (!defined($new) || ($new != $Tk::inMenubutton && $w->toplevel != $new->toplevel))
- {
- $Tk::inMenubutton->Leave();
- }
- }
- if (defined($new) && $new->IsMenubutton && $new->cget('-indicatoron') == 0 &&
- $w->cget('-indicatoron') == 0)
- {
- if ($upDown eq 'down')
- {
- $new->Post($rootx,$rooty);
- }
- else
- {
- $new->Enter();
- }
- }
-}
-# ButtonUp --
-# This procedure is invoked to handle button 1 releases for menubuttons.
-# If the release happens inside the menubutton then leave its menu
-# posted with element 0 activated. Otherwise, unpost the menu.
-#
-# Arguments:
-# w - The name of the menubutton widget.
-
-sub ButtonUp {
- my $w = shift;
-
- my $tearoff = $Tk::platform eq 'unix' || (defined($w->cget('-menu')) &&
- $w->cget('-menu')->cget('-type') eq 'tearoff');
- if ($tearoff && (defined($Tk::postedMb) && $Tk::postedMb == $w)
- && (defined($Tk::inMenubutton) && $Tk::inMenubutton == $w)) {
- $Tk::postedMb->cget(-menu)->FirstEntry();
- } else {
- Tk::Menu->Unpost(undef);
- }
-} # end ButtonUp
-
-# Some convenience methods
-
-sub menu
-{
- my ($w,%args) = @_;
- my $menu = $w->cget('-menu');
- if (!defined $menu)
- {
- require Tk::Menu;
- $w->ColorOptions(\%args) if ($Tk::platform eq 'unix');
- $menu = $w->Menu(%args);
- $w->configure('-menu'=>$menu);
- }
- else
- {
- $menu->configure(%args);
- }
- return $menu;
-}
-
-sub separator { require Tk::Menu::Item; shift->menu->Separator(@_); }
-sub command { require Tk::Menu::Item; shift->menu->Command(@_); }
-sub cascade { require Tk::Menu::Item; shift->menu->Cascade(@_); }
-sub checkbutton { require Tk::Menu::Item; shift->menu->Checkbutton(@_); }
-sub radiobutton { require Tk::Menu::Item; shift->menu->Radiobutton(@_); }
-
-sub AddItems
-{
- shift->menu->AddItems(@_);
-}
-
-sub entryconfigure
-{
- shift->menu->entryconfigure(@_);
-}
-
-sub entrycget
-{
- shift->menu->entrycget(@_);
-}
-
-sub FindMenu
-{
- my $child = shift;
- my $char = shift;
- my $ul = $child->cget('-underline');
- if (defined $ul && $ul >= 0 && $child->cget('-state') ne 'disabled')
- {
- my $char2 = $child->cget('-text');
- $char2 = substr("\L$char2",$ul,1) if (defined $char2);
- if (!defined($char) || $char eq '' || (defined($char2) && "\l$char" eq $char2))
- {
- $child->PostFirst;
- return $child;
- }
- }
- return undef;
-}
-
-1;
-
-__END__
-
-
diff --git a/Master/perltl/site/lib/Tk/Optionmenu.pm b/Master/perltl/site/lib/Tk/Optionmenu.pm
deleted file mode 100644
index ca3f5dba22a..00000000000
--- a/Master/perltl/site/lib/Tk/Optionmenu.pm
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::Optionmenu;
-require Tk::Menubutton;
-require Tk::Menu;
-
-use vars qw($VERSION);
-$VERSION = '3.025'; # $Id: //depot/Tk8/Tk/Optionmenu.pm#25 $
-
-use base qw(Tk::Derived Tk::Menubutton);
-
-use strict;
-
-Construct Tk::Widget 'Optionmenu';
-
-sub Populate
-{
- my ($w,$args) = @_;
- $w->SUPER::Populate($args);
- $args->{-indicatoron} = 1;
- my $var = delete $args->{-textvariable};
- unless (defined $var)
- {
- my $gen = undef;
- $var = \$gen;
- }
- my $menu = $w->menu(-tearoff => 0);
- $w->configure(-textvariable => $var);
-
- # Should we allow -menubackground etc. as in -label* of Frame ?
-
- $w->ConfigSpecs(-command => ['CALLBACK',undef,undef,undef],
- -options => ['METHOD', undef, undef, undef],
- -variable=> ['PASSIVE', undef, undef, undef],
- -font => [['SELF',$menu], undef, undef, undef],
-
- -takefocus => [ qw/SELF takefocus Takefocus 1/ ],
- -highlightthickness => [ qw/SELF highlightThickness HighlightThickness 1/ ],
- -relief => [ qw/SELF relief Relief raised/ ],
-
- );
-
- # configure -variable and -command now so that when -options
- # is set by main-line configure they are there to be set/called.
- $w->configure(-variable => $var) if ($var = delete $args->{-variable});
- $w->configure(-command => $var) if ($var = delete $args->{-command});
-}
-
-sub setOption
-{
- my ($w, $label, $val) = @_;
- $val = $label if @_ == 2;
- my $var = $w->cget(-textvariable);
- $$var = $label;
- $var = $w->cget(-variable);
- $$var = $val if $var;
- $w->Callback(-command => $val);
-}
-
-sub addOptions
-{
- my $w = shift;
- my $menu = $w->menu;
- my $var = $w->cget(-textvariable);
- my $old = $$var;
- my $width = $w->cget('-width');
- my %hash;
- my $first;
- while (@_)
- {
- my $val = shift;
- my $label = $val;
- if (ref $val)
- {
- ($label, $val) = @$val;
- }
- my $len = length($label);
- $width = $len if (!defined($width) || $len > $width);
- $menu->command(-label => $label, -command => [ $w , 'setOption', $label, $val ]);
- $hash{$label} = $val;
- $first = $label unless defined $first;
- }
- if (!defined($old) || !exists($hash{$old}))
- {
- $w->setOption($first, $hash{$first}) if defined $first;
- }
- $w->configure('-width' => $width);
-}
-
-sub options
-{
- my ($w,$opts) = @_;
- if (@_ > 1)
- {
- $w->menu->delete(0,'end');
- $w->addOptions(@$opts);
- }
- else
- {
- return $w->_cget('-options');
- }
-}
-
-1;
-
-__END__
-
-=cut
-
diff --git a/Master/perltl/site/lib/Tk/Pixmap.pm b/Master/perltl/site/lib/Tk/Pixmap.pm
deleted file mode 100644
index 081b17f7892..00000000000
--- a/Master/perltl/site/lib/Tk/Pixmap.pm
+++ /dev/null
@@ -1,19 +0,0 @@
-package Tk::Pixmap;
-
-use vars qw($VERSION);
-$VERSION = '3.011'; # $Id: //depot/Tk8/TixPixmap/Pixmap.pm#11 $
-
-use Tk qw($XS_VERSION);
-
-use Tk::Image ();
-
-use base qw(Tk::Image);
-
-Construct Tk::Image 'Pixmap';
-
-bootstrap Tk::Pixmap;
-
-sub Tk_image { 'pixmap' }
-
-1;
-
diff --git a/Master/perltl/site/lib/Tk/Pretty.pm b/Master/perltl/site/lib/Tk/Pretty.pm
deleted file mode 100644
index 409f1e1b320..00000000000
--- a/Master/perltl/site/lib/Tk/Pretty.pm
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::Pretty;
-require Exporter;
-
-use vars qw($VERSION @EXPORT);
-$VERSION = '3.013'; # $Id: //depot/Tk8/Tk/Pretty.pm#13 $
-
-use base qw(Exporter);
-
-@EXPORT = qw(Pretty PrintArgs);
-
-sub pretty_list
-{
- join(',',map(&Pretty($_),@_));
-}
-
-sub Pretty
-{
- return pretty_list(@_) if (@_ > 1);
- my $obj = shift;
- return 'undef' unless defined($obj);
- my $type = "$obj";
- return $type if ($type =~ /=HASH/ && exists($obj->{"_Tcl_CmdInfo_\0"}));
- my $result = '';
- if (ref $obj)
- {
- my $class;
- if ($type =~ /^([^=]+)=(.*)$/)
- {
- $class = $1;
- $type = $2;
- $result .= 'bless(';
- }
- if ($type =~ /^ARRAY/)
- {
- $result .= '[';
- $result .= pretty_list(@$obj);
- $result .= ']';
- }
- elsif ($type =~ /^HASH/)
- {
- $result .= '{';
- if (%$obj)
- {
- my ($key, $value);
- while (($key,$value) = each %$obj)
- {
- $result .= $key . '=>' . Pretty($value) . ',';
- }
- chop($result);
- }
- $result .= '}';
- }
- elsif ($type =~ /^REF/)
- {
- $result .= "\\" . Pretty($$obj);
- }
- elsif ($type =~ /^SCALAR/)
- {
- $result .= Pretty($$obj);
- }
- else
- {
- $result .= $type;
- }
- $result .= ",$class)" if (defined $class);
- }
- else
- {
- if ($obj =~ /^-?[0-9]+(.[0-9]*(e[+-][0-9]+)?)?$/ ||
- $obj =~ /^[A-Z_][A-Za-z_0-9]*$/ ||
- $obj =~ /^[a-z_][A-Za-z_0-9]*[A-Z_][A-Za-z_0-9]*$/
- )
- {
- $result .= $obj;
- }
- else
- {
- $result .= "'" . $obj . "'";
- }
- }
- return $result;
-}
-
-sub PrintArgs
-{
- my $name = (caller(1))[3];
- print "$name(",Pretty(@_),")\n";
-}
-
-1;
diff --git a/Master/perltl/site/lib/Tk/ROText.pm b/Master/perltl/site/lib/Tk/ROText.pm
deleted file mode 100644
index 96fa1e070d3..00000000000
--- a/Master/perltl/site/lib/Tk/ROText.pm
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::ROText;
-
-use vars qw($VERSION);
-$VERSION = '3.024'; # $Id: //depot/Tk8/Tk/ROText.pm#24 $
-
-use Tk::Text;
-use base qw(Tk::Text);
-
-Construct Tk::Widget 'ROText';
-
-sub clipEvents
-{
- return qw[Copy];
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- my $val = $class->bindRdOnly($mw);
- my $cb = $mw->bind($class,'<Next>');
- $mw->bind($class,'<space>',$cb) if (defined $cb);
- $cb = $mw->bind($class,'<Prior>');
- $mw->bind($class,'<BackSpace>',$cb) if (defined $cb);
- $class->clipboardOperations($mw,'Copy');
- return $val;
-}
-
-sub Tk::Widget::ScrlROText { shift->Scrolled('ROText' => @_) }
-
-1;
-
-__END__
-
diff --git a/Master/perltl/site/lib/Tk/Radiobutton.pm b/Master/perltl/site/lib/Tk/Radiobutton.pm
deleted file mode 100644
index a706de6675e..00000000000
--- a/Master/perltl/site/lib/Tk/Radiobutton.pm
+++ /dev/null
@@ -1,45 +0,0 @@
-# Conversion from Tk4.0 button.tcl competed.
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# Copyright (c) 1995-1999 Nick Ing-Simmons. All rights reserved.
-# This program is free software; you can redistribute it and/or
-
-package Tk::Radiobutton;
-
-use vars qw($VERSION);
-$VERSION = '3.013'; # $Id: //depot/Tk8/Tk/Radiobutton.pm#13 $
-
-# modify it under the same terms as Perl itself, subject
-# to additional disclaimer in license.terms due to partial
-# derivation from Tk4.0 sources.
-
-require Tk::Button;
-
-
-use base qw(Tk::Button);
-Construct Tk::Widget 'Radiobutton';
-
-sub Tk_cmd { \&Tk::radiobutton }
-
-sub CreateOptions
-{
- return (shift->SUPER::CreateOptions,'-variable');
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class,'<Enter>', 'Enter');
- $mw->bind($class,'<Leave>', 'Leave');
- $mw->bind($class,'<1>', 'Invoke');
- $mw->bind($class,'<space>', 'Invoke');
- return $class;
-}
-
-sub Invoke
-{
- my $w = shift;
- $w->invoke() unless($w->cget('-state') eq 'disabled');
-}
-
-1;
diff --git a/Master/perltl/site/lib/Tk/Scale.pm b/Master/perltl/site/lib/Tk/Scale.pm
deleted file mode 100644
index f31a68d9cb0..00000000000
--- a/Master/perltl/site/lib/Tk/Scale.pm
+++ /dev/null
@@ -1,278 +0,0 @@
-# Converted from scale.tcl --
-#
-# This file defines the default bindings for Tk scale widgets.
-#
-# @(#) scale.tcl 1.3 94/12/17 16:05:23
-#
-# Copyright (c) 1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-package Tk::Scale;
-
-use vars qw($VERSION);
-$VERSION = '3.012'; # $Id: //depot/Tk8/Scale/Scale.pm#12 $
-
-use Tk qw($XS_VERSION);
-use AutoLoader;
-
-use base qw(Tk::Widget);
-
-Construct Tk::Widget 'Scale';
-
-bootstrap Tk::Scale;
-
-sub Tk_cmd { \&Tk::scale }
-
-Tk::Methods('coords','get','identify','set');
-
-
-import Tk qw(Ev);
-
-#
-# Bind --
-# This procedure below invoked the first time the mouse enters a
-# scale widget or a scale widget receives the input focus. It creates
-# all of the class bindings for scales.
-#
-# Arguments:
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-sub ClassInit
-{
- my ($class,$mw) = @_;
-
- $mw->bind($class,'<Enter>',['Enter',Ev('x'),Ev('y')]);
- $mw->bind($class,'<Motion>',['Activate',Ev('x'),Ev('y')]);
- $mw->bind($class,'<Leave>','Leave');
-
- $mw->bind($class,'<1>',['ButtonDown',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B1-Motion>',['Drag',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B1-Leave>','NoOp');
- $mw->bind($class,'<B1-Enter>','NoOp');
- $mw->bind($class,'<ButtonRelease-1>',['ButtonUp',Ev('x'),Ev('y')]);
-
- $mw->bind($class,'<2>',['ButtonDown',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B2-Motion>',['Drag',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B2-Leave>','NoOp');
- $mw->bind($class,'<B2-Enter>','NoOp');
- $mw->bind($class,'<ButtonRelease-2>',['ButtonUp',Ev('x'),Ev('y')]);
-
- $mw->bind($class,'<Control-1>',['ControlPress',Ev('x'),Ev('y')]);
-
- $mw->bind($class,'<Up>',['Increment','up','little','noRepeat']);
- $mw->bind($class,'<Down>',['Increment','down','little','noRepeat']);
- $mw->bind($class,'<Left>',['Increment','up','little','noRepeat']);
- $mw->bind($class,'<Right>',['Increment','down','little','noRepeat']);
-
- $mw->bind($class,'<Control-Up>',['Increment','up','big','noRepeat']);
- $mw->bind($class,'<Control-Down>',['Increment','down','big','noRepeat']);
- $mw->bind($class,'<Control-Left>',['Increment','up','big','noRepeat']);
- $mw->bind($class,'<Control-Right>',['Increment','down','big','noRepeat']);
-
- $mw->bind($class,'<Home>',['set',Ev('cget','-from')]);
- $mw->bind($class,'<End>',['set',Ev('cget','-to')]);
- return $class;
-}
-
-1;
-
-__END__
-
-# Activate --
-# This procedure is invoked to check a given x-y position in the
-# scale and activate the slider if the x-y position falls within
-# the slider.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates.
-sub Activate
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- return if ($w->cget('-state') eq 'disabled');
- my $ident = $w->identify($x,$y);
- if (defined($ident) && $ident eq 'slider')
- {
- $w->configure(-state => 'active')
- }
- else
- {
- $w->configure(-state => 'normal')
- }
-}
-
-sub Leave
-{
- my ($w) = @_;
- $w->configure('-activebackground',$w->{'activeBg'}) if ($Tk::strictMotif);
- $w->configure('-state','normal') if ($w->cget('-state') eq 'active');
-}
-
-sub Enter
-{
- my ($w,$x,$y) = @_;
- if ($Tk::strictMotif)
- {
- $w->{'activeBg'} = $w->cget('-activebackground');
- $w->configure('-activebackground',$w->cget('-background'));
- }
- $w->Activate($x,$y);
-}
-
-sub ButtonUp
-{
- my ($w,$x,$y) = @_;
- $w->CancelRepeat();
- $w->EndDrag();
- $w->Activate($x,$y)
-}
-
-
-# ButtonDown --
-# This procedure is invoked when a button is pressed in a scale. It
-# takes different actions depending on where the button was pressed.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates of button press.
-sub ButtonDown
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- $Tk::dragging = 0;
- $el = $w->identify($x,$y);
- return unless ($el);
- if ($el eq 'trough1')
- {
- $w->Increment('up','little','initial')
- }
- elsif ($el eq 'trough2')
- {
- $w->Increment('down','little','initial')
- }
- elsif ($el eq 'slider')
- {
- $Tk::dragging = 1;
- my @coords = $w->coords();
- $Tk::deltaX = $x-$coords[0];
- $Tk::deltaY = $y-$coords[1];
- }
-}
-# Drag --
-# This procedure is called when the mouse is dragged with
-# mouse button 1 down. If the drag started inside the slider
-# (i.e. the scale is active) then the scale's value is adjusted
-# to reflect the mouse's position.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates.
-sub Drag
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- if (!$Tk::dragging)
- {
- return;
- }
- $w->set($w->get($x-$Tk::deltaX,$y-$Tk::deltaY))
-}
-# EndDrag --
-# This procedure is called to end an interactive drag of the
-# slider. It just marks the drag as over.
-# Arguments:
-# w - The scale widget.
-sub EndDrag
-{
- my $w = shift;
- if (!$Tk::dragging)
- {
- return;
- }
- $Tk::dragging = 0;
-}
-# Increment --
-# This procedure is invoked to increment the value of a scale and
-# to set up auto-repeating of the action if that is desired. The
-# way the value is incremented depends on the "dir" and "big"
-# arguments.
-#
-# Arguments:
-# w - The scale widget.
-# dir - "up" means move value towards -from, "down" means
-# move towards -to.
-# big - Size of increments: "big" or "little".
-# repeat - Whether and how to auto-repeat the action: "noRepeat"
-# means don't auto-repeat, "initial" means this is the
-# first action in an auto-repeat sequence, and "again"
-# means this is the second repetition or later.
-sub Increment
-{
- my $w = shift;
- my $dir = shift;
- my $big = shift;
- my $repeat = shift;
- my $inc;
- if ($big eq 'big')
- {
- $inc = $w->cget('-bigincrement');
- if ($inc == 0)
- {
- $inc = abs(($w->cget('-to')-$w->cget('-from')))/10.0
- }
- if ($inc < $w->cget('-resolution'))
- {
- $inc = $w->cget('-resolution')
- }
- }
- else
- {
- $inc = $w->cget('-resolution')
- }
- if (($w->cget('-from') > $w->cget('-to')) ^ ($dir eq 'up'))
- {
- $inc = -$inc
- }
- $w->set($w->get()+$inc);
- if ($repeat eq 'again')
- {
- $w->RepeatId($w->after($w->cget('-repeatinterval'),'Increment',$w,$dir,$big,'again'));
- }
- elsif ($repeat eq 'initial')
- {
- $w->RepeatId($w->after($w->cget('-repeatdelay'),'Increment',$w,$dir,$big,'again'));
- }
-}
-# ControlPress --
-# This procedure handles button presses that are made with the Control
-# key down. Depending on the mouse position, it adjusts the scale
-# value to one end of the range or the other.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates where the button was pressed.
-sub ControlPress
-{
- my ($w,$x,$y) = @_;
- my $el = $w->identify($x,$y);
- return unless ($el);
- if ($el eq 'trough1')
- {
- $w->set($w->cget('-from'))
- }
- elsif ($el eq 'trough2')
- {
- $w->set($w->cget('-to'))
- }
-}
-
-
diff --git a/Master/perltl/site/lib/Tk/Scrollbar.pm b/Master/perltl/site/lib/Tk/Scrollbar.pm
deleted file mode 100644
index a828682514f..00000000000
--- a/Master/perltl/site/lib/Tk/Scrollbar.pm
+++ /dev/null
@@ -1,414 +0,0 @@
-# Conversion from Tk4.0 scrollbar.tcl competed.
-package Tk::Scrollbar;
-require Tk;
-import Tk qw($XS_VERSION);
-use AutoLoader;
-
-use vars qw($VERSION);
-$VERSION = '3.014'; # $Id: //depot/Tk8/Scrollbar/Scrollbar.pm#14 $
-
-use base qw(Tk::Widget);
-
-Construct Tk::Widget 'Scrollbar';
-
-bootstrap Tk::Scrollbar;
-
-sub Tk_cmd { \&Tk::scrollbar }
-
-Tk::Methods('activate','delta','fraction','get','identify','set');
-
-sub Needed
-{
- my ($sb) = @_;
- my @val = $sb->get;
- return 1 unless (@val == 2);
- return 1 if $val[0] != 0.0;
- return 1 if $val[1] != 1.0;
- return 0;
-}
-
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $mw->bind($class, '<Enter>', 'Enter');
- $mw->bind($class, '<Motion>', 'Motion');
- $mw->bind($class, '<Leave>', 'Leave');
-
- $mw->bind($class, '<1>', 'ButtonDown');
- $mw->bind($class, '<B1-Motion>', 'Drag');
- $mw->bind($class, '<ButtonRelease-1>', 'ButtonUp');
- $mw->bind($class, '<B1-Leave>', 'NoOp'); # prevent generic <Leave>
- $mw->bind($class, '<B1-Enter>', 'NoOp'); # prevent generic <Enter>
- $mw->bind($class, '<Control-1>', 'ScrlTopBottom');
-
- $mw->bind($class, '<2>', 'ButtonDown');
- $mw->bind($class, '<B2-Motion>', 'Drag');
- $mw->bind($class, '<ButtonRelease-2>', 'ButtonUp');
- $mw->bind($class, '<B2-Leave>', 'NoOp'); # prevent generic <Leave>
- $mw->bind($class, '<B2-Enter>', 'NoOp'); # prevent generic <Enter>
- $mw->bind($class, '<Control-2>', 'ScrlTopBottom');
-
- $mw->bind($class, '<Up>', ['ScrlByUnits','v',-1]);
- $mw->bind($class, '<Down>', ['ScrlByUnits','v', 1]);
- $mw->bind($class, '<Control-Up>', ['ScrlByPages','v',-1]);
- $mw->bind($class, '<Control-Down>', ['ScrlByPages','v', 1]);
-
- $mw->bind($class, '<Left>', ['ScrlByUnits','h',-1]);
- $mw->bind($class, '<Right>', ['ScrlByUnits','h', 1]);
- $mw->bind($class, '<Control-Left>', ['ScrlByPages','h',-1]);
- $mw->bind($class, '<Control-Right>', ['ScrlByPages','h', 1]);
-
- $mw->bind($class, '<Prior>', ['ScrlByPages','hv',-1]);
- $mw->bind($class, '<Next>', ['ScrlByPages','hv', 1]);
-
- $mw->bind($class, '<Home>', ['ScrlToPos', 0]);
- $mw->bind($class, '<End>', ['ScrlToPos', 1]);
-
- return $class;
-
-}
-
-1;
-
-__END__
-
-sub Enter
-{
- my $w = shift;
- my $e = $w->XEvent;
- if ($Tk::strictMotif)
- {
- my $bg = $w->cget('-background');
- $activeBg = $w->cget('-activebackground');
- $w->configure('-activebackground' => $bg);
- }
- $w->activate($w->identify($e->x,$e->y));
-}
-
-sub Leave
-{
- my $w = shift;
- if ($Tk::strictMotif)
- {
- $w->configure('-activebackground' => $activeBg) if (defined $activeBg) ;
- }
- $w->activate('');
-}
-
-sub Motion
-{
- my $w = shift;
- my $e = $w->XEvent;
- $w->activate($w->identify($e->x,$e->y));
-}
-
-# tkScrollButtonDown --
-# This procedure is invoked when a button is pressed in a scrollbar.
-# It changes the way the scrollbar is displayed and takes actions
-# depending on where the mouse is.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates.
-
-sub ButtonDown
-{my $w = shift;
- my $e = $w->XEvent;
- my $element = $w->identify($e->x,$e->y);
- $w->configure('-activerelief' => 'sunken');
- if ($e->b == 1 and
- (defined($element) && $element eq 'slider'))
- {
- $w->StartDrag($e->x,$e->y);
- }
- elsif ($e->b == 2 and
- (defined($element) && $element =~ /^(trough[12]|slider)$/o))
- {
- my $pos = $w->fraction($e->x, $e->y);
- my($head, $tail) = $w->get;
- my $len = $tail - $head;
-
- $head = $pos - $len/2;
- $tail = $pos + $len/2;
- if ($head < 0) {
- $head = 0;
- $tail = $len;
- }
- elsif ($tail > 1) {
- $head = 1 - $len;
- $tail = 1;
- }
- $w->ScrlToPos($head);
- $w->set($head, $tail);
-
- $w->StartDrag($e->x,$e->y);
- }
- else
- {
- $w->Select($element,'initial');
- }
-}
-
-# tkScrollButtonUp --
-# This procedure is invoked when a button is released in a scrollbar.
-# It cancels scans and auto-repeats that were in progress, and restores
-# the way the active element is displayed.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates.
-
-sub ButtonUp
-{my $w = shift;
- my $e = $w->XEvent;
- $w->CancelRepeat;
- $w->configure('-activerelief' => 'raised');
- $w->EndDrag($e->x,$e->y);
- $w->activate($w->identify($e->x,$e->y));
-}
-
-# tkScrollSelect --
-# This procedure is invoked when button 1 is pressed over the scrollbar.
-# It invokes one of several scrolling actions depending on where in
-# the scrollbar the button was pressed.
-#
-# Arguments:
-# w - The scrollbar widget.
-# element - The element of the scrollbar that was selected, such
-# as "arrow1" or "trough2". Shouldn't be "slider".
-# repeat - Whether and how to auto-repeat the action: "noRepeat"
-# means don't auto-repeat, "initial" means this is the
-# first action in an auto-repeat sequence, and "again"
-# means this is the second repetition or later.
-
-sub Select
-{
- my $w = shift;
- my $element = shift;
- my $repeat = shift;
- return unless defined ($element);
- if ($element eq 'arrow1')
- {
- $w->ScrlByUnits('hv',-1);
- }
- elsif ($element eq 'trough1')
- {
- $w->ScrlByPages('hv',-1);
- }
- elsif ($element eq 'trough2')
- {
- $w->ScrlByPages('hv', 1);
- }
- elsif ($element eq 'arrow2')
- {
- $w->ScrlByUnits('hv', 1);
- }
- else
- {
- return;
- }
-
- if ($repeat eq 'again')
- {
- $w->RepeatId($w->after($w->cget('-repeatinterval'),['Select',$w,$element,'again']));
- }
- elsif ($repeat eq 'initial')
- {
- $w->RepeatId($w->after($w->cget('-repeatdelay'),['Select',$w,$element,'again']));
- }
-}
-
-# tkScrollStartDrag --
-# This procedure is called to initiate a drag of the slider. It just
-# remembers the starting position of the slider.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The mouse position at the start of the drag operation.
-
-sub StartDrag
-{my $w = shift;
- my $x = shift;
- my $y = shift;
- return unless (defined ($w->cget('-command')));
- $initMouse = $w->fraction($x,$y);
- @initValues = $w->get();
- if (@initValues == 2)
- {
- $initPos = $initValues[0];
- }
- else
- {
- $initPos = $initValues[2] / $initValues[0];
- }
-}
-
-# tkScrollDrag --
-# This procedure is called for each mouse motion even when the slider
-# is being dragged. It notifies the associated widget if we're not
-# jump scrolling, and it just updates the scrollbar if we are jump
-# scrolling.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The current mouse position.
-
-sub Drag
-{my $w = shift;
- my $e = $w->XEvent;
- return unless (defined $initMouse);
- my $f = $w->fraction($e->x,$e->y);
- my $delta = $f - $initMouse;
- if ($w->cget('-jump'))
- {
- if (@initValues == 2)
- {
- $w->set($initValues[0]+$delta,$initValues[1]+$delta);
- }
- else
- {
- $delta = int($delta * $initValues[0]);
- $initValues[2] += $delta;
- $initValues[3] += $delta;
- $w->set(@initValues);
- }
- }
- else
- {
- $w->ScrlToPos($initPos+$delta);
- }
-}
-
-# tkScrollEndDrag --
-# This procedure is called to end an interactive drag of the slider.
-# It scrolls the window if we're in jump mode, otherwise it does nothing.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The mouse position at the end of the drag operation.
-
-sub EndDrag
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- return unless defined($initMouse);
- if ($w->cget('-jump'))
- {
- $w->ScrlToPos($initPos + $w->fraction($x,$y) - $initMouse);
- }
- undef $initMouse;
-}
-
-# tkScrlByUnits --
-# This procedure tells the scrollbar's associated widget to scroll up
-# or down by a given number of units. It notifies the associated widget
-# in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# orient - Which kinds of scrollbars this applies to: "h" for
-# horizontal, "v" for vertical, "hv" for both.
-# amount - How many units to scroll: typically 1 or -1.
-
-sub ScrlByUnits
-{my $w = shift;
- my $orient = shift;
- my $amount = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- return if (index($orient,substr($w->cget('-orient'),0,1)) < 0);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('scroll',$amount,'units');
- }
- else
- {
- $cmd->Call($info[2]+$amount);
- }
-}
-
-# tkScrlByPages --
-# This procedure tells the scrollbar's associated widget to scroll up
-# or down by a given number of screenfuls. It notifies the associated
-# widget in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# orient - Which kinds of scrollbars this applies to: "h" for
-# horizontal, "v" for vertical, "hv" for both.
-# amount - How many screens to scroll: typically 1 or -1.
-
-sub ScrlByPages
-{
- my $w = shift;
- my $orient = shift;
- my $amount = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- return if (index($orient,substr($w->cget('-orient'),0,1)) < 0);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('scroll',$amount,'pages');
- }
- else
- {
- $cmd->Call($info[2]+$amount*($info[1]-1));
- }
-}
-
-# tkScrlToPos --
-# This procedure tells the scrollbar's associated widget to scroll to
-# a particular location, given by a fraction between 0 and 1. It notifies
-# the associated widget in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# pos - A fraction between 0 and 1 indicating a desired position
-# in the document.
-
-sub ScrlToPos
-{
- my $w = shift;
- my $pos = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('moveto',$pos);
- }
- else
- {
- $cmd->Call(int($info[0]*$pos));
- }
-}
-
-# tkScrlTopBottom
-# Scroll to the top or bottom of the document, depending on the mouse
-# position.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates within the widget.
-
-sub ScrlTopBottom
-{
- my $w = shift;
- my $e = $w->XEvent;
- my $element = $w->identify($e->x,$e->y);
- return unless ($element);
- if ($element =~ /1$/)
- {
- $w->ScrlToPos(0);
- }
- elsif ($element =~ /2$/)
- {
- $w->ScrlToPos(1);
- }
-}
-
-
diff --git a/Master/perltl/site/lib/Tk/Submethods.pm b/Master/perltl/site/lib/Tk/Submethods.pm
deleted file mode 100644
index 3c3abcea379..00000000000
--- a/Master/perltl/site/lib/Tk/Submethods.pm
+++ /dev/null
@@ -1,46 +0,0 @@
-package Tk::Submethods;
-
-use vars qw($VERSION);
-$VERSION = '3.014'; # $Id: //depot/Tk8/Tk/Submethods.pm#14 $
-
-sub import
-{
- my $class = shift;
- no strict 'refs';
- my $package = caller(0);
- while (@_)
- {
- my $fn = shift;
- my $sm = shift;
- foreach my $sub (@{$sm})
- {
- my ($suffix) = $sub =~ /(\w+)$/;
- my $pfn = $package.'::'.$fn;
- *{$pfn."\u$suffix"} = sub { shift->$pfn($sub,@_) };
- }
- }
-}
-
-sub Direct
-{
- my $class = shift;
- no strict 'refs';
- my $package = caller(0);
- while (@_)
- {
- my $fn = shift;
- my $sm = shift;
- my $sub;
- foreach $sub (@{$sm})
- {
- # eval "sub ${package}::${sub} { shift->$fn('$sub',\@_) }";
- *{$package.'::'.$sub} = sub { shift->$fn($sub,@_) };
- }
- }
-}
-
-1;
-
-__END__
-
-=cut
diff --git a/Master/perltl/site/lib/Tk/Text.pm b/Master/perltl/site/lib/Tk/Text.pm
deleted file mode 100644
index c4b4f162f77..00000000000
--- a/Master/perltl/site/lib/Tk/Text.pm
+++ /dev/null
@@ -1,1600 +0,0 @@
-# text.tcl --
-#
-# This file defines the default bindings for Tk text widgets.
-#
-# @(#) text.tcl 1.18 94/12/17 16:05:26
-#
-# Copyright (c) 1992-1994 The Regents of the University of California.
-# Copyright (c) 1994 Sun Microsystems, Inc.
-# perl/Tk version:
-# Copyright (c) 1995-1999 Nick Ing-Simmons
-# Copyright (c) 1999 Greg London
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-package Tk::Text;
-use AutoLoader;
-use Carp;
-use strict;
-
-use Text::Tabs;
-
-use vars qw($VERSION);
-$VERSION = '3.044'; # $Id: //depot/Tk8/Text/Text.pm#44 $
-
-use Tk qw(Ev $XS_VERSION);
-use base qw(Tk::Clipboard Tk::Widget);
-
-Construct Tk::Widget 'Text';
-
-bootstrap Tk::Text;
-
-sub Tk_cmd { \&Tk::text }
-
-sub Tk::Widget::ScrlText { shift->Scrolled('Text' => @_) }
-
-Tk::Methods('bbox','compare','debug','delete','dlineinfo','dump',
- 'get','image','index','insert','mark','scan','search',
- 'see','tag','window','xview','yview');
-
-use Tk::Submethods ( 'mark' => [qw(gravity names next previous set unset)],
- 'scan' => [qw(mark dragto)],
- 'tag' => [qw(add bind cget configure delete lower
- names nextrange prevrange raise ranges remove)],
- 'window' => [qw(cget configure create names)],
- 'image' => [qw(cget configure create names)],
- 'xview' => [qw(moveto scroll)],
- 'yview' => [qw(moveto scroll)],
- );
-
-sub Tag;
-sub Tags;
-
-sub bindRdOnly
-{
-
- my ($class,$mw) = @_;
-
- # Standard Motif bindings:
- $mw->bind($class,'<Meta-B1-Motion>','NoOp');
- $mw->bind($class,'<Meta-1>','NoOp');
- $mw->bind($class,'<Alt-KeyPress>','NoOp');
- $mw->bind($class,'<Escape>','unselectAll');
-
- $mw->bind($class,'<1>',['Button1',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B1-Motion>','B1_Motion' ) ;
- $mw->bind($class,'<B1-Leave>','B1_Leave' ) ;
- $mw->bind($class,'<B1-Enter>','CancelRepeat');
- $mw->bind($class,'<ButtonRelease-1>','CancelRepeat');
- $mw->bind($class,'<Control-1>',['markSet','insert',Ev('@')]);
-
- $mw->bind($class,'<Double-1>','selectWord' ) ;
- $mw->bind($class,'<Triple-1>','selectLine' ) ;
- $mw->bind($class,'<Shift-1>','adjustSelect' ) ;
- $mw->bind($class,'<Double-Shift-1>',['SelectTo',Ev('@'),'word']);
- $mw->bind($class,'<Triple-Shift-1>',['SelectTo',Ev('@'),'line']);
-
- $mw->bind($class,'<Left>',['SetCursor',Ev('index','insert-1c')]);
- $mw->bind($class,'<Shift-Left>',['KeySelect',Ev('index','insert-1c')]);
- $mw->bind($class,'<Control-Left>',['SetCursor',Ev('index','insert-1c wordstart')]);
- $mw->bind($class,'<Shift-Control-Left>',['KeySelect',Ev('index','insert-1c wordstart')]);
-
- $mw->bind($class,'<Right>',['SetCursor',Ev('index','insert+1c')]);
- $mw->bind($class,'<Shift-Right>',['KeySelect',Ev('index','insert+1c')]);
- $mw->bind($class,'<Control-Right>',['SetCursor',Ev('index','insert+1c wordend')]);
- $mw->bind($class,'<Shift-Control-Right>',['KeySelect',Ev('index','insert wordend')]);
-
- $mw->bind($class,'<Up>',['SetCursor',Ev('UpDownLine',-1)]);
- $mw->bind($class,'<Shift-Up>',['KeySelect',Ev('UpDownLine',-1)]);
- $mw->bind($class,'<Control-Up>',['SetCursor',Ev('PrevPara','insert')]);
- $mw->bind($class,'<Shift-Control-Up>',['KeySelect',Ev('PrevPara','insert')]);
-
- $mw->bind($class,'<Down>',['SetCursor',Ev('UpDownLine',1)]);
- $mw->bind($class,'<Shift-Down>',['KeySelect',Ev('UpDownLine',1)]);
- $mw->bind($class,'<Control-Down>',['SetCursor',Ev('NextPara','insert')]);
- $mw->bind($class,'<Shift-Control-Down>',['KeySelect',Ev('NextPara','insert')]);
-
- $mw->bind($class,'<Home>',['SetCursor','insert linestart']);
- $mw->bind($class,'<Shift-Home>',['KeySelect','insert linestart']);
- $mw->bind($class,'<Control-Home>',['SetCursor','1.0']);
- $mw->bind($class,'<Control-Shift-Home>',['KeySelect','1.0']);
-
- $mw->bind($class,'<End>',['SetCursor','insert lineend']);
- $mw->bind($class,'<Shift-End>',['KeySelect','insert lineend']);
- $mw->bind($class,'<Control-End>',['SetCursor','end-1char']);
- $mw->bind($class,'<Control-Shift-End>',['KeySelect','end-1char']);
-
- $mw->bind($class,'<Prior>',['SetCursor',Ev('ScrollPages',-1)]);
- $mw->bind($class,'<Shift-Prior>',['KeySelect',Ev('ScrollPages',-1)]);
- $mw->bind($class,'<Control-Prior>',['xview','scroll',-1,'page']);
-
- $mw->bind($class,'<Next>',['SetCursor',Ev('ScrollPages',1)]);
- $mw->bind($class,'<Shift-Next>',['KeySelect',Ev('ScrollPages',1)]);
- $mw->bind($class,'<Control-Next>',['xview','scroll',1,'page']);
-
- $mw->bind($class,'<Shift-Tab>', 'NoOp'); # Needed only to keep <Tab> binding from triggering; does not have to actually do anything.
- $mw->bind($class,'<Control-Tab>','focusNext');
- $mw->bind($class,'<Control-Shift-Tab>','focusPrev');
-
- $mw->bind($class,'<Control-space>',['markSet','anchor','insert']);
- $mw->bind($class,'<Select>',['markSet','anchor','insert']);
- $mw->bind($class,'<Control-Shift-space>',['SelectTo','insert','char']);
- $mw->bind($class,'<Shift-Select>',['SelectTo','insert','char']);
- $mw->bind($class,'<Control-slash>','selectAll');
- $mw->bind($class,'<Control-backslash>','unselectAll');
-
- if (!$Tk::strictMotif)
- {
- $mw->bind($class,'<Control-a>', ['SetCursor','insert linestart']);
- $mw->bind($class,'<Control-b>', ['SetCursor','insert-1c']);
- $mw->bind($class,'<Control-e>', ['SetCursor','insert lineend']);
- $mw->bind($class,'<Control-f>', ['SetCursor','insert+1c']);
- $mw->bind($class,'<Meta-b>', ['SetCursor','insert-1c wordstart']);
- $mw->bind($class,'<Meta-f>', ['SetCursor','insert wordend']);
- $mw->bind($class,'<Meta-less>', ['SetCursor','1.0']);
- $mw->bind($class,'<Meta-greater>', ['SetCursor','end-1c']);
-
- $mw->bind($class,'<Control-n>', ['SetCursor',Ev('UpDownLine',1)]);
- $mw->bind($class,'<Control-p>', ['SetCursor',Ev('UpDownLine',-1)]);
-
- $mw->bind($class,'<2>',['Button2',Ev('x'),Ev('y')]);
- $mw->bind($class,'<B2-Motion>',['Motion2',Ev('x'),Ev('y')]);
- }
- $mw->bind($class,'<Destroy>','Destroy');
- $mw->bind($class, '<3>', ['PostPopupMenu', Ev('X'), Ev('Y')] );
-
- return $class;
-}
-
-sub selectAll
-{
- my ($w) = @_;
- $w->tagAdd('sel','1.0','end');
-}
-
-sub unselectAll
-{
- my ($w) = @_;
- $w->tagRemove('sel','1.0','end');
-}
-
-sub adjustSelect
-{
- my ($w) = @_;
- my $Ev = $w->XEvent;
- $w->ResetAnchor($Ev->xy);
- $w->SelectTo($Ev->xy,'char')
-}
-
-sub selectLine
-{
- my ($w) = @_;
- my $Ev = $w->XEvent;
- $w->SelectTo($Ev->xy,'line');
- Tk::catch { $w->markSet('insert','sel.first') };
-}
-
-sub selectWord
-{
- my ($w) = @_;
- my $Ev = $w->XEvent;
- $w->SelectTo($Ev->xy,'word');
- Tk::catch { $w->markSet('insert','sel.first') }
-}
-
-sub ClassInit
-{
- my ($class,$mw) = @_;
- $class->SUPER::ClassInit($mw);
-
- $class->bindRdOnly($mw);
-
- $mw->bind($class,'<Tab>', 'insertTab');
- $mw->bind($class,'<Control-i>', ['Insert',"\t"]);
- $mw->bind($class,'<Return>', ['Insert',"\n"]);
- $mw->bind($class,'<Delete>','Delete');
- $mw->bind($class,'<BackSpace>','Backspace');
- $mw->bind($class,'<Insert>', \&ToggleInsertMode ) ;
- $mw->bind($class,'<KeyPress>',['InsertKeypress',Ev('A')]);
-
- $mw->bind($class,'<F1>', 'clipboardColumnCopy');
- $mw->bind($class,'<F2>', 'clipboardColumnCut');
- $mw->bind($class,'<F3>', 'clipboardColumnPaste');
-
- # Additional emacs-like bindings:
-
- if (!$Tk::strictMotif)
- {
- $mw->bind($class,'<Control-d>',['delete','insert']);
- $mw->bind($class,'<Control-k>','deleteToEndofLine') ;
- $mw->bind($class,'<Control-o>','openLine');
- $mw->bind($class,'<Control-t>','Transpose');
- $mw->bind($class,'<Meta-d>',['delete','insert','insert wordend']);
- $mw->bind($class,'<Meta-BackSpace>',['delete','insert-1c wordstart','insert']);
-
- # A few additional bindings of my own.
- $mw->bind($class,'<Control-h>','deleteBefore');
- $mw->bind($class,'<ButtonRelease-2>','ButtonRelease2');
- }
- $Tk::prevPos = undef;
- return $class;
-}
-
-sub insertTab
-{
- my ($w) = @_;
- $w->Insert("\t");
- $w->focus;
- $w->break
-}
-
-sub deleteToEndofLine
-{
- my ($w) = @_;
- if ($w->compare('insert','==','insert lineend'))
- {
- $w->delete('insert')
- }
- else
- {
- $w->delete('insert','insert lineend')
- }
-}
-
-sub openLine
-{
- my ($w) = @_;
- $w->insert('insert',"\n");
- $w->markSet('insert','insert-1c')
-}
-
-sub Button2
-{
- my ($w,$x,$y) = @_;
- $w->scan('mark',$x,$y);
- $Tk::x = $x;
- $Tk::y = $y;
- $Tk::mouseMoved = 0;
-}
-
-sub Motion2
-{
- my ($w,$x,$y) = @_;
- $Tk::mouseMoved = 1 if ($x != $Tk::x || $y != $Tk::y);
- $w->scan('dragto',$x,$y) if ($Tk::mouseMoved);
-}
-
-sub ButtonRelease2
-{
- my ($w) = @_;
- my $Ev = $w->XEvent;
- if (!$Tk::mouseMoved)
- {
- Tk::catch { $w->insert($Ev->xy,$w->SelectionGet) }
- }
-}
-
-sub InsertSelection
-{
- my ($w) = @_;
- Tk::catch { $w->Insert($w->SelectionGet) }
-}
-
-sub Backspace
-{
- my ($w) = @_;
- my $sel = Tk::catch { $w->tag('nextrange','sel','1.0','end') };
- if (defined $sel)
- {
- $w->delete('sel.first','sel.last');
- return;
- }
- $w->deleteBefore;
-}
-
-sub deleteBefore
-{
- my ($w) = @_;
- if ($w->compare('insert','!=','1.0'))
- {
- $w->delete('insert-1c');
- $w->see('insert')
- }
-}
-
-sub Delete
-{
- my ($w) = @_;
- my $sel = Tk::catch { $w->tag('nextrange','sel','1.0','end') };
- if (defined $sel)
- {
- $w->delete('sel.first','sel.last')
- }
- else
- {
- $w->delete('insert');
- $w->see('insert')
- }
-}
-
-# Button1 --
-# This procedure is invoked to handle button-1 presses in text
-# widgets. It moves the insertion cursor, sets the selection anchor,
-# and claims the input focus.
-#
-# Arguments:
-# w - The text window in which the button was pressed.
-# x - The x-coordinate of the button press.
-# y - The x-coordinate of the button press.
-sub Button1
-{
- my ($w,$x,$y) = @_;
- $Tk::selectMode = 'char';
- $Tk::mouseMoved = 0;
- $w->SetCursor('@'.$x.','.$y);
- $w->markSet('anchor','insert');
- $w->focus() if ($w->cget('-state') eq 'normal');
-}
-
-sub B1_Motion
-{
- my ($w) = @_;
- return unless defined $Tk::mouseMoved;
- my $Ev = $w->XEvent;
- $Tk::x = $Ev->x;
- $Tk::y = $Ev->y;
- $w->SelectTo($Ev->xy)
-}
-
-sub B1_Leave
-{
- my ($w) = @_;
- my $Ev = $w->XEvent;
- $Tk::x = $Ev->x;
- $Tk::y = $Ev->y;
- $w->AutoScan;
-}
-
-# SelectTo --
-# This procedure is invoked to extend the selection, typically when
-# dragging it with the mouse. Depending on the selection mode (character,
-# word, line) it selects in different-sized units. This procedure
-# ignores mouse motions initially until the mouse has moved from
-# one character to another or until there have been multiple clicks.
-#
-# Arguments:
-# w - The text window in which the button was pressed.
-# index - Index of character at which the mouse button was pressed.
-sub SelectTo
-{
- my ($w, $index, $mode)= @_;
- $Tk::selectMode = $mode if defined ($mode);
- my $cur = $w->index($index);
- my $anchor = Tk::catch { $w->index('anchor') };
- if (!defined $anchor)
- {
- $w->markSet('anchor',$anchor = $cur);
- $Tk::mouseMoved = 0;
- }
- elsif ($w->compare($cur,'!=',$anchor))
- {
- $Tk::mouseMoved = 1;
- }
- $Tk::selectMode = 'char' unless (defined $Tk::selectMode);
- $mode = $Tk::selectMode;
- my ($first,$last);
- if ($mode eq 'char')
- {
- if ($w->compare($cur,'<','anchor'))
- {
- $first = $cur;
- $last = 'anchor';
- }
- else
- {
- $first = 'anchor';
- $last = $cur
- }
- }
- elsif ($mode eq 'word')
- {
- if ($w->compare($cur,'<','anchor'))
- {
- $first = $w->index("$cur wordstart");
- $last = $w->index('anchor - 1c wordend')
- }
- else
- {
- $first = $w->index('anchor wordstart');
- $last = $w->index("$cur wordend")
- }
- }
- elsif ($mode eq 'line')
- {
- if ($w->compare($cur,'<','anchor'))
- {
- $first = $w->index("$cur linestart");
- $last = $w->index('anchor - 1c lineend + 1c')
- }
- else
- {
- $first = $w->index('anchor linestart');
- $last = $w->index("$cur lineend + 1c")
- }
- }
- if ($Tk::mouseMoved || $Tk::selectMode ne 'char')
- {
- $w->tagRemove('sel','1.0',$first);
- $w->tagAdd('sel',$first,$last);
- $w->tagRemove('sel',$last,'end');
- $w->idletasks;
- }
-}
-# AutoScan --
-# This procedure is invoked when the mouse leaves a text window
-# with button 1 down. It scrolls the window up, down, left, or right,
-# depending on where the mouse is (this information was saved in
-# tkPriv(x) and tkPriv(y)), and reschedules itself as an 'after'
-# command so that the window continues to scroll until the mouse
-# moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The text window.
-sub AutoScan
-{
- my ($w) = @_;
- if ($Tk::y >= $w->height)
- {
- $w->yview('scroll',2,'units')
- }
- elsif ($Tk::y < 0)
- {
- $w->yview('scroll',-2,'units')
- }
- elsif ($Tk::x >= $w->width)
- {
- $w->xview('scroll',2,'units')
- }
- elsif ($Tk::x < 0)
- {
- $w->xview('scroll',-2,'units')
- }
- else
- {
- return;
- }
- $w->SelectTo('@' . $Tk::x . ','. $Tk::y);
- $w->RepeatId($w->after(50,['AutoScan',$w]));
-}
-# SetCursor
-# Move the insertion cursor to a given position in a text. Also
-# clears the selection, if there is one in the text, and makes sure
-# that the insertion cursor is visible.
-#
-# Arguments:
-# w - The text window.
-# pos - The desired new position for the cursor in the window.
-sub SetCursor
-{
- my ($w,$pos) = @_;
- $pos = 'end - 1 chars' if $w->compare($pos,'==','end');
- $w->markSet('insert',$pos);
- $w->unselectAll;
- $w->see('insert')
-}
-# KeySelect
-# This procedure is invoked when stroking out selections using the
-# keyboard. It moves the cursor to a new position, then extends
-# the selection to that position.
-#
-# Arguments:
-# w - The text window.
-# new - A new position for the insertion cursor (the cursor has not
-# actually been moved to this position yet).
-sub KeySelect
-{
- my ($w,$new) = @_;
- my ($first,$last);
- if (!defined $w->tag('ranges','sel'))
- {
- # No selection yet
- $w->markSet('anchor','insert');
- if ($w->compare($new,'<','insert'))
- {
- $w->tagAdd('sel',$new,'insert')
- }
- else
- {
- $w->tagAdd('sel','insert',$new)
- }
- }
- else
- {
- # Selection exists
- if ($w->compare($new,'<','anchor'))
- {
- $first = $new;
- $last = 'anchor'
- }
- else
- {
- $first = 'anchor';
- $last = $new
- }
- $w->tagRemove('sel','1.0',$first);
- $w->tagAdd('sel',$first,$last);
- $w->tagRemove('sel',$last,'end')
- }
- $w->markSet('insert',$new);
- $w->see('insert');
- $w->idletasks;
-}
-# ResetAnchor --
-# Set the selection anchor to whichever end is farthest from the
-# index argument. One special trick: if the selection has two or
-# fewer characters, just leave the anchor where it is. In this
-# case it does not matter which point gets chosen for the anchor,
-# and for the things like Shift-Left and Shift-Right this produces
-# better behavior when the cursor moves back and forth across the
-# anchor.
-#
-# Arguments:
-# w - The text widget.
-# index - Position at which mouse button was pressed, which determines
-# which end of selection should be used as anchor point.
-sub ResetAnchor
-{
- my ($w,$index) = @_;
- if (!defined $w->tag('ranges','sel'))
- {
- $w->markSet('anchor',$index);
- return;
- }
- my $a = $w->index($index);
- my $b = $w->index('sel.first');
- my $c = $w->index('sel.last');
- if ($w->compare($a,'<',$b))
- {
- $w->markSet('anchor','sel.last');
- return;
- }
- if ($w->compare($a,'>',$c))
- {
- $w->markSet('anchor','sel.first');
- return;
- }
- my ($lineA,$chA) = split(/\./,$a);
- my ($lineB,$chB) = split(/\./,$b);
- my ($lineC,$chC) = split(/\./,$c);
- if ($lineB < $lineC+2)
- {
- my $total = length($w->get($b,$c));
- if ($total <= 2)
- {
- return;
- }
- if (length($w->get($b,$a)) < $total/2)
- {
- $w->markSet('anchor','sel.last')
- }
- else
- {
- $w->markSet('anchor','sel.first')
- }
- return;
- }
- if ($lineA-$lineB < $lineC-$lineA)
- {
- $w->markSet('anchor','sel.last')
- }
- else
- {
- $w->markSet('anchor','sel.first')
- }
-}
-
-########################################################################
-sub markExists
-{
- my ($w, $markname)=@_;
- my $mark_exists=0;
- my @markNames_list = $w->markNames;
- foreach my $mark (@markNames_list)
- { if ($markname eq $mark) {$mark_exists=1;last;} }
- return $mark_exists;
-}
-
-########################################################################
-sub OverstrikeMode
-{
- my ($w,$mode) = @_;
-
- $w->{'OVERSTRIKE_MODE'} =0 unless exists($w->{'OVERSTRIKE_MODE'});
-
- $w->{'OVERSTRIKE_MODE'}=$mode if (@_ > 1);
-
- return $w->{'OVERSTRIKE_MODE'};
-}
-
-########################################################################
-# pressed the <Insert> key, just above 'Del' key.
-# this toggles between insert mode and overstrike mode.
-sub ToggleInsertMode
-{
- my ($w)=@_;
- $w->OverstrikeMode(!$w->OverstrikeMode);
-}
-
-########################################################################
-sub InsertKeypress
-{
- my ($w,$char)=@_;
- if ($w->OverstrikeMode)
- {
- my $current=$w->get('insert');
- $w->delete('insert') unless($current eq "\n");
- }
- $w->Insert($char);
-}
-
-########################################################################
-sub GotoLineNumber
-{
- my ($w,$line_number) = @_;
- $line_number=~ s/^\s+|\s+$//g;
- return if $line_number =~ m/\D/;
- my ($last_line,$junk) = split(/\./, $w->index('end'));
- if ($line_number > $last_line) {$line_number = $last_line; }
- $w->{'LAST_GOTO_LINE'} = $line_number;
- $w->markSet('insert', $line_number.'.0');
- $w->see('insert');
-}
-
-########################################################################
-sub GotoLineNumberPopUp
-{
- my ($w)=@_;
- my $popup = $w->{'GOTO_LINE_NUMBER_POPUP'};
-
- unless (defined($w->{'LAST_GOTO_LINE'}))
- {
- my ($line,$col) = split(/\./, $w->index('insert'));
- $w->{'LAST_GOTO_LINE'} = $line;
- }
-
- ## if anything is selected when bring up the pop-up, put it in entry window.
- my $selected;
- eval { $selected = $w->SelectionGet(-selection => "PRIMARY"); };
- unless ($@)
- {
- if (defined($selected) and length($selected))
- {
- unless ($selected =~ /\D/)
- {
- $w->{'LAST_GOTO_LINE'} = $selected;
- }
- }
- }
- unless (defined($popup))
- {
- require Tk::DialogBox;
- $popup = $w->DialogBox(-buttons => [qw[Ok Cancel]],-title => "Goto Line Number", -popover => $w,
- -command => sub { $w->GotoLineNumber($w->{'LAST_GOTO_LINE'}) if $_[0] eq 'Ok'});
- $w->{'GOTO_LINE_NUMBER_POPUP'}=$popup;
- $popup->resizable('no','no');
- my $frame = $popup->Frame->pack(-fill => 'x');
- $frame->Label(text=>'Enter line number: ')->pack(-side => 'left');
- my $entry = $frame->Entry(-background=>'white',width=>25,
- -textvariable => \$w->{'LAST_GOTO_LINE'})->pack(-side =>'left',-fill => 'x');
- $popup->Advertise(entry => $entry);
- }
- $popup->Popup;
- $popup->Subwidget('entry')->focus;
- $popup->Wait;
-}
-
-########################################################################
-
-sub getSelected
-{
- shift->GetTextTaggedWith('sel');
-}
-
-sub deleteSelected
-{
- shift->DeleteTextTaggedWith('sel');
-}
-
-sub GetTextTaggedWith
-{
- my ($w,$tag) = @_;
-
- my @ranges = $w->tagRanges($tag);
- my $range_total = @ranges;
- my $return_text='';
-
- # if nothing selected, then ignore
- if ($range_total == 0) {return $return_text;}
-
- # for every range-pair, get selected text
- while(@ranges)
- {
- my $first = shift(@ranges);
- my $last = shift(@ranges);
- my $text = $w->get($first , $last);
- if(defined($text))
- {$return_text = $return_text . $text;}
- # if there is more tagged text, separate with an end of line character
- if(@ranges)
- {$return_text = $return_text . "\n";}
- }
- return $return_text;
-}
-
-########################################################################
-sub DeleteTextTaggedWith
-{
- my ($w,$tag) = @_;
- my @ranges = $w->tagRanges($tag);
- my $range_total = @ranges;
-
- # if nothing tagged with that tag, then ignore
- if ($range_total == 0) {return;}
-
- # insert marks where selections are located
- # marks will move with text even as text is inserted and deleted
- # in a previous selection.
- for (my $i=0; $i<$range_total; $i++)
- { $w->markSet('mark_tag_'.$i => $ranges[$i]); }
-
- # for every selected mark pair, insert new text and delete old text
- for (my $i=0; $i<$range_total; $i=$i+2)
- {
- my $first = $w->index('mark_tag_'.$i);
- my $last = $w->index('mark_tag_'.($i+1));
-
- my $text = $w->delete($first , $last);
- }
-
- # delete the marks
- for (my $i=0; $i<$range_total; $i++)
- { $w->markUnset('mark_tag_'.$i); }
-}
-
-
-########################################################################
-sub FindAll
-{
- my ($w,$mode, $case, $pattern ) = @_;
- ### 'sel' tags accumulate, need to remove any previous existing
- $w->unselectAll;
-
- my $match_length=0;
- my $start_index;
- my $end_index = '1.0';
-
- while(defined($end_index))
- {
- if ($case eq '-nocase')
- {
- $start_index = $w->search(
- $mode,
- $case,
- -count => \$match_length,
- "--",
- $pattern ,
- $end_index,
- 'end');
- }
- else
- {
- $start_index = $w->search(
- $mode,
- -count => \$match_length,
- "--",
- $pattern ,
- $end_index,
- 'end');
- }
-
- unless(defined($start_index) && $start_index) {last;}
-
- my ($line,$col) = split(/\./, $start_index);
- $col = $col + $match_length;
- $end_index = $line.'.'.$col;
- $w->tagAdd('sel', $start_index, $end_index);
- }
-}
-
-########################################################################
-# get current selected text and search for the next occurrence
-sub FindSelectionNext
-{
- my ($w) = @_;
- my $selected;
- eval {$selected = $w->SelectionGet(-selection => "PRIMARY"); };
- return if($@);
- return unless (defined($selected) and length($selected));
-
- $w->FindNext('-forward', '-exact', '-case', $selected);
-}
-
-########################################################################
-# get current selected text and search for the previous occurrence
-sub FindSelectionPrevious
-{
- my ($w) = @_;
- my $selected;
- eval {$selected = $w->SelectionGet(-selection => "PRIMARY"); };
- return if($@);
- return unless (defined($selected) and length($selected));
-
- $w->FindNext('-backward', '-exact', '-case', $selected);
-}
-
-
-
-########################################################################
-sub FindNext
-{
- my ($w,$direction, $mode, $case, $pattern ) = @_;
-
- ## if searching forward, start search at end of selected block
- ## if backward, start search from start of selected block.
- ## dont want search to find currently selected text.
- ## tag 'sel' may not be defined, use eval loop to trap error
- eval {
- if ($direction eq '-forward')
- {
- $w->markSet('insert', 'sel.last');
- $w->markSet('current', 'sel.last');
- }
- else
- {
- $w->markSet('insert', 'sel.first');
- $w->markSet('current', 'sel.first');
- }
- };
-
- my $saved_index=$w->index('insert');
-
- # remove any previous existing tags
- $w->unselectAll;
-
- my $match_length=0;
- my $start_index;
-
- if ($case eq '-nocase')
- {
- $start_index = $w->search(
- $direction,
- $mode,
- $case,
- -count => \$match_length,
- "--",
- $pattern ,
- 'insert');
- }
- else
- {
- $start_index = $w->search(
- $direction,
- $mode,
- -count => \$match_length,
- "--",
- $pattern ,
- 'insert');
- }
-
- unless(defined($start_index)) { return 0; }
- if(length($start_index) == 0) { return 0; }
-
- my ($line,$col) = split(/\./, $start_index);
- $col = $col + $match_length;
- my $end_index = $line.'.'.$col;
- $w->tagAdd('sel', $start_index, $end_index);
-
- $w->see($start_index);
-
- if ($direction eq '-forward')
- {
- $w->markSet('insert', $end_index);
- $w->markSet('current', $end_index);
- }
- else
- {
- $w->markSet('insert', $start_index);
- $w->markSet('current', $start_index);
- }
-
- my $compared_index = $w->index('insert');
-
- my $ret_val;
- if ($compared_index eq $saved_index)
- {$ret_val=0;}
- else
- {$ret_val=1;}
- return $ret_val;
-}
-
-########################################################################
-sub FindAndReplaceAll
-{
- my ($w,$mode, $case, $find, $replace ) = @_;
- $w->markSet('insert', '1.0');
- $w->unselectAll;
- while($w->FindNext('-forward', $mode, $case, $find))
- {
- $w->ReplaceSelectionsWith($replace);
- }
-}
-
-########################################################################
-sub ReplaceSelectionsWith
-{
- my ($w,$new_text ) = @_;
-
- my @ranges = $w->tagRanges('sel');
- my $range_total = @ranges;
-
- # if nothing selected, then ignore
- if ($range_total == 0) {return};
-
- # insert marks where selections are located
- # marks will move with text even as text is inserted and deleted
- # in a previous selection.
- for (my $i=0; $i<$range_total; $i++)
- {$w->markSet('mark_sel_'.$i => $ranges[$i]); }
-
- # for every selected mark pair, insert new text and delete old text
- my ($first, $last);
- for (my $i=0; $i<$range_total; $i=$i+2)
- {
- $first = $w->index('mark_sel_'.$i);
- $last = $w->index('mark_sel_'.($i+1));
-
- ##########################################################################
- # eventually, want to be able to get selected text,
- # support regular expression matching, determine replace_text
- # $replace_text = $selected_text=~m/$new_text/ (or whatever would work)
- # will have to pass in mode and case flags.
- # this would allow a regular expression search and replace to be performed
- # example, look for "line (\d+):" and replace with "$1 >" or similar
- ##########################################################################
-
- $w->insert($last, $new_text);
- $w->delete($first, $last);
-
- }
- ############################################################
- # set the insert cursor to the end of the last insertion mark
- $w->markSet('insert',$w->index('mark_sel_'.($range_total-1)));
-
- # delete the marks
- for (my $i=0; $i<$range_total; $i++)
- { $w->markUnset('mark_sel_'.$i); }
-}
-########################################################################
-sub FindAndReplacePopUp
-{
- my ($w)=@_;
- $w->findandreplacepopup(0);
-}
-
-########################################################################
-sub FindPopUp
-{
- my ($w)=@_;
- $w->findandreplacepopup(1);
-}
-
-########################################################################
-
-sub findandreplacepopup
-{
- my ($w,$find_only)=@_;
-
- my $pop = $w->Toplevel;
- if ($find_only)
- { $pop->title("Find"); }
- else
- { $pop->title("Find and/or Replace"); }
- my $frame = $pop->Frame->pack(-anchor=>'nw');
-
- $frame->Label(text=>"Direction:")
- ->grid(-row=> 1, -column=>1, -padx=> 20, -sticky => 'nw');
- my $direction = '-forward';
- $frame->Radiobutton(
- variable => \$direction,
- text => '-forward',value => '-forward' )
- ->grid(-row=> 2, -column=>1, -padx=> 20, -sticky => 'nw');
- $frame->Radiobutton(
- variable => \$direction,
- text => '-backward',value => '-backward' )
- ->grid(-row=> 3, -column=>1, -padx=> 20, -sticky => 'nw');
-
- $frame->Label(text=>"Mode:")
- ->grid(-row=> 1, -column=>2, -padx=> 20, -sticky => 'nw');
- my $mode = '-exact';
- $frame->Radiobutton(
- variable => \$mode, text => '-exact',value => '-exact' )
- ->grid(-row=> 2, -column=>2, -padx=> 20, -sticky => 'nw');
- $frame->Radiobutton(
- variable => \$mode, text => '-regexp',value => '-regexp' )
- ->grid(-row=> 3, -column=>2, -padx=> 20, -sticky => 'nw');
-
- $frame->Label(text=>"Case:")
- ->grid(-row=> 1, -column=>3, -padx=> 20, -sticky => 'nw');
- my $case = '-case';
- $frame->Radiobutton(
- variable => \$case, text => '-case',value => '-case' )
- ->grid(-row=> 2, -column=>3, -padx=> 20, -sticky => 'nw');
- $frame->Radiobutton(
- variable => \$case, text => '-nocase',value => '-nocase' )
- ->grid(-row=> 3, -column=>3, -padx=> 20, -sticky => 'nw');
-
- ######################################################
- my $find_entry = $pop->Entry(width=>25);
-
- my $button_find = $pop->Button(text=>'Find',
- command => sub {$w->FindNext ($direction,$mode,$case,$find_entry->get()),} )
- -> pack(-anchor=>'nw');
-
- $find_entry -> pack(-anchor=>'nw', '-expand' => 'yes' , -fill => 'x'); # autosizing
-
- ###### if any $w text is selected, put it in the find entry
- ###### could be more than one text block selected, get first selection
- my @ranges = $w->tagRanges('sel');
- if (@ranges)
- {
- my $first = shift(@ranges);
- my $last = shift(@ranges);
-
- # limit to one line
- my ($first_line, $first_col) = split(/\./,$first);
- my ($last_line, $last_col) = split(/\./,$last);
- unless($first_line == $last_line)
- {$last = $first. ' lineend';}
-
- $find_entry->insert('insert', $w->get($first , $last));
- }
- else
- {
- my $selected;
- eval {$selected=$w->SelectionGet(-selection => "PRIMARY"); };
- if($@) {}
- elsif (defined($selected))
- {$find_entry->insert('insert', $selected);}
- }
-
- my ($replace_entry,$button_replace,$button_replace_all);
- unless ($find_only)
- {
- ######################################################
- $replace_entry = $pop->Entry(width=>25);
- ######################################################
- $button_replace = $pop->Button(text=>'Replace',
- command => sub {$w->ReplaceSelectionsWith($replace_entry->get());} )
- -> pack(-anchor=>'nw');
-
- $replace_entry -> pack(-anchor=>'nw', '-expand' => 'yes' , -fill => 'x');
- }
-
- ######################################################
- $pop->Label(text=>" ")->pack();
- ######################################################
- unless ($find_only)
- {
- $button_replace_all = $pop->Button(text=>'Replace All',
- command => sub {$w->FindAndReplaceAll
- ($mode,$case,$find_entry->get(),$replace_entry->get());} )
- ->pack(-side => 'left');
- }
-
- my $button_find_all = $pop->Button(text=>'Find All',
- command => sub {$w->FindAll($mode,$case,$find_entry->get());} )
- ->pack(-side => 'left');
-
- my $button_cancel = $pop->Button(text=>'Cancel',
- command => sub {$pop->destroy()} )
- ->pack(-side => 'left');
-
- $pop->resizable('yes','no');
- return $pop;
-}
-
-# paste clipboard into current location
-sub clipboardPaste
-{
- my ($w) = @_;
- local $@;
- Tk::catch { $w->Insert($w->clipboardGet) };
-}
-
-########################################################################
-# Insert --
-# Insert a string into a text at the point of the insertion cursor.
-# If there is a selection in the text, and it covers the point of the
-# insertion cursor, then delete the selection before inserting.
-#
-# Arguments:
-# w - The text window in which to insert the string
-# string - The string to insert (usually just a single character)
-sub Insert
-{
- my ($w,$string) = @_;
- return unless (defined $string && $string ne '');
- #figure out if cursor is inside a selection
- my @ranges = $w->tagRanges('sel');
- if (@ranges)
- {
- while (@ranges)
- {
- my ($first,$last) = splice(@ranges,0,2);
- if ($w->compare($first,'<=','insert') && $w->compare($last,'>=','insert'))
- {
- $w->ReplaceSelectionsWith($string);
- return;
- }
- }
- }
- # paste it at the current cursor location
- $w->insert('insert',$string);
- $w->see('insert');
-}
-
-# UpDownLine --
-# Returns the index of the character one line above or below the
-# insertion cursor. There are two tricky things here. First,
-# we want to maintain the original column across repeated operations,
-# even though some lines that will get passed through do not have
-# enough characters to cover the original column. Second, do not
-# try to scroll past the beginning or end of the text.
-#
-# Arguments:
-# w - The text window in which the cursor is to move.
-# n - The number of lines to move: -1 for up one line,
-# +1 for down one line.
-sub UpDownLine_old
-{
- my ($w,$n) = @_;
- my $i = $w->index('insert');
- my ($line,$char) = split(/\./,$i);
- if (!defined($Tk::prevPos) || $Tk::prevPos ne $i)
- {
- $Tk::char = $char
- }
- my $new = $w->index($line+$n . '.' . $Tk::char);
- if ($w->compare($new,'==','end') || $w->compare($new,'==','insert linestart'))
- {
- $new = $i
- }
- $Tk::prevPos = $new;
- return $new;
-}
-
-sub UpDownLine
-{
- my ($w,$n) = @_;
- my $i = $w->index('insert');
- my ($line,$char) = split(/\./,$i);
- my $string = $w->get($line.'.0', $i);
-
- $string = expand($string);
- $char=length($string);
- $line += $n;
-
- $string = $w->get($line.'.0', $line.'.0 lineend');
- $string = expand($string);
- $string = substr($string, 0, $char);
-
- $string = unexpand($string);
- $char = length($string);
-
- my $new = $w->index($line . '.' . $char);
- if ($w->compare($new,'==','end') || $w->compare($new,'==','insert linestart'))
- {
- $new = $i
- }
- $Tk::prevPos = $new;
- $Tk::char = $char;
- return $new;
-}
-
-
-# PrevPara --
-# Returns the index of the beginning of the paragraph just before a given
-# position in the text (the beginning of a paragraph is the first non-blank
-# character after a blank line).
-#
-# Arguments:
-# w - The text window in which the cursor is to move.
-# pos - Position at which to start search.
-sub PrevPara
-{
- my ($w,$pos) = @_;
- $pos = $w->index("$pos linestart");
- while (1)
- {
- if ($w->get("$pos - 1 line") eq "\n" && $w->get($pos) ne "\n" || $pos eq '1.0' )
- {
- my $string = $w->get($pos,"$pos lineend");
- if ($string =~ /^(\s)+/)
- {
- my $off = length($1);
- $pos = $w->index("$pos + $off chars")
- }
- if ($w->compare($pos,'!=','insert') || $pos eq '1.0')
- {
- return $pos;
- }
- }
- $pos = $w->index("$pos - 1 line")
- }
-}
-# NextPara --
-# Returns the index of the beginning of the paragraph just after a given
-# position in the text (the beginning of a paragraph is the first non-blank
-# character after a blank line).
-#
-# Arguments:
-# w - The text window in which the cursor is to move.
-# start - Position at which to start search.
-sub NextPara
-{
- my ($w,$start) = @_;
- my $pos = $w->index("$start linestart + 1 line");
- while ($w->get($pos) ne "\n")
- {
- if ($w->compare($pos,'==','end'))
- {
- return $w->index('end - 1c');
- }
- $pos = $w->index("$pos + 1 line")
- }
- while ($w->get($pos) eq "\n" )
- {
- $pos = $w->index("$pos + 1 line");
- if ($w->compare($pos,'==','end'))
- {
- return $w->index('end - 1c');
- }
- }
- my $string = $w->get($pos,"$pos lineend");
- if ($string =~ /^(\s+)/)
- {
- my $off = length($1);
- return $w->index("$pos + $off chars");
- }
- return $pos;
-}
-# ScrollPages --
-# This is a utility procedure used in bindings for moving up and down
-# pages and possibly extending the selection along the way. It scrolls
-# the view in the widget by the number of pages, and it returns the
-# index of the character that is at the same position in the new view
-# as the insertion cursor used to be in the old view.
-#
-# Arguments:
-# w - The text window in which the cursor is to move.
-# count - Number of pages forward to scroll; may be negative
-# to scroll backwards.
-sub ScrollPages
-{
- my ($w,$count) = @_;
- my @bbox = $w->bbox('insert');
- $w->yview('scroll',$count,'pages');
- if (!@bbox)
- {
- return $w->index('@' . int($w->height/2) . ',' . 0);
- }
- my $x = int($bbox[0]+$bbox[2]/2);
- my $y = int($bbox[1]+$bbox[3]/2);
- return $w->index('@' . $x . ',' . $y);
-}
-
-sub Contents
-{
- my $w = shift;
- if (@_)
- {
- $w->delete('1.0','end');
- $w->insert('end',shift) while (@_);
- }
- else
- {
- return $w->get('1.0','end');
- }
-}
-
-sub Destroy
-{
- my ($w) = @_;
- delete $w->{_Tags_};
-}
-
-sub Transpose
-{
- my ($w) = @_;
- my $pos = 'insert';
- $pos = $w->index("$pos + 1 char") if ($w->compare($pos,'!=',"$pos lineend"));
- return if ($w->compare("$pos - 1 char",'==','1.0'));
- my $new = $w->get("$pos - 1 char").$w->get("$pos - 2 char");
- $w->delete("$pos - 2 char",$pos);
- $w->insert('insert',$new);
- $w->see('insert');
-}
-
-sub Tag
-{
- my $w = shift;
- my $name = shift;
- Carp::confess('No args') unless (ref $w and defined $name);
- $w->{_Tags_} = {} unless (exists $w->{_Tags_});
- unless (exists $w->{_Tags_}{$name})
- {
- require Tk::Text::Tag;
- $w->{_Tags_}{$name} = 'Tk::Text::Tag'->new($w,$name);
- }
- $w->{_Tags_}{$name}->configure(@_) if (@_);
- return $w->{_Tags_}{$name};
-}
-
-sub Tags
-{
- my ($w,$name) = @_;
- my @result = ();
- foreach $name ($w->tagNames(@_))
- {
- push(@result,$w->Tag($name));
- }
- return @result;
-}
-
-sub TIEHANDLE
-{
- my ($class,$obj) = @_;
- return $obj;
-}
-
-sub PRINT
-{
- my $w = shift;
- # Find out whether 'end' is displayed at the moment
- # Retrieve the position of the bottom of the window as
- # a fraction of the entire contents of the Text widget
- my $yview = ($w->yview)[1];
-
- # If $yview is 1.0 this means that 'end' is visible in the window
- my $update = 0;
- $update = 1 if $yview == 1.0;
-
- # Loop over all input strings
- while (@_)
- {
- $w->insert('end',shift);
- }
- # Move the window to see the end of the text if required
- $w->see('end') if $update;
-}
-
-sub PRINTF
-{
- my $w = shift;
- $w->PRINT(sprintf(shift,@_));
-}
-
-sub WhatLineNumberPopUp
-{
- my ($w)=@_;
- my ($line,$col) = split(/\./,$w->index('insert'));
- $w->messageBox(-type => 'Ok', -title => "What Line Number",
- -message => "The cursor is on line $line (column is $col)");
-}
-
-sub MenuLabels
-{
- return qw[~File ~Edit ~Search ~View];
-}
-
-sub SearchMenuItems
-{
- my ($w) = @_;
- return [
- ['command'=>'~Find', -command => [$w => 'FindPopUp']],
- ['command'=>'Find ~Next', -command => [$w => 'FindSelectionNext']],
- ['command'=>'Find ~Previous', -command => [$w => 'FindSelectionPrevious']],
- ['command'=>'~Replace', -command => [$w => 'FindAndReplacePopUp']]
- ];
-}
-
-sub EditMenuItems
-{
- my ($w) = @_;
- my @items = ();
- foreach my $op ($w->clipEvents)
- {
- push(@items,['command' => "~$op", -command => [ $w => "clipboard$op"]]);
- }
- push(@items,
- '-',
- ['command'=>'Select All', -command => [$w => 'selectAll']],
- ['command'=>'Unselect All', -command => [$w => 'unselectAll']],
- );
- return \@items;
-}
-
-sub ViewMenuItems
-{
- my ($w) = @_;
- my $v;
- tie $v,'Tk::Configure',$w,'-wrap';
- return [
- ['command'=>'Goto ~Line...', -command => [$w => 'GotoLineNumberPopUp']],
- ['command'=>'~Which Line?', -command => [$w => 'WhatLineNumberPopUp']],
- ['cascade'=> 'Wrap', -tearoff => 0, -menuitems => [
- [radiobutton => 'Word', -variable => \$v, -value => 'word'],
- [radiobutton => 'Character', -variable => \$v, -value => 'char'],
- [radiobutton => 'None', -variable => \$v, -value => 'none'],
- ]],
- ];
-}
-
-########################################################################
-sub clipboardColumnCopy
-{
- my ($w) = @_;
- $w->Column_Copy_or_Cut(0);
-}
-
-sub clipboardColumnCut
-{
- my ($w) = @_;
- $w->Column_Copy_or_Cut(1);
-}
-
-########################################################################
-sub Column_Copy_or_Cut
-{
- my ($w, $cut) = @_;
- my @ranges = $w->tagRanges('sel');
- my $range_total = @ranges;
- # this only makes sense if there is one selected block
- unless ($range_total==2)
- {
- $w->bell;
- return;
- }
-
- my $selection_start_index = shift(@ranges);
- my $selection_end_index = shift(@ranges);
-
- my ($start_line, $start_column) = split(/\./, $selection_start_index);
- my ($end_line, $end_column) = split(/\./, $selection_end_index);
-
- # correct indices for tabs
- my $string;
- $string = $w->get($start_line.'.0', $start_line.'.0 lineend');
- $string = substr($string, 0, $start_column);
- $string = expand($string);
- my $tab_start_column = length($string);
-
- $string = $w->get($end_line.'.0', $end_line.'.0 lineend');
- $string = substr($string, 0, $end_column);
- $string = expand($string);
- my $tab_end_column = length($string);
-
- my $length = $tab_end_column - $tab_start_column;
-
- $selection_start_index = $start_line . '.' . $tab_start_column;
- $selection_end_index = $end_line . '.' . $tab_end_column;
-
- # clear the clipboard
- $w->clipboardClear;
- my ($clipstring, $startstring, $endstring);
- my $padded_string = ' 'x$tab_end_column;
- for(my $line = $start_line; $line <= $end_line; $line++)
- {
- $string = $w->get($line.'.0', $line.'.0 lineend');
- $string = expand($string) . $padded_string;
- $clipstring = substr($string, $tab_start_column, $length);
- #$clipstring = unexpand($clipstring);
- $w->clipboardAppend($clipstring."\n");
-
- if ($cut)
- {
- $startstring = substr($string, 0, $tab_start_column);
- $startstring = unexpand($startstring);
- $start_column = length($startstring);
-
- $endstring = substr($string, 0, $tab_end_column );
- $endstring = unexpand($endstring);
- $end_column = length($endstring);
-
- $w->delete($line.'.'.$start_column, $line.'.'.$end_column);
- }
- }
-}
-
-########################################################################
-
-sub clipboardColumnPaste
-{
- my ($w) = @_;
- my @ranges = $w->tagRanges('sel');
- my $range_total = @ranges;
- if ($range_total)
- {
- warn " there cannot be any selections during clipboardColumnPaste. \n";
- $w->bell;
- return;
- }
-
- my $clipboard_text;
- eval
- {
- $clipboard_text = $w->SelectionGet(-selection => "CLIPBOARD");
- };
-
- return unless (defined($clipboard_text));
- return unless (length($clipboard_text));
- my $string;
-
- my $current_index = $w->index('insert');
- my ($current_line, $current_column) = split(/\./,$current_index);
- $string = $w->get($current_line.'.0', $current_line.'.'.$current_column);
- $string = expand($string);
- $current_column = length($string);
-
- my @clipboard_lines = split(/\n/,$clipboard_text);
- my $length;
- my $end_index;
- my ($delete_start_column, $delete_end_column, $insert_column_index);
- foreach my $line (@clipboard_lines)
- {
- if ($w->OverstrikeMode)
- {
- #figure out start and end indexes to delete, compensating for tabs.
- $string = $w->get($current_line.'.0', $current_line.'.0 lineend');
- $string = expand($string);
- $string = substr($string, 0, $current_column);
- $string = unexpand($string);
- $delete_start_column = length($string);
-
- $string = $w->get($current_line.'.0', $current_line.'.0 lineend');
- $string = expand($string);
- $string = substr($string, 0, $current_column + length($line));
- chomp($string); # dont delete a "\n" on end of line.
- $string = unexpand($string);
- $delete_end_column = length($string);
-
-
-
- $w->delete(
- $current_line.'.'.$delete_start_column ,
- $current_line.'.'.$delete_end_column
- );
- }
-
- $string = $w->get($current_line.'.0', $current_line.'.0 lineend');
- $string = expand($string);
- $string = substr($string, 0, $current_column);
- $string = unexpand($string);
- $insert_column_index = length($string);
-
- $w->insert($current_line.'.'.$insert_column_index, unexpand($line));
- $current_line++;
- }
-
-}
-
-# Backward compatibility
-sub GetMenu
-{
- carp((caller(0))[3]." is deprecated") if $^W;
- shift->menu
-}
-
-1;
-__END__
-
diff --git a/Master/perltl/site/lib/Tk/Text/Tag.pm b/Master/perltl/site/lib/Tk/Text/Tag.pm
deleted file mode 100644
index 7cddf48fd25..00000000000
--- a/Master/perltl/site/lib/Tk/Text/Tag.pm
+++ /dev/null
@@ -1,46 +0,0 @@
-package Tk::Text::Tag;
-require Tk::Text;
-
-use overload '""' => \&name;
-
-
-use vars qw($VERSION);
-$VERSION = '3.007'; # $Id: //depot/Tk8/Text/Text/Tag.pm#7 $
-
-sub _apply
-{
- my $self = shift;
- my $meth = shift;
- $self->widget->tag($meth => $self->name,@_);
-}
-
-sub name
-{
- return shift->[0];
-}
-
-sub widget
-{
- return shift->[1];
-}
-
-BEGIN
-{
- my $meth;
- foreach $meth (qw(cget configure bind add))
- {
- *{$meth} = sub { shift->_apply($meth,@_) }
- }
-}
-
-sub new
-{
- my $class = shift;
- my $widget = shift;
- my $name = shift;
- my $obj = bless [$name,$widget],$class;
- $obj->configure(@_) if (@_);
- return $obj;
-}
-
-1;
diff --git a/Master/perltl/site/lib/Tk/Tk.xbm b/Master/perltl/site/lib/Tk/Tk.xbm
deleted file mode 100644
index 136d4793037..00000000000
--- a/Master/perltl/site/lib/Tk/Tk.xbm
+++ /dev/null
@@ -1,44 +0,0 @@
-#define Tk.xbm_width 61
-#define Tk.xbm_height 61
-static unsigned char Tk.xbm_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0xf8, 0x0e, 0x00, 0x00,
- 0x00, 0xe0, 0x1e, 0x00, 0xbe, 0x3e, 0x00, 0x00, 0x00, 0xfb, 0x1e, 0x00,
- 0xfe, 0x7f, 0x00, 0x00, 0x80, 0xdf, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x00,
- 0x80, 0xe0, 0x3d, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x47, 0x7f, 0x80,
- 0xff, 0xfd, 0x01, 0x00, 0x00, 0x7f, 0x3e, 0xc0, 0xff, 0xf1, 0x01, 0x00,
- 0x00, 0x30, 0x7f, 0xf0, 0xfe, 0xb3, 0x03, 0x00, 0x00, 0xf8, 0x3e, 0x7c,
- 0xff, 0xcf, 0x07, 0x00, 0x00, 0x78, 0x37, 0xfc, 0x7b, 0xc3, 0x07, 0x00,
- 0x00, 0xfc, 0x3d, 0xfe, 0x3c, 0x25, 0x0e, 0x00, 0x00, 0xfc, 0x3e, 0x5f,
- 0x18, 0x41, 0x0b, 0x00, 0x00, 0x5c, 0x3f, 0x5f, 0xf0, 0x59, 0x1b, 0x00,
- 0x00, 0xdc, 0x9f, 0x3f, 0xe8, 0xbe, 0x17, 0x00, 0x00, 0xbc, 0x9f, 0x2f,
- 0xa8, 0x5b, 0x15, 0x00, 0x00, 0xdc, 0xdf, 0x25, 0x48, 0x7a, 0x34, 0x00,
- 0x00, 0x7c, 0xce, 0x1f, 0x20, 0x2c, 0x36, 0x00, 0x00, 0x7c, 0xa7, 0x1f,
- 0xcc, 0x09, 0xf0, 0x00, 0x00, 0xfc, 0xae, 0x1f, 0x49, 0x05, 0xf6, 0x00,
- 0x00, 0xfc, 0xac, 0x3f, 0xf8, 0x11, 0xf6, 0x00, 0x00, 0xf8, 0x8d, 0x3f,
- 0x8e, 0x0e, 0xd6, 0x01, 0x00, 0xf8, 0x9c, 0x7e, 0xd7, 0x5b, 0xff, 0x03,
- 0x00, 0x70, 0x83, 0x5f, 0xcf, 0xfd, 0xbf, 0x01, 0x00, 0xe0, 0xc3, 0x3b,
- 0xc7, 0xff, 0x3f, 0x03, 0x00, 0xe0, 0xcf, 0xbf, 0xe3, 0xff, 0x97, 0x03,
- 0x00, 0x80, 0xfb, 0x7f, 0xfb, 0xff, 0x17, 0x01, 0x00, 0x80, 0xef, 0xff,
- 0xb3, 0x6f, 0x17, 0x03, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x3f, 0x17, 0x03,
- 0x00, 0x00, 0x88, 0xff, 0xbf, 0x3f, 0x1b, 0x03, 0x00, 0x00, 0x00, 0x7b,
- 0x3d, 0x1f, 0x9f, 0x01, 0x00, 0x00, 0x80, 0x1f, 0x7f, 0x1f, 0x9e, 0x00,
- 0x00, 0x00, 0x80, 0x1f, 0x3f, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x1f,
- 0x1f, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x1f, 0x0e, 0x1e, 0x00,
- 0x00, 0xfe, 0x81, 0x8f, 0x1f, 0x0f, 0x1c, 0x00, 0x00, 0x98, 0x81, 0xc7,
- 0x1f, 0x0e, 0x18, 0x00, 0x00, 0x98, 0x01, 0xc7, 0x0f, 0x0a, 0x18, 0x00,
- 0xfc, 0x98, 0x99, 0xc7, 0x07, 0x0e, 0x18, 0x00, 0x8c, 0x99, 0x8d, 0xc7,
- 0x02, 0x0e, 0x18, 0x00, 0x8c, 0x99, 0x07, 0xc3, 0x03, 0x03, 0x18, 0x00,
- 0x8c, 0x99, 0x07, 0xc7, 0x01, 0x03, 0x28, 0x00, 0x8c, 0x99, 0x0d, 0x03,
- 0x03, 0x01, 0x08, 0x00, 0xfc, 0x98, 0x19, 0x03, 0x86, 0x01, 0x18, 0x00,
- 0x0c, 0x00, 0x00, 0x03, 0xc4, 0x01, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x03,
- 0x88, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x90, 0x00, 0x18, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x01,
- 0xf0, 0x01, 0x08, 0x00, 0x00, 0x00, 0x80, 0x01, 0xf8, 0x01, 0x18, 0x00,
- 0x00, 0x00, 0xc0, 0x01, 0x9e, 0x03, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x01,
- 0xb3, 0x01, 0x04, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x01, 0x18, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xdc, 0x00,
- 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/Master/perltl/site/lib/Tk/Tk.xpm b/Master/perltl/site/lib/Tk/Tk.xpm
deleted file mode 100644
index 7880a637f39..00000000000
--- a/Master/perltl/site/lib/Tk/Tk.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *Tk[] = {
-/* width height num_colors chars_per_pixel */
-" 32 32 2 1",
-/* colors */
-"# c #008080",
-"a c #ff0000",
-/* pixels */
-"################################",
-"################################",
-"################################",
-"################################",
-"################################",
-"################################",
-"##########aaaaaaaa##############",
-"#######aaaaaaaaaaaa#######aa####",
-"#####aaaaaaaaaaaaaa######aaa####",
-"####aaaaaaaaaaaaaaaa####aaaa####",
-"####aaaaaaa######aa####aaaa#####",
-"###aaaa#########aaa###aaaa######",
-"###aaaa#########aa###aaaa#######",
-"######aa#######aa####aaa########",
-"##############aaa###aaaa########",
-"#############aaa###aaaa##aaa####",
-"#############aa####aaa#aaaaa####",
-"############aaa###aaa#aaaaaa####",
-"###########aaa####aa#aa#aaa#####",
-"###########aaa###aa#aa#aaa######",
-"##########aaa####aaaaaaaa#aa####",
-"##########aaa####aaaaaaa##aa####",
-"#########aaaa####aaaaaaaaaa#####",
-"#########aaa#####aa##aaaaa######",
-"#########aaa##########aa########",
-"################################",
-"################################",
-"################################",
-"################################",
-"################################",
-"################################",
-"################################"
-};
diff --git a/Master/perltl/site/lib/Tk/Toplevel.pm b/Master/perltl/site/lib/Tk/Toplevel.pm
deleted file mode 100644
index 1d7533f8377..00000000000
--- a/Master/perltl/site/lib/Tk/Toplevel.pm
+++ /dev/null
@@ -1,211 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::Toplevel;
-use AutoLoader;
-
-use vars qw($VERSION);
-$VERSION = '3.028'; # $Id: //depot/Tk8/Tk/Toplevel.pm#28 $
-
-use base qw(Tk::Wm Tk::Frame);
-
-Construct Tk::Widget 'Toplevel';
-
-sub Tk_cmd { \&Tk::toplevel }
-
-sub CreateOptions
-{
- return (shift->SUPER::CreateOptions,'-screen','-use')
-}
-
-sub Populate
-{
- my ($cw,$arg) = @_;
- $cw->SUPER::Populate($arg);
- $cw->ConfigSpecs('-title',['METHOD',undef,undef,$cw->class]);
-}
-
-sub Icon
-{
- my ($top,%args) = @_;
- my $icon = $top->iconwindow;
- my $state = $top->state;
- if ($state ne 'withdrawn')
- {
- $top->withdraw;
- $top->update; # Let attributes propogate
- }
- unless (defined $icon)
- {
- $icon = Tk::Toplevel->new($top,'-borderwidth' => 0,'-class'=>'Icon');
- $icon->withdraw;
- # Fake Populate
- my $lab = $icon->Component('Label' => 'icon');
- $lab->pack('-expand'=>1,'-fill' => 'both');
- $icon->ConfigSpecs(DEFAULT => ['DESCENDANTS']);
- # Now do tail of InitObject
- $icon->ConfigDefault(\%args);
- # And configure that new would have done
- $top->iconwindow($icon);
- $top->update;
- $lab->DisableButtonEvents;
- $lab->update;
- }
- $top->iconimage($args{'-image'}) if (exists $args{'-image'});
- $icon->configure(%args);
- $icon->idletasks; # Let size request propogate
- $icon->geometry($icon->ReqWidth . 'x' . $icon->ReqHeight);
- $icon->update; # Let attributes propogate
- $top->deiconify if ($state eq 'normal');
- $top->iconify if ($state eq 'iconic');
-}
-
-sub menu
-{
- my $w = shift;
- my $menu;
- $menu = $w->cget('-menu');
- unless (defined $menu)
- {
- $w->configure(-menu => ($menu = $w->SUPER::menu))
- }
- $menu->configure(@_) if @_;
- return $menu;
-}
-
-
-1;
-__END__
-
-#----------------------------------------------------------------------
-#
-# Focus Group
-#
-# Focus groups are used to handle the user's focusing actions inside a
-# toplevel.
-#
-# One example of using focus groups is: when the user focuses on an
-# entry, the text in the entry is highlighted and the cursor is put to
-# the end of the text. When the user changes focus to another widget,
-# the text in the previously focused entry is validated.
-#
-
-#----------------------------------------------------------------------
-# tkFocusGroup_Create --
-#
-# Create a focus group. All the widgets in a focus group must be
-# within the same focus toplevel. Each toplevel can have only
-# one focus group, which is identified by the name of the
-# toplevel widget.
-#
-sub FG_Create {
- my $t = shift;
- unless (exists $t->{'_fg'}) {
- $t->{'_fg'} = 1;
- $t->bind('<FocusIn>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_In($w, $Ev->d);
- }
- );
- $t->bind('<FocusOut>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_Out($w, $Ev->d);
- }
- );
- $t->bind('<Destroy>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_Destroy($w);
- }
- );
- # <Destroy> is not sufficient to break loops if never mapped.
- $t->OnDestroy([$t,'FG_Destroy']);
- }
-}
-
-# tkFocusGroup_BindIn --
-#
-# Add a widget into the "FocusIn" list of the focus group. The $cmd will be
-# called when the widget is focused on by the user.
-#
-sub FG_BindIn {
- my($t, $w, $cmd) = @_;
- $t->Error("focus group \"$t\" doesn't exist") unless (exists $t->{'_fg'});
- $t->{'_FocusIn'}{$w} = Tk::Callback->new($cmd);
-}
-
-# tkFocusGroup_BindOut --
-#
-# Add a widget into the "FocusOut" list of the focus group. The
-# $cmd will be called when the widget loses the focus (User
-# types Tab or click on another widget).
-#
-sub FG_BindOut {
- my($t, $w, $cmd) = @_;
- $t->Error("focus group \"$t\" doesn't exist") unless (exists $t->{'_fg'});
- $t->{'_FocusOut'}{$w} = Tk::Callback->new($cmd);
-}
-
-# tkFocusGroup_Destroy --
-#
-# Cleans up when members of the focus group is deleted, or when the
-# toplevel itself gets deleted.
-#
-sub FG_Destroy {
- my($t, $w) = @_;
- if (!defined($w) || $t == $w) {
- delete $t->{'_fg'};
- delete $t->{'_focus'};
- delete $t->{'_FocusOut'};
- delete $t->{'_FocusIn'};
- } else {
- if (exists $t->{'_focus'}) {
- delete $t->{'_focus'} if ($t->{'_focus'} == $w);
- }
- delete $t->{'_FocusIn'}{$w};
- delete $t->{'_FocusOut'}{$w};
- }
-}
-
-# tkFocusGroup_In --
-#
-# Handles the <FocusIn> event. Calls the FocusIn command for the newly
-# focused widget in the focus group.
-#
-sub FG_In {
- my($t, $w, $detail) = @_;
- if (defined $t->{'_focus'} and $t->{'_focus'} eq $w) {
- # This is already in focus
- return;
- } else {
- $t->{'_focus'} = $w;
- $t->{'_FocusIn'}{$w}->Call if exists $t->{'_FocusIn'}{$w};
- }
-}
-
-# tkFocusGroup_Out --
-#
-# Handles the <FocusOut> event. Checks if this is really a lose
-# focus event, not one generated by the mouse moving out of the
-# toplevel window. Calls the FocusOut command for the widget
-# who loses its focus.
-#
-sub FG_Out {
- my($t, $w, $detail) = @_;
- if ($detail ne 'NotifyNonlinear' and $detail ne 'NotifyNonlinearVirtual') {
- # This is caused by mouse moving out of the window
- return;
- }
- unless (exists $t->{'_FocusOut'}{$w}) {
- return;
- } else {
- $t->{'_FocusOut'}{$w}->Call;
- delete $t->{'_focus'};
- }
-}
-
-1;
-
-__END__
diff --git a/Master/perltl/site/lib/Tk/Widget.pm b/Master/perltl/site/lib/Tk/Widget.pm
deleted file mode 100644
index 811d9e5e28b..00000000000
--- a/Master/perltl/site/lib/Tk/Widget.pm
+++ /dev/null
@@ -1,1298 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::Widget;
-use vars qw($VERSION @DefaultMenuLabels);
-$VERSION = '3.080'; # $Id: //depot/Tk8/Tk/Widget.pm#80 $
-
-require Tk;
-use AutoLoader;
-use strict;
-use Carp;
-use base qw(DynaLoader Tk);
-
-# stubs for 'autoloaded' widget classes
-
-sub Button;
-sub Canvas;
-sub Checkbutton;
-sub Entry;
-sub Frame;
-sub Label;
-sub Listbox;
-sub Menu;
-sub Menubutton;
-sub Message;
-sub Scale;
-sub Scrollbar;
-sub Radiobutton;
-sub Text;
-sub Toplevel;
-
-sub Pixmap;
-sub Bitmap;
-sub Photo;
-
-sub ScrlListbox;
-sub Optionmenu;
-
-sub import
-{
- my $package = shift;
- carp 'use Tk::Widget () to pre-load widgets is deprecated' if (@_);
- my $need;
- foreach $need (@_)
- {
- unless (defined &{$need})
- {
- require "Tk/${need}.pm";
- }
- croak "Cannot locate $need" unless (defined &{$need});
- }
-}
-
-@DefaultMenuLabels = qw[~File ~Help];
-
-# Some tidy-ness functions for winfo stuff
-
-sub True { 1 }
-sub False { 0 }
-
-use Tk::Submethods( 'grab' => [qw(current status release -global)],
- 'focus' => [qw(-force -lastfor)],
- 'pack' => [qw(configure forget info propagate slaves)],
- 'grid' => [qw(bbox columnconfigure configure forget info location propagate rowconfigure size slaves)],
- 'form' => [qw(check configure forget grid info slaves)],
- 'event' => [qw(add delete generate info)],
- 'place' => [qw(configure forget info slaves)],
- 'wm' => [qw(capture release)],
- 'font' => [qw(actual configure create delete families measure metrics names)]
- );
-
-BEGIN {
- # FIXME - these don't work in the compiler
- *IsMenu = \&False;
- *IsMenubutton = \&False;
- *configure_self = \&Tk::configure;
- *cget_self = \&Tk::cget;
-}
-
-
-
-Direct Tk::Submethods (
- 'winfo' => [qw(cells class colormapfull depth exists
- geometry height id ismapped manager name parent reqheight
- reqwidth rootx rooty screen screencells screendepth screenheight
- screenmmheight screenmmwidth screenvisual screenwidth visual
- visualsavailable vrootheight viewable vrootwidth vrootx vrooty
- width x y toplevel children pixels pointerx pointery pointerxy
- server fpixels rgb )],
- 'tk' => [qw(appname scaling)]);
-
-
-sub DESTROY
-{
- my $w = shift;
- $w->destroy if ($w->IsWidget);
-}
-
-sub Install
-{
- # Dynamically loaded widgets add their core commands
- # to the Tk base class here
- my ($package,$mw) = @_;
-}
-
-sub ClassInit
-{
- # Carry out class bindings (or whatever)
- my ($package,$mw) = @_;
- return $package;
-}
-
-sub CreateOptions
-{
- return ();
-}
-
-sub CreateArgs
-{
- my ($package,$parent,$args) = @_;
- # Remove from hash %$args any configure-like
- # options which only apply at create time (e.g. -colormap for Frame),
- # or which may as well be applied right away
- # return these as a list of -key => value pairs
- # Augment same hash with default values for missing mandatory options,
- # allthough this can be done later in InitObject.
-
- # Honour -class => if present, we have hacked Tk_ConfigureWidget to
- # allow -class to be passed to any widget.
- my @result = ();
- my $class = delete $args->{'-class'};
- ($class) = $package =~ /([A-Z][A-Z0-9_]*)$/i unless (defined $class);
- push(@result, '-class' => "\u$class") if (defined $class);
- foreach my $opt ($package->CreateOptions)
- {
- push(@result, $opt => delete $args->{$opt}) if exists $args->{$opt};
- }
- return @result;
-}
-
-sub InitObject
-{
- my ($obj,$args) = @_;
- # per object initialization, for example populating
- # with sub-widgets, adding a few object bindings to augment
- # inherited class bindings, changing binding tags.
- # Also another chance to mess with %$args before configure...
-}
-
-sub SetBindtags
-{
- my ($obj) = @_;
- $obj->bindtags([ref($obj),$obj,$obj->toplevel,'all']);
-}
-
-sub new
-{
- local $SIG{'__DIE__'} = \&Carp::croak;
- my $package = shift;
- my $parent = shift;
- $package->InitClass($parent);
- $parent->BackTrace("Odd number of args to $package->new(...)") unless ((@_ % 2) == 0);
- my %args = @_;
- my @args = $package->CreateArgs($parent,\%args);
- my $cmd = $package->Tk_cmd;
- my $pname = $parent->PathName;
- $pname = '' if ($pname eq '.');
- my $leaf = delete $args{'Name'};
- if (defined $leaf)
- {
- $leaf =~ s/[^a-z0-9_]+/_/ig;
- $leaf = lcfirst($leaf);
- }
- else
- {
- ($leaf) = "\L$package" =~ /([a-z][a-z0-9_]*)$/;
- }
- my $lname = $pname . '.' . $leaf;
- # create a hash indexed by leaf name to speed up
- # creation of a lot of sub-widgets of the same type
- # e.g. entries in Table
- my $nhash = $parent->TkHash('_names_');
- $nhash->{$leaf} = 0 unless (exists $nhash->{$leaf});
- while (defined ($parent->Widget($lname)))
- {
- $lname = $pname . '.' . $leaf . ++$nhash->{$leaf};
- }
- my $obj = eval { &$cmd($parent, $lname, @args) };
- confess $@ if $@;
- bless $obj,$package;
- $obj->SetBindtags;
- my $notice = $parent->can('NoticeChild');
- $parent->$notice($obj,\%args) if $notice;
- $obj->InitObject(\%args);
-# ASkludge(\%args,1);
- $obj->configure(%args) if (%args);
-# ASkludge(\%args,0);
- return $obj;
-}
-
-sub DelegateFor
-{
- my ($w,$method) = @_;
- while(exists $w->{'Delegates'})
- {
- my $delegate = $w->{'Delegates'};
- my $widget = $delegate->{$method};
- $widget = $delegate->{DEFAULT} unless (defined $widget);
- $widget = $w->Subwidget($widget) if (defined $widget && !ref $widget);
- last unless (defined $widget);
- last if $widget == $w;
- $w = $widget;
- }
- return $w;
-}
-
-sub Delegates
-{
- my $cw = shift;
- my $specs = $cw->TkHash('Delegates');
- while (@_)
- {
- my $key = shift;
- my $val = shift;
- $specs->{$key} = $val;
- }
- return $specs;
-}
-
-sub Construct
-{
- my ($base,$name) = @_;
- my $class = (caller(0))[0];
- no strict 'refs';
-
- # Hack for broken ->isa in perl5.6.0
- delete ${"$class\::"}{'::ISA::CACHE::'} if $] == 5.006;
-
- # Pre ->isa scheme
- *{$base.'::Is'.$name} = \&False;
- *{$class.'::Is'.$name} = \&True;
-
- # DelegateFor trickyness is to allow Frames and other derived things
- # to force creation in a delegate e.g. a ScrlText with embeded windows
- # need those windows to be children of the Text to get clipping right
- # and not of the Frame which contains the Text and the scrollbars.
- *{$base.'::'."$name"} = sub { $class->new(shift->DelegateFor('Construct'),@_) };
-}
-
-sub IS
-{
- return (defined $_[1]) && $_[0] == $_[1];
-}
-
-sub _AutoloadTkWidget
-{
- my ($self,$method) = @_;
- my $what = "Tk::Widget::$method";
- unless (defined &$what)
- {
- require "Tk/$method.pm";
- }
- return $what;
-}
-
-require UNIVERSAL;
-
-sub AUTOLOAD
-{
- # Take a copy into a 'my' variable so we can recurse
- my $what = $Tk::Widget::AUTOLOAD;
- my $save = $@;
- my $name;
- # warn "AUTOLOAD $what ".(ref($_[0]) || $_[0])."\n";
- # Braces used to preserve $1 et al.
- {
- my ($pkg,$func) = $what =~ /(.*)::([^:]+)$/;
- confess("Attempt to load '$what'") unless defined($pkg) && $func =~ /^[\w:]+$/;
- $pkg =~ s#::#/#g;
- if (defined($name=$INC{"$pkg.pm"}))
- {
- $name =~ s#^(.*)$pkg\.pm$#$1auto/$pkg/$func.al#;
- }
- else
- {
- $name = "auto/$what.al";
- $name =~ s#::#/#g;
- }
- }
- # This may fail, catch error and prevent user's __DIE__ handler
- # from triggering as well...
- eval {local $SIG{'__DIE__'}; require $name};
- if ($@)
- {
- croak $@ unless ($@ =~ /Can't locate\s+(?:file\s+)?'?\Q$name\E'?/);
- my($package,$method) = ($what =~ /^(.*)::([^:]*)$/);
- if (ref $_[0] && !$_[0]->can($method)
- && $_[0]->can('Delegate')
- && $method !~ /^(ConfigSpecs|Delegates)/ )
- {
- my $delegate = $_[0]->Delegates;
- if (%$delegate || tied %$delegate)
- {
- my $widget = $delegate->{$method};
- $widget = $delegate->{DEFAULT} unless (defined $widget);
- if (defined $widget)
- {
- my $subwidget = (ref $widget) ? $widget : $_[0]->Subwidget($widget);
- if (defined $subwidget)
- {
- no strict 'refs';
- # print "AUTOLOAD: $what\n";
- *{$what} = sub { shift->Delegate($method,@_) };
- }
- else
- {
- croak "No delegate subwidget '$widget' for $what";
- }
- }
- }
- }
- if (!defined(&$what) && $method =~ /^[A-Z]\w+$/)
- {
- # Use ->can as ->isa is broken in perl5.6.0
- my $sub = UNIVERSAL::can($_[0],'_AutoloadTkWidget');
- if ($sub)
- {
- carp "Assuming 'require Tk::$method;'" unless $_[0]->can($method);
- $what = $_[0]->$sub($method)
- }
- }
- }
- $@ = $save;
- $DB::sub = $what; # Tell debugger what is going on...
- unless (defined &$what)
- {
- no strict 'refs';
- *{$what} = sub { croak("Failed to AUTOLOAD '$what'") };
- }
- goto &$what;
-}
-
-sub _Destroyed
-{
- my $w = shift;
- my $a = delete $w->{'_Destroy_'};
- if (ref($a))
- {
- while (@$a)
- {
- my $ent = pop(@$a);
- if (ref $ent)
- {
- eval {local $SIG{'__DIE__'}; $ent->Call };
- }
- else
- {
- delete $w->{$ent};
- }
- }
- }
-}
-
-sub _OnDestroy
-{
- my $w = shift;
- $w->{'_Destroy_'} = [] unless (exists $w->{'_Destroy_'});
- push(@{$w->{'_Destroy_'}},@_);
-}
-
-sub OnDestroy
-{
- my $w = shift;
- $w->_OnDestroy(Tk::Callback->new(@_));
-}
-
-sub TkHash
-{
- my ($w,$key) = @_;
- return $w->{$key} if exists $w->{$key};
- my $hash = $w->{$key} = {};
- $w->_OnDestroy($key);
- return $hash;
-}
-
-sub privateData
-{
- my $w = shift;
- my $p = shift || caller;
- $w->{$p} ||= {};
-}
-
-my @image_types;
-my %image_method;
-
-sub ImageMethod
-{
- shift if (@_ & 1);
- while (@_)
- {
- my ($name,$method) = splice(@_,0,2);
- push(@image_types,$name);
- $image_method{$name} = $method;
- }
-}
-
-sub Getimage
-{
- my ($w, $name) = @_;
- my $mw = $w->MainWindow;
- croak "Usage \$widget->Getimage('name')" unless defined($name);
- my $images = ($mw->{'__Images__'} ||= {});
-
- return $images->{$name} if $images->{$name};
-
- ImageMethod(xpm => 'Pixmap',
- gif => 'Photo',
- ppm => 'Photo',
- xbm => 'Bitmap' ) unless @image_types;
-
- foreach my $type (@image_types)
- {
- my $method = $image_method{$type};
- my $file = Tk->findINC( "$name.$type" );
- next unless( $file && $method );
- my $sub = $w->can($method);
- unless (defined &$sub)
- {
- require Tk::widgets;
- Tk::widgets->import($method);
- }
- $images->{$name} = $w->$method( -file => $file );
- return $images->{$name};
- }
-
- # Try built-in bitmaps
- $images->{$name} = $w->Pixmap( -id => $name );
- return $images->{$name};
-}
-
-sub SaveGrabInfo
-{
- my $w = shift;
- $Tk::oldGrab = $w->grabCurrent;
- if (defined $Tk::oldGrab)
- {
- $Tk::grabStatus = $Tk::oldGrab->grabStatus;
- }
-}
-
-sub grabSave
-{
- my ($w) = @_;
- my $grab = $w->grabCurrent;
- return sub {} if (!defined $grab);
- my $method = ($grab->grabStatus eq 'global') ? 'grabGlobal' : 'grab';
- return sub { eval {local $SIG{'__DIE__'}; $grab->$method() } };
-}
-
-sub focusCurrent
-{
- my ($w) = @_;
- $w->Tk::focus('-displayof');
-}
-
-sub focusSave
-{
- my ($w) = @_;
- my $focus = $w->focusCurrent;
- return sub {} if (!defined $focus);
- return sub { eval {local $SIG{'__DIE__'}; $focus->focus } };
-}
-
-# This is supposed to replicate Tk::after behaviour,
-# but does auto-cancel when widget is deleted.
-require Tk::After;
-
-sub afterIdle
-{
- my $w = shift;
- return Tk::After->new($w,'idle','once',@_);
-}
-
-sub afterCancel
-{
- my ($w,$what) = @_;
- if (defined $what)
- {
- return $what->cancel if ref($what);
- carp "dubious cancel of $what" if 0 && $^W;
- $w->Tk::after('cancel' => $what);
- }
-}
-
-sub after
-{
- my $w = shift;
- my $t = shift;
- if (@_)
- {
- if ($t ne 'cancel')
- {
- require Tk::After;
- return Tk::After->new($w,$t,'once',@_)
- }
- while (@_)
- {
- my $what = shift;
- $w->afterCancel($what);
- }
- }
- else
- {
- $w->Tk::after($t);
- }
-}
-
-sub repeat
-{
- require Tk::After;
- my $w = shift;
- my $t = shift;
- return Tk::After->new($w,$t,'repeat',@_);
-}
-
-sub FindMenu
-{
- # default FindMenu is that there is no menu.
- return undef;
-}
-
-sub XEvent { shift->{'_XEvent_'} }
-
-sub propertyRoot
-{
- my $w = shift;
- return $w->property(@_,'root');
-}
-
-# atom, atomname, containing, interps, pathname
-# don't work this way - there is no window arg
-# So we pretend there was an call the C versions from Tk.xs
-
-sub atom { shift->InternAtom(@_) }
-sub atomname { shift->GetAtomName(@_) }
-sub containing { shift->Containing(@_) }
-
-# interps not done yet
-# pathname not done yet
-
-# walk and descendants adapted from Stephen's composite
-# versions as they only use core features they can go here.
-# hierachy is reversed in that descendants calls walk rather
-# than vice versa as this avoids building a list.
-# Walk should possibly be enhanced so allow early termination
-# like '-prune' of find.
-
-sub Walk
-{
- # Traverse a widget hierarchy while executing a subroutine.
- my($cw, $proc, @args) = @_;
- my $subwidget;
- foreach $subwidget ($cw->children)
- {
- $subwidget->Walk($proc,@args);
- &$proc($subwidget, @args);
- }
-} # end walk
-
-sub Descendants
-{
- # Return a list of widgets derived from a parent widget and all its
- # descendants of a particular class.
- # If class is not passed returns the entire widget hierarchy.
-
- my($widget, $class) = @_;
- my(@widget_tree) = ();
-
- $widget->Walk(
- sub { my ($widget,$list,$class) = @_;
- push(@$list, $widget) if (!defined($class) or $class eq $widget->class);
- },
- \@widget_tree, $class
- );
- return @widget_tree;
-}
-
-sub Palette
-{
- my $w = shift->MainWindow;
- unless (exists $w->{_Palette_})
- {
- my %Palette = ();
- my $c = $w->Checkbutton();
- my $e = $w->Entry();
- my $s = $w->Scrollbar();
- $Palette{'activeBackground'} = ($c->configure('-activebackground'))[3] ;
- $Palette{'activeForeground'} = ($c->configure('-activeforeground'))[3];
- $Palette{'background'} = ($c->configure('-background'))[3];
- $Palette{'disabledForeground'} = ($c->configure('-disabledforeground'))[3];
- $Palette{'foreground'} = ($c->configure('-foreground'))[3];
- $Palette{'highlightBackground'} = ($c->configure('-highlightbackground'))[3];
- $Palette{'highlightColor'} = ($c->configure('-highlightcolor'))[3];
- $Palette{'insertBackground'} = ($e->configure('-insertbackground'))[3];
- $Palette{'selectColor'} = ($c->configure('-selectcolor'))[3];
- $Palette{'selectBackground'} = ($e->configure('-selectbackground'))[3];
- $Palette{'selectForeground'} = ($e->configure('-selectforeground'))[3];
- $Palette{'troughColor'} = ($s->configure('-troughcolor'))[3];
- $c->destroy;
- $e->destroy;
- $s->destroy;
- $w->{_Palette_} = \%Palette;
- }
- return $w->{_Palette_};
-}
-
-# tk_setPalette --
-# Changes the default color scheme for a Tk application by setting
-# default colors in the option database and by modifying all of the
-# color options for existing widgets that have the default value.
-#
-# Arguments:
-# The arguments consist of either a single color name, which
-# will be used as the new background color (all other colors will
-# be computed from this) or an even number of values consisting of
-# option names and values. The name for an option is the one used
-# for the option database, such as activeForeground, not -activeforeground.
-sub setPalette
-{
- my $w = shift->MainWindow;
- my %new = (@_ == 1) ? (background => $_[0]) : @_;
- my $priority = delete($new{'priority'}) || 'widgetDefault';
-
- # Create an array that has the complete new palette. If some colors
- # aren't specified, compute them from other colors that are specified.
-
- die 'must specify a background color' if (!exists $new{background});
- $new{'foreground'} = 'black' unless (exists $new{foreground});
- my @bg = $w->rgb($new{'background'});
- my @fg = $w->rgb($new{'foreground'});
- my $darkerBg = sprintf('#%02x%02x%02x',9*$bg[0]/2560,9*$bg[1]/2560,9*$bg[2]/2560);
- foreach my $i ('activeForeground','insertBackground','selectForeground','highlightColor')
- {
- $new{$i} = $new{'foreground'} unless (exists $new{$i});
- }
- unless (exists $new{'disabledForeground'})
- {
- $new{'disabledForeground'} = sprintf('#%02x%02x%02x',(3*$bg[0]+$fg[0])/1024,(3*$bg[1]+$fg[1])/1024,(3*$bg[2]+$fg[2])/1024);
- }
- $new{'highlightBackground'} = $new{'background'} unless (exists $new{'highlightBackground'});
-
- unless (exists $new{'activeBackground'})
- {
- my @light;
- # Pick a default active background that is lighter than the
- # normal background. To do this, round each color component
- # up by 15% or 1/3 of the way to full white, whichever is
- # greater.
- foreach my $i (0, 1, 2)
- {
- $light[$i] = $bg[$i]/256;
- my $inc1 = $light[$i]*15/100;
- my $inc2 = (255-$light[$i])/3;
- if ($inc1 > $inc2)
- {
- $light[$i] += $inc1
- }
- else
- {
- $light[$i] += $inc2
- }
- $light[$i] = 255 if ($light[$i] > 255);
- }
- $new{'activeBackground'} = sprintf('#%02x%02x%02x',@light);
- }
- $new{'selectBackground'} = $darkerBg unless (exists $new{'selectBackground'});
- $new{'troughColor'} = $darkerBg unless (exists $new{'troughColor'});
- $new{'selectColor'} = '#b03060' unless (exists $new{'selectColor'});
-
- # Before doing this, make sure that the Tk::Palette variable holds
- # the default values of all options, so that tkRecolorTree can
- # be sure to only change options that have their default values.
- # If the variable exists, then it is already correct (it was created
- # the last time this procedure was invoked). If the variable
- # doesn't exist, fill it in using the defaults from a few widgets.
- my $Palette = $w->Palette;
-
- # Walk the widget hierarchy, recoloring all existing windows.
- $w->RecolorTree(\%new);
- # Change the option database so that future windows will get the
- # same colors.
- foreach my $option (keys %new)
- {
- $w->option('add',"*$option",$new{$option},$priority);
- # Save the options in the global variable Tk::Palette, for use the
- # next time we change the options.
- $Palette->{$option} = $new{$option};
- }
-}
-
-# tkRecolorTree --
-# This procedure changes the colors in a window and all of its
-# descendants, according to information provided by the colors
-# argument. It only modifies colors that have their default values
-# as specified by the Tk::Palette variable.
-#
-# Arguments:
-# w - The name of a window. This window and all its
-# descendants are recolored.
-# colors - The name of an array variable in the caller,
-# which contains color information. Each element
-# is named after a widget configuration option, and
-# each value is the value for that option.
-sub RecolorTree
-{
- my ($w,$colors) = @_;
- local ($@);
- my $Palette = $w->Palette;
- foreach my $dbOption (keys %$colors)
- {
- my $option = "-\L$dbOption";
- my $value;
- eval {local $SIG{'__DIE__'}; $value = $w->cget($option) };
- if (defined $value)
- {
- if ($value eq $Palette->{$dbOption})
- {
- $w->configure($option,$colors->{$dbOption});
- }
- }
- }
- foreach my $child ($w->children)
- {
- $child->RecolorTree($colors);
- }
-}
-# tkDarken --
-# Given a color name, computes a new color value that darkens (or
-# brightens) the given color by a given percent.
-#
-# Arguments:
-# color - Name of starting color.
-# perecent - Integer telling how much to brighten or darken as a
-# percent: 50 means darken by 50%, 110 means brighten
-# by 10%.
-sub Darken
-{
- my ($w,$color,$percent) = @_;
- my @l = $w->rgb($color);
- my $red = $l[0]/256;
- my $green = $l[1]/256;
- my $blue = $l[2]/256;
- $red = int($red*$percent/100);
- $red = 255 if ($red > 255);
- $green = int($green*$percent/100);
- $green = 255 if ($green > 255);
- $blue = int($blue*$percent/100);
- $blue = 255 if ($blue > 255);
- sprintf('#%02x%02x%02x',$red,$green,$blue)
-}
-# tk_bisque --
-# Reset the Tk color palette to the old "bisque" colors.
-#
-# Arguments:
-# None.
-sub bisque
-{
- shift->setPalette('activeBackground' => '#e6ceb1',
- 'activeForeground' => 'black',
- 'background' => '#ffe4c4',
- 'disabledForeground' => '#b0b0b0',
- 'foreground' => 'black',
- 'highlightBackground' => '#ffe4c4',
- 'highlightColor' => 'black',
- 'insertBackground' => 'black',
- 'selectColor' => '#b03060',
- 'selectBackground' => '#e6ceb1',
- 'selectForeground' => 'black',
- 'troughColor' => '#cdb79e'
- );
-}
-
-sub PrintConfig
-{
- require Tk::Pretty;
- my ($w) = (@_);
- my $c;
- foreach $c ($w->configure)
- {
- print Tk::Pretty::Pretty(@$c),"\n";
- }
-}
-
-sub BusyRecurse
-{
- my ($restore,$w,$cursor,$recurse,$top) = @_;
- my $c = $w->cget('-cursor');
- my @tags = $w->bindtags;
- if ($top || defined($c))
- {
- push(@$restore, sub { return unless Tk::Exists($w); $w->configure(-cursor => $c); $w->bindtags(\@tags) });
- $w->configure(-cursor => $cursor);
- }
- else
- {
- push(@$restore, sub { return unless Tk::Exists($w); $w->bindtags(\@tags) });
- }
- $w->bindtags(['Busy',@tags]);
- if ($recurse)
- {
- foreach my $child ($w->children)
- {
- BusyRecurse($restore,$child,$cursor,1,0);
- }
- }
- return $restore;
-}
-
-sub Busy
-{
- my ($w,%args) = @_;
- return unless $w->viewable;
- my $cursor = delete $args{'-cursor'};
- my $recurse = delete $args{'-recurse'};
- $cursor = 'watch' unless defined $cursor;
- unless (exists $w->{'Busy'})
- {
- my @old = ($w->grabSave);
- my $key;
- my @config;
- foreach $key (keys %args)
- {
- push(@config,$key => $w->Tk::cget($key));
- }
- if (@config)
- {
- push(@old, sub { $w->Tk::configure(@config) });
- $w->Tk::configure(%args);
- }
- unless ($w->Tk::bind('Busy'))
- {
- $w->Tk::bind('Busy','<Any-KeyPress>',[_busy => 1]);
- $w->Tk::bind('Busy','<Any-KeyRelease>',[_busy => 0]);
- $w->Tk::bind('Busy','<Any-ButtonPress>',[_busy => 1]);
- $w->Tk::bind('Busy','<Any-ButtonRelease>',[_busy => 0]);
- $w->Tk::bind('Busy','<Any-Motion>',[_busy => 0]);
- }
- $w->{'Busy'} = BusyRecurse(\@old,$w,$cursor,$recurse,1);
- }
- my $g = $w->grabCurrent;
- if (defined $g)
- {
- # warn "$g has the grab";
- $g->grabRelease;
- }
- $w->update;
- eval {local $SIG{'__DIE__'}; $w->grab };
- $w->update;
-}
-
-sub _busy
-{
- my ($w,$f) = @_;
- $w->bell if $f;
- $w->break;
-}
-
-sub Unbusy
-{
- my ($w) = @_;
- $w->update;
- $w->grabRelease;
- my $old = delete $w->{'Busy'};
- if (defined $old)
- {
- local $SIG{'__DIE__'};
- eval { &{pop(@$old)} } while (@$old);
- }
- $w->update;
-}
-
-sub waitVisibility
-{
- my ($w) = shift;
- $w->tkwait('visibility',$w);
-}
-
-sub waitVariable
-{
- my ($w) = shift;
- $w->tkwait('variable',@_);
-}
-
-sub waitWindow
-{
- my ($w) = shift;
- $w->tkwait('window',$w);
-}
-
-sub EventWidget
-{
- my ($w) = @_;
- return $w->{'_EventWidget_'};
-}
-
-sub Popwidget
-{
- my ($ew,$method,$w,@args) = @_;
- $w->{'_EventWidget_'} = $ew;
- $w->$method(@args);
-}
-
-sub ColorOptions
-{
- my ($w,$args) = @_;
- my $opt;
- $args = {} unless (defined $args);
- foreach $opt (qw(-foreground -background -disabledforeground
- -activebackground -activeforeground
- ))
- {
- $args->{$opt} = $w->cget($opt) unless (exists $args->{$opt})
- }
- return (wantarray) ? %$args : $args;
-}
-
-sub XscrollBind
-{
- my ($mw,$class) = @_;
- $mw->bind($class,'<Left>', ['xview','scroll',-1,'units']);
- $mw->bind($class,'<Control-Left>', ['xview','scroll',-1,'pages']);
- $mw->bind($class,'<Control-Prior>',['xview','scroll',-1,'pages']);
- $mw->bind($class,'<Right>', ['xview','scroll',1,'units']);
- $mw->bind($class,'<Control-Right>',['xview','scroll',1,'pages']);
- $mw->bind($class,'<Control-Next>', ['xview','scroll',1,'pages']);
-
- $mw->bind($class,'<Home>', ['xview','moveto',0]);
- $mw->bind($class,'<End>', ['xview','moveto',1]);
-}
-
-sub PriorNextBind
-{
- my ($mw,$class) = @_;
- $mw->bind($class,'<Next>', ['yview','scroll',1,'pages']);
- $mw->bind($class,'<Prior>', ['yview','scroll',-1,'pages']);
-}
-
-sub YscrollBind
-{
- my ($mw,$class) = @_;
- $mw->PriorNextBind($class);
- $mw->bind($class,'<Up>', ['yview','scroll',-1,'units']);
- $mw->bind($class,'<Down>', ['yview','scroll',1,'units']);
-}
-
-sub XYscrollBind
-{
- my ($mw,$class) = @_;
- $mw->YscrollBind($class);
- $mw->XscrollBind($class);
-}
-
-sub ScrlListbox
-{
- my $parent = shift;
- return $parent->Scrolled('Listbox',-scrollbars => 'w', @_);
-}
-
-sub AddBindTag
-{
- my ($w,$tag) = @_;
- my $t;
- my @tags = $w->bindtags;
- foreach $t (@tags)
- {
- return if $t eq $tag;
- }
- $w->bindtags([@tags,$tag]);
-}
-
-sub Callback
-{
- my $w = shift;
- my $name = shift;
- my $cb = $w->cget($name);
- if (defined $cb)
- {
- return $cb->Call(@_) if (ref $cb);
- return $w->$cb(@_);
- }
- return (wantarray) ? () : undef;
-}
-
-sub packAdjust
-{
-# print 'packAdjust(',join(',',@_),")\n";
- require Tk::Adjuster;
- my ($w,%args) = @_;
- my $delay = delete($args{'-delay'});
- $delay = 1 unless (defined $delay);
- $w->pack(%args);
- %args = $w->packInfo;
- my $adj = Tk::Adjuster->new($args{'-in'},
- -widget => $w, -delay => $delay, -side => $args{'-side'});
- $adj->packed($w,%args);
- return $w;
-}
-
-sub gridAdjust
-{
- require Tk::Adjuster;
- my ($w,%args) = @_;
- my $delay = delete($args{'-delay'});
- $delay = 1 unless (defined $delay);
- $w->grid(%args);
- %args = $w->gridInfo;
- my $adj = Tk::Adjuster->new($args{'-in'},-widget => $w, -delay => $delay);
- $adj->gridded($w,%args);
- return $w;
-}
-
-sub place
-{
- local $SIG{'__DIE__'} = \&Carp::croak;
- my $w = shift;
- if (@_ && $_[0] =~ /^(?:configure|forget|info|slaves)$/x)
- {
- $w->Tk::place(@_);
- }
- else
- {
- # Two things going on here:
- # 1. Add configure on the front so that we can drop leading '-'
- $w->Tk::place('configure',@_);
- # 2. Return the widget rather than nothing
- return $w;
- }
-}
-
-sub pack
-{
- local $SIG{'__DIE__'} = \&Carp::croak;
- my $w = shift;
- if (@_ && $_[0] =~ /^(?:configure|forget|info|propagate|slaves)$/x)
- {
- # maybe array/scalar context issue with slaves
- $w->Tk::pack(@_);
- }
- else
- {
- # Two things going on here:
- # 1. Add configure on the front so that we can drop leading '-'
- $w->Tk::pack('configure',@_);
- # 2. Return the widget rather than nothing
- return $w;
- }
-}
-
-sub grid
-{
- local $SIG{'__DIE__'} = \&Carp::croak;
- my $w = shift;
- if (@_ && $_[0] =~ /^(?:bbox|columnconfigure|configure|forget|info|location|propagate|rowconfigure|size|slaves)$/x)
- {
- my $opt = shift;
- Tk::grid($opt,$w,@_);
- }
- else
- {
- # Two things going on here:
- # 1. Add configure on the front so that we can drop leading '-'
- Tk::grid('configure',$w,@_);
- # 2. Return the widget rather than nothing
- return $w;
- }
-}
-
-sub form
-{
- local $SIG{'__DIE__'} = \&Carp::croak;
- my $w = shift;
- if (@_ && $_[0] =~ /^(?:configure|check|forget|grid|info|slaves)$/x)
- {
- $w->Tk::form(@_);
- }
- else
- {
- # Two things going on here:
- # 1. Add configure on the front so that we can drop leading '-'
- $w->Tk::form('configure',@_);
- # 2. Return the widget rather than nothing
- return $w;
- }
-}
-
-sub Scrolled
-{
- my ($parent,$kind,%args) = @_;
- # Find args that are Frame create time args
- my @args = Tk::Frame->CreateArgs($parent,\%args);
- my $name = delete $args{'Name'};
- push(@args,'Name' => $name) if (defined $name);
- my $cw = $parent->Frame(@args);
- @args = ();
- # Now remove any args that Frame can handle
- foreach my $k ('-scrollbars',map($_->[0],$cw->configure))
- {
- push(@args,$k,delete($args{$k})) if (exists $args{$k})
- }
- # Anything else must be for target widget - pass at widget create time
- my $w = $cw->$kind(%args);
- # Now re-set %args to be ones Frame can handle
- %args = @args;
- $cw->ConfigSpecs('-scrollbars' => ['METHOD','scrollbars','Scrollbars','se'],
- '-background' => [$w,'background','Background'],
- '-foreground' => [$w,'foreground','Foreground'],
- );
- $cw->AddScrollbars($w);
- $cw->Default("\L$kind" => $w);
- $cw->Delegates('bind' => $w, 'bindtags' => $w, 'menu' => $w);
- $cw->ConfigDefault(\%args);
- $cw->configure(%args);
- return $cw;
-}
-
-sub Populate
-{
- my ($cw,$args) = @_;
-}
-
-sub ForwardEvent
-{
- my $self = shift;
- my $to = shift;
- $to->PassEvent($self->XEvent);
-}
-
-# Save / Return abstract event type as in Tix.
-sub EventType
-{
- my $w = shift;
- $w->{'_EventType_'} = $_[0] if @_;
- return $w->{'_EventType_'};
-}
-
-sub PostPopupMenu
-{
- my ($w, $X, $Y) = @_;
- if (@_ < 3)
- {
- my $e = $w->XEvent;
- $X = $e->X;
- $Y = $e->Y;
- }
- my $menu = $w->menu;
- $menu->Post($X,$Y) if defined $menu;
-}
-
-sub FillMenu
-{
- my ($w,$menu,@labels) = @_;
- foreach my $lab (@labels)
- {
- my $method = $lab.'MenuItems';
- $method =~ s/~//g;
- $method =~ s/[\s-]+/_/g;
- if ($w->can($method))
- {
- $menu->Menubutton(-label => $lab, -tearoff => 0, -menuitems => $w->$method());
- }
- }
- return $menu;
-}
-
-sub menu
-{
- my ($w,$menu) = @_;
- if (@_ > 1)
- {
- $w->_OnDestroy('_MENU_') unless exists $w->{'_MENU_'};
- $w->{'_MENU_'} = $menu;
- }
- return unless defined wantarray;
- unless (exists $w->{'_MENU_'})
- {
- $w->_OnDestroy('_MENU_');
- $w->{'_MENU_'} = $menu = $w->Menu(-tearoff => 0);
- $w->FillMenu($menu,$w->MenuLabels);
- }
- return $w->{'_MENU_'};
-}
-
-sub MenuLabels
-{
- return @DefaultMenuLabels;
-}
-
-sub FileMenuItems
-{
- my ($w) = @_;
- return [ ["command"=>'E~xit', -command => [ $w, 'WmDeleteWindow']]];
-}
-
-sub WmDeleteWindow
-{
- shift->toplevel->WmDeleteWindow
-}
-
-sub BalloonInfo
-{
- my ($widget,$balloon,$X,$Y,@opt) = @_;
- foreach my $opt (@opt)
- {
- my $info = $balloon->GetOption($opt,$widget);
- return $info if defined $info;
- }
-}
-
-
-
-1;
-__END__
-
-sub ASkludge
-{
- my ($hash,$sense) = @_;
- foreach my $key (%$hash)
- {
- if ($key =~ /-.*variable/ && ref($hash->{$key}) eq 'SCALAR')
- {
- if ($sense)
- {
- my $val = ${$hash->{$key}};
- require Tie::Scalar;
- tie ${$hash->{$key}},'Tie::StdScalar';
- ${$hash->{$key}} = $val;
- }
- else
- {
- untie ${$hash->{$key}};
- }
- }
- }
-}
-
-
-
-# clipboardKeysyms --
-# This procedure is invoked to identify the keys that correspond to
-# the "copy", "cut", and "paste" functions for the clipboard.
-#
-# Arguments:
-# copy - Name of the key (keysym name plus modifiers, if any,
-# such as "Meta-y") used for the copy operation.
-# cut - Name of the key used for the cut operation.
-# paste - Name of the key used for the paste operation.
-#
-# This method is obsolete use clipboardOperations and abstract
-# event types instead. See Clipboard.pm and Mainwindow.pm
-
-sub clipboardKeysyms
-{
- my @class = ();
- my $mw = shift;
- if (ref $mw)
- {
- $mw = $mw->DelegateFor('bind');
- }
- else
- {
- push(@class,$mw);
- $mw = shift;
- }
- if (@_)
- {
- my $copy = shift;
- $mw->Tk::bind(@class,"<$copy>",'clipboardCopy') if (defined $copy);
- }
- if (@_)
- {
- my $cut = shift;
- $mw->Tk::bind(@class,"<$cut>",'clipboardCut') if (defined $cut);
- }
- if (@_)
- {
- my $paste = shift;
- $mw->Tk::bind(@class,"<$paste>",'clipboardPaste') if (defined $paste);
- }
-}
-
-sub pathname
-{
- my ($w,$id) = @_;
- my $x = $w->winfo('pathname',-displayof => oct($id));
- return $x->PathName;
-}
-
-
diff --git a/Master/perltl/site/lib/Tk/Wm.pm b/Master/perltl/site/lib/Tk/Wm.pm
deleted file mode 100644
index a148987f350..00000000000
--- a/Master/perltl/site/lib/Tk/Wm.pm
+++ /dev/null
@@ -1,165 +0,0 @@
-# Copyright (c) 1995-1999 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.
-package Tk::Wm;
-use AutoLoader;
-
-require Tk::Widget;
-*AUTOLOAD = \&Tk::Widget::AUTOLOAD;
-
-use strict qw(vars);
-
-# There are issues with this stuff now we have Tix's wm release/capture
-# as toplevel-ness is now dynamic.
-
-
-use vars qw($VERSION);
-$VERSION = '3.023'; # $Id: //depot/Tk8/Tk/Wm.pm#23 $
-
-use Tk::Submethods ( 'wm' => [qw(grid tracing)] );
-
-Direct Tk::Submethods ('wm' => [qw(aspect client colormapwindows command
- deiconify focusmodel frame geometry group
- iconbitmap iconify iconimage iconmask iconname
- iconwindow maxsize minsize overrideredirect positionfrom
- protocol resizable saveunder sizefrom state title transient
- withdraw wrapper)]);
-
-sub SetBindtags
-{
- my ($obj) = @_;
- $obj->bindtags([ref($obj),$obj,'all']);
-}
-
-sub Populate
-{
- my ($cw,$args) = @_;
- $cw->ConfigSpecs('-overanchor' => ['PASSIVE',undef,undef,undef],
- '-popanchor' => ['PASSIVE',undef,undef,undef],
- '-popover' => ['PASSIVE',undef,undef,undef]
- );
-}
-
-sub MoveResizeWindow
-{
- my ($w,$x,$y,$width,$height) = @_;
- $w->withdraw;
- $w->geometry($width.'x'.$height);
- $w->MoveToplevelWindow($x,$y);
- $w->deiconify;
-}
-
-sub WmDeleteWindow
-{
- my ($w) = @_;
- my $cb = $w->protocol('WM_DELETE_WINDOW');
- if (defined $cb)
- {
- $cb->Call;
- }
- else
- {
- $w->destroy;
- }
-}
-
-
-1;
-
-__END__
-
-
-sub Post
-{
- my ($w,$X,$Y) = @_;
- $X = int($X);
- $Y = int($Y);
- $w->positionfrom('user');
- # $w->geometry("+$X+$Y");
- $w->MoveToplevelWindow($X,$Y);
- $w->deiconify;
- $w->raise;
-}
-
-sub AnchorAdjust
-{
- my ($anchor,$X,$Y,$w,$h) = @_;
- $anchor = 'c' unless (defined $anchor);
- $Y += ($anchor =~ /s/) ? $h : ($anchor =~ /n/) ? 0 : $h/2;
- $X += ($anchor =~ /e/) ? $w : ($anchor =~ /w/) ? 0 : $w/2;
- return ($X,$Y);
-}
-
-sub Popup
-{
- my $w = shift;
- $w->configure(@_) if @_;
- $w->idletasks;
- my ($mw,$mh) = ($w->reqwidth,$w->reqheight);
- my ($rx,$ry,$rw,$rh) = (0,0,0,0);
- my $base = $w->cget('-popover');
- my $outside = 0;
- if (defined $base)
- {
- if ($base eq 'cursor')
- {
- ($rx,$ry) = $w->pointerxy;
- }
- else
- {
- $rx = $base->rootx;
- $ry = $base->rooty;
- $rw = $base->Width;
- $rh = $base->Height;
- }
- }
- else
- {
- my $sc = ($w->parent) ? $w->parent->toplevel : $w;
- $rx = -$sc->vrootx;
- $ry = -$sc->vrooty;
- $rw = $w->screenwidth;
- $rh = $w->screenheight;
- }
- my ($X,$Y) = AnchorAdjust($w->cget('-overanchor'),$rx,$ry,$rw,$rh);
- ($X,$Y) = AnchorAdjust($w->cget('-popanchor'),$X,$Y,-$mw,-$mh);
- $w->Post($X,$Y);
- $w->waitVisibility;
-}
-
-sub FullScreen
-{
- my $w = shift;
- my $over = (@_) ? shift : 0;
- my $width = $w->screenwidth;
- my $height = $w->screenheight;
- $w->GeometryRequest($width,$height);
- $w->overrideredirect($over & 1);
- $w->Post(0,0);
- $w->update;
- if ($over & 2)
- {
- my $x = $w->rootx;
- my $y = $w->rooty;
- $width -= 2*$x;
- $height -= $x + $y;
- $w->GeometryRequest($width,$height);
- $w->update;
- }
-}
-
-sub iconposition
-{
- my $w = shift;
- if (@_ == 1)
- {
- return $w->wm('iconposition',$1,$2) if $_[0] =~ /^(\d+),(\d+)$/;
- if ($_[0] =~ /^([+-])(\d+)([+-])(\d+)$/)
- {
- my $x = ($1 eq '-') ? $w->screenwidth-$2 : $2;
- my $y = ($3 eq '-') ? $w->screenheight-$4 : $4;
- return $w->wm('iconposition',$x,$y);
- }
- }
- $w->wm('iconposition',@_);
-}
diff --git a/Master/perltl/site/lib/Tk/X.pm b/Master/perltl/site/lib/Tk/X.pm
deleted file mode 100644
index 856673d4bbe..00000000000
--- a/Master/perltl/site/lib/Tk/X.pm
+++ /dev/null
@@ -1,398 +0,0 @@
-package Tk::X;
-
-use strict;
-use Carp;
-use vars qw($VERSION @EXPORT $AUTOLOAD);
-$VERSION = '3.016'; # $Id: //depot/Tk8/Xlib/X/X.pm#16 $
-use Tk qw($XS_VERSION);
-
-require Exporter;
-require DynaLoader;
-require AutoLoader;
-
-
-use base qw(Exporter DynaLoader);
-# Items to export into callers namespace by default. Note: do not export
-# names by default without a very good reason. Use EXPORT_OK instead.
-# Do not simply export all your public functions/methods/constants.
-@EXPORT = qw(
- Above
- AllTemporary
- AllocAll
- AllocNone
- AllowExposures
- AlreadyGrabbed
- Always
- AnyButton
- AnyKey
- AnyModifier
- AnyPropertyType
- ArcChord
- ArcPieSlice
- AsyncBoth
- AsyncKeyboard
- AsyncPointer
- AutoRepeatModeDefault
- AutoRepeatModeOff
- AutoRepeatModeOn
- BadAccess
- BadAlloc
- BadAtom
- BadColor
- BadCursor
- BadDrawable
- BadFont
- BadGC
- BadIDChoice
- BadImplementation
- BadLength
- BadMatch
- BadName
- BadPixmap
- BadRequest
- BadValue
- BadWindow
- Below
- BottomIf
- Button1
- Button1Mask
- Button1MotionMask
- Button2
- Button2Mask
- Button2MotionMask
- Button3
- Button3Mask
- Button3MotionMask
- Button4
- Button4Mask
- Button4MotionMask
- Button5
- Button5Mask
- Button5MotionMask
- ButtonMotionMask
- ButtonPress
- ButtonPressMask
- ButtonRelease
- ButtonReleaseMask
- CWBackPixel
- CWBackPixmap
- CWBackingPixel
- CWBackingPlanes
- CWBackingStore
- CWBitGravity
- CWBorderPixel
- CWBorderPixmap
- CWBorderWidth
- CWColormap
- CWCursor
- CWDontPropagate
- CWEventMask
- CWHeight
- CWOverrideRedirect
- CWSaveUnder
- CWSibling
- CWStackMode
- CWWidth
- CWWinGravity
- CWX
- CWY
- CapButt
- CapNotLast
- CapProjecting
- CapRound
- CenterGravity
- CirculateNotify
- CirculateRequest
- ClientMessage
- ClipByChildren
- ColormapChangeMask
- ColormapInstalled
- ColormapNotify
- ColormapUninstalled
- Complex
- ConfigureNotify
- ConfigureRequest
- ControlMapIndex
- ControlMask
- Convex
- CoordModeOrigin
- CoordModePrevious
- CopyFromParent
- CreateNotify
- CurrentTime
- CursorShape
- DefaultBlanking
- DefaultExposures
- DestroyAll
- DestroyNotify
- DirectColor
- DisableAccess
- DisableScreenInterval
- DisableScreenSaver
- DoBlue
- DoGreen
- DoRed
- DontAllowExposures
- DontPreferBlanking
- EastGravity
- EnableAccess
- EnterNotify
- EnterWindowMask
- EvenOddRule
- Expose
- ExposureMask
- FamilyChaos
- FamilyDECnet
- FamilyInternet
- FillOpaqueStippled
- FillSolid
- FillStippled
- FillTiled
- FirstExtensionError
- FocusChangeMask
- FocusIn
- FocusOut
- FontChange
- FontLeftToRight
- FontRightToLeft
- ForgetGravity
- GCArcMode
- GCBackground
- GCCapStyle
- GCClipMask
- GCClipXOrigin
- GCClipYOrigin
- GCDashList
- GCDashOffset
- GCFillRule
- GCFillStyle
- GCFont
- GCForeground
- GCFunction
- GCGraphicsExposures
- GCJoinStyle
- GCLastBit
- GCLineStyle
- GCLineWidth
- GCPlaneMask
- GCStipple
- GCSubwindowMode
- GCTile
- GCTileStipXOrigin
- GCTileStipYOrigin
- GXand
- GXandInverted
- GXandReverse
- GXclear
- GXcopy
- GXcopyInverted
- GXequiv
- GXinvert
- GXnand
- GXnoop
- GXnor
- GXor
- GXorInverted
- GXorReverse
- GXset
- GXxor
- GrabFrozen
- GrabInvalidTime
- GrabModeAsync
- GrabModeSync
- GrabNotViewable
- GrabSuccess
- GraphicsExpose
- GravityNotify
- GrayScale
- HostDelete
- HostInsert
- IncludeInferiors
- InputFocus
- InputOnly
- InputOutput
- IsUnmapped
- IsUnviewable
- IsViewable
- JoinBevel
- JoinMiter
- JoinRound
- KBAutoRepeatMode
- KBBellDuration
- KBBellPercent
- KBBellPitch
- KBKey
- KBKeyClickPercent
- KBLed
- KBLedMode
- KeyPress
- KeyPressMask
- KeyRelease
- KeyReleaseMask
- KeymapNotify
- KeymapStateMask
- LASTEvent
- LSBFirst
- LastExtensionError
- LeaveNotify
- LeaveWindowMask
- LedModeOff
- LedModeOn
- LineDoubleDash
- LineOnOffDash
- LineSolid
- LockMapIndex
- LockMask
- LowerHighest
- MSBFirst
- MapNotify
- MapRequest
- MappingBusy
- MappingFailed
- MappingKeyboard
- MappingModifier
- MappingNotify
- MappingPointer
- MappingSuccess
- Mod1MapIndex
- Mod1Mask
- Mod2MapIndex
- Mod2Mask
- Mod3MapIndex
- Mod3Mask
- Mod4MapIndex
- Mod4Mask
- Mod5MapIndex
- Mod5Mask
- MotionNotify
- NoEventMask
- NoExpose
- NoSymbol
- Nonconvex
- None
- NorthEastGravity
- NorthGravity
- NorthWestGravity
- NotUseful
- NotifyAncestor
- NotifyDetailNone
- NotifyGrab
- NotifyHint
- NotifyInferior
- NotifyNonlinear
- NotifyNonlinearVirtual
- NotifyNormal
- NotifyPointer
- NotifyPointerRoot
- NotifyUngrab
- NotifyVirtual
- NotifyWhileGrabbed
- Opposite
- OwnerGrabButtonMask
- ParentRelative
- PlaceOnBottom
- PlaceOnTop
- PointerMotionHintMask
- PointerMotionMask
- PointerRoot
- PointerWindow
- PreferBlanking
- PropModeAppend
- PropModePrepend
- PropModeReplace
- PropertyChangeMask
- PropertyDelete
- PropertyNewValue
- PropertyNotify
- PseudoColor
- RaiseLowest
- ReparentNotify
- ReplayKeyboard
- ReplayPointer
- ResizeRedirectMask
- ResizeRequest
- RetainPermanent
- RetainTemporary
- RevertToNone
- RevertToParent
- RevertToPointerRoot
- ScreenSaverActive
- ScreenSaverReset
- SelectionClear
- SelectionNotify
- SelectionRequest
- SetModeDelete
- SetModeInsert
- ShiftMapIndex
- ShiftMask
- SouthEastGravity
- SouthGravity
- SouthWestGravity
- StaticColor
- StaticGravity
- StaticGray
- StippleShape
- StructureNotifyMask
- SubstructureNotifyMask
- SubstructureRedirectMask
- Success
- SyncBoth
- SyncKeyboard
- SyncPointer
- TileShape
- TopIf
- TrueColor
- UnmapGravity
- UnmapNotify
- Unsorted
- VisibilityChangeMask
- VisibilityFullyObscured
- VisibilityNotify
- VisibilityPartiallyObscured
- VisibilityUnobscured
- WestGravity
- WhenMapped
- WindingRule
- XYBitmap
- XYPixmap
- X_H
- X_PROTOCOL
- X_PROTOCOL_REVISION
- YSorted
- YXBanded
- YXSorted
- ZPixmap
-);
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function. If a constant is not found then control is passed
- # to the AUTOLOAD in AutoLoader.
-
- my $constname;
- ($constname = $AUTOLOAD) =~ s/.*:://;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- croak "Your vendor has not defined X macro $constname";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-bootstrap Tk::X;
-
-# Preloaded methods go here.
-
-# Autoload methods go after =cut, and are processed by the autosplit program.
-
-1;
-__END__
-# Below is the stub of documentation for your module. You better edit it!
-
-=cut
diff --git a/Master/perltl/site/lib/Tk/X11/license.terms b/Master/perltl/site/lib/Tk/X11/license.terms
deleted file mode 100644
index 3dcd816f4a3..00000000000
--- a/Master/perltl/site/lib/Tk/X11/license.terms
+++ /dev/null
@@ -1,32 +0,0 @@
-This software is copyrighted by the Regents of the University of
-California, Sun Microsystems, Inc., and other parties. The following
-terms apply to all files associated with the software unless explicitly
-disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-RESTRICTED RIGHTS: Use, duplication or disclosure by the government
-is subject to the restrictions as set forth in subparagraph (c) (1) (ii)
-of the Rights in Technical Data and Computer Software Clause as DFARS
-252.227-7013 and FAR 52.227-19.
diff --git a/Master/perltl/site/lib/Tk/Xcamel.gif b/Master/perltl/site/lib/Tk/Xcamel.gif
deleted file mode 100644
index cb88bc0afd8..00000000000
--- a/Master/perltl/site/lib/Tk/Xcamel.gif
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/Tk/act_folder.xbm b/Master/perltl/site/lib/Tk/act_folder.xbm
deleted file mode 100644
index fc82949945b..00000000000
--- a/Master/perltl/site/lib/Tk/act_folder.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define act_folder_width 16
-#define act_folder_height 10
-static unsigned char act_folder_bits[] = {
- 0xfc, 0x00, 0xaa, 0x0f, 0x55, 0x15, 0xeb, 0xff, 0x15, 0x80, 0x0b, 0x40,
- 0x05, 0x20, 0x03, 0x10, 0x01, 0x08, 0xff, 0x07};
diff --git a/Master/perltl/site/lib/Tk/act_folder.xpm b/Master/perltl/site/lib/Tk/act_folder.xpm
deleted file mode 100644
index 0e7d682713a..00000000000
--- a/Master/perltl/site/lib/Tk/act_folder.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * act_folder_xpm[] = {
-/* width height num_colors chars_per_pixel */
-"16 12 4 1",
-/* colors */
-" s None c None",
-". c black",
-"X c yellow",
-"o c #5B5B57574646",
-/* pixels */
-" .... ",
-" .XXXX. ",
-" .XXXXXX. ",
-"............. ",
-".oXoXoXoXoXo. ",
-".XoX............",
-".oX.XXXXXXXXXXX.",
-".Xo.XXXXXXXXXX. ",
-".o.XXXXXXXXXXX. ",
-".X.XXXXXXXXXXX. ",
-"..XXXXXXXXXX.. ",
-"............. "};
diff --git a/Master/perltl/site/lib/Tk/anim.gif b/Master/perltl/site/lib/Tk/anim.gif
deleted file mode 100644
index 96a50b701be..00000000000
--- a/Master/perltl/site/lib/Tk/anim.gif
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/Tk/balArrow.xbm b/Master/perltl/site/lib/Tk/balArrow.xbm
deleted file mode 100644
index ee0664a4727..00000000000
--- a/Master/perltl/site/lib/Tk/balArrow.xbm
+++ /dev/null
@@ -1,4 +0,0 @@
-#define balArrow_width 6
-#define balArrow_height 6
-static char balArrow_bits[] = {
- 0x1f, 0x07, 0x07, 0x09, 0x11, 0x20};
diff --git a/Master/perltl/site/lib/Tk/cbxarrow.xbm b/Master/perltl/site/lib/Tk/cbxarrow.xbm
deleted file mode 100644
index ae4054488b9..00000000000
--- a/Master/perltl/site/lib/Tk/cbxarrow.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define cbxarrow_width 11
-#define cbxarrow_height 14
-static char cbxarrow_bits[] = {
- 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00,
- 0xfe, 0x03, 0xfc, 0x01, 0xf8, 0x00, 0x70, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0xfe, 0x03, 0xfe, 0x03};
diff --git a/Master/perltl/site/lib/Tk/file.xbm b/Master/perltl/site/lib/Tk/file.xbm
deleted file mode 100644
index 7bf12bb4c9f..00000000000
--- a/Master/perltl/site/lib/Tk/file.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define file_width 12
-#define file_height 12
-static unsigned char file_bits[] = {
- 0xfe, 0x00, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x03};
diff --git a/Master/perltl/site/lib/Tk/file.xpm b/Master/perltl/site/lib/Tk/file.xpm
deleted file mode 100644
index 10cc24f9a1e..00000000000
--- a/Master/perltl/site/lib/Tk/file.xpm
+++ /dev/null
@@ -1,18 +0,0 @@
-/* XPM */
-static char * file_xpm[] = {
-"12 12 3 1",
-" s None c None",
-". c #000000000000",
-"X c white",
-" ........ ",
-" .XXXXXX. ",
-" .XXXXXX... ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .......... "};
diff --git a/Master/perltl/site/lib/Tk/folder.xbm b/Master/perltl/site/lib/Tk/folder.xbm
deleted file mode 100644
index 0398f0de777..00000000000
--- a/Master/perltl/site/lib/Tk/folder.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define folder_width 16
-#define folder_height 10
-static unsigned char folder_bits[] = {
- 0xfc, 0x00, 0x02, 0x07, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08,
- 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0xff, 0x07};
diff --git a/Master/perltl/site/lib/Tk/folder.xpm b/Master/perltl/site/lib/Tk/folder.xpm
deleted file mode 100644
index fda7c15a549..00000000000
--- a/Master/perltl/site/lib/Tk/folder.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * folder_xpm[] = {
-/* width height num_colors chars_per_pixel */
-"16 12 3 1",
-/* colors */
-" s None c None",
-". c black",
-"X c #f0ff80",
-/* pixels */
-" .... ",
-" .XXXX. ",
-" .XXXXXX. ",
-"............. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-".XXXXXXXXXXX. ",
-"............. "};
diff --git a/Master/perltl/site/lib/Tk/icon.gif b/Master/perltl/site/lib/Tk/icon.gif
deleted file mode 100644
index dfe6b6621f2..00000000000
--- a/Master/perltl/site/lib/Tk/icon.gif
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/Tk/license.terms b/Master/perltl/site/lib/Tk/license.terms
deleted file mode 100644
index 6a5d3728366..00000000000
--- a/Master/perltl/site/lib/Tk/license.terms
+++ /dev/null
@@ -1,35 +0,0 @@
-This software is copyrighted by the Regents of the University of
-California, Sun Microsystems, Inc., and other parties. The following
-terms apply to all files associated with the software unless explicitly
-disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-RESTRICTED RIGHTS: Use, duplication or disclosure by the government
-is subject to the restrictions as set forth in subparagraph (c) (1) (ii)
-of the Rights in Technical Data and Computer Software Clause as DFARS
-252.227-7013 and FAR 52.227-19.
-0 in license.terms
-0 in license.terms
-0 in license.terms
diff --git a/Master/perltl/site/lib/Tk/openfile.xbm b/Master/perltl/site/lib/Tk/openfile.xbm
deleted file mode 100644
index 859e2e57608..00000000000
--- a/Master/perltl/site/lib/Tk/openfile.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define openfile_width 16
-#define openfile_height 12
-static unsigned char openfile_bits[] = {
- 0x00, 0x00, 0xfc, 0x00, 0x02, 0x07, 0x01, 0x08, 0xc1, 0xff, 0xa1, 0xaa,
- 0x51, 0x55, 0xa9, 0x2a, 0x55, 0x15, 0xab, 0x0a, 0xff, 0x07, 0x00, 0x00};
diff --git a/Master/perltl/site/lib/Tk/openfolder.xbm b/Master/perltl/site/lib/Tk/openfolder.xbm
deleted file mode 100644
index 59ee624efd0..00000000000
--- a/Master/perltl/site/lib/Tk/openfolder.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define openfolder_width 16
-#define openfolder_height 10
-static unsigned char openfolder_bits[] = {
- 0xfc, 0x00, 0x02, 0x07, 0x01, 0x08, 0xc1, 0xff, 0x21, 0x80, 0x11, 0x40,
- 0x09, 0x20, 0x05, 0x10, 0x03, 0x08, 0xff, 0x07};
diff --git a/Master/perltl/site/lib/Tk/openfolder.xpm b/Master/perltl/site/lib/Tk/openfolder.xpm
deleted file mode 100644
index 191fe1e72bc..00000000000
--- a/Master/perltl/site/lib/Tk/openfolder.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * openfolder_xpm[] = {
-/* width height num_colors chars_per_pixel */
-"16 12 3 1",
-/* colors */
-" s None c None",
-". c black",
-"X c #f0ff80",
-/* pixels */
-" .... ",
-" .XXXX. ",
-" .XXXXXX. ",
-"............. ",
-".XXXXXXXXXXX. ",
-".XXX............",
-".XX.XXXXXXXXXXX.",
-".XX.XXXXXXXXXX. ",
-".X.XXXXXXXXXXX. ",
-".X.XXXXXXXXXXX. ",
-"..XXXXXXXXXX.. ",
-"............. "};
diff --git a/Master/perltl/site/lib/Tk/prolog.ps b/Master/perltl/site/lib/Tk/prolog.ps
deleted file mode 100644
index 409e06a65a0..00000000000
--- a/Master/perltl/site/lib/Tk/prolog.ps
+++ /dev/null
@@ -1,284 +0,0 @@
-%%BeginProlog
-50 dict begin
-
-% This is a standard prolog for Postscript generated by Tk's canvas
-% widget.
-% SCCS: @(#) prolog.ps 1.5 96/02/17 17:45:11
-
-% The definitions below just define all of the variables used in
-% any of the procedures here. This is needed for obscure reasons
-% explained on p. 716 of the Postscript manual (Section H.2.7,
-% "Initializing Variables," in the section on Encapsulated Postscript).
-
-/baseline 0 def
-/stipimage 0 def
-/height 0 def
-/justify 0 def
-/lineLength 0 def
-/spacing 0 def
-/stipple 0 def
-/strings 0 def
-/xoffset 0 def
-/yoffset 0 def
-/tmpstip null def
-
-% Define the array ISOLatin1Encoding (which specifies how characters are
-% encoded for ISO-8859-1 fonts), if it isn't already present (Postscript
-% level 2 is supposed to define it, but level 1 doesn't).
-
-systemdict /ISOLatin1Encoding known not {
- /ISOLatin1Encoding [
- /space /space /space /space /space /space /space /space
- /space /space /space /space /space /space /space /space
- /space /space /space /space /space /space /space /space
- /space /space /space /space /space /space /space /space
- /space /exclam /quotedbl /numbersign /dollar /percent /ampersand
- /quoteright
- /parenleft /parenright /asterisk /plus /comma /minus /period /slash
- /zero /one /two /three /four /five /six /seven
- /eight /nine /colon /semicolon /less /equal /greater /question
- /at /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 /bracketleft /backslash /bracketright /asciicircum /underscore
- /quoteleft /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 /braceleft /bar /braceright /asciitilde /space
- /space /space /space /space /space /space /space /space
- /space /space /space /space /space /space /space /space
- /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
- /dieresis /space /ring /cedilla /space /hungarumlaut /ogonek /caron
- /space /exclamdown /cent /sterling /currency /yen /brokenbar /section
- /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen
- /registered /macron
- /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph
- /periodcentered
- /cedillar /onesuperior /ordmasculine /guillemotright /onequarter
- /onehalf /threequarters /questiondown
- /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
- /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex
- /Idieresis
- /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
- /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn
- /germandbls
- /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
- /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex
- /idieresis
- /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
- /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn
- /ydieresis
- ] def
-} if
-
-% font ISOEncode font
-% This procedure changes the encoding of a font from the default
-% Postscript encoding to ISOLatin1. It's typically invoked just
-% before invoking "setfont". The body of this procedure comes from
-% Section 5.6.1 of the Postscript book.
-
-/ISOEncode {
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding ISOLatin1Encoding def
- currentdict
- end
-
- % I'm not sure why it's necessary to use "definefont" on this new
- % font, but it seems to be important; just use the name "Temporary"
- % for the font.
-
- /Temporary exch definefont
-} bind def
-
-% StrokeClip
-%
-% This procedure converts the current path into a clip area under
-% the assumption of stroking. It's a bit tricky because some Postscript
-% interpreters get errors during strokepath for dashed lines. If
-% this happens then turn off dashes and try again.
-
-/StrokeClip {
- {strokepath} stopped {
- (This Postscript printer gets limitcheck overflows when) =
- (stippling dashed lines; lines will be printed solid instead.) =
- [] 0 setdash strokepath} if
- clip
-} bind def
-
-% desiredSize EvenPixels closestSize
-%
-% The procedure below is used for stippling. Given the optimal size
-% of a dot in a stipple pattern in the current user coordinate system,
-% compute the closest size that is an exact multiple of the device's
-% pixel size. This allows stipple patterns to be displayed without
-% aliasing effects.
-
-/EvenPixels {
- % Compute exact number of device pixels per stipple dot.
- dup 0 matrix currentmatrix dtransform
- dup mul exch dup mul add sqrt
-
- % Round to an integer, make sure the number is at least 1, and compute
- % user coord distance corresponding to this.
- dup round dup 1 lt {pop 1} if
- exch div mul
-} bind def
-
-% width height string StippleFill --
-%
-% Given a path already set up and a clipping region generated from
-% it, this procedure will fill the clipping region with a stipple
-% pattern. "String" contains a proper image description of the
-% stipple pattern and "width" and "height" give its dimensions. Each
-% stipple dot is assumed to be about one unit across in the current
-% user coordinate system. This procedure trashes the graphics state.
-
-/StippleFill {
- % The following code is needed to work around a NeWSprint bug.
-
- /tmpstip 1 index def
-
- % Change the scaling so that one user unit in user coordinates
- % corresponds to the size of one stipple dot.
- 1 EvenPixels dup scale
-
- % Compute the bounding box occupied by the path (which is now
- % the clipping region), and round the lower coordinates down
- % to the nearest starting point for the stipple pattern. Be
- % careful about negative numbers, since the rounding works
- % differently on them.
-
- pathbbox
- 4 2 roll
- 5 index div dup 0 lt {1 sub} if cvi 5 index mul 4 1 roll
- 6 index div dup 0 lt {1 sub} if cvi 6 index mul 3 2 roll
-
- % Stack now: width height string y1 y2 x1 x2
- % Below is a doubly-nested for loop to iterate across this area
- % in units of the stipple pattern size, going up columns then
- % across rows, blasting out a stipple-pattern-sized rectangle at
- % each position
-
- 6 index exch {
- 2 index 5 index 3 index {
- % Stack now: width height string y1 y2 x y
-
- gsave
- 1 index exch translate
- 5 index 5 index true matrix tmpstip imagemask
- grestore
- } for
- pop
- } for
- pop pop pop pop pop
-} bind def
-
-% -- AdjustColor --
-% Given a color value already set for output by the caller, adjusts
-% that value to a grayscale or mono value if requested by the CL
-% variable.
-
-/AdjustColor {
- CL 2 lt {
- currentgray
- CL 0 eq {
- .5 lt {0} {1} ifelse
- } if
- setgray
- } if
-} bind def
-
-% x y strings spacing xoffset yoffset justify stipple DrawText --
-% This procedure does all of the real work of drawing text. The
-% color and font must already have been set by the caller, and the
-% following arguments must be on the stack:
-%
-% x, y - Coordinates at which to draw text.
-% strings - An array of strings, one for each line of the text item,
-% in order from top to bottom.
-% spacing - Spacing between lines.
-% xoffset - Horizontal offset for text bbox relative to x and y: 0 for
-% nw/w/sw anchor, -0.5 for n/center/s, and -1.0 for ne/e/se.
-% yoffset - Vertical offset for text bbox relative to x and y: 0 for
-% nw/n/ne anchor, +0.5 for w/center/e, and +1.0 for sw/s/se.
-% justify - 0 for left justification, 0.5 for center, 1 for right justify.
-% stipple - Boolean value indicating whether or not text is to be
-% drawn in stippled fashion. If text is stippled,
-% procedure StippleText must have been defined to call
-% StippleFill in the right way.
-%
-% Also, when this procedure is invoked, the color and font must already
-% have been set for the text.
-
-/DrawText {
- /stipple exch def
- /justify exch def
- /yoffset exch def
- /xoffset exch def
- /spacing exch def
- /strings exch def
-
- % First scan through all of the text to find the widest line.
-
- /lineLength 0 def
- strings {
- stringwidth pop
- dup lineLength gt {/lineLength exch def} {pop} ifelse
- newpath
- } forall
-
- % Compute the baseline offset and the actual font height.
-
- 0 0 moveto (TXygqPZ) false charpath
- pathbbox dup /baseline exch def
- exch pop exch sub /height exch def pop
- newpath
-
- % Translate coordinates first so that the origin is at the upper-left
- % corner of the text's bounding box. Remember that x and y for
- % positioning are still on the stack.
-
- translate
- lineLength xoffset mul
- strings length 1 sub spacing mul height add yoffset mul translate
-
- % Now use the baseline and justification information to translate so
- % that the origin is at the baseline and positioning point for the
- % first line of text.
-
- justify lineLength mul baseline neg translate
-
- % Iterate over each of the lines to output it. For each line,
- % compute its width again so it can be properly justified, then
- % display it.
-
- strings {
- dup stringwidth pop
- justify neg mul 0 moveto
- stipple {
-
- % The text is stippled, so turn it into a path and print
- % by calling StippledText, which in turn calls StippleFill.
- % Unfortunately, many Postscript interpreters will get
- % overflow errors if we try to do the whole string at
- % once, so do it a character at a time.
-
- gsave
- /char (X) def
- {
- char 0 3 -1 roll put
- currentpoint
- gsave
- char true charpath clip StippleText
- grestore
- char stringwidth translate
- moveto
- } forall
- grestore
- } {show} ifelse
- 0 spacing neg translate
- } forall
-} bind def
-
-%%EndProlog
diff --git a/Master/perltl/site/lib/Tk/srcfile.xpm b/Master/perltl/site/lib/Tk/srcfile.xpm
deleted file mode 100644
index 06a40a96c84..00000000000
--- a/Master/perltl/site/lib/Tk/srcfile.xpm
+++ /dev/null
@@ -1,18 +0,0 @@
-/* XPM */
-static char * srcfile_xpm[] = {
-"12 12 3 1",
-" s None c None",
-". c #000000000000",
-"X c gray91",
-" ........ ",
-" .XXXXXX. ",
-" .XXXXXX... ",
-" .XXXXXXXX. ",
-" .XX...XXX. ",
-" .X.XXX.XX. ",
-" .X.XXXXXX. ",
-" .X.XXXXXX. ",
-" .XX....XX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXX. ",
-" .......... "};
diff --git a/Master/perltl/site/lib/Tk/textfile.xpm b/Master/perltl/site/lib/Tk/textfile.xpm
deleted file mode 100644
index 8fa8d2f9032..00000000000
--- a/Master/perltl/site/lib/Tk/textfile.xpm
+++ /dev/null
@@ -1,18 +0,0 @@
-/* XPM */
-static char * textfile_xpm[] = {
-"12 12 3 1",
-" s None c None",
-". c #000000000000",
-"X c #E0E0FFFFE0E0",
-" ........ ",
-" .XXXXXX. ",
-" .XXXXXX... ",
-" .X....XXX. ",
-" .XXXXXXXX. ",
-" .X...XXXX. ",
-" .XXXXXXXX. ",
-" .X.....XX. ",
-" .XXXXXXXX. ",
-" .X.....XX. ",
-" .XXXXXXXX. ",
-" .......... "};
diff --git a/Master/perltl/site/lib/Tk/tranicon.gif b/Master/perltl/site/lib/Tk/tranicon.gif
deleted file mode 100644
index dc7d494c572..00000000000
--- a/Master/perltl/site/lib/Tk/tranicon.gif
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/Tk/widgets.pm b/Master/perltl/site/lib/Tk/widgets.pm
deleted file mode 100644
index 742866216cc..00000000000
--- a/Master/perltl/site/lib/Tk/widgets.pm
+++ /dev/null
@@ -1,21 +0,0 @@
-package Tk::widgets;
-use Carp;
-
-use vars qw($VERSION);
-$VERSION = '3.011'; # $Id: //depot/Tk8/Tk/widgets.pm#11 $
-
-sub import
-{
- my $class = shift;
- foreach (@_)
- {
- local $SIG{__DIE__} = \&Carp::croak;
- # carp "$_ already loaded" if (exists $INC{"Tk/$_.pm"});
- require "Tk/$_.pm";
- }
-}
-
-1;
-__END__
-
-=cut
diff --git a/Master/perltl/site/lib/Tk/win.xbm b/Master/perltl/site/lib/Tk/win.xbm
deleted file mode 100644
index 13c05e8c2d7..00000000000
--- a/Master/perltl/site/lib/Tk/win.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define win.xbm_width 16
-#define win.xbm_height 16
-static char win.xbm_bits[] = {
- 0xff, 0xff, 0x0d, 0xb0, 0xff, 0xff, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
- 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
- 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xff, 0xff};
diff --git a/Master/perltl/site/lib/Tk/winfolder.xpm b/Master/perltl/site/lib/Tk/winfolder.xpm
deleted file mode 100644
index 73fe734c6d0..00000000000
--- a/Master/perltl/site/lib/Tk/winfolder.xpm
+++ /dev/null
@@ -1,39 +0,0 @@
-/* XPM */
-static char *winfolder[] = {
-/* width height num_colors chars_per_pixel */
-" 17 15 17 1",
-/* colors */
-" c none",
-". c #000000",
-"# c #808080",
-"a c #800000",
-"b c #808000",
-"c c #008000",
-"d c #008080",
-"e c #000080",
-"f c #800080",
-"g c #ffffff",
-"h c #c0c0c0",
-"i c #ff0000",
-"j c #ffff00",
-"k c #00ff00",
-"l c #00ffff",
-"m c #0000ff",
-"n c #ff00ff",
-/* pixels */
-" ",
-" ##### ",
-" #hjhjh# ",
-" #hjhjhjh###### ",
-" #gggggggggggg#. ",
-" #gjhjhjhjhjhj#. ",
-" #ghjhjhjhjhjh#. ",
-" #gjhjhjhjhjhj#. ",
-" #ghjhjhjhjhjh#. ",
-" #gjhjhjhjhjhj#. ",
-" #ghjhjhjhjhjh#. ",
-" #gjhjhjhjhjhj#. ",
-" ##############. ",
-" .............. ",
-" ",
-};
diff --git a/Master/perltl/site/lib/Tk/wintext.xpm b/Master/perltl/site/lib/Tk/wintext.xpm
deleted file mode 100644
index 50b2d5587dd..00000000000
--- a/Master/perltl/site/lib/Tk/wintext.xpm
+++ /dev/null
@@ -1,42 +0,0 @@
-/* XPM */
-static char *wintext[] = {
-/* width height num_colors chars_per_pixel */
-" 15 18 17 1",
-/* colors */
-" c None",
-". c #000000",
-"# c #808080",
-"a c #800000",
-"b c #808000",
-"c c #008000",
-"d c #008080",
-"e c #000080",
-"f c #800080",
-"g c #ffffff",
-"h c #c0c0c0",
-"i c #ff0000",
-"j c #ffff00",
-"k c #00ff00",
-"l c #00ffff",
-"m c #0000ff",
-"n c #ff00ff",
-/* pixels */
-" ",
-" . . . . . ",
-" .g#g#g#g#g. ",
-" #g.g.g.g.g.g. ",
-" #ggggggggggh. ",
-" #ggggggggggh. ",
-" #gg...g..ggh. ",
-" #ggggggggggh. ",
-" #gg......ggh. ",
-" #ggggggggggh. ",
-" #gg......ggh. ",
-" #ggggggggggh. ",
-" #gg......ggh. ",
-" #ggggggggggh. ",
-" #ggggggggggh. ",
-" #hhhhhhhhhhh. ",
-" ........... ",
-" "
-};
diff --git a/Master/perltl/site/lib/Win32/API.pm b/Master/perltl/site/lib/Win32/API.pm
deleted file mode 100644
index 154de7a80ee..00000000000
--- a/Master/perltl/site/lib/Win32/API.pm
+++ /dev/null
@@ -1,719 +0,0 @@
-package Win32::API;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-#######################################################################
-#
-# Win32::API - Perl Win32 API Import Facility
-#
-# Version: 0.41
-# Date: 10 Mar 2003
-# Author: Aldo Calpini <dada@perl.it>
-# $Id: API.pm,v 1.0 2001/10/30 13:57:31 dada Exp $
-#######################################################################
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-@ISA = qw( Exporter DynaLoader );
-
-use vars qw( $DEBUG );
-$DEBUG = 0;
-
-sub DEBUG {
- if ($Win32::API::DEBUG) {
- printf @_ if @_ or return 1;
- } else {
- return 0;
- }
-}
-
-use Win32::API::Type;
-use Win32::API::Struct;
-
-#######################################################################
-# STATIC OBJECT PROPERTIES
-#
-$VERSION = "0.41";
-
-#### some package-global hash to
-#### keep track of the imported
-#### libraries and procedures
-my %Libraries = ();
-my %Procedures = ();
-
-
-#######################################################################
-# dynamically load in the API extension module.
-#
-bootstrap Win32::API;
-
-#######################################################################
-# PUBLIC METHODS
-#
-sub new {
- my($class, $dll, $proc, $in, $out) = @_;
- my $hdll;
- my $self = {};
-
- #### avoid loading a library more than once
- if(exists($Libraries{$dll})) {
- # print "Win32::API::new: Library '$dll' already loaded, handle=$Libraries{$dll}\n";
- $hdll = $Libraries{$dll};
- } else {
- # print "Win32::API::new: Loading library '$dll'\n";
- $hdll = Win32::API::LoadLibrary($dll);
- $Libraries{$dll} = $hdll;
- }
-
- #### if the dll can't be loaded, set $! to Win32's GetLastError()
- if(!$hdll) {
- $! = Win32::GetLastError();
- return undef;
- }
-
- #### determine if we have a prototype or not
- if( (not defined $in) and (not defined $out) ) {
- ($proc, $self->{in}, $self->{intypes}, $self->{out}) = parse_prototype( $proc );
- return undef unless $proc;
- $self->{proto} = 1;
- } else {
- $self->{in} = [];
- if(ref($in) eq 'ARRAY') {
- foreach (@$in) {
- push(@{ $self->{in} }, type_to_num($_));
- }
- } else {
- my @in = split '', $in;
- foreach (@in) {
- push(@{ $self->{in} }, type_to_num($_));
- }
- }
- $self->{out} = type_to_num($out);
- }
-
- #### first try to import the function of given name...
- my $hproc = Win32::API::GetProcAddress($hdll, $proc);
-
- #### ...then try appending either A or W (for ASCII or Unicode)
- if(!$hproc) {
- my $tproc = $proc;
- $tproc .= (IsUnicode() ? "W" : "A");
- # print "Win32::API::new: procedure not found, trying '$tproc'...\n";
- $hproc = Win32::API::GetProcAddress($hdll, $tproc);
- }
-
- #### ...if all that fails, set $! accordingly
- if(!$hproc) {
- $! = Win32::GetLastError();
- return undef;
- }
-
- #### ok, let's stuff the object
- $self->{procname} = $proc;
- $self->{dll} = $hdll;
- $self->{dllname} = $dll;
- $self->{proc} = $hproc;
-
- #### keep track of the imported function
- $Libraries{$dll} = $hdll;
- $Procedures{$dll}++;
-
- #### cast the spell
- bless($self, $class);
- return $self;
-}
-
-sub Import {
- my($class, $dll, $proc, $in, $out) = @_;
- $Imported{"$dll:$proc"} = Win32::API->new($dll, $proc, $in, $out) or return 0;
- my $P = (caller)[0];
- eval qq(
- sub ${P}::$Imported{"$dll:$proc"}->{procname} { \$Win32::API::Imported{"$dll:$proc"}->Call(\@_); }
- );
- return $@ ? 0 : 1;
-}
-
-
-#######################################################################
-# PRIVATE METHODS
-#
-sub DESTROY {
- my($self) = @_;
-
- #### decrease this library's procedures reference count
- $Procedures{$self->{dllname}}--;
-
- #### once it reaches 0, free it
- if($Procedures{$self->{dllname}} == 0) {
- # print "Win32::API::DESTROY: Freeing library '$self->{dllname}'\n";
- Win32::API::FreeLibrary($Libraries{$self->{dllname}});
- delete($Libraries{$self->{dllname}});
- }
-}
-
-sub type_to_num {
- my $type = shift;
- my $out = shift;
- my $num;
-
- if( $type eq 'N'
- or $type eq 'n'
- or $type eq 'l'
- or $type eq 'L'
- ) {
- $num = 1;
- } elsif($type eq 'P'
- or $type eq 'p'
- ) {
- $num = 2;
- } elsif($type eq 'I'
- or $type eq 'i'
- ) {
- $num = 3;
- } elsif($type eq 'f'
- or $type eq 'F'
- ) {
- $num = 4;
- } elsif($type eq 'D'
- or $type eq 'd'
- ) {
- $num = 5;
- } elsif($type eq 'c'
- or $type eq 'C'
- ) {
- $num = 6;
- } else {
- $num = 0;
- }
- unless(defined $out) {
- if( $type eq 's'
- or $type eq 'S'
- ) {
- $num = 51;
- } elsif($type eq 'b'
- or $type eq 'B'
- ) {
- $num = 22;
- } elsif($type eq 'k'
- or $type eq 'K'
- ) {
- $num = 101;
- }
- }
- return $num;
-}
-
-sub parse_prototype {
- my($proto) = @_;
-
- my @in_params = ();
- my @in_types = ();
- if($proto =~ /^\s*(\S+)\s+(\S+)\s*\(([^\)]*)\)/) {
- my $ret = $1;
- my $proc = $2;
- my $params = $3;
-
- $params =~ s/^\s+//;
- $params =~ s/\s+$//;
-
- DEBUG "(PM)parse_prototype: got PROC '%s'\n", $proc;
- DEBUG "(PM)parse_prototype: got PARAMS '%s'\n", $params;
-
- foreach my $param (split(/\s*,\s*/, $params)) {
- my($type, $name);
- if($param =~ /(\S+)\s+(\S+)/) {
- ($type, $name) = ($1, $2);
- }
-
- if(Win32::API::Type::is_known($type)) {
- if(Win32::API::Type::is_pointer($type)) {
- DEBUG "(PM)parse_prototype: IN='%s' PACKING='%s' API_TYPE=%d\n",
- $type,
- Win32::API::Type->packing( $type ),
- type_to_num('P');
- push(@in_params, type_to_num('P'));
- } else {
- DEBUG "(PM)parse_prototype: IN='%s' PACKING='%s' API_TYPE=%d\n",
- $type,
- Win32::API::Type->packing( $type ),
- type_to_num( Win32::API::Type->packing( $type ) );
- push(@in_params, type_to_num( Win32::API::Type->packing( $type ) ));
- }
- } elsif( Win32::API::Struct::is_known( $type ) ) {
- DEBUG "(PM)parse_prototype: IN='%s' PACKING='%s' API_TYPE=%d\n",
- $type, 'S', type_to_num('S');
- push(@in_params, type_to_num('S'));
- } else {
- warn "Win32::API::parse_prototype: WARNING unknown parameter type '$type'";
- push(@in_params, type_to_num('I'));
- }
- push(@in_types, $type);
-
- }
- DEBUG "parse_prototype: IN=[ @in_params ]\n";
-
-
-
- if(Win32::API::Type::is_known($ret)) {
- if(Win32::API::Type::is_pointer($ret)) {
- DEBUG "parse_prototype: OUT='%s' PACKING='%s' API_TYPE=%d\n",
- $ret,
- Win32::API::Type->packing( $ret ),
- type_to_num('P');
- return ( $proc, \@in_params, \@in_types, type_to_num('P') );
- } else {
- DEBUG "parse_prototype: OUT='%s' PACKING='%s' API_TYPE=%d\n",
- $ret,
- Win32::API::Type->packing( $ret ),
- type_to_num( Win32::API::Type->packing( $ret ) );
- return ( $proc, \@in_params, \@in_types, type_to_num(Win32::API::Type->packing($ret)) );
- }
- } else {
- warn "Win32::API::parse_prototype: WARNING unknown output parameter type '$ret'";
- return ( $proc, \@in_params, \@in_types, type_to_num('I') );
- }
-
- } else {
- warn "Win32::API::parse_prototype: bad prototype '$proto'";
- return undef;
- }
-}
-
-1;
-
-__END__
-
-#######################################################################
-# DOCUMENTATION
-#
-
-=head1 NAME
-
-Win32::API - Perl Win32 API Import Facility
-
-=head1 SYNOPSIS
-
- #### Method 1: with prototype
-
- use Win32::API;
- $function = Win32::API->new(
- 'mydll, 'int sum_integers(int a, int b)',
- );
- $return = $function->Call(3, 2);
-
- #### Method 2: with parameter list
-
- use Win32::API;
- $function = Win32::API->new(
- 'mydll', 'sum_integers', 'II', 'I',
- );
- $return = $function->Call(3, 2);
-
- #### Method 3: with Import
-
- use Win32::API;
- Win32::API->Import(
- 'mydll', 'int sum_integers(int a, int b)',
- );
- $return = sum_integers(3, 2);
-
-
-=for LATER-UNIMPLEMENTED
- #### or
- use Win32::API mydll => 'int sum_integers(int a, int b)';
- $return = sum_integers(3, 2);
-
-
-=head1 ABSTRACT
-
-With this module you can import and call arbitrary functions
-from Win32's Dynamic Link Libraries (DLL), without having
-to write an XS extension. Note, however, that this module
-can't do anything (parameters input and output is limited
-to simpler cases), and anyway a regular XS extension is
-always safer and faster.
-
-The current version of Win32::API is available at my website:
-
- http://dada.perl.it/
-
-It's also available on your nearest CPAN mirror (but allow a few days
-for worldwide spreading of the latest version) reachable at:
-
- http://www.perl.com/CPAN/authors/Aldo_Calpini/
-
-A short example of how you can use this module (it just gets the PID of
-the current process, eg. same as Perl's internal C<$$>):
-
- use Win32::API;
- Win32::API->Import("kernel32", "int GetCurrentProcessId()");
- $PID = GetCurrentProcessId();
-
-The possibilities are nearly infinite (but not all are good :-).
-Enjoy it.
-
-
-=head1 CREDITS
-
-All the credits go to Andrea Frosini
-for the neat assembler trick that makes this thing work.
-I've also used some work by Dave Roth for the prototyping stuff.
-A big thank you also to Gurusamy Sarathy for his
-unvaluable help in XS development, and to all the Perl community for
-being what it is.
-
-
-=head1 DESCRIPTION
-
-To use this module put the following line at the beginning of your script:
-
- use Win32::API;
-
-You can now use the C<new()> function of the Win32::API module to create a
-new Win32::API object (see L<IMPORTING A FUNCTION>) and then invoke the
-C<Call()> method on this object to perform a call to the imported API
-(see L<CALLING AN IMPORTED FUNCTION>).
-
-Starting from version 0.40, you can also avoid creating a Win32::API object
-and instead automatically define a Perl sub with the same name of the API
-function you're importing. The details of the API definitions are the same,
-just the call is different:
-
- my $GetCurrentProcessId = Win32::API->new(
- "kernel32", "int GetCurrentProcessId()"
- );
- my $PID = $GetCurrentProcessId->Call();
-
- #### vs.
-
- Win32::API->Import("kernel32", "int GetCurrentProcessId()");
- $PID = GetCurrentProcessId();
-
-Note that C<Import> returns 1 on success and 0 on failure (in which case you
-can check the content of C<$^E>).
-
-=head2 IMPORTING A FUNCTION
-
-You can import a function from a 32 bit Dynamic Link Library (DLL) file
-with the C<new()> function. This will create a Perl object that contains the
-reference to that function, which you can later C<Call()>.
-
-What you need to know is the prototype of the function you're going to import
-(eg. the definition of the function expressed in C syntax).
-
-Starting from version 0.40, there are 2 different approaches for this step:
-(the preferred) one uses the prototype directly, while the other (now deprecated)
-one uses Win32::API's internal representation for parameters.
-
-=head2 IMPORTING A FUNCTION BY PROTOTYPE
-
-You need to pass 2 parameters:
-
-=over 4
-
-=item 1.
-The name of the library from which you want to import the function.
-
-=item 2.
-The C prototype of the function.
-
-=back
-
-See L<Win32::API::Type> for a list of the known parameter types and
-L<Win32::API::Struct> for information on how to define a structure.
-
-=head2 IMPORTING A FUNCTION WITH A PARAMETER LIST
-
-You need to pass 4 parameters:
-
-=over 4
-
-=item 1.
-The name of the library from which you want to import the function.
-
-=item 2.
-The name of the function (as exported by the library).
-
-=item 3.
-The number and types of the arguments the function expects as input.
-
-=item 4.
-The type of the value returned by the function.
-
-=back
-
-To better explain their meaning, let's suppose that we
-want to import and call the Win32 API C<GetTempPath()>.
-This function is defined in C as:
-
- DWORD WINAPI GetTempPathA( DWORD nBufferLength, LPSTR lpBuffer );
-
-This is documented in the B<Win32 SDK Reference>; you can look
-for it on the Microsoft's WWW site, or in your C compiler's
-documentation, if you own one.
-
-=over 4
-
-=item B<1.>
-
-The first parameter is the name of the library file that
-exports this function; our function resides in the F<KERNEL32.DLL>
-system file.
-When specifying this name as parameter, the F<.DLL> extension
-is implicit, and if no path is given, the file is searched through
-a couple of directories, including:
-
-=over 4
-
-=item 1. The directory from which the application loaded.
-
-=item 2. The current directory.
-
-=item 3. The Windows system directory (eg. c:\windows\system or system32).
-
-=item 4. The Windows directory (eg. c:\windows).
-
-=item 5. The directories that are listed in the PATH environment variable.
-
-=back
-
-So, you don't have to write F<C:\windows\system\kernel32.dll>;
-only F<kernel32> is enough:
-
- $GetTempPath = new Win32::API('kernel32', ...
-
-=item B<2.>
-
-Now for the second parameter: the name of the function.
-It must be written exactly as it is exported
-by the library (case is significant here).
-If you are using Windows 95 or NT 4.0, you can use the B<Quick View>
-command on the DLL file to see the function it exports.
-Remember that you can only import functions from 32 bit DLLs:
-in Quick View, the file's characteristics should report
-somewhere "32 bit word machine"; as a rule of thumb,
-when you see that all the exported functions are in upper case,
-the DLL is a 16 bit one and you can't use it.
-If their capitalization looks correct, then it's probably a 32 bit
-DLL.
-
-Also note that many Win32 APIs are exported twice, with the addition of
-a final B<A> or B<W> to their name, for - respectively - the ASCII
-and the Unicode version.
-When a function name is not found, Win32::API will actually append
-an B<A> to the name and try again; if the extension is built on a
-Unicode system, then it will try with the B<W> instead.
-So our function name will be:
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', ...
-
-In our case C<GetTempPath> is really loaded as C<GetTempPathA>.
-
-=item B<3.>
-
-The third parameter, the input parameter list, specifies how many
-arguments the function wants, and their types. It can be passed as
-a single string, in which each character represents one parameter,
-or as a list reference. The following forms are valid:
-
- "abcd"
- [a, b, c, d]
- \@LIST
-
-But those are not:
-
- (a, b, c, d)
- @LIST
-
-The number of characters, or elements in the list, specifies the number
-of parameters, and each character or element specifies the type of an
-argument; allowed types are:
-
-=over 4
-
-=item C<I>:
-value is an integer (int)
-
-=item C<N>:
-value is a number (long)
-
-=item C<F>:
-value is a floating point number (float)
-
-=item C<D>:
-value is a double precision number (double)
-
-=item C<C>:
-value is a char (char)
-
-=item C<P>:
-value is a pointer (to a string, structure, etc...)
-
-=item C<S>:
-value is a Win32::API::Struct object (see below)
-
-=item C<K>:
-value is a Win32::API::Callback object (see L<Win32::API::Callback>)
-
-=back
-
-Our function needs two parameters: a number (C<DWORD>) and a pointer to a
-string (C<LPSTR>):
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', 'NP', ...
-
-=item B<4.>
-
-The fourth and final parameter is the type of the value returned by the
-function. It can be one of the types seen above, plus another type named B<V>
-(for C<void>), used for functions that do not return a value.
-In our example the value returned by GetTempPath() is a C<DWORD>, so
-our return type will be B<N>:
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', 'NP', 'N');
-
-Now the line is complete, and the GetTempPath() API is ready to be used
-in Perl. Before calling it, you should test that $GetTempPath is
-C<defined>, otherwise either the function or the library could not be
-loaded; in this case, C<$!> will be set to the error message reported
-by Windows.
-Our definition, with error checking added, should then look like this:
-
- $GetTempPath = new Win32::API('kernel32', 'GetTempPath', 'NP', 'N');
- if(not defined $GetTempPath) {
- die "Can't import API GetTempPath: $!\n";
- }
-
-=back
-
-=head2 CALLING AN IMPORTED FUNCTION
-
-To effectively make a call to an imported function you must use the
-Call() method on the Win32::API object you created.
-Continuing with the example from the previous paragraph,
-the GetTempPath() API can be called using the method:
-
- $GetTempPath->Call(...
-
-Of course, parameters have to be passed as defined in the import phase.
-In particular, if the number of parameters does not match (in the example,
-if GetTempPath() is called with more or less than two parameters),
-Perl will C<croak> an error message and C<die>.
-
-The two parameters needed here are the length of the buffer
-that will hold the returned temporary path, and a pointer to the
-buffer itself.
-For numerical parameters, you can use either a constant expression
-or a variable, while B<for pointers you must use a variable name> (no
-Perl references, just a plain variable name).
-Also note that B<memory must be allocated before calling the function>,
-just like in C.
-For example, to pass a buffer of 80 characters to GetTempPath(),
-it must be initialized before with:
-
- $lpBuffer = " " x 80;
-
-This allocates a string of 80 characters. If you don't do so, you'll
-probably get C<Runtime exception> errors, and generally nothing will
-work. The call should therefore include:
-
- $lpBuffer = " " x 80;
- $GetTempPath->Call(80, $lpBuffer);
-
-And the result will be stored in the $lpBuffer variable.
-Note that you don't need to pass a reference to the variable
-(eg. you B<don't need> C<\$lpBuffer>), even if its value will be set
-by the function.
-
-A little problem here is that Perl does not trim the variable,
-so $lpBuffer will still contain 80 characters in return; the exceeding
-characters will be spaces, because we said C<" " x 80>.
-
-In this case we're lucky enough, because the value returned by
-the GetTempPath() function is the length of the string, so to get
-the actual temporary path we can write:
-
- $lpBuffer = " " x 80;
- $return = $GetTempPath->Call(80, $lpBuffer);
- $TempPath = substr($lpBuffer, 0, $return);
-
-If you don't know the length of the string, you can usually
-cut it at the C<\0> (ASCII zero) character, which is the string
-delimiter in C:
-
- $TempPath = ((split(/\0/, $lpBuffer))[0];
- # or
- $lpBuffer =~ s/\0.*$//;
-
-=head2 USING STRUCTURES
-
-Starting from version 0.40, Win32::API comes with a support package
-named Win32::API::Struct. The package is loaded automatically with
-Win32::API, so you don't need to use it explicitly.
-
-With this module you can conveniently define structures and use
-them as parameters to Win32::API functions. A short example follows:
-
-
- # the 'POINT' structure is defined in C as:
- # typedef struct {
- # LONG x;
- # LONG y;
- # } POINT;
-
-
- #### define the structure
- Win32::API::Struct->typedef( POINT => qw{
- LONG x;
- LONG y;
- });
-
- #### import an API that uses this structure
- Win32::API->Import('user32', 'BOOL GetCursorPos(LPPOINT lpPoint)');
-
- #### create a 'POINT' object
- my $pt = Win32::API::Struct->new('POINT');
-
- #### call the function passing our structure object
- GetCursorPos($pt);
-
- #### and now, access its members
- print "The cursor is at: $pt->{x}, $pt->{y}\n";
-
-Note that this works only when the function wants a
-B<pointer to a structure>: as you can see, our structure is named
-'POINT', but the API used 'LPPOINT'. 'LP' is automatically added at
-the beginning of the structure name when feeding it to a Win32::API
-call.
-
-For more information, see also L<Win32::API::Struct>.
-
-If you don't want (or can't) use the Win32::API::Struct facility,
-you can still use the low-level approach to use structures:
-
-
-=over 4
-
-=item 1.
-you have to pack() the required elements in a variable:
-
- $lpPoint = pack('LL', 0, 0); # store two LONGs
-
-=item 2. to access the values stored in a structure, unpack() it as required:
-
- ($x, $y) = unpack('LL', $lpPoint); # get the actual values
-
-=back
-
-
-The rest is left as an exercise to the reader...
-
-
-=head1 AUTHOR
-
-Aldo Calpini ( I<dada@perl.it> ).
-
-=cut
-
-
diff --git a/Master/perltl/site/lib/Win32/API/Struct.pm b/Master/perltl/site/lib/Win32/API/Struct.pm
deleted file mode 100644
index acd160a95a8..00000000000
--- a/Master/perltl/site/lib/Win32/API/Struct.pm
+++ /dev/null
@@ -1,528 +0,0 @@
-package Win32::API::Struct;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-#######################################################################
-#
-# Win32::API::Struct - Perl Win32 API struct Facility
-#
-# Version: 0.40
-# Date: 07 Mar 2003
-# Author: Aldo Calpini <dada@perl.it>
-# $Id: Struct.pm,v 1.0 2001/10/30 13:57:31 dada Exp $
-#######################################################################
-
-$VERSION = "0.40";
-
-use Win32::API::Type;
-
-use Carp;
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-@ISA = qw( Exporter DynaLoader );
-
-my %Known = ();
-
-sub DEBUG {
- if ($Win32::API::DEBUG) {
- printf @_ if @_ or return 1;
- } else {
- return 0;
- }
-}
-
-sub typedef {
- my $class = shift;
- my $struct = shift;
- my($type, $name);
- my $self = {
- align => undef,
- typedef => [],
- };
- while(defined($type = shift)) {
- $name = shift;
- $name =~ s/;$//;
- push( @{ $self->{typedef} }, [ recognize($type, $name) ] );
- }
-
- $Known{$struct} = $self;
- return 1;
-}
-
-
-sub recognize {
- my($type, $name) = @_;
- my($size, $packing);
- if(exists $Known{$type}) {
- $packing = ">";
- return $name, $packing, $type;
- } else {
- $packing = Win32::API::Type::packing($type);
- return undef unless defined $packing;
- if($name =~ s/\[(.*)\]$//) {
- $size = $1;
- $packing = $packing."*".$size;
- }
- DEBUG "(PM)Struct::recognize got '$name', '$type' -> '$packing'\n";
- return $name, $packing, $type;
- }
-}
-
-sub new {
- my $class = shift;
- my($type, $name);
- my $self = {
- typedef => [],
- };
- if($#_ == 0) {
- if(exists $Known{$_[0]}) {
- DEBUG "(PM)Struct::new: got '$_[0]'\n";
- $self->{typedef} = $Known{$_[0]}->{typedef};
- foreach my $member (@{ $self->{typedef} }) {
- ($name, $packing, $type) = @$member;
- if($packing eq '>') {
- $self->{$name} = Win32::API::Struct->new($type);
- }
- }
- $self->{__typedef__} = $_[0];
- } else {
- carp "Unknown Win32::API::Struct '$_[0]'";
- return undef;
- }
- } else {
- while(defined($type = shift)) {
- $name = shift;
- # print "new: found member $name ($type)\n";
- if(not exists $Win32::API::Type::Known{$type}) {
- warn "Unknown Win32::API::Struct type '$type'";
- return undef;
- } else {
- push( @{ $self->{typedef} }, [ $name, $Win32::API::Type::Known{$type}, $type ] );
- }
- }
- }
- return bless $self;
-}
-
-sub members {
- my $self = shift;
- return map {$_->[0]} @{ $self->{typedef} };
-}
-
-sub sizeof {
- my $self = shift;
- my $size = 0;
- my $align = 0;
- my $first = undef;
- foreach my $member (@{ $self->{typedef} }) {
- my($name, $packing, $type) = @$member;
-
- if(ref( $self->{$name} ) eq "Win32::API::Struct") {
- $size += $self->{$name}->sizeof();
- # $align = $self->{$name}->sizeof() if $self->{$name}->sizeof() > $align;
- } else {
- if($packing =~ /\w\*(\d+)/) {
- $size += Win32::API::Type::sizeof($type) * $1;
- $first = Win32::API::Type::sizeof($type) * $1 unless defined $first;
- DEBUG "(PM)Struct::sizeof: sizeof with member($name) now = ". $size. "\n";
- } else {
- $size += Win32::API::Type::sizeof($type);
- $first = Win32::API::Type::sizeof($type) unless defined $first;
- $align = Win32::API::Type::sizeof($type)
- if Win32::API::Type::sizeof($type) > $align;
- DEBUG "(PM)Struct::sizeof: sizeof with member($name) now = ". $size. "\n";
- }
- }
- }
- DEBUG "(PM)Struct::sizeof first=$first align=$align\n";
- #DEBUG "(PM)Struct::sizeof returning %d\n", $first + (scalar(@{ $self->{typedef} })-1) * $align;
- #return $first + (scalar(@{ $self->{typedef} })-1) * $align;
- DEBUG "(PM)Struct::sizeof returning %d\n", scalar(@{ $self->{typedef} }) * $align;
- if(defined $align and $align > 0) {
- return scalar(@{ $self->{typedef} }) * $align;
- } else {
- return $size;
- }
- return $size;
-}
-
-sub align {
- my $self = shift;
- my $align = shift;
-
- if(not defined $align) {
- return $self->{align} unless $self->{align} eq 'auto';
- $align = 0;
- foreach my $member (@{ $self->{typedef} }) {
- my($name, $packing, $type) = @$member;
-
- if(ref( $self->{$name} ) eq "Win32::API::Struct") {
- #### ????
- } else {
- if($packing =~ /\w\*(\d+)/) {
- #### ????
- } else {
- $align = Win32::API::Type::sizeof($type)
- if Win32::API::Type::sizeof($type) > $align;
- }
- }
- }
- return $align;
- } else {
- $self->{align} = $align;
-
- }
-}
-
-sub getPack {
- my $self = shift;
- my $packing = "";
- my($type, $name);
- my @items = ();
- my @recipients = ();
-
- my $align = $self->align();
-
- foreach my $member (@{ $self->{typedef} }) {
- ($name, $type, $orig) = @$member;
- if($type eq '>') {
- my($subpacking, $subitems, $subrecipients) = $self->{$name}->getPack();
-
- DEBUG "(PM)Struct::getPack($self->{__typedef__}) ++ $subpacking\n";
-
- $packing .= $subpacking;
- push(@items, @$subitems);
- push(@recipients, @$subrecipients);
- } else {
- if($type =~ /\w\*(\d+)/) {
- my $size = $1;
- $type = "a$size";
- }
-
- DEBUG "(PM)Struct::getPack($self->{__typedef__}) ++ $type\n";
-
- if($type eq 'p') {
- $type = "L";
- push(@items, Win32::API::PointerTo($self->{$name}));
- } else {
- push(@items, $self->{$name});
- }
- $packing .= $type;
-
- if($Win32::API::Type::PackSize{$type} < $align) {
- $packing .= ("x" x ($align - $Win32::API::Type::PackSize{$type}));
- }
-
- push(@recipients, $self);
- }
- }
- DEBUG "(PM)Struct::getPack: $self->{__typedef__}(buffer) = pack($packing, @items)\n";
- return($packing, [@items], [@recipients]);
-}
-
-
-sub Pack {
- my $self = shift;
- my($packing, $items, $recipients) = $self->getPack();
- DEBUG "(PM)Struct::Pack: $self->{__typedef__}(buffer) = pack($packing, @$items)\n";
- $self->{buffer} = pack($packing, @$items);
- if(DEBUG) {
- for my $i (0..$self->sizeof-1) {
- printf " %3d: 0x%02x\n", $i, ord(substr($self->{buffer}, $i, 1));
- }
- }
- $self->{buffer_recipients} = $recipients
-}
-
-sub getUnpack {
- my $self = shift;
- my $packing = "";
- my($type, $name);
- my @items = ();
- my $align = $self->align();
- foreach my $member (@{ $self->{typedef} }) {
- ($name, $type, $orig) = @$member;
- if($type eq '>') {
- my($subpacking, @subitems) = $self->{$name}->getUnpack();
-
- DEBUG "(PM)Struct::getUnpack($self->{__typedef__}) ++ $subpacking\n";
- $packing .= $subpacking;
-
-
- push(@items, @subitems);
- } else {
- if($type =~ /\w\*(\d+)/) {
- my $size = $1;
- $type = "Z$size";
- }
-
- #if($type eq 'p') {
- # $packing .= 'Z*';
- # DEBUG "(PM)Struct::getUnpack($self->{__typedef__}) ++ Z*\n";
- #} else {
- $packing .= $type;
- DEBUG "(PM)Struct::getUnpack($self->{__typedef__}) ++ $type\n";
- #}
- if($type ne 'p' and $type !~ /^Z(\d+)/ and $Win32::API::Type::PackSize{$type} < $align) {
- DEBUG "(PM)Struct::getUnpack %s(%d) < %d\n",
- $type, $Win32::API::Type::PackSize{$type}, $align
- ;
- $packing .= ("x" x ($align - $Win32::API::Type::PackSize{$type}));
- }
-
- push(@items, $name);
- }
- }
- DEBUG "(PM)Struct::getUnpack($self->{__typedef__}): unpack($packing, @items)\n";
- return($packing, @items);
-}
-
-sub Unpack {
- my $self = shift;
- my($packing, @items) = $self->getUnpack();
- my @itemvalue = unpack($packing, $self->{buffer});
- DEBUG "(PM)Struct::Unpack: unpack($packing, buffer) = @itemvalue\n";
- foreach my $i (0..$#items) {
- my $recipient = $self->{buffer_recipients}->[$i];
- DEBUG "(PM)Struct::Unpack: %s(%s) = '%s' (0x%08x)\n",
- $recipient->{__typedef__},
- $items[$i],
- $itemvalue[$i],
- $itemvalue[$i],
- ;
- $recipient->{$items[$i]} = $itemvalue[$i];
- DEBUG "(PM)Struct::Unpack: self.$items[$i] = $self->{$items[$i]}\n";
- }
-}
-
-sub FromMemory {
- my($self, $addr) = @_;
- DEBUG "(PM)Struct::FromMemory: doing Pack\n";
- $self->Pack();
- DEBUG "(PM)Struct::FromMemory: doing GetMemory( 0x%08x, %d )\n", $addr, $self->sizeof;
- $self->{buffer} = Win32::API::ReadMemory( $addr, $self->sizeof );
- $self->Unpack();
- DEBUG "(PM)Struct::FromMemory: doing Unpack\n";
- DEBUG "(PM)Struct::FromMemory: structure is now:\n";
- $self->Dump() if DEBUG;
- DEBUG "\n";
-}
-
-sub Dump {
- my $self = shift;
- my $prefix = shift;
- foreach my $member (@{ $self->{typedef} }) {
- ($name, $packing, $type) = @$member;
- if( ref($self->{$name}) ) {
- $self->{$name}->Dump($name);
- } else {
- printf "%-20s %-20s %-20s\n", $prefix, $name, $self->{$name};
- }
- }
-}
-
-
-sub is_known {
- my $name = shift;
- if(exists $Known{ $name }) {
- return 1;
- } else {
- if($name =~ s/^LP//) {
- return exists $Known{ $name };
- }
- return 0;
- }
-}
-
-sub TIEHASH {
- return Win32::API::Struct::new(@_);
-}
-
-sub EXISTS {
-
-}
-
-sub FETCH {
- my $self = shift;
- my $key = shift;
-
- if($key eq 'sizeof') {
- return $self->sizeof;
- }
- my @members = map { $_->[0] } @{ $self->{typedef} };
- if(grep(/^\Q$key\E$/, @members)) {
- return $self->{$key};
- } else {
- warn "'$key' is not a member of Win32::API::Struct $self->{__typedef__}";
- }
-}
-
-sub STORE {
- my $self = shift;
- my($key, $val) = @_;
- my @members = map { $_->[0] } @{ $self->{typedef} };
- if(grep(/^\Q$key\E$/, @members)) {
- $self->{$key} = $val;
- } else {
- warn "'$key' is not a member of Win32::API::Struct $self->{__typedef__}";
- }
-}
-
-sub FIRSTKEY {
- my $self = shift;
- my @members = map { $_->[0] } @{ $self->{typedef} };
- return $members[0];
-}
-
-sub NEXTKEY {
- my $self = shift;
- my $key = shift;
- my @members = map { $_->[0] } @{ $self->{typedef} };
- for my $i (0..$#members-1) {
- return $members[$i+1] if $members[$i] eq $key;
- }
- return undef;
-}
-
-1;
-
-#######################################################################
-# DOCUMENTATION
-#
-
-=head1 NAME
-
-Win32::API::Struct - C struct support package for Win32::API
-
-=head1 SYNOPSIS
-
- use Win32::API;
-
- Win32::API::Struct->typedef( 'POINT', qw(
- LONG x;
- LONG y;
- ));
-
- my $Point = Win32::API::Struct->new( 'POINT' );
- $Point->{x} = 1024;
- $Point->{y} = 768;
-
- #### alternatively
-
- tie %Point, 'Win32::API::Struct', 'POINT';
- $Point{x} = 1024;
- $Point{y} = 768;
-
-
-=head1 ABSTRACT
-
-This module enables you to define C structs for use with
-Win32::API.
-
-See L<Win32::API> for more info about its usage.
-
-=head1 DESCRIPTION
-
-This module is automatically imported by Win32::API, so you don't
-need to 'use' it explicitly. The main methods are C<typedef> and
-C<new>, which are documented below.
-
-=over 4
-
-=item C<typedef NAME, TYPE, MEMBER, TYPE, MEMBER, ...>
-
-This method defines a structure named C<NAME>. The definition consists
-of types and member names, just like in C. In fact, most of the
-times you can cut the C definition for a structure and paste it
-verbatim to your script, enclosing it in a C<qw()> block. The
-function takes care of removing the semicolon after the member
-name.
-
-The synopsis example could be written like this:
-
- Win32::API::Struct->typedef('POINT', 'LONG', 'x', 'LONG', 'y');
-
-But it could also be written like this (note the indirect object
-syntax), which is pretty cool:
-
- typedef Win32::API::Struct POINT => qw{
- LONG x;
- LONG y;
- };
-
-Also note that C<typedef> automatically defines an 'LPNAME' type,
-which holds a pointer to your structure. In the example above,
-'LPPOINT' is also defined and can be used in a call to a
-Win32::API (in fact, this is what you're really going to use when
-doing API calls).
-
-=item C<new NAME>
-
-This creates a structure (a Win32::API::Struct object) of the
-type C<NAME> (it must have been defined with C<typedef>). In Perl,
-when you create a structure, all the members are undefined. But
-when you use that structure in C (eg. a Win32::API call), you
-can safely assume that they will be treated as zero (or NULL).
-
-=item C<sizeof>
-
-This returns the size, in bytes, of the structure. Acts just like
-the C function of the same name. It is particularly useful for
-structures that need a member to be initialized to the structure's
-own size.
-
-=item C<align [SIZE]>
-
-Sets or returns the structure alignment (eg. how the structure is
-stored in memory). This is a very advanced option, and you normally
-don't need to mess with it.
-All structures in the Win32 Platform SDK should work without it.
-But if you define your own structure, you may need to give it an
-explicit alignment. In most cases, passing a C<SIZE> of 'auto'
-should keep the world happy.
-
-=back
-
-=head2 THE C<tie> INTERFACE
-
-Instead of creating an object with the C<new> method, you can
-tie a hash, which will hold the desired structure, using the
-C<tie> builtin function:
-
- tie %structure, Win32::API::Struct => 'NAME';
-
-The differences between the tied and non-tied approaches are:
-
-=over 4
-
-=item *
-with tied structures, you can access members directly as
-hash lookups, eg.
-
- # tied # non-tied
- $Point{x} vs. $Point->{x}
-
-=item *
-with tied structures, when you try to fetch or store a
-member that is not part of the structure, it will result
-in a warning, eg.
-
- print $Point{z};
- # this will warn: 'z' is not a member of Win32::API::Struct POINT
-
-=item *
-when you pass a tied structure as a Win32::API parameter,
-remember to backslash it, eg.
-
- # tied # non-tied
- GetCursorPos( \%Point ) vs. GetCursorPos( $Point )
-
-=back
-
-=head1 AUTHOR
-
-Aldo Calpini ( I<dada@perl.it> ).
-
-=cut
diff --git a/Master/perltl/site/lib/Win32/API/Type.pm b/Master/perltl/site/lib/Win32/API/Type.pm
deleted file mode 100644
index 9ebe9ff57dc..00000000000
--- a/Master/perltl/site/lib/Win32/API/Type.pm
+++ /dev/null
@@ -1,440 +0,0 @@
-package Win32::API::Type;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-#######################################################################
-#
-# Win32::API::Type - Perl Win32 API type definitions
-#
-# Version: 0.40
-# Date: 07 Mar 2003
-# Author: Aldo Calpini <dada@perl.it>
-# $Id: Type.pm,v 1.0 2001/10/30 13:57:31 dada Exp $
-#######################################################################
-
-$VERSION = "0.40";
-
-use Carp;
-
-require Exporter; # to export the constants to the main:: space
-require DynaLoader; # to dynuhlode the module.
-@ISA = qw( Exporter DynaLoader );
-
-use vars qw( %Known %PackSize %Modifier %Pointer );
-
-sub DEBUG {
- if ($Win32::API::DEBUG) {
- printf @_ if @_ or return 1;
- } else {
- return 0;
- }
-}
-
-%Known = ();
-%PackSize = ();
-%Modifier = ();
-%Pointer = ();
-
-INIT {
- my $section = 'nothing';
- foreach (<DATA>) {
- next if /^\s*#/ or /^\s*$/;
- chomp;
- if( /\[(.+)\]/) {
- $section = $1;
- next;
- }
- if($section eq 'TYPE') {
- my($name, $packing) = split(/\s+/);
- # DEBUG "(PM)Type::INIT: Known('$name') => '$packing'\n";
- $Known{$name} = $packing;
- } elsif($section eq 'PACKSIZE') {
- my($packing, $size) = split(/\s+/);
- # DEBUG "(PM)Type::INIT: PackSize('$packing') => '$size'\n";
- $PackSize{$packing} = $size;
- } elsif($section eq 'MODIFIER') {
- my($modifier, $mapto) = split(/\s+/, $_, 2);
- my %maps = ();
- foreach my $item (split(/\s+/, $mapto)) {
- my($k, $v) = split(/=/, $item);
- $maps{$k} = $v;
- }
- # DEBUG "(PM)Type::INIT: Modifier('$modifier') => '%maps'\n";
- $Modifier{$modifier} = { %maps };
- } elsif($section eq 'POINTER') {
- my($pointer, $pointto) = split(/\s+/);
- # DEBUG "(PM)Type::INIT: Pointer('$pointer') => '$pointto'\n";
- $Pointer{$pointer} = $pointto;
- }
- }
-}
-
-sub new {
- my $class = shift;
- my($type) = @_;
- my $packing = packing($type);
- my $size = sizeof($type);
- my $self = {
- type => $type,
- packing => $packing,
- size => $size,
- };
- return bless $self;
-}
-
-sub typedef {
- my $class = shift;
- my($name, $type) = @_;
- my $packing = packing($type, $name);
- DEBUG "(PM)Type::typedef: packing='$packing'\n";
- my $size = sizeof($type);
- $Known{$name} = $packing;
- return 1;
-}
-
-
-sub is_known {
- my $self = shift;
- my $type = shift;
- $type = $self unless defined $type;
- if(ref($type) =~ /Win32::API::Type/) {
- return 1;
- } else {
- return defined packing($type);
- }
-}
-
-sub sizeof {
- my $self = shift;
- my $type = shift;
- $type = $self unless defined $type;
- if(ref($type) =~ /Win32::API::Type/) {
- return $self->{size};
- } else {
- my $packing = packing($type);
- if($packing =~ /(\w)\*(\d+)/) {
- return $PackSize{ $1 } * $2;
- } else {
- return $PackSize{ $packing };
- }
- }
-}
-
-sub packing {
- # DEBUG "(PM)Type::packing: called by ". join("::", (caller(1))[0,3]). "\n";
- my $self = shift;
- my $is_pointer = 0;
- if(ref($self) =~ /Win32::API::Type/) {
- # DEBUG "(PM)Type::packing: got an object\n";
- return $self->{packing};
- }
- my $type = ($self eq 'Win32::API::Type') ? shift : $self;
- my $name = shift;
-
- # DEBUG "(PM)Type::packing: got '$type', '$name'\n";
- my($modifier, $size, $packing);
- if(exists $Pointer{$type}) {
- # DEBUG "(PM)Type::packing: got '$type', is really '$Pointer{$type}'\n";
- $type = $Pointer{$type};
- $is_pointer = 1;
- } elsif($type =~ /(\w+)\s+(\w+)/) {
- $modifier = $1;
- $type = $2;
- # DEBUG "(PM)packing: got modifier '$modifier', type '$type'\n";
- }
-
- $type =~ s/\*$//;
-
- if(exists $Known{$type}) {
- if(defined $name and $name =~ s/\[(.*)\]$//) {
- $size = $1;
- $packing = $Known{$type}[0]."*".$size;
- # DEBUG "(PM)Type::packing: composite packing: '$packing' '$size'\n";
- } else {
- $packing = $Known{$type};
- if($is_pointer and $packing eq 'c') {
- $packing = "p";
- }
- # DEBUG "(PM)Type::packing: simple packing: '$packing'\n";
- }
- if(defined $modifier and exists $Modifier{$modifier}->{$type}) {
- # DEBUG "(PM)Type::packing: applying modifier '$modifier' -> '$Modifier{$modifier}->{$type}'\n";
- $packing = $Modifier{$modifier}->{$type};
- }
- return $packing;
- } else {
- # DEBUG "(PM)Type::packing: NOT FOUND\n";
- return undef;
- }
-}
-
-
-sub is_pointer {
- my $self = shift;
- my $type = shift;
- $type = $self unless defined $type;
- if(ref($type) =~ /Win32::API::Type/) {
- return 1;
- } else {
- if($type =~ /\*$/) {
- return 1;
- } else {
- return exists $Pointer{$type};
- }
- }
-}
-
-sub Pack {
- my $type = $_[0];
-
- if(packing($type) eq 'c' and is_pointer($type)) {
- $_[1] = pack("Z*", $_[1]);
- return $_[1];
- }
- $_[1] = pack( packing($type), $_[1]);
- return $_[1];
-}
-
-sub Unpack {
- my $type = $_[0];
- if(packing($type) eq 'c' and is_pointer($type)) {
- DEBUG "(PM)Type::Unpack: got packing 'c', is a pointer, unpacking 'Z*' '$_[1]'\n";
- $_[1] = unpack("Z*", $_[1]);
- DEBUG "(PM)Type::Unpack: returning '$_[1]'\n";
- return $_[1];
- }
- DEBUG "(PM)Type::Unpack: unpacking '".packing($type)."' '$_[1]'\n";
- $_[1] = unpack( packing($type), $_[1]);
- DEBUG "(PM)Type::Unpack: returning '$_[1]'\n";
- return $_[1];
-}
-
-1;
-
-#######################################################################
-# DOCUMENTATION
-#
-
-=head1 NAME
-
-Win32::API::Type - C type support package for Win32::API
-
-=head1 SYNOPSIS
-
- use Win32::API;
-
- Win32::API::Type->typedef( 'my_number', 'LONG' );
-
-
-=head1 ABSTRACT
-
-This module is a support package for Win32::API that implements
-C types for the import with prototype functionality.
-
-See L<Win32::API> for more info about its usage.
-
-=head1 DESCRIPTION
-
-This module is automatically imported by Win32::API, so you don't
-need to 'use' it explicitly. These are the methods of this package:
-
-=over 4
-
-=item C<typedef NAME, TYPE>
-
-This method defines a new type named C<NAME>. This actually just
-creates an alias for the already-defined type C<TYPE>, which you
-can use as a parameter in a Win32::API call.
-
-=item C<sizeof TYPE>
-
-This returns the size, in bytes, of C<TYPE>. Acts just like
-the C function of the same name.
-
-=item C<is_known TYPE>
-
-Returns true if C<TYPE> is known by Win32::API::Type, false
-otherwise.
-
-=back
-
-=head2 SUPPORTED TYPES
-
-This module should recognize all the types defined in the
-Win32 Platform SDK header files.
-Please see the source for this module, in the C<__DATA__> section,
-for the full list.
-
-=head1 AUTHOR
-
-Aldo Calpini ( I<dada@perl.it> ).
-
-=cut
-
-
-__DATA__
-
-[TYPE]
-ATOM s
-BOOL L
-BOOLEAN c
-BYTE C
-CHAR c
-COLORREF L
-DWORD L
-DWORD32 L
-DWORD64 Q
-FLOAT f
-HACCEL L
-HANDLE L
-HBITMAP L
-HBRUSH L
-HCOLORSPACE L
-HCONV L
-HCONVLIST L
-HCURSOR L
-HDC L
-HDDEDATA L
-HDESK L
-HDROP L
-HDWP L
-HENHMETAFILE L
-HFILE L
-HFONT L
-HGDIOBJ L
-HGLOBAL L
-HHOOK L
-HICON L
-HIMC L
-HINSTANCE L
-HKEY L
-HKL L
-HLOCAL L
-HMENU L
-HMETAFILE L
-HMODULE L
-HPALETTE L
-HPEN L
-HRGN L
-HRSRC L
-HSZ L
-HWINSTA L
-HWND L
-INT i
-INT32 i
-INT64 q
-LANGID s
-LCID L
-LCSCSTYPE L
-LCSGAMUTMATCH L
-LCTYPE L
-LONG l
-LONG32 l
-LONG64 q
-LONGLONG q
-LPARAM L
-LRESULT L
-REGSAM L
-SC_HANDLE L
-SC_LOCK L
-SERVICE_STATUS_HANDLE L
-SHORT s
-SIZE_T L
-SSIZE_T L
-TBYTE c
-TCHAR C
-UCHAR C
-UINT I
-UINT_PTR L
-UINT32 I
-UINT64 Q
-ULONG L
-ULONG32 L
-ULONG64 Q
-ULONGLONG Q
-USHORT S
-WCHAR S
-WORD S
-WPARAM L
-VOID c
-
-int i
-long l
-float f
-double d
-char c
-
-#CRITICAL_SECTION 24 -- a structure
-#LUID ? 8 -- a structure
-#VOID 0
-#CONST 4
-#FILE_SEGMENT_ELEMENT 8 -- a structure
-
-[PACKSIZE]
-c 1
-C 1
-d 8
-f 4
-i 4
-I 4
-l 4
-L 4
-q 8
-Q 8
-s 2
-S 2
-p 4
-
-[MODIFIER]
-unsigned int=I long=L short=S char=C
-
-[POINTER]
-INT_PTR INT
-LPBOOL BOOL
-LPBYTE BYTE
-LPCOLORREF COLORREF
-LPCSTR CHAR
-#LPCTSTR CHAR or WCHAR
-LPCTSTR CHAR
-LPCVOID any
-LPCWSTR WCHAR
-LPDWORD DWORD
-LPHANDLE HANDLE
-LPINT INT
-LPLONG LONG
-LPSTR CHAR
-#LPTSTR CHAR or WCHAR
-LPTSTR CHAR
-LPVOID VOID
-LPWORD WORD
-LPWSTR WCHAR
-
-PBOOL BOOL
-PBOOLEAN BOOL
-PBYTE BYTE
-PCHAR CHAR
-PCSTR CSTR
-PCWCH CWCH
-PCWSTR CWSTR
-PDWORD DWORD
-PFLOAT FLOAT
-PHANDLE HANDLE
-PHKEY HKEY
-PINT INT
-PLCID LCID
-PLONG LONG
-PSHORT SHORT
-PSTR CHAR
-#PTBYTE TBYTE --
-#PTCHAR TCHAR --
-#PTSTR CHAR or WCHAR
-PTSTR CHAR
-PUCHAR UCHAR
-PUINT UINT
-PULONG ULONG
-PUSHORT USHORT
-PVOID VOID
-PWCHAR WCHAR
-PWORD WORD
-PWSTR WCHAR
diff --git a/Master/perltl/site/lib/XML/Parser.pm b/Master/perltl/site/lib/XML/Parser.pm
deleted file mode 100644
index f150b615a2d..00000000000
--- a/Master/perltl/site/lib/XML/Parser.pm
+++ /dev/null
@@ -1,1089 +0,0 @@
-# XML::Parser
-#
-# Copyright (c) 1998-2000 Larry Wall and Clark Cooper
-# All rights reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-package XML::Parser;
-
-use Carp;
-use IO::File;
-
-BEGIN {
- require XML::Parser::Expat;
- $VERSION = '2.31';
- die "Parser.pm and Expat.pm versions don't match"
- unless $VERSION eq $XML::Parser::Expat::VERSION;
-}
-
-use strict;
-
-use vars qw($VERSION %Built_In_Styles $LWP_load_failed);
-
-$LWP_load_failed = 0;
-
-sub new {
- my ($class, %args) = @_;
- my $style = $args{Style};
-
- my $nonexopt = $args{Non_Expat_Options} ||= {};
-
- $nonexopt->{Style} = 1;
- $nonexopt->{Non_Expat_Options} = 1;
- $nonexopt->{Handlers} = 1;
- $nonexopt->{_HNDL_TYPES} = 1;
- $nonexopt->{NoLWP} = 1;
-
- $args{NoLWP} = 1;
-
- $args{_HNDL_TYPES} = {%XML::Parser::Expat::Handler_Setters};
- $args{_HNDL_TYPES}->{Init} = 1;
- $args{_HNDL_TYPES}->{Final} = 1;
-
- $args{Handlers} ||= {};
- my $handlers = $args{Handlers};
-
- if (defined($style)) {
- my $stylepkg = $style;
-
- if ($stylepkg !~ /::/) {
- $stylepkg = "\u$style";
-
- # I'm using the Built_In_Styles hash to define
- # valid internal styles, since a style doesn't
- # need to define any particular Handler to be valid.
- # So I can't check for the existence of a particular sub.
-
- croak "Undefined style: $style"
- unless defined($Built_In_Styles{$stylepkg});
- $stylepkg = 'XML::Parser::' . $stylepkg;
- }
-
- my $htype;
- foreach $htype (keys %{$args{_HNDL_TYPES}}) {
- # Handlers explicity given override
- # handlers from the Style package
- unless (defined($handlers->{$htype})) {
-
- # A handler in the style package must either have
- # exactly the right case as the type name or a
- # completely lower case version of it.
-
- my $hname = "${stylepkg}::$htype";
- if (defined(&$hname)) {
- $handlers->{$htype} = \&$hname;
- next;
- }
-
- $hname = "${stylepkg}::\L$htype";
- if (defined(&$hname)) {
- $handlers->{$htype} = \&$hname;
- next;
- }
- }
- }
- }
-
- unless (defined($handlers->{ExternEnt})
- or defined ($handlers->{ExternEntFin})) {
-
- if ($args{NoLWP} or $LWP_load_failed) {
- $handlers->{ExternEnt} = \&file_ext_ent_handler;
- $handlers->{ExternEntFin} = \&file_ext_ent_cleanup;
- }
- else {
- # The following just bootstraps the real LWP external entity
- # handler
-
- $handlers->{ExternEnt} = \&initial_ext_ent_handler;
-
- # No cleanup function available until LWPExternEnt.pl loaded
- }
- }
-
- $args{Pkg} ||= caller;
- bless \%args, $class;
-} # End of new
-
-sub setHandlers {
- my ($self, @handler_pairs) = @_;
-
- croak("Uneven number of arguments to setHandlers method")
- if (int(@handler_pairs) & 1);
-
- my @ret;
- while (@handler_pairs) {
- my $type = shift @handler_pairs;
- my $handler = shift @handler_pairs;
- unless (defined($self->{_HNDL_TYPES}->{$type})) {
- my @types = sort keys %{$self->{_HNDL_TYPES}};
-
- croak("Unknown Parser handler type: $type\n Valid types: @types");
- }
- push(@ret, $type, $self->{Handlers}->{$type});
- $self->{Handlers}->{$type} = $handler;
- }
-
- return @ret;
-} # End of setHandlers
-
-sub parse_start {
- my $self = shift;
- my @expat_options = ();
-
- my ($key, $val);
- while (($key, $val) = each %{$self}) {
- push (@expat_options, $key, $val)
- unless exists $self->{Non_Expat_Options}->{$key};
- }
-
- my %handlers = %{$self->{Handlers}};
- my $init = delete $handlers{Init};
- my $final = delete $handlers{Final};
-
- my $expatnb = new XML::Parser::ExpatNB(@expat_options, @_);
- $expatnb->setHandlers(%handlers);
-
- &$init($expatnb)
- if defined($init);
-
- $expatnb->{_State_} = 1;
-
- $expatnb->{FinalHandler} = $final
- if defined($final);
-
- return $expatnb;
-}
-
-sub parse {
- my $self = shift;
- my $arg = shift;
- my @expat_options = ();
- my ($key, $val);
- while (($key, $val) = each %{$self}) {
- push(@expat_options, $key, $val)
- unless exists $self->{Non_Expat_Options}->{$key};
- }
-
- my $expat = new XML::Parser::Expat(@expat_options, @_);
- my %handlers = %{$self->{Handlers}};
- my $init = delete $handlers{Init};
- my $final = delete $handlers{Final};
-
- $expat->setHandlers(%handlers);
-
- if ($self->{Base}) {
- $expat->base($self->{Base});
- }
-
- &$init($expat)
- if defined($init);
-
- my @result = ();
- my $result;
- eval {
- $result = $expat->parse($arg);
- };
- my $err = $@;
- if ($err) {
- $expat->release;
- die $err;
- }
-
- if ($result and defined($final)) {
- if (wantarray) {
- @result = &$final($expat);
- }
- else {
- $result = &$final($expat);
- }
- }
-
- $expat->release;
-
- return unless defined wantarray;
- return wantarray ? @result : $result;
-} # End of parse
-
-sub parsestring {
- my $self = shift;
- $self->parse(@_);
-} # End of parsestring
-
-sub parsefile {
- my $self = shift;
- my $file = shift;
- local(*FILE);
- open(FILE, $file) or croak "Couldn't open $file:\n$!";
- binmode(FILE);
- my @ret;
- my $ret;
-
- $self->{Base} = $file;
-
- if (wantarray) {
- eval {
- @ret = $self->parse(*FILE, @_);
- };
- }
- else {
- eval {
- $ret = $self->parse(*FILE, @_);
- };
- }
- my $err = $@;
- close(FILE);
- die $err if $err;
-
- return unless defined wantarray;
- return wantarray ? @ret : $ret;
-} # End of parsefile
-
-
-sub initial_ext_ent_handler {
- # This just bootstraps in the real lwp_ext_ent_handler which
- # also loads the URI and LWP modules.
-
- unless ($LWP_load_failed) {
- local($^W) = 0;
-
- my $stat =
- eval {
- require('XML/Parser/LWPExternEnt.pl');
- };
-
- if ($stat) {
- $_[0]->setHandlers(ExternEnt => \&lwp_ext_ent_handler,
- ExternEntFin => \&lwp_ext_ent_cleanup);
-
- goto &lwp_ext_ent_handler;
- }
-
- # Failed to load lwp handler, act as if NoLWP
-
- $LWP_load_failed = 1;
-
- my $cmsg = "Couldn't load LWP based external entity handler\n";
- $cmsg .= "Switching to file-based external entity handler\n";
- $cmsg .= " (To avoid this message, use NoLWP option to XML::Parser)\n";
- warn($cmsg);
- }
-
- $_[0]->setHandlers(ExternEnt => \&file_ext_ent_handler,
- ExternEntFin => \&file_ext_ent_cleanup);
- goto &file_ext_ent_handler;
-
-} # End initial_ext_ent_handler
-
-sub file_ext_ent_handler {
- my ($xp, $base, $path) = @_;
-
- # Prepend base only for relative paths
-
- if (defined($base)
- and not ($path =~ m!^(?:[\\/]|\w+:)!))
- {
- my $newpath = $base;
- $newpath =~ s![^\\/:]*$!$path!;
- $path = $newpath;
- }
-
- if ($path =~ /^\s*[|>+]/
- or $path =~ /\|\s*$/) {
- $xp->{ErrorMessage}
- .= "System ID ($path) contains Perl IO control characters";
- return undef;
- }
-
- my $fh = new IO::File($path);
- unless (defined $fh) {
- $xp->{ErrorMessage}
- .= "Failed to open $path:\n$!";
- return undef;
- }
-
- $xp->{_BaseStack} ||= [];
- $xp->{_FhStack} ||= [];
-
- push(@{$xp->{_BaseStack}}, $base);
- push(@{$xp->{_FhStack}}, $fh);
-
- $xp->base($path);
-
- return $fh;
-} # End file_ext_ent_handler
-
-sub file_ext_ent_cleanup {
- my ($xp) = @_;
-
- my $fh = pop(@{$xp->{_FhStack}});
- $fh->close;
-
- my $base = pop(@{$xp->{_BaseStack}});
- $xp->base($base);
-} # End file_ext_ent_cleanup
-
-###################################################################
-
-package XML::Parser::Debug;
-$XML::Parser::Built_In_Styles{Debug} = 1;
-
-sub Start {
- my $expat = shift;
- my $tag = shift;
- print STDERR "@{$expat->{Context}} \\\\ (@_)\n";
-}
-
-sub End {
- my $expat = shift;
- my $tag = shift;
- print STDERR "@{$expat->{Context}} //\n";
-}
-
-sub Char {
- my $expat = shift;
- my $text = shift;
- $text =~ s/([\x80-\xff])/sprintf "#x%X;", ord $1/eg;
- $text =~ s/([\t\n])/sprintf "#%d;", ord $1/eg;
- print STDERR "@{$expat->{Context}} || $text\n";
-}
-
-sub Proc {
- my $expat = shift;
- my $target = shift;
- my $text = shift;
- my @foo = @{$expat->{Context}};
- print STDERR "@foo $target($text)\n";
-}
-
-###################################################################
-
-package XML::Parser::Subs;
-$XML::Parser::Built_In_Styles{Subs} = 1;
-
-sub Start {
- no strict 'refs';
- my $expat = shift;
- my $tag = shift;
- my $sub = $expat->{Pkg} . "::$tag";
- eval { &$sub($expat, $tag, @_) };
-}
-
-sub End {
- no strict 'refs';
- my $expat = shift;
- my $tag = shift;
- my $sub = $expat->{Pkg} . "::${tag}_";
- eval { &$sub($expat, $tag) };
-}
-
-###################################################################
-
-package XML::Parser::Tree;
-$XML::Parser::Built_In_Styles{Tree} = 1;
-
-sub Init {
- my $expat = shift;
- $expat->{Lists} = [];
- $expat->{Curlist} = $expat->{Tree} = [];
-}
-
-sub Start {
- my $expat = shift;
- my $tag = shift;
- my $newlist = [ { @_ } ];
- push @{ $expat->{Lists} }, $expat->{Curlist};
- push @{ $expat->{Curlist} }, $tag => $newlist;
- $expat->{Curlist} = $newlist;
-}
-
-sub End {
- my $expat = shift;
- my $tag = shift;
- $expat->{Curlist} = pop @{ $expat->{Lists} };
-}
-
-sub Char {
- my $expat = shift;
- my $text = shift;
- my $clist = $expat->{Curlist};
- my $pos = $#$clist;
-
- if ($pos > 0 and $clist->[$pos - 1] eq '0') {
- $clist->[$pos] .= $text;
- } else {
- push @$clist, 0 => $text;
- }
-}
-
-sub Final {
- my $expat = shift;
- delete $expat->{Curlist};
- delete $expat->{Lists};
- $expat->{Tree};
-}
-
-###################################################################
-
-package XML::Parser::Objects;
-$XML::Parser::Built_In_Styles{Objects} = 1;
-
-sub Init {
- my $expat = shift;
- $expat->{Lists} = [];
- $expat->{Curlist} = $expat->{Tree} = [];
-}
-
-sub Start {
- my $expat = shift;
- my $tag = shift;
- my $newlist = [ ];
- my $class = "${$expat}{Pkg}::$tag";
- my $newobj = bless { @_, Kids => $newlist }, $class;
- push @{ $expat->{Lists} }, $expat->{Curlist};
- push @{ $expat->{Curlist} }, $newobj;
- $expat->{Curlist} = $newlist;
-}
-
-sub End {
- my $expat = shift;
- my $tag = shift;
- $expat->{Curlist} = pop @{ $expat->{Lists} };
-}
-
-sub Char {
- my $expat = shift;
- my $text = shift;
- my $class = "${$expat}{Pkg}::Characters";
- my $clist = $expat->{Curlist};
- my $pos = $#$clist;
-
- if ($pos >= 0 and ref($clist->[$pos]) eq $class) {
- $clist->[$pos]->{Text} .= $text;
- } else {
- push @$clist, bless { Text => $text }, $class;
- }
-}
-
-sub Final {
- my $expat = shift;
- delete $expat->{Curlist};
- delete $expat->{Lists};
- $expat->{Tree};
-}
-
-################################################################
-
-package XML::Parser::Stream;
-$XML::Parser::Built_In_Styles{Stream} = 1;
-
-# This style invented by Tim Bray <tbray@textuality.com>
-
-sub Init {
- no strict 'refs';
- my $expat = shift;
- $expat->{Text} = '';
- my $sub = $expat->{Pkg} ."::StartDocument";
- &$sub($expat)
- if defined(&$sub);
-}
-
-sub Start {
- no strict 'refs';
- my $expat = shift;
- my $type = shift;
-
- doText($expat);
- $_ = "<$type";
-
- %_ = @_;
- while (@_) {
- $_ .= ' ' . shift() . '="' . shift() . '"';
- }
- $_ .= '>';
-
- my $sub = $expat->{Pkg} . "::StartTag";
- if (defined(&$sub)) {
- &$sub($expat, $type);
- } else {
- print;
- }
-}
-
-sub End {
- no strict 'refs';
- my $expat = shift;
- my $type = shift;
-
- # Set right context for Text handler
- push(@{$expat->{Context}}, $type);
- doText($expat);
- pop(@{$expat->{Context}});
-
- $_ = "</$type>";
-
- my $sub = $expat->{Pkg} . "::EndTag";
- if (defined(&$sub)) {
- &$sub($expat, $type);
- } else {
- print;
- }
-}
-
-sub Char {
- my $expat = shift;
- $expat->{Text} .= shift;
-}
-
-sub Proc {
- no strict 'refs';
- my $expat = shift;
- my $target = shift;
- my $text = shift;
-
- doText($expat);
-
- $_ = "<?$target $text?>";
-
- my $sub = $expat->{Pkg} . "::PI";
- if (defined(&$sub)) {
- &$sub($expat, $target, $text);
- } else {
- print;
- }
-}
-
-sub Final {
- no strict 'refs';
- my $expat = shift;
- my $sub = $expat->{Pkg} . "::EndDocument";
- &$sub($expat)
- if defined(&$sub);
-}
-
-sub doText {
- no strict 'refs';
- my $expat = shift;
- $_ = $expat->{Text};
-
- if (length($_)) {
- my $sub = $expat->{Pkg} . "::Text";
- if (defined(&$sub)) {
- &$sub($expat);
- } else {
- print;
- }
-
- $expat->{Text} = '';
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-XML::Parser - A perl module for parsing XML documents
-
-=head1 SYNOPSIS
-
- use XML::Parser;
-
- $p1 = new XML::Parser(Style => 'Debug');
- $p1->parsefile('REC-xml-19980210.xml');
- $p1->parse('<foo id="me">Hello World</foo>');
-
- # Alternative
- $p2 = new XML::Parser(Handlers => {Start => \&handle_start,
- End => \&handle_end,
- Char => \&handle_char});
- $p2->parse($socket);
-
- # Another alternative
- $p3 = new XML::Parser(ErrorContext => 2);
-
- $p3->setHandlers(Char => \&text,
- Default => \&other);
-
- open(FOO, 'xmlgenerator |');
- $p3->parse(*FOO, ProtocolEncoding => 'ISO-8859-1');
- close(FOO);
-
- $p3->parsefile('junk.xml', ErrorContext => 3);
-
-=begin man
-.ds PI PI
-
-=end man
-
-=head1 DESCRIPTION
-
-This module provides ways to parse XML documents. It is built on top of
-L<XML::Parser::Expat>, which is a lower level interface to James Clark's
-expat library. Each call to one of the parsing methods creates a new
-instance of XML::Parser::Expat which is then used to parse the document.
-Expat options may be provided when the XML::Parser object is created.
-These options are then passed on to the Expat object on each parse call.
-They can also be given as extra arguments to the parse methods, in which
-case they override options given at XML::Parser creation time.
-
-The behavior of the parser is controlled either by C<L</Style>> and/or
-C<L</Handlers>> options, or by L</setHandlers> method. These all provide
-mechanisms for XML::Parser to set the handlers needed by XML::Parser::Expat.
-If neither C<Style> nor C<Handlers> are specified, then parsing just
-checks the document for being well-formed.
-
-When underlying handlers get called, they receive as their first parameter
-the I<Expat> object, not the Parser object.
-
-=head1 METHODS
-
-=over 4
-
-=item new
-
-This is a class method, the constructor for XML::Parser. Options are passed
-as keyword value pairs. Recognized options are:
-
-=over 4
-
-=item * Style
-
-This option provides an easy way to create a given style of parser. The
-built in styles are: L<"Debug">, L<"Subs">, L<"Tree">, L<"Objects">,
-and L<"Stream">.
-Custom styles can be provided by giving a full package name containing
-at least one '::'. This package should then have subs defined for each
-handler it wishes to have installed. See L<"STYLES"> below
-for a discussion of each built in style.
-
-=item * Handlers
-
-When provided, this option should be an anonymous hash containing as
-keys the type of handler and as values a sub reference to handle that
-type of event. All the handlers get passed as their 1st parameter the
-instance of expat that is parsing the document. Further details on
-handlers can be found in L<"HANDLERS">. Any handler set here
-overrides the corresponding handler set with the Style option.
-
-=item * Pkg
-
-Some styles will refer to subs defined in this package. If not provided,
-it defaults to the package which called the constructor.
-
-=item * ErrorContext
-
-This is an Expat option. When this option is defined, errors are reported
-in context. The value should be the number of lines to show on either side
-of the line in which the error occurred.
-
-=item * ProtocolEncoding
-
-This is an Expat option. This sets the protocol encoding name. It defaults
-to none. The built-in encodings are: C<UTF-8>, C<ISO-8859-1>, C<UTF-16>, and
-C<US-ASCII>. Other encodings may be used if they have encoding maps in one
-of the directories in the @Encoding_Path list. Check L<"ENCODINGS"> for
-more information on encoding maps. Setting the protocol encoding overrides
-any encoding in the XML declaration.
-
-=item * Namespaces
-
-This is an Expat option. If this is set to a true value, then namespace
-processing is done during the parse. See L<XML::Parser::Expat/"Namespaces">
-for further discussion of namespace processing.
-
-=item * NoExpand
-
-This is an Expat option. Normally, the parser will try to expand references
-to entities defined in the internal subset. If this option is set to a true
-value, and a default handler is also set, then the default handler will be
-called when an entity reference is seen in text. This has no effect if a
-default handler has not been registered, and it has no effect on the expansion
-of entity references inside attribute values.
-
-=item * Stream_Delimiter
-
-This is an Expat option. It takes a string value. When this string is found
-alone on a line while parsing from a stream, then the parse is ended as if it
-saw an end of file. The intended use is with a stream of xml documents in a
-MIME multipart format. The string should not contain a trailing newline.
-
-=item * ParseParamEnt
-
-This is an Expat option. Unless standalone is set to "yes" in the XML
-declaration, setting this to a true value allows the external DTD to be read,
-and parameter entities to be parsed and expanded.
-
-=item * NoLWP
-
-This option has no effect if the ExternEnt or ExternEntFin handlers are
-directly set. Otherwise, if true, it forces the use of a file based external
-entity handler.
-
-=item * Non-Expat-Options
-
-If provided, this should be an anonymous hash whose keys are options that
-shouldn't be passed to Expat. This should only be of concern to those
-subclassing XML::Parser.
-
-=back
-
-=item setHandlers(TYPE, HANDLER [, TYPE, HANDLER [...]])
-
-This method registers handlers for various parser events. It overrides any
-previous handlers registered through the Style or Handler options or through
-earlier calls to setHandlers. By providing a false or undefined value as
-the handler, the existing handler can be unset.
-
-This method returns a list of type, handler pairs corresponding to the
-input. The handlers returned are the ones that were in effect prior to
-the call.
-
-See a description of the handler types in L<"HANDLERS">.
-
-=item parse(SOURCE [, OPT => OPT_VALUE [...]])
-
-The SOURCE parameter should either be a string containing the whole XML
-document, or it should be an open IO::Handle. Constructor options to
-XML::Parser::Expat given as keyword-value pairs may follow the SOURCE
-parameter. These override, for this call, any options or attributes passed
-through from the XML::Parser instance.
-
-A die call is thrown if a parse error occurs. Otherwise it will return 1
-or whatever is returned from the B<Final> handler, if one is installed.
-In other words, what parse may return depends on the style.
-
-=item parsestring
-
-This is just an alias for parse for backwards compatibility.
-
-=item parsefile(FILE [, OPT => OPT_VALUE [...]])
-
-Open FILE for reading, then call parse with the open handle. The file
-is closed no matter how parse returns. Returns what parse returns.
-
-=item parse_start([ OPT => OPT_VALUE [...]])
-
-Create and return a new instance of XML::Parser::ExpatNB. Constructor
-options may be provided. If an init handler has been provided, it is
-called before returning the ExpatNB object. Documents are parsed by
-making incremental calls to the parse_more method of this object, which
-takes a string. A single call to the parse_done method of this object,
-which takes no arguments, indicates that the document is finished.
-
-If there is a final handler installed, it is executed by the parse_done
-method before returning and the parse_done method returns whatever is
-returned by the final handler.
-
-=back
-
-=head1 HANDLERS
-
-Expat is an event based parser. As the parser recognizes parts of the
-document (say the start or end tag for an XML element), then any handlers
-registered for that type of an event are called with suitable parameters.
-All handlers receive an instance of XML::Parser::Expat as their first
-argument. See L<XML::Parser::Expat/"METHODS"> for a discussion of the
-methods that can be called on this object.
-
-=head2 Init (Expat)
-
-This is called just before the parsing of the document starts.
-
-=head2 Final (Expat)
-
-This is called just after parsing has finished, but only if no errors
-occurred during the parse. Parse returns what this returns.
-
-=head2 Start (Expat, Element [, Attr, Val [,...]])
-
-This event is generated when an XML start tag is recognized. Element is the
-name of the XML element type that is opened with the start tag. The Attr &
-Val pairs are generated for each attribute in the start tag.
-
-=head2 End (Expat, Element)
-
-This event is generated when an XML end tag is recognized. Note that
-an XML empty tag (<foo/>) generates both a start and an end event.
-
-=head2 Char (Expat, String)
-
-This event is generated when non-markup is recognized. The non-markup
-sequence of characters is in String. A single non-markup sequence of
-characters may generate multiple calls to this handler. Whatever the
-encoding of the string in the original document, this is given to the
-handler in UTF-8.
-
-=head2 Proc (Expat, Target, Data)
-
-This event is generated when a processing instruction is recognized.
-
-=head2 Comment (Expat, Data)
-
-This event is generated when a comment is recognized.
-
-=head2 CdataStart (Expat)
-
-This is called at the start of a CDATA section.
-
-=head2 CdataEnd (Expat)
-
-This is called at the end of a CDATA section.
-
-=head2 Default (Expat, String)
-
-This is called for any characters that don't have a registered handler.
-This includes both characters that are part of markup for which no
-events are generated (markup declarations) and characters that
-could generate events, but for which no handler has been registered.
-
-Whatever the encoding in the original document, the string is returned to
-the handler in UTF-8.
-
-=head2 Unparsed (Expat, Entity, Base, Sysid, Pubid, Notation)
-
-This is called for a declaration of an unparsed entity. Entity is the name
-of the entity. Base is the base to be used for resolving a relative URI.
-Sysid is the system id. Pubid is the public id. Notation is the notation
-name. Base and Pubid may be undefined.
-
-=head2 Notation (Expat, Notation, Base, Sysid, Pubid)
-
-This is called for a declaration of notation. Notation is the notation name.
-Base is the base to be used for resolving a relative URI. Sysid is the system
-id. Pubid is the public id. Base, Sysid, and Pubid may all be undefined.
-
-=head2 ExternEnt (Expat, Base, Sysid, Pubid)
-
-This is called when an external entity is referenced. Base is the base to be
-used for resolving a relative URI. Sysid is the system id. Pubid is the public
-id. Base, and Pubid may be undefined.
-
-This handler should either return a string, which represents the contents of
-the external entity, or return an open filehandle that can be read to obtain
-the contents of the external entity, or return undef, which indicates the
-external entity couldn't be found and will generate a parse error.
-
-If an open filehandle is returned, it must be returned as either a glob
-(*FOO) or as a reference to a glob (e.g. an instance of IO::Handle).
-
-A default handler is installed for this event. The default handler is
-XML::Parser::lwp_ext_ent_handler unless the NoLWP option was provided with
-a true value, otherwise XML::Parser::file_ext_ent_handler is the default
-handler for external entities. Even without the NoLWP option, if the
-URI or LWP modules are missing, the file based handler ends up being used
-after giving a warning on the first external entity reference.
-
-The LWP external entity handler will use proxies defined in the environment
-(http_proxy, ftp_proxy, etc.).
-
-Please note that the LWP external entity handler reads the entire
-entity into a string and returns it, where as the file handler opens a
-filehandle.
-
-Also note that the file external entity handler will likely choke on
-absolute URIs or file names that don't fit the conventions of the local
-operating system.
-
-The expat base method can be used to set a basename for
-relative pathnames. If no basename is given, or if the basename is itself
-a relative name, then it is relative to the current working directory.
-
-=head2 ExternEntFin (Expat)
-
-This is called after parsing an external entity. It's not called unless
-an ExternEnt handler is also set. There is a default handler installed
-that pairs with the default ExternEnt handler.
-
-If you're going to install your own ExternEnt handler, then you should
-set (or unset) this handler too.
-
-=head2 Entity (Expat, Name, Val, Sysid, Pubid, Ndata, IsParam)
-
-This is called when an entity is declared. For internal entities, the Val
-parameter will contain the value and the remaining three parameters will be
-undefined. For external entities, the Val parameter will be undefined, the
-Sysid parameter will have the system id, the Pubid parameter will have the
-public id if it was provided (it will be undefined otherwise), the Ndata
-parameter will contain the notation for unparsed entities. If this is a
-parameter entity declaration, then the IsParam parameter is true.
-
-Note that this handler and the Unparsed handler above overlap. If both are
-set, then this handler will not be called for unparsed entities.
-
-=head2 Element (Expat, Name, Model)
-
-The element handler is called when an element declaration is found. Name
-is the element name, and Model is the content model as an XML::Parser::Content
-object. See L<XML::Parser::Expat/"XML::Parser::ContentModel Methods">
-for methods available for this class.
-
-=head2 Attlist (Expat, Elname, Attname, Type, Default, Fixed)
-
-This handler is called for each attribute in an ATTLIST declaration.
-So an ATTLIST declaration that has multiple attributes will generate multiple
-calls to this handler. The Elname parameter is the name of the element with
-which the attribute is being associated. The Attname parameter is the name
-of the attribute. Type is the attribute type, given as a string. Default is
-the default value, which will either be "#REQUIRED", "#IMPLIED" or a quoted
-string (i.e. the returned string will begin and end with a quote character).
-If Fixed is true, then this is a fixed attribute.
-
-=head2 Doctype (Expat, Name, Sysid, Pubid, Internal)
-
-This handler is called for DOCTYPE declarations. Name is the document type
-name. Sysid is the system id of the document type, if it was provided,
-otherwise it's undefined. Pubid is the public id of the document type,
-which will be undefined if no public id was given. Internal is the internal
-subset, given as a string. If there was no internal subset, it will be
-undefined. Internal will contain all whitespace, comments, processing
-instructions, and declarations seen in the internal subset. The declarations
-will be there whether or not they have been processed by another handler
-(except for unparsed entities processed by the Unparsed handler). However,
-comments and processing instructions will not appear if they've been processed
-by their respective handlers.
-
-=head2 * DoctypeFin (Parser)
-
-This handler is called after parsing of the DOCTYPE declaration has finished,
-including any internal or external DTD declarations.
-
-=head2 XMLDecl (Expat, Version, Encoding, Standalone)
-
-This handler is called for xml declarations. Version is a string containg
-the version. Encoding is either undefined or contains an encoding string.
-Standalone will be either true, false, or undefined if the standalone attribute
-is yes, no, or not made respectively.
-
-=head1 STYLES
-
-=head2 Debug
-
-This just prints out the document in outline form. Nothing special is
-returned by parse.
-
-=head2 Subs
-
-Each time an element starts, a sub by that name in the package specified
-by the Pkg option is called with the same parameters that the Start
-handler gets called with.
-
-Each time an element ends, a sub with that name appended with an underscore
-("_"), is called with the same parameters that the End handler gets called
-with.
-
-Nothing special is returned by parse.
-
-=head2 Tree
-
-Parse will return a parse tree for the document. Each node in the tree
-takes the form of a tag, content pair. Text nodes are represented with
-a pseudo-tag of "0" and the string that is their content. For elements,
-the content is an array reference. The first item in the array is a
-(possibly empty) hash reference containing attributes. The remainder of
-the array is a sequence of tag-content pairs representing the content
-of the element.
-
-So for example the result of parsing:
-
- <foo><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo>
-
-would be:
- Tag Content
- ==================================================================
- [foo, [{}, head, [{id => "a"}, 0, "Hello ", em, [{}, 0, "there"]],
- bar, [ {}, 0, "Howdy", ref, [{}]],
- 0, "do"
- ]
- ]
-
-The root document "foo", has 3 children: a "head" element, a "bar"
-element and the text "do". After the empty attribute hash, these are
-represented in it's contents by 3 tag-content pairs.
-
-=head2 Objects
-
-This is similar to the Tree style, except that a hash object is created for
-each element. The corresponding object will be in the class whose name
-is created by appending "::" and the element name to the package set with
-the Pkg option. Non-markup text will be in the ::Characters class. The
-contents of the corresponding object will be in an anonymous array that
-is the value of the Kids property for that object.
-
-=head2 Stream
-
-This style also uses the Pkg package. If none of the subs that this
-style looks for is there, then the effect of parsing with this style is
-to print a canonical copy of the document without comments or declarations.
-All the subs receive as their 1st parameter the Expat instance for the
-document they're parsing.
-
-It looks for the following routines:
-
-=over 4
-
-=item * StartDocument
-
-Called at the start of the parse .
-
-=item * StartTag
-
-Called for every start tag with a second parameter of the element type. The $_
-variable will contain a copy of the tag and the %_ variable will contain
-attribute values supplied for that element.
-
-=item * EndTag
-
-Called for every end tag with a second parameter of the element type. The $_
-variable will contain a copy of the end tag.
-
-=item * Text
-
-Called just before start or end tags with accumulated non-markup text in
-the $_ variable.
-
-=item * PI
-
-Called for processing instructions. The $_ variable will contain a copy of
-the PI and the target and data are sent as 2nd and 3rd parameters
-respectively.
-
-=item * EndDocument
-
-Called at conclusion of the parse.
-
-=back
-
-=head1 ENCODINGS
-
-XML documents may be encoded in character sets other than Unicode as
-long as they may be mapped into the Unicode character set. Expat has
-further restrictions on encodings. Read the xmlparse.h header file in
-the expat distribution to see details on these restrictions.
-
-Expat has built-in encodings for: C<UTF-8>, C<ISO-8859-1>, C<UTF-16>, and
-C<US-ASCII>. Encodings are set either through the XML declaration
-encoding attribute or through the ProtocolEncoding option to XML::Parser
-or XML::Parser::Expat.
-
-For encodings other than the built-ins, expat calls the function
-load_encoding in the Expat package with the encoding name. This function
-looks for a file in the path list @XML::Parser::Expat::Encoding_Path, that
-matches the lower-cased name with a '.enc' extension. The first one it
-finds, it loads.
-
-If you wish to build your own encoding maps, check out the XML::Encoding
-module from CPAN.
-
-=head1 AUTHORS
-
-Larry Wall <F<larry@wall.org>> wrote version 1.0.
-
-Clark Cooper <F<coopercc@netheaven.com>> picked up support, changed the API
-for this version (2.x), provided documentation,
-and added some standard package features.
-
-=cut
diff --git a/Master/perltl/site/lib/XML/Parser/Expat.pm b/Master/perltl/site/lib/XML/Parser/Expat.pm
deleted file mode 100644
index 370f6f67bf6..00000000000
--- a/Master/perltl/site/lib/XML/Parser/Expat.pm
+++ /dev/null
@@ -1,1231 +0,0 @@
-package XML::Parser::Expat;
-
-require 5.004;
-
-use strict;
-use vars qw($VERSION @ISA %Handler_Setters %Encoding_Table @Encoding_Path
- $have_File_Spec);
-use Carp;
-
-use IO::Handle;
-
-require DynaLoader;
-
-@ISA = qw(DynaLoader);
-$VERSION = "2.31" ;
-
-$have_File_Spec = $INC{'File/Spec.pm'} || do 'File/Spec.pm';
-
-%Encoding_Table = ();
-if ($have_File_Spec) {
- @Encoding_Path = (grep(-d $_,
- map(File::Spec->catdir($_, qw(XML Parser Encodings)),
- @INC)),
- File::Spec->curdir);
-}
-else {
- @Encoding_Path = (grep(-d $_, map($_ . '/XML/Parser/Encodings', @INC)), '.');
-}
-
-
-bootstrap XML::Parser::Expat $VERSION;
-
-%Handler_Setters = (
- Start => \&SetStartElementHandler,
- End => \&SetEndElementHandler,
- Char => \&SetCharacterDataHandler,
- Proc => \&SetProcessingInstructionHandler,
- Comment => \&SetCommentHandler,
- CdataStart => \&SetStartCdataHandler,
- CdataEnd => \&SetEndCdataHandler,
- Default => \&SetDefaultHandler,
- Unparsed => \&SetUnparsedEntityDeclHandler,
- Notation => \&SetNotationDeclHandler,
- ExternEnt => \&SetExternalEntityRefHandler,
- ExternEntFin => \&SetExtEntFinishHandler,
- Entity => \&SetEntityDeclHandler,
- Element => \&SetElementDeclHandler,
- Attlist => \&SetAttListDeclHandler,
- Doctype => \&SetDoctypeHandler,
- DoctypeFin => \&SetEndDoctypeHandler,
- XMLDecl => \&SetXMLDeclHandler
- );
-
-sub new {
- my ($class, %args) = @_;
- my $self = bless \%args, $_[0];
- $args{_State_} = 0;
- $args{Context} = [];
- $args{Namespaces} ||= 0;
- $args{ErrorMessage} ||= '';
- if ($args{Namespaces}) {
- $args{Namespace_Table} = {};
- $args{Namespace_List} = [undef];
- $args{Prefix_Table} = {};
- $args{New_Prefixes} = [];
- }
- $args{_Setters} = \%Handler_Setters;
- $args{Parser} = ParserCreate($self, $args{ProtocolEncoding},
- $args{Namespaces});
- $self;
-}
-
-sub load_encoding {
- my ($file) = @_;
-
- $file =~ s!([^/]+)$!\L$1\E!;
- $file .= '.enc' unless $file =~ /\.enc$/;
- unless ($file =~ m!^/!) {
- foreach (@Encoding_Path) {
- my $tmp = ($have_File_Spec
- ? File::Spec->catfile($_, $file)
- : "$_/$file");
- if (-e $tmp) {
- $file = $tmp;
- last;
- }
- }
- }
-
- local(*ENC);
- open(ENC, $file) or croak("Couldn't open encmap $file:\n$!\n");
- binmode(ENC);
- my $data;
- my $br = sysread(ENC, $data, -s $file);
- croak("Trouble reading $file:\n$!\n")
- unless defined($br);
- close(ENC);
-
- my $name = LoadEncoding($data, $br);
- croak("$file isn't an encmap file")
- unless defined($name);
-
- $name;
-} # End load_encoding
-
-sub setHandlers {
- my ($self, @handler_pairs) = @_;
-
- croak("Uneven number of arguments to setHandlers method")
- if (int(@handler_pairs) & 1);
-
- my @ret;
-
- while (@handler_pairs) {
- my $type = shift @handler_pairs;
- my $handler = shift @handler_pairs;
- croak "Handler for $type not a Code ref"
- unless (! defined($handler) or ! $handler or ref($handler) eq 'CODE');
-
- my $hndl = $self->{_Setters}->{$type};
-
- unless (defined($hndl)) {
- my @types = sort keys %{$self->{_Setters}};
- croak("Unknown Expat handler type: $type\n Valid types: @types");
- }
-
- my $old = &$hndl($self->{Parser}, $handler);
- push (@ret, $type, $old);
- }
-
- return @ret;
-}
-
-sub xpcroak
- {
- my ($self, $message) = @_;
-
- my $eclines = $self->{ErrorContext};
- my $line = GetCurrentLineNumber($_[0]->{Parser});
- $message .= " at line $line";
- $message .= ":\n" . $self->position_in_context($eclines)
- if defined($eclines);
- croak $message;
-}
-
-sub xpcarp {
- my ($self, $message) = @_;
-
- my $eclines = $self->{ErrorContext};
- my $line = GetCurrentLineNumber($_[0]->{Parser});
- $message .= " at line $line";
- $message .= ":\n" . $self->position_in_context($eclines)
- if defined($eclines);
- carp $message;
-}
-
-sub default_current {
- my $self = shift;
- if ($self->{_State_} == 1) {
- return DefaultCurrent($self->{Parser});
- }
-}
-
-sub recognized_string {
- my $self = shift;
- if ($self->{_State_} == 1) {
- return RecognizedString($self->{Parser});
- }
-}
-
-sub original_string {
- my $self = shift;
- if ($self->{_State_} == 1) {
- return OriginalString($self->{Parser});
- }
-}
-
-sub current_line {
- my $self = shift;
- if ($self->{_State_} == 1) {
- return GetCurrentLineNumber($self->{Parser});
- }
-}
-
-sub current_column {
- my $self = shift;
- if ($self->{_State_} == 1) {
- return GetCurrentColumnNumber($self->{Parser});
- }
-}
-
-sub current_byte {
- my $self = shift;
- if ($self->{_State_} == 1) {
- return GetCurrentByteIndex($self->{Parser});
- }
-}
-
-sub base {
- my ($self, $newbase) = @_;
- my $p = $self->{Parser};
- my $oldbase = GetBase($p);
- SetBase($p, $newbase) if @_ > 1;
- return $oldbase;
-}
-
-sub context {
- my $ctx = $_[0]->{Context};
- @$ctx;
-}
-
-sub current_element {
- my ($self) = @_;
- @{$self->{Context}} ? $self->{Context}->[-1] : undef;
-}
-
-sub in_element {
- my ($self, $element) = @_;
- @{$self->{Context}} ? $self->eq_name($self->{Context}->[-1], $element)
- : undef;
-}
-
-sub within_element {
- my ($self, $element) = @_;
- my $cnt = 0;
- foreach (@{$self->{Context}}) {
- $cnt++ if $self->eq_name($_, $element);
- }
- return $cnt;
-}
-
-sub depth {
- my ($self) = @_;
- int(@{$self->{Context}});
-}
-
-sub element_index {
- my ($self) = @_;
-
- if ($self->{_State_} == 1) {
- return ElementIndex($self->{Parser});
- }
-}
-
-################
-# Namespace methods
-
-sub namespace {
- my ($self, $name) = @_;
- local($^W) = 0;
- $self->{Namespace_List}->[int($name)];
-}
-
-sub eq_name {
- my ($self, $nm1, $nm2) = @_;
- local($^W) = 0;
-
- int($nm1) == int($nm2) and $nm1 eq $nm2;
-}
-
-sub generate_ns_name {
- my ($self, $name, $namespace) = @_;
-
- $namespace ?
- GenerateNSName($name, $namespace, $self->{Namespace_Table},
- $self->{Namespace_List})
- : $name;
-}
-
-sub new_ns_prefixes {
- my ($self) = @_;
- if ($self->{Namespaces}) {
- return @{$self->{New_Prefixes}};
- }
- return ();
-}
-
-sub expand_ns_prefix {
- my ($self, $prefix) = @_;
-
- if ($self->{Namespaces}) {
- my $stack = $self->{Prefix_Table}->{$prefix};
- return (defined($stack) and @$stack) ? $stack->[-1] : undef;
- }
-
- return undef;
-}
-
-sub current_ns_prefixes {
- my ($self) = @_;
-
- if ($self->{Namespaces}) {
- my %set = %{$self->{Prefix_Table}};
-
- if (exists $set{'#default'} and not defined($set{'#default'}->[-1])) {
- delete $set{'#default'};
- }
-
- return keys %set;
- }
-
- return ();
-}
-
-
-################################################################
-# Namespace declaration handlers
-#
-
-sub NamespaceStart {
- my ($self, $prefix, $uri) = @_;
-
- $prefix = '#default' unless defined $prefix;
- my $stack = $self->{Prefix_Table}->{$prefix};
-
- if (defined $stack) {
- push(@$stack, $uri);
- }
- else {
- $self->{Prefix_Table}->{$prefix} = [$uri];
- }
-
- # The New_Prefixes list gets emptied at end of startElement function
- # in Expat.xs
-
- push(@{$self->{New_Prefixes}}, $prefix);
-}
-
-sub NamespaceEnd {
- my ($self, $prefix) = @_;
-
- $prefix = '#default' unless defined $prefix;
-
- my $stack = $self->{Prefix_Table}->{$prefix};
- if (@$stack > 1) {
- pop(@$stack);
- }
- else {
- delete $self->{Prefix_Table}->{$prefix};
- }
-}
-
-################
-
-sub specified_attr {
- my $self = shift;
-
- if ($self->{_State_} == 1) {
- return GetSpecifiedAttributeCount($self->{Parser});
- }
-}
-
-sub finish {
- my ($self) = @_;
- if ($self->{_State_} == 1) {
- my $parser = $self->{Parser};
- UnsetAllHandlers($parser);
- }
-}
-
-sub position_in_context {
- my ($self, $lines) = @_;
- if ($self->{_State_} == 1) {
- my $parser = $self->{Parser};
- my ($string, $linepos) = PositionContext($parser, $lines);
-
- return '' unless defined($string);
-
- my $col = GetCurrentColumnNumber($parser);
- my $ptr = ('=' x ($col - 1)) . '^' . "\n";
- my $ret;
- my $dosplit = $linepos < length($string);
-
- $string .= "\n" unless $string =~ /\n$/;
-
- if ($dosplit) {
- $ret = substr($string, 0, $linepos) . $ptr
- . substr($string, $linepos);
- } else {
- $ret = $string . $ptr;
- }
-
- return $ret;
- }
-}
-
-sub xml_escape {
- my $self = shift;
- my $text = shift;
-
- study $text;
- $text =~ s/\&/\&amp;/g;
- $text =~ s/</\&lt;/g;
- foreach (@_) {
- croak "xml_escape: '$_' isn't a single character" if length($_) > 1;
-
- if ($_ eq '>') {
- $text =~ s/>/\&gt;/g;
- }
- elsif ($_ eq '"') {
- $text =~ s/\"/\&quot;/;
- }
- elsif ($_ eq "'") {
- $text =~ s/\'/\&apos;/;
- }
- else {
- my $rep = '&#' . sprintf('x%X', ord($_)) . ';';
- if (/\W/) {
- my $ptrn = "\\$_";
- $text =~ s/$ptrn/$rep/g;
- }
- else {
- $text =~ s/$_/$rep/g;
- }
- }
- }
- $text;
-}
-
-sub skip_until {
- my $self = shift;
- if ($self->{_State_} <= 1) {
- SkipUntil($self->{Parser}, $_[0]);
- }
-}
-
-sub release {
- my $self = shift;
- ParserRelease($self->{Parser});
-}
-
-sub DESTROY {
- my $self = shift;
- ParserFree($self->{Parser});
-}
-
-sub parse {
- my $self = shift;
- my $arg = shift;
- croak "Parse already in progress (Expat)" if $self->{_State_};
- $self->{_State_} = 1;
- my $parser = $self->{Parser};
- my $ioref;
- my $result = 0;
-
- if (defined $arg) {
- if (ref($arg) and UNIVERSAL::isa($arg, 'IO::Handle')) {
- $ioref = $arg;
- } elsif (tied($arg)) {
- my $class = ref($arg);
- no strict 'refs';
- $ioref = $arg if defined &{"${class}::TIEHANDLE"};
- }
- else {
- eval {
- $ioref = *{$arg}{IO};
- };
- undef $@;
- }
- }
-
- if (defined($ioref)) {
- my $delim = $self->{Stream_Delimiter};
- my $prev_rs;
-
- $prev_rs = ref($ioref)->input_record_separator("\n$delim\n")
- if defined($delim);
-
- $result = ParseStream($parser, $ioref, $delim);
-
- ref($ioref)->input_record_separator($prev_rs)
- if defined($delim);
- } else {
- $result = ParseString($parser, $arg);
- }
-
- $self->{_State_} = 2;
- $result or croak $self->{ErrorMessage};
-}
-
-sub parsestring {
- my $self = shift;
- $self->parse(@_);
-}
-
-sub parsefile {
- my $self = shift;
- croak "Parser has already been used" if $self->{_State_};
- local(*FILE);
- open(FILE, $_[0]) or croak "Couldn't open $_[0]:\n$!";
- binmode(FILE);
- my $ret = $self->parse(*FILE);
- close(FILE);
- $ret;
-}
-
-################################################################
-package XML::Parser::ContentModel;
-use overload '""' => \&asString, 'eq' => \&thiseq;
-
-sub EMPTY () {1}
-sub ANY () {2}
-sub MIXED () {3}
-sub NAME () {4}
-sub CHOICE () {5}
-sub SEQ () {6}
-
-
-sub isempty {
- return $_[0]->{Type} == EMPTY;
-}
-
-sub isany {
- return $_[0]->{Type} == ANY;
-}
-
-sub ismixed {
- return $_[0]->{Type} == MIXED;
-}
-
-sub isname {
- return $_[0]->{Type} == NAME;
-}
-
-sub name {
- return $_[0]->{Tag};
-}
-
-sub ischoice {
- return $_[0]->{Type} == CHOICE;
-}
-
-sub isseq {
- return $_[0]->{Type} == SEQ;
-}
-
-sub quant {
- return $_[0]->{Quant};
-}
-
-sub children {
- my $children = $_[0]->{Children};
- if (defined $children) {
- return @$children;
- }
- return undef;
-}
-
-sub asString {
- my ($self) = @_;
- my $ret;
-
- if ($self->{Type} == NAME) {
- $ret = $self->{Tag};
- }
- elsif ($self->{Type} == EMPTY) {
- return "EMPTY";
- }
- elsif ($self->{Type} == ANY) {
- return "ANY";
- }
- elsif ($self->{Type} == MIXED) {
- $ret = '(#PCDATA';
- foreach (@{$self->{Children}}) {
- $ret .= '|' . $_;
- }
- $ret .= ')';
- }
- else {
- my $sep = $self->{Type} == CHOICE ? '|' : ',';
- my @children_str = map { $_->asString } @{$self->{Children}};
- $ret = '(' . join($sep, @children_str) . ')';
- }
-
- $ret .= $self->{Quant} if $self->{Quant};
- return $ret;
-}
-
-sub thiseq {
- my $self = shift;
-
- return $self->asString eq $_[0];
-}
-
-################################################################
-package XML::Parser::ExpatNB;
-
-use vars qw(@ISA);
-use Carp;
-
-@ISA = qw(XML::Parser::Expat);
-
-sub parse {
- my $self = shift;
- my $class = ref($self);
- croak "parse method not supported in $class";
-}
-
-sub parsestring {
- my $self = shift;
- my $class = ref($self);
- croak "parsestring method not supported in $class";
-}
-
-sub parsefile {
- my $self = shift;
- my $class = ref($self);
- croak "parsefile method not supported in $class";
-}
-
-sub parse_more {
- my ($self, $data) = @_;
-
- $self->{_State_} = 1;
- my $ret = XML::Parser::Expat::ParsePartial($self->{Parser}, $data);
-
- croak $self->{ErrorMessage} unless $ret;
-}
-
-sub parse_done {
- my $self = shift;
-
- my $ret = XML::Parser::Expat::ParseDone($self->{Parser});
- unless ($ret) {
- my $msg = $self->{ErrorMessage};
- $self->release;
- croak $msg;
- }
-
- $self->{_State_} = 2;
-
- my $result = $ret;
- my @result = ();
- my $final = $self->{FinalHandler};
- if (defined $final) {
- if (wantarray) {
- @result = &$final($self);
- }
- else {
- $result = &$final($self);
- }
- }
-
- $self->release;
-
- return unless defined wantarray;
- return wantarray ? @result : $result;
-}
-
-################################################################
-
-package XML::Parser::Encinfo;
-
-sub DESTROY {
- my $self = shift;
- XML::Parser::Expat::FreeEncoding($self);
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-XML::Parser::Expat - Lowlevel access to James Clark's expat XML parser
-
-=head1 SYNOPSIS
-
- use XML::Parser::Expat;
-
- $parser = new XML::Parser::Expat;
- $parser->setHandlers('Start' => \&sh,
- 'End' => \&eh,
- 'Char' => \&ch);
- open(FOO, 'info.xml') or die "Couldn't open";
- $parser->parse(*FOO);
- close(FOO);
- # $parser->parse('<foo id="me"> here <em>we</em> go </foo>');
-
- sub sh
- {
- my ($p, $el, %atts) = @_;
- $p->setHandlers('Char' => \&spec)
- if ($el eq 'special');
- ...
- }
-
- sub eh
- {
- my ($p, $el) = @_;
- $p->setHandlers('Char' => \&ch) # Special elements won't contain
- if ($el eq 'special'); # other special elements
- ...
- }
-
-=head1 DESCRIPTION
-
-This module provides an interface to James Clark's XML parser, expat. As in
-expat, a single instance of the parser can only parse one document. Calls
-to parsestring after the first for a given instance will die.
-
-Expat (and XML::Parser::Expat) are event based. As the parser recognizes
-parts of the document (say the start or end of an XML element), then any
-handlers registered for that type of an event are called with suitable
-parameters.
-
-=head1 METHODS
-
-=over 4
-
-=item new
-
-This is a class method, the constructor for XML::Parser::Expat. Options are
-passed as keyword value pairs. The recognized options are:
-
-=over 4
-
-=item * ProtocolEncoding
-
-The protocol encoding name. The default is none. The expat built-in
-encodings are: C<UTF-8>, C<ISO-8859-1>, C<UTF-16>, and C<US-ASCII>.
-Other encodings may be used if they have encoding maps in one of the
-directories in the @Encoding_Path list. Setting the protocol encoding
-overrides any encoding in the XML declaration.
-
-=item * Namespaces
-
-When this option is given with a true value, then the parser does namespace
-processing. By default, namespace processing is turned off. When it is
-turned on, the parser consumes I<xmlns> attributes and strips off prefixes
-from element and attributes names where those prefixes have a defined
-namespace. A name's namespace can be found using the L<"namespace"> method
-and two names can be checked for absolute equality with the L<"eq_name">
-method.
-
-=item * NoExpand
-
-Normally, the parser will try to expand references to entities defined in
-the internal subset. If this option is set to a true value, and a default
-handler is also set, then the default handler will be called when an
-entity reference is seen in text. This has no effect if a default handler
-has not been registered, and it has no effect on the expansion of entity
-references inside attribute values.
-
-=item * Stream_Delimiter
-
-This option takes a string value. When this string is found alone on a line
-while parsing from a stream, then the parse is ended as if it saw an end of
-file. The intended use is with a stream of xml documents in a MIME multipart
-format. The string should not contain a trailing newline.
-
-=item * ErrorContext
-
-When this option is defined, errors are reported in context. The value
-of ErrorContext should be the number of lines to show on either side of
-the line in which the error occurred.
-
-=item * ParseParamEnt
-
-Unless standalone is set to "yes" in the XML declaration, setting this to
-a true value allows the external DTD to be read, and parameter entities
-to be parsed and expanded.
-
-=item * Base
-
-The base to use for relative pathnames or URLs. This can also be done by
-using the base method.
-
-=back
-
-=item setHandlers(TYPE, HANDLER [, TYPE, HANDLER [...]])
-
-This method registers handlers for the various events. If no handlers are
-registered, then a call to parsestring or parsefile will only determine if
-the corresponding XML document is well formed (by returning without error.)
-This may be called from within a handler, after the parse has started.
-
-Setting a handler to something that evaluates to false unsets that
-handler.
-
-This method returns a list of type, handler pairs corresponding to the
-input. The handlers returned are the ones that were in effect before the
-call to setHandlers.
-
-The recognized events and the parameters passed to the corresponding
-handlers are:
-
-=over 4
-
-=item * Start (Parser, Element [, Attr, Val [,...]])
-
-This event is generated when an XML start tag is recognized. Parser is
-an XML::Parser::Expat instance. Element is the name of the XML element that
-is opened with the start tag. The Attr & Val pairs are generated for each
-attribute in the start tag.
-
-=item * End (Parser, Element)
-
-This event is generated when an XML end tag is recognized. Note that
-an XML empty tag (<foo/>) generates both a start and an end event.
-
-There is always a lower level start and end handler installed that wrap
-the corresponding callbacks. This is to handle the context mechanism.
-A consequence of this is that the default handler (see below) will not
-see a start tag or end tag unless the default_current method is called.
-
-=item * Char (Parser, String)
-
-This event is generated when non-markup is recognized. The non-markup
-sequence of characters is in String. A single non-markup sequence of
-characters may generate multiple calls to this handler. Whatever the
-encoding of the string in the original document, this is given to the
-handler in UTF-8.
-
-=item * Proc (Parser, Target, Data)
-
-This event is generated when a processing instruction is recognized.
-
-=item * Comment (Parser, String)
-
-This event is generated when a comment is recognized.
-
-=item * CdataStart (Parser)
-
-This is called at the start of a CDATA section.
-
-=item * CdataEnd (Parser)
-
-This is called at the end of a CDATA section.
-
-=item * Default (Parser, String)
-
-This is called for any characters that don't have a registered handler.
-This includes both characters that are part of markup for which no
-events are generated (markup declarations) and characters that
-could generate events, but for which no handler has been registered.
-
-Whatever the encoding in the original document, the string is returned to
-the handler in UTF-8.
-
-=item * Unparsed (Parser, Entity, Base, Sysid, Pubid, Notation)
-
-This is called for a declaration of an unparsed entity. Entity is the name
-of the entity. Base is the base to be used for resolving a relative URI.
-Sysid is the system id. Pubid is the public id. Notation is the notation
-name. Base and Pubid may be undefined.
-
-=item * Notation (Parser, Notation, Base, Sysid, Pubid)
-
-This is called for a declaration of notation. Notation is the notation name.
-Base is the base to be used for resolving a relative URI. Sysid is the system
-id. Pubid is the public id. Base, Sysid, and Pubid may all be undefined.
-
-=item * ExternEnt (Parser, Base, Sysid, Pubid)
-
-This is called when an external entity is referenced. Base is the base to be
-used for resolving a relative URI. Sysid is the system id. Pubid is the public
-id. Base, and Pubid may be undefined.
-
-This handler should either return a string, which represents the contents of
-the external entity, or return an open filehandle that can be read to obtain
-the contents of the external entity, or return undef, which indicates the
-external entity couldn't be found and will generate a parse error.
-
-If an open filehandle is returned, it must be returned as either a glob
-(*FOO) or as a reference to a glob (e.g. an instance of IO::Handle).
-
-=item * ExternEntFin (Parser)
-
-This is called after an external entity has been parsed. It allows
-applications to perform cleanup on actions performed in the above
-ExternEnt handler.
-
-=item * Entity (Parser, Name, Val, Sysid, Pubid, Ndata, IsParam)
-
-This is called when an entity is declared. For internal entities, the Val
-parameter will contain the value and the remaining three parameters will
-be undefined. For external entities, the Val parameter
-will be undefined, the Sysid parameter will have the system id, the Pubid
-parameter will have the public id if it was provided (it will be undefined
-otherwise), the Ndata parameter will contain the notation for unparsed
-entities. If this is a parameter entity declaration, then the IsParam
-parameter is true.
-
-Note that this handler and the Unparsed handler above overlap. If both are
-set, then this handler will not be called for unparsed entities.
-
-=item * Element (Parser, Name, Model)
-
-The element handler is called when an element declaration is found. Name is
-the element name, and Model is the content model as an
-XML::Parser::ContentModel object. See L<"XML::Parser::ContentModel Methods">
-for methods available for this class.
-
-=item * Attlist (Parser, Elname, Attname, Type, Default, Fixed)
-
-This handler is called for each attribute in an ATTLIST declaration.
-So an ATTLIST declaration that has multiple attributes
-will generate multiple calls to this handler. The Elname parameter is the
-name of the element with which the attribute is being associated. The Attname
-parameter is the name of the attribute. Type is the attribute type, given as
-a string. Default is the default value, which will either be "#REQUIRED",
-"#IMPLIED" or a quoted string (i.e. the returned string will begin and end
-with a quote character). If Fixed is true, then this is a fixed attribute.
-
-=item * Doctype (Parser, Name, Sysid, Pubid, Internal)
-
-This handler is called for DOCTYPE declarations. Name is the document type
-name. Sysid is the system id of the document type, if it was provided,
-otherwise it's undefined. Pubid is the public id of the document type,
-which will be undefined if no public id was given. Internal will be
-true or false, indicating whether or not the doctype declaration contains
-an internal subset.
-
-=item * DoctypeFin (Parser)
-
-This handler is called after parsing of the DOCTYPE declaration has finished,
-including any internal or external DTD declarations.
-
-=item * XMLDecl (Parser, Version, Encoding, Standalone)
-
-This handler is called for XML declarations. Version is a string containg
-the version. Encoding is either undefined or contains an encoding string.
-Standalone is either undefined, or true or false. Undefined indicates
-that no standalone parameter was given in the XML declaration. True or
-false indicates "yes" or "no" respectively.
-
-=back
-
-=item namespace(name)
-
-Return the URI of the namespace that the name belongs to. If the name doesn't
-belong to any namespace, an undef is returned. This is only valid on names
-received through the Start or End handlers from a single document, or through
-a call to the generate_ns_name method. In other words, don't use names
-generated from one instance of XML::Parser::Expat with other instances.
-
-=item eq_name(name1, name2)
-
-Return true if name1 and name2 are identical (i.e. same name and from
-the same namespace.) This is only meaningful if both names were obtained
-through the Start or End handlers from a single document, or through
-a call to the generate_ns_name method.
-
-=item generate_ns_name(name, namespace)
-
-Return a name, associated with a given namespace, good for using with the
-above 2 methods. The namespace argument should be the namespace URI, not
-a prefix.
-
-=item new_ns_prefixes
-
-When called from a start tag handler, returns namespace prefixes declared
-with this start tag. If called elsewere (or if there were no namespace
-prefixes declared), it returns an empty list. Setting of the default
-namespace is indicated with '#default' as a prefix.
-
-=item expand_ns_prefix(prefix)
-
-Return the uri to which the given prefix is currently bound. Returns
-undef if the prefix isn't currently bound. Use '#default' to find the
-current binding of the default namespace (if any).
-
-=item current_ns_prefixes
-
-Return a list of currently bound namespace prefixes. The order of the
-the prefixes in the list has no meaning. If the default namespace is
-currently bound, '#default' appears in the list.
-
-=item recognized_string
-
-Returns the string from the document that was recognized in order to call
-the current handler. For instance, when called from a start handler, it
-will give us the the start-tag string. The string is encoded in UTF-8.
-This method doesn't return a meaningful string inside declaration handlers.
-
-=item original_string
-
-Returns the verbatim string from the document that was recognized in
-order to call the current handler. The string is in the original document
-encoding. This method doesn't return a meaningful string inside declaration
-handlers.
-
-=item default_current
-
-When called from a handler, causes the sequence of characters that generated
-the corresponding event to be sent to the default handler (if one is
-registered). Use of this method is deprecated in favor the recognized_string
-method, which you can use without installing a default handler. This
-method doesn't deliver a meaningful string to the default handler when
-called from inside declaration handlers.
-
-=item xpcroak(message)
-
-Concatenate onto the given message the current line number within the
-XML document plus the message implied by ErrorContext. Then croak with
-the formed message.
-
-=item xpcarp(message)
-
-Concatenate onto the given message the current line number within the
-XML document plus the message implied by ErrorContext. Then carp with
-the formed message.
-
-=item current_line
-
-Returns the line number of the current position of the parse.
-
-=item current_column
-
-Returns the column number of the current position of the parse.
-
-=item current_byte
-
-Returns the current position of the parse.
-
-=item base([NEWBASE]);
-
-Returns the current value of the base for resolving relative URIs. If
-NEWBASE is supplied, changes the base to that value.
-
-=item context
-
-Returns a list of element names that represent open elements, with the
-last one being the innermost. Inside start and end tag handlers, this
-will be the tag of the parent element.
-
-=item current_element
-
-Returns the name of the innermost currently opened element. Inside
-start or end handlers, returns the parent of the element associated
-with those tags.
-
-=item in_element(NAME)
-
-Returns true if NAME is equal to the name of the innermost currently opened
-element. If namespace processing is being used and you want to check
-against a name that may be in a namespace, then use the generate_ns_name
-method to create the NAME argument.
-
-=item within_element(NAME)
-
-Returns the number of times the given name appears in the context list.
-If namespace processing is being used and you want to check
-against a name that may be in a namespace, then use the generate_ns_name
-method to create the NAME argument.
-
-=item depth
-
-Returns the size of the context list.
-
-=item element_index
-
-Returns an integer that is the depth-first visit order of the current
-element. This will be zero outside of the root element. For example,
-this will return 1 when called from the start handler for the root element
-start tag.
-
-=item skip_until(INDEX)
-
-INDEX is an integer that represents an element index. When this method
-is called, all handlers are suspended until the start tag for an element
-that has an index number equal to INDEX is seen. If a start handler has
-been set, then this is the first tag that the start handler will see
-after skip_until has been called.
-
-
-=item position_in_context(LINES)
-
-Returns a string that shows the current parse position. LINES should be
-an integer >= 0 that represents the number of lines on either side of the
-current parse line to place into the returned string.
-
-=item xml_escape(TEXT [, CHAR [, CHAR ...]])
-
-Returns TEXT with markup characters turned into character entities. Any
-additional characters provided as arguments are also turned into character
-references where found in TEXT.
-
-=item parse (SOURCE)
-
-The SOURCE parameter should either be a string containing the whole XML
-document, or it should be an open IO::Handle. Only a single document
-may be parsed for a given instance of XML::Parser::Expat, so this will croak
-if it's been called previously for this instance.
-
-=item parsestring(XML_DOC_STRING)
-
-Parses the given string as an XML document. Only a single document may be
-parsed for a given instance of XML::Parser::Expat, so this will die if either
-parsestring or parsefile has been called for this instance previously.
-
-This method is deprecated in favor of the parse method.
-
-=item parsefile(FILENAME)
-
-Parses the XML document in the given file. Will die if parsestring or
-parsefile has been called previously for this instance.
-
-=item is_defaulted(ATTNAME)
-
-NO LONGER WORKS. To find out if an attribute is defaulted please use
-the specified_attr method.
-
-=item specified_attr
-
-When the start handler receives lists of attributes and values, the
-non-defaulted (i.e. explicitly specified) attributes occur in the list
-first. This method returns the number of specified items in the list.
-So if this number is equal to the length of the list, there were no
-defaulted values. Otherwise the number points to the index of the
-first defaulted attribute name.
-
-=item finish
-
-Unsets all handlers (including internal ones that set context), but expat
-continues parsing to the end of the document or until it finds an error.
-It should finish up a lot faster than with the handlers set.
-
-=item release
-
-There are data structures used by XML::Parser::Expat that have circular
-references. This means that these structures will never be garbage
-collected unless these references are explicitly broken. Calling this
-method breaks those references (and makes the instance unusable.)
-
-Normally, higher level calls handle this for you, but if you are using
-XML::Parser::Expat directly, then it's your responsibility to call it.
-
-=back
-
-=head2 XML::Parser::ContentModel Methods
-
-The element declaration handlers are passed objects of this class as the
-content model of the element declaration. They also represent content
-particles, components of a content model.
-
-When referred to as a string, these objects are automagicly converted to a
-string representation of the model (or content particle).
-
-=over 4
-
-=item isempty
-
-This method returns true if the object is "EMPTY", false otherwise.
-
-=item isany
-
-This method returns true if the object is "ANY", false otherwise.
-
-=item ismixed
-
-This method returns true if the object is "(#PCDATA)" or "(#PCDATA|...)*",
-false otherwise.
-
-=item isname
-
-This method returns if the object is an element name.
-
-=item ischoice
-
-This method returns true if the object is a choice of content particles.
-
-
-=item isseq
-
-This method returns true if the object is a sequence of content particles.
-
-=item quant
-
-This method returns undef or a string representing the quantifier
-('?', '*', '+') associated with the model or particle.
-
-=item children
-
-This method returns undef or (for mixed, choice, and sequence types)
-an array of component content particles. There will always be at least
-one component for choices and sequences, but for a mixed content model
-of pure PCDATA, "(#PCDATA)", then an undef is returned.
-
-=back
-
-=head2 XML::Parser::ExpatNB Methods
-
-The class XML::Parser::ExpatNB is a subclass of XML::Parser::Expat used
-for non-blocking access to the expat library. It does not support the parse,
-parsestring, or parsefile methods, but it does have these additional methods:
-
-=over 4
-
-=item parse_more(DATA)
-
-Feed expat more text to munch on.
-
-=item parse_done
-
-Tell expat that it's gotten the whole document.
-
-=back
-
-=head1 FUNCTIONS
-
-=over 4
-
-=item XML::Parser::Expat::load_encoding(ENCODING)
-
-Load an external encoding. ENCODING is either the name of an encoding or
-the name of a file. The basename is converted to lowercase and a '.enc'
-extension is appended unless there's one already there. Then, unless
-it's an absolute pathname (i.e. begins with '/'), the first file by that
-name discovered in the @Encoding_Path path list is used.
-
-The encoding in the file is loaded and kept in the %Encoding_Table
-table. Earlier encodings of the same name are replaced.
-
-This function is automaticly called by expat when it encounters an encoding
-it doesn't know about. Expat shouldn't call this twice for the same
-encoding name. The only reason users should use this function is to
-explicitly load an encoding not contained in the @Encoding_Path list.
-
-=back
-
-=head1 AUTHORS
-
-Larry Wall <F<larry@wall.org>> wrote version 1.0.
-
-Clark Cooper <F<coopercc@netheaven.com>> picked up support, changed the API
-for this version (2.x), provided documentation, and added some standard
-package features.
-
-=cut
diff --git a/Master/perltl/site/lib/auto/Tk/Bitmap/Bitmap.dll b/Master/perltl/site/lib/auto/Tk/Bitmap/Bitmap.dll
deleted file mode 100644
index f6b75b704c5..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Bitmap/Bitmap.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/CancelRepeat.al b/Master/perltl/site/lib/auto/Tk/CancelRepeat.al
deleted file mode 100644
index 82105140755..00000000000
--- a/Master/perltl/site/lib/auto/Tk/CancelRepeat.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 405 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\CancelRepeat.al)"
-sub CancelRepeat
-{
- my $w = shift->MainWindow;
- my $id = delete $w->{_afterId_};
- $w->after('cancel',$id) if (defined $id);
-}
-
-# end of Tk::CancelRepeat
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Canvas/Canvas.dll b/Master/perltl/site/lib/auto/Tk/Canvas/Canvas.dll
deleted file mode 100644
index b6a1321a741..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Canvas/Canvas.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/Clipboard/autosplit.ix b/Master/perltl/site/lib/auto/Tk/Clipboard/autosplit.ix
deleted file mode 100644
index 360e44863af..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Clipboard/autosplit.ix
+++ /dev/null
@@ -1,6 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk/Clipboard.pm
-# (file acts as timestamp)
-package Tk::Clipboard;
-sub getSelected
-;
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Clipboard/getSelected.al b/Master/perltl/site/lib/auto/Tk/Clipboard/getSelected.al
deleted file mode 100644
index 99d70ee5d76..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Clipboard/getSelected.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Clipboard.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Clipboard;
-
-#line 103 "blib\lib\Tk/Clipboard.pm (autosplit into blib\lib\auto\Tk\Clipboard\getSelected.al)"
-sub getSelected
-{
- my $w = shift;
- my $val = Tk::catch { $w->get('sel.first','sel.last') };
- return $val;
-}
-
-1;
-# end of Tk::Clipboard::getSelected
diff --git a/Master/perltl/site/lib/auto/Tk/EnterFocus.al b/Master/perltl/site/lib/auto/Tk/EnterFocus.al
deleted file mode 100644
index 93cc88a8176..00000000000
--- a/Master/perltl/site/lib/auto/Tk/EnterFocus.al
+++ /dev/null
@@ -1,26 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 568 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\EnterFocus.al)"
-# focusFollowsMouse
-#
-# If this procedure is invoked, Tk will enter "focus-follows-mouse"
-# mode, where the focus is always on whatever window contains the
-# mouse. If this procedure isn't invoked, then the user typically
-# has to click on a window to give it the focus.
-#
-# Arguments:
-# None.
-
-sub EnterFocus
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- my $d = $Ev->d;
- $w->Tk::focus() if ($d eq 'NotifyAncestor' || $d eq 'NotifyNonlinear' || $d eq 'NotifyInferior');
-}
-
-# end of Tk::EnterFocus
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Entry/Entry.dll b/Master/perltl/site/lib/auto/Tk/Entry/Entry.dll
deleted file mode 100644
index dd36353deef..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Entry/Entry.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/Error.al b/Master/perltl/site/lib/auto/Tk/Error.al
deleted file mode 100644
index 4d4f06dc941..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Error.al
+++ /dev/null
@@ -1,20 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 393 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\Error.al)"
-sub Error
-{my $w = shift;
- my $error = shift;
- if (Exists($w))
- {
- my $grab = $w->grab('current');
- $grab->Unbusy if (defined $grab);
- }
- chomp($error);
- warn "Tk::Error: $error\n " . join("\n ",@_)."\n";
-}
-
-# end of Tk::Error
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Event/Event.dll b/Master/perltl/site/lib/auto/Tk/Event/Event.dll
deleted file mode 100644
index 2339002b71b..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Event/Event.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/FirstMenu.al b/Master/perltl/site/lib/auto/Tk/FirstMenu.al
deleted file mode 100644
index c5e12b684e7..00000000000
--- a/Master/perltl/site/lib/auto/Tk/FirstMenu.al
+++ /dev/null
@@ -1,21 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 615 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\FirstMenu.al)"
-# tkFirstMenu --
-# This procedure traverses to the first menubutton in the toplevel
-# for a given window, and posts that menubutton's menu.
-#
-# Arguments:
-# w - Name of a window. Selects which toplevel
-# to search for menubuttons.
-sub FirstMenu
-{
- my $w = shift;
- $w = $w->toplevel->FindMenu('');
-}
-
-# end of Tk::FirstMenu
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/FocusChildren.al b/Master/perltl/site/lib/auto/Tk/FocusChildren.al
deleted file mode 100644
index f6d8f6af753..00000000000
--- a/Master/perltl/site/lib/auto/Tk/FocusChildren.al
+++ /dev/null
@@ -1,35 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 422 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\FocusChildren.al)"
-#----------------------------------------------------------------------------
-# focus.tcl --
-#
-# This file defines several procedures for managing the input
-# focus.
-#
-# @(#) focus.tcl 1.6 94/12/19 17:06:46
-#
-# Copyright (c) 1994 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-sub FocusChildren { shift->children }
-
-#
-# focusNext --
-# This procedure is invoked to move the input focus to the next window
-# after a given one. "Next" is defined in terms of the window
-# stacking order, with all the windows underneath a given top-level
-# (no matter how deeply nested in the hierarchy) considered except
-# for frames and toplevels.
-#
-# Arguments:
-# w - Name of a window: the procedure will set the focus
-# to the next window after this one in the traversal
-# order.
-# end of Tk::FocusChildren
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/FocusOK.al b/Master/perltl/site/lib/auto/Tk/FocusOK.al
deleted file mode 100644
index bffeffba8f4..00000000000
--- a/Master/perltl/site/lib/auto/Tk/FocusOK.al
+++ /dev/null
@@ -1,33 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 542 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\FocusOK.al)"
-sub FocusOK
-{
- my $w = shift;
- my $value;
- catch { $value = $w->cget('-takefocus') };
- if (!$@ && defined($value))
- {
- return 0 if ($value eq '0');
- return $w->viewable if ($value eq '1');
- $value = $w->$value();
- return $value if (defined $value);
- }
- if (!$w->viewable)
- {
- return 0;
- }
- catch { $value = $w->cget('-state') } ;
- if (!$@ && defined($value) && $value eq 'disabled')
- {
- return 0;
- }
- $value = grep(/Key|Focus/,$w->Tk::bind(),$w->Tk::bind(ref($w)));
- return $value;
-}
-
-# end of Tk::FocusOK
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/AddScrollbars.al b/Master/perltl/site/lib/auto/Tk/Frame/AddScrollbars.al
deleted file mode 100644
index ef3b7537d6e..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/AddScrollbars.al
+++ /dev/null
@@ -1,52 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 221 "blib\lib\Tk/Frame.pm (autosplit into blib\lib\auto\Tk\Frame\AddScrollbars.al)"
-sub AddScrollbars
-{
- require Tk::Scrollbar;
- my ($cw,$w) = @_;
- my $def = '';
- my ($x,$y) = ('','');
- my $s = 0;
- my $c;
- $cw->freeze_on_map;
- foreach $c ($w->configure)
- {
- my $opt = $c->[0];
- if ($opt eq '-yscrollcommand')
- {
- my $slice = Tk::Frame->new($cw,Name => 'ysbslice');
- my $ysb = Tk::Scrollbar->new($slice,-orient => 'vertical', -command => [ 'yview', $w ]);
- my $size = $ysb->cget('-width');
- my $corner = Tk::Frame->new($slice,Name=>'corner','-relief' => 'raised',
- '-width' => $size, '-height' => $size);
- $ysb->pack(-side => 'left', -fill => 'y');
- $cw->Advertise('yscrollbar' => $ysb);
- $cw->Advertise('corner' => $corner);
- $cw->Advertise('ysbslice' => $slice);
- $corner->{'before'} = $ysb->PathName;
- $slice->{'before'} = $w->PathName;
- $y = 'w';
- $s = 1;
- }
- elsif ($opt eq '-xscrollcommand')
- {
- my $xsb = Tk::Scrollbar->new($cw,-orient => 'horizontal', -command => [ 'xview', $w ]);
- $cw->Advertise('xscrollbar' => $xsb);
- $xsb->{'before'} = $w->PathName;
- $x = 's';
- $s = 1;
- }
- }
- if ($s)
- {
- $cw->Advertise('scrolled' => $w);
- $cw->ConfigSpecs('-scrollbars' => ['METHOD','scrollbars','Scrollbars',$x.$y]);
- }
-}
-
-# end of Tk::Frame::AddScrollbars
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/FindMenu.al b/Master/perltl/site/lib/auto/Tk/Frame/FindMenu.al
deleted file mode 100644
index b82a61da507..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/FindMenu.al
+++ /dev/null
@@ -1,22 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 359 "blib\lib\Tk/Frame.pm (autosplit into blib\lib\auto\Tk\Frame\FindMenu.al)"
-sub FindMenu
-{
- my ($w,$char) = @_;
- my $child;
- my $match;
- foreach $child ($w->children)
- {
- next unless (ref $child);
- $match = $child->FindMenu($char);
- return $match if (defined $match);
- }
- return undef;
-}
-
-1;
-# end of Tk::Frame::FindMenu
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/autosplit.ix b/Master/perltl/site/lib/auto/Tk/Frame/autosplit.ix
deleted file mode 100644
index 670cd9eb1c4..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/autosplit.ix
+++ /dev/null
@@ -1,24 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk/Frame.pm
-# (file acts as timestamp)
-package Tk::Frame;
-sub labelPack
-;
-sub labelVariable
-;
-sub label
-;
-sub queuePack
-;
-sub sbset
-;
-sub freeze_on_map
-;
-sub AddScrollbars
-;
-sub packscrollbars
-;
-sub scrollbars
-;
-sub FindMenu
-;
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/freeze_on_map.al b/Master/perltl/site/lib/auto/Tk/Frame/freeze_on_map.al
deleted file mode 100644
index 61697e647fb..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/freeze_on_map.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 211 "blib\lib\Tk/Frame.pm (autosplit into blib\lib\auto\Tk\Frame\freeze_on_map.al)"
-sub freeze_on_map
-{
- my ($w) = @_;
- unless ($w->Tk::bind('Freeze','<Map>'))
- {
- $w->Tk::bind('Freeze','<Map>',['packPropagate' => 0])
- }
- $w->AddBindTag('Freeze');
-}
-
-# end of Tk::Frame::freeze_on_map
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/label.al b/Master/perltl/site/lib/auto/Tk/Frame/label.al
deleted file mode 100644
index 3196344c9b8..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/label.al
+++ /dev/null
@@ -1,24 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 178 "blib\lib\Tk/Frame.pm (autosplit into blib\lib\auto\Tk\Frame\label.al)"
-sub label
-{
- my ($cw,$val) = @_;
- my $var = $cw->cget('-labelVariable');
- if (@_ > 1 && defined $val)
- {
- if (!defined $var)
- {
- $var = \$cw->{Configure}{'-label'};
- $cw->labelVariable($var);
- }
- $$var = $val;
- }
- return (defined $var) ? $$var : undef;;
-}
-
-# end of Tk::Frame::label
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/labelPack.al b/Master/perltl/site/lib/auto/Tk/Frame/labelPack.al
deleted file mode 100644
index 1dd66963088..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/labelPack.al
+++ /dev/null
@@ -1,50 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 117 "blib\lib\Tk/Frame.pm (autosplit into blib\lib\auto\Tk\Frame\labelPack.al)"
-sub labelPack
-{
- my ($cw,$val) = @_;
- my $w = $cw->Subwidget('label');
- my @result = ();
- if (@_ > 1)
- {
- if (defined($w) && !defined($val))
- {
- $w->packForget;
- }
- elsif (defined($val) && !defined ($w))
- {
- require Tk::Label;
- $w = Tk::Label->new($cw,-textvariable => $cw->labelVariable);
- $cw->Advertise('label' => $w);
- $cw->ConfigDelegate('label',qw(-text -textvariable));
- }
- if (defined($val) && defined($w))
- {
- my %pack = @$val;
- unless (exists $pack{-side})
- {
- $pack{-side} = 'top' unless (exists $pack{-side});
- }
- unless (exists $pack{-fill})
- {
- $pack{-fill} = 'x' if ($pack{-side} =~ /(top|bottom)/);
- $pack{-fill} = 'y' if ($pack{-side} =~ /(left|right)/);
- }
- unless (exists($pack{'-before'}) || exists($pack{'-after'}))
- {
- my $before = ($cw->packSlaves)[0];
- $pack{'-before'} = $before if (defined $before);
- }
- $w->pack(%pack);
- }
- }
- @result = $w->packInfo if (defined $w);
- return (wantarray) ? @result : \@result;
-}
-
-# end of Tk::Frame::labelPack
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/labelVariable.al b/Master/perltl/site/lib/auto/Tk/Frame/labelVariable.al
deleted file mode 100644
index 6a068e32873..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/labelVariable.al
+++ /dev/null
@@ -1,27 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 159 "blib\lib\Tk/Frame.pm (autosplit into blib\lib\auto\Tk\Frame\labelVariable.al)"
-sub labelVariable
-{
- my ($cw,$val) = @_;
- my $var = \$cw->{Configure}{'-labelVariable'};
- if (@_ > 1 && defined $val)
- {
- $$var = $val;
- $$val = '' unless (defined $$val);
- my $w = $cw->Subwidget('label');
- unless (defined $w)
- {
- $cw->labelPack([]);
- $w = $cw->Subwidget('label');
- }
- $w->configure(-textvariable => $val);
- }
- return $$var;
-}
-
-# end of Tk::Frame::labelVariable
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/packscrollbars.al b/Master/perltl/site/lib/auto/Tk/Frame/packscrollbars.al
deleted file mode 100644
index 54c59d5bcf2..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/packscrollbars.al
+++ /dev/null
@@ -1,86 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 265 "blib\lib\Tk/Frame.pm (autosplit into blib\lib\auto\Tk\Frame\packscrollbars.al)"
-sub packscrollbars
-{
- my ($cw) = @_;
- my $opt = $cw->cget('-scrollbars');
- my $slice = $cw->Subwidget('ysbslice');
- my $xsb = $cw->Subwidget('xscrollbar');
- my $corner = $cw->Subwidget('corner');
- my $w = $cw->Subwidget('scrolled');
- my $xside = (($opt =~ /n/) ? 'top' : 'bottom');
- my $havex = 0;
- my $havey = 0;
- $opt =~ s/r//;
- $cw->{'pack_pending'} = 0;
- if (defined $slice)
- {
- my $reqy;
- my $ysb = $cw->Subwidget('yscrollbar');
- if ($opt =~ /(o)?[we]/ && (($reqy = !defined($1)) || $ysb->Needed))
- {
- my $yside = (($opt =~ /w/) ? 'left' : 'right');
- $slice->pack(-side => $yside, -fill => 'y',-before => $slice->{'before'});
- $havey = 1;
- if ($reqy)
- {
- $w->configure(-yscrollcommand => ['set', $ysb]);
- }
- else
- {
- $w->configure(-yscrollcommand => ['sbset', $cw, $ysb, \$cw->{'packysb'}]);
- }
- }
- else
- {
- $w->configure(-yscrollcommand => undef) unless $opt =~ s/[we]//;
- $slice->packForget;
- }
- $cw->{'packysb'} = $havey;
- }
- if (defined $xsb)
- {
- my $reqx;
- if ($opt =~ /(o)?[ns]/ && (($reqx = !defined($1)) || $xsb->Needed))
- {
- $xsb->pack(-side => $xside, -fill => 'x',-before => $xsb->{'before'});
- $havex = 1;
- if ($reqx)
- {
- $w->configure(-xscrollcommand => ['set', $xsb]);
- }
- else
- {
- $w->configure(-xscrollcommand => ['sbset', $cw, $xsb, \$cw->{'packxsb'}]);
- }
- }
- else
- {
- $w->configure(-xscrollcommand => undef) unless $opt =~ s/[ns]//;
- $xsb->packForget;
- }
- $cw->{'packxsb'} = $havex;
- }
- if (defined $corner)
- {
- if ($havex && $havey && defined $corner->{'before'})
- {
- my $anchor = $opt;
- $anchor =~ s/o//g;
- $corner->configure(-height => $xsb->ReqHeight);
- $corner->pack(-before => $corner->{'before'}, -side => $xside,
- -anchor => $anchor, -fill => 'x');
- }
- else
- {
- $corner->packForget;
- }
- }
-}
-
-# end of Tk::Frame::packscrollbars
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/queuePack.al b/Master/perltl/site/lib/auto/Tk/Frame/queuePack.al
deleted file mode 100644
index a8a24927d8c..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/queuePack.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 194 "blib\lib\Tk/Frame.pm (autosplit into blib\lib\auto\Tk\Frame\queuePack.al)"
-sub queuePack
-{
- my ($cw) = @_;
- unless ($cw->{'pack_pending'})
- {
- $cw->{'pack_pending'} = 1;
- $cw->afterIdle([$cw,'packscrollbars']);
- }
-}
-
-# end of Tk::Frame::queuePack
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/sbset.al b/Master/perltl/site/lib/auto/Tk/Frame/sbset.al
deleted file mode 100644
index 357fcfd4a4e..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/sbset.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 204 "blib\lib\Tk/Frame.pm (autosplit into blib\lib\auto\Tk\Frame\sbset.al)"
-sub sbset
-{
- my ($cw,$sb,$ref,@args) = @_;
- $sb->set(@args);
- $cw->queuePack if (@args == 2 && $sb->Needed != $$ref);
-}
-
-# end of Tk::Frame::sbset
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Frame/scrollbars.al b/Master/perltl/site/lib/auto/Tk/Frame/scrollbars.al
deleted file mode 100644
index 2a4706eb198..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Frame/scrollbars.al
+++ /dev/null
@@ -1,24 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Frame.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Frame;
-
-#line 343 "blib\lib\Tk/Frame.pm (autosplit into blib\lib\auto\Tk\Frame\scrollbars.al)"
-sub scrollbars
-{
- my ($cw,$opt) = @_;
- my $var = \$cw->{'-scrollbars'};
- if (@_ > 1)
- {
- my $old = $$var;
- if (!defined $old || $old ne $opt)
- {
- $$var = $opt;
- $cw->queuePack;
- }
- }
- return $$var;
-}
-
-# end of Tk::Frame::scrollbars
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/ImageNames.al b/Master/perltl/site/lib/auto/Tk/ImageNames.al
deleted file mode 100644
index 2a4bd24818a..00000000000
--- a/Master/perltl/site/lib/auto/Tk/ImageNames.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 667 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\ImageNames.al)"
-sub ImageNames
-{
- image('names');
-}
-
-# end of Tk::ImageNames
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/ImageTypes.al b/Master/perltl/site/lib/auto/Tk/ImageTypes.al
deleted file mode 100644
index 0f9b8be674a..00000000000
--- a/Master/perltl/site/lib/auto/Tk/ImageTypes.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 672 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\ImageTypes.al)"
-sub ImageTypes
-{
- image('types');
-}
-
-# end of Tk::ImageTypes
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/AutoScan.al b/Master/perltl/site/lib/auto/Tk/Listbox/AutoScan.al
deleted file mode 100644
index e366618df81..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/AutoScan.al
+++ /dev/null
@@ -1,48 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 634 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\AutoScan.al)"
-# AutoScan --
-# This procedure is invoked when the mouse leaves an entry window
-# with button 1 down. It scrolls the window up, down, left, or
-# right, depending on where the mouse left the window, and reschedules
-# itself as an "after" command so that the window continues to scroll until
-# the mouse moves back into the window or the mouse button is released.
-#
-# Arguments:
-# w - The entry window.
-# x - The x-coordinate of the mouse when it left the window.
-# y - The y-coordinate of the mouse when it left the window.
-sub AutoScan
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- if ($y >= $w->height)
- {
- $w->yview('scroll',1,'units')
- }
- elsif ($y < 0)
- {
- $w->yview('scroll',-1,'units')
- }
- elsif ($x >= $w->width)
- {
- $w->xview('scroll',2,'units')
- }
- elsif ($x < 0)
- {
- $w->xview('scroll',-2,'units')
- }
- else
- {
- return;
- }
- $w->Motion($w->index("@" . $x . ',' . $y));
- $w->RepeatId($w->after(50,'AutoScan',$w,$x,$y));
-}
-
-# end of Tk::Listbox::AutoScan
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/BeginExtend.al b/Master/perltl/site/lib/auto/Tk/Listbox/BeginExtend.al
deleted file mode 100644
index ad3fe4c6d33..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/BeginExtend.al
+++ /dev/null
@@ -1,29 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 584 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\BeginExtend.al)"
-# BeginExtend --
-#
-# This procedure is typically invoked on shift-button-1 presses. It
-# begins the process of extending a selection in the listbox. Its
-# exact behavior depends on the selection mode currently in effect
-# for the listbox; see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginExtend
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'extended' && $w->selectionIncludes('anchor'))
- {
- $w->Motion($el)
- }
-}
-
-# end of Tk::Listbox::BeginExtend
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/BeginSelect.al b/Master/perltl/site/lib/auto/Tk/Listbox/BeginSelect.al
deleted file mode 100644
index b29359c70c5..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/BeginSelect.al
+++ /dev/null
@@ -1,45 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 491 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\BeginSelect.al)"
-# BeginSelect --
-#
-# This procedure is typically invoked on button-1 presses. It begins
-# the process of making a selection in the listbox. Its exact behavior
-# depends on the selection mode currently in effect for the listbox;
-# see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginSelect
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'multiple')
- {
- if ($w->selectionIncludes($el))
- {
- $w->selectionClear($el)
- }
- else
- {
- $w->selectionSet($el)
- }
- }
- else
- {
- $w->selectionClear(0,'end');
- $w->selectionSet($el);
- $w->selectionAnchor($el);
- @Selection = ();
- $Prev = $el
- }
- $w->focus if ($w->cget('-takefocus'));
-}
-
-# end of Tk::Listbox::BeginSelect
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/BeginToggle.al b/Master/perltl/site/lib/auto/Tk/Listbox/BeginToggle.al
deleted file mode 100644
index 3f7ddff4cf9..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/BeginToggle.al
+++ /dev/null
@@ -1,39 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 604 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\BeginToggle.al)"
-# BeginToggle --
-#
-# This procedure is typically invoked on control-button-1 presses. It
-# begins the process of toggling a selection in the listbox. Its
-# exact behavior depends on the selection mode currently in effect
-# for the listbox; see the Motif documentation for details.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element for the selection operation (typically the
-# one under the pointer). Must be in numerical form.
-sub BeginToggle
-{
- my $w = shift;
- my $el = shift;
- if ($w->cget('-selectmode') eq 'extended')
- {
- @Selection = $w->curselection();
- $Prev = $el;
- $w->selectionAnchor($el);
- if ($w->selectionIncludes($el))
- {
- $w->selectionClear($el)
- }
- else
- {
- $w->selectionSet($el)
- }
- }
-}
-
-# end of Tk::Listbox::BeginToggle
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/ButtonRelease_1.al b/Master/perltl/site/lib/auto/Tk/Listbox/ButtonRelease_1.al
deleted file mode 100644
index 7461080092f..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/ButtonRelease_1.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 450 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\ButtonRelease_1.al)"
-sub ButtonRelease_1
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->CancelRepeat;
- $w->activate($Ev->xy);
-}
-
-# end of Tk::Listbox::ButtonRelease_1
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/Cancel.al b/Master/perltl/site/lib/auto/Tk/Listbox/Cancel.al
deleted file mode 100644
index 3974c2e145c..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/Cancel.al
+++ /dev/null
@@ -1,43 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 754 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Cancel.al)"
-# Cancel
-#
-# This procedure is invoked to cancel an extended selection in
-# progress. If there is an extended selection in progress, it
-# restores all of the items between the active one and the anchor
-# to their previous selection state.
-#
-# Arguments:
-# w - The listbox widget.
-sub Cancel
-{
- my $w = shift;
- if ($w->cget('-selectmode') ne 'extended' || !defined $Prev)
- {
- return;
- }
- $first = $w->index('anchor');
- $last = $Prev;
- if ($first > $last)
- {
- $tmp = $first;
- $first = $last;
- $last = $tmp
- }
- $w->selectionClear($first,$last);
- while ($first <= $last)
- {
- if (Tk::lsearch(\@Selection,$first) >= 0)
- {
- $w->selectionSet($first)
- }
- $first += 1
- }
-}
-
-# end of Tk::Listbox::Cancel
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_End.al b/Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_End.al
deleted file mode 100644
index de53c8048aa..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_End.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 470 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Cntrl_End.al)"
-sub Cntrl_End
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->activate('end');
- $w->see('end');
- $w->selectionClear(0,'end');
- $w->selectionSet('end')
-}
-
-# end of Tk::Listbox::Cntrl_End
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_Home.al b/Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_Home.al
deleted file mode 100644
index 34f09d21bb9..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_Home.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 459 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Cntrl_Home.al)"
-sub Cntrl_Home
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- $w->activate(0);
- $w->see(0);
- $w->selectionClear(0,'end');
- $w->selectionSet(0)
-}
-
-# end of Tk::Listbox::Cntrl_Home
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_backslash.al b/Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_backslash.al
deleted file mode 100644
index 382a68528a8..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/Cntrl_backslash.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 481 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Cntrl_backslash.al)"
-sub Cntrl_backslash
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- if ($w->cget('-selectmode') ne 'browse')
- {
- $w->selectionClear(0,'end');
- }
-}
-
-# end of Tk::Listbox::Cntrl_backslash
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/DataExtend.al b/Master/perltl/site/lib/auto/Tk/Listbox/DataExtend.al
deleted file mode 100644
index fdeb0368bba..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/DataExtend.al
+++ /dev/null
@@ -1,39 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 724 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\DataExtend.al)"
-# DataExtend
-#
-# This procedure is called for key-presses such as Shift-KEndData.
-# If the selection mode isn't multiple or extend then it does nothing.
-# Otherwise it moves the active element to el and, if we're in
-# extended mode, extends the selection to that point.
-#
-# Arguments:
-# w - The listbox widget.
-# el - An integer element number.
-sub DataExtend
-{
- my $w = shift;
- my $el = shift;
- $mode = $w->cget('-selectmode');
- if ($mode eq 'extended')
- {
- $w->activate($el);
- $w->see($el);
- if ($w->selectionIncludes('anchor'))
- {
- $w->Motion($el)
- }
- }
- elsif ($mode eq 'multiple')
- {
- $w->activate($el);
- $w->see($el)
- }
-}
-
-# end of Tk::Listbox::DataExtend
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/ExtendUpDown.al b/Master/perltl/site/lib/auto/Tk/Listbox/ExtendUpDown.al
deleted file mode 100644
index 9c21c0a93a1..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/ExtendUpDown.al
+++ /dev/null
@@ -1,30 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 703 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\ExtendUpDown.al)"
-# ExtendUpDown --
-#
-# Does nothing unless we're in extended selection mode; in this
-# case it moves the location cursor (active element) up or down by
-# one element, and extends the selection to that point.
-#
-# Arguments:
-# w - The listbox widget.
-# amount - +1 to move down one item, -1 to move back one item.
-sub ExtendUpDown
-{
- my $w = shift;
- my $amount = shift;
- if ($w->cget('-selectmode') ne 'extended')
- {
- return;
- }
- $w->activate($w->index('active')+$amount);
- $w->see('active');
- $w->Motion($w->index('active'))
-}
-
-# end of Tk::Listbox::ExtendUpDown
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/Listbox.dll b/Master/perltl/site/lib/auto/Tk/Listbox/Listbox.dll
deleted file mode 100644
index de4907125a9..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/Listbox.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/Motion.al b/Master/perltl/site/lib/auto/Tk/Listbox/Motion.al
deleted file mode 100644
index d67ec8121d9..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/Motion.al
+++ /dev/null
@@ -1,66 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 527 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Motion.al)"
-# Motion --
-#
-# This procedure is called to process mouse motion events while
-# button 1 is down. It may move or extend the selection, depending
-# on the listbox's selection mode.
-#
-# Arguments:
-# w - The listbox widget.
-# el - The element under the pointer (must be a number).
-sub Motion
-{
- my $w = shift;
- my $el = shift;
- if (defined($Prev) && $el == $Prev)
- {
- return;
- }
- $anchor = $w->index('anchor');
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet($el);
- $Prev = $el;
- }
- elsif ($mode eq 'extended')
- {
- $i = $Prev;
- if ($w->selectionIncludes('anchor'))
- {
- $w->selectionClear($i,$el);
- $w->selectionSet('anchor',$el)
- }
- else
- {
- $w->selectionClear($i,$el);
- $w->selectionClear('anchor',$el)
- }
- while ($i < $el && $i < $anchor)
- {
- if (Tk::lsearch(\@Selection,$i) >= 0)
- {
- $w->selectionSet($i)
- }
- $i += 1
- }
- while ($i > $el && $i > $anchor)
- {
- if (Tk::lsearch(\@Selection,$i) >= 0)
- {
- $w->selectionSet($i)
- }
- $i += -1
- }
- $Prev = $el
- }
-}
-
-# end of Tk::Listbox::Motion
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/SelectAll.al b/Master/perltl/site/lib/auto/Tk/Listbox/SelectAll.al
deleted file mode 100644
index 319ce5c2a9c..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/SelectAll.al
+++ /dev/null
@@ -1,31 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 788 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\SelectAll.al)"
-# SelectAll
-#
-# This procedure is invoked to handle the "select all" operation.
-# For single and browse mode, it just selects the active element.
-# Otherwise it selects everything in the widget.
-#
-# Arguments:
-# w - The listbox widget.
-sub SelectAll
-{
- my $w = shift;
- my $mode = $w->cget('-selectmode');
- if ($mode eq 'single' || $mode eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active')
- }
- else
- {
- $w->selectionSet(0,'end')
- }
-}
-
-# end of Tk::Listbox::SelectAll
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/SetList.al b/Master/perltl/site/lib/auto/Tk/Listbox/SetList.al
deleted file mode 100644
index 5f4ba81ddf3..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/SetList.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 811 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\SetList.al)"
-sub SetList
-{
- my $w = shift;
- $w->delete(0,'end');
- $w->insert('end',@_);
-}
-
-# end of Tk::Listbox::SetList
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/UpDown.al b/Master/perltl/site/lib/auto/Tk/Listbox/UpDown.al
deleted file mode 100644
index e2ce7edce78..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/UpDown.al
+++ /dev/null
@@ -1,39 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 673 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\UpDown.al)"
-# UpDown --
-#
-# Moves the location cursor (active element) up or down by one element,
-# and changes the selection if we're in browse or extended selection
-# mode.
-#
-# Arguments:
-# w - The listbox widget.
-# amount - +1 to move down one item, -1 to move back one item.
-sub UpDown
-{
- my $w = shift;
- my $amount = shift;
- $w->activate($w->index('active')+$amount);
- $w->see('active');
- $LNet__0 = $w->cget('-selectmode');
- if ($LNet__0 eq 'browse')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active')
- }
- elsif ($LNet__0 eq 'extended')
- {
- $w->selectionClear(0,'end');
- $w->selectionSet('active');
- $w->selectionAnchor('active');
- $Prev = $w->index('active');
- @Selection = ();
- }
-}
-
-# end of Tk::Listbox::UpDown
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/autosplit.ix b/Master/perltl/site/lib/auto/Tk/Listbox/autosplit.ix
deleted file mode 100644
index 5846f38c4ce..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/autosplit.ix
+++ /dev/null
@@ -1,42 +0,0 @@
-# Index created by AutoSplit for ..\blib\lib\Tk\Listbox.pm
-# (file acts as timestamp)
-package Tk::Listbox;
-sub xyIndex
-;
-sub ButtonRelease_1
-;
-sub Cntrl_Home
-;
-sub Cntrl_End
-;
-sub Cntrl_backslash
-;
-sub BeginSelect
-;
-sub Motion
-;
-sub BeginExtend
-;
-sub BeginToggle
-;
-sub AutoScan
-;
-sub UpDown
-;
-sub ExtendUpDown
-;
-sub DataExtend
-;
-sub Cancel
-;
-sub SelectAll
-;
-sub SetList
-;
-sub deleteSelected
-;
-sub clipboardPaste
-;
-sub getSelected
-;
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/clipboardPaste.al b/Master/perltl/site/lib/auto/Tk/Listbox/clipboardPaste.al
deleted file mode 100644
index 7deae1e75a4..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/clipboardPaste.al
+++ /dev/null
@@ -1,21 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 828 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\clipboardPaste.al)"
-sub clipboardPaste
-{
- my $w = shift;
- my $index = $w->index('active') || $w->index($w->XEvent->xy);
- my $str;
- eval {local $SIG{__DIE__}; $str = $w->clipboardGet };
- return if $@;
- foreach (split("\n",$str))
- {
- $w->insert($index++,$_);
- }
-}
-
-# end of Tk::Listbox::clipboardPaste
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/deleteSelected.al b/Master/perltl/site/lib/auto/Tk/Listbox/deleteSelected.al
deleted file mode 100644
index 6fc89af9e91..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/deleteSelected.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 818 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\deleteSelected.al)"
-sub deleteSelected
-{
- my $w = shift;
- my $i;
- foreach $i (reverse $w->curselection)
- {
- $w->delete($i);
- }
-}
-
-# end of Tk::Listbox::deleteSelected
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/getSelected.al b/Master/perltl/site/lib/auto/Tk/Listbox/getSelected.al
deleted file mode 100644
index 64706cfa9b4..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/getSelected.al
+++ /dev/null
@@ -1,22 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 841 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\getSelected.al)"
-sub getSelected
-{
- my ($w) = @_;
- my $i;
- my (@result) = ();
- foreach $i ($w->curselection)
- {
- push(@result,$w->get($i));
- }
- return (wantarray) ? @result : $result[0];
-}
-
-1;
-__END__
-1;
-# end of Tk::Listbox::getSelected
diff --git a/Master/perltl/site/lib/auto/Tk/Listbox/xyIndex.al b/Master/perltl/site/lib/auto/Tk/Listbox/xyIndex.al
deleted file mode 100644
index bfd364a7f9b..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Listbox/xyIndex.al
+++ /dev/null
@@ -1,27 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Listbox;
-
-#line 431 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\xyIndex.al)"
-#
-# Bind --
-# This procedure is invoked the first time the mouse enters a listbox
-# widget or a listbox widget receives the input focus. It creates
-# all of the class bindings for listboxes.
-#
-# Arguments:
-# event - Indicates which event caused the procedure to be invoked
-# (Enter or FocusIn). It is used so that we can carry out
-# the functions of that event in addition to setting up
-# bindings.
-
-sub xyIndex
-{
- my $w = shift;
- my $Ev = $w->XEvent;
- return $w->index($Ev->xy);
-}
-
-# end of Tk::Listbox::xyIndex
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Menubutton/Menubutton.dll b/Master/perltl/site/lib/auto/Tk/Menubutton/Menubutton.dll
deleted file mode 100644
index f05f347cc8b..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Menubutton/Menubutton.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/Pixmap/Pixmap.dll b/Master/perltl/site/lib/auto/Tk/Pixmap/Pixmap.dll
deleted file mode 100644
index 0e887aaefc3..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Pixmap/Pixmap.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/Receive.al b/Master/perltl/site/lib/auto/Tk/Receive.al
deleted file mode 100644
index e33b6bdc1af..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Receive.al
+++ /dev/null
@@ -1,23 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 638 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\Receive.al)"
-# If we have sub Clipboard in Tk then use base qw(Tk::Clipboard ....)
-# calls it when it does its eval "require $base"
-#sub Clipboard
-#{my $w = shift;
-# my $cmd = shift;
-# croak "Use clipboard\u$cmd()";
-#}
-
-sub Receive
-{
- my $w = shift;
- warn 'Receive(' . join(',',@_) .')';
- die 'Tk rejects send(' . join(',',@_) .")\n";
-}
-
-# end of Tk::Receive
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/RepeatId.al b/Master/perltl/site/lib/auto/Tk/RepeatId.al
deleted file mode 100644
index 06728f02221..00000000000
--- a/Master/perltl/site/lib/auto/Tk/RepeatId.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 412 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\RepeatId.al)"
-sub RepeatId
-{
- my ($w,$id) = @_;
- $w = $w->MainWindow;
- $w->CancelRepeat;
- $w->{_afterId_} = $id;
-}
-
-# end of Tk::RepeatId
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/Activate.al b/Master/perltl/site/lib/auto/Tk/Scale/Activate.al
deleted file mode 100644
index 500358c8e0e..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/Activate.al
+++ /dev/null
@@ -1,33 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 86 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\Activate.al)"
-# Activate --
-# This procedure is invoked to check a given x-y position in the
-# scale and activate the slider if the x-y position falls within
-# the slider.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates.
-sub Activate
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- return if ($w->cget('-state') eq 'disabled');
- my $ident = $w->identify($x,$y);
- if (defined($ident) && $ident eq 'slider')
- {
- $w->configure(-state => 'active')
- }
- else
- {
- $w->configure(-state => 'normal')
- }
-}
-
-# end of Tk::Scale::Activate
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/ButtonDown.al b/Master/perltl/site/lib/auto/Tk/Scale/ButtonDown.al
deleted file mode 100644
index 61ed6f32c11..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/ButtonDown.al
+++ /dev/null
@@ -1,40 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 138 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\ButtonDown.al)"
-# ButtonDown --
-# This procedure is invoked when a button is pressed in a scale. It
-# takes different actions depending on where the button was pressed.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates of button press.
-sub ButtonDown
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- $Tk::dragging = 0;
- $el = $w->identify($x,$y);
- return unless ($el);
- if ($el eq 'trough1')
- {
- $w->Increment('up','little','initial')
- }
- elsif ($el eq 'trough2')
- {
- $w->Increment('down','little','initial')
- }
- elsif ($el eq 'slider')
- {
- $Tk::dragging = 1;
- my @coords = $w->coords();
- $Tk::deltaX = $x-$coords[0];
- $Tk::deltaY = $y-$coords[1];
- }
-}
-
-# end of Tk::Scale::ButtonDown
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/ButtonUp.al b/Master/perltl/site/lib/auto/Tk/Scale/ButtonUp.al
deleted file mode 100644
index d5a22a77a46..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/ButtonUp.al
+++ /dev/null
@@ -1,16 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 129 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\ButtonUp.al)"
-sub ButtonUp
-{
- my ($w,$x,$y) = @_;
- $w->CancelRepeat();
- $w->EndDrag();
- $w->Activate($x,$y)
-}
-
-# end of Tk::Scale::ButtonUp
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/ControlPress.al b/Master/perltl/site/lib/auto/Tk/Scale/ControlPress.al
deleted file mode 100644
index 50d7ad8b447..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/ControlPress.al
+++ /dev/null
@@ -1,31 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 255 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\ControlPress.al)"
-# ControlPress --
-# This procedure handles button presses that are made with the Control
-# key down. Depending on the mouse position, it adjusts the scale
-# value to one end of the range or the other.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates where the button was pressed.
-sub ControlPress
-{
- my ($w,$x,$y) = @_;
- my $el = $w->identify($x,$y);
- return unless ($el);
- if ($el eq 'trough1')
- {
- $w->set($w->cget('-from'))
- }
- elsif ($el eq 'trough2')
- {
- $w->set($w->cget('-to'))
- }
-}
-
-1;
-# end of Tk::Scale::ControlPress
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/Drag.al b/Master/perltl/site/lib/auto/Tk/Scale/Drag.al
deleted file mode 100644
index 0bc63b12879..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/Drag.al
+++ /dev/null
@@ -1,29 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 169 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\Drag.al)"
-# Drag --
-# This procedure is called when the mouse is dragged with
-# mouse button 1 down. If the drag started inside the slider
-# (i.e. the scale is active) then the scale's value is adjusted
-# to reflect the mouse's position.
-#
-# Arguments:
-# w - The scale widget.
-# x, y - Mouse coordinates.
-sub Drag
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- if (!$Tk::dragging)
- {
- return;
- }
- $w->set($w->get($x-$Tk::deltaX,$y-$Tk::deltaY))
-}
-
-# end of Tk::Scale::Drag
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/EndDrag.al b/Master/perltl/site/lib/auto/Tk/Scale/EndDrag.al
deleted file mode 100644
index 86037b86d92..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/EndDrag.al
+++ /dev/null
@@ -1,23 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 189 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\EndDrag.al)"
-# EndDrag --
-# This procedure is called to end an interactive drag of the
-# slider. It just marks the drag as over.
-# Arguments:
-# w - The scale widget.
-sub EndDrag
-{
- my $w = shift;
- if (!$Tk::dragging)
- {
- return;
- }
- $Tk::dragging = 0;
-}
-
-# end of Tk::Scale::EndDrag
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/Enter.al b/Master/perltl/site/lib/auto/Tk/Scale/Enter.al
deleted file mode 100644
index 1326a5ed9a0..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/Enter.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 118 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\Enter.al)"
-sub Enter
-{
- my ($w,$x,$y) = @_;
- if ($Tk::strictMotif)
- {
- $w->{'activeBg'} = $w->cget('-activebackground');
- $w->configure('-activebackground',$w->cget('-background'));
- }
- $w->Activate($x,$y);
-}
-
-# end of Tk::Scale::Enter
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/Increment.al b/Master/perltl/site/lib/auto/Tk/Scale/Increment.al
deleted file mode 100644
index 76432eeaf40..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/Increment.al
+++ /dev/null
@@ -1,61 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 203 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\Increment.al)"
-# Increment --
-# This procedure is invoked to increment the value of a scale and
-# to set up auto-repeating of the action if that is desired. The
-# way the value is incremented depends on the "dir" and "big"
-# arguments.
-#
-# Arguments:
-# w - The scale widget.
-# dir - "up" means move value towards -from, "down" means
-# move towards -to.
-# big - Size of increments: "big" or "little".
-# repeat - Whether and how to auto-repeat the action: "noRepeat"
-# means don't auto-repeat, "initial" means this is the
-# first action in an auto-repeat sequence, and "again"
-# means this is the second repetition or later.
-sub Increment
-{
- my $w = shift;
- my $dir = shift;
- my $big = shift;
- my $repeat = shift;
- my $inc;
- if ($big eq 'big')
- {
- $inc = $w->cget('-bigincrement');
- if ($inc == 0)
- {
- $inc = abs(($w->cget('-to')-$w->cget('-from')))/10.0
- }
- if ($inc < $w->cget('-resolution'))
- {
- $inc = $w->cget('-resolution')
- }
- }
- else
- {
- $inc = $w->cget('-resolution')
- }
- if (($w->cget('-from') > $w->cget('-to')) ^ ($dir eq 'up'))
- {
- $inc = -$inc
- }
- $w->set($w->get()+$inc);
- if ($repeat eq 'again')
- {
- $w->RepeatId($w->after($w->cget('-repeatinterval'),'Increment',$w,$dir,$big,'again'));
- }
- elsif ($repeat eq 'initial')
- {
- $w->RepeatId($w->after($w->cget('-repeatdelay'),'Increment',$w,$dir,$big,'again'));
- }
-}
-
-# end of Tk::Scale::Increment
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/Leave.al b/Master/perltl/site/lib/auto/Tk/Scale/Leave.al
deleted file mode 100644
index eb6f7b69f89..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/Leave.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scale.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scale;
-
-#line 111 "..\blib\lib\Tk\Scale.pm (autosplit into ..\blib\lib\auto\Tk\Scale\Leave.al)"
-sub Leave
-{
- my ($w) = @_;
- $w->configure('-activebackground',$w->{'activeBg'}) if ($Tk::strictMotif);
- $w->configure('-state','normal') if ($w->cget('-state') eq 'active');
-}
-
-# end of Tk::Scale::Leave
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/Scale.dll b/Master/perltl/site/lib/auto/Tk/Scale/Scale.dll
deleted file mode 100644
index ff1568bcfe6..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/Scale.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/Scale/autosplit.ix b/Master/perltl/site/lib/auto/Tk/Scale/autosplit.ix
deleted file mode 100644
index a5c5d2292f2..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scale/autosplit.ix
+++ /dev/null
@@ -1,22 +0,0 @@
-# Index created by AutoSplit for ..\blib\lib\Tk\Scale.pm
-# (file acts as timestamp)
-package Tk::Scale;
-sub Activate
-;
-sub Leave
-;
-sub Enter
-;
-sub ButtonUp
-;
-sub ButtonDown
-;
-sub Drag
-;
-sub EndDrag
-;
-sub Increment
-;
-sub ControlPress
-;
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/ButtonDown.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/ButtonDown.al
deleted file mode 100644
index c17199b73b6..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/ButtonDown.al
+++ /dev/null
@@ -1,55 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 106 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ButtonDown.al)"
-# tkScrollButtonDown --
-# This procedure is invoked when a button is pressed in a scrollbar.
-# It changes the way the scrollbar is displayed and takes actions
-# depending on where the mouse is.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates.
-
-sub ButtonDown
-{my $w = shift;
- my $e = $w->XEvent;
- my $element = $w->identify($e->x,$e->y);
- $w->configure('-activerelief' => 'sunken');
- if ($e->b == 1 and
- (defined($element) && $element eq 'slider'))
- {
- $w->StartDrag($e->x,$e->y);
- }
- elsif ($e->b == 2 and
- (defined($element) && $element =~ /^(trough[12]|slider)$/o))
- {
- my $pos = $w->fraction($e->x, $e->y);
- my($head, $tail) = $w->get;
- my $len = $tail - $head;
-
- $head = $pos - $len/2;
- $tail = $pos + $len/2;
- if ($head < 0) {
- $head = 0;
- $tail = $len;
- }
- elsif ($tail > 1) {
- $head = 1 - $len;
- $tail = 1;
- }
- $w->ScrlToPos($head);
- $w->set($head, $tail);
-
- $w->StartDrag($e->x,$e->y);
- }
- else
- {
- $w->Select($element,'initial');
- }
-}
-
-# end of Tk::Scrollbar::ButtonDown
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/ButtonUp.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/ButtonUp.al
deleted file mode 100644
index 24058d857ec..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/ButtonUp.al
+++ /dev/null
@@ -1,26 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 153 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ButtonUp.al)"
-# tkScrollButtonUp --
-# This procedure is invoked when a button is released in a scrollbar.
-# It cancels scans and auto-repeats that were in progress, and restores
-# the way the active element is displayed.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates.
-
-sub ButtonUp
-{my $w = shift;
- my $e = $w->XEvent;
- $w->CancelRepeat;
- $w->configure('-activerelief' => 'raised');
- $w->EndDrag($e->x,$e->y);
- $w->activate($w->identify($e->x,$e->y));
-}
-
-# end of Tk::Scrollbar::ButtonUp
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/Drag.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/Drag.al
deleted file mode 100644
index 40d6b0f8d1b..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/Drag.al
+++ /dev/null
@@ -1,44 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 247 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\Drag.al)"
-# tkScrollDrag --
-# This procedure is called for each mouse motion even when the slider
-# is being dragged. It notifies the associated widget if we're not
-# jump scrolling, and it just updates the scrollbar if we are jump
-# scrolling.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The current mouse position.
-
-sub Drag
-{my $w = shift;
- my $e = $w->XEvent;
- return unless (defined $initMouse);
- my $f = $w->fraction($e->x,$e->y);
- my $delta = $f - $initMouse;
- if ($w->cget('-jump'))
- {
- if (@initValues == 2)
- {
- $w->set($initValues[0]+$delta,$initValues[1]+$delta);
- }
- else
- {
- $delta = int($delta * $initValues[0]);
- $initValues[2] += $delta;
- $initValues[3] += $delta;
- $w->set(@initValues);
- }
- }
- else
- {
- $w->ScrlToPos($initPos+$delta);
- }
-}
-
-# end of Tk::Scrollbar::Drag
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/EndDrag.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/EndDrag.al
deleted file mode 100644
index 5b1fc837326..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/EndDrag.al
+++ /dev/null
@@ -1,29 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 283 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\EndDrag.al)"
-# tkScrollEndDrag --
-# This procedure is called to end an interactive drag of the slider.
-# It scrolls the window if we're in jump mode, otherwise it does nothing.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The mouse position at the end of the drag operation.
-
-sub EndDrag
-{
- my $w = shift;
- my $x = shift;
- my $y = shift;
- return unless defined($initMouse);
- if ($w->cget('-jump'))
- {
- $w->ScrlToPos($initPos + $w->fraction($x,$y) - $initMouse);
- }
- undef $initMouse;
-}
-
-# end of Tk::Scrollbar::EndDrag
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/Enter.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/Enter.al
deleted file mode 100644
index 45a21f920e5..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/Enter.al
+++ /dev/null
@@ -1,21 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 76 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\Enter.al)"
-sub Enter
-{
- my $w = shift;
- my $e = $w->XEvent;
- if ($Tk::strictMotif)
- {
- my $bg = $w->cget('-background');
- $activeBg = $w->cget('-activebackground');
- $w->configure('-activebackground' => $bg);
- }
- $w->activate($w->identify($e->x,$e->y));
-}
-
-# end of Tk::Scrollbar::Enter
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/Leave.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/Leave.al
deleted file mode 100644
index 349911e304e..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/Leave.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 89 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\Leave.al)"
-sub Leave
-{
- my $w = shift;
- if ($Tk::strictMotif)
- {
- $w->configure('-activebackground' => $activeBg) if (defined $activeBg) ;
- }
- $w->activate('');
-}
-
-# end of Tk::Scrollbar::Leave
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/Motion.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/Motion.al
deleted file mode 100644
index 0b414efa389..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/Motion.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 99 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\Motion.al)"
-sub Motion
-{
- my $w = shift;
- my $e = $w->XEvent;
- $w->activate($w->identify($e->x,$e->y));
-}
-
-# end of Tk::Scrollbar::Motion
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlByPages.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlByPages.al
deleted file mode 100644
index bd3d29afa77..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlByPages.al
+++ /dev/null
@@ -1,38 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 333 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ScrlByPages.al)"
-# tkScrlByPages --
-# This procedure tells the scrollbar's associated widget to scroll up
-# or down by a given number of screenfuls. It notifies the associated
-# widget in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# orient - Which kinds of scrollbars this applies to: "h" for
-# horizontal, "v" for vertical, "hv" for both.
-# amount - How many screens to scroll: typically 1 or -1.
-
-sub ScrlByPages
-{
- my $w = shift;
- my $orient = shift;
- my $amount = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- return if (index($orient,substr($w->cget('-orient'),0,1)) < 0);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('scroll',$amount,'pages');
- }
- else
- {
- $cmd->Call($info[2]+$amount*($info[1]-1));
- }
-}
-
-# end of Tk::Scrollbar::ScrlByPages
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlByUnits.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlByUnits.al
deleted file mode 100644
index 99e84e394c5..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlByUnits.al
+++ /dev/null
@@ -1,37 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 304 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ScrlByUnits.al)"
-# tkScrlByUnits --
-# This procedure tells the scrollbar's associated widget to scroll up
-# or down by a given number of units. It notifies the associated widget
-# in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# orient - Which kinds of scrollbars this applies to: "h" for
-# horizontal, "v" for vertical, "hv" for both.
-# amount - How many units to scroll: typically 1 or -1.
-
-sub ScrlByUnits
-{my $w = shift;
- my $orient = shift;
- my $amount = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- return if (index($orient,substr($w->cget('-orient'),0,1)) < 0);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('scroll',$amount,'units');
- }
- else
- {
- $cmd->Call($info[2]+$amount);
- }
-}
-
-# end of Tk::Scrollbar::ScrlByUnits
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlToPos.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlToPos.al
deleted file mode 100644
index c3a25af3c19..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlToPos.al
+++ /dev/null
@@ -1,35 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 363 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ScrlToPos.al)"
-# tkScrlToPos --
-# This procedure tells the scrollbar's associated widget to scroll to
-# a particular location, given by a fraction between 0 and 1. It notifies
-# the associated widget in different ways for old and new command syntaxes.
-#
-# Arguments:
-# w - The scrollbar widget.
-# pos - A fraction between 0 and 1 indicating a desired position
-# in the document.
-
-sub ScrlToPos
-{
- my $w = shift;
- my $pos = shift;
- my $cmd = $w->cget('-command');
- return unless (defined $cmd);
- my @info = $w->get;
- if (@info == 2)
- {
- $cmd->Call('moveto',$pos);
- }
- else
- {
- $cmd->Call(int($info[0]*$pos));
- }
-}
-
-# end of Tk::Scrollbar::ScrlToPos
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlTopBottom.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlTopBottom.al
deleted file mode 100644
index 71be23e6794..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/ScrlTopBottom.al
+++ /dev/null
@@ -1,32 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 390 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ScrlTopBottom.al)"
-# tkScrlTopBottom
-# Scroll to the top or bottom of the document, depending on the mouse
-# position.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - Mouse coordinates within the widget.
-
-sub ScrlTopBottom
-{
- my $w = shift;
- my $e = $w->XEvent;
- my $element = $w->identify($e->x,$e->y);
- return unless ($element);
- if ($element =~ /1$/)
- {
- $w->ScrlToPos(0);
- }
- elsif ($element =~ /2$/)
- {
- $w->ScrlToPos(1);
- }
-}
-
-1;
-# end of Tk::Scrollbar::ScrlTopBottom
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/Scrollbar.dll b/Master/perltl/site/lib/auto/Tk/Scrollbar/Scrollbar.dll
deleted file mode 100644
index 81eec672093..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/Scrollbar.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/Select.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/Select.al
deleted file mode 100644
index 21a743bf7fd..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/Select.al
+++ /dev/null
@@ -1,59 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 171 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\Select.al)"
-# tkScrollSelect --
-# This procedure is invoked when button 1 is pressed over the scrollbar.
-# It invokes one of several scrolling actions depending on where in
-# the scrollbar the button was pressed.
-#
-# Arguments:
-# w - The scrollbar widget.
-# element - The element of the scrollbar that was selected, such
-# as "arrow1" or "trough2". Shouldn't be "slider".
-# repeat - Whether and how to auto-repeat the action: "noRepeat"
-# means don't auto-repeat, "initial" means this is the
-# first action in an auto-repeat sequence, and "again"
-# means this is the second repetition or later.
-
-sub Select
-{
- my $w = shift;
- my $element = shift;
- my $repeat = shift;
- return unless defined ($element);
- if ($element eq 'arrow1')
- {
- $w->ScrlByUnits('hv',-1);
- }
- elsif ($element eq 'trough1')
- {
- $w->ScrlByPages('hv',-1);
- }
- elsif ($element eq 'trough2')
- {
- $w->ScrlByPages('hv', 1);
- }
- elsif ($element eq 'arrow2')
- {
- $w->ScrlByUnits('hv', 1);
- }
- else
- {
- return;
- }
-
- if ($repeat eq 'again')
- {
- $w->RepeatId($w->after($w->cget('-repeatinterval'),['Select',$w,$element,'again']));
- }
- elsif ($repeat eq 'initial')
- {
- $w->RepeatId($w->after($w->cget('-repeatdelay'),['Select',$w,$element,'again']));
- }
-}
-
-# end of Tk::Scrollbar::Select
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/StartDrag.al b/Master/perltl/site/lib/auto/Tk/Scrollbar/StartDrag.al
deleted file mode 100644
index d544dc53945..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/StartDrag.al
+++ /dev/null
@@ -1,33 +0,0 @@
-# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Scrollbar;
-
-#line 222 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\StartDrag.al)"
-# tkScrollStartDrag --
-# This procedure is called to initiate a drag of the slider. It just
-# remembers the starting position of the slider.
-#
-# Arguments:
-# w - The scrollbar widget.
-# x, y - The mouse position at the start of the drag operation.
-
-sub StartDrag
-{my $w = shift;
- my $x = shift;
- my $y = shift;
- return unless (defined ($w->cget('-command')));
- $initMouse = $w->fraction($x,$y);
- @initValues = $w->get();
- if (@initValues == 2)
- {
- $initPos = $initValues[0];
- }
- else
- {
- $initPos = $initValues[2] / $initValues[0];
- }
-}
-
-# end of Tk::Scrollbar::StartDrag
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Scrollbar/autosplit.ix b/Master/perltl/site/lib/auto/Tk/Scrollbar/autosplit.ix
deleted file mode 100644
index 293d1322dd4..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Scrollbar/autosplit.ix
+++ /dev/null
@@ -1,30 +0,0 @@
-# Index created by AutoSplit for ..\blib\lib\Tk\Scrollbar.pm
-# (file acts as timestamp)
-package Tk::Scrollbar;
-sub Enter
-;
-sub Leave
-;
-sub Motion
-;
-sub ButtonDown
-;
-sub ButtonUp
-;
-sub Select
-;
-sub StartDrag
-;
-sub Drag
-;
-sub EndDrag
-;
-sub ScrlByUnits
-;
-sub ScrlByPages
-;
-sub ScrlToPos
-;
-sub ScrlTopBottom
-;
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Selection.al b/Master/perltl/site/lib/auto/Tk/Selection.al
deleted file mode 100644
index 0d50a9f31df..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Selection.al
+++ /dev/null
@@ -1,18 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 628 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\Selection.al)"
-# These wrappers don't use method syntax so need to live
-# in same package as raw Tk routines are newXS'ed into.
-
-sub Selection
-{my $widget = shift;
- my $cmd = shift;
- croak 'Use SelectionOwn/SelectionOwner' if ($cmd eq 'own');
- croak "Use Selection\u$cmd()";
-}
-
-# end of Tk::Selection
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Text/Text.dll b/Master/perltl/site/lib/auto/Tk/Text/Text.dll
deleted file mode 100644
index 8cb98c8a455..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Text/Text.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/Text/autosplit.ix b/Master/perltl/site/lib/auto/Tk/Text/autosplit.ix
deleted file mode 100644
index 48a5455c34a..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Text/autosplit.ix
+++ /dev/null
@@ -1,3 +0,0 @@
-# Index created by AutoSplit for ..\blib\lib\Tk\Text.pm
-# (file acts as timestamp)
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Tk.dll b/Master/perltl/site/lib/auto/Tk/Tk.dll
deleted file mode 100644
index ee55846fdcb..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Tk.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_BindIn.al b/Master/perltl/site/lib/auto/Tk/Toplevel/FG_BindIn.al
deleted file mode 100644
index cc2ceaf7b63..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_BindIn.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 128 "blib\lib\Tk/Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_BindIn.al)"
-# tkFocusGroup_BindIn --
-#
-# Add a widget into the "FocusIn" list of the focus group. The $cmd will be
-# called when the widget is focused on by the user.
-#
-sub FG_BindIn {
- my($t, $w, $cmd) = @_;
- $t->Error("focus group \"$t\" doesn't exist") unless (exists $t->{'_fg'});
- $t->{'_FocusIn'}{$w} = Tk::Callback->new($cmd);
-}
-
-# end of Tk::Toplevel::FG_BindIn
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_BindOut.al b/Master/perltl/site/lib/auto/Tk/Toplevel/FG_BindOut.al
deleted file mode 100644
index 5c5cf9cc3de..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_BindOut.al
+++ /dev/null
@@ -1,20 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 139 "blib\lib\Tk/Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_BindOut.al)"
-# tkFocusGroup_BindOut --
-#
-# Add a widget into the "FocusOut" list of the focus group. The
-# $cmd will be called when the widget loses the focus (User
-# types Tab or click on another widget).
-#
-sub FG_BindOut {
- my($t, $w, $cmd) = @_;
- $t->Error("focus group \"$t\" doesn't exist") unless (exists $t->{'_fg'});
- $t->{'_FocusOut'}{$w} = Tk::Callback->new($cmd);
-}
-
-# end of Tk::Toplevel::FG_BindOut
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_Create.al b/Master/perltl/site/lib/auto/Tk/Toplevel/FG_Create.al
deleted file mode 100644
index 0953c045be8..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_Create.al
+++ /dev/null
@@ -1,56 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 80 "blib\lib\Tk/Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_Create.al)"
-#----------------------------------------------------------------------
-#
-# Focus Group
-#
-# Focus groups are used to handle the user's focusing actions inside a
-# toplevel.
-#
-# One example of using focus groups is: when the user focuses on an
-# entry, the text in the entry is highlighted and the cursor is put to
-# the end of the text. When the user changes focus to another widget,
-# the text in the previously focused entry is validated.
-#
-
-#----------------------------------------------------------------------
-# tkFocusGroup_Create --
-#
-# Create a focus group. All the widgets in a focus group must be
-# within the same focus toplevel. Each toplevel can have only
-# one focus group, which is identified by the name of the
-# toplevel widget.
-#
-sub FG_Create {
- my $t = shift;
- unless (exists $t->{'_fg'}) {
- $t->{'_fg'} = 1;
- $t->bind('<FocusIn>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_In($w, $Ev->d);
- }
- );
- $t->bind('<FocusOut>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_Out($w, $Ev->d);
- }
- );
- $t->bind('<Destroy>', sub {
- my $w = shift;
- my $Ev = $w->XEvent;
- $t->FG_Destroy($w);
- }
- );
- # <Destroy> is not sufficient to break loops if never mapped.
- $t->OnDestroy([$t,'FG_Destroy']);
- }
-}
-
-# end of Tk::Toplevel::FG_Create
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_Destroy.al b/Master/perltl/site/lib/auto/Tk/Toplevel/FG_Destroy.al
deleted file mode 100644
index e20f1eb7568..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_Destroy.al
+++ /dev/null
@@ -1,29 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 151 "blib\lib\Tk/Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_Destroy.al)"
-# tkFocusGroup_Destroy --
-#
-# Cleans up when members of the focus group is deleted, or when the
-# toplevel itself gets deleted.
-#
-sub FG_Destroy {
- my($t, $w) = @_;
- if (!defined($w) || $t == $w) {
- delete $t->{'_fg'};
- delete $t->{'_focus'};
- delete $t->{'_FocusOut'};
- delete $t->{'_FocusIn'};
- } else {
- if (exists $t->{'_focus'}) {
- delete $t->{'_focus'} if ($t->{'_focus'} == $w);
- }
- delete $t->{'_FocusIn'}{$w};
- delete $t->{'_FocusOut'}{$w};
- }
-}
-
-# end of Tk::Toplevel::FG_Destroy
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_In.al b/Master/perltl/site/lib/auto/Tk/Toplevel/FG_In.al
deleted file mode 100644
index a4b5c67a155..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_In.al
+++ /dev/null
@@ -1,24 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 172 "blib\lib\Tk/Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_In.al)"
-# tkFocusGroup_In --
-#
-# Handles the <FocusIn> event. Calls the FocusIn command for the newly
-# focused widget in the focus group.
-#
-sub FG_In {
- my($t, $w, $detail) = @_;
- if (defined $t->{'_focus'} and $t->{'_focus'} eq $w) {
- # This is already in focus
- return;
- } else {
- $t->{'_focus'} = $w;
- $t->{'_FocusIn'}{$w}->Call if exists $t->{'_FocusIn'}{$w};
- }
-}
-
-# end of Tk::Toplevel::FG_In
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_Out.al b/Master/perltl/site/lib/auto/Tk/Toplevel/FG_Out.al
deleted file mode 100644
index 96a3841e6fd..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Toplevel/FG_Out.al
+++ /dev/null
@@ -1,32 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Toplevel.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Toplevel;
-
-#line 188 "blib\lib\Tk/Toplevel.pm (autosplit into blib\lib\auto\Tk\Toplevel\FG_Out.al)"
-# tkFocusGroup_Out --
-#
-# Handles the <FocusOut> event. Checks if this is really a lose
-# focus event, not one generated by the mouse moving out of the
-# toplevel window. Calls the FocusOut command for the widget
-# who loses its focus.
-#
-sub FG_Out {
- my($t, $w, $detail) = @_;
- if ($detail ne 'NotifyNonlinear' and $detail ne 'NotifyNonlinearVirtual') {
- # This is caused by mouse moving out of the window
- return;
- }
- unless (exists $t->{'_FocusOut'}{$w}) {
- return;
- } else {
- $t->{'_FocusOut'}{$w}->Call;
- delete $t->{'_focus'};
- }
-}
-
-1;
-
-__END__
-1;
-# end of Tk::Toplevel::FG_Out
diff --git a/Master/perltl/site/lib/auto/Tk/Toplevel/autosplit.ix b/Master/perltl/site/lib/auto/Tk/Toplevel/autosplit.ix
deleted file mode 100644
index 6267c58604c..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Toplevel/autosplit.ix
+++ /dev/null
@@ -1,10 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk/Toplevel.pm
-# (file acts as timestamp)
-package Tk::Toplevel;
-sub FG_Create ;
-sub FG_BindIn ;
-sub FG_BindOut ;
-sub FG_Destroy ;
-sub FG_In ;
-sub FG_Out ;
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/TraverseToMenu.al b/Master/perltl/site/lib/auto/Tk/TraverseToMenu.al
deleted file mode 100644
index 03b814a1334..00000000000
--- a/Master/perltl/site/lib/auto/Tk/TraverseToMenu.al
+++ /dev/null
@@ -1,27 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 597 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\TraverseToMenu.al)"
-# tkTraverseToMenu --
-# This procedure implements keyboard traversal of menus. Given an
-# ASCII character "char", it looks for a menubutton with that character
-# underlined. If one is found, it posts the menubutton's menu
-#
-# Arguments:
-# w - Window in which the key was typed (selects
-# a toplevel window).
-# char - Character that selects a menu. The case
-# is ignored. If an empty string, nothing
-# happens.
-sub TraverseToMenu
-{
- my $w = shift;
- my $char = shift;
- return unless(defined $char && $char ne '');
- $w = $w->toplevel->FindMenu($char);
-}
-
-# end of Tk::TraverseToMenu
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Widget/ASkludge.al b/Master/perltl/site/lib/auto/Tk/Widget/ASkludge.al
deleted file mode 100644
index fe9b23df886..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Widget/ASkludge.al
+++ /dev/null
@@ -1,30 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Widget.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Widget;
-
-#line 1224 "blib\lib\Tk/Widget.pm (autosplit into blib\lib\auto\Tk\Widget\ASkludge.al)"
-sub ASkludge
-{
- my ($hash,$sense) = @_;
- foreach my $key (%$hash)
- {
- if ($key =~ /-.*variable/ && ref($hash->{$key}) eq 'SCALAR')
- {
- if ($sense)
- {
- my $val = ${$hash->{$key}};
- require Tie::Scalar;
- tie ${$hash->{$key}},'Tie::StdScalar';
- ${$hash->{$key}} = $val;
- }
- else
- {
- untie ${$hash->{$key}};
- }
- }
- }
-}
-
-# end of Tk::Widget::ASkludge
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Widget/autosplit.ix b/Master/perltl/site/lib/auto/Tk/Widget/autosplit.ix
deleted file mode 100644
index f0a7ffb9891..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Widget/autosplit.ix
+++ /dev/null
@@ -1,10 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk/Widget.pm
-# (file acts as timestamp)
-package Tk::Widget;
-sub ASkludge
-;
-sub clipboardKeysyms
-;
-sub pathname
-;
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Widget/clipboardKeysyms.al b/Master/perltl/site/lib/auto/Tk/Widget/clipboardKeysyms.al
deleted file mode 100644
index 71996befb5f..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Widget/clipboardKeysyms.al
+++ /dev/null
@@ -1,51 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Widget.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Widget;
-
-#line 1248 "blib\lib\Tk/Widget.pm (autosplit into blib\lib\auto\Tk\Widget\clipboardKeysyms.al)"
-# clipboardKeysyms --
-# This procedure is invoked to identify the keys that correspond to
-# the "copy", "cut", and "paste" functions for the clipboard.
-#
-# Arguments:
-# copy - Name of the key (keysym name plus modifiers, if any,
-# such as "Meta-y") used for the copy operation.
-# cut - Name of the key used for the cut operation.
-# paste - Name of the key used for the paste operation.
-#
-# This method is obsolete use clipboardOperations and abstract
-# event types instead. See Clipboard.pm and Mainwindow.pm
-
-sub clipboardKeysyms
-{
- my @class = ();
- my $mw = shift;
- if (ref $mw)
- {
- $mw = $mw->DelegateFor('bind');
- }
- else
- {
- push(@class,$mw);
- $mw = shift;
- }
- if (@_)
- {
- my $copy = shift;
- $mw->Tk::bind(@class,"<$copy>",'clipboardCopy') if (defined $copy);
- }
- if (@_)
- {
- my $cut = shift;
- $mw->Tk::bind(@class,"<$cut>",'clipboardCut') if (defined $cut);
- }
- if (@_)
- {
- my $paste = shift;
- $mw->Tk::bind(@class,"<$paste>",'clipboardPaste') if (defined $paste);
- }
-}
-
-# end of Tk::Widget::clipboardKeysyms
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Widget/pathname.al b/Master/perltl/site/lib/auto/Tk/Widget/pathname.al
deleted file mode 100644
index e22439a73cd..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Widget/pathname.al
+++ /dev/null
@@ -1,15 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Widget.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Widget;
-
-#line 1291 "blib\lib\Tk/Widget.pm (autosplit into blib\lib\auto\Tk\Widget\pathname.al)"
-sub pathname
-{
- my ($w,$id) = @_;
- my $x = $w->winfo('pathname',-displayof => oct($id));
- return $x->PathName;
-}
-
-1;
-# end of Tk::Widget::pathname
diff --git a/Master/perltl/site/lib/auto/Tk/Wm/AnchorAdjust.al b/Master/perltl/site/lib/auto/Tk/Wm/AnchorAdjust.al
deleted file mode 100644
index a699cee6920..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Wm/AnchorAdjust.al
+++ /dev/null
@@ -1,17 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Wm.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Wm;
-
-#line 84 "blib\lib\Tk/Wm.pm (autosplit into blib\lib\auto\Tk\Wm\AnchorAdjust.al)"
-sub AnchorAdjust
-{
- my ($anchor,$X,$Y,$w,$h) = @_;
- $anchor = 'c' unless (defined $anchor);
- $Y += ($anchor =~ /s/) ? $h : ($anchor =~ /n/) ? 0 : $h/2;
- $X += ($anchor =~ /e/) ? $w : ($anchor =~ /w/) ? 0 : $w/2;
- return ($X,$Y);
-}
-
-# end of Tk::Wm::AnchorAdjust
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Wm/FullScreen.al b/Master/perltl/site/lib/auto/Tk/Wm/FullScreen.al
deleted file mode 100644
index 83ab7a3241c..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Wm/FullScreen.al
+++ /dev/null
@@ -1,29 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Wm.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Wm;
-
-#line 130 "blib\lib\Tk/Wm.pm (autosplit into blib\lib\auto\Tk\Wm\FullScreen.al)"
-sub FullScreen
-{
- my $w = shift;
- my $over = (@_) ? shift : 0;
- my $width = $w->screenwidth;
- my $height = $w->screenheight;
- $w->GeometryRequest($width,$height);
- $w->overrideredirect($over & 1);
- $w->Post(0,0);
- $w->update;
- if ($over & 2)
- {
- my $x = $w->rootx;
- my $y = $w->rooty;
- $width -= 2*$x;
- $height -= $x + $y;
- $w->GeometryRequest($width,$height);
- $w->update;
- }
-}
-
-# end of Tk::Wm::FullScreen
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Wm/Popup.al b/Master/perltl/site/lib/auto/Tk/Wm/Popup.al
deleted file mode 100644
index 59a6f496d53..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Wm/Popup.al
+++ /dev/null
@@ -1,45 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Wm.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Wm;
-
-#line 93 "blib\lib\Tk/Wm.pm (autosplit into blib\lib\auto\Tk\Wm\Popup.al)"
-sub Popup
-{
- my $w = shift;
- $w->configure(@_) if @_;
- $w->idletasks;
- my ($mw,$mh) = ($w->reqwidth,$w->reqheight);
- my ($rx,$ry,$rw,$rh) = (0,0,0,0);
- my $base = $w->cget('-popover');
- my $outside = 0;
- if (defined $base)
- {
- if ($base eq 'cursor')
- {
- ($rx,$ry) = $w->pointerxy;
- }
- else
- {
- $rx = $base->rootx;
- $ry = $base->rooty;
- $rw = $base->Width;
- $rh = $base->Height;
- }
- }
- else
- {
- my $sc = ($w->parent) ? $w->parent->toplevel : $w;
- $rx = -$sc->vrootx;
- $ry = -$sc->vrooty;
- $rw = $w->screenwidth;
- $rh = $w->screenheight;
- }
- my ($X,$Y) = AnchorAdjust($w->cget('-overanchor'),$rx,$ry,$rw,$rh);
- ($X,$Y) = AnchorAdjust($w->cget('-popanchor'),$X,$Y,-$mw,-$mh);
- $w->Post($X,$Y);
- $w->waitVisibility;
-}
-
-# end of Tk::Wm::Popup
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Wm/Post.al b/Master/perltl/site/lib/auto/Tk/Wm/Post.al
deleted file mode 100644
index 277981329b0..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Wm/Post.al
+++ /dev/null
@@ -1,20 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Wm.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Wm;
-
-#line 72 "blib\lib\Tk/Wm.pm (autosplit into blib\lib\auto\Tk\Wm\Post.al)"
-sub Post
-{
- my ($w,$X,$Y) = @_;
- $X = int($X);
- $Y = int($Y);
- $w->positionfrom('user');
- # $w->geometry("+$X+$Y");
- $w->MoveToplevelWindow($X,$Y);
- $w->deiconify;
- $w->raise;
-}
-
-# end of Tk::Wm::Post
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Wm/autosplit.ix b/Master/perltl/site/lib/auto/Tk/Wm/autosplit.ix
deleted file mode 100644
index 54b764985de..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Wm/autosplit.ix
+++ /dev/null
@@ -1,14 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk/Wm.pm
-# (file acts as timestamp)
-package Tk::Wm;
-sub Post
-;
-sub AnchorAdjust
-;
-sub Popup
-;
-sub FullScreen
-;
-sub iconposition
-;
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/Wm/iconposition.al b/Master/perltl/site/lib/auto/Tk/Wm/iconposition.al
deleted file mode 100644
index 6a5b0ec92d8..00000000000
--- a/Master/perltl/site/lib/auto/Tk/Wm/iconposition.al
+++ /dev/null
@@ -1,24 +0,0 @@
-# NOTE: Derived from blib\lib\Tk/Wm.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk::Wm;
-
-#line 151 "blib\lib\Tk/Wm.pm (autosplit into blib\lib\auto\Tk\Wm\iconposition.al)"
-sub iconposition
-{
- my $w = shift;
- if (@_ == 1)
- {
- return $w->wm('iconposition',$1,$2) if $_[0] =~ /^(\d+),(\d+)$/;
- if ($_[0] =~ /^([+-])(\d+)([+-])(\d+)$/)
- {
- my $x = ($1 eq '-') ? $w->screenwidth-$2 : $2;
- my $y = ($3 eq '-') ? $w->screenheight-$4 : $4;
- return $w->wm('iconposition',$x,$y);
- }
- }
- $w->wm('iconposition',@_);
-}
-
-1;
-# end of Tk::Wm::iconposition
diff --git a/Master/perltl/site/lib/auto/Tk/X/X.dll b/Master/perltl/site/lib/auto/Tk/X/X.dll
deleted file mode 100644
index 81c220688ae..00000000000
--- a/Master/perltl/site/lib/auto/Tk/X/X.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/Tk/X/autosplit.ix b/Master/perltl/site/lib/auto/Tk/X/autosplit.ix
deleted file mode 100644
index e63dbf19b00..00000000000
--- a/Master/perltl/site/lib/auto/Tk/X/autosplit.ix
+++ /dev/null
@@ -1,3 +0,0 @@
-# Index created by AutoSplit for ..\..\blib\lib\Tk\X.pm
-# (file acts as timestamp)
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/autosplit.ix b/Master/perltl/site/lib/auto/Tk/autosplit.ix
deleted file mode 100644
index 8e8d2880a02..00000000000
--- a/Master/perltl/site/lib/auto/Tk/autosplit.ix
+++ /dev/null
@@ -1,43 +0,0 @@
-# Index created by AutoSplit for blib\lib\Tk.pm
-# (file acts as timestamp)
-package Tk;
-sub Error
-;
-sub CancelRepeat
-;
-sub RepeatId
-;
-sub FocusChildren ;
-sub focusNext
-;
-sub focusPrev
-;
-sub FocusOK
-;
-sub EnterFocus
-;
-sub tabFocus
-;
-sub focusFollowsMouse
-;
-sub TraverseToMenu
-;
-sub FirstMenu
-;
-sub Selection
-;
-sub Receive
-;
-sub break
-;
-sub updateWidgets
-;
-sub ImageNames
-;
-sub ImageTypes
-;
-sub interps
-;
-sub lsearch
-;
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/break.al b/Master/perltl/site/lib/auto/Tk/break.al
deleted file mode 100644
index 388cd46b21b..00000000000
--- a/Master/perltl/site/lib/auto/Tk/break.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 653 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\break.al)"
-sub break
-{
- die "_TK_BREAK_\n";
-}
-
-# end of Tk::break
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/focusFollowsMouse.al b/Master/perltl/site/lib/auto/Tk/focusFollowsMouse.al
deleted file mode 100644
index 697e8c61fae..00000000000
--- a/Master/perltl/site/lib/auto/Tk/focusFollowsMouse.al
+++ /dev/null
@@ -1,14 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 591 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\focusFollowsMouse.al)"
-sub focusFollowsMouse
-{
- my $widget = shift;
- $widget->bind('all','<Enter>','EnterFocus');
-}
-
-# end of Tk::focusFollowsMouse
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/focusNext.al b/Master/perltl/site/lib/auto/Tk/focusNext.al
deleted file mode 100644
index b5dbc9bc7d6..00000000000
--- a/Master/perltl/site/lib/auto/Tk/focusNext.al
+++ /dev/null
@@ -1,45 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 449 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\focusNext.al)"
-sub focusNext
-{
- my $w = shift;
- my $cur = $w;
- while (1)
- {
- # Descend to just before the first child of the current widget.
- my $parent = $cur;
- my @children = $cur->FocusChildren();
- my $i = -1;
- # Look for the next sibling that isn't a top-level.
- while (1)
- {
- $i += 1;
- if ($i < @children)
- {
- $cur = $children[$i];
- next if ($cur->toplevel == $cur);
- last
- }
- # No more siblings, so go to the current widget's parent.
- # If it's a top-level, break out of the loop, otherwise
- # look for its next sibling.
- $cur = $parent;
- last if ($cur->toplevel() == $cur);
- $parent = $parent->parent();
- @children = $parent->FocusChildren();
- $i = lsearch(\@children,$cur);
- }
- if ($cur == $w || $cur->FocusOK)
- {
- $cur->tabFocus;
- return;
- }
- }
-}
-
-# end of Tk::focusNext
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/focusPrev.al b/Master/perltl/site/lib/auto/Tk/focusPrev.al
deleted file mode 100644
index 77aadf1b929..00000000000
--- a/Master/perltl/site/lib/auto/Tk/focusPrev.al
+++ /dev/null
@@ -1,65 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 485 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\focusPrev.al)"
-# focusPrev --
-# This procedure is invoked to move the input focus to the previous
-# window before a given one. "Previous" is defined in terms of the
-# window stacking order, with all the windows underneath a given
-# top-level (no matter how deeply nested in the hierarchy) considered.
-#
-# Arguments:
-# w - Name of a window: the procedure will set the focus
-# to the previous window before this one in the traversal
-# order.
-sub focusPrev
-{
- my $w = shift;
- my $cur = $w;
- my @children;
- my $i;
- my $parent;
- while (1)
- {
- # Collect information about the current window's position
- # among its siblings. Also, if the window is a top-level,
- # then reposition to just after the last child of the window.
- if ($cur->toplevel() == $cur)
- {
- $parent = $cur;
- @children = $cur->FocusChildren();
- $i = @children;
- }
- else
- {
- $parent = $cur->parent();
- @children = $parent->FocusChildren();
- $i = lsearch(\@children,$cur);
- }
- # Go to the previous sibling, then descend to its last descendant
- # (highest in stacking order. While doing this, ignore top-levels
- # and their descendants. When we run out of descendants, go up
- # one level to the parent.
- while ($i > 0)
- {
- $i--;
- $cur = $children[$i];
- next if ($cur->toplevel() == $cur);
- $parent = $cur;
- @children = $parent->FocusChildren();
- $i = @children;
- }
- $cur = $parent;
- if ($cur == $w || $cur->FocusOK)
- {
- $cur->tabFocus;
- return;
- }
- }
-
-}
-
-# end of Tk::focusPrev
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/interps.al b/Master/perltl/site/lib/auto/Tk/interps.al
deleted file mode 100644
index fe01aa3099f..00000000000
--- a/Master/perltl/site/lib/auto/Tk/interps.al
+++ /dev/null
@@ -1,14 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 677 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\interps.al)"
-sub interps
-{
- my $w = shift;
- return $w->winfo('interps','-displayof');
-}
-
-# end of Tk::interps
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/lsearch.al b/Master/perltl/site/lib/auto/Tk/lsearch.al
deleted file mode 100644
index 7a597051bec..00000000000
--- a/Master/perltl/site/lib/auto/Tk/lsearch.al
+++ /dev/null
@@ -1,19 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 683 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\lsearch.al)"
-sub lsearch
-{my $ar = shift;
- my $x = shift;
- my $i;
- for ($i = 0; $i < scalar @$ar; $i++)
- {
- return $i if ($$ar[$i] eq $x);
- }
- return -1;
-}
-
-1;
-# end of Tk::lsearch
diff --git a/Master/perltl/site/lib/auto/Tk/tabFocus.al b/Master/perltl/site/lib/auto/Tk/tabFocus.al
deleted file mode 100644
index 4016abff331..00000000000
--- a/Master/perltl/site/lib/auto/Tk/tabFocus.al
+++ /dev/null
@@ -1,13 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 586 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\tabFocus.al)"
-sub tabFocus
-{
- shift->Tk::focus;
-}
-
-# end of Tk::tabFocus
-1;
diff --git a/Master/perltl/site/lib/auto/Tk/updateWidgets.al b/Master/perltl/site/lib/auto/Tk/updateWidgets.al
deleted file mode 100644
index 0fec5abb3c8..00000000000
--- a/Master/perltl/site/lib/auto/Tk/updateWidgets.al
+++ /dev/null
@@ -1,17 +0,0 @@
-# NOTE: Derived from blib\lib\Tk.pm.
-# Changes made here will be lost when autosplit is run again.
-# See AutoSplit.pm.
-package Tk;
-
-#line 658 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\updateWidgets.al)"
-sub updateWidgets
-{
- my ($w) = @_;
- while ($w->DoOneEvent(DONT_WAIT|IDLE_EVENTS|WINDOW_EVENTS))
- {
- }
- $w;
-}
-
-# end of Tk::updateWidgets
-1;
diff --git a/Master/perltl/site/lib/auto/Win32/API/API.dll b/Master/perltl/site/lib/auto/Win32/API/API.dll
deleted file mode 100644
index 4c478dc3136..00000000000
--- a/Master/perltl/site/lib/auto/Win32/API/API.dll
+++ /dev/null
Binary files differ
diff --git a/Master/perltl/site/lib/auto/XML/Parser/Expat/Expat.dll b/Master/perltl/site/lib/auto/XML/Parser/Expat/Expat.dll
deleted file mode 100644
index be327d38a47..00000000000
--- a/Master/perltl/site/lib/auto/XML/Parser/Expat/Expat.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlpsrc/bin-perl.tlpsrc b/Master/tlpkg/tlpsrc/bin-perl.tlpsrc
deleted file mode 100644
index 492231808d5..00000000000
--- a/Master/tlpkg/tlpsrc/bin-perl.tlpsrc
+++ /dev/null
@@ -1,68 +0,0 @@
-name bin-perl
-category TLCore
-runpattern f perltl/lib/*
-runpattern f perltl/lib/B/*
-runpattern f perltl/lib/Carp/*
-runpattern f perltl/lib/Class/*
-runpattern f perltl/lib/Data/*
-runpattern f perltl/lib/Digest/*
-runpattern f perltl/lib/Exporter/*
-runpattern f perltl/lib/File/*
-runpattern f perltl/lib/File/Spec/*
-runpattern f perltl/lib/Getopt/*
-runpattern f perltl/lib/IO/*
-runpattern f perltl/lib/List/*
-runpattern f perltl/lib/Scalar/*
-runpattern f perltl/lib/Term/*
-runpattern f perltl/lib/Text/*
-runpattern f perltl/lib/Tie/*
-runpattern f perltl/lib/Time/*
-runpattern f perltl/lib/auto/B/*
-runpattern f perltl/lib/auto/Cwd/*
-runpattern f perltl/lib/auto/Data/Dumper/*
-runpattern f perltl/lib/auto/Digest/MD5/*
-runpattern f perltl/lib/auto/DynaLoader/*
-runpattern f perltl/lib/auto/Fcntl/*
-runpattern f perltl/lib/auto/File/Glob/*
-runpattern f perltl/lib/auto/IO/*
-runpattern f perltl/lib/auto/List/Util/*
-runpattern f perltl/lib/auto/POSIX/*
-runpattern f perltl/lib/auto/SDBM_File/*
-runpattern f perltl/lib/auto/Time/HiRes/*
-runpattern f perltl/lib/auto/re/*
-runpattern f perltl/lib/unicore/*
-runpattern f perltl/lib/unicore/To/*
-runpattern f perltl/lib/unicore/lib/*
-runpattern f perltl/lib/warnings/*
-runpattern f perltl/site/lib/*
-runpattern f perltl/site/lib/Tk/*
-runpattern f perltl/site/lib/Tk/Event/*
-runpattern f perltl/site/lib/Tk/Menu/*
-runpattern f perltl/site/lib/Tk/Text/*
-runpattern f perltl/site/lib/Tk/X11/*
-runpattern f perltl/site/lib/Win32/*
-runpattern f perltl/site/lib/Win32/API/*
-runpattern f perltl/site/lib/XML/*
-runpattern f perltl/site/lib/XML/Parser/*
-runpattern f perltl/site/lib/auto/Tk/*
-runpattern f perltl/site/lib/auto/Tk/Bitmap/*
-runpattern f perltl/site/lib/auto/Tk/Canvas/*
-runpattern f perltl/site/lib/auto/Tk/Clipboard/*
-runpattern f perltl/site/lib/auto/Tk/Entry/*
-runpattern f perltl/site/lib/auto/Tk/Event/*
-runpattern f perltl/site/lib/auto/Tk/Frame/*
-runpattern f perltl/site/lib/auto/Tk/Listbox/*
-runpattern f perltl/site/lib/auto/Tk/Menubutton/*
-runpattern f perltl/site/lib/auto/Tk/Pixmap/*
-runpattern f perltl/site/lib/auto/Tk/Scale/*
-runpattern f perltl/site/lib/auto/Tk/Scrollbar/*
-runpattern f perltl/site/lib/auto/Tk/Text/*
-runpattern f perltl/site/lib/auto/Tk/Toplevel/*
-runpattern f perltl/site/lib/auto/Tk/Widget/*
-runpattern f perltl/site/lib/auto/Tk/Wm/*
-runpattern f perltl/site/lib/auto/Tk/X/*
-runpattern f perltl/site/lib/auto/Win32/API/*
-runpattern f perltl/site/lib/auto/XML/Parser/Expat/*
-binpattern f bin/win32/perl.exe
-binpattern f bin/win32/perl58.dll
-binpattern f bin/win32/tk83.dll
diff --git a/Master/tlpkg/tlpsrc/collection-perl.tlpsrc b/Master/tlpkg/tlpsrc/collection-perl.tlpsrc
deleted file mode 100644
index e56d076df9b..00000000000
--- a/Master/tlpkg/tlpsrc/collection-perl.tlpsrc
+++ /dev/null
@@ -1,4 +0,0 @@
-name collection-perl
-category Collection
-shortdesc Perl for Windows
-longdesc This is a minimal Perl installation for Windows.
diff --git a/Master/tlpkg/tlpsrc/collection-wintools.tlpsrc b/Master/tlpkg/tlpsrc/collection-wintools.tlpsrc
index 80767a71157..1a9ac6ee0db 100644
--- a/Master/tlpkg/tlpsrc/collection-wintools.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-wintools.tlpsrc
@@ -9,4 +9,3 @@ depend bin-jpeg2ps
depend bin-tifftools
depend bin-winutils
depend bin-xpdf
-depend collection-perl